Выпуск Cilium 1.1, сетевой системы для Linux-контейнеров, основанной на BPF

Подготовлен релиз проекта 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.

© OpenNet