Taxa de perda de pacotes com iperf e tcpdump

8

Eu testei uma linha para sua qualidade de link com iperf . A velocidade medida (porta UDP 9005) foi de 96Mbps, o que é bom, porque ambos os servidores estão conectados com 100Mbps à internet. Por outro lado, a taxa de perda de datagramas foi de 3,3-3,7%, o que achei um pouco demais. Usando um protocolo de transferência de alta velocidade, gravei os pacotes em ambos os lados com tcpdump . Do que eu calculei a perda de pacotes - média de 0,25%. Alguém tem uma explicação, de onde esta grande diferença pode estar vindo? O que é uma perda aceitável de pacotes na sua opinião?

    
por stefita 18.05.2010 / 10:34

4 respostas

3

Eu experimentei dataloss significativos com o iPerf no modo UDP como resultado da CPU não ser capaz de acompanhar. Por alguma razão, o iPerf com UDP parece ter muito mais uso de CPU do que o iPerf com o TCP. Você experimenta os mesmos percentuais de perda ao definir o iPerf como metade da taxa?

Para responder à sua segunda pergunta sobre o quanto a perda de pacotes é aceitável, isso realmente depende de qual aplicativo você está executando, de quanto tráfego você tem. Realmente, não deve haver nenhuma perda se você estiver sob seu limite de largura de banda. Para a maioria das coisas, eu provavelmente não reclamaria muito sobre 0,25%, mas isso ainda é uma grande perda se você estiver correndo a taxas realmente altas.

[EDIT 1] Alguns outros pensamentos que eu tive sobre o assunto:

  1. Tente incrementar as taxas do iPerf. Se houver algum problema sistêmico em algum lugar, é provável que você tenha a mesma porcentagem de perda, independentemente da taxa. Se você está nos limites de seu hardware, ou seu provedor faz algum tipo de RED , provavelmente não haverá perda até uma certa taxa e, em seguida, incrementalmente pior perda, o mais alto acima do que você vai.
  2. Faça a medição do tcpdump da sessão do iPerf, apenas para verificar se os seus testes são precisos.
  3. Experimente o iPerf com o TCP. Isso não informará a perda, mas se você estiver perdendo, a conexão não poderá ser ampliada muito. Como a latência também afetará isso, teste um terminal com a menor latência possível.
  4. Dependendo do equipamento que você tem dentro de sua conexão, verifique se você está o mais próximo possível. Por exemplo. se você tiver vários comutadores entre o seu sistema de teste e o roteador de borda, mude para um comutador conectado diretamente.
  5. Se você tiver um switch gerenciado, verifique as estatísticas para garantir que a perda não ocorra. Eu encontrei alguns switches mais baratos que começam a cair quando você chega perto de 100 Mbps de tráfego UDP neles (na sua maioria switches não gerenciados antigos e baratos).
  6. Tente iPerfs simultâneos de dois clientes diferentes para dois hosts diferentes, para que você possa ter certeza de que o limite não é resultado de CPU ou de um cartão NIC barato.
por 27.05.2010 / 07:26
0

Bem, com o TCP existem mecanismos para maximizar a utilização de um fluxo, com o UDP não. Assim, cada aplicativo precisa criar seus próprios mecanismos, então, provavelmente, cada aplicativo usa uma abordagem diferente para fazer isso. Provavelmente, o Iperf permitirá mais pacotes perdidos porque está tentando atingir a largura de banda máxima disponível sem se importar se as informações forem recebidas ou não. O outro aplicativo provavelmente tentará não perder muitos pacotes e reduzirá a taxa de pacotes para a taxa de transferência disponível na conexão.

    
por 27.05.2010 / 11:33
0

Você usou o tcpdump para verificar a perda de pacotes ao usar o iPerf para garantir que a perda de pacotes que você calcula com o tcpdump corresponda ao iperf?

Você pode descobrir que seus métodos de medição não são comparáveis.

    
por 27.05.2010 / 18:54
0

iperf descarta automaticamente pacotes que chegam fora de seqüência com o UDP? Você pode estar olhando um pouco de instabilidade na conexão.

    
por 28.05.2010 / 01:57