BFD for SRTE

About BFD for SRTE

BFD for SRTE is similar to MPLS OAM Monitoring for SRTE Policies. BFD for SRTE allows the switch on which one or more SRTE policies are configured to proactively detect if the active path or paths of an SRTE policy have failed. If the paths in the currently active preference have all failed, SRTE considers that preference down and so make the next highest preference of the policy active, if there is such a preference, or otherwise mark the policy as down.

BFD for SRTE performs the detection by sending BFD probes continuously along the SRTE path. Each probe is encapsulated in MPLS with the same label stack as would be imposed on traffic that follows the SRTE policy, making the probes take the same path. In addition, one more label is imposed innermost in the label stack of the probe that causes the probe to be returned to the sender by the data plane of the final node of the policy when it is reached. This differs from MPLS OAM Monitoring for SRTE Policies in which the probe is received by the final node, processed in the control plane, and a response sent back.

The probes are sent with a configurable interval between each probe, and a probe is expected to loop back to the sender within the interval. After a configurable number of failed intervals occur in sequence, the path is considered down. If all paths in a preference are down, then the preference is considered down.

Paths Monitored

Only when the commands are enabled to monitor a path using proactive monitoring will the path be monitored using BFD. Only the paths that are associated with a policy will be monitored. For example, if a segment list is created and is not associated with a policy, it is not monitored. As well, if the same path is used in multiple policies, only one monitoring session will be created for that path. This applies whether the path is a segment-list associated to a preference in a policy or is calculated using path completion on the headend. MPLS OAM monitoring may be enabled globally for all SRTE policies. If enabled globally, it can be selectively disabled per policy. If not enabled globally, it can be enabled selectively for individual policies. When a policy is monitored, SRTE will pick the highest viable preference as a primary preference and the next highest as a backup. This primary and backup are programmed to the forwarding plane so that when a failure in the primary path is detected in BFD, the forwarding layer can immediately switch to the backup path without requiring intervention from SRTE in the control plane. This reduces the time needed for failure recovery.

Index Limit

The index-limit X command is used to validate only an initial subset of the path rather than the entire path. Only indexes in the segment list that are less than or equal to the specified index-limit are part of the path to monitor. For example, if the segment list is the following:

  • index 100 mpls label 16001

  • index 200 mpls label 16002

  • index 300 mpls label 16003

Then, if index-limit is not specified, the path to be validated will be 16001, 16002, 16003. If the index-limit is 250, then the path to be validated will be 16001, 16002. If the index-limit is 200, then the path to be validated will also be 16001, 16002.

Guidelines and Limitations for Configuring BFD for SRTE

The guidelines and limitations for configuring BFD monitoring for SRTE policies are as follows:

  • Beginning with Cisco NX-OS Release 10.3(2)F, BFD Monitoring for SRTE Policies is introduced and supported on 9300-FX, 9300-FX2, 9300-FX3, 9300-GX, 9300-GX2, N9K-C9364C, and N9K-C9332C TOR platforms only.

  • Only SRTE MPLS with IPv4 underlay will be supported for monitoring using BFD. SRv6 policies are not supported.

  • vPC is not supported on the headend when using this form of monitoring.

  • Only one of OAM or BFD monitoring may be enabled at one time. That is, it is not possible to have some policies monitored using OAM and some using BFD.

  • IP redirects must be disabled on disabled on SR enabled core interfaces of the node where the BFD probe loops back to the sender since it may need to exit the same interface it just arrived on.

  • The innermost label that SRTE uses for the monitoring path (the headend label) must not be an anycast SID, it must be the unique SID for that node so that responses are not directed to another node sharing the same anycast address.

  • The total number of ECMP members for a given policy when programmed to forwarding is 8, which includes the primary and backup ECMP members. If there are more than 8 ECMP members between the primary and backup preferences on the policy combined, only 8 will be used.

  • The SRGB range defined on the SRTE headend node (where the policy is defined) and the SRGB range defined on the final node of all paths monitored by BFD liveness detection must be the same, and it is recommended that the SRGB range be the same on all nodes. The return-to-sender label added to the BFD probe packets is learned locally on the SRTE headend node from the connected-prefix-sid-map SR configuration for the prefix of the local loopback interface, so the value of that label must be the same on the node returning the packet.

  • BFD monitoring is not supported for path preference with dynamic pcep option.

