)
Базовая настройка VXLAN L2VNI
VXLAN расшифровывается как Virtual Extensible LAN и является широко используемой технологией сетевой виртуализации в крупных сетях второго уровня. Она была разработана для решения ряда проблем виртуализации в эпоху облачных вычислений.
Что такое VXLAN?
Логический туннель VXLAN создается между сетевыми устройствами источника и назначения с помощью инкапсуляции MAC в UDP (User Datagram Protocol). Другими словами, исходный Ethernet-пакет, отправленный виртуальной машиной, инкапсулируется в UDP-пакет, а затем на верхнем уровне инкапсулируются заголовок IP-пакета и заголовок Ethernet-пакета физической сети. Таким образом, инкапсулированный пакет ведет себя как обычный IP-пакет и может быть передан через сеть L3.
Зачем нужен VXLAN?
Это тесно связано с тенденцией виртуализации серверной части центров обработки данных. С одной стороны, виртуализация серверов привела к динамической миграции виртуальных машин, что требует наличия сети, обеспечивающей беспрепятственный доступ.
С другой стороны, центры обработки данных стали более масштабными и значительно увеличили число арендаторов, что потребовало создания сети, способной изолировать огромное количество арендаторов. VXLAN может удовлетворить эти два ключевых требования.
Сеть VXLAN представляет собой следующие новые элементы по сравнению с традиционными сетями:
-
VTEP (конечные точки туннелей VXLAN): это пограничные устройства в сети VXLAN, которые служат начальной и конечной точками туннелей VXLAN. Вся соответствующая обработка пакетов VXLAN выполняется на VTEP.
-
VNI (сетевой идентификатор VXLAN): VLAN в кадрах Ethernet занимают всего 12 бит, что ограничивает их возможности по изоляции в сетях центров обработки данных. Введение VNI решает эту проблему. VNI — это идентификатор пользователя, аналогичный VLAN ID, где каждый VNI представляет арендатора, а виртуальные машины с разными значениями VNI не могут напрямую взаимодействовать на L2. При инкапсуляции пакетов в VXLAN, под VNI выделяется достаточно места, чтобы поддерживать изоляцию большого количества арендаторов.
-
Туннель VXLAN: "Туннель" — это логическое понятие, которое не является новым, как, например, хорошо известная Generic Routing Encapsulation (GRE). Проще говоря, он преобразует исходный пакет, инкапсулируя его, что позволяет передавать его по транспортной сети (например, IP-сети). С точки зрения хоста создается впечатление, что между источником и получателем исходного пакета существует прямая связь. Этот кажущийся прямым канал и есть "туннель". Как следует из названия, "туннель VXLAN" используется для передачи инкапсулированных пакетов VXLAN и представляет собой виртуальный канал, созданный между двумя VTEP.
Конфигурирование VXLAN:
Функционал VXLAN поддерживается на линейке коммутаторов QSW-6900.
В данной примере рассмотрим базовую настройку VXLAN L2VNI.
Схема тестового стенда:
В роли Spine будет выступать коммутатор QSW-6900-32H
В роли Leaf выступают QSW-6900-56LF
Для начала, требуется перевести коммутатор в режим работы vxlan с помощью команды:
(config)#switch-mode vxlan slot 0 Please save current config and restart your device!
После этого требуется сохранить конфигурацию и перезагрузить коммутатор.
Начнём с настройки Spine, так как от Spine нам требуется только маршрутизация, на нём мы настроим только ospf.
Spine(config)#router ospf 1 Spine(config-router)#router-id 10.65.0.1
Далее настраиваем интерфейсы в сторону Leaf, переводим их в режим работы L3:
Spine(config)#interface hundredGigabitEthernet 0/1 Spine(config-if-HundredGigabitEthernet 0/1)#no switchport Spine(config-if-HundredGigabitEthernet 0/1)#description to_leaf-1 Spine(config-if-HundredGigabitEthernet 0/1)#ip address 10.10.0.1 255.255.255.252 Spine(config-if-HundredGigabitEthernet 0/1)#ip ospf 1 area 0
Spine(config)#interface hundredGigabitEthernet 0/2 Spine(config-if-HundredGigabitEthernet 0/2)#no switchport Spine(config-if-HundredGigabitEthernet 0/2)#description to_leaf-2 Spine(config-if-HundredGigabitEthernet 0/2)#ip address 10.20.0.1 255.255.255.252 Spine(config-if-HundredGigabitEthernet 0/2)#ip ospf 1 area 0
Spine(config)#interface hundredGigabitEthernet 0/3 Spine(config-if-HundredGigabitEthernet 0/3)#no switchport Spine(config-if-HundredGigabitEthernet 0/3)#description to_leaf-3 Spine(config-if-HundredGigabitEthernet 0/3)#ip address 10.30.0.1 255.255.255.252 Spine(config-if-HundredGigabitEthernet 0/3)#ip ospf 1 area 0
Аналогично настраиваем интерфейсы Leaf в сторону Spine:
LEAF-1
Leaf-1(config)#router ospf 1 Leaf-1(config-router)#router-id 10.65.0.10 Leaf-1(config)#interface hundredGigabitEthernet 0/56 Leaf-1(config-if-HundredGigabitEthernet 0/56)#no switchport Leaf-1(config-if-HundredGigabitEthernet 0/56)#description to_Spine Leaf-1(config-if-HundredGigabitEthernet 0/56)#ip address 10.10.0.2 255.255.255.252 Leaf-1(config-if-HundredGigabitEthernet 0/56)#ip ospf 1 area 0
LEAF-2
Leaf-2(config)#router ospf 1 Leaf-2(config-router)#router-id 10.65.0.20 Leaf-2(config)#interface hundredGigabitEthernet 0/56 Leaf-2(config-if-HundredGigabitEthernet 0/56)#no switchport Leaf-2(config-if-HundredGigabitEthernet 0/56)#description to_Spine Leaf-2(config-if-HundredGigabitEthernet 0/56)#ip address 10.20.0.2 255.255.255.252 Leaf-2(config-if-HundredGigabitEthernet 0/56)#ip ospf 1 area 0
LEAF-3
Leaf-3(config)#router ospf 1 Leaf-3(config-router)#router-id 10.65.0.30 Leaf-3(config)#interface hundredGigabitEthernet 0/56 Leaf-3(config-if-HundredGigabitEthernet 0/56)#no switchport Leaf-3(config-if-HundredGigabitEthernet 0/56)#description to_Spine Leaf-3(config-if-HundredGigabitEthernet 0/56)#ip address 10.30.0.2 255.255.255.252 Leaf-3(config-if-HundredGigabitEthernet 0/56)#ip ospf 1 area 0
Смотрим вывод show ip ospf neighbor на Spine:
Spine#sh ip ospf neighbor OSPF process 1, 3 Neighbors, 3 is Full: Neighbor ID Pri State BFD State Dead Time Address Interface 10.65.0.10 1 Full/BDR - 00:00:37 10.10.0.2 HundredGigabitEthernet 0/1 10.65.0.20 1 Full/BDR - 00:00:39 10.20.0.2 HundredGigabitEthernet 0/2 10.65.0.30 1 Full/BDR - 00:00:33 10.30.0.2 HundredGigabitEthernet 0/3
Соседство построено со всеми Leaf, можем приступать к настройке BGP/EVPN.
Создаём на всех Leaf коммутаторах интерфейс loopback, с него будет строиться BGP сессия.
Leaf-1(config)#interface loopback 1 Leaf-1(config-if-Loopback 1)#ip address 1.1.1.1 255.255.255.255 Leaf-1(config-if-Loopback 1)#ip ospf 1 area 0 Leaf-1(config)#exit
Leaf-2(config)#interface loopback 1 Leaf-2(config-if-Loopback 1)#ip address 2.2.2.2 255.255.255.255 Leaf-2(config-if-Loopback 1)#ip ospf 1 area 0 Leaf-2(config-if-Loopback 1)#exit
Leaf-3(config)#interface loopback 1 Leaf-3(config-if-Loopback 1)#ip address 3.3.3.3 255.255.255.255 Leaf-3(config-if-Loopback 1)#ip ospf 1 area 0 Leaf-3(config-if-Loopback 1)#exit
Проверяем ip связность с Leaf-2 и Leaf-3
Leaf-1#ping 2.2.2.2 source loopback 1 Sending 5, 100-byte ICMP Echoes to 2.2.2.2, timeout is 2 seconds: < press Ctrl+C to break > !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms. Leaf-1#ping 3.3.3.3 source loopback 1 Sending 5, 100-byte ICMP Echoes to 3.3.3.3, timeout is 2 seconds: < press Ctrl+C to break > !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms.
Далее настраиваем BGP:
Leaf-1(config)#router bgp 65100 Leaf-1(config-router)#neighbor 2.2.2.2 remote-as 65200 Leaf-1(config-router)#neighbor 2.2.2.2 ebgp-multihop 4 Leaf-1(config-router)#neighbor 2.2.2.2 update-source loopback 1 Leaf-1(config-router)#neighbor 3.3.3.3 remote-as 65300 Leaf-1(config-router)#neighbor 3.3.3.3 ebgp-multihop 4 Leaf-1(config-router)#neighbor 3.3.3.3 update-source loopback 1
Создаём адресное семейство EVPN и добавляем в адресное семейство соседей:
Leaf-2(config-router)#address-family l2vpn evpn Leaf-1(config-router-af)#neighbor 2.2.2.2 activate Leaf-1(config-router-af)#neighbor 2.2.2.2 send-community both Leaf-1(config-router-af)#neighbor 3.3.3.3 activate Leaf-1(config-router-af)#neighbor 3.3.3.3 send-community both Leaf-1(config-router-af)#end
Для Leaf-2 и Leaf-3 настройка будет аналогична:
LEAF-2Leaf-2(config)#router bgp 65200 Leaf-2(config-router)#bgp router-id 10.65.0.20 Leaf-2(config-router)#neighbor 1.1.1.1 remote-as 65100 Leaf-2(config-router)#neighbor 1.1.1.1 ebgp-multihop 4 Leaf-2(config-router)#neighbor 1.1.1.1 update-source loopback 1 Leaf-2(config-router)#neighbor 3.3.3.3 remote-as 65300 Leaf-2(config-router)#neighbor 3.3.3.3 ebgp-multihop 4 Leaf-2(config-router)#neighbor 3.3.3.3 update-source loopback 1 Leaf-2(config-router)#address-family l2vpn evpn Leaf-2(config-router-af)#neighbor 1.1.1.1 activate Leaf-2(config-router-af)#neighbor 1.1.1.1 send-community both Leaf-2(config-router-af)#neighbor 3.3.3.3 activate Leaf-2(config-router-af)#neighbor 3.3.3.3 send-community both Leaf-2(config-router-af)#end
LEAF-3
Leaf-3(config)#router bgp 65300 Leaf-3(config-router)#bgp router-id 10.65.0.30 Leaf-3(config-router)#neighbor 1.1.1.1 remote-as 65100 Leaf-3(config-router)#neighbor 1.1.1.1 ebgp-multihop 4 Leaf-3(config-router)#neighbor 1.1.1.1 update-source loopback 1 Leaf-3(config-router)#neighbor 2.2.2.2 remote-as 65200 Leaf-3(config-router)#neighbor 2.2.2.2 ebgp-multihop 4 Leaf-3(config-router)#neighbor 2.2.2.2 update-source loopback 1 Leaf-3(config-router)#address-family l2vpn evpn Leaf-3(config-router-af)#neighbor 1.1.1.1 activate Leaf-3(config-router-af)#neighbor 1.1.1.1 send-community both Leaf-3(config-router-af)#neighbor 2.2.2.2 activate Leaf-3(config-router-af)#neighbor 2.2.2.2 send-community both Leaf-3(config-router-af)#end
Проверяем активные сессии:
Leaf-1#show bgp l2vpn evpn all summary BGP Instance AS 65100(Default) For address family: L2VPN EVPN BGP router identifier 10.65.0.10, local AS number 65100 BGP table version is 1 0 BGP AS-PATH entries 0 BGP Community entries 0 BGP Prefix entries (Maximum-prefix:4294967295) Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 2.2.2.2 4 65200 23 22 1 0 0 00:16:41 0 3.3.3.3 4 65300 8 5 1 0 0 00:02:22 0 Total number of neighbors 2, established neighbors 2
Видим, что соседи в адресном семействе EVPN активны, приступаем к настройке VXLAN.
Задаём интерфейс c которого будет строиться VXLAN туннель:
Leaf-1(config)#vtep Leaf-1(config-vtep)#source loopback 1 Leaf-1(config-vtep)#exit
Теперь нам нужно создать VNI и задать rd и route-target. Route-target в режиме «auto» генерируется из номер VNI и номера AS, а так как мы используем на стенде EBGP и номера AS у нас разные, нам требуется выставить route-target вручную:
Leaf-1(config)#evpn Leaf-1(config-evpn)#vni 10000 Leaf-1(config-evpn-vni)#rd auto Leaf-1(config-evpn-vni)#route-target both 10000:10000 Leaf-1(config-evpn-vni)#end
Далее создаём VXLAN и ассоциируем его с VLAN, номер VXLAN должен совпадать с номер VNI.
Leaf-1(config)#vlan 345 Leaf-1(config-vlan)#exit Leaf-1(config)#vxlan 10000 Leaf-1(config-vxlan)#extend-vlan 345 Leaf-1(config-vxlan)#exit
Смотрим вывод команды «show bgp l2vpn evpn all»
Leaf-1#show bgp l2vpn evpn all
BGP Instance AS 65100(Default)
BGP table version is 1, local router ID is 10.65.0.10, bgp instance 65100(Default)
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
S Stale, b - backup entry, m - multipath, f Filter, a additional-path
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 10.65.0.10:1 (Default for EVI 10000)
*> 3:0:32:1.1.1.1/72
1.1.1.1 32768 i
Total number of prefixes 1
Видим что после настройки начал генерироваться маршруты типа 3.
Аналогичные настройки делаем на других Leaf:
LEAF-2Leaf-2(config)#vtep Leaf-2(config-vtep)#source loopback 1 Leaf-2(config)#vlan 345 Leaf-2(config-vtep)#exit Leaf-2(config)#evpn Leaf-2(config-evpn)# vni 10000 Leaf-2(config-evpn-vni)# rd auto Leaf-2(config-evpn-vni)# route-target both 10000:10000 Leaf-2(config-evpn-vni)#vxlan 10000 Leaf-2(config-vxlan)# extend-vlan 345 Leaf-2(config-vxlan)#exit
LEAF-3
Leaf-3(config)#vtep Leaf-3(config-vtep)#source loopback 1 Leaf-3(config)#vlan 345 Leaf-3(config-vlan)#exit Leaf-3(config)#evpn Leaf-3(config-evpn)# vni 10000 Leaf-3(config-evpn-vni)# rd auto Leaf-3(config-evpn-vni)# route-target both 10000:10000 Leaf-3(config-evpn-vni)#vxlan 10000 Leaf-3(config-vxlan)# extend-vlan 345 Leaf-3(config-vxlan)#exit
После завершения настроек видим логи:
%VXLAN-6-VTEP_DISCOVERED: A new VTEP [2.2.2.2] discovered on VXLAN 10000. %LINEPROTO-5-UPDOWN: Line protocol on Interface OverlayTunnel 6145, changed state to up. %VXLAN-6-VTEP_DISCOVERED: A new VTEP [3.3.3.3] discovered on VXLAN 10000. %LINEPROTO-5-UPDOWN: Line protocol on Interface OverlayTunnel 6146, changed state to up.
Смотрим вывод команды «show vxlan»
Leaf-1#sh vxlan VXLAN Total Count: 1 VXLAN Capacity : 4000 VXLAN 10000 Symmetric property : FALSE Router Interface : - Extend VLAN : 345 VTEP Adjacency Count: 2 VTEP Adjacency List : Interface Source IP Destination IP Type --------- --------- -------------- ---- OverlayTunnel 6145 1.1.1.1 2.2.2.2 dynamic OverlayTunnel 6146 1.1.1.1 3.3.3.3 dynamic
Видим в выводе 2 активных VXLAN туннеля.
Настроим порты в сторону виртуальных машин:
Leaf-1(config)#interface tenGigabitEthernet 0/1 Leaf-1(config-if-TenGigabitEthernet 0/1)#switchport mode trunk Leaf-1(config-if-TenGigabitEthernet 0/1)#switchport trunk allowed vlan only 345
Leaf-3(config)#interface tenGigabitEthernet 0/1 Leaf-3(config-if-TenGigabitEthernet 0/1)#switchport mode trunk Leaf-3(config-if-TenGigabitEthernet 0/1)#switchport trunk allowed vlan only 345
Запустим пинг с VM-1 до VM-3:
VM@techdep:~$ ping 172.16.0.3 PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 64 bytes from 172.16.0.3: icmp_seq=1 ttl=64 time=0.304 ms 64 bytes from 172.16.0.3: icmp_seq=2 ttl=64 time=0.338 ms 64 bytes from 172.16.0.3: icmp_seq=3 ttl=64 time=0.328 ms 64 bytes from 172.16.0.3: icmp_seq=4 ttl=64 time=0.354 ms
Посмотрим вывод «sh vxlan mac»:
Leaf-1#sh vxlan mac Vxlan MAC Address Type Location Interface Vlan Live Time ----- ----------- ---- -------- --------- ---- --------- 10000 08bf.b8c5.d0a0 DYNAMIC LOCAL TenGigabitEthernet 0/1 345 0d 00:06:26 10000 08c6.b326.a7ea PROTOCOL REMOTE OverlayTunnel 6146 - 0d 00:05:22
Видим что mac-адрес изучен за интерфейсом TenGigabitEthernet 0/1 в Vlan 345 который ассоциирован с VXLAN 10000.
Так же можем увидеть что mac-адрес VM-3 доступен через туннель 6146, данный номер назначается из динамического диапазона, начиная с 6145.
К какому именно VTEP какой номер OverlayTunnel относится, можно увидеть в выводе «show vxlan».
На этом закончим настройку L2VNI, данный пример является лишь базовой настройкой.
Для дополнительной информации вы можете обратиться к документации на сайте «Руководства по установке и конфигурации (ftp ресурс)».
Автор:
Парфёнов А.А.
QTECH 2024 г.
Модель: QSW-6900
Вид оборудования: Ethernet коммутаторы

