Come monitorare passivamente la perdita di pacchetti tcp? (Linux)


61

Come posso monitorare passivamente la perdita di pacchetti sulle connessioni TCP da / verso la mia macchina?

Fondamentalmente, mi piacerebbe uno strumento che si trova in background e guarda TCP ack / nak / ritrasmettere per generare un rapporto su quali indirizzi IP peer "sembrano" subire gravi perdite.

Molte domande come questa che trovo su SF suggeriscono di usare strumenti come iperf. Tuttavia, devo monitorare le connessioni a / da un'applicazione reale sulla mia macchina.

Questi dati si trovano solo nello stack TCP Linux?

Risposte:


50

Per un senso generale della portata del tuo problema netstat -sseguirà il tuo numero totale di ritrasmissioni.

# netstat -s | grep retransmitted
     368644 segments retransmitted

Puoi anche grep per segmentsavere una visione più dettagliata:

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

Per un'immersione più profonda, probabilmente vorrai accendere Wireshark.

In Wireshark imposta il filtro su tcp.analysis.retransmissionper vedere le ritrasmissioni per flusso.

Questa è l'opzione migliore che posso inventare.

Altri vicoli ciechi esplorati:

  • Gli strumenti netfilter / conntrack non sembrano mantenere ritrasmissioni
  • stracing ha netstat -sdimostrato che si tratta solo di stampa/proc/net/netstat
  • la colonna 9 in / proc / net / tcp sembrava promettente, ma sfortunatamente sembra essere inutilizzata.

e puoi monitorare i pacchetti persi con # watch 'netstat -s | grep ritrasmesso "
nessuno il

Ciò mostrerebbe solo problemi in uscita. "netstat -s | grep segmenti" mi sembra più ragionevole.
Akostadinov,

1
Se gestisci una rete di dimensioni ragionevoli, consiglierei pastmon su WireShark per un monitoraggio continuo - pastmon.sourceforge.net/Wikka-1.1.6.5/wikka.php?wakka=HomePage
symcbean

4
Per qualche motivo, è scritto retransmitedper me (Ubuntu Server 14).
sudo,

1
qual è una buona tariffa per ritrasmissioni vs inviate o ricevute?
abourget,

12

Queste statistiche sono in / proc / net / netstat e collectlle monitoreranno per te in modo interattivo o scritte su disco per la successiva riproduzione:

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

Ovviamente, se desideri vedere fianco a fianco il traffico di rete, includi semplicemente ncon -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

7

È possibile utilizzare lo ssstrumento per ottenere statistiche TCP dettagliate:

$ /sbin/ss -ti

Sotto Debian, usa apt-get install iprouteper ottenere il binario.


Si noti che la persona che ha posto la domanda era alla ricerca di uno strumento di cui potesse osservare l'output. Mentre alcuni dei comandi menzionati finora non funzionano in questo modo, tutte le risposte votate includevano almeno un metodo per farlo.
Andrew B,

2
@AndrewB: puoi farlo watch ss -ti.
John Zwinck,

3

Sembra che alcuni ragazzi dell'Università della Carolina del Nord (UNC) abbiano creato un'utilità per indagare esattamente su questo:

Metodologia

TCP è un classico esempio di protocollo legacy soggetto a modifiche. Sfortunatamente, la valutazione di qualcosa di fondamentale come il meccanismo di rilevamento / recupero delle perdite di TCP non è completa. Il nostro obiettivo è eseguire una valutazione realistica completa delle perdite TCP e del suo impatto sulle prestazioni TCP.

Mi affido all'analisi passiva delle connessioni TCP del mondo reale per raggiungere il livello richiesto di dettagli e realismo nella mia analisi.

http://www.cs.unc.edu/~jasleen/Research-passivetcp.htm#Tool

Attrezzo

Lo scopo dello strumento è fornire risultati più completi e accurati per l'identificazione e la caratterizzazione di segmenti fuori sequenza rispetto a quelli forniti da strumenti precedenti come tcpanaly, tcpflows, LEAST e Mystery. La nostra metodologia classifica ogni segmento che appare fuori sequenza (OOS) in una traccia di pacchetti in una delle seguenti categorie: riordino della rete o ritrasmissione TCP attivato da uno di timeout, ACK duplicati, ACK parziali, ACK selettivi o recupero implicito. Inoltre, ogni ritrasmissione viene anche valutata se fosse necessaria o meno.

Non dirò che è la qualità della produzione. In precedenza avevo creato script perl rapidi per memorizzare le tuple ip / port / ack in memoria e quindi riferire su dati duplicati dall'output di pcap di scansione, questo sembra fornire un'analisi più approfondita.



0

Apparentemente un buon vecchio sar può raccogliere ritrasmissioni (e altre statistiche tcp), insieme a tutti i tipi di altre statistiche di sistema che potrebbero anche essere interessanti se si studia un problema come CPU, memoria, I / O del disco, ecc.

Potrebbe essere necessario installare un pacchetto: sysstat e abilitare questo particolare tipo di statistiche con lo switch -S SNMP, su RHEL / OracleLinux questo è configurato in /etc/cron.d/sysstat dove viene invocato / usr / lib64 / sa / sa1 ogni 5 minuti per impostazione predefinita, ma può essere regolato anche.

Per l'analisi di questi dati utilizzare:

  • sar (riga di comando, basato su testo)
  • sadf crea SVG secondo http://sebastien.godard.pagesperso-orange.fr/matrix.html
  • ksar (che può tracciare bei grafici e gira su Java - ci sono diversi cloni tra cui scegliere su sf.net e github se ricordo bene)
  • http://www.sargraph.com (basato su PHP, con il quale non ho esperienza con nulla - badate, l'applicazione, non il linguaggio di programmazione 😉)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.