dorapon2000’s diary

忘備録的な。セキュリティとかネットワークすきです。

TCPペーシングとは

ns3のtcp-pacing.ccというサンプルコードで,TCP pacingという単語を知りました.どうやら随分古い技術で,Linuxカーネルでも実装されている技術だそうです.それにしては英語版wikipediaですら2行の雑な説明しかされておらず,ここでまとめておきます.

TCPペーシングとは

unix.stackexchange.com

こちらの回答が参考になりました.

TCPページングは,TCPの転送速度に上限を設けてパケット送信間隔をあける技術です(たぶん).上限を設けることにより,TCPのスロースタートによるバーストトラフィックの発生を抑制できます.Linuxにも実装されていて,4.13.0-rc1以前はデフォルトで有効,それ以降は無効になっているそうです.ただし,有効にしてもデフォルトの上限値は34.36Gbpsでまず影響ないです.逆に小さくすると,TCP segmentation offload(TSO)により高速化できたはずの伝送速度より小さくなり,TSOの恩恵を得られなくなる可能性があります.

TCPペーシングについて言及している論文は2000年の文献[3]と2003年付近の文献[4]です.TCPの送信速度を制限することで,逆にパフォーマンスが上がる状況が存在することを指摘していました.

おそらく,TSOや優秀なTCP輻輳制御アルゴリズムが登場したから,TCPページングがデフォルトで無効になったんでしょうか.

References

[1] Is TCP PACING enabled by default on linux? - Unix & Linux Stack Exchange

[2] TCP pacing - Wikipedia

[3] A. Amit, S. Stefan, A. Thomas, "Understanding the Performance of TCP Pacing. Proceedings," IEEE INFOCOM, 2000.

[4] Wei, David X. et al. "TCP Pacing Revisited," .