Segment Routing Traffic Engineering – First, you need to remember MPLS-Traffic engineering operation.
MPLS-traffic engineering requires four steps, as shown below, for its operation.
Link information such as bandwidth, IGP metric, TE metric, and SRLG is flooded throughout the IGP domain by the link state protocols.
The path is calculated either with CSPF in a distributed manner or with offline tools as a centralized fashion.
If a suitable path is found, it is signalled via RSVP-TE and the RSVP assigns the label for the tunnels.
The traffic is placed in the tunnels.
Figure – IP MPLS Traffic Engineering
In the diagram shown above – if the traffic flows between R1 and R5 when the packet travels to R2 – the IGP chooses the top path as the shortest path. This is because the cost of R2 to R5 through R3 is smaller than that of R2 to R5 through R6.
As you must have observed, R2-R6-R7-R4 link is not used during this operation.
With MPLS-traffic engineering, both the top and bottom path can be used.
The top path has high latency and high throughput path; as a result, it can be used for data traffic.
On the other hand, the bottom path has low latency, low throughput path, and expensive link; thus, it can be used for latency sensitive traffic, including voice and video.
To complete this operation, we need to create two MPLS-traffic engineering tunnels: one tunnel for data and the other tunnel for voice traffic. After doing that, we can place CBTS (Class based traffic selection) option of MPLS TE and voice traffic into voice LSP (TE tunnel). Next, we can identify data traffic and place it into LSP (TE tunnel).
How can we achieve the Traffic Engineering operation with Segment Routing?
Segment routing traffic engineering
I have explained Node/Prefix SID in one of the previous sections.
Now, you know that Node/Prefix SID is assigned to the loopback addresses of all segment router enabled devices, and SID is unique in the routing domain.
Also, there is another SID type flooded with IGP packet.
Adjacency Segment ID
While Adjacency SID is unique to the local router, it is globally not as unique as Node/Prefix SID.
Routers automatically allocate an Adjacency Segment ID to their interfaces, especially when the segment routing is enabled on the device.
In the topology shown above, R2 allocates Adjacency SID to the interface of R6.
Label 22001 is the adjacency SID of R2 towards R3 interface, and it is used for steering traffic from the shortest path (perhaps, you do not desire to use only the shortest path).
Label 16005 is the Node/Prefix SID of R5.
If the packet is sent from R1 to R5 with two SID, 22001 and 16005 (since R2 usually send 22001 for its local adjacency), R1 will send the packet to R2; R2 will pop 22001, sending the remaining packet towards R6 with16005 – which is Node/Prefix SID of R5.
R6 will send the packet to R7 because it is the shortest path to R5.
Node/Prefix SID is used in the shortest path routing, and it has ECMP capability.
What’s more, Adjacency SID is used in explicit path routing.
NOTE: While Adjacency SID is used for Explicit Path Routing, Node/Prefix SID follows the shortest path.
I will provide more examples so that you can understand how to use node and Adjacency SID to provide an explicit path for the traffic flows.
Figure – Node and adjacency segment id
Our aim is to send traffic between router A and router J; however, we do not want to use E-G link.
In this operation, we will use the A-C-E-F-H-J path.
To achieve our aim, we need to reach E. After that, we will divert the traffic to the E-F link. Next, F will transfer the traffic to J, which is the final destination.
Router A should put three label/Segment ID on the packet.
SID 1600, the first SID, will travel to router E.
The second SID is 16002, which is the Adjacency SID for the R2-R3 interface. This SID is unique, and it is known only by the ingress router, not by C.
The third SID is 16003, which is the Node/Prefix SID of Router J.
Router C receives the packet with three SID, pops the 16001, and sends the remaining two labels to router E.
Router E receives the packet with 16002 SID, which is the Adjacency SID towards router F. Thus, router E pops it, and sends the remaining packet to router F.
Router F receives the packet with SID 16003, which is the Node/Prefix SID of router J.
So, router F follows the shortest path, sending the packet to router H as well as swapping 16003 with 16003 without changing it.
If router J sends implicit null label, router H pops the 16003 and undergoes PHP, sending the IP packet to the router J.
If we want to carry out this operation using MPLS-TE, we can create an explicit path by providing ERO.
Also read : Segment routing fundamentals