Получение статистики трафика UDP между отдельными хостами в Linux - PullRequest
1 голос
/ 08 июня 2011

Мне нужно собрать статистику сети, чтобы протестировать мое серверное приложение.Я перепробовал много инструментов linux, но ничего, что я нашел, не отвечало моим потребностям.

В основном я хочу собрать некоторую статистику UDP (bytes / time_interval, packages / time_interval, packet_loss), но только для двух конкретных хостов - например, я хочу получить статистику UDP по трафику, идущему от IP_A: PORT_A к IP_B: PORT_B.

Такие инструменты, как tcpdump / wireshark, могут легко выгружать такой трафик, но у меня возникают проблемы с получением статистики, такой как временная скорость (также смотрите данные о пропускной способности), а статистика системы linux дает мне номер для всего трафика.

Было бы лучше получить вывод текста, чтобы можно было его проанализировать.

У кого-нибудь есть идеи, как мне этого добиться?

Заранее спасибо, Харнен

1 Ответ

0 голосов
/ 08 июня 2011

Вот учебник для библиотеки libpcap:

Чтобы определить потерянные пакеты, ваша программа, вероятно, захочет работать с парой журналов,и убедитесь, что UDP-сообщения источника находятся в месте назначения.Хороший способ сделать это состоит в том, чтобы поддерживать окно пакетов равным количеству времени, установленному для вашего тайм-аута, загружать все пакеты в окно, сортировать их, а затем искать все пакеты в желаемом периоде времени, отмечая ихкак найдено, как вы идете.После того, как вы исчерпали минуту, удалите половину этой минуты из буфера, загрузите следующие тридцать секунд и выполните повторную сортировку.

Если у вас много (миллионы? Вероятно, должны профилировать это) пакетов, этоможет быть быстрее , чтобы использовать то, что называется Подсчет фильтра Блума , так что вы можете определить, находится ли ваш пакет "вероятно" там очень быстро.

Если вы нене ищите советов по программированию, перенесите ваш вопрос на сервер.

...