For the complete documentation index, see llms.txt. This page is also available as Markdown.

lab03-ISIS-CLOS

Task Underlay. IS-IS

Set up IS-IS in the underlay network to establish IP connectivity between all network devices.

Network diagram

stand-plan

The lab is built using the following role-based device mapping host- linux, leaf - frr, spine - arista

Underlay IP Address Allocation

• Underlay addressing follows the format 10.x.y.z, where:

⁠◦ x = Data Center ID

⁠◦ y = Spine switch ID

⁠◦ z = Sequential host address per leaf connection

• Host addressing uses the 172.16.x.z/24 format, where:

⁠◦ x = Leaf switch ID

⁠◦ z = Sequential host address

⁠◦ Each leaf switch uses .1 as its own IP in the corresponding subnet

• Loopback addressing uses 192.168.a.b/32, where:

⁠◦ a = 1 for spine switches

⁠◦ a = 2 for leaf switches

⁠◦ b = Spine or leaf ID (assigned sequentially)

• IPv6 addressing uses fd00::[IPv4]

Interconnect ipv4 ipv6

Device A
Interface A
IPv4 A
IPv6 A
Device B
Interface B
IPv4 B
IPv6 B

Spine-1

Eth1

10.1.1.0/31

fd00::10:1:1:0/127

Leaf-1

Eth8

10.1.1.1/31

fd00::10:1:1:1/127

Spine-1

Eth2

10.1.1.2/31

fd00::10:1:1:2/127

Leaf-2

Eth8

10.1.1.3/31

fd00::10:1:1:3/127

Spine-1

Eth3

10.1.1.4/31

fd00::10:1:1:4/127

Leaf-3

Eth8

10.1.1.5/31

fd00::10:1:1:5/127

Spine-2

Eth2

10.1.2.0/31

fd00::10:2:1:0/127

Leaf-1

Eth9

10.1.2.1/31

fd00::10:2:1:1/127

Spine-2

Eth2

10.1.2.2/31

fd00::10:2:1:2/127

Leaf-2

Eth9

10.1.2.3/31

fd00::10:2:1:3/127

Spine-2

Eth3

10.1.2.4/31

fd00::10:2:1:4/127

Leaf-3

Eth9

10.1.2.5/31

fd00::10:2:1:5/127

Host-1

Eth1

172.16.1.2/24

fd00::172:16:1:2/116

Leaf-1

Eth1

172.16.1.1/24

fd00::172:16:1:1/116

Host-2

Eth1

172.16.2.2/24

fd00::172:16:2:2/116

Leaf-2

Eth1

172.16.2.1/24

fd00::172:16:2:1/116

Host-3

Eth1

172.16.3.2/24

fd00::172:16:3:2/116

Leaf-3

Eth1

172.16.3.1/24

fd00::172:16:3:1/116

Host-4

Eth1

172.16.4.2/24

fd00::172:16:4:2/116

Leaf-3

Eth2

172.16.4.1/24

fd00::172:16:4:1/116

loopback

Device
Loopback ipv4
loopback ipv6

Spine-1

192.168.1.1

fd00::192:168:1:1

Spine-2

192.168.1.2

fd00::192:168:1:2

Leaf-1

192.168.2.1

fd00::192:168:2:1

Leaf-2

192.168.2.2

fd00::192:168:2:2

Leaf-3

192.168.2.3

fd00::192:168:2:3

isis.net is configured manually. System id derived from loopback IP address, area id 1.

Table net

Device
NET

Spine-1

49.0001.1921.6801.0001.00

Spine-2

49.0001.1921.6801.0002.00

Leaf-1

49.0001.1921.6802.0001.00

Leaf-2

49.0001.1921.6802.0002.00

Leaf-3

49.0001.1921.6802.0003.00

Since task doesn't contain instructions for host IP addressing, and both leaf and spine nodes are implemented as routers, host IPs are assigned from separate subnets prior to overlay configuration. This ensures basic connectivity while keeping underlay and overlay roles clearly separated.

Once the overlay is deployed, we’ll place all hosts into a single subnet to emulate Layer 2 connectivity.

Launching a lab in the Netlab

Netlab Usage Notes:

As in previous lab we need to enable bfd in frr.yml

Lab Notes:

Encountered issues while configuring BFD for IS-IS. After successfully enabling it manually, I concluded that Netlab’s documentation is inaccurate regarding the lack of BFD support for IS-IS on FRR instances. To enable BFD, I modified the module responsible for FRR IS-IS configuration: /usr/local/lib/python3.10/dist-packages/netsim/ansible/templates/isis/frr.macro.j2

Netlab is supposed to be about zero manual configuration, even if manual edits are faster and simpler. However, I ran into a known FRR limitation - Note: There will be just one BFD session per interface. If both IPv4 and IPv6 are configured, only an IPv6-based session is created.

Note that there will be just one BFD session per interface. In case both IPv4 and IPv6 support are configured then just a IPv6 based session is created. Checked the Arista EOS documentation and found that: BFD is not supported for IPv6 IS-IS. At this point, one could give up — but I suspected the lack of support was due to incomplete module implementation, not platform limitations. Manual testing confirmed that BFD for IS-IS over IPv6 works on EOS. To integrate it cleanly, I extended the EOS IS-IS module:

/usr/local/lib/python3.10/dist-packages/netsim/ansible/templates/isis/eos.macro.j2

Final caveat: EOS requires explicit protocol declaration for BFD. Since FRR runs in dual-stack mode, EOS must be explicitly told to use IPv6 for BFD sessions.

File Topology For quick reference, here’s the inline listing:

topology.yml

Validating

spine-1
spine-2

Verify ping reachability to all device loopbacks from leaf-3

leaf-3 pings

Device configuration files:

Spine-1 Spine-2 Leaf-1 Leaf-2 Leaf-3

Last updated