このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

目次

輻輳ウィンドウ

  • 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ずつ増やしていく。そして、受信ウィンドウのサイズに達するまで、送信可能なデータ量をゆるやかに増やしていく。

参考文献

  • 『Windows7ネットワーク逆引き大全』


*1 1倍まで戻せば、連続して輻輳は発生しないからである。