Назад | Перейти на главную страницу

Скорость потери пакетов с iperf и tcpdump

Я проверил качество связи линии с iperf. Измеренная скорость (порт UDP 9005) составила 96 Мбит / с, и это нормально, потому что оба сервера подключены к Интернету со скоростью 100 Мбит / с. С другой стороны, коэффициент потери дейтаграмм составил 3,3–3,7%, что я счел слишком большим. Используя протокол высокоскоростной передачи, я записал пакеты с обеих сторон с помощью tcpdump. Затем я подсчитал потерю пакетов - в среднем 0,25%. У кого-нибудь есть объяснение, откуда эта большая разница? Какая, на ваш взгляд, допустимая потеря пакетов?

Я испытал значительную потерю данных с iPerf в режиме UDP из-за того, что ЦП не мог справиться с этим. Почему-то iPerf с UDP кажется много более интенсивно использует процессор, чем iPerf с TCP. Испытываете ли вы тот же процент потерь, когда устанавливаете iPerf вдвое меньше?

Чтобы ответить на ваш второй вопрос о том, насколько допустима потеря пакетов, это действительно зависит от того, какое приложение вы запускаете, сколько у вас трафика. На самом деле, не должно быть никаких потерь, если вы находитесь ниже лимита пропускной способности. В большинстве случаев я, вероятно, не стал бы сильно жаловаться на 0,25%, но это все равно большая потеря, если вы работаете с действительно высокими темпами.

[РЕДАКТИРОВАТЬ 1] Некоторые другие мысли, которые у меня были по этой теме:

  1. Попробуйте увеличить ставки iPerf. Если где-то есть системная проблема, вполне вероятно, что вы испытаете один и тот же процент убытков независимо от того, какой процент. Если ваше оборудование ограничено, или ваш провайдер выполняет какие-то КРАСНЫЙ, то, вероятно, не будет потерь до определенного уровня, а затем убытки будут постепенно ухудшаться по мере того, как вы поднимаетесь выше.
  2. Выполните измерения сеанса iPerf с помощью tcpdump, чтобы убедиться, что ваши тесты точны.
  3. Попробуйте iPerf с TCP. Это не будет сообщать о потере, но если вы получаете потерю, соединение не сможет масштабироваться очень высоко. Поскольку на это также влияет задержка, убедитесь, что тестируете конечную точку с минимальной задержкой.
  4. В зависимости от того, какое оборудование у вас внутри вашего соединения, убедитесь, что вы находитесь как можно ближе к нему. Например. если у вас есть несколько коммутаторов между вашей тестовой системой и граничным маршрутизатором, перейдите к напрямую подключенному коммутатору.
  5. Если у вас есть управляемый коммутатор, проверьте статистику по нему, чтобы убедиться, что потери не происходит. Я встречал несколько более дешевых коммутаторов, которые начинают отключаться, когда вы приближаетесь к 100 Мбит / с UDP-трафика на них (хотя в основном старые и дешевые неуправляемые коммутаторы).
  6. Попробуйте одновременно использовать iPerfs с двух разных клиентов на два разных хоста, чтобы быть уверенным, что ограничение не связано с процессором или дешевой локальной сетевой картой.

Использовали ли вы tcpdump для проверки потери пакетов при использовании iPerf, чтобы убедиться, что потеря пакетов, вычисленная с помощью tcpdump, соответствует iperf?

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

Что ж, с TCP есть механизмы для максимального использования одного потока, с UDP их нет. Таким образом, каждое приложение должно создавать свои собственные механизмы, поэтому, вероятно, каждое приложение использует свой подход для этого. Возможно, Iperf допустит потерю большего количества пакетов, потому что пытается достичь максимальной доступной полосы пропускания, не заботясь о том, получена информация или нет. Другое приложение, вероятно, попытается не потерять много пакетов и снизит скорость передачи пакетов до доступной пропускной способности в соединении.

iperf автоматически отбрасывает пакеты, поступающие не по порядку с UDP? Возможно, вы заметили небольшой джиттер в соединении.