Upload
ontico
View
107
Download
2
Embed Size (px)
Citation preview
Узкие места
➢ выделение памяти
➢ структура 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
➢ 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 “завязан” на сетевые карты
Intel
➢ с другими сетевыми картами набор функций существенно
ограничен
➢ необходимость жертвовать ядрами CPU для polling
Ограничения