Multicast Label Distribution Protocol

This chapter provides information about multicast Label Distribution Protocol (mLDP).

Topics in this chapter include:

Applicability

This chapter is applicable to SR OS and was initially written for Release 13.0.R6. The CLI in the current edition corresponds to Release 23.7.R2.

In this chapter, the emphasis is on IPv4. However, multicast Label Distribution Protocol (mLDP) is also supported on IPv6 interfaces.

Overview

Multicast Label Distribution Protocol provides extensions to LDP for the setup of point-to-multipoint (P2MP) Label Switched Paths (LSPs) and multipoint-to-multipoint (MP2MP) LSPs in MPLS networks.

The protocol is described in RFC 6388, Label Distribution Protocol Extensions for Point-to-Multipoint and Multipoint-to-Multipoint Label Switched Paths.

Multicast LSPs can be applied for IP multicast or support for multicast in BGP/MPLS Layer 3 Virtual Private Networks (L3 VPNs).

Compared to RSVP P2MP LSPs, mLDP P2MP LSPs are easier to configure and the setup direction is different. Whereas the RSVP P2MP LSPs are set up from the root node toward the leaf nodes, mLDP P2MP LSPs are set up from the leaf nodes toward the root node.

P2MP Terminology

The following terminology is used.

Table 1. Terminology

Node

Description

Ingress / Root

P2MP LSPs have just one ingress (root) node. The root node receives IP multicast traffic and maps the traffic to a P2MP LSP (push). The node may perform MPLS multicast replication.

Egress / Leaf

P2MP LSPs have multiple egress (leaf) nodes. A leaf node removes data packets from a P2MP LSP (pop) for further processing. The node may perform IP multicast replication.

Transit

A transit Label Switching Router (LSR) can reach the root node via a directly connected upstream LSR. A transit LSR also has one or more directly connected downstream LSRs. The LSR swaps the MPLS label and may perform MPLS multicast replication.

Branch

A branch LSR is a transit LSR that has several directly connected LSRs. The LSR swaps the MPLS label and performs MPLS multicast replication.

Bud

A bud node is an egress node, but also a transit node. The node has directly connected receivers and also one or more directly connected downstream LSRs.

Setup of mLDP P2MP LSP

The setup of the P2MP LSP in the control plane is as follows.

  1. The leaf node initiates a tree setup according to what is configured. Mandatory parameters are the IP address of the root and an opaque value. The leaf node sends an LDP label map message to its upstream hop toward the root node of the tree.

  2. Each transit node receives the LDP label map message and sends another LDP label map message to its upstream hop toward the root node of the tree. Each label can be different.

  3. The root node receives the LDP label map message.

The label map message contains the root node address, an opaque value, and a label. In the example in Figure 1, the root node address is 192.0.2.1 and the opaque value is 5000.

Figure 1. Setup of mLDP P2MP LSP

After the LDP label map messages are sent in the control plane, the nodes program pop, swap, or push entries for the corresponding labels in the data plane.

  1. The leaf node programs a pop entry for the label it sent upstream.

  2. The transit node programs a swap entry for the label it sent upstream with the next-hop address and the label it received from the downstream node.

  3. The root node programs a push entry and a next-hop address for the label it received from the downstream node.

If multiple Equal Cost Multi-Path (ECMP) paths exist between two adjacent nodes, the upstream node of the multicast receiver must program all the entries in the forwarding plane. Only one entry must be active based on the ECMP hashing algorithm.

Configuration

The example topology shown in Example topology is used. The multicast source S-1 is connected to root node PE-1. PE-2 or PE-4 is the transit node for traffic destined for PE-3. There are two leaf nodes: PE-3 and PE-4. Multicast client H-3 is connected to PE-3, whereas multicast client H-4 is connected to PE-4.

Under normal circumstances, PE-2 is the transit node for traffic toward PE-3 and PE-4 is an egress node. If PE-4 is the transit node for traffic toward PE-3, while it also has a directly connected receiver, PE-4 is a bud node.

Figure 2. Example topology

Configure LDP P2MP LSP

Initial configuration

The PEs should have the following initial configuration:

  • Cards, MDAs, ports

  • Router interfaces

  • IGP (OSPF or IS-IS)

As an example, the router interfaces and OSPF configuration on PE-1 are as follows:

# on PE-1:
configure
    router
        interface "int-PE-1-PE-2"
            address 192.168.12.1/30
            port 1/1/c1/1
        exit
        interface "int-PE-1-PE-4"
            address 192.168.14.1/30
            port 1/1/c2/1
        exit
        interface "int-PE-1-S-1"
            address 172.16.11.1/30
            port 1/1/c3/1
        exit
        interface "system"
            address 192.0.2.1/32
        exit
        ospf 0
            area 0.0.0.0
                interface "system"
                exit
                interface "int-PE-1-PE-2"
                    interface-type point-to-point
                exit
                interface "int-PE-1-PE-4"
                    interface-type point-to-point
                exit
                interface "int-PE-1-S-1"
                    interface-type point-to-point
                exit
            exit
            no shutdown
        exit
    exit all

Enabling mLDP

When LDP is enabled, mLDP is enabled by default

The following command enables mLDP on a specific interface:

configure router ldp interface-parameters interface <ip-int-name> ipv4 fec-type-capability p2mp-ipv4 enable

Enable LDP (including mLDP) on the router interfaces of PE-1, as follows:

#on PE-1:
configure
    router
        ldp
            interface-parameters
                interface "int-PE-1-PE-2" dual-stack
                    ipv4
                        no shutdown
                    exit
                    no shutdown
                exit
                interface "int-PE-1-PE-4" dual-stack
                    ipv4
                        no shutdown
                    exit
                    no shutdown
                exit
            exit all

Verify that mLDP is enabled (P2MP: Enabled), as follows:

*A:PE-1# show router ldp status 

===============================================================================
LDP Status for IPv4 LSR ID 192.0.2.1
               IPv6 LSR ID ::
===============================================================================
---snip---
Admin State        : Up                   
IPv4 Oper State    : Up                   IPv6 Oper State      : Down
IPv4 Up Time       : 0d 00:10:35          IPv6 Down Time       : 0d 00:10:35
IPv4 Oper Down Rea*: n/a                  IPv6 Oper Down Reason: systemIpDown
IPv4 Oper Down Eve*: 0                    IPv6 Oper Down Events: 0
---snip---
-------------------------------------------------------------------------------
Capabilities
-------------------------------------------------------------------------------
Dynamic            : Enabled              P2MP                 : Enabled
IPv4 Prefix Fec    : Enabled              IPv6 Prefix Fec      : Enabled
Service Fec128     : Enabled              Service Fec129       : Enabled
MP MBB             : Enabled              Overload             : Enabled
Unrecognized Notif*: Enabled              
===============================================================================
* indicates that the corresponding row element may have been truncated.

Verify that mLDP is enabled on the interface "int-PE-1-PE-2" (IPv4 P2MP Fec Cap), as follows:

*A:PE-1# show router ldp interface "int-PE-1-PE-2" detail 

===============================================================================
LDP Interfaces
===============================================================================

===============================================================================
Interface "int-PE-1-PE-2"
===============================================================================
-------------------------------------------------------------------------------
BASE
-------------------------------------------------------------------------------
Admin State        : Up                  Oper State       : Up
BFD Status         : Disabled            Load Bal Wt      : None
-------------------------------------------------------------------------------
IPv4
-------------------------------------------------------------------------------
IPv4 Admin State   : Up                  IPv4 Oper State  : Up
Last Oper Chg      : 0d 00:08:23         
Hold Time          : 15                  Hello Factor     : 3
Oper Hold Time     : 15                  
Keepalive Timeout  : 30                  Keepalive Factor : 3
Transport Addr     : System              Last Modified    : 09/06/23 12:25:50
Active Adjacencies : 1                   
Local LSR Type     : System
Local LSR          : None                32-BitLocalLsr   : Disabled
IPv4 Pfx Fec Cap   : Enabled             IPv6 Pfx Fec Cap : Enabled
IPv4 P2MP Fec Cap  : Enabled             IPv6 P2MP Fec Cap: Enabled
===============================================================================
No. of Interfaces: 1
===============================================================================