Configuring BFD for SRTE

This section describes the commands required to enable proactive path monitoring for policies using BFD protection for SRTE policies. The configuration tasks can be performed in following ways based on whether you want to configure for all policies or a specific policy:

  • Global Configuration - This configuration enables BFD protection for all configured policies.

  • Policy-specific Configuration - This configuration enables BFD protection for a specific policy.

Global Configuration

Before you begin

You must ensure that the following features are enabled:

  • feature bfd

  • feature mpls segment-routing

  • feature mpls segment-routing traffic-engineering

Procedure

  Command or Action Purpose

Step 1

configure terminal

Example:

switch# configure terminal
switch(config)#

Enters global configuration mode.

Step 2

segment-routing

Example:

switch(config)#segment-routing
switch(config-sr)#

Enters the segment routing configuration mode.

Step 3

traffic-engineering

Example:

switch(config-sr)# traffic-engineering
switch(config-sr-te)#

Enters the traffic engineering mode.

Step 4

[no] liveness-detection

Example:

switch(config-sr-te)# liveness-detection
switch(config-sr-te-livedet)#

Enters the liveness-detection configuration mode.

Step 5

interval num

Example:

switch(config-sr-te-livedet)# interval 6000
switch(config-sr-te-livedet)#

The duration of the interval in milliseconds. The default is 3000 ms.

Step 6

multiplier num

Example:

switch(config-sr-te-livedet)# multiplier 5
switch(config-sr-te-livedet)#

The multiplier sets the number of consecutive intervals that must fail for a path that is up to be considered down. When BFD monitoring is used, any successful probe causes a path that is down to be considered up. The default is 3.

Step 7

mpls

Example:

switch(config-sr-te-livedet)# mpls
switch(config-sr-te-livedet-mpls)#

Enters the MPLS data plane configuration mode for liveness-detection.

Step 8

[no] bfd

Example:

switch(config-sr-te-livedet-mpls)# bfd
switch(config-sr-te-livedet-mpls)#

Enables BFD protection globally for all SRTE policies.

The no form of this command disables BFD protection.

Step 9

segment-list name sidlist-name

Example:

switch(config-sr-te)# segment-list name blue
    index 10 mpls label 16004
    index 10 mpls label 16005

Creates the explicit SID list.

Note

 

This command has the auto-complete feature for the sidlist-name. To use this feature, add a question mark or press TAB.

Step 10

policy policy name

Example:

switch(config-sr-te)# policy 1
switch(config-sr-te-pol)

Configures the policy.

Step 11

color color end-point address

Example:

switch(config-sr-te-pol)# color 1 endpoint 5.5.5.5
switch(config-sr-te-pol)

Configures the color and the endpoint of the policy.

Step 12

candidate-paths

Example:

switch(config-sr-te-pol)# candidate-paths
switch(config-expcndpaths)#

Specifies the candidate paths for the policy.

Step 13

preference preference-number

Example:

switch(config-expcndpaths)# preference 100
switch(cfg-pref)#

Specifies the preference of the candidate path.

Step 14

explicit segment-list sidlist-name

Example:

switch(cfg-pref)# explicit segment-list red
switch(cfg-pref)#

Specifies the explicit list.

Note

 

This command has the auto-complete feature for the sidlist-name. To use this feature, add a question mark or press TAB.

Step 15

on-demand color color_num

Example:

switch(config-sr-te)# on-demand color 211
switch(config-sr-te-color)#

Enters the on-demand color template mode to configure an on-demand color for the specified color.

Step 16

candidate-paths

Example:

switch(config-sr-te-color)# candidate-paths
switch(cfg-cndpath)#

Specifies the candidate paths for the policy.

Step 17

preference preference-number

Example:

switch(cfg-cndpath)# preference 100
switch(cfg-pref)#

Specifies the preference of the candidate path.

Step 18

explicit segment-list sidlist-name

