
Tailscale показала план прискорення мережі: multi-queue, кешування netmap і менше пам'яті
Tailscale опублікувала огляд роботи над швидкістю своєї мережі: обробка пакетів на вузлах маршрутизації, менші витрати пам'яті на малі пакети та кешування netmap для швидшого запуску.
Tailscale опублікувала огляд роботи над швидкістю власної мережі: обробка пакетів на вузлах маршрутизації, витрати пам'яті на малі пакети та швидкість запуску, коли control plane важкодоступний.
Це продовження попередніх здобутків: пропускна здатність TCP на Linux і понад 10 Gb/s у wireguard-go на голому залізі.
Малі пакети, менші витрати пам'яті
Більшість пакетів крихітні — близько 1 KiB — але Tailscale читає даними по 64 KiB. wireguard-go пропонував лише один буфер розміром 64 KiB, тож кожен малий пакет копіювався у власний повнорозмірний буфер. На Linux і Android клієнт тепер залишає пакети там, де вони опинилися, і позначає початок і кінець кожного в межах одного великого читання — багато пакетів ділять одну алокацію; це дало приблизно 5% прискорення в багатьох конфігураціях. Скорочені черги звільнили пам'ять для subnet-маршрутизаторів і app connectors.
Multi-queue та менше копіювань
Раніше subnet-маршрутизатори, app connectors і exit nodes працювали через один упорядкований конвеєр. Звільнена пам'ять дала змогу запровадити multi-queue: кілька смуг за ресурсами машини; кожен потік тримається своєї смуги, а смуги працюють паралельно на ядрах CPU. Результат — вища сукупна пропускна здатність і менша затримка, особливо помітна для app connectors та exit nodes з короткочасними з'єднаннями.
«Це означає меншу затримку — фактично швидшу обробку даних від зчитування з мережі до передавання в ОС», — сказав Алекс Валіюшко з Tailscale.
Окрема зміна використовує writev у Linux, щоб передати кілька частин пакетних даних ядру однією операцією, а не копіювати їх спершу — менше копій, менше записів, вища пропускна здатність.
Кешування netmap для швидшого запуску
Пристрій, що приєднується до tailnet, спершу звертається до control plane і отримує карту мережі — близько 100 мілісекунд у типовій мережі. У поганому готельному чи авіаційному Wi-Fi цей зв'язок може бути повільним або й відсутнім. Кешування netmap зберігає карту на диску, тож клієнт може одразу встановлювати прямі з'єднання; за словами Tailscale, у мережах із поганою досяжністю control plane передавання даних із «теплого» кешу починалося на один-два порядки швидше.
Коли це з'явиться та інструменти тестування
Зменшення пам'яті для Linux і Android очікується в клієнті v1.104, а multi-queue для subnet-маршрутизаторів і app connectors — у пізнішому випуску. Кешування netmap доступне за feature flag і має стати типовим у v1.104. Tailscale також досліджує власний набір інструментів тестування, адже загальні інструменти не показують, чи з'єднання пряме, чи через DERP.
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.