Disable mLDP on interface "int-PE-1-PE-2" and verify the LDP status again, as follows:

# on PE-1:
configure
    router
        ldp
            interface-parameters
                interface "int-PE-1-PE-2" dual-stack
                    ipv4
                        fec-type-capability
                            p2mp-ipv4 disable
                        exit all
*A:PE-1# show router ldp status 

===============================================================================
LDP Status for IPv4 LSR ID 192.0.2.1
               IPv6 LSR ID ::
===============================================================================
---snip---
Admin State        : Up                   
IPv4 Oper State    : Up                   IPv6 Oper State      : Down
---snip---
-------------------------------------------------------------------------------
Capabilities
-------------------------------------------------------------------------------
Dynamic            : Enabled              P2MP                 : Enabled
IPv4 Prefix Fec    : Enabled              IPv6 Prefix Fec      : Enabled
Service Fec128     : Enabled              Service Fec129       : Enabled
MP MBB             : Enabled              Overload             : Enabled
Unrecognized Notif*: Enabled              
===============================================================================
* indicates that the corresponding row element may have been truncated.

P2MP LDP is still enabled on the router, but it is disabled on interface "int-PE-1-PE-2", which can be verified as follows:

*A:PE-1# show router ldp interface "int-PE-1-PE-2" detail 

===============================================================================
LDP Interfaces
===============================================================================

===============================================================================
Interface "int-PE-1-PE-2"
===============================================================================
-------------------------------------------------------------------------------
BASE
-------------------------------------------------------------------------------
Admin State        : Up                  Oper State       : Up
BFD Status         : Disabled            Load Bal Wt      : None
-------------------------------------------------------------------------------
IPv4
-------------------------------------------------------------------------------
IPv4 Admin State   : Up                  IPv4 Oper State  : Up
---snip---
IPv4 Pfx Fec Cap   : Enabled             IPv6 Pfx Fec Cap : Enabled
IPv4 P2MP Fec Cap  : Disabled            IPv6 P2MP Fec Cap: Enabled
===============================================================================
No. of Interfaces: 1
===============================================================================

P2MP multicast forwarding can be disabled per LDP interface. Disabling P2MP multicast forwarding does not prevent LDP from exchanging P2MP FEC elements on that interface in the control plane. In the data plane, the forwarding plane is not programmed with the next hop on the outgoing interface that is P2MP disabled.

Configure tunnel interface on the root and leaf nodes

Multicast LDP can be applied in different scenarios. In the following example, a tunnel interface is created on the root and leaf nodes. Other examples are Multicast Virtual Private Network (MVPN) with mLDP and dynamic PIM-mLDP mapping. In several ACG chapters on MVPN, mLDP is chosen; for example, in Multicast VPN: Use of Wildcard Selective PMSI.

A tunnel interface needs to be created on the root node, as follows:

# on PE-1:
configure router tunnel-interface ldp-p2mp 5000 sender 192.0.2.1 root-node
exit all

In this example, the tunnel interface gets interface index 73728, as follows:

*A:PE-1# show router tunnel-interface 

===============================================================================
 P2MP-RSVP P2MP-LDP Tunnel-Interfaces
===============================================================================
LSP/LDP           Type        SenderAddr          IfIndex             RootNode
-------------------------------------------------------------------------------
5000              ldp         192.0.2.1           73728               Yes
-------------------------------------------------------------------------------
Interfaces : 1
===============================================================================

A similar command is launched on the leaf nodes, but without the keyword root-node, as follows:

# on PE-3 and PE-4:
configure
    router
        tunnel-interface ldp-p2mp 5000 sender 192.0.2.1
        exit all
*A:PE-3# show router tunnel-interface 

===============================================================================
 P2MP-RSVP P2MP-LDP Tunnel-Interfaces
===============================================================================
LSP/LDP           Type        SenderAddr          IfIndex             RootNode
-------------------------------------------------------------------------------
5000              ldp         192.0.2.1           73728               No
-------------------------------------------------------------------------------
Interfaces : 1
===============================================================================

A P2MP LSP ping can be sent to verify the P2MP LSP. The options for P2MP LSP ping are as follows:

*A:PE-1# oam p2mp-lsp-ping ?
  - p2mp-lsp-ping <lsp-name> [p2mp-instance <instance-name> [s2l-dest-address
    <ipv4-address> [... up to 5]]] [ttl <label-ttl>]
  - p2mp-lsp-ping ldp <p2mp-identifier> [vpn-recursive-fec] [sender-addr
    <ipv4-address>] [leaf-addr <ipv4-address> [... up to 5]]
  - p2mp-lsp-ping ldp-ssm source <ip-address> group <ip-address> [router
    <router-instance>|service-name <service-name>] [sender-addr <ipv4-address>]
    [leaf-addr <ipv4-address> [... up to 5]]
  - options common to all p2mp-lsp-ping cases:  [detail] [fc <fc-name> [profile
    {in|out}]] [size <octets>] [timeout <timeout>]

 <lsp-name>           : [64 chars max]
 <instance-name>      : [32 chars max]
 <in|out>             : in|out - Default: out
 <fc-name>            : be|l2|af|l1|h2|ef|h1|nc - Default: be
 <octets>             : [1..9786] - Default: 1
 <label-ttl>          : [1..255] - Default: 255
 <timeout>            : [1..120] seconds - Default: 10
 <detail>             : keyword - displays detailed information
 <p2mp-identifier>    : [1..4294967295]
 <ldp-ssm>            : keyword - Label Distribution Protocol, Source-Specific
                        Multicast
 <ip-address>         : ipv4-address   - a.b.c.d
                        ipv6-address   - x:x:x:x:x:x:x:x   (eight 16-bit pieces)
                                         x:x:x:x:x:x:d.d.d.d
                                         x - [0..FFFF]H
                                         d - [0..255]D
 <ipv4-address>       : a.b.c.d
 <router-instance>    : <router-name>|<vprn-svc-id>
                        router-name    - "Base"  Default - Base
                        vprn-svc-id    - [1..2147483647]
 <service-name>       : [64 chars max]
 <vpn-recursive-fec>  : keyword - add a VPN Recursive FEC element to the launched
                        packet (useful for pinging a VPN BGP inter-AS Option B leaf)

Verify the P2MP LSP with the following ping command:

*A:PE-1# oam p2mp-lsp-ping ldp 5000 
P2MP identifier 5000: | 88 bytes MPLS payload

Total Leafs responded = 2
          round-trip min/avg/max  = 1.70 / 2.15 / 2.60 ms

Responses based on return code:
EgressRtr(3)=2

Both leaf nodes have sent a reply. The return code 3 indicates that the replying router is an egress for the Forwarding Equivalence Class (FEC).

For a detailed output per leaf, use the following command:

*A:PE-1# oam p2mp-lsp-ping ldp 5000 detail 
P2MP identifier 5000: | 88 bytes MPLS payload

===============================================================================
Leaf Information
===============================================================================
From             RTT                  Return Code
-------------------------------------------------------------------------------
192.0.2.4        =1.73ms              EgressRtr(3)
192.0.2.3        =2.51ms              EgressRtr(3)
===============================================================================

Total Leafs responded = 2
          round-trip min/avg/max  = 1.73 / 2.12 / 2.51 ms

Responses based on return code:
EgressRtr(3)=2

Verify LDP P2MP bindings

The example LDP P2MP LSP is shown in LDP P2MP LSP. In this case, PE-4 is only an egress node and not a bud node.

Figure 3. LDP P2MP LSP

Verify the LDP P2MP bindings on the leaf node PE-4, as follows.

