Соединение пространства пользователя - Linux vs. FreeBSD

Фон:

Я работаю над переносом программы синтаксического анализа / манипулирования пакетами из FreeBSD на Linux (в частности, Debian - jessie). Эта программа реализует двунаправленный мост между двумя физическими интерфейсами при выполнении анализа / манипуляции до операций TX.

В FreeBSD это приложение использовало Pcap для RX/TX. В Linux до сих пор я тестировал с Pcap, PACKET_MMAP (используя TPACKET_V2) и Vanilla PF_RING.

Результаты теста:

Используя ту же аппаратную и лабораторную среду, я наблюдал следующие (приблизительные) результаты пропускной способности нескольких тестов, выполненных с помощью iperf:

  • Мост ядра FreeBSD: 880 Мбит / с
  • Мост FreeBSD Pcap (пространство пользователя): 700 Мбит / с
  • Мост ядра Debian: 880 Мбит / с
  • Мост Debian Pcap (пространство пользователя): 120 Кб / с
  • Мост Debian Vanilla PF_RING (пространство пользователя): 980 Кбит / с
  • Мост Debian PACKET_MMAP (пространство пользователя): 480 Кбит / с

Мысли и вопрос:

Скорости пространства пользователя Debian кажутся мне нелепыми. Они непригодны для использования - и я подозреваю, что что-то упустил. Есть ли системная опция, которую мне нужно включить ("иди быстро", смеется)?

Или это так, как это происходит с мостовым пространством пользователя Linux?

Редактировать / Обновить

У меня есть длительное подозрение, что существуют административные ограничения, влияющие на тесты Debian. Я ищу системную документацию (что-то / что-нибудь) безрезультатно. Любые идеи о том, что могло бы ограничить это?

1 ответ

Решение

Неясные вопросы находят неясные ответы...

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

Я решил проблемы со скоростью и нашел ту же пропускную способность, что и системы FreeBSD, используя ethtool для настройки оптимизаций на двух моих мостовых интерфейсах:

ethtool -K eth1 gso off gro off tso off ufo off lro off

После вышеописанного на обоих интерфейсах PF_RING и PACKET_MMAP соответствовали скорости моста ядра (что является максимальной скоростью для моей тестовой лаборатории), а тесты Pcap дали около 300 Мбит / с.

Другие вопросы по тегам