Example:

switch(cfg-pref)# explicit segment-list red
switch(cfg-pref)#

Specifies the explicit list.

Note

 

This command has the auto-complete feature for the sidlist-name. To use this feature, add a question mark or press TAB.

Policy-specific Configuration

Before you begin

You must ensure that the following features are enabled:

  • feature bfd

  • feature mpls segment-routing

  • feature mpls segment-routing traffic-engineering

Procedure

  Command or Action Purpose

Step 1

configure terminal

Example:

switch# configure terminal
switch(config)#

Enters global configuration mode.

Step 2

segment-routing

Example:

switch(config)#segment-routing
switch(config-sr)#

Enters the segment routing configuration mode.

Step 3

traffic-engineering

Example:

switch(config-sr)# traffic-engineering
switch(config-sr-te)#

Enters the traffic engineering mode.

Step 4

[no] liveness-detection

Example:

switch(config-sr-te)# liveness-detection
switch(config-sr-te-livedet)#

Enters the liveness-detection configuration mode.

Step 5

interval num

Example:

switch(config-sr-te-livedet)# interval 6000
switch(config-sr-te-livedet)#

The duration of the interval in milliseconds. The default is 3000 ms.

Step 6

multiplier num

Example:

switch(config-sr-te-livedet)# multiplier 5
switch(config-sr-te-livedet)#

The multiplier sets the number of consecutive intervals that must fail for a path that is up to be considered down. When BFD monitoring is used, any successful probe causes a path that is down to be considered up. The default is 3.

Step 7

segment-list name sidlist-name

Example:

switch(config-sr-te)# segment-list name blue
    index 10 mpls label 16004
    index 10 mpls label 16005

Creates the explicit SID list.

Step 8

policy policy name

Example:

switch(config-sr-te)# policy 1
switch(config-sr-te-pol)

Configures the policy.

Step 9

color color end-point address

Example:

switch(config-sr-te-pol)# color 1 endpoint 5.5.5.5
switch(config-sr-te-pol)

Configures the color and the endpoint of the policy.

Step 10

candidate-paths

Example:

switch(config-sr-te-pol)# candidate-paths
switch(config-expcndpaths)#

Specifies the candidate paths for the policy.

Step 11

preference preference-number

Example:

switch(config-expcndpaths)# preference 100
switch(cfg-pref)#

Specifies the preference of the candidate path.

Step 12

explicit segment-list sidlist-name

Example:

switch(cfg-pref)# explicit segment-list red
switch(cfg-pref)#

Specifies the explicit list.

Step 13

[no] liveness-detection

Example:

switch(config-sr-te)# liveness-detection
switch(config-sr-te-livedet)#

Enters the liveness-detection configuration mode.

Step 14

[no]index-limit num

Example:

switch(config-sr-te-livedet)# index-limit 20
switch(config-sr-te-livedet)#

Monitors only SIDs that have an index of less than or equal to the user-specified number.

Step 15

[no]shutdown

Example:

switch(config-sr-te-livedet)# shutdown
switch(config-sr-te-livedet)#

Disables liveness detection. This is useful to temporarily disable liveness detection without entirely removing all related configuration.

Step 16

mpls

Example:

switch(config-sr-te-livedet)# mpls
switch(config-sr-te-livedet-mpls)#

Enters the MPLS data plane configuration mode for liveness-detection.

Step 17

[no] bfd

Example:

switch(config-sr-te-livedet-mpls)# oam
switch(config-sr-te-livedet-mpls)#

Enables BFD liveness-detection for the policy under which it is configured.

The no form of this command disables BFD liveness-detection for the policy under which it is configured.

Step 18

on-demand color color_num

Example:

switch(config-sr-te)# on-demand color 211
switch(config-sr-te-color)#

Enters the on-demand color template mode to configure an on-demand color for the specified color.

Step 19

candidate-paths

Example:

switch(config-sr-te-color)# candidate-paths
switch(cfg-cndpath)#

Specifies the candidate paths for the policy.

Step 20

preference preference-number

Example:

switch(cfg-cndpath)# preference 100
switch(cfg-pref)#