The leaf node programs a pop entry for the label sent upstream.

*A:PE-4# show router ldp bindings active p2mp opaque-type generic ipv4 

===============================================================================
LDP Bindings (IPv4 LSR ID 192.0.2.4)
             (IPv6 LSR ID ::)
===============================================================================
Label Status:
        U - Label In Use, N - Label Not In Use, W - Label Withdrawn
        WP - Label Withdraw Pending, BU - Alternate For Fast Re-Route
        e - Label ELC
FEC Flags:
        LF - Lower FEC, UF - Upper FEC, M - Community Mismatch,
        BA - ASBR Backup FEC
===============================================================================
LDP Generic IPv4 P2MP Bindings (Active)
===============================================================================
P2MP-Id                                     Interface
RootAddr                                    Op
IngLbl                                      EgrLbl
EgrNH                                       EgrIf/LspId
-------------------------------------------------------------------------------
5000                                        73728
192.0.2.1                                   Pop
524283                                        --
  --                                          --
                                             
-------------------------------------------------------------------------------
No. of Generic IPv4 P2MP Active Bindings: 1
===============================================================================
*A:PE-4# show router ldp bindings p2mp opaque-type generic ipv4 detail 

===============================================================================
LDP Bindings (IPv4 LSR ID 192.0.2.4)
             (IPv6 LSR ID ::)
===============================================================================
Label Status:
        U - Label In Use, N - Label Not In Use, W - Label Withdrawn
        WP - Label Withdraw Pending, BU - Alternate For Fast Re-Route
        e - Label ELC
FEC Flags:
        LF - Lower FEC, UF - Upper FEC, M - Community Mismatch,
        BA - ASBR Backup FEC
==============================================================================
LDP Generic IPv4 P2MP Bindings
==============================================================================
-------------------------------------------------------------------------------
P2MP Type      : 1                  P2MP-Id    : 5000
Root-Addr      : 192.0.2.1
-------------------------------------------------------------------------------
Peer           : 192.0.2.1:0
Ing Lbl        : 524283U            
Egr Lbl        :   --               
Egr Int/LspId  :   --
EgrNextHop     :   --
Egr. Flags     : None               Ing. Flags : None
===============================================================================
No. of Generic IPv4 P2MP Bindings: 1
==============================================================================

PE-4 is only an egress node and not a transit node. There is no next hop.

Verify the LDP P2MP bindings on the leaf node PE-3, as follows:

*A:PE-3# show router ldp bindings active p2mp opaque-type generic ipv4 

===============================================================================
LDP Bindings (IPv4 LSR ID 192.0.2.3)
             (IPv6 LSR ID ::)
===============================================================================
Label Status:
        U - Label In Use, N - Label Not In Use, W - Label Withdrawn
        WP - Label Withdraw Pending, BU - Alternate For Fast Re-Route
        e - Label ELC
FEC Flags:
        LF - Lower FEC, UF - Upper FEC, M - Community Mismatch,
        BA - ASBR Backup FEC
===============================================================================
LDP Generic IPv4 P2MP Bindings (Active)
===============================================================================
P2MP-Id                                     Interface
RootAddr                                    Op
IngLbl                                      EgrLbl
EgrNH                                       EgrIf/LspId
-------------------------------------------------------------------------------
5000                                        73728
192.0.2.1                                   Pop
524283                                        --
  --                                          --
                                             
-------------------------------------------------------------------------------
No. of Generic IPv4 P2MP Active Bindings: 1
===============================================================================

Because PE-3 is an egress node, there is no next hop. The traffic toward PE-3 is sent via transit PE-2 and not via PE-4, as can be verified as follows:

*A:PE-3# show router ldp bindings p2mp opaque-type generic ipv4 detail 

===============================================================================
LDP Bindings (IPv4 LSR ID 192.0.2.3)
             (IPv6 LSR ID ::)
===============================================================================
Label Status:
        U - Label In Use, N - Label Not In Use, W - Label Withdrawn
        WP - Label Withdraw Pending, BU - Alternate For Fast Re-Route
        e - Label ELC
FEC Flags:
        LF - Lower FEC, UF - Upper FEC, M - Community Mismatch,
        BA - ASBR Backup FEC
==============================================================================
LDP Generic IPv4 P2MP Bindings
==============================================================================
-------------------------------------------------------------------------------
P2MP Type      : 1                  P2MP-Id    : 5000
Root-Addr      : 192.0.2.1
-------------------------------------------------------------------------------
Peer           : 192.0.2.2:0
Ing Lbl        : 524283U            
Egr Lbl        :   --               
Egr Int/LspId  :   --
EgrNextHop     :   --
Egr. Flags     : None               Ing. Flags : None
===============================================================================
No. of Generic IPv4 P2MP Bindings: 1
==============================================================================

PE-2 has programmed a swap entry for the label it sent to its upstream node PE-1 with the next-hop address and the label it received from the downstream node, as follows:

*A:PE-2# show router ldp bindings active p2mp opaque-type generic ipv4 

===============================================================================
LDP Bindings (IPv4 LSR ID 192.0.2.2)
             (IPv6 LSR ID ::)
===============================================================================
Label Status:
        U - Label In Use, N - Label Not In Use, W - Label Withdrawn
        WP - Label Withdraw Pending, BU - Alternate For Fast Re-Route
        e - Label ELC
FEC Flags:
        LF - Lower FEC, UF - Upper FEC, M - Community Mismatch,
        BA - ASBR Backup FEC
===============================================================================
LDP Generic IPv4 P2MP Bindings (Active)
===============================================================================
P2MP-Id                                     Interface
RootAddr                                    Op
IngLbl                                      EgrLbl
EgrNH                                       EgrIf/LspId
-------------------------------------------------------------------------------
5000                                        Unknw
192.0.2.1                                   Swap
524283                                      524283
192.168.23.2                                1/1/c1/1
                                             
-------------------------------------------------------------------------------
No. of Generic IPv4 P2MP Active Bindings: 1
===============================================================================
*A:PE-2# show router ldp bindings p2mp opaque-type generic ipv4 detail 

===============================================================================
LDP Bindings (IPv4 LSR ID 192.0.2.2)
             (IPv6 LSR ID ::)
===============================================================================
Label Status:
        U - Label In Use, N - Label Not In Use, W - Label Withdrawn
        WP - Label Withdraw Pending, BU - Alternate For Fast Re-Route
        e - Label ELC
FEC Flags:
        LF - Lower FEC, UF - Upper FEC, M - Community Mismatch,
        BA - ASBR Backup FEC
==============================================================================
LDP Generic IPv4 P2MP Bindings
==============================================================================
-------------------------------------------------------------------------------
P2MP Type      : 1                  P2MP-Id    : 5000
Root-Addr      : 192.0.2.1
-------------------------------------------------------------------------------
Peer           : 192.0.2.1:0
Ing Lbl        : 524283U            
Egr Lbl        :   --               
Egr Int/LspId  :   --
EgrNextHop     :   --
Egr. Flags     : None               Ing. Flags : None
-------------------------------------------------------------------------------
P2MP Type      : 1                  P2MP-Id    : 5000
Root-Addr      : 192.0.2.1
-------------------------------------------------------------------------------
Peer           : 192.0.2.3:0
Ing Lbl        :   --               
Egr Lbl        : 524283             
Egr Int/LspId  : 1/1/c1/1
EgrNextHop     : 192.168.23.2
Egr. Flags     : None               Ing. Flags : None
Egr If Name    : int-PE-2-PE-3
Metric         : 1                  Mtu        : 8922
===============================================================================
No. of Generic IPv4 P2MP Bindings: 2
==============================================================================

The egress next hop is PE-3.

On the root node PE-1, there is MPLS multicast replication. One traffic stream goes via transit node PE-2 toward leaf node PE-3 and the other traffic stream goes directly toward leaf node PE-4. There are two push entries with the corresponding next-hop address, as follows:

