Sự kiện (vui lòng xác định bất kỳ tuyên bố sai):
Tôi có kết nối 100 Mbps giữa hai trang web cách nhau 80 ms
Đây là một kết nối chất béo dài có thể được hưởng lợi từ kích thước cửa sổ TCP lớn có thể lên tới 100 Mbps * 0,08 giây = 1.000.000 byte
Cả hai máy đều đang chạy Windows Server 2012. "Nhận mức điều chỉnh tự động của cửa sổ" là bình thường trên cả hai. "Heuristic mở rộng cửa sổ" bị vô hiệu hóa trên cả hai.
Tôi đã chạy "iperf -s" ở một bên và "iperf -c" ở bên kia. Việc chuyển tiền xảy ra ở mức 5 Mbps. Tôi nhận được kết quả tương tự đi theo hướng khác.
Cả hai bên đều quảng cáo hỗ trợ cho các cửa sổ trượt TCP trong các SYN của họ.
Người nhận đã yêu cầu kích thước cửa sổ TCP là 64.512 byte (0xFC00) trong toàn bộ quá trình chạy với giá trị tỷ lệ cửa sổ TCP là "không thay đổi" (0x000).
Mạng có thể xử lý kích thước cửa sổ lớn hơn (xem sơ đồ trình tự bên dưới)
Người nhận giữ cửa sổ nhỏ hơn mạng hỗ trợ
Kết nối này đang diễn ra trong VPN IPSEC. MTU của giao diện đường hầm được giảm xuống còn 1400 byte theo cả hai hướng.
Câu hỏi
- Tại sao máy thu giữ cửa sổ nhỏ?
Không trả lời
Mạng bị hỏng
Các máy Linux chạy trên cùng một mạng mở cửa sổ TCP lên 1,5 megabyte và truyền dữ liệu với băng thông gấp 6 lần
Heuristic mở rộng cửa sổ được kích hoạt
Các heuristic mở rộng cửa sổ bị vô hiệu hóa (xem đầu ra của "Netsh interface tcp show heuristic" bên dưới)
Nhận cửa sổ Điều chỉnh mức tự động không bình thường
Nhận cửa sổ Mức tự động điều chỉnh là bình thường (xem đầu ra của "giao diện Netsh tcp hiển thị toàn cầu" bên dưới)
Điều này chỉ không hoạt động tốt trên một máy ảo trong ESXi
Tôi có hiệu suất tốt hơn 6 lần trên một máy linux ảo chạy trên cùng một máy chủ.
Cập nhật ngày 1 tháng 6 năm 2015 4:30 chiều PDT
Tôi đã sửa đổi thử nghiệm bằng cách đặt linux vào một bên của kết nối. Chắc chắn, khi linux gửi dữ liệu tới Windows Server 2012, Windows cung cấp một cửa sổ nhận TCP quá nhỏ (64.512 byte).
Khi tôi gửi dữ liệu từ Windows sang linux, linux cung cấp cửa sổ nhận TCP đủ lớn (1.365.120 byte). Tuy nhiên, Windows hạn chế gửi tối đa ~ 60.000 byte trong chuyến bay.
Cập nhật ngày 2 tháng 6 năm 2015 3:00 chiều PDT
Một bước gần hơn với nguyên nhân gốc rễ. Trong thiết lập của tôi, cả SO_SNDBUF và SO_RCVBUF đều không được đặt (bởi iperf). Đây là các bộ đệm gửi và nhận có hiệu quả ràng buộc cửa sổ nhận. Khi không chỉ định các giá trị này, Windows Server 2012 cung cấp giá trị mặc định là 64 kB. Vì vậy, câu hỏi là bây giờ:
Câu hỏi
- Khi một cái không được chỉ định, tại sao Windows Server 2012 không tự động tăng SO_SNDBUF / SO_RCVBUF để phù hợp với các ống mỡ dài như được mô tả tại MSDN ?
Không trả lời
"Netsh winock show autotuning" bị vô hiệu hóa
Nó được kích hoạt.
Cập nhật ngày 3 tháng 8 năm 2015 4:00 chiều PDT
Netsh rõ ràng đã được thay thế bằng Set-NetTCPSding và gia đình. Get-NetTCPSding kết hợp với Get-NetTCPConnection cho thấy tôi đang hoạt động ở chế độ 'Internet' cung cấp cho tôi các cài đặt này:
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
Cài đặt TCP người gửi
PS C:\Users\acs> 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:\Users\acs> 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:\Users\acs> 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
Người gửi 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, ECN, 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, No-Operation (NOP), No-Operation (NOP), 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
Phối cảnh người gửi của biểu đồ trình tự
Cài đặt TCP nhận
PS C:\Users\acs> 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:\Users\acs> 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:\Users\acs> 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
Nhận tín hiệu
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), Seq: 0, 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, ACK, ECN)
Window size value: 64512
[Calculated window size: 64512]
Checksum: 0xb5bb [validation disabled]
Urgent pointer: 0
Options: (12 bytes), Maximum segment size, No-Operation (NOP), Window scale, No-Operation (NOP), No-Operation (NOP), 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]
Phối cảnh thu của đồ thị trình tự
Cửa sổ TCP