Перейти к основному содержимому

Снимок бенчмарков

Ручной снимок, замеренный на Apple M4 Pro с Go 1.26.

Пропускная способность
~4.3 Gbit/s
Лучший full-cycle path
Задержка
~2.6 μs
Минимальный full-cycle path
Fast-path lookup
~4-15 ns
Плоско до 10k peer
Allocs/op
0
Hot path

Полный dataplane-цикл

Шифрование, lookup, валидация, дешифрование, handoff. Верхняя граница для ядра dataplane, а не сквозной пропускной способности VPN.

ПутьЗадержкаПропускная способностьAllocs/op
UDPКлиент -> Сервер~2.7 μs~4.3 Gbit/s0
UDPСервер -> Клиент~2.6 μs~4.3 Gbit/s0
TCPКлиент -> Сервер~2.6 μs~4.3 Gbit/s0
TCPСервер -> Клиент~2.6 μs~4.3 Gbit/s0

Масштабирование UDP по peer

Агрегированная пропускная способность при распределении работы между множеством peer, а не по одной сериализованной send-линии.

UDP Клиент -> Сервер

Агрегированная пропускная способность
{count, plural, one {# пир} few {# пира} many {# пиров} other {# пира}}~3.4 Gbit/s
{count, plural, one {# пир} few {# пира} many {# пиров} other {# пира}}~34.6 Gbit/s
{count, plural, one {# пир} few {# пира} many {# пиров} other {# пира}}~34.2 Gbit/s

UDP Сервер -> Клиент

Агрегированная пропускная способность
{count, plural, one {# пир} few {# пира} many {# пиров} other {# пира}}~3.4 Gbit/s
{count, plural, one {# пир} few {# пира} many {# пиров} other {# пира}}~32.5 Gbit/s
{count, plural, one {# пир} few {# пира} many {# пиров} other {# пира}}~31.9 Gbit/s

Lookup и сериализация

Lookup по Internal IP, allowed-host и route-ID остаются плоскими. Misses и сериализация на peer — основные точки давления.

Lookup{count, plural, one {# пир} few {# пира} many {# пиров} other {# пира}}{count, plural, one {# пир} few {# пира} many {# пиров} other {# пира}}{count, plural, one {# пир} few {# пира} many {# пиров} other {# пира}}{count, plural, one {# пир} few {# пира} many {# пиров} other {# пира}}
Точный lookup по internal IP~8.7 ns~9.0 ns~9.3 ns~9.3 ns
Lookup по allowed host~13.5 ns~14.9 ns~13.4 ns~14.1 ns
Lookup по Route ID~3.9 ns~6.4 ns~6.0 ns~6.6 ns
Miss path~35.4 ns~699 ns~9.0 μs~89.5 μs
Egress-линия
~4.7 ns -> ~80 ns
От uncontended до contended send
Miss path
Линейно
~35 нс на 1 peer -> ~89.5 μs на 10k peer