2024/09/25 のものと同じ。
https://lsnl.jp/~ohsaki/lecture/netcomp/2024/#10-1
- TCP のフロー制御の必要性とその影響を理解し、他人に説明できるようになる。
- TCP のウィンドウフロー制御 (スロースタートフェーズおよび輻輳回避フェーズ) におけるウィンドウサイズの変化を理解し、他人に説明できるようになる。
- ネットワーク中でのパケット棄却率と TCP パケット再送回数の関係を簡単なシミュレーション実験によって計測し、それらの関係を定量的に理解できるようになる。
https://lsnl.jp/~ohsaki/lecture/netcomp/2024/priv/04.pdf
TCP の宛先ホストにおける受信バッファの空きが常に 32 [Kbyte] である時、 TCP フローの最大スループットはいくらか。 ただし、 TCP フローのラウンドトリップ時間を 10 [ms] とする。
TCP の初期ウィンドウサイズを 1 [Kbyte] とする。 スロースタートフェーズにおいて、 ウィンドウサイズが 1 [Gbyte] (= 1024 * 1024 [Kbyte]) に達するまでに要する時間の最小値を求めよ。 ただし、 TCP のセグメント長を 1 [Kbyte]、 ラウンドトリップ時間を 100 [ms] とする。
ウィンドウサイズが 100 [Kbyte] の TCP フローが、 輻輳回避フェーズにおいて、 ウィンドウサイズが 1 [Gbyte] (= 1024 * 1024 [Kbyte]) に達するまでに要する時間の最小値を求めよ。 ただし、 TCP のセグメント長を 1 [Kbyte]、 ラウンドトリップ時間を 100 [ms] とする。
TCP の送信元ホスト〜宛先ホスト間のパケット損失率を p とする。 100,000 個の TCP パケットを送信元ホストから宛先ホストまで伝送する時に、 最大で何回の再送が起きるかを計測するシミュレーションプログラムを作成せよ。
p = 0.1 と p = 0.5 の場合にシミュレーションをそれぞれ 3 回実行し、 再送回数の平均を求めよ。
TCP フローのスループットが最大となるのは、 宛先ホストにおける受信バッファの空きによって律速される場合である。 この時のウィンドウサイズが 32 [Kbyte] であるから、 最大スループットは
32 [Kbyte]
---------- = 26214400 [bit/s] = 26.2 [Mbit/s]
10 [ms]
である。
ネットワーク中でパケット損失が起きない場合、 スロースタートフェーズにおいてウィンドウサイズは最も高速に増加する。
この場合、 1 ラウンドトリップ時間 (= 100 [ms]) 後に初期ウィンドウサイズの 2 倍の 2 [Kbyte] になり、 2 ラウンドトリップ時間 (= 200 [ms]) 後に初期ウィンドウサイズの 4 倍の 4 [Kbyte] になる。 したがって、 n ラウンド後のウィンドウサイズは 2^n * 1 [Kbyte] である。
ウィンドウサイズが 1024*1024 [Kbyte] を超えるのは、n が
2^n >= 1024*1024
となる時である。上記を満たす最小の n は n = 20 である。
従って、20 ラウンド後である
100 [ms] * 20 = 2 [s]
が要する時間の最小値である。
ネットワーク中でパケット損失が起きない場合、 輻輳回避フェーズにおいてウィンドウサイズは最も高速に増加する。
この場合、 1 ラウンドトリップ時間 (= 100 [ms]) 後にウィンドウサイズは 1 [Kbyte] だけ増加し、 2 ラウンドトリップ時間 (= 200 [ms]) 後にウィンドウサイズは 2 [Kbyte] だけ増加する。 したがって、 n ラウンド後のウィンドウサイズは 100 + n [Kbyte] である。
ウィンドウサイズが 1024*1024 [Kbyte] を超えるのは、n が
100 + n >= 1024*1024
となる時である。上記を満たす最小の n は n = 1024*1024 - 100 = 1048476 である。
従って、1048476 ラウンド後である
100 [ms] * 1048476 = 104847600 [ms] = 29.12 [hour]
が要する時間の最小値である。
100,000 個の TCP パケットのうち、 それぞれを確率 1 - p で伝送に成功したとみなし、 確率 p で伝送に失敗したとみなす。 上記の試行を、 100,000 個の TCP パケットの伝送がすべて完了するまで繰り返せばよい。
tcp-sim.py
https://lsnl.jp/~ohsaki/lecture/netcomp/2024/tcp-sim.py
p = 0.5 の実行結果 (の例):
> python3 tcp-sim.py
0 100000
1 49984
2 24968
3 12425
4 6304
5 3152
6 1577
7 790
8 400
9 195
10 93
11 49
12 18
13 9
14 5
15 5
16 3
3 回の試行:
> python3 tcp-sim.py | tail -1 | awk '{ print $1 }'
17
> python3 tcp-sim.py | tail -1 | awk '{ print $1 }'
14
> python3 tcp-sim.py | tail -1 | awk '{ print $1 }'
19
平均: (17 + 14 + 19) / 3 = 16.66 [回]
1 台の車を使って、 神戸三田キャンパスと三田駅をピストン輸送すると、 1 時間に何人を三田駅に送れるか。 ただし、 神戸三田キャンパスと三田駅の往復に 20 分かかり、 三田駅のロータリーでは (市の条例により) 一度に降車できる人数が 4 に制限されているとする。
(略解) 20 分に 4 名送れるので、1 時間だと 12 名。
新聞紙の厚みを 0.1 mm とする。 1 秒間に 1 枚ずつ新聞紙を積んでゆくとき、 積んだ新聞紙の高さが 100 km になるまでに要する時間を求めよ。
※ 現実には不可能だが、ここでは積みあげることができると仮定せよ。
(略解) 100 [km] / 0.1[mm] = 1000000000 であるから、 1000000000 [s] = 約 31.7 年。
新聞紙の厚みを 0.1 mm とする。 1 秒間に 1 回ずつ新聞紙を半分に折り畳んでゆくとき、 折り畳んだ新聞紙の厚みが 100 km になるまでに要する時間を求めよ。
※ 現実には不可能だが、ここでは折り畳むことができると仮定せよ。
(略解) 折り畳んだ回数を n とすると、その時の厚みは 0.1 [mm] * 2^n。 これが 100 km を超えるのは 30 回目であるから 30 秒。
1 回 100 円のくじがあり、1/2 の確率で当たりがでる。 情報工学課程 2 年生の 100 名全員が、 それぞれ当たりがでるまでくじを買った時、 最も多く支払った人は何円になるか。 シミュレーション実験で求めよ。
「レポート課題 2024/09/25」と同じ。
https://lsnl.jp/~ohsaki/lecture/netcomp/2024/#10-10
- 大崎先生はどのような構成で VPN サーバーを構築しておられますか?
講義中にコメントします。
[<15. 前半の総復習] [>17. TCP プロトコル (2)]