Multivendor SR-MPLS

Summer is almost over, and it’s time to resume regular programming with the next example from the Segment Routing workshop I had at ITNOG10: multi-vendor SR-MPLS. I used the same lab topology as in the previous examples but deployed Arista EOS on PE1, FRRouting on P, and SR Linux on PE21

Lab Topology

I had to change two details in the initial lab topology:

  • The definition of nodes: I had to tell netlab which device type to use for each node.
  • I also had to specify the default license file and device model (type) for the SR Linux node.

The full lab topology file is here.

Multivendor changes to the original IS-IS lab topology
defaults.devices.srlinux.clab.node:
  license: ~/.netlab/license_srlinux.txt
  type: ixr6

nodes:
  pe1:
    device: eos
  p:
    device: frr
  pe2:
    device: srlinux

Exploring Multi-Vendor SR-MPLS

After setting up netlab, changing into the 1-intro/6-multivendor directory, and executing netlab up, you’ll have an SR-MPLS network across three vendors. You can do the same checks we did for the original IS-IS lab and should get (mostly) the same results.

The only significant difference is the Segment Routing Global Block (SRGB) advertised by the three devices. The lab topology does not specify the SRGB values; each device is thus using vendor2 defaults:

Default Segment Routing Global Blocks observed on PE1 running on Arista EOS
pe1#show isis segment-routing global-blocksc - conflicting SR capability TLV, processed first advertisementSystem ID: pe1                  Instance: GandalfSR supported Data-plane: MPLS                   SR Router ID: 10.0.0.1SR Global Block( SRGB ) Size: 65536Number of IS-IS segment routing capable nodes excluding self: 2           SystemId         Base     Size------- -------------- ------------ -----   *            pe1       900000    65536                  p        24000     8000                pe2        16000    10000

Likewise, the prefix segments (displayed as SID + SRGB start) reflect different SRGB ranges:

SR-MPLS prefix segments observed on PE1 running Arista EOS
pe1#show isis segment-routing prefix-segmentsSystem ID: pe1                  Instance: 'Gandalf'SR supported Data-plane: MPLS                   SR Router ID: 10.0.0.1Node: 3      Proxy-Node: 0      Prefix: 0       Total Segments: 3Flag Descriptions: R: Re-advertised, N: Node Segment, P: no-PHP                   E: Explicit-NULL, V: Value, L: Local, A: Proxy-Node attachedSegment status codes: * - Self originated Prefix, L1 - level 1, L2 - level 2, ! - SR-unreachable,                      # - Some IS-IS next-hops are SR-unreachable   Prefix                      SID   Label Type       Flags                        System ID       Level Protection           Algorithm   ------------------------- ----- ------- ---------- ---------------------------- --------------- ----- -------------------- -------------*  10.0.0.1/32                   1  900001 Node       R:0 N:1 P:0 E:0 V:0 L:0      pe1             L2    unprotected          SPF   10.0.0.2/32                   2   24002 Node       R:0 N:1 P:0 E:0 V:0 L:0      p               L2    unprotected          SPF   10.0.0.3/32                   3   16003 Node       R:0 N:1 P:1 E:0 V:0 L:0      pe2             L2    unprotected          SPF
Using default SRGB values in a multi-vendor network is a perfect recipe for confusion. Configure the same SRGB values on all devices in your network. Admittedly, that might be a bit of a juggling act considering the widely different default ranges.

As expected, the device-specific SRGB ranges are reflected in the MPLS LFIB. For example, PE1 (Arista EOS) expects to receive label 900003 to forward traffic to 10.0.0.3/32 (SID 3 advertised by PE2), while P (FRRouting) expects label 24003. The MPLS LFIB entry for 900003 on Arista EOS thus swaps the label with 24003:

MPLS LFIB entry for PE2 loopback displayed on PE1 running Arista EOS
pe1#show mpls lfib route 900003 | begin 900003 IP    900003   [1], 10.0.0.3/32                via M, 10.1.0.1, swap 24003                 payload autoDecide, ttlMode uniform, apply egress-acl                 interface Ethernet1

Try It Out

The workshop GitHub repository includes the installation guidelines; you might want to read them first. After that, you can:


  1. SR Linux needs a license file to run MPLS-related protocols like SR-MPLS. ↩︎

  2. Or netlab in case of SR Linux ↩︎

Add comment
Sidebar