*A:PE-1# show router ldp bindings active p2mp opaque-type generic ipv4 

===============================================================================
LDP Bindings (IPv4 LSR ID 192.0.2.1)
             (IPv6 LSR ID ::)
===============================================================================
Label Status:
        U - Label In Use, N - Label Not In Use, W - Label Withdrawn
        WP - Label Withdraw Pending, BU - Alternate For Fast Re-Route
        e - Label ELC
FEC Flags:
        LF - Lower FEC, UF - Upper FEC, M - Community Mismatch,
        BA - ASBR Backup FEC
===============================================================================
LDP Generic IPv4 P2MP Bindings (Active)
===============================================================================
P2MP-Id                                     Interface
RootAddr                                    Op
IngLbl                                      EgrLbl
EgrNH                                       EgrIf/LspId
-------------------------------------------------------------------------------
5000                                        73728
192.0.2.1                                   Push
  --                                        524283
192.168.12.2                                1/1/c1/1
                                             
5000                                        73728
192.0.2.1                                   Push
  --                                        524283
192.168.14.2                                1/1/c2/1
                                             
-------------------------------------------------------------------------------
No. of Generic IPv4 P2MP Active Bindings: 2
===============================================================================
*A:PE-1# show router ldp bindings p2mp opaque-type generic ipv4 detail 

===============================================================================
LDP Bindings (IPv4 LSR ID 192.0.2.1)
             (IPv6 LSR ID ::)
===============================================================================
Label Status:
        U - Label In Use, N - Label Not In Use, W - Label Withdrawn
        WP - Label Withdraw Pending, BU - Alternate For Fast Re-Route
        e - Label ELC
FEC Flags:
        LF - Lower FEC, UF - Upper FEC, M - Community Mismatch,
        BA - ASBR Backup FEC
==============================================================================
LDP Generic IPv4 P2MP Bindings
==============================================================================
-------------------------------------------------------------------------------
P2MP Type      : 1                  P2MP-Id    : 5000
Root-Addr      : 192.0.2.1
-------------------------------------------------------------------------------
Peer           : 192.0.2.2:0
Ing Lbl        :   --               
Egr Lbl        : 524283             
Egr Int/LspId  : 1/1/c1/1
EgrNextHop     : 192.168.12.2
Egr. Flags     : None               Ing. Flags : None
Egr If Name    : int-PE-1-PE-2
Metric         : 1                  Mtu        : 8922
-------------------------------------------------------------------------------
P2MP Type      : 1                  P2MP-Id    : 5000
Root-Addr      : 192.0.2.1
-------------------------------------------------------------------------------
Peer           : 192.0.2.4:0
Ing Lbl        :   --               
Egr Lbl        : 524283             
Egr Int/LspId  : 1/1/c2/1
EgrNextHop     : 192.168.14.2
Egr. Flags     : None               Ing. Flags : None
Egr If Name    : int-PE-1-PE-4
Metric         : 1                  Mtu        : 8922
===============================================================================
No. of Generic IPv4 P2MP Bindings: 2
==============================================================================

Tools command

The following tools command can be launched on any of the nodes in the P2MP LSP.

For the ingress node PE-1, where one branch goes to transit node PE-2 (192.0.2.2) and another branch to leaf node PE-4 (192.0.2.4), the output is as follows:

*A:PE-1# tools dump router ldp fec p2mp-id 5000 root 192.0.2.1 
P2MP: root: 192.0.2.1, T: 1, L: 4, TunnelId: 5000
  Create Time   : 09/06/23 12:38:05.648 (elapsed: 0d 00:01:55)
  Last Mod. Time: 09/06/23 12:38:17.558 (elapsed: 0d 00:01:43)
  FEC Flags     : Push Mttm
  FEC typedFlags: none
  TunlIfId      : 73728   (OperState : up)
  mttmTunnAttr  : None
  LSP ID        : 65540      LSP ID Acct.  : 4       
  useMcastRteTbl: No         mttmRd        : 0x0
  isIngressMttm : Yes        HasLeaf       : No      
  isIngrItermdte: No         CanProgIngress: Yes     
  InPhopFrr     : No         InAsbrFrr     : No      
  isStitchedUpr : No         isLwrMbbCplte : No      
  stitchRteType : Rtm        detctBkpAsbrLp: No      
  bkpLoop       : No         bkpAsbrLoop   : No      
  sysIpAddr     : 0.0.0.0
  RslvdPhop(p)  : 0.0.0.0:0 (seqNum 0 isBgp No isTtm No)
  RslvdPhop(b)  : 0.0.0.0:0 (seqNum 0 isBgp No isTtm No)
  pri Upstream  : None
  mbb Upstream  : None
  bkp Upstream  : None
  AdvInLabel(p) : 0       
  AdvInLabel(b) : 0       
  RslvdAsbr(p)  : 0.0.0.0 (seqNum 0 recursive: No vpn: No)
  RslvdAsbr(b)  : 0.0.0.0 (seqNum 0 recursive: No vpn: No)
  Num Resolved   Nhops  : 2       
  Num MBB Req.   Nhops  : 0       
  Num Programmed Nhops  : 2       
  Num MBB Req. Lwr Fecs : 0       
    Programmed Nhop[01] : 192.0.2.2:0, OutLabel 524283 
    Programmed Nhop[02] : 192.0.2.4:0, OutLabel 524283 
  Metric        : 1          Mtu         : 8922    

  Num of Peers : 2

  FEC Peer: 192.0.2.2:0
    Peer Flags: MPush  (0x800)
    ModTime   : 09/06/23 12:38:16.021 (elapsed.: 0d 00:01:45)

    ->Num Egress Labels:
      -> (Label: 524283    Status: UsePush)
      Flow Label Tx: no, Rx: no

    <-Num Ingress Labels:
      None

    <Resolved as Next Hop>
     Next Hop Info :
       metric: 1  mtu: 8922
       [01]: Next Hop: 192.168.12.2    Interface: 2 Inner Label: 0  


  FEC Peer: 192.0.2.4:0
    Peer Flags: MPush  (0x800)
    ModTime   : 09/06/23 12:38:17.552 (elapsed.: 0d 00:01:43)

    ->Num Egress Labels:
      -> (Label: 524283    Status: UsePush)
      Flow Label Tx: no, Rx: no

    <-Num Ingress Labels:
      None

    <Resolved as Next Hop>
     Next Hop Info :
       metric: 1  mtu: 8922
       [01]: Next Hop: 192.168.14.2    Interface: 3 Inner Label: 0  

The labels that are pushed at PE-1 are 524283 for traffic to PE-2 and 524283 for traffic to PE-4.

On transit node PE-2, the incoming label 524283 is swapped to outgoing label 524283 toward PE-3, as follows:

*A:PE-2# tools dump router ldp fec p2mp-id 5000 root 192.0.2.1 
P2MP: root: 192.0.2.1, T: 1, L: 4, TunnelId: 5000
  Create Time   : 09/06/23 12:38:15.448 (elapsed: 0d 00:01:55)
  Last Mod. Time: 09/06/23 12:38:15.448 (elapsed: 0d 00:01:55)
  FEC Flags     : Swap
  FEC typedFlags: none
  TunlIfId      : 0       (OperState : dn)
  mttmTunnAttr  : None
  LSP ID        : 0          LSP ID Acct.  : 0       
  useMcastRteTbl: No         mttmRd        : 0x0
  isIngressMttm : No         HasLeaf       : No      
  isIngrItermdte: No         CanProgIngress: No      
  InPhopFrr     : No         InAsbrFrr     : No      
  isStitchedUpr : No         isLwrMbbCplte : No      
  stitchRteType : None       detctBkpAsbrLp: No      
  bkpLoop       : No         bkpAsbrLoop   : No      
  sysIpAddr     : 0.0.0.0
  RslvdPhop(p)  : 192.0.2.1:0 (seqNum 2 isBgp No isTtm No)
  RslvdPhop(b)  : 0.0.0.0:0 (seqNum 0 isBgp No isTtm No)
  pri Upstream  : 192.0.2.1:0, AdvLabel 524283
  mbb Upstream  : None
  bkp Upstream  : None
  AdvInLabel(p) : 524283  
  AdvInLabel(b) : 0       
  RslvdAsbr(p)  : 0.0.0.0 (seqNum 0 recursive: No vpn: No)
  RslvdAsbr(b)  : 0.0.0.0 (seqNum 0 recursive: No vpn: No)
  PrgInLabel(b) : 1       
  Num Resolved   Nhops  : 1       
  Num MBB Req.   Nhops  : 0       
  Num Programmed Nhops  : 1       
  Num MBB Req. Lwr Fecs : 0       
    Programmed Nhop[01] : 192.0.2.3:0, OutLabel 524283 
  Metric        : 1          Mtu         : 8922    

  Num of Peers : 2

  FEC Peer: 192.0.2.1:0
    Peer Flags: none  (0x0)
    ModTime   : 09/06/23 12:38:15.451 (elapsed.: 0d 00:01:55)

    ->Num Egress Labels:
      None

    <-Num Ingress Labels:
      <- (Label: 524283    Status: UseSwap)
      Rej Status: OK
      Flow Label Tx: no, Rx: no
      Flow Label Tx Sent: no, Rx Sent: no

    <Resolved as CUR Upstream>

  FEC Peer: 192.0.2.3:0
    Peer Flags: MSwap  (0x1000)
    ModTime   : 09/06/23 12:38:15.452 (elapsed.: 0d 00:01:55)

    ->Num Egress Labels:
      -> (Label: 524283    Status: UseSwap)
      Flow Label Tx: no, Rx: no

    <-Num Ingress Labels:
      None

    <Resolved as Next Hop>
     Next Hop Info :
       metric: 1  mtu: 8922
       [01]: Next Hop: 192.168.23.2    Interface: 3 Inner Label: 0  

On leaf node PE-3, the incoming label from PE-2 (524283) is popped. There is no next hop.

*A:PE-3# tools dump router ldp fec p2mp-id 5000 root 192.0.2.1 
P2MP: root: 192.0.2.1, T: 1, L: 4, TunnelId: 5000
  Create Time   : 09/06/23 12:38:14.997 (elapsed: 0d 00:02:04)
  Last Mod. Time: 09/06/23 12:38:14.997 (elapsed: 0d 00:02:04)
  FEC Flags     : Pop Mttm
  FEC typedFlags: none
  TunlIfId      : 73728   (OperState : up)
  mttmTunnAttr  : None
  LSP ID        : 0          LSP ID Acct.  : 0       
  useMcastRteTbl: No         mttmRd        : 0x0
  isIngressMttm : No         HasLeaf       : Yes     
  isIngrItermdte: No         CanProgIngress: No      
  InPhopFrr     : No         InAsbrFrr     : No      
  isStitchedUpr : No         isLwrMbbCplte : No      
  stitchRteType : None       detctBkpAsbrLp: No      
  bkpLoop       : No         bkpAsbrLoop   : No      
  sysIpAddr     : 0.0.0.0
  RslvdPhop(p)  : 192.0.2.2:0 (seqNum 2 isBgp No isTtm No)
  RslvdPhop(b)  : 0.0.0.0:0 (seqNum 0 isBgp No isTtm No)
  pri Upstream  : 192.0.2.2:0, AdvLabel 524283
  mbb Upstream  : None
  bkp Upstream  : None
  AdvInLabel(p) : 524283  
  AdvInLabel(b) : 0       
  RslvdAsbr(p)  : 0.0.0.0 (seqNum 0 recursive: No vpn: No)
  RslvdAsbr(b)  : 0.0.0.0 (seqNum 0 recursive: No vpn: No)
  PrgInLabel(b) : 1       
  Num Resolved   Nhops  : 1       
  Num MBB Req.   Nhops  : 0       
  Num Programmed Nhops  : 1       
  Num MBB Req. Lwr Fecs : 0       
    Programmed Nhop[01] : 0.0.0.0:0, OutLabel 0 (Leaf)
  Metric        : 0          Mtu         : 0       

  Num of Peers : 1

  FEC Peer: 192.0.2.2:0
    Peer Flags: none  (0x0)
    ModTime   : 09/06/23 12:38:15.000 (elapsed.: 0d 00:02:04)

    ->Num Egress Labels:
      None

    <-Num Ingress Labels:
      <- (Label: 524283    Status: UsePop)
      Rej Status: OK
      Flow Label Tx: no, Rx: no
      Flow Label Tx Sent: no, Rx Sent: no

    <Resolved as CUR Upstream>

The output for leaf node PE-4 is similar.

Debug commands

Debugging was enabled on the nodes when LDP was configured. To distinguish which messages are being logged for a debug command, the debug configuration is different for the nodes, as follows:

*A:PE-2# debug router ldp peer 192.0.2.1 event bindings
*A:PE-3# debug router ldp peer 192.0.2.2 packet label detail
*A:PE-4# debug router ldp peer 192.0.2.1 packet init detail 

The following LDP messages are logged. The first two messages correspond to the label mapping messages to establish LDP bindings. The following message is sent from transit node PE-2 to root node PE-1.

*A:PE-2# debug router ldp peer 192.0.2.1 event bindings 
# on PE-2:
7 2023/09/06 12:38:15.448 UTC MINOR: DEBUG #2001 Base LDP
"LDP: Binding 
Sending Label mapping label 524283 for P2MP: root = 192.0.2.1, T: 1, L: 4, TunnelId: 5000
 to peer 192.0.2.1:0."

The following LDP message is sent by the leaf node PE-3 to the transit node PE-2.

*A:PE-3# debug router ldp peer 192.0.2.2 packet label detail
# on PE-3:
7 2023/09/06 12:38:15.003 UTC MINOR: DEBUG #2001 Base LDP
"LDP: LDP
Send Label Mapping packet (msgId 92) to 192.0.2.2:0
Protocol version = 1
Label 524283 advertised for the following FECs
P2MP: root = 192.0.2.1, T: 1, L: 4, TunnelId: 5000
"

The following message shows the negotiation of capabilities when LDP bindings are initialized.

*A:PE-4# debug router ldp peer 192.0.2.1 packet init detail 
# on PE-4:
1 2023/09/06 12:26:19.174 UTC MINOR: DEBUG #2001 Base LDP
"LDP: LDP
Send Initialization packet (msgId 2) to 192.0.2.1:0
Protocol version = 1
Keepalive Timeout = 30  Label Advertisement = downStreamUnsolicited
Loop Detection = Off  PathVector Limit = 0  Max Pdu = 4096
P2MP Capability = yes
MP MBB Capability = yes
Overload Capability = yes
Dynamic Capability = yes
Unrecognized Notification Capability = yes
"

Configure multicast LDP and verify traffic

Configure PIM and IGMP on the root and leaf nodes

PIM needs to be enabled on the root node on the interface toward the multicast source S-1, as follows:

# on PE-1:
configure
    router
        pim
            interface "int-PE-1-S-1"
            exit all

On the leaf nodes, PIM needs to be enabled (no shutdown), but no interfaces need to be assigned.

The IGMP configuration for root node PE-1 is needed to forward the incoming traffic for multicast group 232.1.1.1 from source 172.16.11.2 to the tunnel-interface. If IGMP is not configured, the incoming traffic on the interface toward the multicast source is dropped, because no outgoing interface is defined.

# on PE-1:
configure
    router
        igmp
            tunnel-interface ldp-p2mp 5000 sender 192.0.2.1
                static
                    group 232.1.1.1
                        source 172.16.11.2
                    exit all

The IGMP configuration for leaf node PE-3 is as follows:

