Знакомство с программным Ethernet Fast Path на отладочной плате P1020RDB

Не смотря на то, что процессоры архитектуры ARM начинают активно завоевывать рынок систем широкополосной связи и сетевых технологий, процессоры PowerPC все еще занимают значительную долю рынка благодаря таким производителям, как Freescale.

В рамках данной статьи мы познакомимся с техническими возможностями процессора Freescale P1020 в части обработки Ethernet-траффика. А также проверим производительность IP-маршрутизации на отладочной плате P1020RDB (внешний вид см. выше).

Референс-плата (RDB) QorIQ P1020 — это многофункциональная платформа, которая может использоваться в самых разных типах устройств. Доступен 1 ГБ памяти DDR3 SDRAM (без буферизации), а также 16 Мб NOR flash и 32 Мб NAND flash (с возможностью загрузки с флэш-памяти NOR или NAND). Плата поддерживает шесть гигабитных портов через SGMII PHY, RGMII PHY и встроенный 4-портовый свитч, а также 2-порта USB On-The-Go (OTG), четыре FXS-порта и один FXO-порт (через реле).

Подробнее о P1020RDB можно узнать на сайте ]]>freescale.com]]>.

Для ускорения обработки сетевого траффика Freescale предлагает использовать технологию ASF (Application Specific Fastpath) для Linux kernel.

Реализация ASF представляет собой динамически загружаемые модули ядра Linux, которые можно подключать к стеку Linux во время работы. После подключения в стек Linux пакеты перехватываются c драйвера сетевого устройства Linux (Ethernet) на модуль канала передачи данных ASF.

ASF рассчитан на наиболее распространенные приложения для передачи данных.

Основные области применения

ASF используется для ускорения пропускной способности:

  1. IPv4 Firewall + NAT / NAPT Forwarding
  2. IPv6 Firewall Forwarding
  3. IPv4 + IPv6 IPSec (ESP & AH) Forwarding
  4. Поддержка QoS

Схема реализации ASF

ASF интегрируется с различными модулями управления сетями Linux для извлечения информации для обработки данных. На рисунке ниже показано, как модуль ASF вписывается в общую систему на типовой архитектуре ПО сетевого процессора.

На плате P1020RDB установлено ПО на: QorIO-SDK-1.7-20141218-yocto

Для работы ASF необходимо включить в ядре от Freescale соответствующую опцию:

Для тестирования пропускной способности будем использовать сетевой анализатор: 

Настойка тестового сценария

Тестировать производительность будем на типовой задаче IP-маршрутизации согласно RFC2544 – Benchmarking Methodology for Network Interconnect Devices.

Поток данных с первого порта анализатора посылается через плату P1020RDB на второй порт. Полученный траффик отражается и посылается обратно через P1020RDB на первый порт анализатора. Таким образом, во время теста через P1020RDB протекают два разнонаправленных потока данных (Full Duplex). Для того чтобы выполнять полнодуплексную маршрутизацию 1 Гбит/с траффика, процессор должен успевать обрабатывать 2 Гбит данных в секунду.

Конфигурация P1020RDB

Настройка адресов IPv4 и масок на интерфейсах eth0 and eth1:

Включение маршрутизации на плате:

Загрузка ASF-модулей ядра:

Увеличение числа возможных потоков:

Установка таймаута UDP равным 9000 с (для теста производительности):

Установка параметров групповой обработки кадров:

Установка размеров Rx и Tx колец:

Назначение ядра для обработки прерываний:

Выключение PTP:

Настройка сетевого анализатора:

  • Порт 1 настраивается в режим передачи UDP-потока на скорости 1 Гбит/с
  • Порт 2 настраивается в режим петли (Mirror mode)

Запускаем тест пропускной способности.

Выводы:

Application Specific Fastpath на P1020RDB работает, т.е. при выполнении IP forwarding на скорости 956,569 Мбит/с (кадр 1500 байт) загрузка процессора была на уровне 2% (по top).

Стоит отметить, что при обработке траффика с помощью ASF он не проходит через стек Linux, это можно видеть по отсутствию активности на интерфейсе при запуске tcpdump.