Назад
Tailscale показала план прискорення мережі: multi-queue, кешування netmap і менше пам'яті
SiTech AI Team2 წთ. საკითხავი

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.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.