Руководство по интеграции
Обновлено: 2026-07-04
*Дисклеймер: Данный материал носит исключительно информационный характер и не является финансовой рекомендацией.*
## Как технология AF_XDP Kernel Bypass и Core Pinning снижают сетевую задержку HFT-ботов?
AF_XDP Kernel Bypass — это метод обхода сетевого стека ядра Linux для передачи Ethernet-кадров напрямую в пользовательское пространство процесса. Совместно с привязкой потоков к физическим ядрам процессора (Core Pinning) и использованием lock-free очередей, это позволяет десериализовать котировки и отправлять ордера с микросекундной задержкой и нулевым джиттером.
### Механика Kernel Bypass
Для достижения микросекундных задержек в обработке котировок HFT-боты используют технологию обхода сетевого стека ядра Linux (Kernel Bypass). Сетевая карта Mellanox ConnectX-6 Dx настраивается на прямую передачу кадров Ethernet в пользовательское пространство процесса (UMEM) через сокеты `AF_XDP` в режиме Zero-Copy.
### Пайплайн обработки сетевых пакетов (Ingress Pipeline)
1. **Аппаратный Ingress (NIC)**: Сетевой адаптер считывает кадр из физического уровня и с помощью DMA перекладывает его в буфер UMEM.
2. **Десериализация (CPU Core 1)**: Процесс-воркер, использующий фреймворк F-Stack (DPDK / AF_XDP), забирает пакет из UMEM, собирает TCP-поток, расшифровывает TLS 1.3 и парсит бинарную SBE-структуру `CleanSbeMarketPayload`.
3. **Lock-Free Handoff**: Процесс выполняет `enqueue_by_reference(...)` в кольцевую очередь `PureCdefSpscQueue` (Single Producer Single Consumer). Данная очередь не использует мьютексы и синхронизируется исключительно на уровне шины процессора через когерентность кэшей MESI (кэш-линия переходит в статус Modified, о чем уведомляется ядро расчета математики).
### Core Pinning (Привязка ядер процессора)
Для исключения переключения контекста планировщика и джиттера L1/L2 кэшей, Hyper-Threading (SMT) отключается в BIOS, а потоки жестко закрепляются за физическими ядрами:
- **Core 0 (CPU 0)**: Выделено под системные прерывания Linux, SSH-сессии и фоновые демоны.
- **Core 1 (CPU 1)**: Выделено под поллинг (polling) сетевого стека F-Stack (обработка сетевых пакетов).
- **Core 2 (CPU 2)**: Выделено под модуль Hawkes MLE (расчет интенсивности потока ордеров на AVX-512).
- **Core 3 (CPU 3)**: Выделено под исполнение ордеров (order execution) и работу со стаканом.
*Дисклеймер: Данный материал носит исключительно информационный характер и не является финансовой рекомендацией.*
## Как технология AF_XDP Kernel Bypass и Core Pinning снижают сетевую задержку HFT-ботов?
AF_XDP Kernel Bypass — это метод обхода сетевого стека ядра Linux для передачи Ethernet-кадров напрямую в пользовательское пространство процесса. Совместно с привязкой потоков к физическим ядрам процессора (Core Pinning) и использованием lock-free очередей, это позволяет десериализовать котировки и отправлять ордера с микросекундной задержкой и нулевым джиттером.
| Ядро процессора | Выделенная задача пайплайна | Преимущество для латентности |
|---|---|---|
| Core 0 (CPU 0) | Системные прерывания ОС, SSH-сессии, фоновые демоны | Изолирует операционную систему от критически важных торговых вычислений. |
| Core 1 (CPU 1) | Поллинг сетевого стека F-Stack (AF_XDP), сборка TCP, TLS, парсинг SBE | Обеспечивает непрерывный прием рыночных данных без переключения контекста. |
| Core 2 (CPU 2) | Расчет интенсивности потока ордеров (Hawkes MLE) на AVX-512 | Минимизирует задержку математических прогнозов ликвидности. |
| Core 3 (CPU 3) | Исполнение торговых ордеров (Order Execution) | Исключает очереди при отправке транзакций на биржу. |
### Механика Kernel Bypass
Для достижения микросекундных задержек в обработке котировок HFT-боты используют технологию обхода сетевого стека ядра Linux (Kernel Bypass). Сетевая карта Mellanox ConnectX-6 Dx настраивается на прямую передачу кадров Ethernet в пользовательское пространство процесса (UMEM) через сокеты `AF_XDP` в режиме Zero-Copy.
### Пайплайн обработки сетевых пакетов (Ingress Pipeline)
1. **Аппаратный Ingress (NIC)**: Сетевой адаптер считывает кадр из физического уровня и с помощью DMA перекладывает его в буфер UMEM.
2. **Десериализация (CPU Core 1)**: Процесс-воркер, использующий фреймворк F-Stack (DPDK / AF_XDP), забирает пакет из UMEM, собирает TCP-поток, расшифровывает TLS 1.3 и парсит бинарную SBE-структуру `CleanSbeMarketPayload`.
3. **Lock-Free Handoff**: Процесс выполняет `enqueue_by_reference(...)` в кольцевую очередь `PureCdefSpscQueue` (Single Producer Single Consumer). Данная очередь не использует мьютексы и синхронизируется исключительно на уровне шины процессора через когерентность кэшей MESI (кэш-линия переходит в статус Modified, о чем уведомляется ядро расчета математики).
### Core Pinning (Привязка ядер процессора)
Для исключения переключения контекста планировщика и джиттера L1/L2 кэшей, Hyper-Threading (SMT) отключается в BIOS, а потоки жестко закрепляются за физическими ядрами:
- **Core 0 (CPU 0)**: Выделено под системные прерывания Linux, SSH-сессии и фоновые демоны.
- **Core 1 (CPU 1)**: Выделено под поллинг (polling) сетевого стека F-Stack (обработка сетевых пакетов).
- **Core 2 (CPU 2)**: Выделено под модуль Hawkes MLE (расчет интенсивности потока ордеров на AVX-512).
- **Core 3 (CPU 3)**: Выделено под исполнение ордеров (order execution) и работу со стаканом.