VxLAN BGP Replication
Voor de configuratie van VxLAN zijn er verschillende methodes van implementatie. Eén van deze implementaties is BGP Replication, onderstaande topologie zal gebruikt worden:
Om te kunnen starten met de configuratie van VxLAN BGP Replication is onderstaande underlay configuratie benodigd. We maken gebruik van OSPF om alle benodigde loopback interfaces bekend te maken bij alle nodes. Vervolgens implementeren we BiDir PIM met een phantom RP. Hierbij dient wel de opmerking gemaakt te worden dat deze combinatie (VxLAN met BiDir PIM) pas vanaf NX-OS 9.2(1) gesupporteerd wordt. De keuze voor BiDir PIM komt voort uit de VxLAN RFC (RFC7348) waarin BiDir geadviseerd wordt.
LEAF configuratie (underlay)
feature ospf
feature pim
!
ip pim rp-address 10.10.10.10 group-list 224.0.0.0/4 bidir
!
interface loopback0
! LEAF 3: ip address 3.3.3.3/32
! LEAF 4: ip address 4.4.4.4/32
! LEAF 5: ip address 5.5.5.5/32
ip router ospf 10 area 0.0.0.0
!
interface loopback1
! LEAF 3: ip address 33.33.33.33/32
! LEAF 4: ip address 44.44.44.44/32
! LEAF 5: ip address 55.55.55.55/32
ip router ospf 10 area 0.0.0.0
!
interface Ethernet1/1
no switchport
! LEAF 3: ip address 13.13.13.3/24
! LEAF 4: ip address 14.14.14.4/24
! LEAF 5: ip address 15.15.15.5/24
ip ospf network point-to-point
ip router ospf 10 area 0.0.0.0
no shutdown
!
interface Ethernet1/2
no switchport
! LEAF 3: ip address 23.23.23.3/24
! LEAF 4: ip address 24.24.24.4/24
! LEAF 5: ip address 25.25.25.5/24
ip ospf network point-to-point
ip router ospf 10 area 0.0.0.0
no shutdown
!
router ospf 10
SPINE configuratie (underlay)
feature ospf
feature pim
!
ip pim rp-address 10.10.10.10 group-list 224.0.0.0/4 bidir
!
interface loopback0
! SPINE 1: ip address 1.1.1.1/32
! SPINE 2: ip address 2.2.2.2/32
ip router ospf 10 area 0.0.0.0
!
interface loopback10
! SPINE 1: ip address 10.10.10.10/32
! SPINE 2: ip address 10.10.10.10/31
ip router ospf 10 area 0.0.0.0
!
interface Ethernet1/3
no switchport
! SPINE 1: ip address 13.13.13.1/24
! SPINE 2: ip address 23.23.23.2/24
ip ospf network point-to-point
ip router ospf 10 area 0.0.0.0
no shutdown
!
interface Ethernet1/4
no switchport
! SPINE 1: ip address 14.14.14.1/24
! SPINE 2: ip address 24.24.24.2/24
ip ospf network point-to-point
ip router ospf 10 area 0.0.0.0
no shutdown
!
interface Ethernet1/5
no switchport
! SPINE 1: ip address 15.15.15.1/24
! SPINE 2: ip address 25.25.25.2/24
ip ospf network point-to-point
ip router ospf 10 area 0.0.0.0
no shutdown
!
router ospf 10
Het is vanuit de vendor aanbevolen op de loopback voor de underlay en de loopback voor VxLAN van elkaar te scheiden. Loopback 0 is voor OSPF en later voor BGP, Loopback 1 zal gebruikt worden voor de VxLAN configuratie.
De PIM configuratie is op basis gedaan van een static RP. Een static RP configuratie zal sneller herstellen na een verstoring dan één die gebaseerd is op Auto-RP / BSR.
Configuratie verificatie
Laten wij controleren dat wij de routes zien en dat wij vanuit het Loopback 1 interface kunnen pingen naar het Loopback 1 adres van een andere LEAF.
NXOS-3# show ip route 4.4.4.4/32
IP Route Table for VRF "default"
'' denotes best ucast next-hop
'*' denotes best mcast next-hop
'[x/y]' denotes [preference/metric]
'%' in via output denotes VRF
4.4.4.4/32, ubest/mbest: 2/0
*via 13.13.13.1, Eth1/1, [110/81], 00:00:42, ospf-10, intra
*via 23.23.23.2, Eth1/2, [110/81], 00:00:42, ospf-10, intra
NXOS-3# ping 4.4.4.4 count 1 source-interface loopback 1
PING 4.4.4.4 (4.4.4.4): 56 data bytes
64 bytes from 4.4.4.4: icmp_seq=0 ttl=253 time=6.193 ms
Nu OSPF werkt controleren we de multicast routing:
NXOS-3(config)# interface ethernet 1/1
NXOS-3(config-if)# ip igmp join-group 239.100.100.100
NXOS-4# ping multicast 239.100.100.100 interface ethernet 1/1
PING 239.100.100.100 (239.100.100.100): 56 data bytes
64 bytes from 13.13.13.3: icmp_seq=0 ttl=253 time=6.311 ms
64 bytes from 13.13.13.3: icmp_seq=1 ttl=253 time=6.016 ms
64 bytes from 13.13.13.3: icmp_seq=2 ttl=253 time=7.734 ms
64 bytes from 13.13.13.3: icmp_seq=3 ttl=253 time=8.85 ms
NXOS-1# show ip mroute 239.100.100.100
IP Multicast Routing Table for VRF "default"
(*, 239.100.100.100/32), bidir, uptime: 00:01:58, igmp ip pim
Incoming interface: loopback10, RPF nbr: 10.10.10.10
Outgoing interface list: (count: 1)
Ethernet1/3, uptime: 00:01:58, igmp, pim
We zien geen S,G omdat we gebruik maken BiDir PIM.
Nu de multicast gecontroleerd is kan er begonnen worden met de basis BGP configuratie, deze configuratie zal later gebruikt worden om de VxLAN specifieke configuratie toe te voegen (EVPN).
LEAF configuratie (BGP)
feature bgp
!
router bgp 65000
! LEAF 3: router-id 3.3.3.3
! LEAF 4: router-id 4.4.4.4
! LEAF 5: router-id 5.5.5.5
! SPINE 1: neighbor 1.1.1.1
! SPINE 2: neighbor 2.2.2.2
remote-as 65000
update-source loopback0
Nu dat BGP geconfigureerd is kunnen we deze BGP configuratie controleren en verifiëren.
NXOS-3# show bgp sessions
Total peers 2, established peers 2
ASN 65000
VRF default, local ASN 65000
peers 2, established peers 2, local router-id 3.3.3.3
State: I-Idle, A-Active, O-Open, E-Established, C-Closing, S-Shutdown
Neighbor ASN Flaps LastUpDn|LastRead|LastWrit St Port(L/R) Notif(S/R)
1.1.1.1 65000 0 00:35:31|00:00:39|00:00:07 E 46814/179 0/0
2.2.2.2 65000 0 00:03:41|00:00:10|00:00:40 E 16758/179 0/0
Nu dat de BGP neighbor’s opgebouwd zijn kunnen we verder gaan met de VxLAN specifieke configuratie, we gaan hierbij gebruik maken van de L2 extensie EVPN.
LEAF configuratie (VxLAN)
nv overlay evpn
feature vn-segment-vlan-based
feature nv overlay
!
vlan 66
vn-segment 6600
vlan 67
vn-segment 6700
!
interface nve1
no shutdown
host-reachability protocol bgp
source-interface loopback1
member vni 6600
mcast-group 239.66.66.66
member vni 6700
mcast-group 239.67.67.67
!
router bgp 65000
! SPINE 1: neighbor 1.1.1.1
! SPINE 2: neighbor 2.2.2.2
address-family l2vpn evpn
send-community
send-community extended
Voor het activeren van de VxLAN functionaliteit activeren wij feature nv overlay. Voor het kunnen koppelen van een VLAN aan een VxLAN (VxLAN Gateway) hebben we de feature nv-segment-vlan-based nodig.
We maken hier gebruik van VLAN 66 en koppelen dit aan VxLAN 6600, al het verkeer wordt door middel van BGP EVPN verstuurd naar de VTEP’s. Ditzelfde doen we ook voor VLAN 67.
SPINE configuratie (VxLAN)
nv overlay evpn
!
router bgp 65000
! LEAF 3: neighbor 3.3.3.3
! LEAF 4: neighbor 4.4.4.4
! LEAF 5: neighbor 5.5.5.5
address-family l2vpn evpn
send-community
send-community extended
route-reflector-client
Op de spine’s zal de EVPN feature aangezet moeten worden op vervolgens de EVPN configuratie te kunnen plaatsen onder het BPG process. Deze EVPN configuratie zorgt ervoor dat de extra informatie in de BGP updates door de spine’s wordt verwerkt.
VxLAN verificatie
Er zijn verschillende commando’s om de componenten van VxLAN te controleren. Laten we beginnen met de controle of wij data-plane of control-plane geconfigureerd hebben, dit zou control-plane moeten zijn:
NXOS-3# show nve interface
Interface: nve1, State: Up, encapsulation: VXLAN
VPC Capability: VPC-VIP-Only [not-notified]
Local Router MAC: 5000.0003.0007
Host Learning Mode: Control-Plane
Source-Interface: loopback1 (primary: 33.33.33.33, secondary: 0.0.0.0)
We kunnen controleren dat de NVE interface online is gekomen:
NXOS-3# show interface nve 1
nve1 is up
admin state is up, Hardware: NVE
MTU 9216 bytes
Encapsulation VXLAN
Auto-mdix is turned off
RX
ucast: 0 pkts, 0 bytes - mcast: 0 pkts, 0 bytes
TX
ucast: 0 pkts, 0 bytes - mcast: 0 pkts, 0 bytes
Vervolgens kunnen we de NVE relaties controleren:
NXOS-3# show nve peer
Wat hierbij opvalt is dat het NVE peer commando niets laat zien, dat is normaal. Dit commando geeft alleen output als er ook echt netwerkverkeer is van leaf naar leaf, zodra dit verkeer er is zal het commando de connecties naar de NVE peers laten zien waarnaar ook echt verkeer loopt.
NXOS-3# show nve peer
Interface Peer-IP State LearnType Uptime Router-Mac
--------- --------------- ----- --------- -------- -----------------
nve1 44.44.44.44 Up CP 00:00:07 n/a :
Met onderstaand commando controleren wij welke multicast groepen worden gebruikt evenals de mapping van VLAN naar VxLAN VNI.
NXOS-3# show nve vni
Codes: CP - Control Plane DP - Data Plane
UC - Unconfigured SA - Suppress ARP
SU - Suppress Unknown Unicast
Xconn - Crossconnect
MS-IR - Multisite Ingress Replication
Interface VNI Multicast-group State Mode Type [BD/VRF] Flags
nve1 6600 239.66.66.66 Up CP L2 [66]
nve1 6700 239.67.67.67 Up CP L2 [67]
We kunnen onder het BGP proces controleren dat L2VPN op basis van EVPN werkt:
NXOS-2# show bgp l2vpn evpn summary
BGP summary information for VRF default, address family L2VPN EVPN
BGP router identifier 3.3.3.3, local AS number 65000
BGP table version is 15, L2VPN EVPN config peers 2, capable peers 2
3 network entries and 4 paths using 672 bytes of memory
BGP attribute entries [3/492], BGP AS path entries [0/0]
BGP community entries [0/0], BGP clusterlist entries [2/8]
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
1.1.1.1 4 65000 81 74 15 0 0 01:04:10 1
2.2.2.2 4 65000 40 38 15 0 0 00:32:21 1
En we krijgen ook de benodigde informatie m.b.t. MAC adressen via EVPN (let op: deze informatie is alleen te zien als er ook traffic is wat van leaf naar leaf gaat):
NXOS-3# show bgp l2vpn evpn
BGP routing table information for VRF default, address family L2VPN EVPN
BGP table version is 15, Local Router ID is 3.3.3.3
Status: s-suppressed, x-deleted, S-stale, d-dampened, h-history, *-valid, >-best
Path type: i-internal, e-external, c-confed, l-local, a-aggregate, r-redist, I-injected
Origin codes: i - IGP, e - EGP, ? - incomplete, | - multipath, & - backup, 2 - best2
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 3.3.3.3:32833 (L2VNI 6600)
*>l[2]:[0]:[0]:[48]:[0050.7966.6806]:[0]:[0.0.0.0]/216 33.33.33.33 100 32768 i
*>i[2]:[0]:[0]:[48]:[0050.7966.6808]:[0]:[0.0.0.0]/216 44.44.44.44 100 0 i
Route Distinguisher: 4.4.4.4:32833
i[2]:[0]:[0]:[48]:[0050.7966.6808]:[0]:[0.0.0.0]/216 44.44.44.44 100 0 i
*>i 44.44.44.44 100 0 i
En nu de laatste verificatie kunnen wij van VPC-10 pingen naar VPC-12:
VPCS-10> show
NAME IP/MASK GATEWAY
VPCS1 192.168.66.13/24 0.0.0.0
VPCS-12> show
NAME IP/MASK GATEWAY
VPCS1 192.168.66.13/24 0.0.0.0
VPCS-11> ping 192.168.66.13
84 bytes from 192.168.66.13 icmp_seq=1 ttl=64 time=13.637 ms
VPCS-13> ping 192.168.66.11
84 bytes from 192.168.66.11 icmp_seq=1 ttl=64 time=44.261 ms