# on PE-3:
configure
    router
        igmp
            interface "int-PE-3-H-3"
                static
                    group 232.1.1.1
                        source 172.16.11.2
                    exit all

The incoming traffic from the tunnel interface is forwarded to the outgoing interface toward the receiving multicast host H-3.

The IGMP configuration for leaf node PE-4 is similar.

At this point, the IGMP/PIM configuration on the root node is complete. This can be verified, as follows:

*A:PE-1# show router pim group 

===============================================================================
Legend:  A = Active   S = Standby
===============================================================================
PIM Groups ipv4
===============================================================================
Group Address               Type                Spt Bit  Inc Intf       No.Oifs
   Source Address              RP                  State    Inc Intf(S) 
-------------------------------------------------------------------------------
232.1.1.1                   (S,G)                        int-PE-1-S-1   1
   172.16.11.2                                                             
-------------------------------------------------------------------------------
Groups : 1
===============================================================================
*A:PE-1# show router pim group detail 

===============================================================================
PIM Source Group ipv4
===============================================================================
Group Address      : 232.1.1.1
Source Address     : 172.16.11.2
RP Address         : 0
Advt Router        : 192.0.2.1
Flags              :                    Type               : (S,G)
Mode               : sparse             
MRIB Next Hop      : 172.16.11.2
MRIB Src Flags     : direct             
Keepalive Timer    : Not Running        
Up Time            : 0d 00:02:38        Resolved By        : rtable-u
 
Up JP State        : Joined             Up JP Expiry       : 0d 00:00:00
Up JP Rpt          : Not Joined StarG   Up JP Rpt Override : 0d 00:00:00
 
Register State     : No Info            
Reg From Anycast RP: No                 
 
Rpf Neighbor       : 172.16.11.2
Incoming Intf      : int-PE-1-S-1
Outgoing Intf List : mpls-if-73728
 
Curr Fwding Rate   : 9751.560 kbps      
Forwarded Packets  : 14017              Discarded Packets  : 0
Forwarded Octets   : 20773194           RPF Mismatches     : 0
Spt threshold      : 0 kbps             ECMP opt threshold : 7
Admin bandwidth    : 1 kbps             
-------------------------------------------------------------------------------
Groups : 1
===============================================================================

The incoming interface is the interface facing the multicast source S-1. The outgoing interface is a reference to the tunnel interface. The name for the outgoing interface (mpls-if-73728) contains the tunnel interface index 73728 as in previous CLI output. The multicast source S-1 is already sending traffic, but the receivers cannot receive it yet.

The configuration on the leaf nodes is still incomplete. A multicast policy needs to be configured and applied first.

Configure and apply multicast policy on leaf nodes

The leaf nodes need to get multicast traffic off the LDP P2MP LSP. Therefore, a multicast policy needs to be created and applied, as follows:

# on PE-3 and PE-4:
configure
    mcast-management
        multicast-info-policy "p2mp-pol" create
            bundle "bundle1" create
                primary-tunnel-interface ldp-p2mp 5000 sender 192.0.2.1
                channel 232.1.1.1 create
                exit
            exit all

configure
    router
        multicast-info-policy "p2mp-pol"
    exit all

Verify multicast traffic on leaf nodes

Verify the multicast traffic, as follows:

*A:PE-3# show router pim group 

===============================================================================
Legend:  A = Active   S = Standby
===============================================================================
PIM Groups ipv4
===============================================================================
Group Address               Type                Spt Bit  Inc Intf       No.Oifs
   Source Address              RP                  State    Inc Intf(S) 
-------------------------------------------------------------------------------
232.1.1.1                   (S,G)                        mpls-if-73728  1
   172.16.11.2                                                             
-------------------------------------------------------------------------------
Groups : 1
===============================================================================

The multicast source S-1 sends a multicast stream with group address 232.1.1.1. The multicast traffic is received by the leaf nodes, which can be verified as follows:

*A:PE-3# show router pim group detail 

===============================================================================
PIM Source Group ipv4
===============================================================================
Group Address      : 232.1.1.1
Source Address     : 172.16.11.2
RP Address         : 0
Advt Router        : 
Flags              :                    Type               : (S,G)
Mode               : sparse             
MRIB Next Hop      : 
MRIB Src Flags     : remote             
Keepalive Timer    : Not Running        
Up Time            : 0d 00:02:33        Resolved By        : unresolved
 
Up JP State        : Joined             Up JP Expiry       : 0d 00:00:47
Up JP Rpt          : Not Joined StarG   Up JP Rpt Override : 0d 00:00:00
 
Register State     : No Info            
Reg From Anycast RP: No                 
 
Rpf Neighbor       : 
Incoming Intf      : mpls-if-73728
Outgoing Intf List : int-PE-3-H-3
 
Curr Fwding Rate   : 9751.560 kbps      
Forwarded Packets  : 16079              Discarded Packets  : 0
Forwarded Octets   : 23829078           RPF Mismatches     : 0
Spt threshold      : 0 kbps             ECMP opt threshold : 7
Admin bandwidth    : 1 kbps             
-------------------------------------------------------------------------------
Groups : 1
===============================================================================

The incoming interface is from the tunnel interface, whereas the outgoing interface is toward the receiving multicast host H-3.

mLDP fast upstream switchover

mLDP fast upstream switchover allows a downstream node of an mLDP FEC to perform a fast switchover and source the traffic from another upstream node. This switchover is necessary when IGP and LDP are converging after a failure of the upstream LSR, which is the primary next hop of the root LSR for the P2MP FEC. There is traffic duplication toward the node that has the upstream alternate backup (in this case to PE-3), but only one stream is accepted. The multicast stream is sent to the primary next hop as well as to the loopfree alternate backup. As long as there is no failure, the primary next hop accepts the traffic and forwards it. The backup rejects the traffic. When a failure occurs and the primary LDP session goes down, the backup starts accepting packets.

mLDP fast upstream switchover provides an upstream Fast Reroute (FRR) node-protection capability for the mLDP FEC packets. This multicast upstream FRR node protection is at the expense of traffic duplication from two different upstream nodes into the node that performs the fast upstream switchover. This feature is described in draft-pdutta-mpls-mldp-up-redundancy.

Multicast upstream FRR can be configured for mLDP, as follows:

# on PE-1:
configure
    router
        ospf
            loopfree-alternates
            exit
        exit
        ldp
            mcast-upstream-frr
        exit
    exit all

This configuration can be repeated on some or all of the nodes. In this example, it is configured on all nodes. FRR for unicast can be configured in combination with this, but that is not required. FRR for unicast can be enabled as follows:

# on all nodes:
configure 
    router 
        ip-fast-reroute
        ldp 
            fast-reroute
        exit
    exit all

In this example, it is assumed that unicast IP and unicast LDP prefixes do not need to be protected. Therefore, unicast FRR remains disabled.

FRR can be verified as disabled for unicast (FRR) and enabled for multicast (Mcast Upstream FRR), as follows:

*A:PE-1# show router ldp status 

===============================================================================
LDP Status for IPv4 LSR ID 192.0.2.1
               IPv6 LSR ID ::
===============================================================================
---snip---
Admin State        : Up                   
IPv4 Oper State    : Up                   IPv6 Oper State      : Down
---snip---
FRR                : Disabled             Mcast Upstream FRR   : Enabled
Mcast Upst ASBR FRR: Disabled             
MP MBB Time        : 3                    
---snip---
-------------------------------------------------------------------------------
Capabilities
-------------------------------------------------------------------------------
Dynamic            : Enabled              P2MP                 : Enabled
IPv4 Prefix Fec    : Enabled              IPv6 Prefix Fec      : Enabled
Service Fec128     : Enabled              Service Fec129       : Enabled
MP MBB             : Enabled              Overload             : Enabled
Unrecognized Notif*: Enabled              
===============================================================================
* indicates that the corresponding row element may have been truncated.

