Назад | Перейти на главную страницу

UDP. Скорость отправки ограничена минимальной конфигурацией адаптера Ethernet.

у меня есть 1 Гбит Адаптер Ethernet на моем компьютере. И у меня есть другой компьютер с адаптером Ethernet 100 Мбит. Оба в одной локальной сети и подключены через коммутатор 1 Гбит.

1 тест: Я пытаюсь отправить со своего компьютера (1 Гбит) на другой (100 Мбит) пакеты по UDP со скоростьюбольше, чем 100 Мбит / с.

Ожидаемый результат: Скорость более 100 Мбит / с. Некоторые пакеты теряются на принимающем компьютере (100 Мбит).

Фактический результат: Скорость ниже 100 Мбит / с (примерно 95 ~ 98 Мбит / с). Все пакеты принимаются на принимающий компьютер (100Мбит).

Код отправляющей стороны (с использованием 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-трансляция в текущую локальную сеть.

Ожидаемый результат: Скорость более 100 Мбит / с. Некоторые пакеты теряются на принимающем компьютере (100 Мбит).

Фактический результат: Скорость ниже 100 Мбит / с (примерно 95 ~ 98 Мбит / с). Все пакеты принимаются на принимающий компьютер (100Мбит).

Код отправляющей стороны (с использованием 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. Я протестировал приведенный выше код для следующей конфигурации: отправляющий компьютер (1 Гбит), прием (1 Гбит). Я пробовал отправлять со скоростью более 100 Мбит / с, а на самом деле скорость была больше 100 Мбит / с.
  2. Для первых двух тестов я изменил настройки адаптера со 100 Мбит на 10 Мбит на принимающем компьютере. И результат: реальная скорость составляет примерно 7 ~ 9 Мбит / с вместо 10+ Мбит / с.

Пожалуйста, помогите, почему я не могу получить ожидаемый результат?

Если ваш коммутатор поддерживает управление потоком, он, вероятно, отправляет кадры паузы на ваш хост, чтобы ограничить скорость передачи до приемлемой для портов, на которые он должен их пересылать.

Вы можете посмотреть дополнительные настройки сетевой карты и отключить управление потоком, если такая настройка доступна.