Вопрос: Как пассивно следить за потерей пакетов tcp? (Linux)


Как я могу пассивно отслеживать потерю пакетов при подключении TCP к / с моей машины?

В принципе, мне нужен инструмент, который сидит в фоновом режиме и наблюдает за TCP ack / nak / re-transmits, чтобы генерировать отчет, в котором одноранговые IP-адреса «кажутся» очень тяжелыми.

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

Являются ли эти данные просто сидящими в стеке Linux TCP?


53
2017-10-05 23:55


Источник




Ответы:


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

# netstat -s | grep retransmitted
     368644 segments retransmitted

Вы можете использовать grep для 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, похоже, не поддерживают повторные передачи
  • stracing netstat -s показал, что это просто печать /proc/net/netstat 
  • столбец 9 в / proc / net / tcp выглядел многообещающим, но, к сожалению, он, похоже, не используется.

42
2017-10-06 01:59



и вы можете контролировать потерянные пакеты с # watch 'netstat -s | grep retansmited ' - none
Это будет показывать только исходящие проблемы. «netstat -s | grep segment» выглядит более разумным для меня. - akostadinov
Если вы управляете сетью разумного размера, то я бы рекомендовал использовать пробоотборник для проводов для непрерывного мониторинга - pastmon.sourceforge.net/Wikka-1.1.6.5/wikka.php?wakka=HomePage - symcbean
По какой-то причине это написано retransmited для меня (Ubuntu Server 14). - sudo
какова хорошая ставка для повторных передач против отправленных или полученных? - abourget


Эти статистические данные находятся в / 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

10
2017-11-28 16:18





Вы можете использовать ss инструмент для получения подробной статистики TCP:

$ /sbin/ss -ti

В Debian используйте apt-get install iproute для получения двоичного кода.


5
2018-04-06 19:41



Обратите внимание, что человек, задающий вопрос, искал инструмент, который мог бы наблюдать за выходом. Хотя некоторые из упомянутых выше команд не работают таким образом, все вышеперечисленные ответы включали по крайней мере один метод для этого. - Andrew B
@AndrewB: вы можете сделать watch ss -ti, - John Zwinck


Похоже, что некоторые ребята из Университета Северной Каролины (UNC) создали утилиту для расследования именно этого:

методология

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

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

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

Инструмент

Целью этого инструмента является предоставление более полной и точной   результаты для определения и характеристики сегментов вне очереди   чем те, которые были предоставлены с помощью предыдущих инструментов, таких как tcpanaly, tcpflows, LEAST,   и Тайна. Наша методология классифицирует каждый сегмент, который появляется   out-of-sequence (OOS) в трассировке пакета в одно из следующих   категории: переупорядочение сети или повторная передача TCP, вызванная одним   тайм-аута, дублирующих ACK, частичных ACK, выборочных ACK или неявных   восстановление. Кроме того, каждая повторная передача также оценивается по   был нужен или нет.

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


2
2017-10-06 07:41





Вы можете посмотреть на dropwatch утилита.


2
2018-02-08 12:35



Он доступен только как пакет rpm: / - Ricky Robinson