VCCV BFD for Epipe Services

This chapter describes the VCCV BFD for Epipe services.

Topics in this chapter include:

Applicability

This chapter was initially written based on SR OS Release 15.0.R7. The MD-CLI in the current edition corresponds to SR OS Release 23.7.R1.

Overview

Virtual circuit connectivity verification (VCCV) is defined by RFC 5085. Bidirectional forwarding detection (BFD) is defined by RFC 5880.

VCCV is an end-to-end fault-detection tool for testing pseudowires (PWs), and typically requires an operator to take manual actions. The PWs can be used for virtual leased line (VLL), virtual private LAN service (VPLS), and Internet enhanced service (IES)/virtual private routed network (VPRN) services with Epipe or Ipipe spoke-SDPs.

SR OS supports RFC 5885 which specifies a method for carrying BFD messages in a PW-associated channel and is referred to as VCCV BFD in SR OS. Because the associated channel shares fate with the data plane, VCCV BFD monitors the PW between two terminating PEs (T-PEs), regardless of the number of provider routers or switching PEs (S-PEs) the PW may traverse; see PW reference model. When enabled, faults in individual PWs can be detected quickly, whether or not other provider routers or S-PEs also carry other PWs. VCCV BFD can monitor specific high-value services, where detecting forwarding failures (and potentially recovering from them) in a minimum amount of time is critical.

Figure 1. PW reference model

VCCV BFD avoids manual hop-by-hop troubleshooting of each element along the path of the PW, which minimizes the probability of not detecting silent failures on intermediate routers.

VCCV BFD sessions run end-to-end on a switched or single-hop PW, from T-PE to T-PE. They do not terminate on an intermediate S-PE; therefore, the TTL of the PW label on VCCV BFD packets is always set to 255, to ensure that the packets reach the far-end T-PE of a multi-segment PW.

BFD is only used for fault detection. While RFC 5885 provides a mode in which VCCV BFD can be used to signal PW status, this mode is only applicable for PWs that have no other status signaling mechanism in use. LDP status and static PW status signaling always take precedence over BFD-signaled PW status, and BFD-signaled PW status is not used on PWs that use LDP status or static PW status signaling mechanisms.

Configuration

Example topology shows the example topology with Epipes "Epipe-1" and "Epipe-2" using LSP "lsp-1" between PE-5 and PE-6 and Epipe "Epipe-3" using LSP "lsp-2" between PE-5 and S-PE PE-4 and LSP "lsp-3" between PE-4 and PE-6.

Figure 2. Example topology

The initial configuration includes:

  • Cards, MDAs, and ports

  • Router interfaces

  • IS-IS as IGP on all interfaces (alternatively, OSPF can be used), with traffic engineering enabled

  • MPLS paths and LSPs:
    • LSP "lsp-1" configured on PE-5 with primary path "path-5-1-2-6" and on PE-6 with primary path "path-6-2-1-5"
    • LSP "lsp-2" configured on PE-5 with primary path "path-5-4" and on PE-4 with primary path "path-4-5"
    • LSP "lsp-3" configured on PE-4 with primary path "path-4-3-6" and on PE-6 with primary path "path-6-3-4"

VCCV BFD configuration

Three steps are needed when configuring VCCV BFD:

  1. Configure the BFD template

  2. Apply the BFD template

  3. Enable BFD

Step 1: configure BFD template

The bfd-template command provides the control packet timer values for the BFD.

The general command to define a BFD template is as follows:

