A depuração eliminou mensagens UDP no Linux

1

Aqui está minha configuração: Eu tenho 1 host que tem uma conexão Ethernet de 1 Gbit e 2 hosts com conexões de 100 mbit (conectados ao host de 1 Gbit através de switches diferentes).

Em um teste, envio 1000 mensagens de 1kb do host de 1 Gbit para os hosts de 100 mbit (sem atraso nas chamadas do btwn sendto ()). Para um dos hosts de 100 mbit, nenhum pacote é descartado. O outro não tem quedas até o 100º e depois começa a perder a maioria dos restantes. Muito reprodutível. Quando introduzo um atraso de 1ms, não há quedas em nenhum dos hosts.

Eu gostaria de saber por que há um comportamento diferente entre os dois hosts.

Quais são alguns métodos / ferramentas que devo usar para rastrear isso? Eu estou usando o Linux 6.8. E meu rmem_max está configurado para 10MB em ambos os hosts.

    
por gnr 19.06.2016 / 17:28

1 resposta

2

Esse é o comportamento esperado quando você tem velocidade inigualável e está executando velocidades incompatíveis. Se você conseguir saturar o link de 1 GB, a outra extremidade só terá lido 100 pacotes quando enviar os 1000 pacotes. É improvável que o seu roteador armazene os 900 pacotes restantes.

O UDP é um protocolo não confiável. Ao contrário do TCP, ele não vem com uma entrega confiável interna.

Pode ajudar a executar um teste semelhante com conexões TCP. Executá-lo em ambas as direções pode ajudar a determinar se o problema é unidirecional.

A execução de time nos processos pode fornecer uma ideia se um dos processos estiver sendo executado mais devagar do que o outro. netstat -i antes e depois da execução do teste permitirá calcular quantos dados chegaram e ver se algum erro foi gerado.

ethtool pode informar se um dos hosts está no modo half-duplex. As conexões half-duplex são propensas a problemas como o que você está vendo. Se houver cabeamento ou outros problemas, a conexão poderá retornar a half-duplex de 10 Mbit em uma ou ambas as direções.

Se o switch for gerenciado, verifique os contadores de configuração e erro nas portas relevantes.

Se os dois sistemas tiverem hardware Ethernet diferente, esse pode ser o problema. Algum hardware simplesmente não consegue lidar com um link saturado.

    
por 20.06.2016 / 01:19