The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

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

Опубликован первый значительный релиз проекта Cilium, в рамках которого подготовлена система для обеспечения сетевого взаимодействия и применения политик безопасности для изолированных контейнеров и процессов. Ключевой особенностью Cilium является использование еBPF (Berkeley Packet Filter) и XDP (eXpress Data Path) для разграничения сетевого доступа. Исходные тексты компонентов, работающих на уровне пользователя, написаны на языке Go и распространяются под лицензией Apache 2.0. Загружаемые в ядро Linux сценарии BPF доступны под лицензией GPLv2.

Изначально Cilium был разработан компанией Google, но затем преобразован в независимый проект, развиваемый сообществом. Помимо Google в разработке Cilium принимают участие такие компании, как Facebook, Netflix и Red Hat. Выпуск Cilium 1.0 обусловлен полной стабилизацией API, обеспечением длительной поддержки (LTS) и признанием проекта готовым для промышленного применения.

Основу Cilium составляет фоновый процесс, который работает в пространстве пользователя и выполняет работу по генерированию и компилированию BPF-программ, а также взаимодействия с runtime, обеспечивающим работу контейнеров. В форме BPF-программ реализованы системы обеспечения связности контейнеров, интеграции с сетевой подсистемой (физические и виртуальные сети, VXLAN, Geneve) и балансировки нагрузки. Фоновый процесс дополняют управляющий cli-интерфейс, репозиторий правил доступа, система мониторинга и модули интеграции CNI и CMM с поддержкой Kubernetes, Mesos и Docker.

Особенности Cilium:

  • Упрощённая сетевая модель: каждому контейнеру назначается адрес IPv6 (опционально IPv4), все контейнеры соединены с одним общим виртуальным сетевым пространством с изоляцией через систему меток, привязанных к контейнерам. На базе меток могут выделяться сегменты сети и вводиться дополнительные правила доступа. IPv6 выбран в качестве основной модели адресации с поддержкой IPv4 для обеспечения обратной совместимости. Сеть может быть настроена в двух режимах: Overlay/VXLAN и Direct Routing.
  • Расширяемость: пользователи могут дополнить или адаптировать для своих нужд любой аспект работы BPF-программ. Возможности перенаправления и фильтрации пакетов не ограничиваются версией ядра и могут расширяться добавлением новых типов статистики, не поддерживаемых ядром, новыми обработчиками протоколов, внесением изменений в методы отслеживания соединений, реализацией дополнительной логики перенаправления пакетов;
  • Возможность внесения изменений и исправлений в компоненты, отвечающие за обработку и перенаправление пакетов, без перезагрузки ядра, без разрыва установленных соединений и без остановки работающих контейнеров;
  • Интеграция эффективной системы мониторинга, которая может включаться по необходимости во время работы и позволяет отслеживать сетевую активность контейнеров в условиях высокой сетевой нагрузки без внесения задержек при обработке соединений. Кроме IP-адресов отображаются дополнительные метаданные, такие как метки контейнеров и имена сервисов. Система также позволяет производить инспектирование на уровне вызовов API. Постоянно отслеживается связность между узлами кластера и величина задержек при выполнении сетевых операций, что позволяет оперативно выявлять сбои узлов и сетевые проблемы. Также собираются метрики, имеющие отношение к производительности и состоянию сервисов;
  • Все компоненты Cilium могут применяться в полностью распределённом окружении, формируя общую виртуальную сеть для кластера. Демон, управляющие прослойки и генерируемые BPF-приложения могут выполняться на разных узлах. В будущем планируется предоставить средства для объединения разных кластеров без применения сложных прокси-сервисов;
  • Обеспечение сетевой безопасности как на уровне пакетов, так и на уровне API: возможности по фильтрации трафика комбинируются с авторизацией на уровне API, что позволяет обеспечить защиту и для традиционных внедрений и для систем на базе архитектуры микросервисов (микросервисы взаимодействуют через API с идентификацией не по IP, а по именам сервисов, Cilium позволяет избавиться от дополнительных прокси);
  • Применение идентификации: вместо разграничения на основе исходных IP-адресов в Cilium применяется система меток, точно идентифицирующих каждый сетевой пакет (позволяет отследить привязку к контейнеру и сервису). Дополнительно поддерживается и традиционная система контроля доступа на основе правил, отталкивающихся от IP-адресов и подсетей. По возможности в Cilium используется дополнительный уровень абстракции, позволяющий избежать привязки к жестко заданным IP в пользу использования имён сервисов в правилах доступа;
  • Распределённая и масштабируемая система балансировки нагрузки, использующая BPF для организации связи между сервисами. Поддерживается балансировка round-robin с учётом весовых коэффициентов и функция хэширования потоков. Эффективность работы балансировщика не зависит от числа сервисов. Балансировщик может быть настроен в форме Kubernetes Service Implementation (альтернатива kube-proxy, все сервисы Kubernetes ClusterIP автоматически реализуются в форме BPF) или с управлением через API (возможность прямой настройки параметров балансировщика);
  • Высокая производительность. JIT-компилятор позволяет добиться эффективного выполнения BPF-программ. Для каждого контейнера генерируются отдельные программы BPF, обеспечивающие только необходимую функциональность, что позволяет уменьшить размер выполняемого кода.

    При организации перенаправления трафика между большим числом сервисов iptables становится узким местом в производительности (из-за необходимости перебора правил при 5000 сервисов производительность падает на 30%, а при 10000 - на 80%, обновление правил для 5000 сервисов занимает 11 минут). Cilium сводит обновление правил к уровню O(1), при котором производительность не зависит от числа записей. Благодаря хэшированию время поиска и применения правил всегда постоянно и не зависит от числа сервисов. Замена традиционного IPVS в балансировщике нагрузки Facebook на решение на базе BPF и XDP позволило поднять производительность в 10 раз. Применение механизма Sockmap в BPF также позволяет ускорить выполнение операций редиректа запросов, которые в среднем по сравнению с iptables выполняются в 2 раза быстрее.

