Введение в технологию BPF - экология и история

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

историческая причина

Рисунок 1: Рост размера кода ядра Linux

Что общего у DPDK, PF_RING и BPF

Разделите плоскость данных сети

  • Цена расширения сетевых функций — жертвовать производительностью
  • Они преодолевают ограничение сложности ядра — обход ядра.
  • Отделение плоскости данных от ядра
  • Сдача в разработку пользовательского режима - DPDK, PF_RING и BPF
  • Выполнение загрузки в сетевую карту — XDP для BPF

Разница между DPDK, PF_RING и BPF: экологические цели разные

  • Независимая платформа DPDK
    • Эксклюзивный сетевой стек ядра
    • Выделенный SDK API
    • Экологичный аппаратно-ориентированный
    • Изоляция приложений и сбой механизма безопасности
  • PF_RING независимый производитель
    • независимая итальянская компания
    • Высокопроизводительная версия оплачивается отдельно
    • независимая экология

  • Экология интеграции БНФ
    • привитый к ядру
    • Интеграция в существующее аппаратное и программное обеспечение
    • Экология ориентирована на программное обеспечение и быстро развивается

ДПДК и Фонд БНФ

Ориентированность на инфраструктуру: базовое оборудование/бизнес верхнего уровня

Рисунок 2: Два фонда с разными интересами

Ежегодные мероприятия DPDK и технические стандарты

ежегодное мероприятие

  • 2010, Intel, ДПДК Xeon 1 поколения
  • 2013, 6WIND, сообщество DPDK.org
  • 2014, OvS, распределенный виртуальный коммутатор OvS-DPDK
  • 2015, ARM-версия
  • В 2017 году присоединился к Linux Foundation.
  • 2018, VMware, Программно-определяемая инфраструктура в центре обработки данных
  • 2019, Финансовые приложения (высокочастотная торговля)

технический стандарт

  • Проход через PCI, минуя эмуляцию Hyper-V, виртуальные машины проходят через PCI
  • SR-IOV в обход стека Hyper-V, виртуализация одного сетевого адаптера в несколько сквозных сетевых адаптеров.
  • FD.io/VPP, ввод-вывод данных с векторным ускорением, уменьшение джиттера I-кэша и задержки чтения
  • vDPA, ускорение пути передачи данных virtio, программная имитация плоскости управления, аппаратная реализация плоскости данных
  • Switchdev, разгружает функцию переключения ядра на аппаратное обеспечение
  • Доля вклада кода (V21.11)

Бурно развивающаяся экология БНФ

технология года

  • Статья 1992 г., Пакетные фильтры BSD
  • 1994 cBPF, реализация libpcap в tcpdump
  • 2014 eBPF, универсальная виртуальная машина
  • 2015 BCC, Средства разработки и библиотеки
  • 2016 XDP, модуль обхода сетевого ядра
  • 2017 libbpf, разработанный независимо от ядра
  • 2017 ARM/MIPS, мультиплатформенный BPF
  • 2018 BTF, формат типа межъядерной версии
  • 2019 Tail Calls и горячие обновления
  • 2020 LSM и контроль перегрузки TCP
  • 2021 Фонд eBPF

Экология продукта

  • 2017 Facebook, Балансировка нагрузки Katran в производстве
  • 2018 Cloudflare, DDoS/брандмауэр в производстве и многое другое
  • 2018 Android 9, мониторинг трафика, включая DHCPClient
  • 2018 Netronome, Agilio SmartNIC поддерживает XDP
  • 2018 DPDK, поддерживает BPF (за исключением MAP и хвостовых вызовов)
  • 2019 Google, KRSI Помощник по безопасности ядра во время выполнения (ядро V5.7)
  • 2019 Sysdig и Falco пожертвовали фонду безопасности k8s
  • 2020 Nvidia, Mellanox Smart NIC поддерживает XDP (от 3000 до 9000 иен)
  • 2020 Microsoft, Sysmon для Linux, eBPF для Windows
  • 2020 байт, высокопроизводительный сетевой ACL
  • 2020 Alibaba Cloud, ускорение и расширение на базе Cilium
  • 2021 Cilium,Сервисная сетка (无Коляска)

Экология ДПДК и БНФ

Разные для экологии и разработчиков

