Не смотря на то, что процессоры архитектуры ARM начинают активно завоевывать рынок систем широкополосной связи и сетевых технологий, процессоры PowerPC все еще занимают значительную долю рынка благодаря таким производителям, как NXP.
В рамках данной статьи мы познакомимся с техническими возможностями процессора NXP 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 можно узнать на сайте nxp.com .
Для ускорения обработки сетевого траффика NXP предлагает использовать технологию ASF (Application Specific Fastpath) для Linux kernel.
Реализация ASF представляет собой динамически загружаемые модули ядра Linux, которые можно подключать к стеку Linux во время работы. После подключения в стек Linux пакеты перехватываются c драйвера сетевого устройства Linux (Ethernet) на модуль канала передачи данных ASF.
ASF рассчитан на наиболее распространенные приложения для передачи данных.
Основные области применения
ASF используется для ускорения пропускной способности:
- IPv4 Firewall + NAT / NAPT Forwarding
- IPv6 Firewall Forwarding
- IPv4 + IPv6 IPSec (ESP & AH) Forwarding
- Поддержка QoS
Схема реализации ASF
ASF интегрируется с различными модулями управления сетями Linux для извлечения информации для обработки данных. На рисунке ниже показано, как модуль ASF вписывается в общую систему на типовой архитектуре ПО сетевого процессора.
На плате P1020RDB установлено ПО на: QorIO-SDK-1.7-20141218-yocto
Для работы ASF необходимо включить в ядре от NXP соответствующую опцию:
Для тестирования пропускной способности будем использовать сетевой анализатор:
Настойка тестового сценария
Тестировать производительность будем на типовой задаче 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.