![UDP。发送速度受最低以太网适配器配置限制](https://linux22.com/image/724164/UDP%E3%80%82%E5%8F%91%E9%80%81%E9%80%9F%E5%BA%A6%E5%8F%97%E6%9C%80%E4%BD%8E%E4%BB%A5%E5%A4%AA%E7%BD%91%E9%80%82%E9%85%8D%E5%99%A8%E9%85%8D%E7%BD%AE%E9%99%90%E5%88%B6.png)
我有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)
}
笔记:
- 我已经针对下一个配置测试了上述代码:发送计算机(1Gbit),接收计算机(1Gbit)。我尝试以超过 100Mbps 的速度发送,实际上,速度超过了 100Mbps。
- 在前两次测试中,我将接收计算机上的适配器设置从 100Mbit 更改为 10Mbit。结果:实际速度约为 7~9Mbps,而不是 10+ Mbps。
请帮忙,为什么我无法获得预期的结果?
答案1
如果您的交换机支持流量控制,它可能会向您的主机发送暂停帧,以将传输速率限制在其必须转发到的端口上可接受的速率。
您可以查看 NIC 的高级设置,如果有可用的设置,则禁用流量控制。