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

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

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

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

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

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

 # netstat -s | grep retransmitted 368644 segments retransmitted 

Вы можете использовать grep для segments чтобы get более подробный view:

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

Для более глубокого погружения вы, вероятно, захотите запустить Wireshark.

В Wireshark установите ваш filter на tcp.analysis.retransmission чтобы уviewеть повторные передачи по streamу.

Это лучший вариант, который я могу придумать.

Другие тупики исследованы:

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

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

Конечно, если вы хотите viewеть рядом с сетевым трафиком, просто вkeyите 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 

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

 $ /sbin/ss -ti 

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

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

методология

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

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

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

Инструмент

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

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

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

  • Apache не обрабатывает новые requestы без достижения значения max_client. С несколькими детьми бездействия
  • Пересылка linux-terminalа из последовательного порта в TCP с помощью socat
  • nginx застрял и установил CLOSE_WAIT при использовании worker_processes> 1
  • В чем разница между сокетами Unix и сокетами TCP / IP?
  • Время соединения SSL-соединения во time рукопожатия (повторная передача обмена с клиентом)
  • tcp ретрансляция через curl и netcat
  • Почему я вижу IP-пакет размером 2960, который превышает настройку MTU 1500 на interfaceе и проходит?
  • Использование openvswitch с mpls и tcp
  • svchost.exe с использованием протокола tcp https на локальном порту 50721?
  • Уточнение о размере и задержках windows TCP в Linux
  • Имитировать медленное connection между двумя serverными машинами ubuntu
  • Давайте будем гением компьютера.