1

Вопрос по linux – Как автоматизировать измерение использования полосы пропускания между двумя хостами

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

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

На обеих моих машинах установлена Ubuntu 10.04 или более поздняя версия.

  • Посмотри наBroControl, Интерактивная командная оболочка Bro. После входа в оболочку черезbroctlВы можете использовать командыstart а такжеstop, Увидетьdoc/quickstart.rst для того, как сделать базовую автономную настройку.

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

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

    от AnkurVj
  • Правильный. Каждый поток представляет одно соединение / поток. (Я уточнил ответ.)

    от
  • 1

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

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

    После этого посмотрите журнал подключений (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 представляет состояние соединения. Пожалуйста, обратитесь кдокументация для всех возможных значений поля. Некоторые важные ценности:

    S0: Connection attempt seen, no reply. S1: Connection established, not terminated. SF: Normal establishment and termination. Note that this is the same symbol as for state S1. You can tell the two apart because for S1 there will not be any byte counts in the summary, while for SF there will be. REJ: Connection attempt rejected.