Виртуальная локальная расширяемая сеть (Virtual Extensible LAN, VXLAN) представляет собой оверлей (overlay) виртуализированную технологию. VXLAN позволяет растянуть L2 сегмент через транспортную (underlay) L3 сеть используя MAC in UDP инкапсуляцию (чем-то похоже на OTV).
На рисунке ниже представлен VXLAN пакет:
Как видим, вводится дополнительный 8-ми байтовый заголовок, который состоит из полей VNID, длиной 24 бита (по сути, это номер VXLAN – аналог номера VLAN в традиционных LAN сетях), 8-ми битного указателя и зарезервированных полей.
Сетевые устройства, которые производят VXLAN инкапсуляцию (и деинкапсуляцию соответственно) называются оконечными туннелями VXLAN (VXLAN Tunnel Endpoint, VTEP). Каждый VTEP имеет интерфейсы 2-ух ролей: один интерфейс типа L2 для коммутации трафика внутри LAN и один L3 IP интерфейс, с которого строится VXLAN туннель к другому VTEP.
VTEP также ответственен за то, чтобы узнать о других VTEP в сети и о том, чтобы узнать, какие MAC адреса за этими VTEP находятся.
Встает логичный вопрос – а как же осуществляется сей процесс? Сейчас мы об этом и поговорим!
На текущий момент в мире существует два способа решения означенного вопроса – с помощью Data Plane Learning и с помощью Control Plane Learning. Рассмотрим Data Plane Learning на примере.
Предположим, что компьютер А и компьютер B находятся в одной L3 подсети и компьютер А хочет связаться с компьютером B.
- Компьютер А высылает ARP запрос чтобы узнать МАС адрес IP-B.
- VTEP-1 получает данный запрос. Если VTEP-1 на данный момент не знает о связке MAC-B/IP-B, то он инкапсулирует ARP запрос внутрь VXLAN и высылает пакет на мультикаст IP-адрес. В качестве Source IP выставляется IP-1. Номер VNID берется из конфигурации VTEP-1.
vlan 100
vn-segment 10
- Мультикастный IP-пакет маршрутизируется по Underlay топологии и доставляется всем VTEP, которые подписаны на данную группу рассылки (в нашем случае это VTEP-2 и VTEP-3). VTEP-2/3 деинкапсулируют пакет и проверяют номер Если этот номер у них сконфигурирован локально, то VTEP заносят себе в память соответствие MAC-A/IP-1 и пересылают Ethernet пакет в VLAN, которая соответствует номеру VNID.
Прим. Номера VLAN, в принципе, могут не совпадать на разных VTEP. Т.е. VLAN становится не «глобально уникальным номером», а имеет смысл только в рамках одного VTEP.
- Компьютер В получает ARP запрос и отвечает на него ARP ответом (юникаст ответ).
- VTEP-2 инкапсулирует ARP ответ в VXLAN и отправляет его юникаст-пакетом в сторону VTEP-1 (т.к. VTEP-2 уже знает, что MAC-A находится за IP-1).
- VTEP-1 деинкапсулирует пакет и отправляет его в сторону компьютера А. Одновременно с этим VTEP-1 создает запись-привязку MAC-B/IP-2.
Такой процесс изучения MAC-адресов и VTEP-соседей носит название VXLAN Flood and Learn. Хочется заметить, что подобный метод изучения не является совсем уж оптимальным, т.к. подразумевает довольно таки большое количество BUM (Broadcast, Unknown Unicast and Multicast) пакетов по Underlay сети.
Конфигурация VXLAN
В качестве тестового стенда будем использовать следующую топологию:
Конфигурация устройств приведена ниже.
—— 3172A ——
feature ospf
feature pim
feature vn-segment-vlan-based
feature nv overlay
!
ip pim rp-address 192.168.1.100 group-list 224.0.0.0/4
!
vlan 10
vn-segment 160010
vlan 20
vn-segment 160020
!
interface nve1 // интерфейс, на котором терминируется VXLAN
source-interface loopback1
member vni 160010 mcast-group 231.1.1.1
member vni 160020 mcast-group 231.1.1.1
no shutdown
!
interface Ethernet1/3
no switchport
ip address 192.168.1.10/30
ip router ospf 2 area 0.0.0.0
ip pim sparse-mode
!
interface loopback1
ip address 192.168.2.5/32
ip router ospf 2 area 0.0.0.0
ip pim sparse-mode
—— 9396А/B ——
eature ospf
feature pim
feature vn-segment-vlan-based
feature nv overlay
!
ip pim rp-address 192.168.1.100 group-list 224.0.0.0/4
!
vlan 1,10,20
vlan 10
vn-segment 160010
vlan 20
vn-segment 160020
!
vpc domain 1
peer-switch
peer-keepalive destination 10.122.140.99
peer-gateway
!
interface port-channel1
switchport mode trunk
spanning-tree port type network
vpc peer-link
!
interface port-channel48
switchport mode trunk
vpc 48
!
interface nve1
mtu 9216
no shutdown
source-interface loopback1
member vni 160010 mcast-group 231.1.1.1
member vni 160020 mcast-group 231.1.1.1
!
interface Ethernet1/7
no switchport
ip address 192.168.1.2/30
ip router ospf 1 area 0.0.0.0
ip pim sparse-mode
no shutdown
!
interface loopback1
ip address 192.168.2.2/32
ip address 192.168.2.1/32 secondary
ip router ospf 1 area 0.0.0.0
ip pim sparse-mode
Хотелось бы обратить Ваше внимание на некоторые моменты.
- На интерфейсе Loopback1 коммутаторов N9K, которые находятся в vpc домене, сконфигурирован один и тот же secondary IP. Это необходимо для того, чтобы 2 указанных коммутатора представлялись всем остальным VTEP девайсам как одно. Т.е. VXLAN туннель будет строиться именно с secondary IP, а не
- Необходима команда peer-gateway на vpc-пирах для оптимальной обработки трафика как со стороны L2 домена, так и от L3 Underlay сети.
Основные команды для верификации
3172-A# show nve peers
Interface Peer-IP Peer-State
—————- ————— ————-
nve1 192.168.2.1 Up
!
3712-A# show nve vni
Interface VNI Multicast-group VNI State
—————- ——— ————— ———
nve1 160010 231.1.1.1 Up
nve1 160020 231.1.1.1 Up
!
3172-A# show mac address-table vlan 10
Legend:
* — primary entry, G — Gateway MAC, (R) — Routed MAC, O — Overlay MAC
age — seconds since first seen,+ — primary entry using vPC Peer-Link
VLAN MAC Address Type age Secure NTFY Ports/SWID.SSID.LID
———+——————+———+———+——+—-+——————
* 10 0000.1111.1111 dynamic 5030 F F Eth1/48
* 10 0000.2222.2222 dynamic 5010 F F nve1(192.168.2.1)
Метки: vxlan
Опубликовано: CCIE DC , Data Center , Virtualization
Хорошая обзорно-техническая статья.
Я вот выпал еще на OTV
Спасибо