UDP. A velocidade de envio é limitada pela configuração mínima do adaptador Ethernet

2

Eu tenho um adaptador Ethernet 1Gbit no meu computador. E eu tenho o outro computador com adaptador Ethernet 100Mbit . Os dois em uma LAN e conectados através do switch de 1 Gbit.

1 Teste : Eu tento enviar do meu computador (1Gbit) para o outro (100Mbit) os pacotes por UDP com velocidade mais que 100 Mbps.

Resultado esperado: A velocidade é superior a 100Mbps. Alguns pacotes são perdidos no computador receptor (100 Mbit).

Resultado real: A velocidade está abaixo de 100Mbps (aproximadamente 95 ~ 98Mbps). Todos os pacotes são recebidos no computador receptor (100 Mbit).

O código do lado de envio (usando o 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 Test : o mesmo teste, mas tento enviar UDP Broadcast para a LAN atual.

Resultado esperado: A velocidade é superior a 100Mbps. Alguns pacotes são perdidos no computador receptor (100 Mbit).

Resultado real: A velocidade está abaixo de 100Mbps (aproximadamente 95 ~ 98Mbps). Todos os pacotes são recebidos no computador receptor (100 Mbit).

O código do lado de envio (usando o 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)
}

Nota:

  1. Eu testei o código acima para a próxima configuração: envio de computador (1Gbit), recebimento (1Gbit). Tentei enviar com velocidade superior a 100Mbps e, na verdade, a velocidade foi superior a 100Mbps.
  2. Eu mudei para as duas primeiras configurações do adaptador de testes de 100Mbit para 10Mbit no computador receptor. E o resultado: a velocidade real é de aproximadamente 7 ~ 9Mbps em vez de 10+ Mbps.

Por favor, ajude, por que não consigo obter os resultados esperados?

    
por Vitali Kuzniatsou 06.07.2018 / 12:40

1 resposta

1

Se o seu switch suportar Flow Control, é provável que ele envie quadros de pausa para o seu host para limitar a taxa de transmissão ao que é aceitável nas portas para as quais ele deve encaminhá-los.

Você pode dar uma olhada nas configurações avançadas da NIC e desabilitar o controle de fluxo se houver essa configuração disponível.

    
por 06.07.2018 / 21:04