Расчет использования сети с сервера

272
termcap

Я пытаюсь вычислить% использования сети для сервера в моей сети для любого трафика 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%

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

2

1 ответ на вопрос

1
Spiff

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

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

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

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

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

спасибо за подробный ответ, это было действительно полезно, я думаю, что вы правы, я только собираю длину IP-пакета. Правильно ли я считаю, что эта длина содержит длину заголовка UDP, а также фактические передаваемые данные UDP? termcap 8 лет назад 0
В дополнение к вышеприведенному комментарию и построению на основе вашего ответа, будет ли правильно, если для вышеупомянутого образца захвата, который сообщает длину заголовка IP 84 байтов, общий размер пакета в проводе будет termcap 8 лет назад 0
- будет 304 байта + 84 байта = 388 байтов. Эти 305 байтов включают упомянутые вами служебные данные, а также 32 байта каждый для MAC-адресов источника, назначения и 4 байта для типа Ethernet. termcap 8 лет назад 0