パケットサイズの長短と遅延時間の関連性
戸根先生
いつも(ご著書の)お世話になっております。
「プロフェッショナルネットワーク 設計・分析・管理のすべて」の
第五章 ネットワークの性能を見極める
をただいま、拝読しているのですが、
P298にあります
「音声や映像を運ぶ場合遅延時間を短縮するためにパケットサイズを短くするチューニング手法がある」
の部分が今ひとつ理解できないでおります。
パケットサイズが小さい=伝送効率が悪くなる ことは理解できましたが、
パケットサイズが短いと遅延時間が小さくなる の意味するところの理解が
今ひとつですのでもう少しご説明していただくことは可能でしょうか?
日時:
10/06/06 23:39
コメント
パケットが小さいと早く到着する
ネットワーク屋さん,こんにちわ。
まず,293ページの図2を見てください。
ここに一つのパケットが相手側に届くまでの様子が描いてあります。
この図は縦軸が時間を表すように描いてありますから,
下に下がるほど時間が経過したことになります。
そして,左下に描いてあるパケットの位置に達したところで,パケットを運ぶ動作が終わります。
つまり,左下に書いてあるパケットの位置が,
パケットを運ぶのに要した時間を表すことになります。
この位置が上にあればパケットを運ぶ時間が短いことになるわけですよね。
次に,298ページの図6を見てください。
細かい説明は省略してありますけど,この図も考え方は図2と同じです。
だから,この図を見れば,次のことがわかると思います。
つまり,左側に書いてあるパケットが小さい場合の方が
パケットが到着する位置が上にあり,
相手側に届くまでに要する短時間が短くて済むことになります。
短時間でパケットが届くということは,
言葉を替えれば遅延時間が短いということですよね。
こんな説明でわかりますか?
最後尾ビットのことを考えていませんでした。
いつも丁寧なご回答を頂きありがとうございます。
「遅延」の定義といいますか、
どの瞬間からどの瞬間までを遅延として捉えているのか、
に関して理解が浅かったことがわかりました。
具体的には、
ある1つのパケットの
・先頭ビットの信号が受信側に到着するタイミング
・最後尾ビットの信号が受信側に到着するタイミング
という風に1つのパケットの到着時間を
2つにわけて考えていませんでした。
※先頭ビットのことだけ考えていた。
おなじ伝送区間(物理距離)であっても、
ショートパケットの最後尾ビットの信号が到着する時間は、
ロングパケットの最後尾ビットの信号が到着する時間
よりも速い、つまり遅延が小さい、
ということだと理解できました。
たぶんこれで考え方はあっていますよね。
受信側の動作を考えてみましょう
>ショートパケットの最後尾ビットの信号が到着する時間は、
>ロングパケットの最後尾ビットの信号が到着する時間よりも速い、つまり遅延が小さい、
ビンゴ!
蛇足ながら補足すると,
パケットの信号の最後尾にはエラーチェックコードがついています。
だから,パケットを全部受信してエラーチェックしないと次に進めません。
つまり,音楽や映像配信で用いるストリーミングのような考え方をパケットに当てはめて,
受信動作と併行して,
パケットの頭の方から届いた分のデータを順に取り出して次の処理に進む,
なんてことはできないんです。
だから,受信動作が終了する時点が重要なんですね。
そうそう,もう一つ補足すると,
パケットの先頭部分の信号が届くのに要する時間のことを,信号の『伝播遅延』と呼びます。
補足に関する質問1 エラーチェックコードについて
戸根先生
補足のご説明をいただきありがとうございます。
この補足いただいた内容も理解したいと思い、
追加でご質問させていただきたくご連絡させていただきました。
>パケットの信号の最後尾にはエラーチェックコードがついています。
>だから,パケットを全部受信してエラーチェックしないと次に進めません。
こちらのエラーチェックコードですが、
イーサネットのFCSのことでしょうか?
「次に進めません」の意味するものが、どのようなことなのか?
■想像レベル
・L2のエラーチェックをしないと次(L3, L4のチェック?)に進めない のか、
・L2、L3、L4のエラーチェック(?)を済ませないと次に進めない のか、
を理解したいのですが、よろしくお願いします。
パケット受信処理でのエラーチェックはL2のレベル
> ・L2のエラーチェックをしないと次(L3, L4のチェック?)に進めない のか、
こちらが正解です。
受信側の処理はネットワークの階層を下から上に上がっていく格好になります。
・最初に信号をデジタルデータに変換
・L2レベルのパケット受信処理(ここにエラーチェックが含まれる)
・その上位の処理
・etc
というわけですから,まずL2のエラーチェックが終わらないとその先に進みません。
まあ,受信側で複数階層の処理を併行に進める方法もないではありませんけど,
今の一般的なコンピュータの作り方を見ると,
L2のレベルはハードウェアで,その上はソフトウェアという格好ですから,
そこで併行処理する方法を採用するのは難しいと考えていいでしょう。
それから,
IP,TCP,UDPのヘッダにもエラーチェックコード用のフィールドが用意されていますが,
こちらはチェックサムという精度の低い方法です。
これに対して,イーサネットなどのL2ではCRCなどの比較的精度の高い方法を採用しているので,
L2のレベルでちゃんとチェックしておけば,
上位の精度が低いチェックを重複して行う必要はないだろう,
という考え方があります。
そのため,重複してチェックすることによる性能低下を避けるため,
IPなどのエラーチェックを省略する場合もあります。
よく理解できました。
IP, TCP/UDPのエラーチェックがどのように使われているか
今ひとつピンときていなかったのが理解できました。
イーサネットのCRCの方が制度が高いことなども理解できました。
ありがとうございます。
補足に関する質問2 ストリーミングについて
戸根先生
ちょっと質問させていただくのが恥ずかしくもあるのですが、
>つまり,音楽や映像配信で用いるストリーミングのような考え方をパケットに当てはめて,
ここでいう「ストリーミング」というのは、
インターネット(IP)の世界のストリーミングとは
異なるものでしょうか?
Web上のコンテンツの中にも、例えばユーチューブのようなものは、
ストリーミングと呼べるかと思っておりますが、
ここでいうストリーミングは、このようなものではなく、
なんといいますか、テレビみたいなもの、でしょうか?
ストリーミングは考え方を指しています
ネットワーク屋さん,こんにちわ
> ちょっと質問させていただくのが恥ずかしくもあるのですが、
そんなことないですよ。
まあ,恥ずかしいという感覚もわかないではないですが,
折角こういう場があるのですから,
質問して理解しておいた方がお得! と考えた方がいいですよね。
さて,質問の方ですが,
昔と言いますか,古典的な通信方式は,
相手とやりとりする情報を一つの塊としてとらえ,
受信側はその塊を全部受け取ってから次の動作に進む方法をとっていました。
これを音声や映像の再生に当てはめると,
音声/映像ファイルを全部ダウンロードし終わってから
再生動作に移るということになります。
ところが,こうした方法ではなく,データの塊を全部受信し終わる前に,
受け取る端からすぐに次の動作に進むというのがストリーミングの発想です。
つまり,データを塊として扱うのではなくて,
端から順に流れてくるデータを,受信側で端から順に処理していく,
という感覚なんでしょうね。
そこからストリーミングという言葉が出てきたのではないでしょうか。
この考え方を音楽や映像再生に当てはめたものがストリーミング再生技術で,
音楽や映像のファイルを全部ダウンロードし終わってから再生するのではなく,
受信した端から直ぐに再生動作を実行するわけです。
言葉を替えると受信動作と再生動作を併行に進めるわけです。
昔は,この併行処理が未発達だったため,
このような方法は一般的ではなかったのですが,
今はそれが一般化し,ストリーミングは特別な考え方ではなくなってきました。
ブラウザのページ表示動作もストリーミングの考え方を採用してますよね。
で,私がストリーミングという言葉を出したのは,
こうした考え方をパケットの送受信動作に当てはめて説明しようとしただけで,
インターネットのストリーミングとか特定のものを指しているわけではありません。
とてもよく理解できました。
ご回答ありがとうございました!
すごく、理解できましたし、「ストリーミング」という言葉に対して
ちょっと勘違いしていたことにも気が付きました。
ありがとうございます。
>昔と言いますか,古典的な通信方式は,
>相手とやりとりする情報を一つの塊としてとらえ,
>受信側はその塊を全部受け取ってから次の動作に進む方法をとっていました。
>言葉を替えると受信動作と再生動作を併行に進めるわけです。
>昔は,この併行処理が未発達だったため,
>このような方法は一般的ではなかったのですが,
>今はそれが一般化し,ストリーミングは特別な考え方ではなくなってきました。
やはり、このような歴史的背景を知っている・知らないで
理解の深さが変わってくる気がしました。