So, now we have external connectivity working, but there is a certain scenario where it breaks.

Lets take a look at the topology:

Image

The issue

If we were on either server-3-vl10 or server-4-vl20 and the LACP hashing decided to forward traffic towards LEAF-3, what would happen if the connection between LEAF-3 and the Firewall was down?

Well, this:

Image

Any traffic trying to go outside of the fabric just fails. With us having LACP, some IPs will likely work, because of the hashing being done, some of the traffic flows will go to LEAF-4 which is in full operation, we can see that by trying another IP and seeing if its hashed differently:

Image

Interesting! But its still bust.

The reason why this has happened, is that the BGP peering from LEAF-3 to the Firewall has gone down:

leaf-3# show bgp vrf external ipv4 unicast summary 
BGP summary information for VRF external, address family IPv4 Unicast
BGP router identifier 10.32.60.1, local AS number 64500
BGP table version is 35, IPv4 Unicast config peers 1, capable peers 0
5 network entries and 23 paths using 980 bytes of memory
BGP attribute entries [21/7560], BGP AS path entries [1/6]
BGP community entries [0/0], BGP clusterlist entries [10/40]

Neighbor        V    AS    MsgRcvd    MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.32.60.3      4 64520          0          0        0    0    0 00:08:56 Idle     

This is interesting, as surely this IP address is still reachable? We have the vPC peer link still connected and this is a peering from an SVI:

leaf-3# ping 10.32.60.3 vrf external count 10
PING 10.32.60.3 (10.32.60.3): 56 data bytes
64 bytes from 10.32.60.3: icmp_seq=0 ttl=62 time=22.881 ms
64 bytes from 10.32.60.3: icmp_seq=1 ttl=62 time=5.915 ms
64 bytes from 10.32.60.3: icmp_seq=2 ttl=62 time=5.303 ms
64 bytes from 10.32.60.3: icmp_seq=3 ttl=62 time=4.965 ms
64 bytes from 10.32.60.3: icmp_seq=4 ttl=62 time=6.639 ms
64 bytes from 10.32.60.3: icmp_seq=5 ttl=62 time=5.1 ms
64 bytes from 10.32.60.3: icmp_seq=6 ttl=62 time=6.027 ms
64 bytes from 10.32.60.3: icmp_seq=7 ttl=62 time=6.55 ms
64 bytes from 10.32.60.3: icmp_seq=8 ttl=62 time=6.874 ms
64 bytes from 10.32.60.3: icmp_seq=9 ttl=62 time=6.839 ms

--- 10.32.60.3 ping statistics ---
10 packets transmitted, 10 packets received, 0.00% packet loss
round-trip min/avg/max = 4.965/7.709/22.881 ms

So it pings, but we cant establish a BGP session? Before we look at the fix, lets take a look at why we have lost connectivity from end clients.

Looking at the routing table on LEAF-3 it does have a default route still:

LEAF-3# show ip route 0.0.0.0/0 vrf all
IP Route Table for VRF "OVERLAY-TENANT1"

0.0.0.0/0, ubest/mbest: 1/0
    *via 10.0.1.4%default, [200/0], 00:07:31, bgp-64500, internal, tag 64520, segid: 100999 tunnelid: 0xa000104 encap: VXLAN

IP Route Table for VRF "OVERLAY-TENANT2"

0.0.0.0/0, ubest/mbest: 1/0
    *via 10.0.1.4%default, [200/0], 00:07:31, bgp-64500, internal, tag 64520, segid: 100999 (Asymmetric) tunnelid: 0xa000104 encap: VXLAN
IP Route Table for VRF "external"

0.0.0.0/0, ubest/mbest: 1/0
    *via 10.0.1.4%default, [200/0], 00:07:31, bgp-64500, internal, tag 64520, segid: 100999 (Asymmetric) tunnelid: 0xa000104 encap: VXLAN

However, its showing the next hop as being 10.0.1.4 which is LEAF-4 but its sending it over the underlay. This wont work because if we actually look at the packet its sourced from the Anyast VTEP IP address that both leaves share:

Image

So, in order to resolve this, there is a specific vPC configuration we need to enable. By default, the eBGP TTL is set at 1. This is because BGP expects you to be directly connected, you can change this. However, because the BGP packets are now going over the peer link to LEAF-4, its decrementing the TTL to 0 and therefore is unable to forward the packet any further.

leaf-3# show ip arp 10.32.60.3 vrf external | begin Address
Address         Age       MAC Address     Interface       Flags
10.32.60.3      00:17:55  badb.eefb.ad30  Vlan3260                 
leaf-3# show mac address-table address badb.eefb.ad30 | begin VLAN
   VLAN     MAC Address      Type      age     Secure NTFY Ports
---------+-----------------+--------+---------+------+----+------------------
  3260     badb.eefb.ad30   dynamic  NA         F      F    vPC Peer-Link

We could get around this by bumping up the eBGP TTL on the Firewall and Leaf, but thats not a great idea. There is a vPC enhancement that fixes this for us and allows us to form routing peerings using the vPC peer link!

Resolution

The configuration is completed under the vPC domain on both members:

vpc domain 200
  layer3 peer-router

Pretty quickly, we should see the peering come back up:

leaf-3# show bgp vrf external ipv4 unicast summary 
BGP summary information for VRF external, address family IPv4 Unicast
BGP router identifier 10.32.60.1, local AS number 64500
BGP table version is 37, IPv4 Unicast config peers 1, capable peers 1
5 network entries and 24 paths using 1076 bytes of memory
BGP attribute entries [22/7920], BGP AS path entries [1/6]
BGP community entries [0/0], BGP clusterlist entries [10/40]

Neighbor        V    AS    MsgRcvd    MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.32.60.3      4 64520         12         21       37    0    0 00:03:37 1         

Now that peering is up, lets check the routing table for 0.0.0.0/0 now on LEAF-3:

leaf-3# show ip route 0.0.0.0/0 vrf all
IP Route Table for VRF "OVERLAY-TENANT1"

0.0.0.0/0, ubest/mbest: 1/0
    *via 10.32.60.3%external, [20/0], 00:03:58, bgp-64500, external, tag 64520
IP Route Table for VRF "OVERLAY-TENANT2"

0.0.0.0/0, ubest/mbest: 1/0
    *via 10.32.60.3%external, [20/0], 00:03:58, bgp-64500, external, tag 64520
IP Route Table for VRF "external"

0.0.0.0/0, ubest/mbest: 1/0
    *via 10.32.60.3, [20/0], 00:03:58, bgp-64500, external, tag 64520

We now see the 'real' next-hop for the default route which is the firewall. Lets see if that has helped our server out:

Image

That looks to have done it. We have connectivity back, albeit this is over the peer link. There isn't really any other way of getting this traffic to the Firewall in this failure scenario.

And thats it, we now have a more resilient fabric. There is another topic on resilience which is next up. Which is related specifically to vPC.


0 Comments

Leave a Reply

Avatar placeholder

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

0 Comments

Leave a Reply

Avatar placeholder

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