Como monitorar passivamente a perda de pacotes tcp? (Linux)

54

Como posso monitorar passivamente a perda de pacotes nas conexões TCP de / para minha máquina?

Basicamente, eu gostaria de uma ferramenta que fica em segundo plano e assiste TCP ack / nak / retransmissões para gerar um relatório em que os endereços IP dos pares "parecem" estar passando por uma grande perda.

A maioria das perguntas como essa que eu acho do SF sugerem o uso de ferramentas como o iperf. Mas eu preciso monitorar as conexões de / para um aplicativo real na minha máquina.

Esses dados estão apenas na pilha TCP do Linux?

    
por nonot1 05.10.2011 / 23:55

5 respostas

42

Para ter uma ideia geral da dimensão do seu problema netstat -s irá acompanhar o número total de retransmissões.

# netstat -s | grep retransmitted
     368644 segments retransmitted

Você pode adicionar greo para segments para ter uma visão mais detalhada:

# netstat -s | grep segments
         149840 segments received
         150373 segments sent out
         161 segments retransmitted
         13 bad segments received

Para um mergulho mais profundo, você provavelmente desejará iniciar o Wireshark.

No Wireshark, configure seu filtro para tcp.analysis.retransmission para ver retransmissões por fluxo.

Essa é a melhor opção que posso apresentar.

Outros becos sem saída explorados:

    As ferramentas
  • netfilter / conntrack parecem não continuar retransmitindo
  • stracing netstat -s mostrou que está imprimindo apenas /proc/net/netstat
  • A
  • coluna 9 em / proc / net / tcp parecia promissora, mas infelizmente parece não ser usada.
por 06.10.2011 / 01:59
10

Essas estatísticas estão em / proc / net / netstat e collectl as monitorará para você de forma interativa ou gravadas no disco para reprodução posterior:

[root@poker ~]# collectl -st
waiting for 1 second sample...
#<------------TCP------------->
#PureAcks HPAcks   Loss FTrans
        3      0      0      0
        1      0      0      0

É claro que, se você gostaria de ver, em seguida, lado a lado com o tráfego de rede, inclua apenas n com -s :

[root@poker ~]# collectl -stn
waiting for 1 second sample...
#<----------Network----------><------------TCP------------->
#  KBIn  PktIn  KBOut  PktOut PureAcks HPAcks   Loss FTrans
      0      1      0       1        1      0      0      0
      0      1      0       1        1      0      0      0
    
por 28.11.2011 / 16:18
5

Você pode usar a ferramenta ss para obter estatísticas detalhadas do TCP:

$ /sbin/ss -ti

No Debian, use apt-get install iproute para obter o binário.

    
por 06.04.2013 / 19:41
2

Parece que alguns caras da Universidade da Carolina do Norte (UNC) construíram um utilitário para investigar exatamente isso:

Methodology

TCP is a classic example of a legacy protocol that gets subject to modifications. Unfortunately, evaluation of something as fundamental as TCP's loss detection/recovery mechanism is not comprehensive. Our aim is to perform a complete realistic evaluation of TCP losses and its impact on TCP performance.

I rely on passive analysis of real-world TCP connections to achieve the required level of detail and realism in my analysis.

link

Tool

The purpose of the tool is to provide more complete and accurate results for identifying and characterizing out-of-sequence segments than those provided by prior tools such as tcpanaly, tcpflows, LEAST, and Mystery. Our methodology classifies each segment that appears out-of-sequence (OOS) in a packet trace into one of the following categories: network reordering or TCP retransmission triggered by one of timeout, duplicate ACKs, partial ACKs, selective ACKs, or implicit recovery. Further, each retransmission is also assessed for whether it was needed or not.

Eu não direi que é qualidade de produção. Anteriormente, criei scripts perl rápidos para armazenar tuplas ip / port / ack na memória e, em seguida, relatei dados duplicados da saída pcap de varredura. Isso parece fornecer uma análise mais detalhada.

    
por 06.10.2011 / 07:41
2

Você pode querer olhar para o dropwatch utilitário .

    
por 08.02.2013 / 12:35