Категории продукта ДПДК БНФ
Безопасность Сокол/Цилий/L4drop/...
Наблюдаемость Хаббл/L3AF/Трейси/...
сеть ДПВС/ОВС/ФД.ИО/ВПП Тар
SDK С++/GO C++/Rust/GO/Питон
ядро Стек TCPF-стек/mTCP helper-API/Карты/Verfier&JIT
Экология рынка Фокус на виртуализации и совместном использовании аппаратных возможностей, продвигаемый производителями оборудования, является эволюцией технологий виртуализации, таких как vt-x/ept, в сетевом вводе-выводе. Сосредоточьтесь на разделении основных возможностей и продвижении мультиплексных облачных поставщиков, что представляет собой интеграцию эволюции облачных технологий и местной экологии.

Таблица 1: Два фонда с разными интересами

Введение в технологию BPF Анализ производительности

Сходства и различия технологий DPDK и PF_RING - похожие технологии

Рисунок 3: Принцип PF_RING

 

Рисунок 4: Структура модуля DPDK

такой же

  • Активный опрос UIO+PMD уменьшает прерывания и переключение контекста ЦП
  • UIO+mmap реализует нулевое копирование
  • HugePages сокращают промахи TLB

разница

  • PF_RING делится на обычную версию и высокопроизводительную версию ZC (нулевая копия).
  • Плата за лицензию ZC, DPDK бесплатно
  • Производительность ZC и DPDK практически одинакова.
  • API прикладного уровня ZC прост в использовании, а сложность разработки намного меньше, чем у DPDK.
  • ZC является продуктом итальянской компании ntop, с небольшим экологическим

Сетевые технические характеристики БНФ

Рисунок 5: Структура модуля BPF

7 типов точек крепления BPF, охватывающих весь процесс жизненного цикла

  1. зонд
  2. системный вызов
  3. карта носков / носки
  4. kprobe
  5. контрольные группы
  6. тк
  7. xdp

Рисунок 6: Четыре метода обработки пакетов в программе BPF XDP

Четыре метода обработки пакетов XDP

  1. Выпуск PASS для ядра
  2. DROP Discard, меньше ядра
  3. REDIRECT Переадресовать другую обработку
  4. Откат TX (для блокировки и перенаправления)

Производительность разгруженной сетевой карты XDP

Данные Netronome SmartNIC

  • XDP 3 точки подключения (сетевая карта Offload/Native перед ядром/Generic в ядре)
  • Разгрузка 1 ядра примерно в 1/3 раза быстрее, чем Native 8 ядер.
  • Native немного медленнее, чем DPDK, но производительность аналогична Stackoverflow Redhat

Рис. 7. Производительность трех режимов монтирования XDP

 Рисунок 8: Положение XDP в стеке сетевых протоколов

Протокол испытаний под давлением NAC

3 типа пропускной способности, виртуальная машина NAC WSL2

XDP_DROP Сбрасывать напрямую

❯ tcpreplay -t -i lo t.pcap
Actual: 56320 packets (46419288 bytes) sent in 1.10 seconds
Rated: 42062496.6 Bps, 336.49 Mbps, 51033.95 pps
Flows: 1091 flows, 988.60 fps, 56290 flow packets, 30 non-flow

Блокировка XDP_TX, перенаправление

Actual: 56320 packets (46419288 bytes) sent in 1.30 seconds
Rated: 35446666.1 Bps, 283.57 Mbps, 43007.04 pps
Flows: 1091 flows, 833.10 fps, 56290 flow packets, 30 non-flow

XDP_TX + map_perf блокирует и отчитывается перед приложением

Actual: 56320 packets (46419288 bytes) sent in 1.49 seconds
Rated: 31016641.1 Bps, 248.13 Mbps, 37632.14 pps
Flows: 1091 flows, 728.98 fps, 56290 flow packets, 30 non-flow

Конкурирующие продукты имеют 10 гигабитных электрических портов, количество транзакций в секунду — 1000 транзакций в секунду, максимальная пропускная способность — 500 Мбит/с, максимальное количество одновременных подключений: 1000 (шт.)

Введение в технологию BPF — пример из практики

Реальный случай облачной DDOS-атаки ботнета Mirai 3

Рисунок 9: Трафик, передаваемый по сети во время DDOS

2020.07, 654 Гбит/с, SYN-флуд и UDP-флуд 2021.08, 1,2 Тбит/с, SYN-флуд и UDP-флуд, максимальная скорость HTTP-запроса 25 миллионов раз/с, блокировка в течение 3 секунд 2021.11, 2 Тбит/с, 1-минутная атака с усилением DNS и UDP-флуд, 15 000 зомби ( ниже) почти 2 Тбит/с

Экологическая цепочка процесса смягчения последствий DDOS: полная интеграция продуктов серии BPF

