cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Bookmark
|
Subscribe
|
1615
Views
0
Helpful
17
Replies

BGP Nexthop Resolution w/ Colored Routes (Flex-Algo) in IOS-XE

Fatih K
Level 1
Level 1

Hello,
I am trying to verify in my lab that I can configure a L3VPN on my IOS-XE device (ASR1k), which can utilize a specific flex-algo topology. For this reason, VPNv4 routes are propagated via extended-community color, however BGP NH resolution is still using the Flex-Algo 0, which I can confirm by looking at the transport label value.

After digging into many documents, I couldn't find any configuration command that is missing in my lab. IOS-XR, JunOS, and SROS have those features where I can configure the desired BGP NH resolution method, but I couldn't find something similar for IOS-XE. Can you please help me if this is supported?

Regards,

Fatih

1 Accepted Solution

Accepted Solutions

Hi @Fatih K ,

The issue is that the segment routing traffic engineering (SRTE) topology is not populated by default. This is the reason why you get the message "Source not in topology". You need to populate the local SRTE topology with the following command:

router isis ipls

 distribute link-state

It should fix the issue.

Regards,

Regards,
Harold Ritter, CCIE #4168 (EI, SP)

View solution in original post

17 Replies 17

Harold Ritter
Spotlight

Hi @Fatih K ,

SRTE policies with Flex Algo are supported on IOS-XE. Can you please provide a snapshot of your configuration?

Regards,

Regards,
Harold Ritter, CCIE #4168 (EI, SP)

Hi @Harold Ritter 

Thank you for your response. I also tried SR-TE ODN policy, but it didn't help. ISIS RIB Flex-Algo 128 is properly installed, VPNv4 routes have ext color community as well. But L3VPN is still using the label for Flex-Algo 0

router isis ipls
 net 49.0001.0300.0800.8014.00
 is-type level-2-only
 metric-style wide
 ignore-attached-bit
 set-overload-bit
 max-lsp-lifetime 65535
 lsp-refresh-interval 65000
 no hello padding point-to-point
 log-adjacency-changes
 metric 10000001 level-2
 segment-routing mpls
 flex-algo 128
   !
 !
 passive-interface Loopback0
 mpls ldp sync
!
segment-routing mpls
 !
 set-attributes
  address-family ipv4
   sr-label-preferred
  exit-address-family
 !
 global-block 100000 135999
 !
 connected-prefix-sid-map
  address-family ipv4
   80.156.126.134/32 index 20422 range 1
  exit-address-family
  address-family ipv4 algorithm 128
   80.156.126.134/32 index 27606 range 1
  exit-address-family
 !
segment-routing traffic-eng
 !
 on-demand color 128
  authorize
  candidate-paths
   preference 100
    constraints
     segments
      dataplane mpls
      algorithm 128
     !
    !
    dynamic
     metric
      type delay
     !
    !
   !
  !
 !
performance-measurement
 interface GigabitEthernet0/0/2
  delay-measurement
   advertise-delay 1000
  !
 !
 interface GigabitEthernet0/0/3
  delay-measurement
   advertise-delay 1000
  !
 !

I was expecting a different label value; 127524 instead of 110580:

show isis rib flex-algo 128 80.156.126.52 255.255.255.255

Flex-algo 128

80.156.126.52/32  prefix attr X:0 R:0 N:1  SID index 27524 - Bound
  [115/L2/6000] via 30.88.88.178(GigabitEthernet0/0/2) IPLS-PE4.00-00, from 80.156.126.52, tag 0
     prefix attr: X:0 R:0 N:1
      Prefix-SID index: 27524, R:0 N:1 P:0 E:0 V:0 L:0
     label: 127524
  [115/L2/6000] via 30.88.88.180(GigabitEthernet0/0/3) IPLS-PE5.00-00, from 80.156.126.52, tag 0
     prefix attr: X:0 R:0 N:1
      Prefix-SID index: 27524, R:0 N:1 P:0 E:0 V:0 L:0
     label: 127524


sho ip cef vrf nmc-21139 80.156.126.52/32 detail
80.156.126.52/32, epoch 0, flags [rib defined all labels]
  recursive via 80.156.126.52 label 4056
    nexthop 30.88.88.178 GigabitEthernet0/0/2 label 110580-(local:110580)

