UDPってどうなのよ?

自動で再送もしてくれず、到着の保証もなく
まぁ、だけれどTCPよりも軽い
そんなUDP。
それってどうなんだ。

UDPが使い物になるかどうかは
実際のネットワークで使ってみて
どの程度パケットロスが起こるかによるだろう。

実はパケロスなんか起きないなら
なんでもUDPにすりゃいい。

ごくたまにしかパケロスしないなら
それなりに使い道はあるだろうし
たまに受信側がACKを返せば
軽いTCPといった感じに使えるだろう。

そうでもなく、しょうもないほどパケロスだらけだったら
そりゃ使い物にならない。

で、実験してみた。

研究室のマシンから自宅のマシンへ
UDPパケットを送ってどの程度パケロスが起きるか調べる。

自宅は
ケーブルインターネット
下り: 8Mbps (ベストエフォート)
上り: 256Kbps (ベストエフォート)

実験中はリモートデスクトップを使用

1パケット 4096+20byte を 秒間 30パケット で 1000パケット送ると 0パケットロス
1パケット 16384+20byte を 秒間 15パケット で 500パケット送ると 500パケットロス
1パケット 8192+20byte を 秒間 30パケット で 1000パケット送ると 33パケットロス
1パケット 8192+20byte を 秒間 30パケット で 1000パケット送ると 9パケットロス
1パケット 4096+20byte を 秒間 60パケット で 2000パケット送ると 5パケットロス
1パケット 4096+20byte を 秒間 60パケット で 2000パケット送ると 8パケットロス
1パケット 2048+20byte を 秒間 120パケット で 4000パケット送ると 49パケットロス

いまいち方針がふらふらなデータな上、やるたびに結果が変わって困る。
一見すると同じデータ量流すにしても細切れにした方がロスは避けられる
ように見えるが
このパケットサイズというのは SDL_net でのパケットサイズであって
これより下の層では適当な大きさに分けられてしまうんではないかという気もする。
だけど、あまり大きなパケットだと全く届かなくなるし…。
ここら辺については調べる必要がある。

まぁ、何にせよ、パケットロスは起こる。
ビデオストリーミングをするのなら
やりとりするデータ量から言っても、まず起こる。

よかった。 これで、先に進めそうだ。
Research | comments (2) | trackbacks (1)

Comments

kurima | 2005/09/13 12:11 AM
こゆい情報ありがとう!

イーサネットフレームのMTUはヘッダ込みで1500byte
というのは知らなかった。
漠然と下の層で分割されるんだろうなとは思っていたけど。
キーワードだしてもらって、助かる。
「コンピュータネットワーク」でも見てみるわ。
あの本、驚くほど深く書いてあったりするから、たまに読むたびに愛着が深まる。

パケットが大量に欠けるのはプロバイダが帯域制限をかけるそのやり方に関係してるんじゃないかと、これまた漠然と思っている。

イーサネットフレームに分割するときにどうこうというのはどうだろ…
ある程度調べてから先生に聞いてみれば分かるかもなぁ。
いとー | 2005/09/12 03:04 AM
>>1パケット 16384+20byte を 秒間 15パケット で 500パケット送ると 500パケットロス
イーサネットフレームに分割するとき(もしくは再構成するとき)に、バッファ溢れしてんのかなぁ。

知ってるかと思うが、イーサネットフレームのMTUはヘッダ込みで1500byte(正確にはオクテットだっけか)だから、それ以上の大きさのUDPパケットは分割しなきゃならんので、効率落ちるだけなはず。
物理層にイーサネット使ってないなら別だが!

Comment Form

icons:

Trackbacks

UDPってそんなにロスるのかぁ・・・ | 兎ブログ@WonderRabbitProject | 2009/04/16 05:01 PM
UDPってどうなのよ? - てけとーぶろぐ。http://kurima.sakura.ne.jp/sb/log/eid88.htmlだそうな。迂闊に「UDPでいいんじゃにゃ†」と思っていたネットワーク越しのビデオキャプチャのフレームワーク...