Try   HackMD

The Control Plane Simplification

Intrinsically, Segment Routing (SR) could be treated as NG-MPLS. As the matter of fact, it really is. The main drivers for embracing SR instead of traditional MPLS (LDP/RSVP) are summarized below.

  • The optimization of the signaling. It is carried out by decoupling additional protocols.
  • ECMP supported. It is one of main shortages of RSVP.
  • Easily distinguish the traffic is being stuck on which node from the troubleshooting aspect.

The reason why SR optimizes the signaling is becauase none of the signaling protocol is required to make SR function, the IGP (OSPF/ISIS) extentions take it over instead. Therefore, RSVP is not required at all for fulfilling MPLS TE in the SR domain.

What Does Segment Routing Differ Traditional LDP

One of the significant differences in between is label allocation. By default, LDP allocates the label for both the node itself (loopback) and every link of that node. If TE has not been considered for the entire IP/MPLS transport then the link labels are not required at all. That is because ECMP is a native behavior of SR. Unlike LDP, SR allocates the label for the node only by default. The node and the link labels in the SR domain are called Prefix SID (segment identifier) and Adjacency SID (segment identifier) respectively.

dCloud: MPLS Segment Routing Introduction v2

Overall Topology

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

SR Configuration

Both the demo platform and the routing protocol are IOS-XRv and OSPF. Other than how to deploy the basic SR domain, the thing needs to be kept in mind in this section is that when LDP and SR both are presenting LSP, LSP is preferred over LDP by default (as the label #2400x shown in the 1st block). The design purpose is to ensure when the MPLS backbone migrates to SR from LDP as seamless as possible. Therefore, the behavior of LDP-preferable is able to be overridden (as the label #1600x shown in the 2nd block).

# Source: XRv-1 # Destination: XRv-6 RP/0/0/CPU0:XR1(config)#do traceroute 10.10.6.6 verbose Wed Jan 22 17:25:04.685 UTC Type escape sequence to abort. Tracing the route to 10.10.6.6 1 172.16.3.3 [MPLS: Label 24007 Exp 0] 9 msec 9 msec 9 msec 2 172.16.4.4 [MPLS: Label 24004 Exp 0] 9 msec 9 msec 9 msec 3 172.16.6.6 9 msec * 9 msec
# Source: XRv-1 # Destination: XRv-6 router ospf 100 segment-routing sr-prefer ! RP/0/0/CPU0:XR1(config)#do traceroute 10.10.6.6 verbose Wed Jan 22 17:27:32.515 UTC Type escape sequence to abort. Tracing the route to 10.10.6.6 1 172.16.3.3 [MPLS: Label 16006 Exp 0] 9 msec 9 msec 9 msec 2 172.16.4.4 [MPLS: Label 16006 Exp 0] 9 msec 9 msec 9 msec 3 172.16.6.6 9 msec * 19 msec

LDP Configuration Removal

Continue with the previous section. The most ideal way to seamlessly migrate traditional MPLS backbone from LDP to SR is

  • Enable SR at first. Both LDP and SR are coexistent in this stage.
  • Override the forwarding path via SR. Both LDP and SR are still coexistent in this stage.
  • Decommission LDP.

SRTE Configuration

As presented by Why We Need Segment Routing (When Do We Need The Adjacency SID). There are two scenarios of TE in SR, per Prefix (node) level, and per Adjacency (link) level. No matter which one, one of the significant differences was presented in this section, the TE tunnel does not need to be a pair in the SR domain, the one-way tunnel could function well. That is why XRv-6 (the receiver) did not deploy any tunnels that point toward XRv-1 (the initiator).

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

# Source: XRv-1 # Destination: XRv-6 interface tunnel-te16 ipv4 unnumbered Loopback0 destination 10.10.6.6 path-option 1 explicit name SRTE segment-routing autoroute announce ! RP/0/0/CPU0:XR1(config)#do show route 10.10.6.6 Wed Jan 22 17:44:09.946 UTC Routing entry for 10.10.6.6/32 Known via "ospf 100", distance 110, metric 4, labeled SR, type intra area Installed Jan 22 17:40:32.111 for 00:03:37 Routing Descriptor Blocks 10.10.6.6, from 10.10.6.6, via tunnel-te16 Route metric is 4 No advertising protos. ! RP/0/0/CPU0:XR1(config)#do show cef 10.10.6.6/32 Wed Jan 22 17:44:23.845 UTC 10.10.6.6/32, version 51, internal 0x1000001 0x83 (ptr 0xa1422874) [1], 0x0 (0xa13edcb0), 0xa20 (0xa1583230) Updated Jan 22 17:40:32.131 Prefix Len 32, traffic index 0, precedence n/a, priority 1 via 10.10.6.6/32, tunnel-te16, 5 dependencies, weight 0, class 0 [flags 0x0] path-idx 0 NHID 0x0 [0xa10e45ec 0x0] next hop 10.10.6.6/32 local adjacency labels imposed {None} ! RP/0/0/CPU0:XR1(config)#do traceroute 10.10.6.6 verbose Wed Jan 22 17:44:46.464 UTC Type escape sequence to abort. Tracing the route to 10.10.6.6 1 * * * 2 * * * 3 172.16.8.6 9 msec * 9 msec

The other thing is that SR supports ECMP natively. If we only care about the destination XRv-6 instead of what the preferred path is then both XRv-2 and XRv-3 are not only just the valid next-hops but also the best next-hops to forward the traffic due to they have the same length forwarding path.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

# Source: XRv-1 # Destination: XRv-6 RP/0/0/CPU0:XR1(config)#do show mpls traffic-eng segment-routing Wed Jan 22 17:36:00.370 UTC (omitted) IGP Id: 10.10.6.6, MPLS TE Id: 10.10.6.6 Segment-Routing: TE Node-SID Index: 6 SRGB Info: Start 16000, Size 8000 Link[0]:Point-to-Point, Nbr IGP Id:10.10.5.5, Nbr Node Id:6, gen:23 Frag Id:3, Intf Address:172.16.5.6, Intf Id:0 Segment-Routing Adjacency-SIDs: 2 Adjacency-SID[0]: 24010, Flags: V, L to Nbr:: IGP Id: 10.10.5.5, MPLS TE Id: 10.10.5.5 Adjacency-SID[1]: 24009, Flags: B, V, L to Nbr:: IGP Id: 10.10.5.5, MPLS TE Id: 10.10.5.5 Nbr Intf Address:172.16.5.5, Nbr Intf Id:0 TE Metric:1, IGP Metric:1 Ext Admin Group: Length: 256 bits Value : 0x:: Attribute Names: Link[1]:Point-to-Point, Nbr IGP Id:10.10.4.4, Nbr Node Id:5, gen:24 Frag Id:4, Intf Address:172.16.6.6, Intf Id:0 Segment-Routing Adjacency-SIDs: 2 Adjacency-SID[0]: 24012, Flags: V, L to Nbr:: IGP Id: 10.10.4.4, MPLS TE Id: 10.10.4.4 Adjacency-SID[1]: 24011, Flags: B, V, L to Nbr:: IGP Id: 10.10.4.4, MPLS TE Id: 10.10.4.4 Nbr Intf Address:172.16.6.4, Nbr Intf Id:0 TE Metric:1, IGP Metric:1 Ext Admin Group: Length: 256 bits Value : 0x:: Attribute Names: Link[2]:Point-to-Point, Nbr IGP Id:10.10.4.4, Nbr Node Id:5, gen:25 Frag Id:5, Intf Address:172.16.8.6, Intf Id:0 Segment-Routing Adjacency-SIDs: 2 Adjacency-SID[0]: 24014, Flags: V, L to Nbr:: IGP Id: 10.10.4.4, MPLS TE Id: 10.10.4.4 Adjacency-SID[1]: 24013, Flags: B, V, L to Nbr:: IGP Id: 10.10.4.4, MPLS TE Id: 10.10.4.4 Nbr Intf Address:172.16.8.4, Nbr Intf Id:0 TE Metric:1, IGP Metric:1 Ext Admin Group: Length: 256 bits Value : 0x:: Attribute Names:

SR TI-LFA Protection

Intrinsically, there is nothing different between LDP and SR from the LFA aspect.

SR TI-LFA Protection

# Source: XRv-1 # Destination: XRv-6 router ospf 100 area 0 fast-reroute per-prefix fast-reroute per-prefix ti-lfa enable ! ! RP/0/0/CPU0:XR1(config)#do show route ospf Wed Jan 22 17:54:40.953 UTC Codes: C - connected, S - static, R - RIP, B - BGP, (>) - Diversion path 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 - ISIS, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, su - IS-IS summary null, * - candidate default U - per-user static route, o - ODR, L - local, G - DAGR, l - LISP A - access/subscriber, a - Application route M - mobile route, r - RPL, (!) - FRR Backup path Gateway of last resort is not set O 10.10.2.2/32 [110/2] via 172.16.1.2, 00:01:03, GigabitEthernet0/0/0/0 [110/0] via 172.16.3.3, 00:01:03, GigabitEthernet0/0/0/1 (!) O 10.10.3.3/32 [110/0] via 172.16.1.2, 00:01:03, GigabitEthernet0/0/0/0 (!) [110/2] via 172.16.3.3, 00:01:03, GigabitEthernet0/0/0/1 O 10.10.4.4/32 [110/0] via 172.16.1.2, 00:01:03, GigabitEthernet0/0/0/0 (!) [110/3] via 172.16.3.3, 00:01:03, GigabitEthernet0/0/0/1 O 10.10.5.5/32 [110/3] via 172.16.1.2, 00:01:03, GigabitEthernet0/0/0/0 [110/0] via 172.16.3.3, 00:01:03, GigabitEthernet0/0/0/1 (!) O 10.10.6.6/32 [110/4] via 10.10.6.6, 00:14:08, tunnel-te16 O 172.16.2.0/24 [110/2] via 172.16.1.2, 00:01:03, GigabitEthernet0/0/0/0 [110/0] via 172.16.3.3, 00:01:03, GigabitEthernet0/0/0/1 (!) O 172.16.4.0/24 [110/0] via 172.16.1.2, 00:01:03, GigabitEthernet0/0/0/0 (!) [110/2] via 172.16.3.3, 00:01:03, GigabitEthernet0/0/0/1 O 172.16.5.0/24 [110/3] via 172.16.1.2, 00:01:03, GigabitEthernet0/0/0/0 [110/0] via 172.16.3.3, 00:01:03, GigabitEthernet0/0/0/1 (!) O 172.16.6.0/24 [110/0] via 172.16.1.2, 00:01:03, GigabitEthernet0/0/0/0 (!) [110/3] via 172.16.3.3, 00:01:03, GigabitEthernet0/0/0/1 O 172.16.8.0/24 [110/0] via 172.16.1.2, 00:01:03, GigabitEthernet0/0/0/0 (!) [110/3] via 172.16.3.3, 00:01:03, GigabitEthernet0/0/0/1 ! RP/0/0/CPU0:XR1(config)#do show mpls forwarding labels 16002 detail Wed Jan 22 17:57:56.580 UTC Local Outgoing Prefix Outgoing Next Hop Bytes Label Label or ID Interface Switched ------ ----------- ------------------ ------------ --------------- ------------ 16002 Pop SR Pfx (idx 2) Gi0/0/0/0 172.16.1.2 0 Updated: Jan 22 17:53:37.538 Path Flags: 0x400 [ BKUP-IDX:1 (0xa0c9c63c) ] Version: 54, Priority: 1 Label Stack (Top -> Bottom): { Imp-Null } NHID: 0x0, Encap-ID: N/A, Path idx: 0, Backup path idx: 1, Weight: 0 MAC/Encaps: 14/14, MTU: 1500 Packets Switched: 0 16006 SR Pfx (idx 2) Gi0/0/0/1 172.16.3.3 0 (!) Updated: Jan 22 17:53:37.538 Path Flags: 0x8300 [ IDX:1 BKUP, NoFwd ] Version: 54, Priority: 1 Label Stack (Top -> Bottom): { 16006 16002 } NHID: 0x0, Encap-ID: N/A, Path idx: 1, Backup path idx: 0, Weight: 0 MAC/Encaps: 14/22, MTU: 1500 Packets Switched: 0 (!): FRR pure backup Traffic-Matrix Packets/Bytes Switched: 0/0

Appendix

Segment Routing Global Block

The default range of SRGB is from 16,000 through 23,999 (8,000 labels could be allocated in total). However, IOS-XR adopts different hierarchy allocation model for both IGP and BGP. As for IGP, the following behaviors are in sequence.

  1. By the instance-level setup. Each instance is able to have respective definition.
  2. By the global-level setup.
  3. By the default range.

Unlike IGP, BGP supports the global-level setup only and there is no default range as well.

References

Podcast: Network Collective - Introduction To Segment Routing

YouTube: iNE - Introduction to Segment Routing

YouTube: Juniper - Segment Routing (SR)

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Return To Index.