cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
1786
Views
5
Helpful
2
Replies

BGP Proxy Prefix SID - SRMS

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

topo1.png

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

1 Accepted Solution

Accepted Solutions

Harold Ritter
Cisco Employee
Cisco Employee

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,

 

Harold Ritter
Sr Technical Leader
CCIE 4168 (R&S, SP)
harold@cisco.com
México móvil: +52 1 55 8312 4915
Cisco México
Paseo de la Reforma 222
Piso 19
Cuauhtémoc, Juárez
Ciudad de México, 06600
México

View solution in original post

2 Replies 2

Harold Ritter
Cisco Employee
Cisco Employee

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,

 

Harold Ritter
Sr Technical Leader
CCIE 4168 (R&S, SP)
harold@cisco.com
México móvil: +52 1 55 8312 4915
Cisco México
Paseo de la Reforma 222
Piso 19
Cuauhtémoc, Juárez
Ciudad de México, 06600
México

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.