Comment puis-je surveiller passivement la perte de paquets sur les connexions TCP vers/depuis ma machine?
Fondamentalement, je voudrais un outil qui se trouve en arrière-plan et regarde TCP ack/nak/re-transmits pour générer un rapport sur lequel les adresses IP des pairs "semblent" subir de lourdes pertes.
La plupart des questions comme celle-ci que je trouve sur SF suggèrent d'utiliser des outils comme iperf. Mais, je dois surveiller les connexions vers/depuis une application réelle sur ma machine.
Est-ce que ces données sont juste là dans la pile Linux TCP?
Pour avoir une idée générale de l'ampleur de votre problème netstat -s
suivra votre nombre total de retransmissions.
# netstat -s | grep retransmitted
368644 segments retransmitted
Vous pouvez également utiliser grep pour segments
pour obtenir 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.retransmission
pour voir les retransmissions par flux.
C'est la meilleure option que je puisse trouver.
Autres impasses explorées:
netstat -s
a montré qu'il ne faisait qu'imprimer /proc/net/netstat
Ces statistiques sont dans/proc/net/netstat et collectl
les surveillera 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 côte à côte le trafic réseau, incluez simplement n
avec -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
Vous pouvez utiliser l'outil ss
pour obtenir des statistiques détaillées TCP:
$ /sbin/ss -ti
Sous Debian, utilisez apt-get install iproute
pour obtenir le binaire.
Il semble que certains gars de l'Université de Caroline du Nord (UNC) aient construit un utilitaire pour enquêter exactement sur ceci:
Méthodologie
TCP est un exemple classique d'un 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 perte de TCP n'est pas complète. Notre objectif est de réaliser une évaluation réaliste complète des pertes de TCP et de son impact sur les performances de TCP.
Je me fie à l'analyse passive des connexions réelles TCP connexions 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
Le but de l'outil est de fournir des résultats plus complets et plus précis pour l'identification et la caractérisation des segments hors séquence que ceux fournis par les outils antérieurs tels que tcpanaly, tcpflows, LEAST et Mystery. Notre méthodologie classe chaque segment qui apparaît hors séquence (OOS) dans une trace de paquet dans l'une des catégories suivantes: réorganisation du réseau ou TCP retransmission déclenchée par l'un des délais d'expiration, ACK en double, partiel ACK, ACK sélectifs ou récupération implicite De plus, 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'ai créé des scripts Perl rapides pour stocker les tuples ip/port/ack en mémoire, puis signaler les données dupliquées provenant de la sortie de l'analyse PCAP, il semble que cela fournit une analyse plus approfondie.
Vous voudrez peut-être regarder l'utilitaire dropwatch
.
Apparemment, le bon vieux sar peut recueillir la retransmission (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 le processeur, la mémoire, les E/S disque, etc. .
Vous devrez peut-être installer un package: sysstat et activer ce type particulier de statistiques avec le commutateur -S SNMP, sur RHEL/OracleLinux, c'est configurer dans /etc/cron.d/sysstat où/usr/lib64/sa/sa1 est appelé toutes les 5 minutes par défaut, mais cela peut également être réglé.
Pour l'analyse de ces données, utilisez: