Организация VXLAN-туннеля между проектами Openstack

В сетях IP существует 3 основных схемы передачи данных: Unicast, Broadcast, Multicast:

  • Unicast – схема отправки пакета от одного хоста к другому хосту.
  • Multicast – схема отправки пакета от одного хоста к некоторой ограниченной группе хостов.
  • Broadcast – схема отправки пакета от одного хоста ко всем хостам в сети.

Multicast и broadcast пакеты, в отличие от unicast пакетов, имеют свои собственные зарезервированные IP адреса для использования их в заголовке пакетов в качестве пункта назначения.
Из-за этого, broadcast пакеты в основном ограничены пределами локальной сети.
Multicast трафик также может быть ограничен границами локальной сети, но с другой стороны также может и маршрутизироваться между сетями.

Рассмотрим эти схемы передачи данных, применительно в нашей задаче - а именно, организации сетевой связности между ВМ, размещенных в различным приватных self-service сетях Openstack.

Broadcast

Когда хосту необходимо передать какую-то информацию всем хостам в сети используется способ передачи данных broadcast. Также, в тех случаях, когда адрес устройств или служб заранее неизвестен, то для их обнаружения также используется broadcast режим.
При этом способе маршрутизации, пакеты используют специальный broadcast IP адрес.
Когда хост получает пакет, в заголовке которого в качестве адреса получателя указан broadcast адрес, он обрабатывает пакет так, как будто это unicast пакет.

Примеры, когда используется broadcast передача данных:

  • создание ARP-таблицы - принадлежности адресов L2 (MAC) и L3 (IP);
  • запрос адреса по протоколу ARP;
  • для работы протоколов маршрутизации (RIP, EIGRP, OSPF и т.п.)

Когда хосту нужна информация, он отправляет запрос на широковещательный адрес. Все остальные хосты в сети получат и обработают этот запрос.
Один или несколько хостов вложат запрашиваемую информацию и ответят на запрос. В качестве типа передачи данных, отвечающие на запрос будут использовать unicast. Подобным образом, когда хосту необходимо отправить информацию всем хостам в сети, он создаёт широковещательный пакет с его информацией и передаёт его в сеть. В отличие от unicast передачи, где пакеты могут быть маршрутизированы через всю сеть, broadcast пакеты, как правило, ограничиваются локальной сетью.
Это ограничение зависит от настройки маршрутизатора, который ограничивает сеть и следит за типом широковещания. Существует два типа broadcast передачи данных: направленное широковещание и ограниченное широковещание.

Unicast

Unicast - это вариант схемы маршрутизации для однонаправленной передачи данных единственному адресату. Способ Unicast работает в клиент-серверных и пиринговых (peer-to-peer, от равного к равному) сетях.

В IP сетях unicast адрес является адресом конечного устройства (например, виртуальной машины). Для типа передачи данных unicast, адреса хостов назначаются двум конечным устройствам и используются (эти адреса) как IP адрес источника и IP адрес получателя.

В течение процесса инкапсуляции передающий хост размещает свой IP адрес в заголовок unicast пакета в виде адреса источника, а IP адрес принимающего хоста размещается в заголовке в виде адреса получателя.
Используя эти два IP адреса, пакеты unicast могут передаваться через всю сеть (т.е. через все подсети).

Данная схема пакетной маршрутизации данных является антиподом режима broadcast, где, напротив, все узлы передают пакеты всех другим узлам в сети. Предполагается, что выбранный нами VLAN (2028) разрешен на двух портах коммутатора, куда подключены наши сетевые устройства.
Включим режим unicast на первом узле:

ip link add admin type vxlan id 2048 dev br-int dstport 0
bridge fdb append to 00:00:00:00:00:00 dst 10.0.11.152 dev admin
ip addr add 192.168.200.1/24 dev admin
ip link set up dev admin

Теперь то-же самое на втором узле:

ip link add admin type vxlan id 2048 dev br-int dstport 0
bridge fdb append to 00:00:00:00:00:00 dst 10.0.11.151 dev admin
ip addr add 192.168.200.2/24 dev admin
ip link set up dev admin

После этих действий мы сможем обмениваться по сети между этими двумя узлами.

Этот вариант не подходит нам, т.к. небезопасен.

Multicast

Тип передачи multicast разрабатывался для экономии пропускной способности в IP сетях.
Такой тип уменьшает трафик, позволяя хостам отправить один пакет выбранной группе хостов. Для достижения нескольких хостов назначения при схеме unicast, хосту источнику необходимо отправлять один и тот-же пакет каждому хосту назначения. С типом передачи данных multicast, хост источник может отправить всего один пакет, который может достичь множество хостов получателей.

Примеры multicast передачи данных:

  • видео и аудио рассылка;
  • обмен информацией о маршрутах, используемый в маршрутизируемых протоколах;
  • распространение программного обеспечения;
  • новостные ленты;

Хосты, которые хотят получить определенные multicast данные, называются multicast клиентами.
Multicast клиенты используют сервисы инициированные клиентскими приложениями для рассылки multicast данных группам.

Каждая multicast группа представляет собой один multicast IP адрес назначения. Когда хост рассылает данные для multicast группы, он помещает multicast IP адрес в раздел пункта назначения заголовка пакета.

Для multicast групп выделен специальный блок IP адресов, от 224.0.0.0 до 239.255.255.255.

Настраиваем на хосте 1 (10.0.11.151) для vm1.

ip link add vxlan2048 type vxlan id 2048 dstport 4789 local 10.0.11.151 group 224.0.0.0 dev br-int ttl 5
brctl addbr br2048
brctl addif br2048 vxlan2048
brctl stp br2048 off
ip link set up dev br2048
ip link set up dev vxlan2048i

на хосте 2 (10.0.11.152), для vm2

ip link add vxlan2048 type vxlan id 2048 dstport 4789 local 10.0.11.152 group 224.0.0.0 dev br-int ttl 5
brctl addbr br2048
brctl addif br2048 vxlan2048
brctl stp br2048 off
ip link set up dev br2048
ip link set up dev vxlan2048

Это vxlan поверх существующей подсети внутри подсети 10.0.11.0/24 создается VXLAN туннель на уровне физики.

VLAN теперь не нужен под сеть management.

Берется коммутатор, втыкаются в него провода и все. 

У нас может быть 2 vlan, 1 с белой адресацией, 1 с серой, с разными маршрутами по умолчанию и без настроек коммутатора.

Сеть провайдер нужна. Если их нужно две - то придется как то делить…хотя, может и это можно будет разрулить.

Сейчас мы можем спрятать сеть управления (management). 

В этой конфигурации, VM даже свой хост не видит.