Building express segments with SRTE lsps

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:

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

Leave a comment