20
DPDK: архитектура и принцип работы Александр Джуринский

DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)

  • Upload
    ontico

  • View
    107

  • Download
    2

Embed Size (px)

Citation preview

DPDK: архитектура и принцип работы

Александр Джуринский

Обработка сетевых пакетов в Linux

Узкие места

➢ выделение памяти

➢ структура sk_buff

➢ переключение контекстов (kernel space ⇔ userspace)

Как обойти узкие места?

➢ New API: сочетание техник прерывания и поллинга

➢ Interrupt Moderation используется в современных сетевых картах: снижаем количество прерываний, разгружаем процессор

Другой вариант: пойти в обход

Kernel Bypass

➢ исключить сетевой стек с его “узкими местами” из обработки пакетов

➢ “научить” приложение общаться с сетевой картой напрямую

➢ решения: netmap, PF_RING, DPDK

➢ разработан Intel

➢ Open Source, распространяется по лицензии BSD

➢ поддерживает большинство распространённых

моделей сетевых карт

➢ поддержка Open vSwitch “из коробки”

Как это работает?

DPDK: основные компоненты

➢ EAL (Environment Abstraction Layer) — обеспечивает работу DPDK в

конкретном аппаратном окружении

➢ rte_ring — управление очередями

➢ rte_mempool — управление памятью (malloc)

➢ rte_mbuf — управление буферами (аналог sk_buff)

DPDK как набор техник

➢ батч-обработка

➢ векторизация

➢ prefetching

➢ polling

➢ HugePages

➢ thread affinity

➢ zero-copy

DPDK ≠ сетевой стек

...но предпринимаются попытки реализации TCP/IP-стека на базе

DPDK:

➢ rumptcp : https://github.com/rumpkernel/drv-netif-dpdk

➢ mtcp: https://github.com/eunyoung14/mtcp

➢ dpdk-ANS: https://github.com/opendp/dpdk-ans

Пример интеграции: DPDK+OVS

https://github.com/01org/dpdk-ovs

Программный коммутатор Open vSwitch

➢ Облачные сервисы

○ Vscale

○ VPC

○ OpenStack

➢ Полисинг

Почему это интересно нам?

➢ Intel Xeon E5 v3/v5, 64 ГБ DDR4

➢ Сетевая карта Intel X520-DA

➢ Ubuntu 16.04, Kernel 4.4

➢ KVM/QEMU, libvirt

Наш эксперимент

Наши тесты➢ Тест 1

○ VM_1 => OVS => VM_2

➢ Тест2

○ VM_1 => OVS-DPDK=> VM_2

➢ Тест 3

○ Хост => OVS => VM

➢ Тест 4

○ Хост => OVS-DPDK => VM

Результаты тестовМежду виртуальными машинами: без DPDK и c DPDK, iperf3

Результаты тестовС физического хоста на виртуальную машину: без DPDK и с DPDK, iperf3

➢ большой функционал DPDK “завязан” на сетевые карты

Intel

➢ с другими сетевыми картами набор функций существенно

ограничен

➢ необходимость жертвовать ядрами CPU для polling

Ограничения

Спасибо за внимание!

Вопросы ?!