0

Windows マシンからネットワークを介して Windows または Linux にデータを送信すると、遅延が大きくなり、リンク容量の 10% が使用されます。一方、Linux から同じネットワークを介して同じデータを送信すると、ほぼ 10 倍速くなります。この問題は、パケットを遅延させることによって低遅延接続でのみ高遅延がシミュレートされる場合でも同じです。

私が試したすべてのアプリケーションに影響があるようです。テストは Windows 7 および Windows Server 2003 で実行され、同じ動作が観察されました。

tcpdump から、Windows はクイック バーストで約 10 パケットを送信してから ACK を待機するのに対し、Linux は ACK を待機せずに約 100 パケットを送信することが明らかです。

改善せずに複合 TCP を有効にしようとしました。

何が起こっているのかを知る方法についての提案を探しています。また、それを修正する方法。

4

1 に答える 1

5

WindowsレジストリのTCP送受信バッファのサイズを増やすことで問題を完全に解決することができました(再起動が必要です):

[HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Services \Afd \Parameters]
DefaultReceiveWindow = 1024000
DefaultSendWindow = 1024000

これらのキーが存在しない場合、デフォルトは両方とも8KBであり、これはWindowsがACKを待機するまでのデータ量でした。

また、

netsh interface tcp show global

表示されません

Receive Window Auto-Tuning Level    : disabled

そうしないと、TCPウィンドウスケーリングが受信だけでなく送信に対しても無効になり、接続速度が大幅に制限されます。TCPウィンドウスケーリングを有効にするには、たとえば自動調整レベルを通常に設定します。

netsh interface tcp set global autotuninglevel=normal
于 2012-05-25T23:51:19.627 に答える