In this part we are going to look at the L2VNI setup of the topology. This is basically the VLAN setup of the topology where we can define the vlans in use.

Lets remind ourselves of the topology:

Image

The L2VNI setup is isolated to the leaves as the spines are not involved and are not specifically configured with the underlying VNI setup.

L2VNI Configuration

In our topology, we have servers in vlan 10. By the end of this part, the servers will be able to communicate at layer 2 despite being separated by layer 3 boundaries.

The L2VNI configuration is nice and simple and means it can be replicated for as many layer 2 domain as your needs require.

Lets look at vlan 10 first:

vlan 10
  vn-segment 100010

interface nve1
  member vni 100010
    suppress-arp
    mcast-group 224.1.1.192

evpn
  vni 100010 l2
    rd auto
    route-target import auto
    route-target export auto

The configuration above creates the vlan and assigns the vn-segment ID for the vlan, this should match across the topology for this vlan. Next, we add the vni into the nve interface and add the command to suppress arp, this is a very useful command which allows the leaves to cache mac addresses of nodes attached to prevent excessive ARP messages being sent across the fabric.

The last part of the configuration adds the vni to the evpn control plane so it can be pushed into the MP-BGP topology.

As you can tell, the configuration is very simple to add new L2VNIs.

Verification

Let move the server vPC interfaces onto the correct vlan:

interface port-channel2
  switchport access vlan 10

We should in theory now have layer 2 communication between the servers, lets test that fact between server-1-vl10 and server-2-vl10:

Image

Success! we have layer 2 connectivity. Lets do a few commands to confirm whats happening.

We can check the arp cache on the local vPC leaves to show the flood and learn technique in action:

LEAF-1(config)# show ip arp suppression-cache vlan 10

Flags: + - Adjacencies synced via CFSoE
       L - Local Adjacency
       R - Remote Adjacency
       L2 - Learnt over L2 interface
       PS - Added via L2RIB, Peer Sync
       RO - Dervied from L2RIB Peer Sync Entry

Ip Address      Age      Mac Address    Vlan Physical-ifindex    Flags    Remote Vtep Addrs

10.1.1.1        00:00:16 c29b.c4cc.04ef   10 port-channel2       L2
10.1.1.2        00:00:17 4e29.205e.baf4   10 (null)              R        10.0.1.102  
LEAF-2(config)# show ip arp suppression-cache vlan 10

Flags: + - Adjacencies synced via CFSoE
       L - Local Adjacency
       R - Remote Adjacency
       L2 - Learnt over L2 interface
       PS - Added via L2RIB, Peer Sync
       RO - Dervied from L2RIB Peer Sync Entry

Ip Address      Age      Mac Address    Vlan Physical-ifindex    Flags    Remote Vtep Addrs

10.1.1.1        00:00:19 c29b.c4cc.04ef   10 port-channel2       L2
10.1.1.2        00:00:20 4e29.205e.baf4   10 (null)              R        10.0.1.102 

We can see from LEAF-1 we have 10.1.1.1 (server-1-vl10) learnt locally and then 10.1.1.2 (server-2-vl10) learnt remotely from the remote vtep of 10.0.1.102 which is important as thats the secondary IP address we configured that is common between both vPC members, meaning this entry isn't tied to a single VTEP, but both of them.

We can also check the BGP l2vpn evpn table for the address 10.1.1.2 on LEAF-1:

