11
votes

Comment surveiller les valeurs CWND et SSTHESHESH pour une connexion TCP?

Je souhaite vérifier ces valeurs lorsqu'un paquet est envoyé ou reçu sur une connexion de socket. Y a-t-il un outil existant qui fait cela?


0 commentaires

4 Réponses :


0
votes

Selon ce que vous entendez par "moniteur", Wireshark pourrait faire le tour.

Voir aussi le / Proc / Net / TCP Documentation . (Non, je ne le suis pas vraiment, vous devrez peut-être creuser dans les sources du noyau pour le donner un sens ...)


3 commentaires

Pouvez-vous s'il vous plaît élaborer comment puis-je obtenir ces valeurs de Wireshark?


Wireshark a une interface graphique. Vous le dire quels paquets vous êtes intéressé (par numéro de port, adresse IP, interface réseau, quoi que ce soit), cliquez sur "Démarrer", déplacez du trafic sur votre connexion TCP, cliquez sur "STOP", puis WireRark disséquera le protocole. Il déterminera quels paquets font partie de la connexion TCP, et avec chaque ACK, il inclura la CWND. (Mais pas le Ssthresh ... Je ne sais pas comment surveiller celui-là, car il est interne à la pile de réseau)


Pour trouver le SSTHESH, il suffit de regarder un graphique pour la position où les arrêts de démarrage lente et l'évitement de congestion (AI) commencent. La jonction entre les deux phases est la SSTHESH. Il n'y a pas de moyen automatisé de le trouver.



0
votes

J'ai trouvé un outil capable de surveiller ces valeurs. http://www.umic-mesh.net/downloads/flowgrind.html


0 commentaires

9
votes

Je suis en désaccord avec la réponse donnée par Nemo. WireShark (ainsi que BUDKCAP, TCPDump) ne sont pas capables de mesurer / de connecter la CWND et la SSTHESH, car ce ne sont pas sur le terrain dans les datagrammes TCP, mais ne sont que des valeurs qui résident à l'intérieur du noyau en tant que structures de noyau. Les données de contrôle de la congestion ne sont pas transmises sur le fil, seules les données de contrôle de flux sont.

Pour surveiller ces valeurs, implémentez get_info et échantillonnez périodiquement les données, ou jetez un coup d'œil au module tcp_probe Kernel (voir: http://www.linuxfoundation.org/collaborate/workGroupes/networking/tcptesting )

Mise à jour: J'ai créé une version correcte du module TCP_Probe qui peut être utilisée pour surveiller la CWND et SSTHREAD, voir https://github.com/dynalon/tcp_probe_fixed


0 commentaires

10
votes

Le SS utilitaire générera cette sortie pour les sockets:

# ss -i
State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port   
ESTAB      0      2054000          1.2.3.4:34069          1.2.3.5:ssh     
     htcp wscale:11,11 rto:247 rtt:47/0.75 ato:40 cwnd:1542 ssthresh:742 send 380.1Mbps rcv_rtt:14 rcv_space:64240


2 commentaires

Y a-t-il une documentation sur ce que chacune de ces colonnes signifie? E.G., 'Envoyer' est 347.6kbps, que signifie-t-il?


Qu'en est-il des macos alors? J'ai essayé lsof -tfqs -itcp -scp: établi , mais ne peut pas trouver la valeur CWND / SSTHESHESH dans le résultat.