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 | - | trackbacks (1)