Comment surveiller passivement les pertes de paquets TCP? (Linux)


61

Comment puis-je surveiller passivement la perte de paquets sur les connexions TCP à / de ma machine?

Fondamentalement, je voudrais un outil qui reste à l’arrière-plan et qui surveille TCP ack / nak / retransmet afin de générer un rapport sur les adresses IP homologues qui semblent "subir" de lourdes pertes.

La plupart des questions de SF que je trouve suggèrent d'utiliser des outils comme iperf. Cependant, je dois surveiller les connexions depuis / vers une application réelle sur ma machine.

Est-ce que ces données se trouvent juste là dans la pile Linux TCP?

Réponses:


50

Pour avoir une idée générale de l’ampleur de votre problème, vous netstat -spourrez suivre le nombre total de retransmissions.

# netstat -s | grep retransmitted
     368644 segments retransmitted

Vous pouvez également segmentsdemander une vue plus détaillée:

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

Pour une plongée plus profonde, vous voudrez probablement lancer Wireshark.

Dans Wireshark, définissez votre filtre sur tcp.analysis.retransmissionpour afficher les retransmissions par flux.

C'est la meilleure option que je puisse proposer.

Autres impasses explorées:

  • les outils netfilter / conntrack ne semblent pas conserver les retransmissions
  • le calage a netstat -smontré qu'il est juste l'impression/proc/net/netstat
  • La colonne 9 de / proc / net / tcp semblait prometteuse, mais elle semble malheureusement ne pas être utilisée.

et vous pouvez surveiller les paquets perdus avec # watch 'netstat -s | grep retransmis '
aucun

Cela ne montrerait que les problèmes sortants. "netstat -s | grep segments" me semble plus raisonnable.
akostadinov

1
Si vous gérez un réseau de taille raisonnable, je vous recommande donc pastmon plutôt que Wharska pour une surveillance continue - pastmon.sourceforge.net/Wikka-1.1.6.5/wikka.php?wakka=HomePage
symcbean

4
Pour une raison quelconque, cela s’écrit retransmitedpour moi (Ubuntu Server 14).
sudo

1
Quel est le bon taux pour les retransmissions par rapport aux messages envoyés ou reçus?
Abourget

12

Ces statistiques sont dans / proc / net / netstat et collectlles surveilleront pour vous de manière interactive ou écrites sur le disque pour une lecture ultérieure:

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

Bien sûr, si vous souhaitez voir le trafic réseau côte à côte, incluez-le simplement navec -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

Vous pouvez utiliser cet ssoutil pour obtenir des statistiques TCP détaillées:

$ /sbin/ss -ti

Sous Debian, utilisez apt-get install iproutepour obtenir le binaire.


Notez que la personne qui a posé la question cherchait un outil dont elle pourrait surveiller le résultat. Bien que certaines des commandes mentionnées jusqu'à présent ne fonctionnent pas de cette manière, toutes les réponses votées incluaient au moins une méthode pour le faire.
Andrew B

2
@ AndrewB: Vous pouvez faire watch ss -ti.
John Zwinck

3

Il semblerait que certains membres de l'Université de Caroline du Nord (UNC) aient créé un utilitaire pour étudier exactement ceci:

Méthodologie

TCP est un exemple classique de protocole hérité soumis à des modifications. Malheureusement, l'évaluation de quelque chose d'aussi fondamental que le mécanisme de détection / récupération de pertes de TCP n'est pas exhaustive. Notre objectif est d'effectuer une évaluation complète et réaliste des pertes en TCP et de son impact sur les performances du TCP.

Je compte sur l'analyse passive de connexions TCP réelles pour atteindre le niveau de détail et de réalisme requis dans mon analyse.

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

Outil

L'objectif de l'outil est de fournir des résultats plus complets et précis pour l'identification et la caractérisation de segments hors séquence que ceux fournis par des outils antérieurs tels que tcpanaly, tcpflows, LEAST et Mystery. Notre méthodologie classe chaque segment apparaissant hors séquence (OOS) dans une trace de paquet dans l'une des catégories suivantes: réorganisation du réseau ou retransmission TCP déclenchée par un délai d'expiration, ACK dupliqué, ACK partiel, ACK sélectif ou récupération implicite. En outre, chaque retransmission est également évaluée pour déterminer si elle était nécessaire ou non.

Je ne dirai pas que c'est la qualité de la production. Auparavant, j'avais créé des scripts Perl rapides pour stocker les n-uplets ip / port / ack en mémoire, puis pour générer des rapports sur les données dupliquées à partir de l'analyse de la sortie pcap.



0

Apparemment, un bon vieil ancien SAR peut rassembler des retransmissions (et d’autres statistiques TCP), ainsi que toutes sortes d’autres statistiques système qui pourraient également être intéressantes si vous étudiez un problème comme un processeur, de la mémoire, des E / S de disque, etc.

Vous devrez peut-être installer un paquet: sysstat et activer ce type de statistiques avec le commutateur -S SNMP. Sous RHEL / OracleLinux, cela est configuré dans /etc/cron.d/sysstat où / usr / lib64 / sa / sa1 est appelé. toutes les 5 minutes par défaut, mais cela peut aussi être réglé.

Pour l'analyse de ces données, utilisez:

  • sar (ligne de commande, texte)
  • sadf crée SVG selon http://sebastien.godard.pagesperso-orange.fr/matrix.html
  • ksar (qui peut tracer de beaux graphiques et fonctionne sur Java - il existe plusieurs clones parmi lesquels choisir sur sf.net et github si je me souviens bien)
  • http://www.sargraph.com (basé sur PHP, avec lequel je n'ai aucune expérience - que ce soit l'application, pas le langage de programmation)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.