В продолжении цикла статей об облачном оркестраторе Flexiant хотели бы рассказать о том, как строится организация сети для виртуальных машин и контейнеров под управлением данного оркестратора.
Flexiant выделяет четыре типа сети, которые могут быть доступны клиенту в его виртуальной машине.
PVIP – сеть, в которой клиенту выделяется один /32 адрес. Маршрутизация на данный IP-адрес выполняется на хост машине, на которой расположена виртуальная машина
Public IP – сеть, в которой клиент получает отдельный VLAN и подсеть /29. Это основная сеть, которая у нас используется. Маршрутизация для нее выполняется на специальных router-нодах, которыми управляет Flexiant Cloud Orchestrator.
Private IP – сеть, по организации аналогична предыдущей, за исключением того, что она не выводится вовне на router-ноды. Клиент может использовать ее для создания внутренних сетей между своими виртуальными машинами. IP адреса можно назначать как из интерфейса, так и на самой машине.
Interworking VLAN – опять же, очень похожа на Private IP, за исключением того, что она недоступна клиенту напрямую без участия провайдера. Данную сеть мы даем клиенту, когда ему нужно подключить существующую инфраструктуру по L2 к инфраструктуре Flexiant Cloud Orchestrator.
Все сети, кроме первой работают в отдельном изолированном VLAN, соотвественно клиенту доступны все протоколы L2: arp, dhcp, lldp и т.д. Сеть PVIP работает по L3, и используется нами для клиентов, которые хотят получить защиту от DDoS. Если они хотят защитить IP адреса, то им необходимо использовать именно ее.
Каждая сеть назначается адаптеру виртуальной машины. Таким образом в одной виртуальной машине могут быть несколько типов сетей одновременно.
IP адреса для Private IP и Interworking VLAN могут выбираться клиентами произвольно. IP адреса для Public IP и PVIP выбираются из списка в контрольной панели.

Как только адаптер получает сеть, и опционально IP-адрес, информация об этом попадает в базу данных оркестратора, и соответствующие настройки вносятся на ноды маршрутизации (для Public IP сети), ноды computing (для PVIP), а также в DHCP-сервер, расположенным на ноде управления, в случае, если IP-адрес был задан. Таблица соответствия между виртуальным mac-адресом карты и выбранным IP-адресом заносится в базу данных PgSQL, откуда она в дальнейшем берется DHCP-сервером.
На каждой ноде, будь-то router-нода или compute-нода установлен агент Flexiant, который принимает команды от оркестратора. Внутри самих нод поднят виртуальный маршрутизатор в отдельном сетевом пространстве имен. Таким образом, сетевой стек Linux на нодах и сетевой стек виртуального маршрутизатора независимы друг от друга.
Роутер-Ноды, обеспечивающие функционирования Public IP дублируют друг друга по протоколу VRRP в реализации carp. В случае отказа одной из нод, трафик пойдет через другую
Вот пример маршрутизации на route-ноде для одной:
Пара интерфейсов evrr/evrl это обычные veth в Linux, которые стыкуют между собой два сетевых пространства имен. Таким образом видно, как входящий трафик попадая в виртуальный роутер, маршрутизируется там на конкретный интерфейс.
Управление файрволом также происходит в виртуальном маршрутизаторе. Создаются отдельные таблицы и цепочки пропускающие или не пропускающие трафик на тот или иной сетевой интерфейс.
В качестве протокола маршрутизации мы используем OSPF, конфигурация с compute и router-нод попадает на ядро сети, а оттуда на опорные маршрутизаторы. В качестве софта на нодах используется bird, которым управляет Flexiant. Также в шаблоны конфигурации нами вносятся правки, благо Flexiant позволяет это делать. Flexiant также позволяет использовать статику и bgp в качестве протоколов маршрутизации.
С точки зрения оплаты все сети – бесплатны. Оплата идет лишь за IP адреса для сетей PVIP и Public IP. Однако IP-адреса для PVIP дороже, поскольку они защищены от атак DDoS.
Flexiant выделяет четыре типа сети, которые могут быть доступны клиенту в его виртуальной машине.
PVIP – сеть, в которой клиенту выделяется один /32 адрес. Маршрутизация на данный IP-адрес выполняется на хост машине, на которой расположена виртуальная машина
Public IP – сеть, в которой клиент получает отдельный VLAN и подсеть /29. Это основная сеть, которая у нас используется. Маршрутизация для нее выполняется на специальных router-нодах, которыми управляет Flexiant Cloud Orchestrator.
Private IP – сеть, по организации аналогична предыдущей, за исключением того, что она не выводится вовне на router-ноды. Клиент может использовать ее для создания внутренних сетей между своими виртуальными машинами. IP адреса можно назначать как из интерфейса, так и на самой машине.
Interworking VLAN – опять же, очень похожа на Private IP, за исключением того, что она недоступна клиенту напрямую без участия провайдера. Данную сеть мы даем клиенту, когда ему нужно подключить существующую инфраструктуру по L2 к инфраструктуре Flexiant Cloud Orchestrator.
Все сети, кроме первой работают в отдельном изолированном VLAN, соотвественно клиенту доступны все протоколы L2: arp, dhcp, lldp и т.д. Сеть PVIP работает по L3, и используется нами для клиентов, которые хотят получить защиту от DDoS. Если они хотят защитить IP адреса, то им необходимо использовать именно ее.
Каждая сеть назначается адаптеру виртуальной машины. Таким образом в одной виртуальной машине могут быть несколько типов сетей одновременно.
IP адреса для Private IP и Interworking VLAN могут выбираться клиентами произвольно. IP адреса для Public IP и PVIP выбираются из списка в контрольной панели.

