UDP。发送速度受最低以太网适配器配置限制

UDP。发送速度受最低以太网适配器配置限制

我有1Gbit我的电脑上有以太网适配器。我的另一台电脑也有以太网适配器100兆位. 两者在一个局域网内,通过1Gbit交换机连接。

1 次测试:我尝试通过以下方式从我的计算机(1Gbit)向另一台计算机(100Mbit)发送数据包:UDP快速多于100Mbps。

预期结果:速度超过 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 广播到当前 LAN。

预期结果:速度超过 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。

请帮忙,为什么我无法获得预期的结果?

答案1

如果您的交换机支持流量控制,它可能会向您的主机发送暂停帧,以将传输速率限制在其必须转发到的端口上可接受的速率。

您可以查看 NIC 的高级设置,如果有可用的设置,则禁用流量控制。

相关内容