windows-server-2012 – Receiver将TCP窗口大小限制为64,512
事实(请说明任何虚假陈述):
>我在两个相隔80毫秒的站点之间有100 Mbps的连接 题 >为什么接收器保持窗口小? 无答案 >网络坏了 在同一网络上运行的Linux机器将TCP窗口打开到1.5兆字节,并以6倍的带宽传输数据 窗口缩放启发式被禁用(参见下面的“netsh interface tcp show heuristics”的输出) 接收窗口自动调整级别正常(参见下面的“netsh interface tcp show global”的输出) 在同一主机上运行的虚拟Linux机器上,性能提高了6倍. 2015年6月12日下午4:30更新 我通过将linux放在连接的一端来修改测试.果然,当linux向Windows Server 2012发送数据时,Windows提供了一个太小的TCP接收窗口(64,512字节). 当我将数据从Windows发送到linux时,linux提供了足够大的TCP接收窗口(1,365,120字节).但是,Windows限制发送到飞行中最多约60,000个字节. 更新于2015年6月13日下午3点(太平洋时间) 更接近根本原因的一步.在我的设置中,SO_SNDBUF和SO_RCVBUF都没有设置(通过iperf).这些是有效绑定接收窗口的发送和接收缓冲区.未指定这些值时,Windows Server 2012提供的默认值为64 kB.所以现在的问题是: 题 >如果未指定一个,为什么Windows Server 2012不会动态增加SO_SNDBUF / SO_RCVBUF以适应MSDN所述的长胖管道? 无答案 >“netsh winsock show autotuning”已禁用 它已启用. 更新于2015年8月24日下午4点(太平洋时间) netsh显然已被Set-NetTCPSetting和family取代. Get-NetTCPSetting结合Get-NetTCPConnection显示我在“互联网”制度下运行,它为我提供了以下设置: SettingName : Internet MinRto(ms) : 300 InitialCongestionWindow(MSS) : 4 CongestionProvider : CTCP CwndRestart : False DelayedAckTimeout(ms) : 50 MemoryPressureProtection : Enabled AutoTuningLevelLocal : Normal AutoTuningLevelGroupPolicy : NotConfigured AutoTuningLevelEffective : Local EcnCapability : Enabled Timestamps : Disabled InitialRto(ms) : 3000 ScalingHeuristics : Disabled DynamicPortRangeStartPort : 49152 DynamicPortRangeNumberOfPorts : 16384 发件人TCP设置 PS C:Usersacs> netsh interface tcp show global Querying active state... TCP Global Parameters ---------------------------------------------- Receive-Side Scaling State : enabled Chimney Offload State : disabled NetDMA State : disabled Direct Cache Access (DCA) : disabled Receive Window Auto-Tuning Level : normal Add-On Congestion Control Provider : none ECN Capability : enabled RFC 1323 Timestamps : disabled Initial RTO : 3000 Receive Segment Coalescing State : enabled PS C:Usersacs> netsh interface tcp show heuristics TCP Window Scaling heuristics Parameters ---------------------------------------------- Window Scaling heuristics : disabled Qualifying Destination Threshold : 3 Profile type unknown : normal Profile type public : normal Profile type private : normal Profile type domain : normal PS C:Usersacs> Get-NetTCPSetting SettingName : Automatic MinRto(ms) : InitialCongestionWindow(MSS) : CongestionProvider : CwndRestart : DelayedAckTimeout(ms) : MemoryPressureProtection : AutoTuningLevelLocal : AutoTuningLevelGroupPolicy : AutoTuningLevelEffective : EcnCapability : Timestamps : InitialRto(ms) : ScalingHeuristics : DynamicPortRangeStartPort : DynamicPortRangeNumberOfPorts : SettingName : Custom MinRto(ms) : 20 InitialCongestionWindow(MSS) : 4 CongestionProvider : DCTCP CwndRestart : True DelayedAckTimeout(ms) : 10 MemoryPressureProtection : Enabled AutoTuningLevelLocal : Normal AutoTuningLevelGroupPolicy : NotConfigured AutoTuningLevelEffective : Local EcnCapability : Enabled Timestamps : Disabled InitialRto(ms) : 3000 ScalingHeuristics : Disabled DynamicPortRangeStartPort : 49152 DynamicPortRangeNumberOfPorts : 16384 SettingName : Compat MinRto(ms) : 300 InitialCongestionWindow(MSS) : 2 CongestionProvider : Default CwndRestart : False DelayedAckTimeout(ms) : 200 MemoryPressureProtection : Enabled AutoTuningLevelLocal : Normal AutoTuningLevelGroupPolicy : NotConfigured AutoTuningLevelEffective : Local EcnCapability : Enabled Timestamps : Disabled InitialRto(ms) : 3000 ScalingHeuristics : Disabled DynamicPortRangeStartPort : 49152 DynamicPortRangeNumberOfPorts : 16384 SettingName : Datacenter MinRto(ms) : 20 InitialCongestionWindow(MSS) : 4 CongestionProvider : DCTCP CwndRestart : True DelayedAckTimeout(ms) : 10 MemoryPressureProtection : Enabled AutoTuningLevelLocal : Normal AutoTuningLevelGroupPolicy : NotConfigured AutoTuningLevelEffective : Local EcnCapability : Enabled Timestamps : Disabled InitialRto(ms) : 3000 ScalingHeuristics : Disabled DynamicPortRangeStartPort : 49152 DynamicPortRangeNumberOfPorts : 16384 SettingName : Internet MinRto(ms) : 300 InitialCongestionWindow(MSS) : 4 CongestionProvider : CTCP CwndRestart : False DelayedAckTimeout(ms) : 50 MemoryPressureProtection : Enabled AutoTuningLevelLocal : Normal AutoTuningLevelGroupPolicy : NotConfigured AutoTuningLevelEffective : Local EcnCapability : Enabled Timestamps : Disabled InitialRto(ms) : 3000 ScalingHeuristics : Disabled DynamicPortRangeStartPort : 49152 DynamicPortRangeNumberOfPorts : 16384 发件人SYN No. Time Source Destination Protocol Length Delta Sequence number Acknowledgment number Bytes in flight Calculated window size Info 814 5.036577000 10.10.0.21 10.11.0.1 TCP 66 0.000000000 0 0 64512 49758→5001 [SYN,ECN,CWR] Seq=0 Win=64512 Len=0 MSS=1460 WS=1 SACK_PERM=1 Frame 814: 66 bytes on wire (528 bits),66 bytes captured (528 bits) on interface 0 Ethernet II,Src: 00:11:22:33:44:55,Dst: aa:bb:cc:dd:ee:ff Internet Protocol Version 4,Src: 10.10.0.21 (10.10.0.21),Dst: 10.11.0.1 (10.11.0.1) Transmission Control Protocol,Src Port: 49758 (49758),Dst Port: 5001 (5001),Seq: 0,Len: 0 Source Port: 49758 (49758) Destination Port: 5001 (5001) [Stream index: 73] [TCP Segment Len: 0] Sequence number: 0 (relative sequence number) Acknowledgment number: 0 Header Length: 32 bytes .... 0000 1100 0010 = Flags: 0x0c2 (SYN,CWR) Window size value: 64512 [Calculated window size: 64512] Checksum: 0x1451 [validation disabled] Urgent pointer: 0 Options: (12 bytes),Maximum segment size,No-Operation (NOP),Window scale,SACK permitted Maximum segment size: 1460 bytes No-Operation (NOP) Window scale: 0 (multiply by 1) Kind: Window Scale (3) Length: 3 Shift count: 0 [Multiplier: 1] No-Operation (NOP) No-Operation (NOP) TCP SACK Permitted Option: True 序列图的发送者视角 接收器TCP设置 PS C:Usersacs> netsh interface tcp show global Querying active state... TCP Global Parameters ---------------------------------------------- Receive-Side Scaling State : enabled Chimney Offload State : disabled NetDMA State : disabled Direct Cache Access (DCA) : disabled Receive Window Auto-Tuning Level : normal Add-On Congestion Control Provider : none ECN Capability : enabled RFC 1323 Timestamps : disabled Initial RTO : 3000 Receive Segment Coalescing State : enabled PS C:Usersacs> netsh interface tcp show heuristics TCP Window Scaling heuristics Parameters ---------------------------------------------- Window Scaling heuristics : disabled Qualifying Destination Threshold : 3 Profile type unknown : normal Profile type public : normal Profile type private : normal Profile type domain : normal PS C:Usersacs> Get-NetTCPSetting SettingName : Automatic MinRto(ms) : InitialCongestionWindow(MSS) : CongestionProvider : CwndRestart : DelayedAckTimeout(ms) : MemoryPressureProtection : AutoTuningLevelLocal : AutoTuningLevelGroupPolicy : AutoTuningLevelEffective : EcnCapability : Timestamps : InitialRto(ms) : ScalingHeuristics : DynamicPortRangeStartPort : DynamicPortRangeNumberOfPorts : SettingName : Custom MinRto(ms) : 20 InitialCongestionWindow(MSS) : 4 CongestionProvider : DCTCP CwndRestart : True DelayedAckTimeout(ms) : 10 MemoryPressureProtection : Enabled AutoTuningLevelLocal : Normal AutoTuningLevelGroupPolicy : NotConfigured AutoTuningLevelEffective : Local EcnCapability : Enabled Timestamps : Disabled InitialRto(ms) : 3000 ScalingHeuristics : Disabled DynamicPortRangeStartPort : 49152 DynamicPortRangeNumberOfPorts : 16384 SettingName : Compat MinRto(ms) : 300 InitialCongestionWindow(MSS) : 2 CongestionProvider : Default CwndRestart : False DelayedAckTimeout(ms) : 200 MemoryPressureProtection : Enabled AutoTuningLevelLocal : Normal AutoTuningLevelGroupPolicy : NotConfigured AutoTuningLevelEffective : Local EcnCapability : Enabled Timestamps : Disabled InitialRto(ms) : 3000 ScalingHeuristics : Disabled DynamicPortRangeStartPort : 49152 DynamicPortRangeNumberOfPorts : 16384 SettingName : Datacenter MinRto(ms) : 20 InitialCongestionWindow(MSS) : 4 CongestionProvider : DCTCP CwndRestart : True DelayedAckTimeout(ms) : 10 MemoryPressureProtection : Enabled AutoTuningLevelLocal : Normal AutoTuningLevelGroupPolicy : NotConfigured AutoTuningLevelEffective : Local EcnCapability : Enabled Timestamps : Disabled InitialRto(ms) : 3000 ScalingHeuristics : Disabled DynamicPortRangeStartPort : 49152 DynamicPortRangeNumberOfPorts : 16384 SettingName : Internet MinRto(ms) : 300 InitialCongestionWindow(MSS) : 4 CongestionProvider : CTCP CwndRestart : False DelayedAckTimeout(ms) : 50 MemoryPressureProtection : Enabled AutoTuningLevelLocal : Normal AutoTuningLevelGroupPolicy : NotConfigured AutoTuningLevelEffective : Local EcnCapability : Enabled Timestamps : Disabled InitialRto(ms) : 3000 ScalingHeuristics : Disabled DynamicPortRangeStartPort : 49152 DynamicPortRangeNumberOfPorts : 16384 接收器SYN No. Time Source Destination Protocol Length Delta Sequence number Acknowledgment number Bytes in flight Calculated window size Info 817 5.110501000 10.11.0.1 10.10.0.21 TCP 70 0.073924000 0 1 64512 5001→49758 [SYN,ACK,ECN] Seq=0 Ack=1 Win=64512 Len=0 MSS=1460 WS=1 SACK_PERM=1 [ETHERNET FRAME CHECK SEQUENCE INCORRECT] Frame 817: 70 bytes on wire (560 bits),70 bytes captured (560 bits) on interface 0 Ethernet II,Src: aa:bb:cc:dd:ee:ff,Dst: 00:11:22:33:44:55 Internet Protocol Version 4,Src: 10.11.0.1 (10.11.0.1),Dst: 10.10.0.21 (10.10.0.21) Transmission Control Protocol,Src Port: 5001 (5001),Dst Port: 49758 (49758),Ack: 1,Len: 0 Source Port: 5001 (5001) Destination Port: 49758 (49758) [Stream index: 73] [TCP Segment Len: 0] Sequence number: 0 (relative sequence number) Acknowledgment number: 1 (relative ack number) Header Length: 32 bytes .... 0000 0101 0010 = Flags: 0x052 (SYN,ECN) Window size value: 64512 [Calculated window size: 64512] Checksum: 0xb5bb [validation disabled] Urgent pointer: 0 Options: (12 bytes),SACK permitted Maximum segment size: 1460 bytes No-Operation (NOP) Window scale: 0 (multiply by 1) Kind: Window Scale (3) Length: 3 Shift count: 0 [Multiplier: 1] No-Operation (NOP) No-Operation (NOP) TCP SACK Permitted Option: True [SEQ/ACK analysis] 序列图的接收器透视图 TCP窗口
我已将此视为特定于驱动程序的问题;在我的情况下,QLogic网络控制器试图使用TCPChimney.此链接描述了Windows 2008中添加的TCPChimney功能 – 但我很确定它仍然适用:
https://support.microsoft.com/en-us/kb/951037
我建议按顺序测试以下内容;每次测试后,重新启动并查看接收器是否按预期开始增加TCP RWIN. 1)在接收计算机上加载网络适配器的最新版本的驱动程序. (与评论相反“超过65k的大TCP窗口大小对服务器不利,因为那时连接的内存需求增加.单独65k也可能不会让你足够开心.– user303507 2015年8月6日11:30”,大TCP接收Windows本身对服务器不利.在高带宽,高延迟链路(如卫星中继)的情况下,需要大的RWIN值,以便我们在“管道”中有更多的TCP数据.想象一下600 Mbps的连接,延迟为3000毫秒;高带宽链路将限制在大约20 KBps;因为一次只有65 KB的未确认TCP数据可能“在管道中”.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-services – 卸载后无法删除服务可执行文件
- Windows的ODBC配置指南: MySQL, PostgreSQL, DB2, Oracle
- windows-server-2008 – 重新启动MS Server 2008,而不安装更
- Windows Server 2012 R2 WSUS-5:组策略配置自动更新
- Windows10配置php环境(thinkphp5.0) Wampserver3.0.6默认
- 如何使我的.net,WPF,WinForms等应用程序在ARM驱动的Windows
- Windows – 开发群集感知非基于Web的企业应用程序中的常见问
- windows – 如何在软件安装期间锁定普通(非管理员)用户?
- 如何将十六进制字符串转换为Uint8Array并返回JavaScript?
- Win10家庭版如何启用本地组策略
- windows-server-2003 – 可以检测和处理恶意IP地
- 将列添加到CSV Windows PowerShell
- windows – 如何删除xp中以前的所有设备?
- windows-server-2008 – 用于Windows 2008 RDP的
- windows-server-2008 – 对所有连接都要求RDP上的
- windows – 无法覆盖Meteor absoluteUrl?
- 如何在东芝笔记本电脑和Windows 7上使用python进
- 在Windows上查看进程的环境变量
- windows平台xFsRedir程序更新(虚拟磁盘镜像存储
- Windows API一日一练 53 CreateFile函数