LEAF-1# show bgp l2vpn evpn 10.1.1.2
BGP routing table information for VRF default, address family L2VPN EVPN
Route Distinguisher: 10.0.0.3:32777    (L2VNI 100010)
BGP routing table entry for [2]:[0]:[0]:[48]:[4e29.205e.baf4]:[32]:[10.1.1.2]/248, version 333
Paths: (2 available, best #2)
Flags: (0x000212) (high32 00000000) on xmit-list, is in l2rib/evpn, is not in HW

  Path type: internal, path is valid, not best reason: Router Id, no labeled nexthop
             Imported from 10.0.0.6:32777:[2]:[0]:[0]:[48]:[4e29.205e.baf4]:[32]:[10.1.1.2]/248 
  AS-Path: NONE, path sourced internal to AS
    10.0.1.102 (metric 81) from 10.0.0.1 (10.0.0.1)
      Origin IGP, MED not set, localpref 100, weight 0
      Received label 100010
      Extcommunity: RT:64500:100010 SOO:10.0.1.102:0 ENCAP:8
      Originator: 10.0.0.6 Cluster list: 10.0.0.1 

  Advertised path-id 1
  Path type: internal, path is valid, is best path, no labeled nexthop, in rib
             Imported from 10.0.0.5:32777:[2]:[0]:[0]:[48]:[4e29.205e.baf4]:[32]:[10.1.1.2]/248 
  AS-Path: NONE, path sourced internal to AS
    10.0.1.102 (metric 81) from 10.0.0.1 (10.0.0.1)
      Origin IGP, MED not set, localpref 100, weight 0
      Received label 100010
      Extcommunity: RT:64500:100010 SOO:10.0.1.102:0 ENCAP:8
      Originator: 10.0.0.5 Cluster list: 10.0.0.1 

  Path-id 1 not advertised to any peer

Route Distinguisher: 10.0.0.5:32777
BGP routing table entry for [2]:[0]:[0]:[48]:[4e29.205e.baf4]:[32]:[10.1.1.2]/248, version 328
Paths: (2 available, best #2)
Flags: (0x000202) (high32 00000000) on xmit-list, is not in l2rib/evpn, is not in HW

  Path type: internal, path is valid, not best reason: Neighbor Address, no labeled nexthop
  AS-Path: NONE, path sourced internal to AS
    10.0.1.102 (metric 81) from 10.0.0.2 (10.0.0.2)
      Origin IGP, MED not set, localpref 100, weight 0
      Received label 100010
      Extcommunity: RT:64500:100010 SOO:10.0.1.102:0 ENCAP:8
      Originator: 10.0.0.5 Cluster list: 10.0.0.2 

  Advertised path-id 1
  Path type: internal, path is valid, is best path, no labeled nexthop
             Imported to 1 destination(s)
             Imported paths list: L2-100010
  AS-Path: NONE, path sourced internal to AS
    10.0.1.102 (metric 81) from 10.0.0.1 (10.0.0.1)
      Origin IGP, MED not set, localpref 100, weight 0
      Received label 100010
      Extcommunity: RT:64500:100010 SOO:10.0.1.102:0 ENCAP:8
      Originator: 10.0.0.5 Cluster list: 10.0.0.1 

  Path-id 1 not advertised to any peer

Route Distinguisher: 10.0.0.6:32777
BGP routing table entry for [2]:[0]:[0]:[48]:[4e29.205e.baf4]:[32]:[10.1.1.2]/248, version 332
Paths: (2 available, best #1)
Flags: (0x000202) (high32 00000000) on xmit-list, is not in l2rib/evpn, is not in HW

  Advertised path-id 1
  Path type: internal, path is valid, is best path, no labeled nexthop
             Imported to 1 destination(s)
             Imported paths list: L2-100010
  AS-Path: NONE, path sourced internal to AS
    10.0.1.102 (metric 81) from 10.0.0.1 (10.0.0.1)
      Origin IGP, MED not set, localpref 100, weight 0
      Received label 100010
      Extcommunity: RT:64500:100010 SOO:10.0.1.102:0 ENCAP:8
      Originator: 10.0.0.6 Cluster list: 10.0.0.1 

  Path type: internal, path is valid, not best reason: Neighbor Address, no labeled nexthop
  AS-Path: NONE, path sourced internal to AS
    10.0.1.102 (metric 81) from 10.0.0.2 (10.0.0.2)
      Origin IGP, MED not set, localpref 100, weight 0
      Received label 100010
      Extcommunity: RT:64500:100010 SOO:10.0.1.102:0 ENCAP:8
      Originator: 10.0.0.6 Cluster list: 10.0.0.2 

  Path-id 1 not advertised to any peer

Now, thats a lot of output. But, lets break it down. We can see the top route is attached to the RD 10.0.0.3:32777. We can see that it was imported from the RD 10.0.0.6:32777 which is leaf-4 and another from 10.0.0.5:32777 which is leaf-3, these are where the remote endpoint are connected. The next hop on all of the routes is 10.0.1.102 which shows the advertise-pip BGP command is working.

We also see a SOO (Site of Origin) on these routes. This is a loop prevention method used to stop a vPC switch learning routes from its peer.

We can also see the MAC address and IP address of server-2 in the entry to confirm its the correct mapping.

On the RDs 10.0.0.5:32777 and 10.0.0.6:32777 we can see that these routes have been imported into the L2VNI L2-100010, as these are the routes that have actually come from the remote leaves, 10.0.0.3:32777 is essentially an import of these routes into its own routing table.

Note - The mac addresses are learnt as normal so a host has to communicate on the network for the leaf to grab its MAC address and advertise it. This is the role of arp suppression in flood and learn.

In the next part we will look at setting up anycast gateways for the L2VNIs so we can start the process of getting the hosts of their layer 2 network.

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *