Por que estou obtendo uma latência de conexão TCP longa na conexão em uma LAN (com uma cruz!)?

1

Estou medindo um tempo de cerca de 100-150 milissegundos do envio de TCP SYN para SYN / ACK, entre dois computadores Linux conectados ao mesmo switch Cisco. Considere:

  • As máquinas são muito poderosas e nem elas nem o comutador estão sobrecarregados.
  • Analisando os logs tcpdumps nas duas máquinas, vejo que o problema não está nos terminais, mas na própria rede (o cliente vê um atraso de 100 a 150 ms, mas o servidor processa as respostas em cerca de 10 ms).
  • Apenas solicitações SYN são lentas. Depois, um pacote TCP normal obtém um ACK imediatamente.

Então, minhas perguntas são:

  • Estou certo em pensar que é assim, demais?
  • Qual latência devo visar?
  • O que posso fazer para diagnosticar e resolver o problema?

Editar - removemos a equação. Os dois computadores agora estão conectados em um cabo cruzado e ainda estamos vendo o problema. Ambos estão em full duplex, 100 MBPS.

    
por ripper234 08.12.2009 / 16:46

6 respostas

3

Bem, porcaria. Parece que eu interpretei mal os logs tcpdump e wireshark. O atraso que recebi foi de 100 microssegundos, não milis!

texto alternativo http://ironicsurrealism.blogivists.com/files/2009/10 /homer-simpson-doh.gif

    
por 09.12.2009 / 13:19
2

Os suspeitos do costume:

  • Incompatibilidade de duplex

    • marque a opção de colisões ou erros
    • verificar hosts para colisões ou erros

    Se você vir colisões, esse final é half duplex e deve ser definido como completo. Se você vir erros, verifique a outra extremidade em busca de colisões. Se ambas as extremidades tiverem erros, você pode ter um cabo defeituoso.

  • tempos limite de DNS
    • faça login em um host, pesquise com nslookup o IP do outro. Você deve receber um nome ou um erro muito rapidamente
por 08.12.2009 / 16:52
1

Você verificou o cabeamento? Cabos e / ou pancadas ruins podem resultar em novas tentativas que podem aumentar muito a latência.

    
por 08.12.2009 / 17:12
1

Qual modelo de switch da Cisco você está usando? Uma coisa que pode estar acontecendo é se o switch não sabe em qual porta você está o servidor, ele precisará inundar todas as portas com o pacote, o que pode levar algum tempo (não deve levar 100ms). Você pode verificar executando TCP dump em outro servidor que não é um dos dois servidores que você está usando. Quando o servidor responder, ele aprenderá a atribuição do port-mac e fará o encaminhamento em asic. Isso pode ser especialmente predominante nos switches cisco de baixo custo.

Além disso, você tem ACLs por porta? Isso também poderia exigir a comutação da CPU, que seria ordens de magnitude mais lenta do que no ASIC. Você tem o mesmo problema ao executar pings, pois o primeiro ping tem 100 ms de atraso e, em seguida, pings subsequentes são < 1ms? Se for um switch de extremidade inferior e só receber atraso em tcp / ip, eu verifico que não há uma ACL aplicada aos pacotes TCP / IP.

Eu também verifico a opção de carga da CPU, mesmo que seja de baixa utilização; se houver alguma configuração estúpida que esteja fazendo com que ela mude de CPU, ela pode ser facilmente sobrecarregada. Nós sobrecarregamos os switches high-end (backhaul de 10 Gbps) com o tráfego na faixa de 100 Mbps, porque estávamos inadvertidamente enviando tráfego que precisava ser comutado dentro da CPU.

    
por 08.12.2009 / 23:11
0

Esta parece ser a latência que você passaria de um lado para o outro dos EUA. O comutador é gerenciado? Você pode se conectar ao switch e verificar se há problemas? Eu esperaria que < 1-2 ms em uma rede local

    
por 08.12.2009 / 16:53
0

Na minha experiência, os switches da Cisco devem inserir menos de 1ms na latência, portanto, sim, isso é uma indicação de um problema.

Os dois dispositivos estão conectados ao switch por meio de fios (ou seja, não 802.11)? Na mesma VLAN?

Esta é uma rede confiável? Se os dispositivos e switches estiverem levemente carregados, eu ficaria preocupado que alguém estivesse usando um seqüestro ARP para se inserir no fluxo de tráfego como um homem no meio ...

Se você verificar a tabela ARP nessas caixas (arp -an) e verificar o endereço IP da outra caixa com a saída de ifconfig, os endereços MAC coincidem?

Você menciona que está analisando a saída do tcpdump. Você está comparando os timestamps entre as duas caixas? Em caso afirmativo, tem certeza de que os relógios estão sincronizados?

Você tem acesso a um terceiro host na rede para comparar o desempenho com as outras duas caixas?

    
por 08.12.2009 / 16:58