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

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

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

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

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

53

5 Відповіді

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

# netstat -s | grep retransmitted
     368644 segments retransmitted

Щоб отримати докладніший перегляд, можна скористатися сегментами :

# 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, здається, не зберігають повторні передачі
  • stracing netstat -s показав, що він просто друкує /proc/net/netstat
  • стовпець 9 в/proc/net/tcp виглядав багатообіцяючим, але він, на жаль, не використовується.
42
додано
Якщо ви керуєте мережею розумного розміру, то я б рекомендував pastmon over wireshark для безперервного моніторингу - pastmon.sourceforge.net/Wikka-1.1.6.5/wikka.php?wakka=HomePa‌
Це буде показувати лише проблеми, пов'язані з вихідними даними. "сегменти netstat -s | grep" для мене більш розумні.
додано Автор nluigi, джерело
netstat не потребує кореня для цього, BTW. /proc/net/netstat доступний для читання.
додано Автор MauMen, джерело
і ви можете стежити за втраченими пакетами за допомогою netstat -s | grep retransmited '
додано Автор Salman, джерело
що хороша ставка для ретрансляції vs відправлена ​​або отримана?
додано Автор ABC, джерело
З якоїсь причини для мене це написано retransmited (Ubuntu Server 14).
додано Автор SamuelH, джерело

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

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

Звичайно, якщо ви хочете бачити, поряд з мережним трафіком, просто вкажіть n з -s :

[[email protected] ~]# 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
10
додано

Інструмент ss можна використовувати для отримання детальної статистики TCP:

$ /sbin/ss -ti

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

5
додано
@AndrewB: Ви можете зробити watch ss -ti .
додано Автор lenybernard, джерело
Зверніть увагу, що людина, яка задала запитання, шукала інструмент, за допомогою якого вони могли спостерігати за виходом. Незважаючи на те, що деякі з згаданих команд не працюють таким чином, всі відповіді, включені до цього запиту, включали принаймні один метод для цього.
додано Автор Yuriy Y. Yermilov, джерело

Ви можете переглянути утиліта dropwatch .

2
додано
Він доступний лише як пакет rpm: /
додано Автор Luis A. Giullfo, джерело

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

Методологія

     

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

     

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

http://www.cs.unc.edu/~jasleen/ Research-passivetcp.htm # Інструмент

Інструмент

     

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

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

2
додано