Pocket

TCP Windows Size に関する調査事項メモ

  • add this entry to hatena bookmark

大量のデータ転送を行っているネットワークで、Destination側のルータにてCPUが高負荷状態になる現象となっています。調査をしている過程で「TCPウインドウサイズ」をチューニングすることによって改善が図れるかどうかの考慮も行いました。備忘録的になりますが、記録しておきます。

TCPウインドウサイズとは?

TCP通信において、送信側がセグメントを送信し、受信側でセグメントを受信しますが、その際の受信側のバッファ容量の事を「TCPウインドウサイズ」といいます。

送信側が受信側のウインドウサイズを認識し、一度にまとめて送信するセグメント数が決まります。

TCPの3way ハンドシェイク通信において、まとめて送受信するセグメント数をフロー制御しながら、バッファを利用し通信を効率化させるということです。

TCPウインドウサイズのチューニング

TCPウインドウサイズの値をチューニングする際は、MSS(Maximum Segment Size)の整数倍にするのが望ましいそうです。(詳しくはググってみてください。)

TCPウインドウサイズ値の決定は、ネットワーク環境に応じて考慮する必要があります。

  • 値を小さくした場合は、転送効率が低下します。
  • 値を大きくした場合は、受信側で必要になるメモリが増える、ネットワークが安定していない場合に再送処理によるオーバーヘッドが発生します。

値を決めるのも中々大変なようです。

今回の現象に対する対策

冒頭にも記載しましたが、今回の問題現象としては、大量のデータ転送を行っているネットワークで、Destination側のルータにてCPUが高負荷状態になる現象となっています。

Destination側のストレージ機器(NASヘッド)にて、TCPウインドウサイズがかなり大きい値になっているので、この値を小さくする対策を考えています。

参考

Wiki 「Transmission Control Protocol」

Wiki OSI参照モデル

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

チェックサイト RSS Feed読者登録はいかがでしょうか?RSS配信中です。