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:

topology

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