Facebook открыла исходный код библиотеки для балансировки нагрузки на сеть

katran

Facebook выложила в открытый доступ исходный код программной библиотеки Katran, которую компания использует для балансировки сетевой нагрузки своей инфраструктуры. Она также устраняет циклы активного ожидания при отсутствии входящих пакетов.

Katran использует идеи двух разработок в области проектирования ядра: путей сетевых данных eXpress Data Path (XDP) и виртуальной машины eBPF.

Распределение нагрузки внутри сети

Для охвата социальной сети Facebook установила по всему миру точки присутствия, выполняющие роль прокси для основных серверов компании. Всё оборудование должно работать как единое целое, равномерно распределяя огромное количество запросов. Обычно задача решается с помощью виртуального IP-адреса (VIP), с которого пакеты данных распределяются между серверами.

Процессом управляет балансировщик загрузки L4LB, направляющий пакеты так, чтобы данные от одного пользователя попали на один сервер. Его производительность крайне важна, поскольку он работает со всей входящей информацией.

Katran

Для измерения пропускной способности применяется единица pps (peak packets per second). Обычно L4LB реализуется аппаратно, с использованием ASIC и массивов FPGA, позволяющих разгрузить центральный процессор. Однако этот способ ограничивает гибкость системы.

Преимущества Katran

Новый балансировщик должен был решать четыре главные задачи:

  • возможность запускать L4LB на серверах Linux;
  • параллельная работа с другими службами для более равномерного распределения вычислительной нагрузки;
  • быстрые и безболезненные модернизация и обслуживание;
  • легкий доступ к настройкам со стандартным инструментарием.

L4LB первого поколения не соответствовал некоторым критериям. Для его запуска требовались выделенные сервера, что увеличивало нагрузку на сеть:

Katran

Схема работы первого поколения L4LB

Katran решает проблему с помощью XDP. Эта технология обеспечивает быстрый, программируемый сетевой путь передачи данных. Система не прибегает к методу обхода ядра и работает в сочетании с сетевым стеком Linux. Таким образом балансировщик запускается параллельно с другими процессами на сервере без ущерба производительности.

Виртуальная машина eBPF обеспечивает гибкий и эффективный способ взаимодействия с ядром Linux. Ее особенность — в расширении функциональности за счет запуска пользовательских программ в определенных точках ядра.

Katran

Различия между двумя поколениями L4LB

По словам разработчиков, новый L4LB поможет существенно снизить нагрузки на оборудование, увеличить быстродействие и энергоёмкость сети, а открытый исходный код Katran позволит широко использовать его возможности.

Facebook не впервые радует сообщество публикацией исходного кода: в 2016 году компания открыла доступ к коду инструмента распознавания изображений, а в 2018 — распознавания речи.

Источник: Facebook Code