SR-MPLS over Unnumbered Interfaces

After the simple SR-MPLS demo and the dual-stack SR-MPLS setup, it was time for the next obvious question: Does SR-MPLS work over unnumbered IPv4 interfaces1, assuming the implementation of the underlying routing protocol supports them? Of course it does; let’s go through the details, using the same topology I used throughout the Segment Routing workshop @ ITNOG10.

Lab Topology

The unnumbered IPv4 setup required a single change to the initial lab topology – I had to tell netlab to use unnumbered IPv4 on point-to-point links (the full lab topology file is here):

addressing.p2p.ipv4: True

Exploring the SR-MPLS Setup

After setting up netlab, changing into the 1-intro/4-unnumbered directory, and executing netlab up, you’ll have an SR-MPLS network using unnumbered IPv4 P2P interfaces. Let’s do the usual checks:

Do we get SR-MPLS TLVs advertised in IS-IS LSPs?

PE1 IS-IS LSP displayed on Arista EOS
pe2#show isis database detail pe1.00-00Legend:H - hostname conflictU - node unreachableIS-IS Instance: Gandalf VRF: default  IS-IS Level 2 Link State Database    LSPID                   Seq Num  Cksum  Life Length IS  Received LSPID        Flags    pe1.00-00                     3  58379  1185    136 L2  0000.0000.0001.00-00  <>      LSP generation remaining wait time: 0 ms      Time remaining until refresh: 885 s      NLPID: 0xCC(IPv4)      Hostname: pe1      Area addresses: 49.0001      Interface address: 10.0.0.1      IS Neighbor          : p.00                Metric: 10        IPv4 Neighbor Address: 10.0.0.2        IPv4 Interface Address: 10.0.0.1        Adj-sid: 100000 flags: [L V] weight: 0x0      Reachability         : 10.0.0.1/32 Metric: 10 Type: 1 Up        SR Prefix-SID: 1 Flags: [N] Algorithm: 0      Router Capabilities: Router Id: 10.0.0.1 Flags: []        SR Local Block:          SRLB Base: 965536 Range: 65536        Area leader priority: 250 algorithm: 0        Maximum SID depth:          Base MPLS imposition (MSD type 1):  6        SR Capability: Flags: [I]          SRGB Base: 900000 Range: 65536

Compared to the previous examples (numbered IPv4, dual-stack), the IS-IS TLV is somewhat smaller; it has the IS Neighbor TLV, but not the Reachability TLVs for the P2P subnets (obviously). The adjacency SID is attached to the IS Neighbor TLV, so we can still use it for the segment-by-segment traffic engineering.

Because the loopback interfaces and associated SIDs are in the IS-IS TLVs, we should see the prefix segments of all nodes (and we do):

IS-IS SR-MPLS prefix table on PE2 running Arista EOS
pe2#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  900002 Node       R:0 N:1 P:0 E:0 V:0 L:0      p               L2    unprotected          SPF   10.0.0.3/32                   3  900003 Node       R:0 N:1 P:0 E:0 V:0 L:0      pe2             L2    unprotected          SPF

Not surprisingly, the MPLS forwarding table is identical to the simple SR-MPLS example:

MPLS forwarding table on PE2 running Arista EOS
pe2#show mpls route... 100000  A[1]                via M, 10.0.0.2, pop                    EgressACL: apply                    directly connected, Ethernet1                    ca:f0:00:02:00:01, vlan 1006 900002  A[1]                via M, 10.0.0.2, pop                    EgressACL: apply                    directly connected, Ethernet1                    ca:f0:00:02:00:01, vlan 1006 900003  A[1]                via M, 10.0.0.2, swap 900003                    EgressACL: apply                    directly connected, Ethernet1                    ca:f0:00:02:00:01, vlan 1006

Try It Out

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


  1. Unnumbered IPv6 interfaces (more precisely, IPv6 interfaces using only link-local IPv6 addresses) are boring; most IGP routing protocols use them as next hops anyway. ↩︎

Add comment
Sidebar