Выпуск Cilium 1.1, сетевой системы для Linux-контейнеров, основанной на BPF
Как сообщает opennet.ru Подготовлен релиз проекта Cilium 1.1, в рамках которого при участии компаний Google, Facebook, Netflix и Red Hat развивается система для обеспечения сетевого взаимодействия и применения политик безопасности для изолированных контейнеров и процессов. Для разграничения сетевого доступа в Cilium применяются еBPF (Berkeley Packet Filter) и XDP (eXpress Data Path). Код компонентов, работающих на уровне пользователя, написаны на языке Go и распространяются под лицензией Apache 2.0. Загружаемые в ядро Linux сценарии BPF доступны под лицензией GPLv2.
Основу Cilium составляет фоновый процесс, который работает в пространстве пользователя и выполняет работу по генерированию и компилированию BPF-программ, а также взаимодействию с runtime, обеспечивающим работу контейнеров. В форме BPF-программ реализованы системы обеспечения связности контейнеров, интеграции с сетевой подсистемой (физические и виртуальные сети, VXLAN, Geneve) и балансировки нагрузки. Фоновый процесс дополняют управляющий cli-интерфейс, репозиторий правил доступа, система мониторинга и модули интеграции с поддержкой Kubernetes, Mesos и Docker. Более подробно про особенности Cilium можно прочитать в тексте анонса первого выпуска проекта.
Основные новшества:
- Возможность интеграции с платформой управления микросервисами Istio, которая обеспечивает распределение нагрузки между микросервисами, организует аутентификацию, разграничение доступа и защищенное взаимодействие между микросервисами, превращая набор запущенных в разных контейнерах микросервисов в приложение, слаженно работающее как единое целое;
- Поддержка дополнительных runtime для обеспечения работы контейнеров - cri-o и containerd. Имеющийся runtime определяется автоматически, но может быть явно выбран при помощи опции "--container-runtime";
- Улучшение поддержки Kubernetes: поддержка дополнительных политик безопасности Kubernetes 1.11 (podSelector и namespaceSelector), возможность сопоставления данных аккаунтинга, возможность разделения локального трафика (например, проверок мониторинга) и трафика к внешним узлам через SNAT;
- Возможность определения комбинированных правил с номером сетевого порта (IP+L4) и названием протокола (L7), применяемых только вместе с проверкой по IP/CIDR;
- Оптимизация производительности системы отслеживания соединений: Возможность отбрасывания записей отслеживания соединений, если соединения подпадает под правило блокировки трафика. Более агрессивная чистка таблиц отслеживания соединений для не TCP-трафика;
- Повышение производительности механизмов идентификации и обработки MTU;
- Поддержка дополнительных метрик мониторинга производительности: добавление счетчиков перенаправления и отбрасывания трафика для L3/L4/L7.
- Возможность изменения или добавления IP-адреса хоста с автоматическим применением определенных для хоста правил. Обеспечение непрерывной синхронизации правил и выполняющих их проверку BPF-программ. Поддержка TCP keepalive;
- Базовый образ контейнера обновлен до пакетной базы Ubuntu 18.04.