Как только адаптер получает сеть, и опционально IP-адрес, информация об этом попадает в базу данных оркестратора, и соответствующие настройки вносятся на ноды маршрутизации (для Public IP сети), ноды computing (для PVIP), а также в DHCP-сервер, расположенным на ноде управления, в случае, если IP-адрес был задан. Таблица соответствия между виртуальным mac-адресом карты и выбранным IP-адресом заносится в базу данных PgSQL, откуда она в дальнейшем берется DHCP-сервером.
На каждой ноде, будь-то router-нода или compute-нода установлен агент Flexiant, который принимает команды от оркестратора. Внутри самих нод поднят виртуальный маршрутизатор в отдельном сетевом пространстве имен. Таким образом, сетевой стек Linux на нодах и сетевой стек виртуального маршрутизатора независимы друг от друга.
Роутер-Ноды, обеспечивающие функционирования Public IP дублируют друг друга по протоколу VRRP в реализации carp. В случае отказа одной из нод, трафик пойдет через другую
Вот пример маршрутизации на route-ноде для одной:
Router0# ip a l … 766: VLAN367: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 00:1e:67:d3:67:5c brd ff:ff:ff:ff:ff:ff inet6 fe80::e0fe:25ff:fef9:7304/64 scope link valid_lft forever preferred_lft forever … Router0# brctl show VLAN367 bridge name bridge id STP enabled interfaces VLAN367 8000.001e67d3675c no bond0.367 evrl-000190 # Впрыгиваем в виртуальный маршрутизатор с помощью простой специальной команды, которая цепляется к запущенному shell в screen, работающему в нужном нам сетевом пространстве имен Router0# evrs Router0# ip a l evrr-000190 768: evrr-000190: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether e6:52:0f:21:83:b0 brd ff:ff:ff:ff:ff:ff inet 217.23.xxx.xxx/29 scope global evrr-000190 valid_lft forever preferred_lft forever inet6 fe80::e452:fff:fe21:83b0/64 scope link valid_lft forever preferred_lft forever Router0# ip r l 217.23.xxx.xxx 217.23.xxx.xxx/29 dev evrr-000190 proto kernel scope link src 217.23.xxx.xxx Router#0 ip r l ip r l 0.0.0.0/0 default via 10.158.192.3 dev evrr-000000 proto bird
Пара интерфейсов evrr/evrl это обычные veth в Linux, которые стыкуют между собой два сетевых пространства имен. Таким образом видно, как входящий трафик попадая в виртуальный роутер, маршрутизируется там на конкретный интерфейс.
Управление файрволом также происходит в виртуальном маршрутизаторе. Создаются отдельные таблицы и цепочки пропускающие или не пропускающие трафик на тот или иной сетевой интерфейс.
Router0# iptables -nvL evrr-000190-4i Chain evrr-000190-4i (1 references) pkts bytes target prot opt in out source destination 435M 124G RETURN all -- * * 217.23.xxx.xxx 0.0.0.0/0 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 Router0# iptables -nvL evrr-000190-4o Chain evrr-000190-4o (1 references) pkts bytes target prot opt in out source destination 587M 782G ACCEPT all -- * * 0.0.0.0/0 217.23.xxx.xxx 6038K 350M DROP all -- * * 0.0.0.0/0 0.0.0.0/0
В качестве протокола маршрутизации мы используем OSPF, конфигурация с compute и router-нод попадает на ядро сети, а оттуда на опорные маршрутизаторы. В качестве софта на нодах используется bird, которым управляет Flexiant. Также в шаблоны конфигурации нами вносятся правки, благо Flexiant позволяет это делать. Flexiant также позволяет использовать статику и bgp в качестве протоколов маршрутизации.
С точки зрения оплаты все сети – бесплатны. Оплата идет лишь за IP адреса для сетей PVIP и Public IP. Однако IP-адреса для PVIP дороже, поскольку они защищены от атак DDoS.