configure {
    bfd {
        bfd-template <name> {
            echo-receive <echo-interval>
            multiplier <multiplier>
            receive-interval <receive-interval>
            transmit-interval <transmit-interval>
            type {cpm-np}

However, network processor BFD (cpm-np) is not supported for VCCV, and the minimum supported receive or transmit timer interval is 100 ms. An error is generated if a user tries to apply a BFD template with the type cpm-np command or any unsupported transmit or receive interval value. An error is also generated when the user attempts to commit changes to a BFD template that is already bound to a spoke-SDP.

Steps 2 and 3: apply BFD template and enable BFD

To apply and enable the BFD template to a spoke-SDP where LDP is used as the SDP signaling protocol for a service, the following command can be used, depending on the service:

configure {
    service {
        [epipe|cpipe|ipipe|vpls|ies|vprn] <name> {
            spoke-sdp <sdp-binding-id> {
                bfd {
                    bfd-template <name>
                    bfd-liveness {
                    }

If BGP is used as the SDP signaling protocol, the following command is used:

configure {
    service {
        [epipe|vpls] <name> {
            bgp 1 {
                pw-template-binding <reference> {
                    bfd 1 {
                        bfd-template <name>
                        bfd-liveness true

In this example, the following BFD templates are configured on PE-5 and PE-6:

# on PE-5, PE-6:
configure {
    bfd {
        bfd-template "bfdt-1" {
            multiplier 5
            receive-interval 2000
            transmit-interval 2000
        }
        bfd-template "bfdt-2" {
            receive-interval 1000
            transmit-interval 1000
        }

These BFD templates are used in the Epipe services configured in the next section.

Service configuration

LDP VLL "Epipe-1"

The service "Epipe-1" is an LDP VLL running between PE-5 and PE-6, and uses manually configured SDP 56 on PE-5 and SDP 65 on PE-6, respectively, so the signaling is set to T-LDP. On PE-5, the spoke-SDP 56:1 has BFD template bfdt-2 applied, and BFD is enabled. The configuration on PE-6 is similar.

# on PE-5:
configure {
    service {
        epipe "Epipe-1" {
            admin-state enable
            service-id 1
            customer "1"
            spoke-sdp 56:1 {
                bfd {
                    bfd-template "bfdt-2"
                    bfd-liveness {
                    }
                }
            }
            sap 1/1/c4/1:1 {
            }
        }
        sdp 56 {
            admin-state enable
            delivery-type mpls
            far-end {
                ip-address 192.0.2.6
            }
            lsp "lsp-1" { }
        }

Log 99 indicates the local discriminator value used for the VCCV BFD session, as follows:

95 2023/08/21 08:23:10.590 CEST MINOR: VRTR #2070 Base 127.0.0.1
"The vccv BFD session with Local Discriminator 1 on Svc 1 SdpBind 56:1 is up"

Configuring the spoke-SDP with a template with an invalid type (for example, type "cpm-np") or with invalid transmit or receive intervals leads to errors, as follows:

[ex:/configure service epipe "Epipe-1" spoke-sdp 56:1 bfd]
A:admin@PE-5# bfd-template "bfdt-cpm-np-50ms"

*[ex:/configure service epipe "Epipe-1" spoke-sdp 56:1 bfd]
A:admin@PE-5# commit
MINOR: MGMT_CORE #4001: configure service epipe "Epipe-1" spoke-sdp 56:1 bfd 
bfd-template 
- bfd-template transmit-interval must be minimum 100 for this application 
- configure bfd bfd-template "bfdt-cpm-np-50ms" transmit-interval
MINOR: MGMT_CORE #4001: configure service epipe "Epipe-1" spoke-sdp 56:1 bfd 
bfd-template 
- bfd-template receive-interval must be minimum 100 for this application 
- configure bfd bfd-template "bfdt-cpm-np-50ms" receive-interval
MINOR: MGMT_CORE #4001: configure service epipe "Epipe-1" spoke-sdp 56:1 bfd 
bfd-template 
- bfd-template type is not valid for this application 
- configure bfd bfd-template "bfdt-cpm-np-50ms" type

BGP VPWS "Epipe-2"

The service "Epipe-2" is a BGP VPWS, also running between PE-5 and PE-6, using the manually configured SDPs 561 and 651 with the signaling set to BGP, as follows. Again, BFD template bfdt-2 is used, but now the BFD template is referred to from the pw-template-binding context. See the BGP Virtual Private Wire Services chapter for more information.

# PE-5:
configure {
    service {
        pw-template "1" {
            provisioned-sdp prefer
        }
        epipe "Epipe-2" {
            admin-state enable
            service-id 2
            customer "1"
            bgp 1 {
                route-distinguisher "65545:2"
                route-target {
                    export "target:65545:2"
                    import "target:65545:2"
                }
                pw-template-binding "1" {
                    bfd-template "bfdt-2"
                    bfd-liveness true
                }
            }
            bgp-vpws {
                admin-state enable
                local-ve {
                    name "PE-5"
                    id 5
                }
                remote-ve "PE-6" {
                    id 6
                }
            }
            sap 1/1/c4/1:2 {
            }
        }
        sdp 561 {
            admin-state enable
            delivery-type mpls
            signaling bgp
            far-end {
                ip-address 192.0.2.6
            }
            lsp "lsp-1" { }
        }

LDP VLL "Epipe-3" with switching node PE-4

The service "Epipe-3" is another LDP VLL running between PE-5 and PE-6, but switched at PE-4. It uses the manually configured SDPs 54 and 45 between PE-5 and PE-4, and SDPs 46 and 64 between PE-4 and PE-6. All these SDPs are using T-LDP for the signaling. On PE-5, the spoke-SDP 54:3 has BFD template "bfdt-1" applied, and control-word is active. This ensures that BFD packets get into the PW mapping to that spoke-SDP and that these packets are forwarded between the VC-switched spoke-SDPs at PE-4. The configuration on PE-6 is similar.

# on PE-5:
configure {
    bfd {
        bfd-template "bfdt-1" {
            multiplier 5
            receive-interval 2000
            transmit-interval 2000
        }
    }
    service {
        epipe "Epipe-3" {
            admin-state enable
            service-id 3
            customer "1"
            spoke-sdp 54:3 {
                control-word true
                bfd {
                    bfd-template "bfdt-1"
                    bfd-liveness {
                    }
                }
            }
            sap 1/1/c4/1:3 {
            }
        }
        sdp 54 {
            admin-state enable
            delivery-type mpls
            far-end {
                ip-address 192.0.2.4
            }
            lsp "lsp-2" { }
        }

For PE-4 to switch traffic from one VC to another, vc-switching true is configured in the Epipe, as follows:

# on PE-4:
configure {
    service {
        epipe "Epipe-3" {
            admin-state enable
            service-id 3
            customer "1"
            vc-switching true      # S-PE
            spoke-sdp 45:3 {
            }
            spoke-sdp 46:3 {
            }
        }
        sdp 45 {
            admin-state enable
            delivery-type mpls
            far-end {
                ip-address 192.0.2.5
            }
            lsp "lsp-2" { }
        }
        sdp 46 {
            admin-state enable
            delivery-type mpls
            far-end {
                ip-address 192.0.2.6
            }
            lsp "lsp-3" { }
        }

VCCV BFD verification

The following command shows that BFD template "bfdt-2" is applied to SDP 56:1 in the "Epipe-1" service and to SDP 561:4294967295 in the "Epipe-2" service:

[/]
A:admin@PE-5# show router bfd bfd-template "bfdt-2"

===============================================================================
BFD Template bfdt-2
===============================================================================
Template Name           : bfdt-2       Template Type             : auto
Transmit Timer          : 1000 msec    Receive Timer             : 1000 msec
Template Multiplier     : 3            Echo Receive Interval     : 100 msec

LSP-LDP  Association Count : 0
LSP-RSVP Association Count : 0
LSP-RSVP Template Association Count : 0
LSP-SR-TE Association Count : 0
LSP-SR-TE Template Association Count : 0
LSP-SR-TE Association Count : 0
LSP-SR-TE Template Association Count : 0
Static SR-Policy Association Count : 0
BGP SR-Policy Association Count : 0

Mpls-tp Association
None

-------------------------------------------------------------------------------
Service Associations
-------------------------------------------------------------------------------
SvcId               Sdp Bind                      BFD Enable     BFD Encap
-------------------------------------------------------------------------------
1                   56:1                          yes            ipv4
2                   561:4294967295                yes            ipv4
===============================================================================

The BFD configuration for SDP 56:1 on the "Epipe-1" service is listed in the detailed output for the SDP, as follows. The BFD template used is bfdt-2, BFD is enabled, and the BFD encapsulation used is IPv4. The peer VCCV CV bits indicate that the remote end supports LSP ping as well as BFD fault detection.

[/]
A:admin@PE-5# show service id 1 sdp 56:1 detail

===============================================================================
Service Destination Point (Sdp Id : 56:1) Details
===============================================================================
-------------------------------------------------------------------------------
 Sdp Id 56:1  -(192.0.2.6)
-------------------------------------------------------------------------------
Description     : (Not Specified)
SDP Id             : 56:1                     Type              : Spoke
Spoke Descr     : (Not Specified)
VC Type            : Ether                    VC Tag            : n/a
Admin Path MTU     : 0                        Oper Path MTU     : 8974
Delivery           : MPLS
Far End            : 192.0.2.6                Tunnel Far End    : n/a
Oper Tunnel Far End: 192.0.2.6
LSP Types          : RSVP
Hash Label         : Disabled                 Hash Lbl Sig Cap  : Disabled
Oper Hash Label    : Disabled
Entropy Label      : Disabled

Admin State        : Up                       Oper State        : Up
MinReqd SdpOperMTU : 1514
Adv Service MTU    : n/a
Acct. Pol          : None                     Collect Stats     : Disabled
Ingress Label      : 524284                   Egress Label      : 524284
Ingr Mac Fltr-Id   : n/a                      Egr Mac Fltr-Id   : n/a
Ingr IP Fltr-Id    : n/a                      Egr IP Fltr-Id    : n/a
Ingr IPv6 Fltr-Id  : n/a                      Egr IPv6 Fltr-Id  : n/a
Admin ControlWord  : Not Preferred            Oper ControlWord  : False
Admin BW(Kbps)     : 0                        Oper BW(Kbps)     : 0
BFD Template       : bfdt-2
BFD-Enabled        : yes                      BFD-Encap         : ipv4
BFD Fail Action    : none                     BFD Oper State    : connected
BFD WaitForUpTimer : 0 secs
BFD Time Remain    : 0 secs
Last Status Change : 08/21/2023 08:23:09      Signaling         : TLDP
Last Mgmt Change   : 08/21/2023 08:27:14
Endpoint           : N/A                      Precedence        : 4
ICB                : False
PW Status Sig      : Enabled
Force Vlan-Vc      : Disabled                 Force Qinq-Vc     : none
Class Fwding State : Down
Flags              : None
Local Pw Bits      : None
Peer Pw Bits       : None
Peer Fault Ip      : None
Peer Vccv CV Bits  : lspPing bfdFaultDet
Peer Vccv CC Bits  : mplsRouterAlertLabel
---snip---

-------------------------------------------------------------------------------
Control Channel Status
-------------------------------------------------------------------------------
PW Status          : disabled                 Refresh Timer     : <none>
Peer Status Expire : false
Request Timer      : <none>
Acknowledgement    : false

-------------------------------------------------------------------------------
---snip---

-------------------------------------------------------------------------------
RSVP/Static LSPs
-------------------------------------------------------------------------------
Associated LSP List :
Lsp Name           : lsp-1
Admin State        : Up                       Oper State        : Up
Time Since Last Tr*: 00h10m42s

-------------------------------------------------------------------------------
---snip---

-------------------------------------------------------------------------------
Number of SDPs : 1
-------------------------------------------------------------------------------
===============================================================================
* indicates that the corresponding row element may have been truncated.

The full set of VCCV BFD sessions running with the currently used parameters can be shown as follows:

[/]
A:admin@PE-5# show service vccv-bfd

===============================================================================
BFD Session
===============================================================================
Svc-Id                                            State      Tx Pkts    Rx Pkts
  Sdp-Id:Vc-Id                                  Multipl     Tx Intvl   Rx Intvl
  Protocols                                        Type     LAG Port     LAG ID
                                                                       LAG name
-------------------------------------------------------------------------------
1                                                    Up           88         90
  56:1                                                3         1000       1000
  vccv                                          central          N/A        N/A
  127.0.0.2
2                                                    Up          218        219
  561:4294967295                                      3         1000       1000
  vccv                                          central          N/A        N/A
  127.0.0.2
3                                                    Up           93         91
  54:3                                                5         2000       2000
  vccv                                          central          N/A        N/A
  127.0.0.2
-------------------------------------------------------------------------------
No. of System BFD sessions: 3
===============================================================================

The VCCV BFD sessions for a single service can be shown as follows:

[/]
A:admin@PE-5# show service id 3 vccv-bfd session

===============================================================================
BFD Session
===============================================================================
Svc-Id                                            State      Tx Pkts    Rx Pkts
  Sdp-Id:Vc-Id                                  Multipl     Tx Intvl   Rx Intvl
  Protocols                                        Type     LAG Port     LAG ID
                                                                       LAG name
-------------------------------------------------------------------------------
3                                                    Up          109        108
  54:3                                                5         2000       2000
  vccv                                          central          N/A        N/A
  127.0.0.2
-------------------------------------------------------------------------------
No. of BFD sessions: 1
===============================================================================

Similar output can be obtained on PE-6.

Disconnecting the link between PE-1 and PE-2 affects the traffic taking the upper path; the VCCV BFD sessions for the services "Epipe-1" and "Epipe-2" go down, and so do the SDPs and the services. This is reflected in log 99, as follows:

# on PE-5:
132 2023/08/21 08:29:40.782 CEST WARNING: MPLS #2012 Base VR 1:
"LSP path lsp-1::path-5-1-2-6 is operationally disabled ('shutdown') because 
resvTear"

133 2023/08/21 08:29:40.782 CEST WARNING: MPLS #2010 Base VR 1:
"LSP lsp-1 is operationally disabled ('shutdown') because noPathIsOperational"

134 2023/08/21 08:29:40.783 CEST MINOR: SVCMGR #2303 Base
"Status of SDP 56 changed to admin=up oper=down"

135 2023/08/21 08:29:40.783 CEST MINOR: SVCMGR #2303 Base
"Status of SDP 561 changed to admin=up oper=down"

136 2023/08/21 08:29:40.783 CEST MINOR: SVCMGR #2326 Base
"Status of SDP Bind 56:1 in service 1 (customer 1) local PW status bits changed 
to psnIngressFault psnEgressFault "

137 2023/08/21 08:29:40.784 CEST MAJOR: SVCMGR #2316 Base
"Processing of a SDP state change event is finished and the status of all affected
 SDP Bindings on SDP 561 has been updated."

138 2023/08/21 08:29:40.785 CEST MAJOR: SVCMGR #2316 Base
"Processing of a SDP state change event is finished and the status of all affected
 SDP Bindings on SDP 56 has been updated."

139 2023/08/21 08:29:43.777 CEST MINOR: VRTR #2069 Base 127.0.0.1
"The vccv BFD session with Local Discriminator 2 on Svc 2 SdpBind 561:4294967295
 is down due to noHeartBeat "

140 2023/08/21 08:29:43.787 CEST MINOR: VRTR #2069 Base 127.0.0.1
"The vccv BFD session with Local Discriminator 5 on Svc 1 SdpBind 56:1 is down 
 due to noHeartBeat "

141 2023/08/21 08:29:47.318 CEST MINOR: SVCMGR #2313 Base
"Status of SDP Bind 56:1 in service 1 (customer 1) peer PW status bits changed 
to psnIngressFault psnEgressFault "

This status of the VCCV BFD sessions then is as follows:

[/]
A:admin@PE-5# show service vccv-bfd

===============================================================================
BFD Session
===============================================================================
Svc-Id                                            State      Tx Pkts    Rx Pkts
  Sdp-Id:Vc-Id                                  Multipl     Tx Intvl   Rx Intvl
  Protocols                                        Type     LAG Port     LAG ID
                                                                       LAG name
-------------------------------------------------------------------------------
1                                                  Down          168        169
  56:1                                                3         1000       1000
  vccv                                          central          N/A        N/A
  127.0.0.2
2                                                  Down          298        299
  561:4294967295                                      3         1000       1000
  vccv                                          central          N/A        N/A
  127.0.0.2
3                                                    Up          223        222
  54:3                                                5         2000       2000
  vccv                                          central          N/A        N/A
  127.0.0.2
-------------------------------------------------------------------------------
No. of System BFD sessions: 3
===============================================================================

Consequently, the "Epipe-1" and "Epipe-2" services are operationally down, as follows:

[/]
A:admin@PE-5# show service service-using epipe

===============================================================================
Services [epipe]
===============================================================================
ServiceId    Type      Adm  Opr  CustomerId Service Name
-------------------------------------------------------------------------------
1            Epipe     Up   Down 1          Epipe-1
2            Epipe     Up   Down 1          Epipe-2
3            Epipe     Up   Up   1          Epipe-3
-------------------------------------------------------------------------------
Matching Services : 3
-------------------------------------------------------------------------------
===============================================================================

Conclusion

VCCV BFD can monitor specific high-value services, where detecting forwarding failures (and potentially recovering from them) in the minimal amount of time is critical. VCCV BFD complements other on-demand tools such as VCCV ping and VCCV trace by providing proactive detection of faults. VCCV ping and VCCV trace can later be used to localize and diagnose the root cause of the fault.