Networking

UDP。發送速度受最小乙太網適配器配置的限制

  • July 6, 2018

我的電腦上有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)
}

筆記:

  1. 我已經為下一個配置測試了上面的程式碼:發送電腦(1Gbit),接收(1Gbit)。我嘗試以超過 100Mbps 的速度發送,實際上,速度超過 100Mbps。
  2. 我已將接收電腦上的前兩個測試適配器設置從 100Mbit 更改為 10Mbit。結果:實際速度約為 7~9Mbps,而不是 10+ Mbps。

請幫忙,為什麼我不能得到預期的結果?

如果您的交換機支持流量控制,它可能會向您的主機發送暫停幀,以將傳輸速率限制在它必須將它們轉發到的埠上可接受的範圍內。

如果有這樣的設置可用,您可以查看 NIC 的高級設置並禁用流量控制。

引用自:https://serverfault.com/questions/919749