Снимок бенчмарков
Ручной снимок, замеренный на Apple M4 Pro с Go 1.26.
Пропускная способность
~4,3 Gbit/s
Лучший full-cycle path
Задержка
~2,6 μs
Минимальный full-cycle path
Поиск fast-path
~3,9 ns - ~15,0 ns
Плоско от 1 до 10 000
Allocs/op
0
Критический путь
Полный dataplane-цикл
Шифрование, lookup, валидация, дешифрование, handoff. Верхняя граница для ядра dataplane, а не сквозной пропускной способности VPN.
| Путь | Задержка | Пропускная способность | Allocs/op |
|---|---|---|---|
| UDPКлиент -> Сервер | ~2,7 μs | ~4,3 Gbit/s | 0 |
| UDPСервер -> Клиент | ~2,6 μs | ~4,3 Gbit/s | 0 |
| TCPКлиент -> Сервер | ~2,6 μs | ~4,3 Gbit/s | 0 |
| TCPСервер -> Клиент | ~2,6 μs | ~4,3 Gbit/s | 0 |
Масштабирование UDP по peer
Агрегированная пропускная способность при распределении работы между множеством peer, а не по одной сериализованной send-линии.
UDP Клиент -> Сервер
Агрегированная пропускная способностьПиры 1~3,4 Gbit/s
Пиры 64~34,6 Gbit/s
Пиры 1 024~34,2 Gbit/s
UDP Сервер -> Клиент
Агрегированная пропускная способностьПиры 1~3,4 Gbit/s
Пиры 64~32,5 Gbit/s
Пиры 1 024~31,9 Gbit/s
Lookup и сериализация
Lookup по Internal IP, allowed-host и route-ID остаются плоскими. Misses и сериализация на peer — основные точки давления.
| Поиск | Пиры | |||
|---|---|---|---|---|
| 1 | 100 | 1 000 | 10 000 | |
| Точный lookup по internal IP | ~8,7 ns | ~9,0 ns | ~9,3 ns | ~9,3 ns |
| Lookup по allowed-host | ~13,5 ns | ~15,0 ns | ~13,4 ns | ~14,1 ns |
| Lookup по route-ID | ~3,9 ns | ~6,4 ns | ~6,0 ns | ~6,6 ns |
| Путь промаха | ~35,4 ns | ~699 ns | ~9,0 μs | ~89,5 μs |
Egress-линия
~4,7 ns -> ~80,2 ns
От отправки без конкуренции к отправке с конкуренцией
Путь промаха
Линейно
~35,4 ns на 1 -> ~89,5 μs на 10 000