Tcp paket kaybını pasif olarak nasıl izleyebilirim? (Linux)


61

Makineme gelen / gelen TCP bağlantılarında paket kaybını pasif olarak nasıl izleyebilirim?

Temel olarak, arkaplanda oturan ve eş IP adreslerinin ağır bir kayıpla karşı karşıya kaldığı bir rapor oluşturmak için TCP ack / nak / re-transmits izleyen bir araç istiyorum.

SF'de bulduğum bu gibi soruların çoğu, iperf gibi araçları kullanmanızı önerir. Ancak, makinemdeki gerçek bir uygulamaya yapılan bağlantıyı izlemem gerekiyor.

Bu veriler orada sadece Linux TCP yığında mı oturuyor?

Yanıtlar:


50

Genel olarak, sorununuzun ölçeği, netstat -stoplam geri gönderim sayınızı izleyecektir.

# netstat -s | grep retransmitted
     368644 segments retransmitted

segmentsDaha ayrıntılı bir görünüm elde etmek için grep yapabilirsiniz :

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

Daha derin bir dalış için, muhtemelen Wireshark'ı ateşlemek isteyeceksiniz.

Wireshark'ta filtrenizi tcp.analysis.retransmissionakış yoluyla yeniden iletimleri görecek şekilde ayarlayın .

Bulabildiğim en iyi seçenek bu.

Keşfedilen diğer çıkmazlar:

  • netfilter / conntrack araçları yeniden gönderimi koruyor gibi görünmüyor
  • stracing netstat -ssadece baskı olduğunu gösterdi/proc/net/netstat
  • / proc / net / tcp sütununda 9 umut verici görünüyordu, ancak ne yazık ki kullanılmamış gibi görünüyor.

ve # watch 'netstat -s | ile kaybolan paketleri izleyebilirsiniz grep retransmited '
hiçbiri

Bu sadece giden sorunları gösterirdi. "netstat -s | grep segmentleri" benim için daha makul görünüyor.
akostadinov

1
Makul bir büyüklükte bir ağ yönetiyorsanız, sürekli izleme için wireshark üzerine pastırmayı tavsiye ederim - pastmon.sourceforge.net/Wikka-1.1.6.5/wikka.php?wakka=HomePage
symcbean

4
Nedense retransmitedbenim için yazıldığından (Ubuntu Server 14).
sudo

1
Gönderilen veya alınan yeniden iletimler için iyi bir oran nedir?
abourget

12

Bu istatistikler / proc / net / netstat dizinindedir ve collectletkileşimli olarak izler veya daha sonra oynatmak için diske yazılır:

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

Daha sonra görülecek yan yana ağ trafiği ile isterseniz Elbette, sadece şunlardır nile -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

ssAyrıntılı TCP istatistiklerini almak için aracı kullanabilirsiniz :

$ /sbin/ss -ti

Debian altında apt-get install iproute, ikili dosyayı almak için kullan .


Soruyu soran kişinin çıktılarını izleyebilecekleri bir araç aradığını unutmayın. Şu ana kadar bahsedilen komutların bazıları bu şekilde işlemezken, cevaplanan cevapların tümü, bunu yapmak için en az bir yöntem içermekteydi.
Andrew B,

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

3

Görünüşe göre Kuzey Carolina Üniversitesi'ndeki (UNC) bazı çocuklar tam olarak bu konuyu araştırmak için bir yardımcı program oluşturdular:

metodoloji

TCP, değişikliklere tabi tutulan eski bir protokolün klasik bir örneğidir. Ne yazık ki, TCP'nin kayıp tespit / kurtarma mekanizması kadar temel bir şeyin değerlendirilmesi kapsamlı değildir. Amacımız, TCP kayıplarının gerçekçi bir değerlendirmesini ve bunun TCP performansına etkisini değerlendirmektir.

Analizimde gereken detay ve gerçekçilik seviyesini elde etmek için gerçek dünya TCP bağlantılarının pasif analizine güveniyorum.

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

araç

Aracın amacı, sıra dışı bölümleri tanımlamak ve karakterize etmek için tcpanaly, tcpflows, LEAST ve Mystery gibi önceki araçlardan sağlananlardan daha tam ve doğru sonuçlar sağlamaktır. Metodolojimiz, bir paket izinde sıra dışı görünen (OOS) her bir segmenti aşağıdaki kategorilerden birine sınıflandırır: zaman aşımı, yinelenen ACK'lar, kısmi ACK'lar, seçici ACK'lar veya örtük kurtarma işlemlerinden biri tarafından tetiklenen ağ yeniden sıralama veya TCP yeniden iletimi. Ayrıca, her yeniden iletim ayrıca gerekli olup olmadığına göre değerlendirilir.

Üretim kalitesi olduğunu söylemeyeceğim. Önceden ip / port / ack tuple'ları bellekte saklamak için hızlı perl komut dosyaları oluşturdum ve ardından taranan pcap çıktısından kopyalanan verileri rapor ettim, bu daha ayrıntılı analiz sağlıyor gibi görünüyor.



0

Görünüşe göre iyi yaşlı sar , cpu, bellek, disk G / Ç, vb. Gibi bir sorunu araştırırsanız ilginç olabilecek her türlü diğer sistem istatistiğinin yanı sıra yeniden iletimi (ve diğer tcp istatistiklerini) toplayabilir.

Bir paket kurmanız gerekebilir: sysstat ve -S SNMP anahtarıyla bu belirli tür istatistikleri etkinleştirin, RHEL / OracleLinux'ta bu, /etc/cron.d/sysstat içinde / usr / lib64 / sa / sa1'in çağrıldığı şekilde yapılandırılır. varsayılan olarak her 5 dakikada bir, ancak bu da ayarlanabilir.

Bu veri kullanımının analizi için:

  • sar (komut satırı, metin tabanlı)
  • sadf, http://sebastien.godard.pagesperso-orange.fr/matrix.html uyarınca SVG oluşturur
  • ksar (güzel grafikler çizebilen ve Java üzerinde çalışan - doğru bir şekilde hatırlıyorsam sf.net ve github'da seçim yapabileceğiniz birkaç klon var)
  • http://www.sargraph.com (PHP'ye dayanarak, onunla hiçbir deneyime sahip değilim - aklınıza gelsin, uygulama, programlama dili değil)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.