2

Я пытаюсь вычислить% использования сети для сервера в моей сети для любого трафика snmp (входящего или выходящего). Я выполнил следующие шаги, кто-то может указать, если я ошибся в процессе?

Шаг 1: запустите tcpdump на одну минуту, чтобы перехватить все пакеты с портом src или dst как 161(snmp) и отправить их в текстовый файл

Шаг 2: извлеките длину из захваченных пакетов, пример строки ниже

11:09:59.602526 IP (tos 0x0, ttl 252, id 21267, offset 0, flags [none], proto UDP (17), **length 84**)
myremotedevice.snmp > mylocalserver.32802:  { SNMPv1 C=public { GetResponse(37) R=<redected>  E:redected=redected } } 

Шаг 3: Добавьте все длины из файла, скажем, общая длина = 4505407 байт

Шаг 4: Выполните Y =(X * 8)/60, чтобы получить биты в секунду.

Y = (4505407 * 8) / 60
Y = 600720.93

Шаг 5: У меня гигабитная сеть, поэтому, чтобы найти сетевую утилиту, я выполняю следующее:% util = (Y/1000000000) * 100

%util = (600720.93/1000000000) * 100
%util = 0.06%

Таким образом, я могу заключить, что использование сети в секунду для трафика SNMP для моего сервера составляет 0,06%

Итак, вопрос в том, является ли приведенный выше расчет точным? Спасибо!

1 ответ1

1

Нет, этот результат примерно вдвое больше, чем должен быть.

Поскольку ваш фильтр был либо портом источника ИЛИ назначения, равным 161, то это означает, что вы заинтересованы как во входящем, так и в исходящем трафике SNMP.

Гигабитный Ethernet всегда коммутируется, что означает, что он всегда дуплексный. Таким образом, он имеет 1 гигабит / с входящей пропускной способности плюс 1 гигабит / с исходящей пропускной способности, что в сумме составляет 2 гигабит / с суммарной пропускной способности. Таким образом, вы должны были разделить на 2 миллиарда вместо 1 миллиарда.

Кроме этого, ваш расчет, вероятно, достаточно близко для большинства целей. Если вы хотите быть еще более точным, вы могли бы учитывать время, которое занимают обязательные межпакетные промежутки, преамбулы физического уровня и разделители начала кадра. Когда Gigabit Ethernet отправляет биты, он отправляет их со скоростью 1 000 000 000 бит в секунду, но не отправляет полезные биты постоянно (из-за упомянутых выше обязательных пропусков и преамбул). Эти вещи не отображаются в том, что захватывает tcpdump, поэтому, чтобы быть сверхточным, вы должны помнить, чтобы учитывать их. Если я правильно помню, промежуток составляет 96 битов, префикс + разделитель - 64 бита, в общей сложности 160 "невидимых" битов на пакет.

Отредактировано для добавления: Вы также можете дважды проверить, что поле длины, которое вы используете из этого вывода tcpdump, является полной длиной кадра Ethernet, а не только длиной дейтаграммы IP или UDP.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .