Original Message:
Sent: 05-23-2023 11:13
From: peter-w
Subject: PCE-initiated coloured LSPs from a Cisco PCE to Juniper PCC
Hi Willi,
I have tested it because you made me curious with your question ;-)
The outcome was a bit disillusioning in my opinion. The reason is that the mapping to PCE-inititad LSPs using install-nexthop lsp-regex works only if the intended SRTE LSPs and other available LSPs are of equal cost. For testing, I configured two additional static SRTE LSPs to check whether the mapping really works and to my surprise it will not use the PCE-initiated LSPs afterwards because it has a worse "tunnel source preference". Static configuration as the tunnel source is prefered over PCEP. Nevertheless, I decided to test a "nasty" workaround by applying a multipath policy to inet.3 that allows to take all SPRING-TE LSPs into account. Afterwards a multipath entry using both the static SRTE and the PCE-initiated SRTE was available in the inet.3, which in turn allowed the mapping of the VPN route to the PCE-initated LSPs. IMHO I wouldn't see such a configuration as valid option in a productive environment.
Here are some outputs from the lab router:
set routing-options rib inet.3 policy-multipath policy SPF-TE-LB
set policy-options policy-statement SPF-TE-LB term 1 from protocol spring-te
set policy-options policy-statement SPF-TE-LB term 1 then accept
set policy-options policy-statement C-SRTE term 0 from community COLOR-128
set policy-options policy-statement C-SRTE term 0 then install-nexthop strict
set policy-options policy-statement C-SRTE term 0 then install-nexthop lsp-regex SRTE-R*
set policy-options policy-statement C-SRTE term 0 then next policy
deactivate policy-options policy-statement C-SRTE term 0
set policy-options policy-statement C-SRTE term 1 from community COLOR-128
set policy-options policy-statement C-SRTE term 1 then install-nexthop strict
set policy-options policy-statement C-SRTE term 1 then install-nexthop lsp-regex PCE-POL-1_R*
set policy-options policy-statement C-SRTE term 1 then next policy
pweymann@r6> show path-computation-client lsp
Name Status PLSP-Id LSP-Type Controller Path-Setup-Type Template
SRTE-R4 (Act) 53 local - spring-te
SRTE-R5 (Act) 54 local - spring-te
PCE-POL-1_R4 (Act) 55 ext-provised R9 spring-te
PCE-POL-1_R5 (Act) 56 ext-provised R9 spring-te
pweymann@r6> show route table inet.3 192.168.0.4 protocol spring-te
inet.3: 8 destinations, 23 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
192.168.0.4/32 *[SPRING-TE/8] 00:18:08, metric 1, metric2 16777215
> to 192.168.1.33 via xe-0/0/1.0, Push 16004, Push 16003, Push 24(top)
<<< SRTE-R4
[SPRING-TE/8] 00:17:57, metric 0, metric2 16777215
> to 192.168.1.33 via xe-0/0/1.0, Push 16004, Push 16003, Push 16002(top)
<<< PCE-POL-1_R4
pweymann@r6> show route table inet.3 192.168.0.5 protocol spring-te
inet.3: 8 destinations, 23 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
192.168.0.5/32 *[SPRING-TE/8] 00:18:12, metric 1, metric2 16777215
> to 192.168.1.33 via xe-0/0/1.0, Push 16005, Push 16007, Push 24(top)
<<< SRTE-R5
[SPRING-TE/8] 00:18:01, metric 0, metric2 16777215
> to 192.168.1.33 via xe-0/0/1.0, Push 16005, Push 16007, Push 16002(top)
<<< PCE-POL-1_R5
pweymann@r6> show route table inet.3 protocol multipath
inet.3: 8 destinations, 23 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
192.168.0.4/32 [Multipath/8] 00:07:32, metric 16777215
to 192.168.1.33 via xe-0/0/1.0, Push 16004, Push 16003, Push 24(top)
> to 192.168.1.33 via xe-0/0/1.0, Push 16004, Push 16003, Push 16002(top)
192.168.0.5/32 [Multipath/8] 00:07:32, metric 16777215
to 192.168.1.33 via xe-0/0/1.0, Push 16005, Push 16007, Push 24(top)
> to 192.168.1.33 via xe-0/0/1.0, Push 16005, Push 16007, Push 16002(top)
pweymann@r6> show route table VRF1 111.111.111.109
VRF1.inet.0: 4 destinations, 10 routes (4 active, 0 holddown, 0 hidden)
@ = Routing Use Only, # = Forwarding Use Only
+ = Active Route, - = Last Active, * = Both
111.111.111.109/32 @[BGP/170] 00:06:30, localpref 100, from 192.168.0.1
AS path: I, validation-state: unverified
to 192.168.1.33 via xe-0/0/1.0, Push 17, Push 16004, Push 16003, Push 16002(top)
[BGP/170] 00:06:30, localpref 100, from 192.168.0.8
AS path: I, validation-state: unverified
to 192.168.1.33 via xe-0/0/1.0, Push 17, Push 16004, Push 16003, Push 16002(top)
[BGP/170] 00:06:30, localpref 100, from 192.168.0.1
AS path: I, validation-state: unverified
to 192.168.1.33 via xe-0/0/1.0, Push 17, Push 16005, Push 16007, Push 16002(top)
[BGP/170] 00:06:30, localpref 100, from 192.168.0.8
AS path: I, validation-state: unverified
to 192.168.1.33 via xe-0/0/1.0, Push 17, Push 16005, Push 16007, Push 16002(top)
#[Multipath/255] 00:06:30, metric2 16777215
to 192.168.1.33 via xe-0/0/1.0, Push 17, Push 16004, Push 16003, Push 16002(top)
to 192.168.1.33 via xe-0/0/1.0, Push 17, Push 16005, Push 16007, Push 16002(top)
pweymann@r6> show route forwarding-table table VRF1 destination 111.111.111.109
Routing table: VRF1.inet
Internet:
Destination Type RtRef Next hop Type Index NhRef Netif
111.111.111.109/32 user 0 ulst 1048576 2
indr 1048574 3
192.168.1.33 Push 17, Push 16004, Push 16003, Push 16002(top) 609 2 xe-0/0/1.0
indr 1048575 3
192.168.1.33 Push 17, Push 16005, Push 16007, Push 16002(top) 610 2 xe-0/0/1.0
When I set the install-nexthop to the LSPs named SRTE-R*, than the underlaying LSPs changes accordingly:
pweymann@r6# show | compare
[edit policy-options policy-statement C-SRTE]
! active: term 0 { ... }
! inactive: term 1 { ... }
[edit]
pweymann@r6# commit
commit complete
[edit]
pweymann@r6# exit
Exiting configuration mode
pweymann@r6> show route table VRF1 111.111.111.109
VRF1.inet.0: 4 destinations, 10 routes (4 active, 0 holddown, 0 hidden)
@ = Routing Use Only, # = Forwarding Use Only
+ = Active Route, - = Last Active, * = Both
111.111.111.109/32 @[BGP/170] 00:00:05, localpref 100, from 192.168.0.1
AS path: I, validation-state: unverified
to 192.168.1.33 via xe-0/0/1.0, Push 17, Push 16004, Push 16003, Push 24(top)
[BGP/170] 00:00:05, localpref 100, from 192.168.0.8
AS path: I, validation-state: unverified
to 192.168.1.33 via xe-0/0/1.0, Push 17, Push 16004, Push 16003, Push 24(top)
[BGP/170] 00:00:05, localpref 100, from 192.168.0.1
AS path: I, validation-state: unverified
to 192.168.1.33 via xe-0/0/1.0, Push 17, Push 16005, Push 16007, Push 24(top)
[BGP/170] 00:00:05, localpref 100, from 192.168.0.8
AS path: I, validation-state: unverified
to 192.168.1.33 via xe-0/0/1.0, Push 17, Push 16005, Push 16007, Push 24(top)
#[Multipath/255] 00:00:05, metric2 16777215
to 192.168.1.33 via xe-0/0/1.0, Push 17, Push 16004, Push 16003, Push 24(top)
to 192.168.1.33 via xe-0/0/1.0, Push 17, Push 16005, Push 16007, Push 24(top)
pweymann@r6> show route forwarding-table table VRF1 destination 111.111.111.109
Routing table: VRF1.inet
Internet:
Destination Type RtRef Next hop Type Index NhRef Netif
111.111.111.109/32 user 0 ulst 1048579 2
indr 1048577 3
192.168.1.33 Push 17, Push 16004, Push 16003, Push 24(top) 611 2 xe-0/0/1.0
indr 1048578 3
192.168.1.33 Push 17, Push 16005, Push 16007, Push 24(top) 612 2 xe-0/0/1.0
Really an interesting topic, but full of pitfalls and contraints. Not sure if this helps you.
Regards,
Peter
------------------------------
Peter Weymann
Original Message:
Sent: 05-21-2023 23:46
From: WILLY MEIER
Subject: PCE-initiated coloured LSPs from a Cisco PCE to Juniper PCC
Hi Peter,
One additional question. Have you tried install-nexthop as an alternative way to steer traffic to a specific SRTE LSP received from the PCE? AS there is not support for colours, I was wondering if there was a way to resolve to a specific based on a community.
Thanks,
Willy
------------------------------
WILLY MEIER
Original Message:
Sent: 04-25-2023 02:02
From: peter-w
Subject: PCE-initiated coloured LSPs from a Cisco PCE to Juniper PCC
Sorry, I just saw that this references a limitation of PCE-delegated LSPs and not PCE-initated LSPs. I have also tested PCE-delegated LSPs using dynamic tunnels in 22.4R1 and it works with using colors but the color definition is configured locally. For PCE-initiated LSPs, as I wrote, I see the same limitation as you have mentioned. Nevertheless I have my doubts that it is supported to use the color definition coming from the PCE for initated LSPs at the moment.
------------------------------
Peter Weymann
Original Message:
Sent: 04-24-2023 12:53
From: peter-w
Subject: PCE-initiated coloured LSPs from a Cisco PCE to Juniper PCC
Hello Willy,
I have experienced the same behavior and found the following in the documentation:
https://www.juniper.net/documentation/en_US/junos/topics/reference/general/release-notes/20.1/infocus-topicmaps/infocus-pcep-for-spring-te.html
Segment Routing for PCEP Limitations and Unsupported Features
The support of segment routing for PCEP does not add any additional performance burden on the system; however, it has the following limitations:
PCE-delegated LSPs does not support the following:
- Colored SR-TE LSPs
- IPv6 LSPs
- Secondary segment list of source-routing-path. Only one path of the segment list can be delegated.
- Multi-segment standard. Only one segment list must be present in the candidate path.
Maybe it will be supported in future releases.
Regards
Peter
------------------------------
Peter Weymann
Original Message:
Sent: 04-24-2023 00:16
From: WILLY MEIER
Subject: PCE-initiated coloured LSPs from a Cisco PCE to Juniper PCC
Good day! I have been working on implementing PCE-initiated LSPs on Juniper PCC from a Cisco PCE for a SR-MPLS based network with multiple domains. It is working good, but for an unknown reason the color attribute of the SRTE tuple is not taken by the Juniper PCC. I have tried with Cisco PCC and it accepts the color as an attribute of the SRTE policy.
From debugs, I don't see any clue about the reason of this issue. So I would like to ask first, if color is supported as an attribute of the srte tuple that can be received from the PCE, and second if there is anything that requires to be enabled in the PCC in order to accept this attribute.
#PCEP
pce pccd {
local-address 1.1.1.1;
destination-ipv4-address 100.200.100.200;
destination-port 4189;
pce-type active stateful;
lsp-provisioning;
spring-capability;
}
#PCEP message received on PCC
Mar 30 23:27:49.337245 [229] pccd_rpd_debug_lsp_info(): rx pcreq name(PCE-LATENCY) path() template() is src dest ipv6(0) src(1.1.1.1) dst(2.1.1.1) msg_trigger() type(3) state(1) control(1) flags(0x0) admin grp exclude(0) admin grp include any(0) admin grp include all(0) setup prio(0) hold prio(0) bw(0bps) metric(3100) binding type (0) binding value (0)
It shows other attributes but not the srte color.
#PCEP (Last line shows the color attribute)
RP/0/RP0/CPU0:Mar 31 00:06:05.138 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_tx_msg:808 Sending Initiate to 1.1.1.1.
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_send_initiate_msg:9450 Size with SRP: 20
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_send_initiate_msg:9482 Size after adding LSP: 68
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_send_initiate_msg:9497 Size after adding EP: 80
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_send_initiate_msg:9503 Size after adding vendor-info: 104
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_send_initiate_msg:9517 Size after adding ASSO: 104
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_send_initiate_msg:9540 Size after adding ERO: 188
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_send_initiate_msg:9547 Size after adding metric: 200
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_send_initiate_msg:9902 *** ST 3, sr_ero_subobj_size = 16
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_send_initiate_msg:9902 *** ST 3, sr_ero_subobj_size = 16
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_send_initiate_msg:9902 *** ST 3, sr_ero_subobj_size = 16
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_send_initiate_msg:9902 *** ST 3, sr_ero_subobj_size = 16
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_send_initiate_msg:9902 *** ST 3, sr_ero_subobj_size = 16
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_add_vendor_object:8041 Added Vendor ID: 9
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_add_color_tlv:7904 Added COLOR TLV header: color: 10
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_add_preference_tlv:7930 Added PREFERENCE TLV header: preference: 100
RP/0/RP0/CPU0:Mar 31 00:06:05.139 UTC: pce_server[1143]: DBG-PCEP:[139836093351680] pce_add_vendor_object:8051 Added vendor obj Vendor-id:9, color:10, preference:100
Hope someone can help me to clarify this behaviour.
Thanks!
Willy
------------------------------
WILLY MEIER
------------------------------