Комплект разработчика плоскости данных - Data Plane Development Kit

DPDK
Data Plane Development Kit.png
Стабильный выпуск
20.11 / 27 ноября 2020 (2020-11-27)
Репозиторийhttps://git.dpdk.org/dpdk/
Написано вC
Операционная системаFreeBSD, Linux
ТипОбработка пакетов
ЛицензияBSD
Интернет сайтdpdk.org

В Комплект разработчика плоскости данных (DPDK) является Открытый исходный код программный проект под управлением Linux Foundation. Он предоставляет набор плоскость данных библиотеки и контроллер сетевого интерфейса драйверы режима опроса для разгрузки TCP обработка пакетов от Операционная система ядро к процессы работает в пространство пользователя. Эта разгрузка обеспечивает более высокую вычислительную эффективность и более высокую пропускную способность пакетов, чем это возможно при использовании обработки, управляемой прерываниями, предусмотренной в ядре.

DPDK предоставляет среду программирования для x86, РУКА, и PowerPC процессоров и обеспечивает более быструю разработку приложений для высокоскоростной передачи пакетов данных.[1][2] Он масштабируется с мобильных процессоров, таких как Intel Atom, к процессорам серверного уровня, таким как Intel Xeon. Он поддерживает архитектуры наборов команд такие как Intel, IBM МОЩНОСТЬ8, EZchip, и РУКА.[3] Он предоставляется и поддерживается с открытым исходным кодом.[4] Лицензия BSD.

Обзор

Инфраструктура DPDK создает набор библиотек для конкретных аппаратных / программных сред посредством создания уровня абстракции среды (EAL).[5][6] EAL скрывает особенности среды и предоставляет стандартный программный интерфейс для библиотек, доступных аппаратных ускорителей и других элементов оборудования и операционной системы (Linux, FreeBSD). После создания EAL для конкретной среды разработчики связываются с библиотекой для создания своих приложений. Например, EAL предоставляет основы для поддержки Linux, FreeBSD, Intel IA-32 или 64-битный, IBM МОЩНОСТЬ9 и РУКА 32- или 64-битный.

EAL также предоставляет дополнительные услуги, включая справочник времени, общие автобус функции доступа, отслеживания и отладки, а также операции с тревогой.

DPDK реализует низкие накладные расходы доведение до завершения модель для быстрой производительности уровня данных и доступа к устройствам через опрос для устранения накладных расходов на производительность прервать обработка.

DPDK также находится в процессе включения модели программирования на основе событий для быстрой обработки плоскости данных.

DPDK также включает примеры программного обеспечения, которые выделяют передовой опыт для архитектуры программного обеспечения, советы по проектированию и хранению структур данных, профилирование приложений и утилиты настройки производительности, а также советы по устранению типичных проблем с производительностью сети.

Библиотеки

DPDK включает библиотеки уровня данных и оптимизированный контроллер сетевого интерфейса (NIC) для следующих устройств:[7]

  • Диспетчер очередей реализует безблокирующие очереди
  • Диспетчер буферов предварительно выделяет буферы фиксированного размера
  • Менеджер памяти выделяет пулы объектов в памяти и использует кольцо для хранения свободных объектов; обеспечивает равномерное распределение объектов по всем DRAM каналы
  • Драйверы режима опроса (PMD) предназначены для работы без асинхронных уведомлений, что снижает накладные расходы
  • Фреймворк пакетов - набор библиотек, которые помогают разработать обработку пакетов.

Все библиотеки хранятся в каталогах dpdk / lib / librte_ *

Плагины

DPDK включает драйверы для многих типов оборудования.[8] В прошлом были некоторые дополнительные драйверы плагинов вне дерева, которые теперь считаются устаревшими.

  • librte_pmd_vmxnet3.so - обеспечивает PMD Ethernet уровень, поддерживающий паравиртуализированную сетевую карту Vmxnet3; заменен полной поддержкой VMXNET3 в собственном DPDK.
  • librte_pmd_memnic_copy.so - обеспечивает уровень виртуального PMD Ethernet через разделяемую память на основе 2 копий памяти пакетов

Окружающая среда

DPDK изначально был разработан для работы с оголенный метал режим, который в настоящее время не рекомендуется. Фактически, EAL DPDK обеспечивает поддержку Linux или FreeBSD. пользовательское приложение.

EAL может быть расширен для поддержки любых процессоров.

Экосистема

DPDK теперь является проектом с открытым исходным кодом под Linux Foundation, поддерживаемый многими компаниями. DPDK управляется Советом управляющих. Технический совет не контролирует техническую деятельность.[9] Рядом Intel, который является участником DPDK, несколько других поставщиков также поддерживают DPDK в своих продуктах, а некоторые предлагают дополнительное обучение, поддержку и профессиональные услуги. Список поставщиков, заявивших о поддержке DPDK, включает: 6ВЕТЕР,[10] ALTEN Calsoft Labs,[11][12] Advantech,[13] Парча,[14] Сети с большими коммутаторами, Radisys,[15] Привязать к,[16] Wind River,[17] и Lanner.[18]

Проекты

В pfSense 25 февраля 2015 года проект опубликовал дорожную карту, в которой разработчик Джим Томпсон объявил о переписывании ядра pfSense, включая pf, сетевой пакет пересылка и формирование, связывание ссылок, IPsec —Использование DPDK: «У нас есть цель обеспечить возможность пересылки со скоростью фильтрации пакетов не менее 14,88 млн пакетов в секунду. Это« линейная скорость »для интерфейса 10 Гбит / с. Сегодня просто нет возможности использовать FreeBSD (или Linux) стеки ядра для этого типа нагрузки ".[19]

Открыть vSwitch (OVS) имеет ограниченный набор функций, работающих с пользовательской средой, которые можно использовать для обхода обработки OVS ядра Linux. Этот вариант использования OVS с пользовательской средой DPDK обычно называется OVS-DPDK. В основном он развертывается с OpenStack Neutron, но предполагает, что многие функции и программно-определяемая сеть (SDN) возможности Openstack отключены. Например, когда используется OVS-DPDK, Neutron обеспечивает более низкий уровень безопасности, чем при использовании ядра OVS (отсутствие межсетевого экрана с отслеживанием состояния, меньшая группа безопасности).

В FD.IO Платформа VPP - это расширяемая структура, которая обеспечивает готовые функциональные возможности коммутатора / маршрутизатора производственного качества. Это версия Cisco с открытым исходным кодом. Обработка векторных пакетов (VPP): высокопроизводительный стек обработки пакетов, который может работать на стандартных ЦП и может использовать драйверы режима опроса как для сетевых адаптеров, так и для оборудования и библиотек криптографического ускорения.[20]

TRex - это генератор трафика с открытым исходным кодом, использующий DPDK. Он генерирует трафик L4-7 на основе предварительной обработки и интеллектуального воспроизведения реальных шаблонов трафика. TRex усиливает трафик как на стороне клиента, так и на стороне сервера и может масштабироваться до 200 Гбит / с с одной UCS с использованием Intel XL710. TRex также поддерживает несколько потоков, возможность изменять любое поле пакета и предоставляет статистику по потокам, задержку и джиттер.[21]

DTS (DPDK Test Suite) - это основанный на Python фреймворк для функциональных тестов и тестов. Это проект с открытым исходным кодом, стартовавший в 2014 году и размещенный на dpdk.org. Он поддерживает как программные генераторы трафика, такие как Scapy и dpdk-pktgen, так и аппаратный генератор трафика, например Иксия.[22]

DPDK поддерживает несколько СРИОВ сетевые драйверы, позволяющие создавать PF (Physical Function) и VFs, а также запускать виртуальные машины (например, QEMU Виртуальные машины) и назначить им виртуальные функции с помощью сквозной передачи PCI. [23]

DDP (динамическая персонализация устройств) - одна из новых расширенных функций, реализованных в DPDK. Это позволяет загружать прошивку для устройства динамически, без перезагрузки хоста. [24]

использованная литература

  1. ^ Саймон Стэнли,Все изменения для обработки пакетов В архиве 21 августа 2016 г. Wayback Machine, Тяжелое чтение, 2013
  2. ^ Шамус МакГилликади, Дизайн DPDK, коммутаторов и серверов продвигает экосистему SDN вперед, SearchSDN, апрель 2013 г.
  3. ^ "DPDK: комплект для разработки плоскости данных - что это такое". dpdk.org. dpdk.org. Получено 29 марта 2016.
  4. ^ Саймон Стэнли,DPDK переходит на открытый исходный код, Intel Embedded Community, май 2013 г.
  5. ^ DPDK Docs, Комплект разработчика Data Plane: Руководство программиста, Сентябрь 2017 г.
  6. ^ «Как DPDK может получить доступ к устройствам из пользовательского пространства?». CodiLime. 22 августа 2019 г.. Получено 28 августа 2019.
  7. ^ Подразделение инфраструктуры связи Intel, Обзор комплекта разработки плоскости данных, Декабрь 2012 г.
  8. ^ "Поддерживаемые NICS "
  9. ^ Технический совет DPDK
  10. ^ PRWeb, 6WIND расширяет портативное программное обеспечение обработки пакетов для поддержки пакета разработки плоскости данных, Сентябрь 2011 г.
  11. ^ Calsoft Labs предлагает профессиональные услуги и поддержку для Data Plane Development Kit, ALTEN Calsoft Labs, 18 февраля 2014 г., получено 28 октября 2014
  12. ^ https://builders.intel.com/docs/ALTEN-Calsoft-Labs-and-Intel-Improving-Network-Agility-with-Virtual-CPE.pdf
  13. ^ Журнал COTS, ATCA Blade обслуживает процессор Xeon E5-2600 В архиве 4 марта 2016 г. Wayback Machine, Июнь 2012 г.
  14. ^ Парча vRouter
  15. ^ MarketWatch, Radisys представляет первое в отрасли решение 40G для комплекта разработки плоскости данных, Сентябрь 2012 г.
  16. ^ Привязать к, Tieto предоставляет профессиональные программные услуги и поддержку для Data Plane Development Kit., Февраль 2012 г.
  17. ^ Рейтер, Wind River предоставляет поддержку и услуги для комплекта разработки плоскости данных для высокопроизводительной обработки пакетов, Май 2012 г.
  18. ^ Начните летать с комплектом разработки Data Plane Development Kit, Lanner Electronics Inc., 20 февраля 2013 г., получено 11 июля 2013
  19. ^ Томпсон, Джим (25 февраля 2015 г.). «Далее (дорожная карта для pfSense)». blog.pfsense.org. ООО `` Электрическое ограждение овец ''. Получено 21 апреля 2015.
  20. ^ "ВПП fd.io". wiki.fd.io. Linux Foundation. Получено 29 декабря 2016.
  21. ^ name = Trex "TRex". Cisco Systems. Получено 29 декабря 2016.
  22. ^ Рами Розен, Сетевое ускорение с DPDK, lwn.net, июль 2017 г.
  23. ^ Рами Розен, Сеть в пользовательском пространстве с DPDK, Linux Journal, апрель 2018 г.
  24. ^ Рами Розен, DPDK в деталях, Kernel TLV, август 2018 г.