CC_VEGAS(4) | FreeBSD Kernel Interfaces Manual | CC_VEGAS(4) |
名称
cc_vegas — Vegas 輻輳制御アルゴリズム解説
Vegas 輻輳制御アルゴリズムは、ネットワークパスに沿った輻輳があるかどうを決定するために実際に作者の用語と期待される通信速度を使用します、すなわち、- actual rate = (total data sent in a RTT) / RTT
- expected rate = cwnd / RTTmin
- diff = expected - actual
ここで、RTT は、測定される瞬間的なラウンドトリップ時間で、 RTTmin は、接続の間に観測される最も小さいラウンドトリップ時間です。
アルゴリズムは、次のような、2 のパラメータ alpha と beta の間の diff を保持することを目的としています:
- alpha < diff < beta
diff > beta であるなら、輻輳が推論され、cwnd は、1 つのパケット (または、最大の TCP セグメントサイズ) によって減少されられます。 diff < alpha であるなら、cwnd は、1 つのパケットによって増加されます。 alpha と beta は、パスに沿ってバッファリングの量を左右します。
実装は、クリーンルームの方法で行われ、下記の 関連項目 セッションで参照される論文に基づいています。
実装に関する注
マークされたパケットの転送からの時間は、そのパケットのための承認の受信まで、RTT 毎に 1 度測定されます。この実装は、今日のマシンの時計チック (tick) が Vegas が最初に設計されたとき (すなわち、500ms)、それらほど粗くないので、 Brakmo と Peterson のオリジナルの複製の ACK ポリシを実装しません。速い再送のような現在の TCP 復旧プロセスと SACK は、 TCP スタックでデフォルトで有効にされることに注意してください。MIB 変数
アルゴリズムは、 sysctl(3) MIB の net.inet.tcp.cc.vegas ブランチで次の調整変数を公開します:- alpha
- パスの多くのバッファとして Vegas alpha パラメータを問い合わせるか、または設定します。 alpha を設定するとき、値は、満足させなければなりません: 0 < alpha < beta. デフォルトは、1 です。
- beta
- パスの多くのバッファとして Vegas beta パラメータを問い合わせるか、または設定します。 beta を設定するとき、値は、満足させなければなりません: 0 < alpha < beta. デフォルトは、3 です。
関連項目
cc_chd(4), cc_cubic(4), cc_hd(4), cc_htcp(4), cc_newreno(4), h_ertt(4), mod_cc(4), tcp(4), khelp(9), mod_cc(9) L. S. Brakmo and L. L. Peterson, TCP Vegas: end to end congestion avoidance on a global internet, IEEE J. Sel. Areas Commun., 8, 13, 1465-1480, October 1995.謝辞
このソフトウェアの開発とテストは、Community Foundation Silicon Valley において FreeBSD Foundation と Cisco University Research Program Fund からの助成金によって一部可能となりました。歴史
cc_vegas 輻輳制御モジュールは、 FreeBSD 9.0 ではじめて登場しました。このモジュールは、 Advanced Internet Architectures、Melbourne、Australia のために Swinburne University of Technology の Centre において NewTCP 研究プロジェクトに従事している間に、David Hayes によって 2010 年に始めてリリースされました。その他の詳細は、次で利用可能です:
http://caia.swin.edu.au/urp/newtcp/
作者
cc_vegas 輻輳制御モジュールとこのマニュアルページは、 <david.hayes@ieee.org>によって書かれました。September 15, 2011 | FreeBSD |