Возникли проблемы при достижении пропускной способности UDP 1 Гбит - PullRequest
8 голосов
/ 19 сентября 2008

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

Ответы [ 5 ]

7 голосов
/ 20 сентября 2008

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

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

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

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

3 голосов
/ 01 сентября 2010

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

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

3 голосов
/ 19 сентября 2008

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

3 голосов
/ 19 сентября 2008

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

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

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

0 голосов
/ 19 сентября 2008

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

...