Тестування пропускної здатності мережі
Iperf - утиліта для тестування пропускної здатності мережі, за рахунок генерування трафіку на сервері і прийомі його на клієнтській машині.
Так само варто звернути увагу на утиліту netperf.
Перш за все необхідні два хоста. Один з них буде генерувати трафік - клієнт, а інший - приймати пакети і вести підрахунок статистики - сервером. На обох машинах запускається один і той же виконуваний файл, але з різними ключами.
Перевірка на TCP трафіку.
iperf -c server_host
Щоб збільшити тривалість з'єднання, необхідно додати в рядок запуску клієнта параметр -t nsec, де nsec - тривалість з'єднання в секундах.
Не менш корисним буде ключик -i nsec. Тут nsec відповідає періоду (в секундах, природно), через який буде виводитися статистика.
Перевірка на UDP трафіку.
Для запуску iperf в режимі UDP необхідно додати і клієнту і серверу ключі -u.
Протокол UDP більш "тупий", що дає нам як деякі переваги, так і недоліки. Втім, для цілей тестування, недоліки знову-таки перетворюються в переваги.
Отже, що ми можемо:
* Змінювати довжину переданих пакетів
* Змінювати смугу переданого трафіку
* Працювати на односторонніх каналах
* Використовувати iperf без запуску сервера, якщо канал не наскрізний, а необхідно просто генерувати заданий трафік для навантаження
Для зміни довжини пакета використовується ключ -l length. Варто тільки пам'ятати, що при length = 0 реальна довжина Ethernet-фрейми становитиме 54 байта і робити в своїх розрахунках відповідну поправку.
Для зміни смуги трафіку використовується ключ -b bandwidth. Параметр bandwidth виражається в бітах в секунду і може містити десяткову точку і суфікси k і M, відповідні приставок кіло і мега.
При роботі на односторонніх каналах слід пам'ятати, що клієнт в таких випадках статистику не відображає і при завершенні сесії виводить повідомлення про помилку, яке можна з спокійно проігнорувати.
Запуск декількох потоків трафіку.
Ми можемо запустити кілька екземплярів клієнтів і серверів на одній і тій же машині. Для розв'язки трафіку використовується призначення різних портів за допомогою параметра -p port його значення на клієнті і відповідаю щем сервері повинно бути однаковим (за замовчуванням, він має значення 5001).
Практика показала, що при запуску декількох клієнтів на одній машині, iperf захоплює практично всі ресурси ЦП, через що в деяких потоках можливо пропажа пакетів. Тут, мабуть, є якась помилка в коді, що викликає некоректну роботу при context switching. Все вищевказане справедливо для iperf. Netperf працює під Linux цілком коректно.
У файлах допомоги ви знайдете ще параметр -S, що дозволяє встановлювати значення Type Of Servise (TOS) в IP заголовку. Змушений вас розчарувати, під Windows це не працює. (Що характерно, я не зміг встановити це поле і в стандартному ping для Windows).
Взято і трохи доопрацьовано з барлогу інженера