Я пытаюсь написать простой скрипт, который может обнаружить провалы в сетевом трафике (как пропускной способности, так и задержке в обоих направлениях) между 2 произвольными хостами в моей сети с течением времени. Есть ли инструмент для этого?
При необходимости я планирую написать несколько клиент-серверных скриптов на bash для проведения этого тестирования с использованием nc
(netcat), но если уже существующее решение отражает то, что я пытаюсь сделать, пожалуйста, дайте мне знать.
Сначала я определю, сколько данных я могу отправить за 1 секунду между моими произвольными хостами. Назовем это «полезной нагрузкой». Первоначальные тесты показывают, что полезная нагрузка составляет ~50 МБ.
Затем я выполню следующее:
- Клиент отправляет полезную нагрузку на сервер.
- Получив всю полезную нагрузку, сервер немедленно ответит, отправив полезную нагрузку клиенту.
- Когда клиент получит всю полезную нагрузку, он будет спать 30 секунд. Перейти к 1.
Сделав это, я получу следующие данные (двунаправленная пропускная способность и задержка):
- Записав
time
выполнениеnc
от клиента к серверу в (1), я получу пропускную способность, отправляющую данные от клиента к серверу. - Записав
time
выполнениеnc
от сервера к клиенту в (2), я получу полосу пропускания, отправляющую данные от сервера к клиенту. - Каким-то образом я определю задержку пакета, возможно, используя инструмент мониторинга или сравнивая временные метки между первым пакетом полезной нагрузки, отправленным источником, и первым пакетом полезной нагрузки, полученным в пункте назначения.
решение1
iPerf — хороший инструмент для тестирования производительности. Вместо того, чтобы писать скрипт для мониторинга нагрузки, как вы предлагаете, я бы посмотрел на Nagios (и интегрировал PNP4Nagios, который будет сортировать уведомления для вас и предоставлять вам графики производительности с течением времени).
Мне интересно, насколько практично перемещать данные между хостами таким образом на постоянной основе в долгосрочной перспективе, поскольку это тратит полосу пропускания, которая в противном случае была бы доступна. Не лучше ли было бы отслеживать реальную пропускную способность канала и сопоставлять ее с задержкой и потерей пакетов, чтобы понять, получаете ли вы то, за что платите, когда вам это нужно? (Я «наносил удар» интернет-провайдерам, которые — играя в самую старую игру в мире интернет-провайдеров — пытались настаивать на том, что проблема не в их сети, используя это, особенно при мониторинге нескольких точек)
Я отмечаю, что хотя задержка, потеря пакетов и пропускная способность не полностью зависят друг от друга, между этими факторами существует (для канала с известными/контрактными/ожидаемыми характеристиками).
решение2
Вам нужно проверить,iperfделает то, что вам нужно.
Исходя из моего понимания Ваших вопросов, я думаю, что так и должно быть.