Отслеживание пропускной способности и задержки в Linux

Отслеживание пропускной способности и задержки в Linux

Я пытаюсь написать простой скрипт, который может обнаружить провалы в сетевом трафике (как пропускной способности, так и задержке в обоих направлениях) между 2 произвольными хостами в моей сети с течением времени. Есть ли инструмент для этого?

При необходимости я планирую написать несколько клиент-серверных скриптов на bash для проведения этого тестирования с использованием nc(netcat), но если уже существующее решение отражает то, что я пытаюсь сделать, пожалуйста, дайте мне знать.

Сначала я определю, сколько данных я могу отправить за 1 секунду между моими произвольными хостами. Назовем это «полезной нагрузкой». Первоначальные тесты показывают, что полезная нагрузка составляет ~50 МБ.

Затем я выполню следующее:

  1. Клиент отправляет полезную нагрузку на сервер.
  2. Получив всю полезную нагрузку, сервер немедленно ответит, отправив полезную нагрузку клиенту.
  3. Когда клиент получит всю полезную нагрузку, он будет спать 30 секунд. Перейти к 1.

Сделав это, я получу следующие данные (двунаправленная пропускная способность и задержка):

  1. Записав timeвыполнение ncот клиента к серверу в (1), я получу пропускную способность, отправляющую данные от клиента к серверу.
  2. Записав timeвыполнение ncот сервера к клиенту в (2), я получу полосу пропускания, отправляющую данные от сервера к клиенту.
  3. Каким-то образом я определю задержку пакета, возможно, используя инструмент мониторинга или сравнивая временные метки между первым пакетом полезной нагрузки, отправленным источником, и первым пакетом полезной нагрузки, полученным в пункте назначения.

решение1

iPerf — хороший инструмент для тестирования производительности. Вместо того, чтобы писать скрипт для мониторинга нагрузки, как вы предлагаете, я бы посмотрел на Nagios (и интегрировал PNP4Nagios, который будет сортировать уведомления для вас и предоставлять вам графики производительности с течением времени).

Мне интересно, насколько практично перемещать данные между хостами таким образом на постоянной основе в долгосрочной перспективе, поскольку это тратит полосу пропускания, которая в противном случае была бы доступна. Не лучше ли было бы отслеживать реальную пропускную способность канала и сопоставлять ее с задержкой и потерей пакетов, чтобы понять, получаете ли вы то, за что платите, когда вам это нужно? (Я «наносил удар» интернет-провайдерам, которые — играя в самую старую игру в мире интернет-провайдеров — пытались настаивать на том, что проблема не в их сети, используя это, особенно при мониторинге нескольких точек)

Я отмечаю, что хотя задержка, потеря пакетов и пропускная способность не полностью зависят друг от друга, между этими факторами существует (для канала с известными/контрактными/ожидаемыми характеристиками).

решение2

Вам нужно проверить,iperfделает то, что вам нужно.

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

Связанный контент