eBPF представляет собой встроенный в ядро Linux интерпретатор байткода, позволяющий создавать обработчики сетевых операций, контролировать доступ и отслеживать работу систем, в том числе BPF-программы могут применяться для низкоуровневой обработки входящих/исходящих пакетов, принятия решений о перенаправлении пакетов, перехвата системных вызовов, контроля доступа и использования kprobes. XDP предоставляет средства для запуска BPF-программ на уровне сетевого драйвера, с возможностью прямого доступа к DMA-буферу пакетов, что позволяет создавать высокопроизводительные обработчики для работы в условиях большой сетевой нагрузки.

Программы для eBPF могут определяться на подмножестве языка C, компилироваться при помощи специального бэкенда LLVM и загружаться в ядро. Перед выполнением интерпретатор eBPF проверяет байткод на предмет применения разрешённых инструкций и налагает определённые правила на код (например, отсутствие циклов). Благодаря применению JIT-компиляции, байткод на лету транслируется в машинные инструкции и выполняется с производительностью нативного кода. При помощи программ BPF в Cilium реализованы такие возможности, как NAT64, балансировщики для сетевых уровней L3/L4, механизм отслеживания соединений, система маппинга сетевых портов, средства управления доступом, обработчики запросов NDisc и ARP, инкапсуляция пакетов через VXLAN, Geneve и GRE.



  1. Главная ссылка к новости (https://cilium.io/blog/2018/04...)
  2. OpenNews: Для ядра Linux предложен новый пакетный фильтр bpfilter
  3. OpenNews: Выпуск sandboxed-tor-browser, прослойки для изоляции Tor Browser
  4. OpenNews: Четвёртый тестовый выпуск ОС Subgraph
  5. OpenNews: Oracle перелицензировал код DTrace под GPLv2
  6. OpenNews: Критические уязвимости в подсистеме eBPF ядра Linux
Лицензия: CC-BY
Тип: Программы
Ключевые слова: bpf, cilium, cluster, container, firewall
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Показать все | RSS
 
  • 1.1, MPEG LA, 10:33, 07/05/2018 [ответить] [смотреть все]    [к модератору]
  • +/
    ждем в докере из коробки
     
     
  • 2.2, Аноним, 10:34, 07/05/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]
  • +12 +/
    Контейнеры из коробок -- вот оно, современное ИТ :)
     
     
  • 3.37, Аноним, 18:10, 08/05/2018 [^] [ответить] [смотреть все]     [к модератору]
  • –2 +/
    Зато когда вопрос встает ребром, девопсы Пашеньки рубят лулзы с церберов вовочки... весь текст скрыт [показать]
     
     
  • 4.40, angra, 05:34, 09/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Прикинь, ветераны юникс администрирования новые сервера разворачивали за пару ми... весь текст скрыт [показать]
     
     
  • 5.41, Аноним, 14:26, 09/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Прям BBC на DOS или что там было в доконтейнеровую эпоху Да врети вы фсе с ... весь текст скрыт [показать]
     
     
  • 6.42, Аноним, 14:27, 09/05/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    > (федора, сузя или ХР) через PXT в 2005 году длился целых

    s/PXT/PXE/

     
  • 5.43, Аноним, 23:47, 09/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Ага, за 5 минут Что раньше что сейчас сервак 10-20 минут наливается в зависимос... весь текст скрыт [показать]
     
     
  • 6.44, angra, 06:28, 10/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Есть серверное железо, которое за 10 минут только биос проходит Есть, которое э... весь текст скрыт [показать]
     
  • 1.3, Аноним, 10:42, 07/05/2018 [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    Что за "Orchestration systems" на картинке?
     
     
  • 2.12, ваш К.О., 13:29, 07/05/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +2 +/
    та, к которой ты, Анон, напишешь плагин для управления этой хренью.

     
  • 2.30, Аноним, 20:05, 07/05/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +3 +/
    Админы локалхоста не палятся.
     
  • 1.6, Аноним, 11:19, 07/05/2018 [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    Хватит этих контейнеров. Хоть один до конца допилите лучше.
     
     
  • 2.7, Аноним, 11:48, 07/05/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +4 +/
    > до конца

    нет у контейнеров начала, нет у контейнеров конца

     
     
  • 3.8, Вася Совесть, 12:20, 07/05/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    и дна тоже нет
     
     
  • 4.9, Crazy Alex, 12:29, 07/05/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +6 +/
    Там кругом дно пока что
     
  • 1.10, Аноним, 12:46, 07/05/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    Очередная оверлейная сеть? Чем она лучше, чем Weave или Flannel?
     
     
  • 2.11, пох, 12:53, 07/05/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +1 +/
    тем что держит 3,000,000 req s впрочем, тут нигде не написано что это в overlay... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.21, Аноним, 17:06, 07/05/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Как насчет 12Mpps (million packets per)?
     
     
  • 4.25, пох, 17:44, 07/05/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    req - это не один пакет, это полноценная сессия.
     
  • 1.16, Аноним, 16:32, 07/05/2018 [ответить] [смотреть все]     [к модератору]  
  • +2 +/
    да просто нужно отказаться от IP-адресов в локальной сети и всё сразу станет нам... весь текст скрыт [показать]
     
     
  • 2.17, Аноним, 16:34, 07/05/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • –1 +/
    вот оно микросервисы взаимодействуют через API с идентификацией не по IP, а по... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.34, Аноним, 21:08, 07/05/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    А в чем принципиальное отличие от имен контейнеров в докере?
     
  • 2.35, Алконим, 01:27, 08/05/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    В локалке нужно по IPX работать, как уже когда-то было.
     
  • 1.22, Аноним, 17:17, 07/05/2018 [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    Нескучный аналог Open vSwitch?
     
  • 1.26, Аноним, 18:19, 07/05/2018 [ответить] [смотреть все]    [к модератору]  
  • –2 +/
    Calico выглядит как-то более безопасным на уровне L2.
     
  • 1.27, Аноним, 19:42, 07/05/2018 [ответить] [смотреть все]     [к модератору]  
  • +/
    Не понимаю BPF ведь только-только выкатили, а тут уже продукты на его основе Д... весь текст скрыт [показать]
     
     
  • 2.31, Аноним, 20:05, 07/05/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    Facebook внутри работает на нативном ipv6, про Гугл все верно...
     
     
  • 3.38, Аноним, 18:19, 08/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Так, блин, IPv4, натурально, заканчивается Поэтому тысячи внутренних серверов н... весь текст скрыт [показать]
     
     
  • 4.39, Andrey Mitrofanov, 20:40, 08/05/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Шо, прям тыщи мульёнов Вот прям в 10 0 0 0 8 не вмещается Гига-а-ант То ли и... весь текст скрыт [показать]
     
  • 1.36, Аноним, 14:11, 08/05/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    Ожидаем Neo Cilium 1.1
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor