目次 †
輻輳ウィンドウ †
- TCPには通信状況によって送信可能なデータ量を調節するための輻輳【ふくそう】ウィンドウと呼ばれる値を設定する。
- 輻輳ウィンドウはウィンドウサイズとは別物である。
データ流量の調整に使用するアルゴリズム †
輻輳ウィンドウの値からデータ流量を調整するが、その際に使用するアルゴリズムとして次が挙げられる。
スロースタートアルゴリズム †
- TCPではデータの送信開始時に、スロースタートアルゴリズムに従って送信する。
- 最大セグメントサイズ(MSS)1つ分のデータを送信し、これに対する確認応答が返った段階で、次に送信するデータ量をMSSの2倍に増やす。確認応答が返るたびに、送信するデータ量を4倍、8倍、…と増やしていく。ただし、ある程度までいったら、1つずつ増やす。
- 閾値を16とした場合は、MSSが1倍、2倍、4倍、8倍、16倍、17倍、18倍、…となる。
- このとき送信可能なセグメントは、輻輳ウィンドウ(cwnd)によって制御される。
- 輻輳ウィンドウは、初期段階で1にセットされており、確認応答が返る度に、ウィンドウサイズが整数倍の値に増やされていく。
輻輳回避アルゴリズム †
- スロースタートによって、送信可能なデータのサイズを増やしていった結果、輻輳が発生する(セグメントの再送が必要になる)と、今度は輻輳回避アルゴリズムが用いられる。
- 輻輳が発生すると、もう一度スロースタートアルゴリズムをやり直して(1倍からやり直す)*1、輻輳が発生した時点の送信ウィンドウのサイズの1/2になるまで、セグメントが送信される。そして、輻輳が発生した時点の送信ウィンドウの1/2に達した後で、輻輳回避アルゴリズムに切り替えられる。
- 輻輳回避アルゴリズムはスロースタートアルゴリズムとは異なり、送信可能なデータ量を1×MSSずつ増やしていく。そして、受信ウィンドウのサイズに達するまで、送信可能なデータ量をゆるやかに増やしていく。
参考文献 †