note_TrafficAssistant

TrafficAssistant

「直近3日」の帯域制限について

私が参考にしたのは,DoCoMoさんの制限。しかし,不明瞭な点が多すぎて,泣きそうだったので,私が不明瞭に感じた点を以下に列挙。私は無線通信のハード屋さんじゃないので,私がその分野について無知なだけかもしれないので,間違ってたら生暖かく見守って,こっそりメールください。。。

  • 区切りが不明:1日をきっちり0時で区切っているのかが不明だった。かなりの数のユーザ数を抱えているのに,そんなに短時間で0時区切りのデータを提供できるとは思えなかったので。案の定,「Web上で確認できるのは暫定だよ!正確には請求書(明細)を見てね!」って感じの但し書きがあった。じゃぁ,「制限かけるかどうかの決定は暫定ではしないのかい?間違って制限したらどうすんの?」と思ったら,「制限する場合もある」との表現。。。グレーゾーンは制限しないのかも。
  • 数え方が不明:キャリア側で0時(あるいは定時)の時点の通信量を測定するとなると,すべての回線について,その時点での集計結果が必要なはず。これが出せるなら,「暫定の明細」なんていらないだろうけど,上記の抱えているユーザ数の問題から,全回線のリアルタイム処理なんて無理だろう。じゃぁ,どうやって数えてるの?と思ったら,「セッション単位で数えてるよ。カウントするのはセッション終了時だよ。だから,日付をまたがった通信をしたら,翌日に数えるよ。」みたいな記述があった(ソース紛失,記憶頼りなので,間違ってるかも)。なるほど,セッション単位で記録を取って,あとでBatch処理してるのか。ん?TCPはわかるとして,UDPは?制限してるとはいえ,ストリーム配信とか,VoIPとかUDP使ってるけど,測定できるの?それとも,もっと下位層のセッションの数え方してるのだろうか。公開情報を探せば出てくるかなぁ・・・。まぁ,どのみち,もっと下位層だと,アプリで数え方を再現するのは無理そうね。。。よって,数え方を再現するのではなく,素直に端末の報告する情報(後述)を集計することにした。
  • 到達しなかったデータの扱いが不明:たとえば,トンネルに入る前にどこかのサイトにアクセスしたとする。アクセス時のリクエストは相手方に届いたとして,返事が圏外になったので,受け取れなかった。この場合,「通信したデータ」として数えられるのだろうか?順当に考えると,キャリア側はリソースを使って送信してるので,「送信したデータ」として数えるだろうなぁ。届いてないけど。その是非はともかくとして,この場合,このデータは拾えないんだよなぁ。。。これも,公開情報を探せば出てくるかな?

別に「DoCoMoさんが嫌いで批判してる」って訳じゃないので,私の浅慮により批判的に読めたならゴメンナサイ。

 

Samsung社製の端末について

  • 具体的には,このアプリではTrafficStats.getMobileRxBytesなどを使用している。このメソッドは但し書きがあり,すべての端末でサポートされている訳ではないとのこと(ソース)。通常は,アプリ起動時にこのメソッドを呼び出して,UNSUPPORTEDが返ってこなかったら使えると判断できる。実際にはUNSUPPORTEDは-1で,それ以外だと,端末が起動してからの累積値が返される。しかし,Samsung社製では携帯ネットワークが切断されると,クリア(0にセット)される。一見,親切なようにも見えるが,実際にはこれが困る。アプリが切断を検出したときには,既にクリアされてる。。。なので,最後に記録してから,切断されるまでの記録が取得できない。
  • 私が実際に確かめたのはGalaxy S II。他の人の端末。自分で買うほどお金ないので困った。いろいろ調べてみると,この手のアプリでは,この問題は,みんな苦労してるらしい。ちなみに私のアプリでは,アプリが切断する分には問題なし。記録してから,切断対象かどうかを判断し,切断しているので。でも,ユーザが手動で切断したり,圏外になるとこの問題に突き当たる。現状では,ロスを少なくするため,監視間隔を短くするしか・・・。

 

最近の投稿