show bgp vpnv4 unicast vrf nmc-21139 80.156.126.52/32 bestpath
BGP routing table entry for 20570:21139:80.156.126.52/32, version 1605165845
BGP Bestpath: deterministic-med
Paths: (4 available, best #1, table nmc-21139)
  Not advertised to any peer
  Refresh Epoch 1
  Local
    80.156.126.52 (metric 25857394) (via default) from 80.156.126.7 (80.156.126.7)
      Origin incomplete, metric 0, localpref 100, valid, internal, best
      Extended Community: RT:20570:21139 Color:128
      Originator: 80.156.126.52, Cluster list: 80.156.126.7
      mpls labels in/out nolabel/4056
      binding SID: 4512 (color - 128) (state - DOWN)
      rx pathid: 0, tx pathid: 0x0
      Updated on Aug 12 2024 09:27:02 MET

 

 

 

 

Hi @Fatih K ,

From the provided output, something seems to be wrong with the policy.

show bgp vpnv4 unicast vrf nmc-21139 80.156.126.52/32 bestpath

      binding SID: 4512 (color - 128) (state - DOWN)

Can you please provide the "show segment-routing traffic-eng policy name *80.156.126.52|128 detail" output.

Regards,

Regards,
Harold Ritter, CCIE #4168 (EI, SP)

Hi @Harold Ritter ,

Here it is, I looked for the "Invalid reason.." but couldn't found any explanation:

show segment-routing traffic-eng policy name *80.156.126.52|128 detail

Name: *80.156.126.52|128 (Color: 128 End-point: 80.156.126.52)
  Owners : BGP
  Status:
    Admin: up, Operational: down for 02:30:22 (since 08-13 19:42:41.726)
  Candidate-paths:
    Preference 100 (BGP):
      Constraints:
        Algorithm: 128
      Dynamic (inactive)
        Inactive Reason: Source node not in topology
  Attributes:
    Binding SID: 4512
      Allocation mode: dynamic
      State: Programmed
  IPv6 caps enabled
  Tunnel ID: 65537 (Interface Handle: 0x2AE)
  Per owner configs:
    BGP
      Binding SID: dynamic
  Stats:
    5 minute output rate 0 bits/sec, 0 packets/sec
    Packets: 0  Bytes: 0

  Event history:
    Timestamp                   Client                  Event type              Context: Value
    ---------                   ------                  ----------              -------: -----
    08-13 19:42:41.726          BGP                     Policy created          Name: BGP
    08-13 19:42:41.726          BGP                     Set colour              Colour: 128
    08-13 19:42:41.727          BGP                     Set end point           End-point: 80.156.126.52
    08-13 19:42:41.727          BGP                     Set dynamic             Path option: dynamic
    08-13 19:42:41.774          BGP                     BSID allocated          FWD: label 4512

 

Hi @Fatih K ,

The issue is that the segment routing traffic engineering (SRTE) topology is not populated by default. This is the reason why you get the message "Source not in topology". You need to populate the local SRTE topology with the following command:

router isis ipls

 distribute link-state

It should fix the issue.

Regards,

Regards,
Harold Ritter, CCIE #4168 (EI, SP)

@Harold Ritter 

It worked. Thank you very much!

You are very welcome @Fatih K and thanks for the feedback

Regards,
Harold Ritter, CCIE #4168 (EI, SP)

Hi @Harold Ritter ,

When both head- and tail-end routers are in the same domain (IS-IS Level-2), it is working fine, But, if the head-end router is in IS-IS Level-1, even though Flex-Algo Prefix Metric is propagated by the Level-1-2 (ABR = IOS-XR) router in the middle, head-end router (IOS-XE) does not follow the Flex-Algo path, but regular IGP SPF.

Instead of using the ODN policy, it would be great to have a way to dictate the router, so that it can resolve the BGP NH according to my configuration.

Headend router shows the label for Flex-Algo 0, instead of the label for FA 128:

 

 

sho ip cef vrf nmc-21139 80.156.126.52/32 detail
80.156.126.52/32, epoch 0, flags [rib defined all labels]
  recursive via 80.156.126.52 label 4056
    nexthop 30.88.88.122 TenGigabitEthernet0/0/1 label 110580-(local:110580)

 

 

However, it actually receives the FAPM:

 

 

sho isis database ISIS-GW1 verbose | begin 80.156.126.52/32
  Metric: 8080180    IP-Interarea 80.156.126.52/32
    Route Admin Tag: 128
    Prefix-SID Index: 10580, Algorithm: SPF, R:1 N:1 P:1 E:0 V:0 L:0
    Prefix-SID Index: 27524, Algorithm: Flex-algo 128, R:1 N:1 P:1 E:0 V:0 L:0
    Prefix-metric: 4000, Algorithm: Flex-algo 128 <<< FAPM is received in IS-IS LSDB but not used
    Prefix-attr: X:0 R:1 N:1

 

 

Finally, it declares that destination node is not in the topology, even though the ABR device is configured with "distribute link-state level-1"

 

 

show segment-routing traffic-eng policy name *80.156.126.52|128 detail

Name: *80.156.126.52|128 (Color: 128 End-point: 80.156.126.52)
  Owners : BGP
  Status:
    Admin: up, Operational: down for 15:11:21 (since 08-13 22:58:57.657)
  Candidate-paths:
    Preference 100 (BGP):
      Constraints:
        Algorithm: 128
      Dynamic (inactive)
        Inactive Reason: destination node not in topology
  Attributes:
    Binding SID: 42
      Allocation mode: dynamic
      State: Programmed
  IPv6 caps enabled
  Tunnel ID: 65541 (Interface Handle: 0x2AE)
  Per owner configs:
    BGP
      Binding SID: dynamic
  Stats:
    5 minute output rate 0 bits/sec, 0 packets/sec
    Packets: 0  Bytes: 0

  Event history:
    Timestamp                   Client                  Event type              Context: Value
    ---------                   ------                  ----------              -------: -----
    08-13 22:58:57.657          BGP                     Policy created          Name: BGP
    08-13 22:58:57.658          BGP                     Set colour              Colour: 128
    08-13 22:58:57.658          BGP                     Set end point           End-point: 80.156.126.52
    08-13 22:58:57.658          BGP                     Set dynamic             Path option: dynamic
    08-13 22:58:57.688          BGP                     BSID allocated          FWD: label 42

 

 

Thanks for you support so far on this matter!

 

Hi @Fatih K ,

You have a couple of options with IOS-XE, in such a case where the end to end path can't be calculated on the head end.

1. Use a PCE that has a full network view to calculate the end to end path.

2. Use a policy with an explicit path towards the remote node as follow:

segment-routing traffic-eng
segment-list name toRemoteNode
index 10 mpls label 27524  <+++++++++ FA 128 Label
!
policy toRemoteNode
color 128 end-point 80.156.126.52
candidate-paths
preference 100
explicit segment-list toRemoteNode

BGP NH + color will map to this policy and use the FA 128 to get to remote node, instead of IGP label.

Regards,

Regards,
Harold Ritter, CCIE #4168 (EI, SP)

Hi @Harold Ritter ,

Thank you once again.

I suppose that using a PCE is contradicting with a controllerless solution, like flex-algo I am trying to solve the problem of having e2e TE solution on a Multi-Level IS-IS topology.

Unfortunately using a manual policy to a specific Remote-end also didn't solve the problem, it still shows that "destination node not in topology"  

sho seg traffic-eng policy name to_IPLS-PE10 detail

Name: to_IPLS-PE10 (Color: 128 End-point: 80.156.126.52)
  Owners : CLI BGP
  Status:
    Admin: up, Operational: down for 21:46:14 (since 08-14 15:01:02.813)
  Candidate-paths:
    Preference 100 (CLI):
      Explicit: segment-list to_IPLS-PE10 (inactive)
        Inactive Reason: Path cannot be resolved
        Weight: 1, Metric Type: TE
    Preference 100 (BGP):
      Constraints:
        Algorithm: 128
      Dynamic (inactive)
        Inactive Reason: destination node not in topology
  Attributes:
    Binding SID: 4557
      Allocation mode: dynamic
      State: Programmed
  IPv6 caps enabled
  Tunnel ID: 65541 (Interface Handle: 0x2AD)
  Per owner configs:
    CLI
      Binding SID: dynamic
    BGP
      Binding SID: dynamic
  Stats:
    5 minute output rate 0 bits/sec, 0 packets/sec
    Packets: 0  Bytes: 0

  Event history:
    Timestamp                   Client                  Event type              Context: Value
    ---------                   ------                  ----------              -------: -----
    08-14 15:01:02.813          BGP                     Policy created          Name: BGP
    08-14 15:01:02.813          BGP                     Set colour              Colour: 128
    08-14 15:01:02.813          BGP                     Set end point           End-point: 80.156.126.52
    08-14 15:01:02.814          BGP                     Set dynamic             Path option: dynamic
    08-14 15:01:02.854          BGP                     BSID allocated          FWD: label 4557
    08-15 12:34:30.119          CLI                     Client merged           Owner: Added in
    08-15 12:34:46.539          CLI                     Set explicit path       Path option: to_IPLS-PE10

sho ip cef vrf nmc-21139 80.156.126.52/32 detail
80.156.126.52/32, epoch 0, flags [rib defined all labels]
  recursive via 80.156.126.52 label 4056
    nexthop 30.88.88.178 GigabitEthernet0/0/2 label 110580-(local:110580)

 

 

Hi @Fatih K ,

What IOS-XE version are you running? Can I see the config for the policy and the segment-list.

Regards,

Regards,
Harold Ritter, CCIE #4168 (EI, SP)

Hi @Harold Ritter 

I am running 17.09.04 on an ASR1002-X.

show run | section segment-routing traffic-eng
segment-routing traffic-eng
 segment-list name to_IPLS-PE10
  index 10 mpls label 127524
 !
 policy to_IPLS-PE10
  color 128 end-point 80.156.126.52
  candidate-paths
   preference 100
    explicit segment-list to_IPLS-PE10
    !
   !
  !
 !
 on-demand color 128
  authorize
  candidate-paths
   preference 100
    constraints
     segments
      dataplane mpls
      algorithm 128
     !
    !
    dynamic
     metric
      type delay
     !
    !
   !
  !
 !

Thanks @Fatih K ,

Can you provide the "router isis" config.

Regards,

Regards,
Harold Ritter, CCIE #4168 (EI, SP)

@Harold Ritter 

router isis ipls
 net 49.0001.0300.0800.8014.00
 is-type level-1
 metric-style wide
 ignore-attached-bit
 max-lsp-lifetime 65535
 lsp-refresh-interval 65000
 no hello padding point-to-point
 log-adjacency-changes
 metric 10000001 level-1
 metric 10000001 level-2
 distribute link-state
 segment-routing mpls
 flex-algo 128
   !
 !
 passive-interface Loopback0
 mpls ldp sync
 mpls traffic-eng router-id Loopback0
 mpls traffic-eng level-2