Of the three nodes in the example topology that have upstream nodes, only PE-3 has an upstream alternate for FRR. PE-4 becomes a transit node for traffic destined for PE-3 (but PE-3 drops it, until the primary LDP session fails). PE-3 sends a label mapping message to PE-4 for label 524282, as in the following trace message.

# on PE-3:
8 2023/09/06 12:45:01.375 UTC MINOR: DEBUG #2001 Base LDP
"LDP: LDP
Send Label Mapping packet (msgId 137) to 192.0.2.4:0
Protocol version = 1
Label 524282 advertised for the following FECs
P2MP: root = 192.0.2.1, T: 1, L: 4, TunnelId: 5000
MP Status MBB = REQ
"

PE-4 has an additional LDP P2MP binding where the label is swapped, as follows:

*A:PE-4# show router ldp bindings active p2mp opaque-type generic ipv4 

===============================================================================
LDP Bindings (IPv4 LSR ID 192.0.2.4)
             (IPv6 LSR ID ::)
===============================================================================
Label Status:
        U - Label In Use, N - Label Not In Use, W - Label Withdrawn
        WP - Label Withdraw Pending, BU - Alternate For Fast Re-Route
        e - Label ELC
FEC Flags:
        LF - Lower FEC, UF - Upper FEC, M - Community Mismatch,
        BA - ASBR Backup FEC
===============================================================================
LDP Generic IPv4 P2MP Bindings (Active)
===============================================================================
P2MP-Id                                     Interface
RootAddr                                    Op
IngLbl                                      EgrLbl
EgrNH                                       EgrIf/LspId
-------------------------------------------------------------------------------
5000                                        73728
192.0.2.1                                   Pop
524283                                        --
  --                                          --
                                             
5000                                        73728
192.0.2.1                                   Swap
524283                                      524282
192.168.34.1                                1/1/c2/1
                                             
-------------------------------------------------------------------------------
No. of Generic IPv4 P2MP Active Bindings: 2
===============================================================================

PE-3 has an additional entry for the FRR backup that is available (BU - Alternate for Fast Re-Route). PE-3 gets duplicated traffic, but rejects all traffic from PE-4 and only accept traffic from PE-2 as long as there is no failover.

*A:PE-3# show router ldp bindings active p2mp opaque-type generic ipv4 

===============================================================================
LDP Bindings (IPv4 LSR ID 192.0.2.3)
             (IPv6 LSR ID ::)
===============================================================================
Label Status:
        U - Label In Use, N - Label Not In Use, W - Label Withdrawn
        WP - Label Withdraw Pending, BU - Alternate For Fast Re-Route
        e - Label ELC
FEC Flags:
        LF - Lower FEC, UF - Upper FEC, M - Community Mismatch,
        BA - ASBR Backup FEC
===============================================================================
LDP Generic IPv4 P2MP Bindings (Active)
===============================================================================
P2MP-Id                                     Interface
RootAddr                                    Op
IngLbl                                      EgrLbl
EgrNH                                       EgrIf/LspId
-------------------------------------------------------------------------------
5000                                        73728
192.0.2.1                                   Pop
524283                                        --
  --                                          --
                                             
5000                                        73728
192.0.2.1                                   Pop
524282BU                                      --
  --                                          --
                                             
-------------------------------------------------------------------------------
No. of Generic IPv4 P2MP Active Bindings: 2
===============================================================================

Because LoopFree Alternate (LFA) and ECMP are mutually exclusive, LFA is only useful when ECMP is disabled. When both are enabled, ECMP has preference.

mLDP fast upstream switchover relies on the fast detection of loss of the LDP session to the upstream peer to which the primary Ingress Label Map (ILM) label had been advertised. As a result, Nokia recommends to perform the following:

  1. Enable Bidirectional Forwarding Detection (BFD) on all LDP interfaces to upstream LSR nodes. When BFD detects the loss of the last adjacency to the upstream LSR, BFD brings down the LDP session immediately. The backup ILM is activated.

  2. If there is a concurrent T-LDP adjacency to the same LSR node, enable BFD on the T-LDP peer as well as on the interface.

  3. Enable the ldp-sync-timer option on all interfaces to the upstream LSR nodes.

    If the LDP session for the primary ILM to the upstream LSR goes down for any other reason than a failure of the interface or of the upstream LSR, routing and LDP go out of sync. The backup ILM remains activated until the Interior Gateway Protocol (IGP) seeks the next Shortest Path First (SPF). By enabling the ldp-sync-timer, this process is accelerated because the advertised link metric gets the maximum value as soon as the LDP session goes down. This triggers the IGP to calculate an SPF route. See chapter LDP-IGP Synchronization.

The FRR configuration can be removed, as follows:

# on all nodes:
configure
    router
        ospf 0
            no loopfree-alternates
        exit
        ldp
            no mcast-upstream-frr 
        exit
    exit all

Multipoint make-before-break (MP MBB)

Multipoint MBB is performed when the best path to the root changes, but the existing path can still be used, such as when a link comes up or when the routing metric changes. The goal of MBB is to establish a new P2MP LSP before the old P2MP is removed, so as to avoid traffic loss.

Leaf or transit nodes must allocate a new label and program the ILM with a duplicate set of existing Next-Hop Label Forwarding Entries (NHLFEs) toward the upstream nodes. This may lead to traffic duplication for a short period of time.

Multipoint MBB is enabled by default, as follows:

*A:PE-3# show router ldp status 

===============================================================================
LDP Status for IPv4 LSR ID 192.0.2.3
               IPv6 LSR ID ::
===============================================================================
---snip---
Admin State        : Up                   
IPv4 Oper State    : Up                   IPv6 Oper State      : Down
---snip---
MP MBB Time        : 3                    
---snip---
-------------------------------------------------------------------------------
Capabilities
-------------------------------------------------------------------------------
Dynamic            : Enabled              P2MP                 : Enabled
IPv4 Prefix Fec    : Enabled              IPv6 Prefix Fec      : Enabled
Service Fec128     : Enabled              Service Fec129       : Enabled
MP MBB             : Enabled              Overload             : Enabled
Unrecognized Notif*: Enabled              
===============================================================================
* indicates that the corresponding row element may have been truncated.

When the metric is increased on the interface (int-PE-3-PE-2) toward the active upstream node, PE-3 sends out an OSPF link status update. Traffic still arrives at PE-3 using the original P2MP LSP. The MBB P2MP LSP is set up.

PE-3 sends a label mapping message toward PE-4, including an MP status TLV carrying an MBB status code indicating that MBB procedures apply to the LSP. PE-4 sends an LDP notification toward PE-3, including an MP status TLV indicating that PE-4 has a state for the existing P2MP LSP.

PE-3 sends an LDP withdrawal message to PE-2. PE-2 replies with an LDP release message.

The multicast traffic arrives at PE-3 using the new LDP P2MP LSP. This way, PE-4 becomes a bud node, and PE-2 is not used for transit anymore; see New LDP P2MP LSP after metric change.

Figure 4. New LDP P2MP LSP after metric change

Originally, leaf node PE-3 preferred the route via PE-2 toward root node PE-1, as follows:

*A:PE-3# show router route-table 192.0.2.1 

===============================================================================
Route Table (Router: Base)
===============================================================================
Dest Prefix[Flags]                            Type    Proto     Age        Pref
      Next Hop[Interface Name]                                    Metric   
-------------------------------------------------------------------------------
192.0.2.1/32                                  Remote  OSPF      00h23m21s  10
       192.168.23.1                                                 2
-------------------------------------------------------------------------------
No. of Routes: 1
---snip---
===============================================================================

Consequently, the label map messages were originally sent to PE-2, not to PE-4. PE-2 is the transit node for traffic destined for PE-3, as follows:

*A:PE-2# show router ldp bindings active p2mp opaque-type generic ipv4 

===============================================================================
LDP Bindings (IPv4 LSR ID 192.0.2.2)
             (IPv6 LSR ID ::)
===============================================================================
Label Status:
        U - Label In Use, N - Label Not In Use, W - Label Withdrawn
        WP - Label Withdraw Pending, BU - Alternate For Fast Re-Route
        e - Label ELC
FEC Flags:
        LF - Lower FEC, UF - Upper FEC, M - Community Mismatch,
        BA - ASBR Backup FEC
===============================================================================
LDP Generic IPv4 P2MP Bindings (Active)
===============================================================================
P2MP-Id                                     Interface
RootAddr                                    Op
IngLbl                                      EgrLbl
EgrNH                                       EgrIf/LspId
-------------------------------------------------------------------------------
5000                                        Unknw
192.0.2.1                                   Swap
524283                                      524283
192.168.23.2                                1/1/c1/1
                                             
-------------------------------------------------------------------------------
No. of Generic IPv4 P2MP Active Bindings: 1
===============================================================================

The metric is changed on the interface between PE-3 and PE-2, as follows:

*A:PE-3# configure router ospf area 0 interface "int-PE-3-PE-2" metric 1000

The preferred route from leaf node PE-3 to root node PE-1 is now via PE-4, as follows:

*A:PE-3# show router route-table 192.0.2.1 

===============================================================================
Route Table (Router: Base)
===============================================================================
Dest Prefix[Flags]                            Type    Proto     Age        Pref
      Next Hop[Interface Name]                                    Metric   
-------------------------------------------------------------------------------
192.0.2.1/32                                  Remote  OSPF      00h00m18s  10
       192.168.34.2                                                 2
-------------------------------------------------------------------------------
No. of Routes: 1
---snip---
===============================================================================

The leaf node PE-3 prefers to set up a path from PE-4 instead of from PE-2. PE-3 sends label mapping messages to PE-4. The old P2MP LSP is used until the new P2MP LSP is set up. There is no traffic interruption.

PE-3 sends a label withdrawal message to PE-2 and PE-2 is no longer a transit node, as follows:

*A:PE-2# show router ldp bindings active p2mp opaque-type generic ipv4 

===============================================================================
LDP Bindings (IPv4 LSR ID 192.0.2.2)
             (IPv6 LSR ID ::)
===============================================================================
Label Status:
        U - Label In Use, N - Label Not In Use, W - Label Withdrawn
        WP - Label Withdraw Pending, BU - Alternate For Fast Re-Route
        e - Label ELC
FEC Flags:
        LF - Lower FEC, UF - Upper FEC, M - Community Mismatch,
        BA - ASBR Backup FEC
===============================================================================
LDP Generic IPv4 P2MP Bindings (Active)
===============================================================================
P2MP-Id                                     Interface
RootAddr                                    Op
IngLbl                                      EgrLbl
EgrNH                                       EgrIf/LspId
-------------------------------------------------------------------------------
No Matching Entries Found
===============================================================================

PE-4 is the transit node for traffic to PE-3, and also has a local multicast client H-4, so it is a bud node, as follows:

*A:PE-4# show router ldp bindings active p2mp opaque-type generic ipv4 

===============================================================================
LDP Bindings (IPv4 LSR ID 192.0.2.4)
             (IPv6 LSR ID ::)
===============================================================================
Label Status:
        U - Label In Use, N - Label Not In Use, W - Label Withdrawn
        WP - Label Withdraw Pending, BU - Alternate For Fast Re-Route
        e - Label ELC
FEC Flags:
        LF - Lower FEC, UF - Upper FEC, M - Community Mismatch,
        BA - ASBR Backup FEC
===============================================================================
LDP Generic IPv4 P2MP Bindings (Active)
===============================================================================
P2MP-Id                                     Interface
RootAddr                                    Op
IngLbl                                      EgrLbl
EgrNH                                       EgrIf/LspId
-------------------------------------------------------------------------------
5000                                        73728
192.0.2.1                                   Pop
524283                                        --
  --                                          --
                                             
5000                                        73728
192.0.2.1                                   Swap
524283                                      524282
192.168.34.1                                1/1/c2/1
                                             
-------------------------------------------------------------------------------
No. of Generic IPv4 P2MP Active Bindings: 2
===============================================================================

There is no traffic multiplication at the root node PE-1. All traffic goes to PE-4, as follows:

*A:PE-1# show router ldp bindings active p2mp opaque-type generic ipv4 

===============================================================================
LDP Bindings (IPv4 LSR ID 192.0.2.1)
             (IPv6 LSR ID ::)
===============================================================================
Label Status:
        U - Label In Use, N - Label Not In Use, W - Label Withdrawn
        WP - Label Withdraw Pending, BU - Alternate For Fast Re-Route
        e - Label ELC
FEC Flags:
        LF - Lower FEC, UF - Upper FEC, M - Community Mismatch,
        BA - ASBR Backup FEC
===============================================================================
LDP Generic IPv4 P2MP Bindings (Active)
===============================================================================
P2MP-Id                                     Interface
RootAddr                                    Op
IngLbl                                      EgrLbl
EgrNH                                       EgrIf/LspId
-------------------------------------------------------------------------------
5000                                        73728
192.0.2.1                                   Push
  --                                        524283
192.168.14.2                                1/1/c2/1
                                             
-------------------------------------------------------------------------------
No. of Generic IPv4 P2MP Active Bindings: 1
===============================================================================

The switchover to this new P2MP LSP occurred without traffic loss.

The following debugging was enabled before the metric change:

*A:PE-3# debug router ldp peer 192.0.2.2 packet label detail
*A:PE-3# debug router ldp peer 192.0.2.4 packet label detail
*A:PE-3# debug router ldp peer 192.0.2.2 packet init detail
*A:PE-3# debug router ldp peer 192.0.2.4 packet init detail

The first trace message shows that label 524282 is advertised to PE-4. MBB is requested, as follows:

# on PE-3:
12 2023/09/06 12:48:33.345 UTC MINOR: DEBUG #2001 Base LDP
"LDP: LDP
Send Label Mapping packet (msgId 162) to 192.0.2.4:0
Protocol version = 1
Label 524282 advertised for the following FECs
P2MP: root = 192.0.2.1, T: 1, L: 4, TunnelId: 5000
MP Status MBB = REQ
"

The next message is a notification from PE-4 confirming that there is no fatal error and MBB can be applied, as follows:

# on PE-3:
13 2023/09/06 12:48:33.346 UTC MINOR: DEBUG #2001 Base LDP
"LDP: LDP
Recv Notification packet (msgId 162) from 192.0.2.4:0
Protocol version = 1
Status Code = MPStatus (0x00000040) Non-fatal
Causing message Id = 0
Causing message type = NULL
P2MP: root = 192.0.2.1, T: 1, L: 4, TunnelId: 5000
MP Status MBB = ACK
"

The following message is a label withdraw message for label 524283 sent to PE-2:

# on PE-3:
14 2023/09/06 12:48:33.347 UTC MINOR: DEBUG #2001 Base LDP
"LDP: LDP
Send Label Withdraw packet (msgId 161) to 192.0.2.2:0
Protocol version = 1
Label 524283 withdrawn for the following FECs
P2MP: root = 192.0.2.1, T: 1, L: 4, TunnelId: 5000
"

The last message is a label release message for label 524283 received from PE-2, as follows. This message is only sent after the new P2MP LSP is set up.

# on PE-3:
15 2023/09/06 12:48:33.348 UTC MINOR: DEBUG #2001 Base LDP
"LDP: LDP
Recv Label Release packet (msgId 161) from 192.0.2.2:0
Protocol version = 1
Label 524283 released for the following FECs
P2MP: root = 192.0.2.1, T: 1, L: 4, TunnelId: 5000
"

Conclusion

Multicast LDP provides extensions to the LDP protocol for the setup of P2MP and MP2MP LSPs in MPLS networks. mLDP is simple to configure compared to RSVP. FRR and MBB are supported for mLDP.