Рисунок 10: Toolchain, использующий XDP для предотвращения DDOS

  • Автоматически продвигать стратегии смягчения при получении образцов и анализе атак
  • Затем выполните локальную стратегию смягчения последствий на каждом сервере,
  • L4Drop (XDP) для DDoS-атак
  • Unimog от LB (XDP)
  • Магический брандмауэр для брандмауэров (BPF xt_btf)
  • распространение и мониторинг
  • Ограничение скорости UDP (BPF SO_ATTACH_BPF)
  • ebpf_exporter для отчетов о показателях

Рис. 11. Технология обнаружения протоколов с использованием XDP при предотвращении DDOS.

Библиотека отпечатков пальцев p0f описывает характеристики заголовка TCP.

Снятие отпечатков пальцев DDOS-трафика

тип отпечатка пальца

Windows XP: 4:120+8:0:1452:65535,0   :mss,nop,nop,sok   :df,id+:0
Windows 7:  4:128:0:*     :8192,8    :mss,nop,ws,nop,sok:df,id+:0
Windows 11: 4:128+0:0:1460:mss*44,8  :mss,nop,ws,nop,sok:df,id+:0
ubuntu 14:  4:64   :0     :*:mss*10,6:mss,sok,ts,nop,ws :df,id+:0

Основанием для оценки отпечатков пальцев TCP является то, что TTL для Linux составляет 64, а для Win — 128. Количество и положение флагов различаются между Linux и Win.

4: IP version 
  64: TTL   
     0: IP options length
       *: MSS maximum segment size
         mss*10,6: TCP window size and scale
                  mss,sok,ts,nop,ws: TCP Options(sok:selective ACK permitted)
                                 df,id+: quirks(df: don't fragment)
                                        0 TCP Payload Length

Идентификация трафика при балансировке нагрузки

Опция Facebook katran TCP добавить собственный идентификатор

Рис. 12. Взаимосвязь между XDP на уровне L4 и другими сервисами во время балансировки нагрузки

  • Реализуйте механизм маршрутизации без сохранения состояния, добавив server_id в заголовок TCP.
  • Накладные расходы на обработку заголовка TCP (ЦП/память) очень малы
  • Выберите бэкэнд на основе server_id, используя вариант Maglev Hash.
  • Применимо только к интрасети без брандмауэра

Перехват точки события чтения и записи server_id

Рис. 13. События, используемые XDP для балансировки нагрузки на уровне L4

Отладка наблюдаемости

cilium pwru (пакет, ты где?)

Вызовы API для трассировки сетевых пакетов в ядре

Введение в технологию BPF — технический анализ

Механизм разработки и работы БНФ

Рисунок 14: Процесс жизненного цикла BPF (XDP и TC сети)

1. Написать и скомпилировать 2. Проверить 3. Преобразовать байт-код BPF в машинный код 4. Смонтировать и выполнить 6. Связь с системой 5. DROP/PASS/TX/REDIRECT XDP

Принцип виртуальной машины cBPF

 Рисунок 15: Декомпозиция кода в компиляторе

Рис. 16. Преобразование BPF в DAG

BPF основан на регистровой виртуальной машине, и программа окончательно преобразуется в DAG, а ядро ​​выполняет компиляцию и декомпозицию выражений фильтра в двух режимах, как показано на рисунке ниже.Модель 1: Проблема, ограничивающая производительность в большинстве случаев выполняется повторный расчет Модель 2: и т. д. По сравнению с Моделью 1 требуется только 6 логических операций для обхода всего дерева Модель 2 eBPF Модель 1 cBPF

Процесс выполнения виртуальной машины cBPF

Рисунок 17: Внутренний процесс выполнения BPF

Рисунок 18: Объяснение кода инструкции BPF

$ tcpdump TCP-порт 443 -d

Существующие проблемы BPF

Версия ядра и безопасность

  • Версия ядра поддерживает Linux > V4.18
  • XDP и его поддержка MAP
  • BTF работает на разных версиях ядра
  • Уязвимость повышения привилегий безопасности Linux V5.7~V5.8
  • CVE-2020-27194: Чтение и запись за пределами допустимого диапазона во время проверки
  • CVE-2020-8835: Логическая ошибка диапазона значений постоянной переменной при проверке
  • CVE-2020-27194: Регистрация отслеживания границ во время проверки
  • Побег из контейнера: написать руткит, изменить пространство пользователя, перехватить сетевые данные

Supongo que te gusta

Origin blog.csdn.net/zmule/article/details/126549626
Recomendado
Clasificación