Saturday, June 1, 2019

Spine and Leaf Practical Applications, RIPv2

This is only slightly trolling, but is primarily to outline the topological simplicity of Spine-and-Leaf networking, in a way that is suspiciously similar to Cisco classes.

First things first, here's the diagram. This is performed using a set of four Cat3560s, enterprise licensed and wired in a redundant square topology to simulate a wide variety of topologies with minimal modification. At some point I'll post this setup as well, it was recommended in the book CCIE Routing and Switching v5.1, Bridging the Gap Between CCNP and CCIE
YAML Link

So this is actually pretty simple - as everything shouldbe Layer 3. We begin by configuring the Spines:


hostname rip-s0
interface Loopback0
 ip address 10.6.0.240 255.255.255.255
interface FastEthernet0/22
 no switchport
 ip address 10.6.240.2 255.255.255.254
interface FastEthernet0/24
 no switchport
 ip address 10.6.240.0 255.255.255.254

hostname rip-s1
interface Loopback0
 ip address 10.6.0.241 255.255.255.255
interface FastEthernet0/21
 no switchport
 ip address 10.6.241.0 255.255.255.254
interface FastEthernet0/23
 no switchport
 ip address 10.6.241.2 255.255.255.254

Some explanation here:
  • We're using /31s to save address space as leaf-spine-leaf links are numerous and chew through address space like no tomorrow. If you'd like to know more about /31 usage, it's here.
  • I focused on IP Address Management (IPAM) before the actual network design, assigning pre-planned prefixes. In this example, each switch has a virtual number, making it easy to pre-provision and organize network topologies for scale. Remember, this is all to handle frequent loop-free changes at scale - this is important!
    • S0: 240 (10.6.240.x/31, 10.6.0.240)
    • S1: 241 (10.6.241.x/31, 10.6.0.241)
    • L0: 0 (10.6.0.0)
    • L1: 1 (10.6.0.1)
  • No switchport forces ports into Layer 3 mode.
And then the Leafs:

hostname rip-l0
interface Loopback0
 ip address 10.6.0.0 255.255.255.255
interface FastEthernet1/0/21
 no switchport
 ip address 10.6.241.1 255.255.255.254
interface FastEthernet1/0/24
 no switchport
 ip address 10.6.240.1 255.255.255.254

hostname rip-l1
 interface Loopback0
 ip address 10.6.0.1 255.255.255.255
interface FastEthernet0/22
 no switchport
 ip address 10.6.240.3 255.255.255.254
interface FastEthernet0/23
 no switchport
 ip address 10.6.241.3 255.255.255.254

Normally, you'd add interconnection on these devices, but loopbacks suffice for this example.
This doesn't support routing but is a functional base configuration - so let's turn on routing (all switches):

ip routing
router rip
 version 2
 network 10.0.0.0
 no auto-summary
Poof! It's working!

rip-l0#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
   D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
   N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
   E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
   i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
   ia - IS-IS inter area, * - candidate default, U - per-user static route
   o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
  10.0.0.0/8 is variably subnetted, 8 subnets, 2 masks
C   10.6.0.0/32 is directly connected, Loopback0
R   10.6.0.1/32 [120/2] via 10.6.241.0, 00:00:06, FastEthernet1/0/21
          [120/2] via 10.6.240.0, 00:00:06, FastEthernet1/0/24
C   10.6.240.0/31 is directly connected, FastEthernet1/0/24
R   10.6.0.240/32 [120/1] via 10.6.240.0, 00:00:12, FastEthernet1/0/24
C   10.6.241.0/31 is directly connected, FastEthernet1/0/21
R   10.6.0.241/32 [120/1] via 10.6.241.0, 00:00:17, FastEthernet1/0/21
R   10.6.240.2/31 [120/1] via 10.6.240.0, 00:00:13, FastEthernet1/0/24
R   10.6.241.2/31 [120/1] via 10.6.241.0, 00:00:17, FastEthernet1/0/21

Oddly enough, RIPv2 isn't supposed to support ECMP, but appears to be doing so here.
Hopefully, this was enlightening - because in this case, this topology is incredibly simple when involving an IGP. There are a few downsides to RIP deployed in this manner:
  • It's chatty and floods all the time, so all changes (network additions) will cause a reconvergence.
  • Link-state failure won't trigger a path re-route
  • It's RIP.
Configurations generated are here, for anyone who would want to experiment with them.

No comments:

Post a Comment

Why Automate? Writing a self-testing Python class for REST or XML API invocation

 So far, most API invocations, at least in terms of what you need to do, are pretty simple to execute. Then again, just about every other ad...