Build a Leaf-and-Spine Fabric
The fabric plugin builds a leaf-and-spine topology and adds the generated groups, nodes, and links to the lab topology.
Using the Plugin
Add
plugin: [ fabric ]
to lab topology.Configure fabric parameters with the fabric attribute.
The plugin is invoked early in the netlab topology transformation process and adds fabric groups, nodes, and links to the lab topology. Set fabric.debug to True
to view the generated data structures.
Configuring Fabric Parameters
The plugin is configured with the fabric topology-level dictionary that has these parameters:
Parameter |
Type |
Meaning |
---|---|---|
spines |
integer |
Number of spine devices |
leafs |
integer |
Number of leaf devices |
spine |
dictionary |
Spine parameters |
leaf |
dictionary |
Leaf parameters |
debug |
boolean |
Print generated topology elements |
Leaf- and Spine Parameters
You can specify these leaf- and spine parameters in the leaf and spine dictionaries:
Parameter |
Type |
Meaning |
---|---|---|
name |
format string |
node name template |
group |
string |
netlab group that contains the leaf- or spine devices |
These parameters have the following defaults:
Parameter |
Spine default |
Leaf default |
---|---|---|
name |
|
|
group |
|
|
All other leaf- and spine parameters are copied into the corresponding netlab groups or evaluated and copied into fabric nodes if they are format strings (strings containing {
).
Examples
Create a Simple Fabric Running OSPF
The following lab topology creates a leaf-and-spine fabric with four leaves (L1 through L4) and two spines (S1 and S2). All nodes are Arista EOS switches running OSPF.
defaults.device: eos
module: [ ospf ]
plugin: [ fabric ]
fabric.spines: 2
fabric.leafs: 4
Connect Hosts to the Fabric
The fabric plugin adds nodes and links to the lab topology, which can also contain other nodes and links. As you know the names of the generated nodes, you can connect them to other devices.
The following lab topology has two hosts connected to L1 and L4. L1 and L4 are created by the fabric plugin.
defaults.device: eos
module: [ ospf ]
plugin: [ fabric ]
fabric.spines: 2
fabric.leafs: 4
nodes:
H1:
device: linux
H2:
device: linux
links:
- H1-L1
- H2-L2
Tip
To ensure consistent interface naming on the fabric nodes, the fabric plugin prepends its links to the links list. H1 will be connected to L1’s third Ethernet interface (the first two interfaces connect L1 to S1 and S2).
Building an IBGP + IGP fabric
Building an IBGP fabric with route reflectors running on spine switches requires just minor modifications to Create a Simple Fabric Running OSPF scenario:
Add bgp module to the list of modules
Set global bgp.as parameter to the BGP AS number
Set bgp.rr parameter in the spines group to True
defaults.device: eos
module: [ ospf,bgp ]
bgp.as: 65000
plugin: [ fabric ]
fabric.spines: 2
fabric.leafs: 4
groups:
spines:
bgp.rr: True
Building an EBGP fabric
Building an EBGP fabric in which every leaf switch has a different AS number is slightly more complex. As in the previous example, we can use the spines group to define the spine-layer ASN number, but we’ll use another approach to be consistent with the leaf setup. We’ll use an additional fabric.leaf parameter that sets per-leaf BGP ASN:
defaults.device: eos
module: [ bgp ]
plugin: [ fabric ]
fabric:
spines: 2
leafs: 4
spine.bgp.as: 65100
leaf.bgp.as: '{65000 + count}'