Я пытался интегрировать Proxmox SDN в уже существующую сеть vxlan с использованием IS-IS. Так мы сможем использовать разные vnet'ы на нескольких кластерах, а также привязывать их к vlan для подключения устаревших устройств. В нашей лабораторной настройке используется route-reflector на spine-коммутаторе и два leaf-коммутатора. Используя IS-IS как «нижний» уровень и evpn, серверы Proxmox (два в кластере и один отдельно) могут получать маршруты от route-reflector. Так виртуальные машины могут общаться с другими ВМ в одном vnet, с ВМ на других кластерах и с устройствами, подключёнными к этому VNI. Лабораторная настройка в целом получилась успешной, но есть один нюанс. Плагин Proxmox SDN добавляет (и не добавляет) несколько опций, из-за чего после каждой перезагрузки конфигурации приходится делать ручные правки. Несколько изменений я могу настроить в frr.conf.local:
Роутер IS-IS:
Код:
router isis 1
net 10.0000.0000.0005.00
redistribute ipv4 connected level-1
log-adjacency-changes
exit
И:
Код:
router bgp 65000
address-family l2vpn evpn
no neighbor VTEP route-map MAP_VTEP_IN in
no neighbor VTEP route-map MAP_VTEP_OUT out
exit
exit
По какой-то причине frr не хочет работать как route-reflector клиент с этими настройками, хотя permit стоит в 1. Я, конечно, не эксперт по frr, но удаление этих настроек сработало. Однако следующие изменения frr.conf.local не воспринимает и они самые важные:
Код:
interface vmbr1
ip router isis 1
exit
Без этого изменения серверы теряют IS-IS в «нижнем» уровне и все маршруты, что фактически выводит из строя всю сеть на хостах. Я пытался немного поковыряться в плагине SDN, но мой perl не на высоте. Можно ли было бы сделать разбор блоков интерфейсов?
Вот ещё немного информации для заинтересованных:
Схема подключённых устройств:
Вот конфиги SDN:
Код:
root@pve1-test:~# cat /etc/pve/sdn/controllers.cfg
evpn: evpn
asn 65000
peers 10.99.99.1
root@pve1-test:~# cat /etc/pve/sdn/zones.cfg
evpn: evpnz1
controller evpn
vrf-vxlan 1001
advertise-subnets 1
ipam pve
mac DE:AA:11:CD:D5:98
mtu 9000
root@pve1-test:~# cat /etc/pve/sdn/vnets.cfg
vnet: vni100
zone evpnz1
tag 100
vnet: vni300
zone evpnz1
tag 300
vnet: vni200
zone evpnz1
tag 200
И конфигурация сети:
Код:
auto lo
iface lo inet static
address 10.99.99.4/32
iface lo inet static
address 10.99.99.4/32
iface eno1 inet manual
iface eno2 inet manual
iface enp8s0f0 inet manual
auto enp8s0f1
iface enp8s0f1 inet manual
mtu 9000
auto vmbr0
iface vmbr0 inet static
address 192.168.245.201/24
gateway 192.168.245.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
auto vmbr1
iface vmbr1 inet static
address 10.1.0.1/31
bridge-ports enp8s0f1
bridge-stp off
bridge-fd 0
mtu 9000
auto vmbr2
iface vmbr2 inet static
address 10.66.100.20/24
bridge-ports enp8s0f0
bridge-stp off
bridge-fd 0
source /etc/network/interfaces.d/*
А вот рабочая конфигурация frr:
Код:
!
frr version 8.5.1
frr defaults datacenter
hostname pve1-test
log syslog informational
service integrated-vtysh-config
!
vrf vrf_evpnz1
vni 1001
exit-vrf
!
interface vmbr1
ip router isis 1
exit
!
router bgp 65000
bgp router-id 10.1.0.1
no bgp hard-administrative-reset
no bgp default ipv4-unicast
coalesce-time 1000
no bgp graceful-restart notification
neighbor VTEP peer-group
neighbor VTEP remote-as 65000
neighbor VTEP bfd
neighbor 10.99.99.1 peer-group VTEP
!
address-family l2vpn evpn
neighbor VTEP activate
advertise-all-vni
exit-address-family
exit
!
router bgp 65000 vrf vrf_evpnz1
bgp router-id 10.1.0.1
no bgp hard-administrative-reset
no bgp graceful-restart notification
!
address-family ipv4 unicast
redistribute connected
exit-address-family
!
address-family ipv6 unicast
redistribute connected
exit-address-family
!
address-family l2vpn evpn
advertise ipv4 unicast
advertise ipv6 unicast
exit-address-family
exit
!
router isis 1
net 10.0000.0000.0004.00
redistribute ipv4 connected level-1
log-adjacency-changes
exit
!
route-map MAP_VTEP_IN permit 1
exit
!
route-map MAP_VTEP_OUT permit 1
exit
!
end
Надеюсь, мой опыт кому-то поможет в будущем, если кто-то наткнётся на эту тему. Если бы кто-то из разработчиков мог взглянуть на мою просьбу по парсингу блока интерфейсов в frr.conf.local — буду очень признателен.
Роутер IS-IS:
Код:
router isis 1
net 10.0000.0000.0005.00
redistribute ipv4 connected level-1
log-adjacency-changes
exit
И:
Код:
router bgp 65000
address-family l2vpn evpn
no neighbor VTEP route-map MAP_VTEP_IN in
no neighbor VTEP route-map MAP_VTEP_OUT out
exit
exit
По какой-то причине frr не хочет работать как route-reflector клиент с этими настройками, хотя permit стоит в 1. Я, конечно, не эксперт по frr, но удаление этих настроек сработало. Однако следующие изменения frr.conf.local не воспринимает и они самые важные:
Код:
interface vmbr1
ip router isis 1
exit
Без этого изменения серверы теряют IS-IS в «нижнем» уровне и все маршруты, что фактически выводит из строя всю сеть на хостах. Я пытался немного поковыряться в плагине SDN, но мой perl не на высоте. Можно ли было бы сделать разбор блоков интерфейсов?
Вот ещё немного информации для заинтересованных:
Схема подключённых устройств:
Вот конфиги SDN:
Код:
root@pve1-test:~# cat /etc/pve/sdn/controllers.cfg
evpn: evpn
asn 65000
peers 10.99.99.1
root@pve1-test:~# cat /etc/pve/sdn/zones.cfg
evpn: evpnz1
controller evpn
vrf-vxlan 1001
advertise-subnets 1
ipam pve
mac DE:AA:11:CD:D5:98
mtu 9000
root@pve1-test:~# cat /etc/pve/sdn/vnets.cfg
vnet: vni100
zone evpnz1
tag 100
vnet: vni300
zone evpnz1
tag 300
vnet: vni200
zone evpnz1
tag 200
И конфигурация сети:
Код:
auto lo
iface lo inet static
address 10.99.99.4/32
iface lo inet static
address 10.99.99.4/32
iface eno1 inet manual
iface eno2 inet manual
iface enp8s0f0 inet manual
auto enp8s0f1
iface enp8s0f1 inet manual
mtu 9000
auto vmbr0
iface vmbr0 inet static
address 192.168.245.201/24
gateway 192.168.245.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
auto vmbr1
iface vmbr1 inet static
address 10.1.0.1/31
bridge-ports enp8s0f1
bridge-stp off
bridge-fd 0
mtu 9000
auto vmbr2
iface vmbr2 inet static
address 10.66.100.20/24
bridge-ports enp8s0f0
bridge-stp off
bridge-fd 0
source /etc/network/interfaces.d/*
А вот рабочая конфигурация frr:
Код:
!
frr version 8.5.1
frr defaults datacenter
hostname pve1-test
log syslog informational
service integrated-vtysh-config
!
vrf vrf_evpnz1
vni 1001
exit-vrf
!
interface vmbr1
ip router isis 1
exit
!
router bgp 65000
bgp router-id 10.1.0.1
no bgp hard-administrative-reset
no bgp default ipv4-unicast
coalesce-time 1000
no bgp graceful-restart notification
neighbor VTEP peer-group
neighbor VTEP remote-as 65000
neighbor VTEP bfd
neighbor 10.99.99.1 peer-group VTEP
!
address-family l2vpn evpn
neighbor VTEP activate
advertise-all-vni
exit-address-family
exit
!
router bgp 65000 vrf vrf_evpnz1
bgp router-id 10.1.0.1
no bgp hard-administrative-reset
no bgp graceful-restart notification
!
address-family ipv4 unicast
redistribute connected
exit-address-family
!
address-family ipv6 unicast
redistribute connected
exit-address-family
!
address-family l2vpn evpn
advertise ipv4 unicast
advertise ipv6 unicast
exit-address-family
exit
!
router isis 1
net 10.0000.0000.0004.00
redistribute ipv4 connected level-1
log-adjacency-changes
exit
!
route-map MAP_VTEP_IN permit 1
exit
!
route-map MAP_VTEP_OUT permit 1
exit
!
end
Надеюсь, мой опыт кому-то поможет в будущем, если кто-то наткнётся на эту тему. Если бы кто-то из разработчиков мог взглянуть на мою просьбу по парсингу блока интерфейсов в frr.conf.local — буду очень признателен.
