The OpenNET Project / Index page

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

03.11.2016 11:14  Google представил Cilium, сетевую систему для Linux-контейнеров, основанную на BPF

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

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

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

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

Из преимуществ применения Cilium для контейнерной изоляции отмечается:

  • Простота: каждому контейнеру назначен адрес IPv6 (опционально IPv4), все контейнеры соединены с одним общим виртуальным сетевым пространством с изоляцией через систему меток, привязанных к контейнерам. IPv6 выбран в качестве основной модели адресации с поддержкой IPv4 для обеспечения обратной совместимости;
  • Расширяемость: пользователи могут дополнить или адаптировать для своих нужд любой аспект работы BPF-программ. Возможности перенаправления и фильтрации пакетов не ограничиваются версией ядра и могут расширяться добавлением новых типов статистики, не поддерживаемых ядром, новыми обработчиками протоколов, внесением изменений в методы отслеживания соединений, реализацией дополнительной логики перенаправления пакетов;
  • Высокая производительность: JIT-компилятор позволяет добиться эффективного выполнения BPF-программ. Для каждого контейнера генерируются отдельные программы BPF, обеспечивающие только необходимую функциональность, что позволяет уменьшить размер выполняемого кода;
  • Возможность внесения изменений и исправлений в компоненты, отвечающие за обработку и перенаправление пакетов, без перезагрузки ядра, без разрыва установленных соединений и без остановки работающих контейнеров;
  • Интеграция эффективной системы мониторинга, которая может включаться по необходимости во время работы. Возможность отслеживать сетевую активность контейнеров в условиях высокой сетевой нагрузки без внесения задержек при обработке соединений.


  1. Главная ссылка к новости (https://opensource.googleblog....)
  2. OpenNews: Началось тестирование ОС Subgraph, использующей контейнерную изоляцию приложений на десктопе
  3. OpenNews: Intel представил Clear Linux с контейнерами приложений на базе виртуализации
  4. OpenNews: Компания Canonical выпустила систему управления контейнерами LXD 2.0
  5. OpenNews: Компания Google открыла код системы изолированных контейнеров Lmctfy
  6. OpenNews: Google анонсировал Kubernetes, открытую систему управления кластером изолированных контейнеров
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: bpf, container, cilium
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (-), 11:42, 03/11/2016 [ответить] [показать ветку] [···]    [к модератору]
  • +2 +/
    кучеряво ... но как-то излишествами попахивает
     
     
  • 2.2, SysA (?), 11:47, 03/11/2016 [^] [ответить]    [к модератору]
  • +/
    для локалхоста?.. ;)
     
     
  • 3.5, Аноним (-), 12:30, 03/11/2016 [^] [ответить]    [к модератору]
  • –7 +/
    холокоста
     
     
  • 4.6, A.Stahl (ok), 12:45, 03/11/2016 [^] [ответить]    [к модератору]
  • +/
    На своём локалхосте можете и холокостом заниматься. Только не рассказывайте никому.
     
     
  • 5.19, Аноним (-), 19:31, 03/11/2016 [^] [ответить]    [к модератору]
  • +1 +/
    нельзя.
     
  • 4.18, Аноним (-), 19:25, 03/11/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    адъмин лохокоста
     
  • 1.3, anonymous (??), 12:18, 03/11/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +7 +/
    Я что-то не понимаю, а чем плохи стандартные network namespace, множественные таблицы роутов, и нат через обычный файервол?
     
     
  • 2.15, evkogan (?), 15:50, 03/11/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    Присоединяюсь.
    Если есть есть плюсы то может кто-то их опишет.
    А заодно и минусы.
     
  • 2.25, Аноним (-), 01:02, 05/11/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    Гугл обнаружил в namespaces фатальный недостаток: код написали не они и там нет go :)
     
  • 2.29, Валик228 (?), 10:59, 09/11/2016 [^] [ответить]    [к модератору]  
  • +/
    всем хорош.
    в случае с обычными контейнерами в привычном нам всем виде.
    но сейчас ведь в тренде docker на локалхостах недокодеров.
    переставьте себе штук 30 работающих на ноуте у Васи контейнеров, которые к тому же непойми кем клепались и подгружаются, зачастую, напрямую из git без всяких проверок и наладок.
    теперь возьмите iproute2 и iptabes и попробуйте весь этот балаган как-то разрулить.
    субъективно, это как-раз тот случай, когда для исправления ситуации с каким-то одним костылем делается еще один костыль, еще более кривой и несуразный.
     
  • 1.4, Аноним (-), 12:29, 03/11/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +5 +/
    Грузим в ведро какой-то непонятный код, но при этом говорим о повышении безопасности каких-то контейнеров.
    Что-то статья напоминает кашу из плохого перевода и профанации.
     
     
  • 2.9, Anonymouys528 (?), 13:12, 03/11/2016 [^] [ответить]    [к модератору]  
  • +/
    Посмотрите код, а потом говорим годный он или не очень.
     
     
  • 3.10, Аноним (-), 13:32, 03/11/2016 [^] [ответить]     [к модератору]  
  • +/
    А ты вообще комментарий-то понял Я говорю про то, что эти BPF программы непонят... весь текст скрыт [показать]
     
     
  • 4.24, Аноним (-), 00:51, 05/11/2016 [^] [ответить]    [к модератору]  
  • +/
    Собственно это не программы, а правила фильтрации в бинарном виде.
     
     
  • 5.26, Аноним (-), 01:04, 05/11/2016 [^] [ответить]     [к модератору]  
  • +/
    Собственно, это тюринг-полные программы, вгружаемые из юзермода в ведро что выгл... весь текст скрыт [показать]
     
  • 1.11, Аноним (-), 13:58, 03/11/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    > Программы для eBPF могут определяться на подмножестве языка C, компилироваться при помощи специального бэкенда LLVM

    еще один гвоздь в гроб gcc.

     
     
  • 2.13, Uri (??), 14:26, 03/11/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    "не дождетесь" (с)
     
     
  • 3.17, Аноним (-), 18:55, 03/11/2016 [^] [ответить]    [к модератору]  
  • –1 +/
    а чего же gcc не использовали? только llvm.
     
     
  • 4.28, Аноним (-), 11:25, 05/11/2016 [^] [ответить]    [к модератору]  
  • +/
    Потому что gcc не компилирует в BPF, а вы думали почему?
     
  • 2.21, Led (ok), 22:07, 03/11/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    > еще один гвоздь в гроб gcc.

    - послышался голос из могилы.

     
  • 2.27, Аноним (-), 01:05, 05/11/2016 [^] [ответить]    [к модератору]  
  • +/
    > еще один гвоздь в гроб gcc.

    Это при том что майнлайновое ядро Linux ничем кроме gcc не собирается? У вас гвоздь погнулся - вы его в бетон пытаетесь забивать.

     
  • 1.16, KOT040188 (ok), 16:40, 03/11/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    А клиент для дрйава не представил...
     
  • 1.20, Аноним (-), 21:11, 03/11/2016 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    Прочитайте внимательно первые строки оригинальной статьи Никакого отношения про... весь текст скрыт [показать]
     
     
  • 2.22, Аноним (-), 00:11, 04/11/2016 [^] [ответить]    [к модератору]  
  • +/
    > Никакого отношения проект к Google не имеет. Но проект годный, да.

    Ну дак и написано, что "Google представил", а не "открыл" или "опубликовал".

     
     
  • 3.23, AR (?), 11:09, 04/11/2016 [^] [ответить]    [к модератору]  
  • +/
    Google предоставил свой блог для гостевого поста, а не проект.
     
  • 1.30, Аноним (-), 19:11, 09/11/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    чувствуется влияние идей Qubes OS, но КАК оно воспроизведено и на чем... ужс.
    овэерхэд должен быть эпичным. _рукалицо
     

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


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