web-dev-qa-db-ja.com

UbuntuサーバーでTCPウィンドウサイズを変更する

Ubuntuサーバーでデフォルトよりも大きいTCPウィンドウサイズから始める方法はありますか?

/proc/sys/net/ipv4/にいくつかのパラメータがあるようです。例:

/proc/sys/net/ipv4/tcp_window_scaling (which is 1)

/proc/sys/net/ipv4/tcp_adv_win_scale (2)

/proc/sys/net/ipv4/tcp_slow_start_after_idle (1)

/proc/sys/net/ipv4/tcp_window_scaling (1)
3
abcde123483

TCPは全二重であるため、送信用と受信用の2つの初期輻輳ウィンドウ(IW)があります。これらはrouteコマンドで設定できますが、2.6.32でパケットキャプチャを確認した後は機能しませんでした。デスクトップ(3.0.0)では、デフォルトでIWが高い(10パケット)ので、これを後のバージョンでテストしていません。することが。

ただし、理論的には、これらはip routeで次のように設定できます。

Sudo ip route add <DEST IP> via <GATEWAY IP> proto static initcwnd 10

送信IW用。 IWを受信するには、initcwndinitrwndに変更します。

これが機能している場合は、TCPハンドシェイクのSYNまたはSYN/ACKパケット(送信/受信ウィンドウに応じて)に反映される新しいウィンドウサイズが必要だと思います。。輻輳ウィンドウは内部にあり、TCPヘッダーのウィンドウとは異なるため、動作していることを確認する唯一の方法は、待ち時間の長い接続でテストし、より多くの初期パケットが送信されるかどうかを確認することです。私は最近これを自分で見ているところなので、免責事項として、私はこれらすべてについて100%前向きです。

この後、ウィンドウサイズは、ウィンドウにバインドされるという点で問題を引き起こすことなく、デフォルトのLinuxパラメーターでスケーリングする必要があります。ウィンドウにバインドされている状況に頻繁に遭遇していることを示すキャプチャがない限り、これを台無しにしたくないでしょう(この場合、レシーバーはWin 0で大量のパケットを送信します)。

4
Kyle Brandt

net.ipv4.tcp_wmemnet.ipv4.tcp_rmemがあります。これらの変数の値はsysctl -nで読み取り、sysctlで設定することもできます。

かなり良いイントロは ここ です。

2
Juergen Brendel