Networking
UDP。發送速度受最小乙太網適配器配置的限制
我的電腦上有1Gbit乙太網適配器。我有另一台帶有乙太網適配器100Mbit的電腦。兩者都在一個區域網路中,並通過 1Gbit 交換機連接。
1 測試:我嘗試通過UDP以****超過100Mbps的速度從我的電腦(1Gbit)發送到另一台(100Mbit)數據包。
*預期結果:*速度超過100Mbps。一些數據包在接收電腦上失去(100Mbit)。
*實際結果:*速度在100Mbps以下(約95~98Mbps)。所有數據包都在接收電腦(100Mbit)上接收。
發送方的程式碼(使用PowerShell):
$ipEndPoint = New-Object -TypeName System.Net.IPEndPoint -ArgumentList @([System.Net.IPAddress]::Parse("192.168.102.46"), 15000) $udpClient = New-Object -TypeName System.Net.Sockets.UdpClient $udpClient.Connect($ipEndPoint) while ($true) { $bytes = [System.Byte[]]::CreateInstance([System.Byte], 1400) $udpClient.Send($bytes, $bytes.Length) }
2 測試:相同的測試,但我嘗試將UDP 廣播發送到目前區域網路。
*預期結果:*速度超過100Mbps。一些數據包在接收電腦上失去(100Mbit)。
*實際結果:*速度在100Mbps以下(約95~98Mbps)。所有數據包都在接收電腦(100Mbit)上接收。
發送端程式碼(使用powershell):
$ipEndPoint = New-Object -TypeName System.Net.IPEndPoint -ArgumentList @([System.Net.IPAddress]::Parse("192.168.102.255"), 15000) $udpClient = New-Object -TypeName System.Net.Sockets.UdpClient $udpClient.EnableBroadcast = $true $udpClient.Connect($ipEndPoint) while ($true) { $bytes = [System.Byte[]]::CreateInstance([System.Byte], 1400) $udpClient.Send($bytes, $bytes.Length) }
筆記:
- 我已經為下一個配置測試了上面的程式碼:發送電腦(1Gbit),接收(1Gbit)。我嘗試以超過 100Mbps 的速度發送,實際上,速度超過 100Mbps。
- 我已將接收電腦上的前兩個測試適配器設置從 100Mbit 更改為 10Mbit。結果:實際速度約為 7~9Mbps,而不是 10+ Mbps。
請幫忙,為什麼我不能得到預期的結果?
如果您的交換機支持流量控制,它可能會向您的主機發送暫停幀,以將傳輸速率限制在它必須將它們轉發到的埠上可接受的範圍內。
如果有這樣的設置可用,您可以查看 NIC 的高級設置並禁用流量控制。