Building BGP EVPN VXLAN datacenter fabric – Part 3 (Underlay)

Quick Intro

The main purpose of the Underlay network is to help with establishing communication between VTEP (Virtual Tunnel Endpoint) interfaces.
The underlay network is typically built using traditional IP routing protocols like OSPF/IS-IS or BGP and is responsible for forwarding packets between network devices based on their IP addresses. This layer ensures that the VXLAN tunnels, which form the overlay network, have a reliable path for data transmission. The underlay network handles the transport of encapsulated VXLAN traffic, enabling the overlay to focus on delivering L2/L3 services such as MAC address learning and routing without worrying about the physical topology beneath.

In my example, I’ll be using OSPF, to simplify the configuration process. On such a small scale it’ll be hard to see any specific benefits achievable using IS-IS as a routing protocol for the Underlay Network.

Following the IP address schema I defined in the first Part I’ll assign IP addresses on the Loopbacks and interconnecting interfaces

Loopbacks:

HostnameInterfaceIP
dc01-spine01Loopback010.255.255.1/32
dc01-spine02Loopback010.255.255.2/32
dc01-r01-leaf01Loopback010.255.255.3/32
dc01-r01-leaf02Loopback010.255.255.4/32
dc01-r02-leaf01Loopback010.255.255.5/32
dc01-r02-leaf02Loopback010.255.255.6/32
dc01-r03-leaf01Loopback010.255.255.7/32
dc01-r03-leaf02Loopback010.255.255.8/32

Interconnecting interfaces:

Interconnects will use 172.16.1.0/24 network.

Each interconnect interface will be configured as /30 subnet, where the lowest IP address will be assigned to the spine switch.

I’ll start from the left side of the topology and will continue with all the following interconnect interfaces, hence as a result I’ll have 12 x /30 networks.

Configuration:

As an example, I’ll post configuration related to the first leaf switch only, the rest of the switches will be configured similarly:

feature ospf
!
router ospf UNDERLAY
  router-id 10.255.255.3
  name-lookup
  passive-interface default
!
interface loopback0
  description UNDERLAY
  ip address 10.255.255.3/32
  ip router ospf UNDERLAY area 0.0.0.0
!
interface Ethernet1/1
  no switchport
  ip address 172.16.1.2/30
  ip ospf network point-to-point
  no ip ospf passive-interface
  ip router ospf UNDERLAY area 0.0.0.0
  no shutdown
!
interface Ethernet1/2
  no switchport
  ip address 172.16.1.26/30
  ip ospf network point-to-point
  no ip ospf passive-interface
  ip router ospf UNDERLAY area 0.0.0.0
  no shutdown
!
ip host dc01-spine01 10.255.255.1
ip host dc01-spine02 10.255.255.2
!

After applying configuration to spines and leaves the OSPF neighbors output will show successfully adjacent peers

dc01-r01-leaf01# show ip ospf neighbors 
 OSPF Process ID UNDERLAY VRF default
 Total number of neighbors: 2
 Neighbor ID     Pri State            Up Time  Address         Interface
 dc01-spine01      1 FULL/ -          02:28:59 172.16.1.1      Eth1/1 
 dc01-spine02      1 FULL/ -          00:34:03 172.16.1.25     Eth1/2
dc01-spine01# sh ip ospf neighbors 
 OSPF Process ID UNDERLAY VRF default
 Total number of neighbors: 6
 Neighbor ID     Pri State            Up Time  Address         Interface
 dc01-r01-leaf01   1 FULL/ -          02:19:50 172.16.1.2      Eth1/1 
 dc01-r02-leaf01   1 FULL/ -          00:07:17 172.16.1.10     Eth1/2 
 dc01-r03-leaf01   1 FULL/ -          00:01:56 172.16.1.18     Eth1/3 
 dc01-r01-leaf02   1 FULL/ -          00:09:28 172.16.1.6      Eth1/4 
 dc01-r02-leaf02   1 FULL/ -          00:03:43 172.16.1.14     Eth1/5 
 dc01-r03-leaf02   1 FULL/ -          00:00:46 172.16.1.22     Eth1/6 

Also, all Leaf switches should have routes to every Loopback within the Underlay network:

dc01-r01-leaf01# sh ip route ospf | grep -A 2 /32
10.255.255.1/32, ubest/mbest: 1/0
    *via 172.16.1.1, Eth1/1, [110/41], 02:28:40, ospf-UNDERLAY, intra
10.255.255.2/32, ubest/mbest: 1/0
    *via 172.16.1.25, Eth1/2, [110/41], 00:36:48, ospf-UNDERLAY, intra
10.255.255.4/32, ubest/mbest: 2/0
    *via 172.16.1.1, Eth1/1, [110/81], 00:20:04, ospf-UNDERLAY, intra
    *via 172.16.1.25, Eth1/2, [110/81], 00:20:04, ospf-UNDERLAY, intra
10.255.255.5/32, ubest/mbest: 2/0
    *via 172.16.1.1, Eth1/1, [110/81], 00:19:12, ospf-UNDERLAY, intra
    *via 172.16.1.25, Eth1/2, [110/81], 00:19:04, ospf-UNDERLAY, intra
10.255.255.6/32, ubest/mbest: 2/0
    *via 172.16.1.1, Eth1/1, [110/81], 00:15:39, ospf-UNDERLAY, intra
    *via 172.16.1.25, Eth1/2, [110/81], 00:15:36, ospf-UNDERLAY, intra
10.255.255.7/32, ubest/mbest: 2/0
    *via 172.16.1.1, Eth1/1, [110/81], 00:13:51, ospf-UNDERLAY, intra
    *via 172.16.1.25, Eth1/2, [110/81], 00:13:43, ospf-UNDERLAY, intra
10.255.255.8/32, ubest/mbest: 2/0
    *via 172.16.1.1, Eth1/1, [110/81], 00:12:31, ospf-UNDERLAY, intra
    *via 172.16.1.25, Eth1/2, [110/81], 00:12:33, ospf-UNDERLAY, intra

This part completes the underlay configuration and will open a road for the next stage of the configuration.

Leave a comment