In a previous post I showed how to create express segments. There, the underlying lsps were rsvp based.
Similarly, we can use SR based lsps to build our express segments.
As we have seen with rsvp based lsps, junos looks for express segments members candidates into inet.3.
With uncolored SRTE paths this approach will work as those lsps are placed into inet.3.
Anyhow, colored lsps are stored into inetcolor.0 by default.
First thing to do is to define a rib group to copy routes from inetcolor.0 to inet.3:
set routing-options rib-groups color-to-inet3 import-rib [ inetcolor.0 inet.3 ]
We should be ready to build our express segment.
Our reference topology is the following:
![](https://iosonounrouter.wordpress.com/wp-content/uploads/2023/08/image-2.png?w=617)
We are going to define a SRTE path from r4a to r1a and include that into an express segment.
Let’s add some config lines to be sure SRTE paths can be computed correctly:
set protocols isis traffic-engineering l3-unicast-topology
set protocols source-packet-routing no-chained-composite-next-hop
Then the colored lsp itself:
set protocols source-packet-routing segment-list r1a-via-r3a inherit-label-nexthops
set protocols source-packet-routing segment-list r1a-via-r3a auto-translate
set protocols source-packet-routing segment-list r1a-via-r3a hop1 ip-address 100.3.3.3
set protocols source-packet-routing segment-list r1a-via-r3a hop1 label-type node
set protocols source-packet-routing segment-list r1a-via-r3a hop2 ip-address 100.1.1.1
set protocols source-packet-routing segment-list r1a-via-r3a hop2 label-type node
set protocols source-packet-routing source-routing-path srte-r1a to 100.1.1.1
set protocols source-packet-routing source-routing-path srte-r1a color 999
set protocols source-packet-routing source-routing-path srte-r1a binding-sid 1000999
set protocols source-packet-routing source-routing-path srte-r1a primary r1a-via-r3a
Lsp is up:
root@r4a# run show spring-traffic-engineering lsp
To State LSPname
100.1.1.1-999<c> Up srte-r1a
and the express segment:
set protocols express-segments segment-set seg-r1a membership-policy expr-pol-r1a
set protocols express-segments traffic-engineering
set policy-options policy-statement expr-pol-r1a from route-filter 100.1.1.1/32 exact install-nexthop lsp srte-r1a
set policy-options policy-statement expr-pol-r1a then accept
Anyhow
root@r4a# run show express-segments
No express-segments found.
That’s because we defined the rib group but did not apply it anywhere:
set protocols source-packet-routing rib-group ipv4-color color-to-inet3
And here we go!
root@r4a# run show express-segments
To Segment Link Status Elapsed Segment
Label LocalID Time Name
-- ------- ------- ------ ------- -------
100.1.1.1 19 2147483652 Up 00:00:02 seg-r1a-100.1.1.1
Finally, we verify express segment is advertised via BGP-LS (bgp-ls related conf is omitted here):
root@r4a# run show route advertising-protocol bgp 192.168.45.1 protocol express-segments
lsdist.0: 13 destinations, 13 routes (13 active, 0 holddown, 0 hidden)
Prefix Nexthop MED Lclpref AS path
NODE { AS:100 BGP-LS ID:100 IPv4:100.1.1.1 STATIC:0 }/1216
* Self I
Area border router: No
External router: No
Attached: No
Overload: No
Prefix Nexthop MED Lclpref AS path
NODE { AS:100 BGP-LS ID:100 IPv4:100.4.4.4 STATIC:0 }/1216
* Self I
Area border router: No
External router: No
Attached: No
Overload: No
Prefix Nexthop MED Lclpref AS path
LINK { Local { AS:100 BGP-LS ID:100 IPv4:100.4.4.4 }.{ IfIndex:2147483652 } Remote { AS:100 BGP-LS ID:100 IPv4:100.1.1.1 }.{ IfIndex:0 } STATIC:0 }/1216
* Self I
Metric: 20
TE Metric: 20
Average delay: 20
Minimum delay: 20
Maximum delay: 20
Link name: seg-r1a-100.1.1.1
Label: 19, Flags: 0x60, Weight: 1
Express segment is “modeled” as a link and stored inside TED and lsdist.0:
root@r4b# run show ted link topology-type l3-unicast detail
...
100.4.4.4->100.1.1.1, Local: 0.0.0.0, Remote: 0.0.0.0
Local interface index: 2147483652, Remote interface index: 0
Link name: seg-r1a-100.1.1.1
LocalPath: 0, Metric: 20, IGP metric: 20, Average delay: 20, Minimum delay: 20, Maximum delay: 20
localBW [0] 0bps [1] 0bps [2] 0bps [3] 0bps
localBW [4] 0bps [5] 0bps [6] 0bps [7] 0bps
IPV4 P2P-Adj-SID SID: 19 Flags: 0x30 Weight: 1
root@r1b# run show route table lsdist.0 te-link-remote-node-ip 100.1.1.1
lsdist.0: 13 destinations, 13 routes (13 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
LINK { Local { AS:100 BGP-LS ID:100 IPv4:100.4.4.4 }.{ IfIndex:2147483652 } Remote { AS:100 BGP-LS ID:100 IPv4:100.1.1.1 }.{ IfIndex:0 } STATIC:0 }/1216
*[BGP/170] 00:10:54, localpref 100, from 200.4.4.4
AS path: 100 I, validation-state: unverified
> to 192.168.112.1 via ge-0/0/0.0
to 192.168.113.1 via ge-0/0/1.0
root@r1b# run show ted link topology-type l3-unicast | match 100.1.1.1
100.4.4.4 100.1.1.1 0 0bps
That’s it! We have made express segments more flexible by extending the types of underlay we cna use to build them
Ciao
IoSonoUmberto