Segment Routing: configuring the SRGB in Junos



The first segment routing implementation in Junos did not allow to configure the SRGB (Segment Routing Global Block). The SRGB was dynamically allocated upon the "index-range" configuration. A new Junos feature available in 17.2R1 allows to configure the SRGB.


In versions prior to 17.2R1, Junos required to configure the "index-range" as follows:

s@RTR> show configuration protocols isis source-packet-routing
node-segment {
    ipv4-index 5;
    index-range 10000;
}

s@RTR> show isis database RTR.00-00 detail
IS-IS level 1 link-state database:

IS-IS level 2 link-state database:

RTR.00-00 Sequence: 0x579, Checksum: 0x47db, Lifetime: 47851 secs
  IPV4 Index: 5
  Node Segment Blocks Advertised:
    Start Index : 0, Size : 10240, Label-Range: [ 800000, 810239 ]


In a segment routing network, having the same SRGB configured on all nodes allows for a troubleshooting simplicity. In the case of a Prefix-SID, the label value does not change when crossing nodes.



Starting Junos 17.2R1, Juniper allows to configure the SRGB by using the following configuration statement:

s@RTR> show configuration protocols isis source-packet-routing
srgb start-label 16000 index-range 10000;


This new configuration statement is incompatible with the previous "index-range" configuration, so when migrating to the SRGB configuration, the old "index-range" statement must be removed otherwise the configuration will not commit.

The SRGB can be modified to any value but if it overlaps with any dynamic label already allocated the SRGB value will not be used (commit works) and a log message will be triggered:

Apr 18 16:13:31  RTR rpd[24824]: SRGB label ranges from 10500 to 20499 conflict with label allocated by label types Dynamic

As a result, the configuration database will have the new SRGB configuration, but the IGP process will keep using the old one until the next reboot.

Modifying the SRGB has an impact on the Segment Routing MPLS transit traffic as the MPLS FIB entries must be rewritten with the new input label value.