Як пасивно слідкувати за втратою пакету tcp? (Linux)


61

Як я можу пасивно відстежувати втрату пакету на підключеннях TCP до / від моєї машини?

В основному, я хотів би, щоб інструмент, який сидить у фоновому режимі і дивився TCP ack / nak / повторно передає, щоб генерувати звіт, за яким однорідні IP-адреси "здаються" зазнають великих втрат.

Більшість таких питань, які я знаходжу в SF, пропонують використовувати такі інструменти, як iperf. Але мені потрібно стежити за підключенням до / від реального додатка на моїй машині.

Ці дані просто сидять там у стеці Linux TCP?

Відповіді:


49

Для загального розуміння масштабів вашої проблеми netstat -sбуде відстежуватися ваша загальна кількість повторних передач.

# netstat -s | grep retransmitted
     368644 segments retransmitted

Ви можете скористатися, segmentsщоб отримати більш детальний вигляд:

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

Для глибшого занурення ви, ймовірно, захочете розпалити Wireshark.

У Wireshark встановіть свій фільтр, tcp.analysis.retransmissionщоб побачити повторні передачі за потоком.

Це найкращий варіант, який я можу придумати.

Інші досліджені тупики:

  • Інструменти netfilter / conntrack, схоже, не підтримують повторну передачу
  • напруження netstat -sпоказало, що це просто друк/proc/net/netstat
  • стовпець 9 в / proc / net / tcp виглядав багатообіцяючим, але він, на жаль, не використовується.

і ви можете контролювати втрачені пакети за допомогою # watch 'netstat -s | grep ретрансляція '
немає

Це показало б лише вихідні проблеми. "netstat -s | grep сегменти" здається мені більш розумним.
акостадінов

1
Якщо ви керуєте мережею розумних розмірів, я рекомендую виконувати пастор над провідним накопичувачем для постійного моніторингу - pastmon.sourceforge.net/Wikka-1.1.6.5/wikka.php?wakka=HomePage
symcbean

4
Чомусь це написано retransmitedдля мене (Ubuntu Server 14).
судо

1
яка хороша ставка для повторної передачі порівняно з надісланими чи отриманими?
аборгуйте

12

Ці статистичні дані знаходяться в / proc / net / netstat і collectlбудуть контролювати їх для вас або інтерактивно, або записані на диск для подальшого відтворення:

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

Звичайно, якщо ви хотіли б бачити те бік про бік з мережевим трафіком, просто включите nз -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

За допомогою ssінструменту можна отримати детальну статистику TCP:

$ /sbin/ss -ti

Під Debian використовуйте apt-get install iprouteдля отримання бінарного файлу.


Зауважте, що людина, яка задала питання, шукала інструмент, на якому вони могли б спостерігати за результатами. Хоча деякі згаданих до цього часу команд не оперують цим способом, усі відповіді, що обґрунтовано, включали принаймні один метод для цього.
Андрій Б

2
@AndrewB: Ти можеш зробити watch ss -ti.
Джон Цвінк

3

Схоже, деякі хлопці з Університету Північної Кароліни (UNC) створили утиліту для дослідження саме цього:

Методика

TCP - класичний приклад застарілого протоколу, який піддається змінам. На жаль, оцінка чогось такого принципового, як механізм виявлення / відновлення втрат TCP, не є всебічним. Наша мета - здійснити повну реалістичну оцінку втрат TCP та їх впливу на продуктивність TCP.

Я покладаюсь на пасивний аналіз реальних TCP-з'єднань для досягнення необхідного рівня деталізації та реалістичності в своєму аналізі.

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

Інструмент

Метою інструменту є надання більш повних і точних результатів для ідентифікації та характеристики сегментів поза послідовності, ніж ті, які надаються попередніми інструментами, такими як tcpanaly, tcpflows, LEAST та Mystery. Наша методологія класифікує кожен сегмент, який з'являється поза послідовністю (OOS) в трасе пакетів, в одну з наступних категорій: переупорядкування мережі або повторна передача TCP, ініційована одним тайм-аутом, дублюючі ACK, часткові ACK, вибіркові ACK, або неявне відновлення. Крім того, кожна повторна передача також оцінюється на те, потрібна вона чи ні.

Я не скажу, що це якість виробництва. Раніше я створив швидкі сценарії Perl, щоб зберігати ip / port / ack кортежі в пам'яті, а потім звітувати про дублювані дані зі сканування виводу pcap, це виглядає так, що це забезпечує більш ретельний аналіз.



0

Мабуть старий добрий сар може зібрати повторну передачу (і інші статистичні дані TCP), поряд з усіма видами інших статистичних систем , які також можуть бути цікаві , якщо дослідити проблему , як центральний процесор, пам'ять, диск введення / виведення і т.д.

Можливо, вам знадобиться встановити пакунок: sysstat та включити цей конкретний вид статистики за допомогою комутатора -S SNMP, на RHEL / OracleLinux це налаштування в /etc/cron.d/sysstat, де викликається / usr / lib64 / sa / sa1 кожні 5 хвилин за замовчуванням, але це також можна настроїти.

Для аналізу цих даних використовують:

  • sar (командний рядок, заснований на тексті)
  • Sadf створює SVG відповідно до http://sebastien.godard.pagesperso-orange.fr/matrix.html
  • ksar (який може побудувати приємні графіки та працює на Java - є кілька різних клонів, з яких можна вибрати на sf.net та github, якщо я правильно пригадую)
  • http://www.sargraph.com (на основі PHP, з яким я не маю жодного досвіду - зауважте, програма, а не мова програмування 😉)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.