Возникли проблемы с достижением пропускной способности UDP 1 Гбит.

StackOverflow https://stackoverflow.com/questions/99054

  •  01-07-2019
  •  | 
  •  

Вопрос

Для пакетов UDP с полезной нагрузкой менее 1470 возможно ли достичь пропускной способности 1 Гбит?Из-за небольшого размера пакета должны быть некоторые узкие места для достижения такой пропускной способности (ввод-вывод, ОС, сеть и т. д.).Я предполагаю, что драйверы и оборудование, возможно, придется настроить на малую пакетную/высокую пропускную способность.Кто-нибудь пытался успешно достичь пропускной способности 1 Гбит с небольшими пакетами UDP?

Это было полезно?

Решение

Ранее я экспериментировал с пропускной способностью гигабитных каналов на относительно стандартном компьютерном оборудовании, хотя и делал только передачу (через tcpreplay), а не udp.

Самым большим узким местом, которое я обнаружил, была просто доставка пакетов на сам сетевой адаптер.Это можно значительно улучшить, используя высокоскоростную шину для взаимодействия с вашей сетевой картой (например.сетевая карта PCI-Express с четырьмя разъемами).Но даже при этом существовал очень четкий лимит пакетов в секунду.Очевидно, что увеличение размера пакета позволит вам использовать больше пропускной способности при одновременном снижении нагрузки на процессор.

В том же духе, что и комментарий Стив Мойер, существует теоретический предел использования любой сети.В моих экспериментах (которые проводились в абсолютно тихой сети) я видел максимум примерно (и только на пределе моей памяти) 900 Мбит/с.Это было при загрузке процессора от 30 до 40%.

Более вероятно, что ограничение будет наложено аппаратным обеспечением вашей системы (т.ПК), чем ваша сетевая инфраструктура — любой стоящий сетевой коммутатор должен быть способен поддерживать полноскоростной доступ к сети с небольшими пакетами — конечно, на гораздо более высоких скоростях, с которыми может справиться большинство ПК.

Другие советы

Какой тип сетевого подключения вы используете?Если вы используете канал 1000BaseTx/Fx, не ожидайте, что пропускная способность превысит 80% при пакетах максимального размера.По мере уменьшения размера вашего пакета накладные расходы на размещение, синхронизацию, заголовки Ethernet, IP-заголовки и заголовки UDP увеличиваются по отношению к полезной нагрузке и, следовательно, еще больше снижают максимальную пропускную способность.

Проверьте документацию к используемому вами коммутатору.Коммутаторы ограничены по количеству пакетов в секунду (pps), которые они могут доставить, и часто не могут поддерживать скорость 1 ГБ/с, если вы отправляете пакеты, размер полезной нагрузки которых значительно меньше максимального.

Еще одна вещь, которую следует проверить, — выполняет ли ваша сетевая карта объединение прерываний и какое максимальное количество дескрипторов отправки/получения она может поддерживать.На этом уровне пропускной способности время обслуживания прерываний и время переключения контекста могут стать большими накладными расходами для хост-системы даже при наличии современного процессора и системы памяти.

Кроме того, если вы используете гигабитную связь по медному кабелю, наименьший сетевой кадр, который будет генерировать карта, составляет 512 байт, поэтому меньшие сообщения будут дополняться до этого размера.Это связано с требованиями к контролю несущей/обнаружению коллизий.

Я обнаружил, что аппаратное обеспечение имеет значительно более низкий предел количества пакетов в секунду, чем теоретическая пропускная способность сети.Для Broadcomm BCM5704S я достиг скорости 69 000 пакетов в секунду по сравнению с 1 488 100 пакетов в секунду на гигабитном канале.

Еще несколько цифр, которые я сообщил здесь, http://code.google.com/p/openpgm/

Здесь есть хорошее руководство по настройке параметров сети (в Linux) для достижения истинной гигабитной скорости: http://datatag.web.cern.ch/datatag/howto/tcp.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top