Specifies the preference of the candidate path.

Step 21

explicit segment-list sidlist-name

Example:

switch(cfg-pref)# explicit segment-list red
switch(cfg-pref)#

Specifies the explicit list.

Step 22

[no] liveness-detection

Example:

switch(config-sr-te-color)# liveness-detection
switch(config-sr-te-color-livedet)#

Enters the liveness-detection configuration mode.

Step 23

[no] index-limit num

Example:

switch(config-sr-te-color-livedet)# index-limit 20
switch(config-sr-te-color-livedet)#

Monitors only SIDs that have an index of less than or equal to the user-specified number.

Step 24

[no] shutdown

Example:

switch(config-sr-te-color-livedet)# shutdown
switch(config-sr-te-color-livedet)#

Disables liveness detection. This is useful to temporarily disable liveness detection without entirely removing all related configuration.

Step 25

mpls

Example:

switch(config-sr-te-color-livedet)# mpls
switch(config-sr-te-color-livedet-mpls)#

Enters the MPLS data plane configuration mode for liveness-detection.

Step 26

[no] bfd

Example:

switch(config-sr-te-color-livedet-mpls)# bfd
switch(config-sr-te-color-livedet-mpls)#

Enables BFD liveness-detection for the on-demand color under which it is configured.

The no form of this command disables BFD liveness-detection for the on-demand color under which it is configured.

Configuration Example for BFD for SRTE

The following example shows how to configure BFD for SRTE:

feature mpls segment-routing traffic-engineering segment-routing
traffic-engineering
liveness-detection
      multiplier NUM 
      interval NUM 
      mpls 
        bfd
    segment-list name SEGLIST1      
      index 100 mpls label 16001 
      index 200 mpls label 16002
      index 300 mpls label 16003
    on-demand color 702
      explicit segment-list SEGLIST1
      liveness-detection
        mpls
          bfd
        index-limit 200
    policy name POL1
      color 20 endpoint 1.1.1.1
      liveness-detection
        mpls
          bfd
        index-limit 200

Verifying BFD for SRTE Configuration

To display BFD Monitoring for SRTE Policies configuration information, perform one of the following tasks:

Table 1. Verifying Configuration for MPLS OAM Monitoring

Command

Purpose

show srte policy

Displays only the authorized policies.

show srte policy [all]

Displays the list of all policies available in the SR-TE.

show srte policy [detail]

Displays the detailed view of all the requested policies.

show srte policy <name>

Filters the SR-TE policy with the name and displays the list of all policies available with that name in the SR-TE.

Note

 

This command has the auto-complete feature for the policy-name. To use this feature, add a question mark or press TAB.

show srte policy color <color> endpoint <endpoint>

Displays the SR-TE policy for the color and endpoint.

Note

 

This command has the auto-complete feature for color and endpoint. To use this feature, add a question mark or press TAB.

show srte policy proactive-policy-monitoring

Displays the list of all active proactive policy monitoring sessions that exist in the promon database.

Note

 

You can use the question mark option at the end of this command and provide one of the following options or press ENTER to display all the sessions:

  • brief - shows brief information about the sessions

  • color - shows the promon sessions related to the policy color

  • name - shows the promon sessions related to the policy name

  • session-id - shows the promon session for the session-id

show srte policy proactive-policy-monitoring [brief]

Displays only the list of session IDs and the states of the proactive policy monitoring sessions.

show srte policy proactive-policy-monitoring [session <session-id>]

Filters using session-id and displays information about that session in detail.

Note

 

This command has the auto-complete feature for the session-id. To use this feature, add a question mark or press TAB.

show srte policy proactive-policy-monitoring color <color> endpoint<endpoint>

Filters using color and endpoint and displays proactive policy monitoring sessions.

Note

 

This command has the auto-complete feature for color and endpoint. To use this feature, add a question mark or press TAB.

show mpls switching detail

This command shows the Unicast Label Database. It can be used to see the monitoring labels used for each NHLFE in a SRTE policy FEC and can be used to show the SRTE monitoring FECs themselves.

show bfd neighbors

Displays the BFD session details.