11-18-2021 10:21 AM
Hey folks,
Overview
I have the following topology where as300 runs ISIS L2 + SR. The device iosxrv5 is connected to AS100 via BGP-LU. The device iosxrv4 is the SRMS for the prefixes received from the AS100 internally. On iosxrv5 I am redistributing BGP into ISIS and advertising the internal prefixes. In order to get SRMS (that's iosxrv4) prefixes from iosxrv5, I have used the BGP Proxy-SID but that does not seem to take any effect.
Topology
Problem
iosxrv5 does not use the mapping server regardless of me configuring the BGP proxy-SID under BGP but rather keep using the BGP label for prefixes received by AS100. This way communication does not work and packets destined to AS100 coming from AS400 are lost between iosxrv4 and iosxrv5. In fact, devices underneath iosxrv4 get the right mapping from iosxrv4 being the SRMS.
Configurations
iosxrv5
router bgp 300 address-family ipv4 unicast segment-routing prefix-sid-map network <asr-9k3-ip-address> route-policy SID(6) allocate-label all !
neighbor <as-100-neighbor>
remote-as 100
address-family ipv4 labeled-unicast
route-policy pass in
route-policy pass out
iosxrv4
router isis 300 address-family ipv4 unicast segment-routing prefix-sid-map advertise-local ! segment-routing mapping-server prefix-sid-map address-family ipv4 <as100-prefix> 101 range 1 ! !
Question
This does not work because iosxrv5 keeps using the label received by the BGP-LU peer in AS100. The only way to make it work is to keep the Proxy-Prefix SID configured on iosxrv5 but also move the mapping logic there from iosxrv4. I am very confused on how the Proxy-SID logic works and what's client server they mention at: https://www.cisco.com/c/en/us/td/docs/routers/asr9000/software/asr9k-r6-4/segment-routing/configuration/guide/b-segment-routing-cg-asr9000-64x/b-segment-routing-cg-asr9000-64x_chapter_0110.html#concept_wyr_hq3_cdb
I thought just having the Proxy-Prefix SID would have allowed ioxrv5 to receive mapping from iosxrv4 but it did not. Could you explain how I would need to change things around to make this work while keeping SRMS on iosxrv4 and without enabling LDP?
@Harold RitterFYI since you have inspired me in using the BGP Proxy Prefix SID in: https://community.cisco.com/t5/mpls/segment-routing-bgp-lu-interoperability/m-p/4269410#M23339
Solved! Go to Solution.
11-18-2021 08:36 PM - edited 11-18-2021 08:47 PM
Hi @loris.marcellini ,
Long time no speak. Hope you are doing well. You should definitely have the mapping server on the same router as the BGP proxy prefix SID. Make sure you specify the global label block under the segment-routing stanza. It is recommended to configure it that way. I am running this configuration with XRv 6.6.1 and it works fine.
RP/0/0/CPU0:ASBR2#sh runn segment-routing
Fri Nov 19 04:32:37.112 UTC
segment-routing
global-block 16000 23999
mapping-server
prefix-sid-map
address-family ipv4
192.168.100.1/32 100 range 10
!
!
!
!
RP/0/0/CPU0:ASBR2#
Regards,
11-18-2021 08:36 PM - edited 11-18-2021 08:47 PM
Hi @loris.marcellini ,
Long time no speak. Hope you are doing well. You should definitely have the mapping server on the same router as the BGP proxy prefix SID. Make sure you specify the global label block under the segment-routing stanza. It is recommended to configure it that way. I am running this configuration with XRv 6.6.1 and it works fine.
RP/0/0/CPU0:ASBR2#sh runn segment-routing
Fri Nov 19 04:32:37.112 UTC
segment-routing
global-block 16000 23999
mapping-server
prefix-sid-map
address-family ipv4
192.168.100.1/32 100 range 10
!
!
!
!
RP/0/0/CPU0:ASBR2#
Regards,
11-18-2021 10:38 PM
Hey @Harold Ritter I am good thanks and thanks for replying as usual.
Summary
I made sure I had the global block configured everywhere. However I think I found what my problem was. In fact, whilst I was actually trying to move BGP Proxy Prefix SID onto iosxrv4, I was also trying to move the redistribute command onto it. Why is that? Well if I keep the redistribute bgp command on iosxrv5, then the iosxrv4 SRMS logic would have not used the SR as local label and BGP-LU as outgoing one Instead.
Configurations
Anyhow, what I was not understanding is why the redistribute bgp was not working on iosxrv4 and then remembered about "bgp redistribute-internal"
iosxrv4
RP/0/0/CPU0:iosxrv-4#sh run router bgp Fri Nov 19 06:09:53.606 UTC router bgp 300 bgp redistribute-internal <-- this fixed my problem address-family ipv4 unicast segment-routing prefix-sid-map allocate-label all ! neighbor <iosxrv5 address> remote-as 300 update-source Loopback0 address-family ipv4 labeled-unicast ! RP/0/0/CPU0:iosxrv-4#sh run segment-routing Fri Nov 19 06:10:04.896 UTC segment-routing global-block 16000 23999 local-block 25000 26000 mapping-server prefix-sid-map address-family ipv4 <as100 prefix> 101 range 1 !
iosxrv5
router bgp 300 address-family ipv4 unicast network <iosxrv4 address> route-policy SID(2) network <iosxr9k-3 address> route-policy SID(6) allocate-label all ! ! neighbor <iosxrv4 address> remote-as 300 update-source Loopback0 address-family ipv4 labeled-unicast next-hop-self
Show Commands
If I redistribute on iosxrv-4 I get (THIS IS OK)
RP/0/0/CPU0:iosxrv-4#sh mpls forwarding prefix <as100-prefix> Fri Nov 19 06:22:03.526 UTC Local Outgoing Prefix Outgoing Next Hop Bytes Label Label or ID Interface Switched ------ ----------- ------------------ ------------ --------------- ------------ 16101 24008 SR Pfx (idx 101) <iosxrv-5> 26316
^ ^
SR BGP-LU
If I redistribute on iosxrv-5 I get (THIS IS NOK)
RP/0/0/CPU0:iosxrv-4#sh mpls forwarding prefix <as100-prefix> Fri Nov 19 06:24:29.196 UTC Local Outgoing Prefix Outgoing Next Hop Bytes Label Label or ID Interface Switched ------ ----------- ------------------ ------------ --------------- ------------ 16101 16101 SR Pfx (idx 101) Gi0/0/0/4 <p2p iosxrv-5> 0
^ ^
SR SR
Now the ping from iosxr9k-3 works as a charm, here's the labelled path finally:
RP/0/0/CPU0:iosxr-9k-3#trace sr-mpls <as100-prefix> source lo0 Fri Nov 19 06:17:57.733 UTC Type escape sequence to abort. 0 3.30.7.4 MRU 1500 [Labels: 16101 Exp: 0] <-- SRMS (iosxrv4) static label L 1 3.30.7.2 MRU 1500 [Labels: implicit-null/24008 Exp: 0/0] 40 ms <-- BGP-LU label iosxrv-4 gets from iosxrv-5 L 2 3.30.10.2 MRU 1500 [Labels: implicit-null/implicit-null Exp: 0/0] 40 ms <-- no label as the as100-address I am pinging is connected to iosxrv-5 ! 3 1.31.2.1 30 ms
Open Question
I am still not sure why the documentation distinguishes between mapping server and mapping client for the BGP Proxy Prefix config, specifically, the segment-routing prefix-sid-map command should go on the client and I can't really match that with this config.
Anyways, thanks for your precious help Harold... and BTW, 6.6.1 is the best IOSXRv image ever
Thanks, L.
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide