2012-04-08 4 views
1

У меня есть приложение, имеющее TCP-клиент и сервер. Я настраивал клиент и сервер на отдельных машинах. Теперь я хочу измерить, сколько потребляемой полосы пропускания (байты, отправленные и полученные в течение одного запуска приложения). Я обнаружил, что wirehark - один из таких инструментов, который может помочь мне получить эту статистику. Однако wirehark, похоже, зависит от GUI. То, что я хотел, было способом автоматизации измерения и отчетности по этой статистике. Мне не нужна информация об отдельных пакетах, захваченных wirehark. Мне не нужна эта информация. Есть ли способ запустить wirehark, так что все, что он делает, это записать в файл, общее количество байтов, отправленных и полученных между двумя хостами, пока приложение работает на обоих концах?Как автоматизировать измерение использования полосы пропускания между двумя хостами

Кроме того, есть ли лучший способ захватить эту статистику? Через netstat или/proc/dev/net или любой другой инструмент?

У меня на компьютере есть ubuntu 10.04 или более поздняя версия.

ответ

1

Bro является подходящим инструментом для измерения статистики, ориентированной на соединение. Вы можете записывать след вашего сообщения приложения или анализировать ее в режиме реального времени:

bro -r <trace> 
bro -i <interface> 

После этого, взгляните на журнал подключения (conn.log) в том же каталоге на сумму байтов, переданных и полученных приложением , В частности, вас интересует размер полезной нагрузки TCP, который conn.log предоставляет через столбцы orig_bytes и resp_bytes. Ниже приведен пример:

bro-cut id.orig_h id.resp_h conn_state orig_bytes resp_bytes < conn.log | head 

, который дает следующий результат:

192.168.1.102 192.168.1.1  SF  301  300 
192.168.1.103 192.168.1.255 S0  350  0 
192.168.1.102 192.168.1.255 S0  350  0 
192.168.1.103 192.168.1.255 S0  560  0 
192.168.1.102 192.168.1.255 S0  348  0 
192.168.1.104 192.168.1.255 S0  350  0 
192.168.1.104 192.168.1.255 S0  549  0 
192.168.1.103 192.168.1.1  SF  303  300 
192.168.1.102 192.168.1.255 S0  -  - 
192.168.1.104 192.168.1.1  SF  311  300 

Каждая строка представляет одно соединение, порты транспортного уровня опущены. Последние два столбца представляют байты, отправленные инициатором (первый столбец) и ответчиком (второй столбец). Столбец conn_state представляет состояние соединения. Пожалуйста, обратитесь к documentation за все возможные значения полей. Некоторые важные значения:

  • S0: Попытка подключения видно, нет ответа.
  • S1: Соединение установлено, не завершено.
  • SF: Нормальное создание и прекращение. Обратите внимание, что это тот же символ, что и для состояния S1. Вы можете сказать, что они разделены, потому что для S1 в сумме не будет байтов, в то время как для SF будет.
  • REJ: попытка подключения отклоняется.
+0

Я подробно рассмотрю документацию, но являются ли последние два столбца вашего моментального снимка, представляющие сетевые байты, отправленные и возвращенные соответственно между хостами, перечисленными в этой строке? – AnkurVj

+0

Исправить. Каждый поток представляет собой одно соединение/поток. (Я уточнил ответ.) – mavam

+0

Не могли бы вы рассказать мне, как я могу остановить захват пакетов после того, как я начну использовать bro -i eth0. В настоящее время я использую Ctrl + c, чтобы остановить процесс и надеяться, что вся статистика будет записана в файл. – AnkurVj

Смежные вопросы