RSVP Signaled Point-to-Multipoint LSPs

This chapter provides information about RSVP-signaled point-to-multipoint LSPs.

Topics in this chapter include:

Applicability

This chapter was originally written for SR OS Release 7.0.R5, but the MD-CLI in the current edition corresponds to SR OS Release 24.10.R2.

Overview

Point-to-MultiPoint (P2MP) Multi-Protocol Label Switching (MPLS) Label Switched Paths (LSPs) allow the source of multicast traffic to forward packets to one or many multicast receivers over a network without requiring a multicast protocol, such as Protocol Independent Multicast (PIM), to be configured in the network. A P2MP LSP tree is established in the control plane, and the path consists of a head-end node, one or many branch and bud nodes, and the leaf nodes. A bud node combines the roles of branch node and leaf node (for different source-to-leaf (S2L) LSPs). Packets injected by the head-end node are replicated in the data plane at the branching nodes before they are delivered to the leaf nodes.

Similar to point-to-point (P2P) LSPs, also P2MP LSPs are unidirectional, originating on a head-end node (the ingress LER) and terminating on one or more leaf nodes (the egress LERs). Resource Reservation Protocol (RSVP) is used as signaling protocol. A P2MP LSP is modeled as a set of root-to-leaf sub LSPs (S2L). Each S2L is modeled as a point-to-point LSP in the control plane. This means that each S2L has its own PATH/RESV messages. This is called the de-aggregated method.

The forwarding of multicast packets to the LSP tree was initially based on static multicast routes, and has evolved to BGP-based VPN routes afterward (but the latter is beyond the scope of this chapter). In this example, forwarding multicast packets is done over P2MP RSVP LSPs in the base router instance.

RSVP signaled P2MP LSPs can have fast reroute (FRR) enabled. The FRR facility method (one-to-many) with link protection is supported.

P2MP example topology shows the P2MP example topology with seven PEs. The multicast source is connected to PE-1, multicast client 1 is attached to PE-7, and multicast client 2 to PE-6, as follows:

Figure 1. P2MP example topology

Configuration

The following sections describe the steps that must be performed to configure RSVP signaled point-to-multipoint LSPs.

Configuring the IP/MPLS network

The system addresses and Layer 3 interface addresses are configured according to P2MP example topology. An Interior Gateway Protocol (IGP) is needed to distribute routing information to all PEs. In this case, the IGP is OSPF using the backbone area 0.0.0.0. A configuration example is shown for PE-1. A similar configuration is needed on all PEs.

# on PE-1:
configure {
    router "Base" {
        interface "int-PE-1-PE-2" {
            port 1/1/c2/1:1000
            ipv4 {
                primary {
                    address 192.168.12.1
                    prefix-length 30
                }
            }
        }
        interface "int-PE-1-PE-3" {
            port 1/1/c1/1:1000
            ipv4 {
                primary {
                    address 192.168.13.1
                    prefix-length 30
                }
            }
        }
        interface "system" {
            ipv4 {
                primary {
                    address 192.0.2.1
                    prefix-length 32
                }
            }
        }
        ospf 0 {
            admin-state enable
            traffic-engineering true
            area 0.0.0.0 {
                interface "int-PE-1-PE-2" {
                    interface-type point-to-point
                }
                interface "int-PE-1-PE-3" {
                    interface-type point-to-point
                }
                interface "system" {
                }
            }
        }

Because FRR is enabled for the P2MP LSP, Traffic Engineering (TE) is needed on the IGP. With TE enabled, OSPF generates opaque link state advertisements (LSAs) which are collected in a Traffic Engineering Database (TED), separate from the traditional OSPF topology database. OSPF interfaces are set up as type point-to-point to improve convergence, because no Designated Router/Backup Designated Router (DR/BDR) election process is done. However, convergence is out of the scope of this chapter.

The following command verifies that the OSPF neighbors are up (state Full):

[/]
A:admin@PE-1# show router ospf neighbor

===============================================================================
Rtr Base OSPFv2 Instance 0 Neighbors
===============================================================================
Interface-Name                   Rtr Id          State      Pri  RetxQ   TTL
   Area-Id
-------------------------------------------------------------------------------
int-PE-1-PE-2                    192.0.2.2       Full       1    0       33
   0.0.0.0
int-PE-1-PE-3                    192.0.2.3       Full       1    0       34
   0.0.0.0
-------------------------------------------------------------------------------
No. of Neighbors: 2
===============================================================================

The route table shows the Layer 3 interface addresses/subnets that are known on the PEs. The route table on head-end PE-1 is as follows:

[/]
A:admin@PE-1# show router route-table

===============================================================================
Route Table (Router: Base)
===============================================================================
Dest Prefix[Flags]                            Type    Proto     Age        Pref
      Next Hop[Interface Name]                                    Metric
-------------------------------------------------------------------------------
192.0.2.1/32                                  Local   Local     00h03m06s  0
       system                                                       0
192.0.2.2/32                                  Remote  OSPF      00h02m05s  10
       192.168.12.2                                                 1
192.0.2.3/32                                  Remote  OSPF      00h01m25s  10
       192.168.13.2                                                 1
192.0.2.4/32                                  Remote  OSPF      00h00m25s  10
       192.168.12.2                                                 2
192.0.2.5/32                                  Remote  OSPF      00h00m12s  10
       192.168.13.2                                                 2
192.0.2.6/32                                  Remote  OSPF      00h00m08s  10
       192.168.12.2                                                 3
192.0.2.7/32                                  Remote  OSPF      00h00m02s  10
       192.168.13.2                                                 3
192.168.12.0/30                               Local   Local     00h03m06s  0
       int-PE-1-PE-2                                                0
192.168.13.0/30                               Local   Local     00h03m06s  0
       int-PE-1-PE-3                                                0
192.168.23.0/30                               Remote  OSPF      00h02m05s  10
       192.168.12.2                                                 2
192.168.24.0/30                               Remote  OSPF      00h02m05s  10
       192.168.12.2                                                 2
192.168.35.0/30                               Remote  OSPF      00h01m25s  10
       192.168.13.2                                                 2
192.168.45.0/30                               Remote  OSPF      00h00m25s  10
       192.168.12.2                                                 3
192.168.46.0/30                               Remote  OSPF      00h00m25s  10
       192.168.12.2                                                 3
192.168.57.0/30                               Remote  OSPF      00h00m12s  10
       192.168.13.2                                                 3
192.168.67.0/30                               Remote  OSPF      00h00m08s  10
       192.168.12.2                                                 4
-------------------------------------------------------------------------------
No. of Routes: 16
Flags: n = Number of times nexthop is repeated
       B = BGP backup route available
       L = LFA nexthop available
       S = Sticky ECMP requested
===============================================================================

The following command shows the contents of the forwarding information base (FIB) for IOM card slot 1:

[/]
A:admin@PE-1# show router fib 1

===============================================================================
FIB Display
===============================================================================
Prefix [Flags]                                              Protocol
  NextHop
-------------------------------------------------------------------------------
192.0.2.1/32                                                LOCAL
  192.0.2.1 (system)
192.0.2.2/32                                                OSPF
  192.168.12.2 (int-PE-1-PE-2)
192.0.2.3/32                                                OSPF
  192.168.13.2 (int-PE-1-PE-3)
192.0.2.4/32                                                OSPF
  192.168.12.2 (int-PE-1-PE-2)
192.0.2.5/32                                                OSPF
  192.168.13.2 (int-PE-1-PE-3)
192.0.2.6/32                                                OSPF
  192.168.12.2 (int-PE-1-PE-2)
192.0.2.7/32                                                OSPF
  192.168.13.2 (int-PE-1-PE-3)
192.168.12.0/30                                             LOCAL
  192.168.12.0 (int-PE-1-PE-2)
192.168.13.0/30                                             LOCAL
  192.168.13.0 (int-PE-1-PE-3)
192.168.23.0/30                                             OSPF
  192.168.12.2 (int-PE-1-PE-2)
192.168.24.0/30                                             OSPF
  192.168.12.2 (int-PE-1-PE-2)
192.168.35.0/30                                             OSPF
  192.168.13.2 (int-PE-1-PE-3)
192.168.45.0/30                                             OSPF
  192.168.12.2 (int-PE-1-PE-2)
192.168.46.0/30                                             OSPF
  192.168.12.2 (int-PE-1-PE-2)
192.168.57.0/30                                             OSPF
  192.168.13.2 (int-PE-1-PE-3)
192.168.67.0/30                                             OSPF
  192.168.12.2 (int-PE-1-PE-2)
-------------------------------------------------------------------------------
Total Entries : 16
-------------------------------------------------------------------------------
===============================================================================

On PE-1, the interface toward the multicast source is configured in an IES service. This could have been on a router interface instead.

# on PE-1:
configure {
    service {
        ies "IES 1" {
            admin-state enable
            service-id 1
            customer "1"
            interface "int-PE-1-MC-source" {
                sap 1/1/c10/1 {
                }
                ipv4 {
                    primary {
                        address 192.168.100.1
                        prefix-length 30
                    }
                }
            }
        }
    }
    router "Base"
        ospf 0 {
            area 0.0.0.0 {
                interface "int-PE-1-MC-source" {
                    interface-type point-to-point
                }
            }

Similar IES services are configured on PE-7 and PE-6 for multicast client 1 and multicast client 2.

# on PE-7:
configure {
    service {
        ies "IES 1" {
            admin-state enable
            service-id 1
            customer "1"
            interface "int-PE-7-MC-client1" {
                sap 1/1/c10/1 {
                }
                ipv4 {
                    primary {
                        address 192.168.171.1
                        prefix-length 30
                    }
                }
            }
        }
# on PE-6:
configure {
    service {
        ies "IES 1" {
            admin-state enable
            service-id 1
            customer "1"
            interface "int-PE-6-MC-client2" {
                sap 1/1/c10/1 {
                }
                ipv4 {
                    primary {
                        address 192.168.162.1
                        prefix-length 30
                    }
                }
            }
        }

The next step in the process of setting up a P2MP LSP, is enabling the L3 interfaces in the MPLS and RSVP context on all involved PE nodes (from PE-1 to PE-7). Explicit enabling of the MPLS and RSVP context is done by the admin-state enable command. The MPLS and RSVP configuration for PE-1 is as follows:

# on PE-1:
configure {
    router "Base" {
        mpls {
            admin-state enable
            interface "int-PE-6-PE-4" {
            }
            interface "int-PE-6-PE-7" {
            }
        }
        rsvp {
            admin-state enable
            interface "int-PE-6-PE-4" {
            }
            interface "int-PE-6-PE-7" {
            }
        }

Configuring P2MP RSVP LSP

P2MP LSP LSP-p2mp-1 with bypass tunnels shows the P2MP LSP LSP-p2mp-1 with FRR facility backup.

Figure 2. P2MP LSP LSP-p2mp-1 with bypass tunnels

A P2MP LSP (LSP-p2mp-1) is set up from PE-1 acting as head-end node and PE-6 and PE-7 acting as leaf nodes. Because FRR is enabled, Constrained Shortest Path First (CSPF) is enabled to calculate the routes on the Traffic Engineering Database (TED). FRR facility method is used without node protection; the facility method stands for one-to-many, meaning that one bypass tunnel can protect a set of primary LSPs with similar backup constraints. When a link failure occurs on one of the active S2L paths, the Point of Local Repair (PLR) node pushes an additional MPLS label on the incoming MPLS packet before sending it into the bypass tunnel downstream toward the Merge Point (MP) node.

In the first example, the IGP OSPF calculates the path to the two destinations PE-6 and PE-7. The intermediate hops of the LSP are dynamically assigned by OSPF best route selection, so the S2L paths follow the IGP least cost path. Therefore, an empty MPLS path is configured without specifying any hops.

# on PE-1:
configure {
    router "Base" {
        mpls {
            path "empty" {
                admin-state enable
            } 

The P2MP LSP "LSP-p2mp-1" is created on the ingress LER or head-end node (PE-1 in the example) and can be seen in following CLI output. The type p2mp-lsp command is added to make a distinction in configuration between normal point-to-point LSPs and point-to-multipoint LSPs. A primary P2MP instance is initiated using the primary-p2mp-instance keyword accompanied with the P2MP instance name "p-LSP-p2mp-1". Within this primary P2MP instance, the different S2Ls are defined using the s2l-path keyword. The same MPLS path name can be used for different S2Ls as long as the destination is different (to command).

# on PE-1:
configure {
    router "Base" { 
        mpls {
            lsp "LSP-p2mp-1" {
                admin-state enable
                type p2mp-rsvp
                from 192.0.2.1
                path-computation-method local-cspf
                fast-reroute {
                }
                primary-p2mp-instance "p-LSP-p2mp-1" {
                    s2l-path "empty" to 192.0.2.6 {
                    }
                    s2l-path "empty" to 192.0.2.7 {
                    }
                }
            }

On the head-end LER node of the P2MP LSP, several show commands can be used. The following command shows that the only P2MP LSP on PE-1 is LSP-p2mp-1 and the administrative and operational state of this P2MP LSP is up and FRR is enabled:

[/]
A:admin@PE-1# show router mpls p2mp-lsp

===============================================================================
MPLS P2MP LSPs (Originating)
===============================================================================
LSP Name                                            Tun     Fastfail  Adm  Opr
                                                    Id      Config
-------------------------------------------------------------------------------
LSP-p2mp-1                                          1       Yes       Up   Up
-------------------------------------------------------------------------------
LSPs : 1
===============================================================================

In this example, P2MP LSP "LSP-p2mp-1" has two active S2L paths: one toward leaf node PE-6 and one to leaf node PE-7. FRR is enabled and the FRR method is facility.

[/]
A:admin@PE-1# show router mpls p2mp-lsp "LSP-p2mp-1" detail

===============================================================================
MPLS P2MP LSPs (Originating) (Detail)
===============================================================================
Legend :
    + - Inherited
===============================================================================
-------------------------------------------------------------------------------
Type : Originating
-------------------------------------------------------------------------------
LSP Name   : LSP-p2mp-1
LSP Type        : P2mpLsp                   LSP Tunnel ID        : 1
LSP Index       : 1                         TTM Tunnel Id        : 1
From            : 192.0.2.1
To              : Not configured
Adm State       : Up                        Oper State           : Up
LSP Up Time     : 0d 00:00:06               LSP Down Time        : 0d 00:00:00
Transitions     : 1                         Path Changes         : 1
Retry Limit     : 0                         Retry Timer          : 30 sec
Signaling       : RSVP                      Resv. Style          : SE
Hop Limit       : 255                       Negotiated MTU       : n/a
Adaptive        : Enabled                   ClassType            : 0
FastReroute     : Enabled                   Oper FR              : Enabled
FR Method       : Facility                  FR Hop Limit         : 16
FR Node Protect : Disabled                  FR Prop Adm Grp      : Disabled
FR Object       : Enabled
PathCompMethod  : local-cspf                ADSPEC               : Disabled
FallbkPathComp  : not-applicable
Metric          : Disabled                  Metric Type          : igp
Load Bal Wt     : N/A                       ClassForwarding      : Disabled
Include Grps    :                           Exclude Grps         :
None                                           None
Least Fill      : Disabled                  Soft Preemption      : Disabled

Revert Timer    : Disabled                  Next Revert In       : N/A
Auto BW         : Disabled
LdpOverRsvp     : Disabled
VprnAutoBind    : Disabled
IGP Shortcut    : Disabled                  BGP Shortcut         : Disabled
IGP LFA         : Disabled                  IGP Rel Metric       : Disabled
AllowSrOverSrte : Disabled
BGPTransTun     : Disabled
Oper Metric     : Disabled
Prop Adm Grp    : Disabled

P2MPInstance    : p-LSP-p2mp-1
                                            P2MP-Inst-type       : Primary
S2L Cfg Counter : 2                         S2L Oper Counter     : 2
S2L-Name        : empty
                                            To                   : 192.0.2.6
S2L-Name        : empty
                                            To                   : 192.0.2.7
===============================================================================
[/]
A:admin@PE-1# show router mpls p2mp-info

===============================================================================
MPLS P2MP Cross Connect Information
===============================================================================
-------------------------------------------------------------------------------
S2L:LSP-p2mp-1::empty
-------------------------------------------------------------------------------
Source IP Address    : 192.0.2.1             Tunnel ID     : 1
P2MP ID              : 0                     Lsp ID        : 11264
To                   : 192.0.2.6
Out Interface        : 1/1/c2/1:1000         Out Label     : 524287
Num. of S2ls         : 1
-------------------------------------------------------------------------------
S2L:LSP-p2mp-1::empty
-------------------------------------------------------------------------------
Source IP Address    : 192.0.2.1             Tunnel ID     : 1
P2MP ID              : 0                     Lsp ID        : 11264
To                   : 192.0.2.7
Out Interface        : 1/1/c1/1:1000         Out Label     : 524287
Num. of S2ls         : 1
-------------------------------------------------------------------------------
P2MP Cross-connect instances : 2
===============================================================================
[/]
A:admin@PE-1# show router mpls p2mp-lsp "LSP-p2mp-1" p2mp-instance p2mp-instance-name "p-LSP-p2mp-1"

===============================================================================
MPLS P2MP Instance (Originating)
===============================================================================
-------------------------------------------------------------------------------
Type : Originating
-------------------------------------------------------------------------------
LSP Name    : LSP-p2mp-1
P2MP ID         : 0                         LSP Tunnel ID        : 1
Adm State       : Up                        Oper State           : Up

P2MPInstance    : p-LSP-p2mp-1
                                            P2MP-Inst-type       : Primary
P2MP Inst Id    : 1                         P2MP Lsp Id          : 11264
Inst Admin      : Up                        Inst Oper            : Up
Inst Up Time    : 0d 00:00:06               Inst Dn Time         : 0d 00:00:00
Hop Limit       : 255                       Adaptive             : Enabled
Record Route    : Record                    Record Label         : Record
Setup Priority  : 7                         Hold Priority        : 0
Include Grps    :                           Exclude Grps         :
None                                           None
Bandwidth       : No Reservation            Oper Bw              : 0 Mbps
S2L-Name        : empty
                                            To                   : 192.0.2.6
S2L Admin       : Up                        S2L Oper             : Up
S2L-Name        : empty
                                            To                   : 192.0.2.7
S2L Admin       : Up                        S2L Oper             : Up
-------------------------------------------------------------------------------
P2MP instances : 1
===============================================================================
Note:

As long as one S2L path is operationally up (show router mpls p2mp-lsp <p2mp-lsp-name> p2mp-instance p2mp-instance-name <p2mp-instance-name>) , the operational state of the P2MP LSP is up.

FRR information can be displayed in detail for each S2L path. From this moment onward, the focus is on the S2L path toward PE-7. The following command shows that link protection is present for the link between PE-1 and PE-3, for the link between PE-3 and PE-5, and for the link between PE-5 and PE-7 (as indicated by the ‛@’-reference inside the list of actual hops).

[/]
A:admin@PE-1# show router mpls p2mp-lsp "LSP-p2mp-1" p2mp-instance p2mp-instance-name "p-LSP-p2mp-1" s2l s2l-name "empty" to 192.0.2.7 detail

===============================================================================
MPLS LSP LSP-p2mp-1 S2L empty (Detail)
===============================================================================
Legend :
    @ - Detour Available                          # - Detour In Use
    b - Bandwidth Protected                       n - Node Protected
    S - Strict                                    L - Loose
    A - ABR
    s - Soft Preemption
===============================================================================
LSP Name         : LSP-p2mp-1
S2L LSP ID       : 11264
P2MP ID          : 0                       S2L Grp Id        : 2
Admin State      : Up                      Oper State        : Up
S2L State:       : Active                                    :
S2L Name         : empty
To               : 192.0.2.7
S2L Admin        : Up                      S2L Oper          : Up
OutInterface     : 1/1/c1/1:1000           Out Label         : 524287
S2L Up Time      : 0d 00:02:04             S2L Dn Time       : 0d 00:00:00
RetryAttempt     : 0                       NextRetryIn       : 0 sec
S2L Trans        : 1                       CSPF Queries      : 1
Failure Code     : noError                 Failure Node      : n/a
Inter-area       : False
ExplicitHops     :
    No Hops Specified
Actual Hops      :
    192.168.13.1(192.0.2.1) @                    Record Label        : N/A
 -> 192.168.13.2(192.0.2.3) @                    Record Label        : 524287
 -> 192.168.35.2(192.0.2.5) @                    Record Label        : 524287
 -> 192.168.57.2(192.0.2.7)                      Record Label        : 524287
ComputedHops     :
    192.168.13.1(S)
 -> 192.168.13.2(S)
 -> 192.168.35.2(S)
 -> 192.168.57.2(S)
LastResignal     : n/a
===============================================================================

More in detail, show router mpls bypass-tunnel detail can be used. The list of actual hops provides the explicit hops of the bypass tunnel used to avoid the direct link between PE-1 and PE-3. On node PE-1, the MPLS path from PE-1 to PE-3 via PE-2 is followed (see P2MP LSP LSP-p2mp-1 with bypass tunnels).

[/]
A:admin@PE-1# show router mpls bypass-tunnel detail

===============================================================================
MPLS Bypass Tunnels (Detail)
===============================================================================
-------------------------------------------------------------------------------
bypass-link192.168.13.2-61441
-------------------------------------------------------------------------------
To             : 192.168.23.2        State               : Up
Out I/F        : 1/1/c2/1:1000       Out Label           : 524285
Up Time        : 0d 00:03:35         Active Time         : n/a
Reserved BW    : 0 Kbps              Protected LSP Count : 1
Type           : P2mp                Bypass Path Cost    : 2
Setup Priority : 7                   Hold Priority       : 0
Class Type     : 0
Exclude Node   : None                Inter-Area          : False
Computed Hops  :
    192.168.12.1(S)                  Egress Admin Groups : None
 -> 192.168.12.2(S)                  Egress Admin Groups : None
 -> 192.168.23.2(S)                  Egress Admin Groups : None
Actual Hops    :
    192.168.12.1(192.0.2.1)          Record Label        : N/A
 -> 192.168.12.2(192.0.2.2)          Record Label        : 524285
 -> 192.168.23.2(192.0.2.3)          Record Label        : 524284

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

On node PE-3, the MPLS path from PE-3 to PE-5 via PE-2 and PE-4 is followed (see P2MP LSP LSP-p2mp-1 with bypass tunnels) to avoid the direct link between PE-3 and PE-5.

[/]
A:admin@PE-3# show router mpls bypass-tunnel protected-lsp p2mp detail

===============================================================================
MPLS Bypass Tunnels (Detail)
===============================================================================
-------------------------------------------------------------------------------
bypass-link192.168.35.2-61441
-------------------------------------------------------------------------------
To             : 192.168.45.2        State               : Up
Out I/F        : 1/1/c3/1:1000       Out Label           : 524286
Up Time        : 0d 00:04:09         Active Time         : n/a
Reserved BW    : 0 Kbps              Protected LSP Count : 1
Type           : P2mp                Bypass Path Cost    : 3
Setup Priority : 7                   Hold Priority       : 0
Class Type     : 0
Exclude Node   : None                Inter-Area          : False
Computed Hops  :
    192.168.23.2(S)                  Egress Admin Groups : None
 -> 192.168.23.1(S)                  Egress Admin Groups : None
 -> 192.168.24.2(S)                  Egress Admin Groups : None
 -> 192.168.45.2(S)                  Egress Admin Groups : None
Actual Hops    :
    192.168.23.2(192.0.2.3)          Record Label        : N/A
 -> 192.168.23.1(192.0.2.2)          Record Label        : 524286
 -> 192.168.24.2(192.0.2.4)          Record Label        : 524285
 -> 192.168.45.2(192.0.2.5)          Record Label        : 524285

Protected LSPs -
LSP Name       : LSP-p2mp-1::empty
From           : 192.0.2.1           To                  : 192.0.2.7
Avoid Node/Hop : 192.168.35.2        Downstream Label    : 524287
Bandwidth      : 0 Kbps

=============================================================================== 

A similar output can be seen on PE-5 node also. To avoid the direct link from PE-5 to PE-7, the MPLS path from PE-5 to PE-7 via PE-4 and PE-6 is followed, as shown in P2MP LSP LSP-p2mp-1 with bypass tunnels.

On the transit LSRs and egress LER/leaf node (see P2MP LSP LSP-p2mp-1 with bypass tunnels), the show router mpls p2mp-info command can be used. See the show command on node PE-3 for the S2L path to 192.0.2.7. Similar outputs are possible for nodes PE-5 and PE-7.

[/]
A:admin@PE-3# show router mpls p2mp-info ?

 p2mp-info [type <keyword>] [s2l-endpoint <ipv4 address>]

 s2l-endpoint          - [a.b.c.d]
 type                  - keywords
[/]
A:admin@PE-3# show router mpls p2mp-info

===============================================================================
MPLS P2MP Cross Connect Information
===============================================================================
-------------------------------------------------------------------------------
S2L:LSP-p2mp-1::empty
-------------------------------------------------------------------------------
Source IP Address    : 192.0.2.1             Tunnel ID     : 1
P2MP ID              : 0                     Lsp ID        : 11264
To                   : 192.0.2.7
Out Interface        : 1/1/c1/1:1000         Out Label     : 524287
Num. of S2ls         : 1
-------------------------------------------------------------------------------
P2MP Cross-connect instances : 1
===============================================================================

Mapping multicast traffic

To map multicast traffic into the LSP tree from the head-end node until leaf node, PIM and Internet Group Management Protocol (IGMP) configurations are needed on the head-end node (PE-1) and leaf nodes (PE-6 and PE-7) of the P2MP RSVP LSP. The intermediate nodes (transit LSR or branch LSR) do not need any explicit configuration for that.

Head-end node (ingress LER) PE-1

PIM must be enabled on the interface toward the multicast source, as follows:

# on PE-1:
configure {
    router "Base" {
        pim {
            interface "int-PE-1-MC-source" {
            }
        }

A tunnel interface is an internal representation of a specific P2MP LSP. On head-end PE-1, this tunnel interface is configured with keyword rsvp-p2mp-root, as follows:

# on PE-1:
configure {
    router "Base" {
        tunnel-interface {
            rsvp-p2mp-root "LSP-p2mp-1" {
            }

It is not possible to show PIM tunnel interfaces when PIM is not enabled. The following error is raised when a tunnel interface is configured without enabling PIM:

[ex:/configure router "Base" tunnel-interface]
A:admin@PE-1# show router pim tunnel-interface
MINOR: CLI #2005: Error while processing command - PIM is not configured

For multicast packets received on an interface to pass through the data plane, a successful reverse path forwarding (RPF) check must be done on the source address, otherwise the packet is dropped.

Besides enabling PIM on the tunnel interface, also IGMP is enabled to do a static <S,G> or <*,G> join of a multicast group address (227.1.1.1 in the example) to the tunnel interface for the P2MP LSP. There is always a one-to-one mapping between <S,G> or <*,G> and the tunnel interface for the P2MP LSP. In the example an <S,G> is configured. A <*,G> join scenario is included in the Additional topics section.

# on PE-1:
configure {
    router "Base" {
        igmp {
            tunnel-interface {
                rsvp-p2mp-root "LSP-p2mp-1" {
                    static {
                        group 227.1.1.1 {
                            source 192.168.100.2 { }
                        }
                    }
                }
            }

The show router pim tunnel-interface command shows the administrative and operational state of the tunnel interface and an association to an internal local interface index (73728 in the example).

[/]
A:admin@PE-1# show router pim tunnel-interface

===============================================================================
PIM Interfaces ipv4
===============================================================================
Interface                        Originator Address   Adm  Opr  Transport Type
-------------------------------------------------------------------------------
mpls-if-73728                    N/A                  Up   Up   Tx-IPMSI
-------------------------------------------------------------------------------
Interfaces : 1
===============================================================================

The show router igmp group <group-address> command provides the configured <S,G> entry:

[/]
A:admin@PE-1# show router igmp group 227.1.1.1
===============================================================================
IGMP Interface Groups
===============================================================================

(192.168.100.2,227.1.1.1)                                 UpTime: 0d 00:00:17
    Fwd List  : 
-------------------------------------------------------------------------------
Entries : 1
===============================================================================
IGMP Host Groups
===============================================================================
No Matching Entries
===============================================================================
IGMP SAP Groups
===============================================================================
No Matching Entries
===============================================================================
IGMP SLA Profile Instance Groups
===============================================================================
No Matching Entries
===============================================================================

The show router pim group <group-address> detail command on PE-1 shows that multicast traffic is sent from source 192.168.100.2 via incoming interface int-PE-1-MC-source to outgoing tunnel interface mpls-if-73728, as follows:

[/]
A:admin@PE-1# show router pim group 227.1.1.1 detail

===============================================================================
PIM Source Group ipv4
===============================================================================
Group Address      : 227.1.1.1
Source Address     : 192.168.100.2
RP Address         : 0
Advt Router        : 192.0.2.1
Flags              :                    Type               : (S,G)
Mode               : sparse
MRIB Next Hop      : 192.168.100.2
MRIB Src Flags     : direct
Keepalive Timer    : Not Running
Up Time            : 0d 00:03:12        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       : 192.168.100.2
Incoming Intf      : int-PE-1-MC-source
Outgoing Intf List : mpls-if-73728

Curr Fwding Rate   : 9729.280 kbps
Forwarded Packets  : 7344               Discarded Packets  : 0
Forwarded Octets   : 10149408           RPF Mismatches     : 0
Spt threshold      : 0 kbps             ECMP opt threshold : 7
Admin bandwidth    : 1 kbps
-------------------------------------------------------------------------------
Groups : 1
===============================================================================

Leaf node (egress LER)

On the leaf nodes, PIM must be enabled:

# on PE-7:
configure {
    router "Base" {
        pim {
            admin-state enable

The following command creates the tunnel interface with keyword rsvp-p2mp-leaf. An explicit reference to the head-end system address, using the sender-address <systemIP_head-end_node> parameter is needed.

# on PE-7:
configure {
    router "Base" {
        tunnel-interface {
            rsvp-p2mp-leaf "LSP-p2mp-1" sender-address 192.0.2.1 {
            }

The show router pim tunnel-interface command provides the administrative and operational state of the tunnel interface and an association to an internal local interface index (73728 in this example, by coincidence the same interface index as the one on the head-end node PE-1).

[/]
A:admin@PE-7# show router pim tunnel-interface

===============================================================================
PIM Interfaces ipv4
===============================================================================
Interface                        Originator Address   Adm  Opr  Transport Type
-------------------------------------------------------------------------------
mpls-if-73728                    N/A                  Up   Up   Tx-IPMSI
-------------------------------------------------------------------------------
Interfaces : 1
===============================================================================

The main goal on the leaf nodes is to get traffic off the P2MP LSP tunnel interface. This is done using a multicast information policy (multicast-info-policy). Inside this multicast information policy, a range of multicast group addresses is defined under a bundle context (bundle1) in order to see traffic (channel). Also inside the bundle context, the P2MP LSP is presented by the tunnel interface (primary-tunnel-interface). The following configures the multicast information policy on leaf node PE-7:

# on PE-7:
configure {
    multicast-management {
        multicast-info-policy "p2mp-pol" {
            bundle "bundle1" {
                primary-tunnel-interface {
                    rsvp-p2mp "LSP-p2mp-1"
                    sender 192.0.2.1
                }
                channel start 227.1.1.1 end 227.1.1.1 {
                }
            }
Note:

The channel command is a range command with a start-mc-group-address and an end-mc-group-address. In this example, only one multicast group address, 227.1.1.1, is seen.

The configured multicast information policy must be applied to the base router instance:

# on PE-7:
configure {
    router "Base" {
        multicast-info-policy "p2mp-pol"

On the leaf nodes PE-7 and PE-6, multicast clients are connected. IGMP is enabled on those multicast clients with a static <S,G> join to redirect multicast traffic downstream to the multicast client. This is configured as follows:

# on PE-7:
configure {
    router "Base" {
        igmp {
            interface "int-PE-7-MC-client1" {
                static {
                    group 227.1.1.1 {
                        source 192.168.100.2 { }
                    }
                }
            }

The show router igmp group provides the configured <S,G> entry and outgoing interface "int-PE-7-MC-client1".

[/]
A:admin@PE-7# show router igmp group 227.1.1.1
===============================================================================
IGMP Interface Groups
===============================================================================

(192.168.100.2,227.1.1.1)                                 UpTime: 0d 00:00:03
    Fwd List  : int-PE-7-MC-client1
-------------------------------------------------------------------------------
Entries : 1
===============================================================================
IGMP Host Groups
===============================================================================
No Matching Entries
===============================================================================
IGMP SAP Groups
===============================================================================
No Matching Entries
===============================================================================
IGMP SLA Profile Instance Groups
===============================================================================
No Matching Entries
===============================================================================

Now, users can verify if multicast traffic is sent to the multicast client using the show router pim group group-address detail command

[/]
A:admin@PE-7# show router pim group 227.1.1.1 detail

===============================================================================
PIM Source Group ipv4
===============================================================================
Group Address      : 227.1.1.1
Source Address     : 192.168.100.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:00:10        Resolved By        : unresolved

Up JP State        : Joined             Up JP Expiry       : 0d 00:00:49
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-7-MC-client1

Curr Fwding Rate   : 9729.280 kbps
Forwarded Packets  : 9057               Discarded Packets  : 0
Forwarded Octets   : 12516774           RPF Mismatches     : 0
Spt threshold      : 0 kbps             ECMP opt threshold : 7
Admin bandwidth    : 1 kbps
-------------------------------------------------------------------------------
Groups : 1
===============================================================================

OAM tools

Note: For SR OS Release 24.10.R2, the OAM tools are in classic CLI.

P2P LSP Operation, Administration, and Maintenance (OAM) commands (oam lsp-ping and oam lsp-trace) are extended for P2MP LSP. The user can instruct the head-end node to generate an P2MP LSP ping or a P2MP LSP trace by entering the command oam p2mp-lsp-ping or oam p2mp-lsp-trace. The P2MP OAM extensions are defined in draft-ietf-mpls-p2mp-lsp-ping.

For P2MP LSP ping, the echo request is sent on the active P2MP instance and replicated in the data path over all branches of the P2MP LSP instance. By default, all egress LER nodes which are leaves of the P2MP LSP instance reply. Echo reply messages can be reduced by configuring the s2l-dest-address (a maximum of five egress nodes in a single run of the OAM command). Replies are sent by IP.

<in classic CLI>
*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]]
  - p2mp-lsp-ping p2mp-policy root-address <ipv4-address> root-tree-id <tree-id> instance-id <instance-id>
    [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] hops - 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)
 <p2mp-policy>        : keyword - ping a P2MP segment routing policy
 <tree-id>            : [8193..16286]
 <instance-id>        : [1..4294967295]
<in classic CLI>
*A:PE-1# oam p2mp-lsp-ping "LSP-p2mp-1" detail
P2MP LSP LSP-p2mp-1: 92 bytes MPLS payload

===============================================================================
S2L Information
===============================================================================
From             RTT                  Return Code
-------------------------------------------------------------------------------
192.0.2.6        =3.79ms              EgressRtr(3)
192.0.2.7        =3.88ms              EgressRtr(3)
===============================================================================

Total S2L configured/up/responded = 2/2/2,
          round-trip min/avg/max  = 3.79 / 3.83 / 3.88 ms

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

Return codes are based on RFC 4379. Value 3 means the replying router is an egress for the FEC at stack depth.

P2MP LSP trace allows the user to trace the path of a single S2L path of a P2MP LSP from head-end node to leaf node. Using the downstream mapping TLV, each node along the S2L path can fill in the appropriate flags: B or E flag. The B-flag is set when the responding node is a branch LSR and the E-flag is set when the responding node is an egress LER.

<in classic CLI>
*A:PE-1# oam p2mp-lsp-trace ?
  - p2mp-lsp-trace <lsp-name> p2mp-instance <instance-name> s2l-dest-address <ip-address> [fc <fc-name> [profile
    {in|out}]] [size <octets>] [max-fail <no-response-count>] [probe-count <probes-per-hop>] [min-ttl
    <min-label-ttl>] [max-ttl <max-label-ttl>] [timeout <timeout>]  [interval <interval>] [detail]

 <lsp-name>           : [64 chars max]
 <instance-name>      : [32 chars max]
 <ip-address>         : ipv4 address    a.b.c.d
 <fc-name>            : be|l2|af|l1|h2|ef|h1|nc - Default: be
 <in|out>             : in|out - Default: out
 <octets>             : [1..9786] - Default: 1
 <no-response-count>  : [1..10] - Default: 5
 <probes-per-hop>     : [1..10] - Default: 1
 <min-label-ttl>      : [1..255] hops - Default: 1
 <max-label-ttl>      : [1..255] hops - Default: 30
 <timeout>            : [1..60] seconds - Default: 3
 <detail>             : keyword - displays detailed information
 <interval>           : [1..10] seconds - Default: 1
<in classic CLI>
*A:PE-1# oam p2mp-lsp-trace "LSP-p2mp-1" p2mp-instance "p-LSP-p2mp-1" s2l-dest-address 192.0.2.7 detail
P2MP LSP LSP-p2mp-1: 132 bytes MPLS payload
P2MP Instance p-LSP-p2mp-1, S2L Egress 192.0.2.7

  1  192.0.2.3  rtt=1.48 ms rc=8(DSRtrMatchLabel)
     DS 1: ipaddr=192.168.35.2 ifaddr=192.168.35.2 iftype=ipv4Numbered MRU=8982 label=524287 proto=4(RSVP-TE) B/E flags:0/0
  2  192.0.2.5  rtt=2.33 ms rc=8(DSRtrMatchLabel)
     DS 1: ipaddr=192.168.57.2 ifaddr=192.168.57.2 iftype=ipv4Numbered MRU=8982 label=524287 proto=4(RSVP-TE) B/E flags:0/0
  3  192.0.2.7  rtt=3.13 ms rc=3(EgressRtr) 

Return codes (rc) are based on RFC 4279. Value 8 means that the label is switched at stack depth. This is the case for a transit LSR doing MPLS label swapping. No B or E flag is set.

Additional topics

<*,G> IGMP join instead of <S,G> IGMP join

In the Head-end node (ingress LER) PE-1 and Leaf node (egress LER) steps, a source specific IGMP join (<S,G> join) is used at the head-end node and leaf nodes. Another possibility is to use a source unknown or starg IGMP join (<*,G> join). When doing the latter, a rendezvous point (RP) must be defined in the PIM network. The RP allows multicast data flows between sources and receivers to meet at a predefined network location (in this example, the loopback address of node PE-1). It must be seen as an intermediate device to establish a multicast flow.

The RP can be defined in a dynamic way (bootstrap router (BSR) protocol) or a static way. In this example, the static way is chosen meaning that on all involved PIM nodes, the RP address is statically configured. The following configuration is needed on head-end and leaf nodes.

# on PE-1, PE-6, PE-7:
configure {
    router "Base" {
        pim {
            rp {
                ipv4 {
                    static {
                        address 192.0.2.1 {
                            group-prefix 227.1.1.1/32 { }
                        }
                    }
                }
            }

The group-prefix is a mandatory keyword that references a group address or group address range for which this rendezvous point is used.

[/]
A:admin@PE-1# show router pim rp

===============================================================================
PIM RP Set ipv4
===============================================================================
Group Address                                                Hold Expiry
  RP Address                                   Type     Prio Time Time
-------------------------------------------------------------------------------
227.1.1.1/32
  192.0.2.1                                    Static   1    N/A  N/A
-------------------------------------------------------------------------------
Group Prefixes : 1
===============================================================================

As previously mentioned, the configuration of the <*,G> IGMP join is done on the head-end node (PE-1) and leaf nodes (PE-6 and PE-7)

# on PE-1:
configure {
    router "Base" {
        igmp {
            tunnel-interface {
                rsvp-p2mp-root "LSP-p2mp-1" {
                    static {
                        group 227.1.1.1 {
                            starg
                        }
                    }
                }
            }
# on PE-6:
configure {
    router "Base" {
        igmp {
            interface "int-PE-6-MC-client2" {
                static {
                    group 227.1.1.1 {
                        starg
                    }
                }
            }
# on PE-7:
configure {
    router "Base" {
        igmp {
            interface "int-PE-7-MC-client1" {
                static {
                    group 227.1.1.1 {
                        starg
                    }
                }
            }

The same preceding show commands can be used to verify the multicast traffic on head-end node and leaf nodes, show router igmp group 227.1.1.1 and show router pim group 227.1.1.1 detail.

[/]
A:admin@PE-7# show router igmp group 227.1.1.1
===============================================================================
IGMP Interface Groups
===============================================================================

(*,227.1.1.1)                                             UpTime: 0d 00:06:58
    Fwd List  : int-PE-7-MC-client1 
-------------------------------------------------------------------------------
Entries : 1
===============================================================================
IGMP Host Groups
===============================================================================
No Matching Entries
===============================================================================
IGMP SAP Groups
===============================================================================
No Matching Entries
===============================================================================
IGMP SLA Profile Instance Groups
===============================================================================
No Matching Entries
===============================================================================
[/]
A:admin@PE-7# show router pim group 227.1.1.1 detail

===============================================================================
PIM Source Group ipv4
===============================================================================
Group Address      : 227.1.1.1
Source Address     : *
RP Address         : 192.0.2.1
Advt Router        :
Flags              :                    Type               : (*,G)
Mode               : sparse
MRIB Next Hop      :
MRIB Src Flags     : remote
Keepalive Timer    : Not Running
Up Time            : 0d 07:48:39        Resolved By        : unresolved

Up JP State        : Joined             Up JP Expiry       : 0d 00:00:52
Up JP Rpt          : Not Joined StarG   Up JP Rpt Override : 0d 00:00:00

Rpf Neighbor       :
Incoming Intf      : mpls-if-73728
Outgoing Intf List : int-PE-7-MC-client1

Curr Fwding Rate   : 0.000 kbps
Forwarded Packets  : 9                  Discarded Packets  : 0
Forwarded Octets   : 12438              RPF Mismatches     : 0
Spt threshold      : 0 kbps             ECMP opt threshold : 7
Admin bandwidth    : 1 kbps

===============================================================================
PIM Source Group ipv4
===============================================================================
Group Address      : 227.1.1.1
Source Address     : 192.168.100.2
RP Address         : 192.0.2.1
Advt Router        :
Flags              : spt                Type               : (S,G)
Mode               : sparse
MRIB Next Hop      :
MRIB Src Flags     : remote
Keepalive Timer Exp: 0d 00:03:27
Up Time            : 0d 00:00:04        Resolved By        : unresolved

Up JP State        : Joined             Up JP Expiry       : 0d 00:00:55
Up JP Rpt          : Not Pruned         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-7-MC-client1

Curr Fwding Rate   : 9729.280 kbps
Forwarded Packets  : 3838               Discarded Packets  : 0
Forwarded Octets   : 5304116            RPF Mismatches     : 0
Spt threshold      : 0 kbps             ECMP opt threshold : 7
Admin bandwidth    : 1 kbps
-------------------------------------------------------------------------------
Groups : 2
===============================================================================

Influence IGP metric

The IGP metric is increased on all links pointing to/from PE-2 and on the link between PE-5 and PE-7.

# on PE-1:
configure { 
    router "Base" {
        ospf {
            area 0.0.0.0 {
                interface "int-PE-1-PE-2" {
                    metric 10000 
# on PE-2:
configure { 
    router "Base" {
        ospf 0 {
            area 0.0.0.0 {
                interface "int-PE-2-PE-1" {
                    metric 10000
                }
                interface "int-PE-2-PE-3" {
                    metric 10000
                }
                interface "int-PE-2-PE-4" {
                    metric 10000
                }
# on PE-3:
configure { 
    router "Base" {
        ospf 0 {
            area 0.0.0.0 
                interface "int-PE-3-PE-2"
                    metric 10000 
# on PE-4:
configure { 
    router "Base" {
        ospf 0 {
            area 0.0.0.0 {
                interface "int-PE-4-PE-2" {
                    metric 10000
                } 
# on PE-5:
configure { 
    router "Base" {
        ospf 0 {
            area 0.0.0.0 {
                interface "int-PE-5-PE-7" {
                    metric 10000
# on PE-7:
configure { 
    router "Base" {
        ospf 0 {
            area 0.0.0.0 {
                interface "int-PE-7-PE-5" {
                    metric 10000

The existing P2MP LSP LSP-p2mp-1 does not take into account these new constraints. The two S2L paths (one empty toward PE-6 and another empty toward PE-7) are calculated using the default OSPF metric. To trigger MPLS to recompute the S2L paths, configure a p2mp-resignal-timer on the head-end node inside the global MPLS context. Each time this timer expires (in the example, every 60 minutes), MPLS triggers CSPF to recompute the whole set of S2L paths of all active P2MP instances. MPLS performs a global Make-Before-Break (MBB) and moves each S2L sub-LSP in the instance into its new path using a new P2MP LSP ID if the global MBB is successful. show router mpls status gives an indication when the P2MP resignal timer will expire and which types of LSPs are set up on the node.

# on PE-1:
configure {
    router "Base" {
        mpls {
            p2mp-resignal-timer 60        # in minutes
[/]
A:admin@PE-1# show router mpls status

===============================================================================
MPLS Status
===============================================================================
Admin Status              : Up
Oper(V4) State            : Up          Oper(V6) State            : Down
IPv4 Oper Down Reason     : n/a
IPv6 Oper Down Reason     : ipv6TeRtrDown
FRR Object                : Enabled     Resignal Timer            : Disabled
Hold Timer                : 1 seconds   Next Resignal             : N/A
Srlg Frr                  : Disabled    Srlg Frr Strict           : Disabled
Admin Group Frr           : Disabled
Dynamic Bypass            : Enabled     User Srlg Database        : Disabled
BypassResignalTimer       : Disabled    BypassNextResignal        : N/A
LeastFill Min Thd         : 5 percent   LeastFill Reopti Thd      : 10 percent
Local TTL Prop            : Enabled     Transit TTL Prop          : Enabled
P2mp TTL Prop             : Enabled
AB Sample Multiplier      : 1           AB Adjust Multiplier      : 288
Exp Backoff Retry         : Disabled    CSPF On Loose Hop         : Disabled
Lsp Init RetryTimeout     : 30 seconds  MBB Pref Current Hops     : Disabled
Logger Event Bundling     : Disabled
Retry on IGP Overload     : Disabled    Resignal on IGP Overload  : Disabled
Resignal on IGP Event     : Disabled
StrictEroNhopDirectRes    : Disabled

P2mp Resignal Timer       : 60 minutes  P2mp Next Resignal        : 59 minutes
Sec FastRetryTimer        : Disabled    Static LSP FR Timer       : 30 seconds
P2P Max Bypass Association: 1000
Max Bypass PLR Association: 16
P2PActPathFastRetry       : Disabled    P2MP S2L Fast Retry       : Disabled
In Maintenance Mode       : No
MplsTp                    : Disabled
Next Available Lsp Index  : 2
Entropy Label RSVP-TE     : Enabled     Entropy Label SR-TE       : Enabled
PCE Report RSVP-TE        : Disabled    PCE Report SR-TE          : Disabled
PCE Init LSP              : Disabled
PCC Oper Status RSVP-TE   : Down        PCE Oper Status RSVP-TE   : Down
PCC Oper Status SR-TE     : Down        PCE Oper Status SR-TE     : Down
SR-TE Resignal Timer      : Disabled    SR-TE Next Resignal       : N/A
SR-TE Resig on IGP Event  : Disabled    SR-TE Resig on IGP Overlo*: Disabled
LSP BSID Block            : N/A
LSP History               : Disabled
LSP Self Ping Timeout     : 300 seconds LSP Self Ping Interval    : 1 seconds
RSVP-TE LSP Self Ping     : Disabled    Self Ping Timeout Action  : retry
RSVP-TE Tunnel Table Pref : 7           SR-TE Tunnel Table Pref   : 8

===============================================================================
MPLS LSP Count
===============================================================================
                          Originate         Transit           Terminate
-------------------------------------------------------------------------------
Static LSPs               0                 0                 0
Dynamic LSPs              2                 0                 0
P2P LSPs                  0                 N/A               N/A
Detour LSPs               0                 0                 0
P2MP S2Ls                 2                 0                 0
MPLS-TP LSPs              0                 0                 0
Mesh-P2P LSPs             0                 N/A               N/A
One Hop-P2P LSPs          0                 N/A               N/A
SR-TE LSPs                0                 N/A               N/A
Mesh-P2P SR-TE LSPs       0                 N/A               N/A
One Hop-P2P SR-TE LSPs    0                 N/A               N/A
PCE Init SR-TE LSPs       0                 N/A               N/A
On-Demand SR-TE LSPs      0                 N/A               N/A
===============================================================================

As an alternative, users can also perform a manual resignal of a P2MP instance on the head-end node using the following tools command:

# on PE-1:
tools
    perform
        router "Base"
            mpls 
                resignal p2mp-lsp "LSP-p2mp-1" p2mp-instance "p-LSP-p2mp-1"
# on PE-1:
tools
    perform
        router "Base"
            mpls
                resignal p2mp-delay 0

P2MP LSP p-to-mp-1 with metric change shows the resignaled S2L paths. Node PE-6 is now a bud LSR node (instead of egress LER before).

Figure 3. P2MP LSP p-to-mp-1 with metric change

The following command shows the new actual and computed hops in the resignaled S2L path to PE-7:

[/]
A:admin@PE-1# show router mpls p2mp-lsp "LSP-p2mp-1" p2mp-instance p2mp-instance-name "p-LSP-p2mp-1" s2l s2l-name "empty" to 192. detail

===============================================================================
MPLS LSP LSP-p2mp-1 S2L empty (Detail)
===============================================================================
Legend :
    @ - Detour Available                          # - Detour In Use
    b - Bandwidth Protected                       n - Node Protected
    S - Strict                                    L - Loose
    A - ABR
    s - Soft Preemption
===============================================================================
LSP Name         : LSP-p2mp-1
S2L LSP ID       : 11268
P2MP ID          : 0                       S2L Grp Id        : 1
Admin State      : Up                      Oper State        : Up
S2L State:       : Active                                    :
S2L Name         : empty
To               : 192.0.2.7
S2L Admin        : Up                      S2L Oper          : Up
OutInterface     : 1/1/c1/1:1000           Out Label         : 524282
S2L Up Time      : 0d 00:18:01             S2L Dn Time       : 0d 00:00:00
RetryAttempt     : 0                       NextRetryIn       : 0 sec
S2L Trans        : 3                       CSPF Queries      : 3
Failure Code     : noError                 Failure Node      : n/a
Inter-area       : False
ExplicitHops     :
    No Hops Specified
Actual Hops      :
    192.168.13.1(192.0.2.1) @                    Record Label        : N/A
 -> 192.168.13.2(192.0.2.3) @                    Record Label        : 524282
 -> 192.168.35.2(192.0.2.5) @                    Record Label        : 524281
 -> 192.168.45.1(192.0.2.4) @                    Record Label        : 524280
 -> 192.168.46.2(192.0.2.6) @                    Record Label        : 524282
 -> 192.168.67.2(192.0.2.7)                      Record Label        : 524281
ComputedHops     :
    192.168.13.1(S)
 -> 192.168.13.2(S)
 -> 192.168.35.2(S)
 -> 192.168.45.1(S)
 -> 192.168.46.2(S)
 -> 192.168.67.2(S)
LastResignal     : n/a
===============================================================================

The following command shows the new actual and computed hops in the resignaled S2L path to PE-6:

[/]
A:admin@PE-1# show router mpls p2mp-lsp "LSP-p2mp-1" p2mp-instance p2mp-instance-name "p-LSP-p2mp-1" s2l s2l-name "empty" to 192. detail

===============================================================================
MPLS LSP LSP-p2mp-1 S2L empty (Detail)
===============================================================================
Legend :
    @ - Detour Available                          # - Detour In Use
    b - Bandwidth Protected                       n - Node Protected
    S - Strict                                    L - Loose
    A - ABR
    s - Soft Preemption
===============================================================================
LSP Name         : LSP-p2mp-1
S2L LSP ID       : 11268
P2MP ID          : 0                       S2L Grp Id        : 2
Admin State      : Up                      Oper State        : Up
S2L State:       : Active                                    :
S2L Name         : empty
To               : 192.0.2.6
S2L Admin        : Up                      S2L Oper          : Up
OutInterface     : 1/1/c1/1:1000           Out Label         : 524282
S2L Up Time      : 0d 00:18:01             S2L Dn Time       : 0d 00:00:00
RetryAttempt     : 0                       NextRetryIn       : 0 sec
S2L Trans        : 3                       CSPF Queries      : 3
Failure Code     : noError                 Failure Node      : n/a
Inter-area       : False
ExplicitHops     :
    No Hops Specified
Actual Hops      :
    192.168.13.1(192.0.2.1) @                    Record Label        : N/A
 -> 192.168.13.2(192.0.2.3) @                    Record Label        : 524282
 -> 192.168.35.2(192.0.2.5) @                    Record Label        : 524281
 -> 192.168.45.1(192.0.2.4) @                    Record Label        : 524280
 -> 192.168.46.2(192.0.2.6)                      Record Label        : 524282
ComputedHops     :
    192.168.13.1(S)
 -> 192.168.13.2(S)
 -> 192.168.35.2(S)
 -> 192.168.45.1(S)
 -> 192.168.46.2(S)
LastResignal     : n/a
===============================================================================

An oam p2mp-lsp-trace command (in classic CLI) toward PE-7 now sets the E flag on PE-6 because PE-6 acts also as an egress LER node.

<in classic CLI>
*A:PE-1# /oam p2mp-lsp-trace LSP-p2mp-1 p2mp-instance p-LSP-p2mp-1 s2l-dest-address 192.0.2.7 detail
P2MP LSP LSP-p2mp-1: 132 bytes MPLS payload
P2MP Instance p-LSP-p2mp-1, S2L Egress 192.0.2.7

  1  192.0.2.3  rtt=2.56 ms rc=8(DSRtrMatchLabel)
     DS 1: ipaddr=192.168.35.2 ifaddr=192.168.35.2 iftype=ipv4Numbered MRU=8982 label=524281 proto=4(RSVP-TE) B/E flags:0/0
  2  192.0.2.5  rtt=3.91 ms rc=8(DSRtrMatchLabel)
     DS 1: ipaddr=192.168.45.1 ifaddr=192.168.45.1 iftype=ipv4Numbered MRU=8982 label=524280 proto=4(RSVP-TE) B/E flags:0/0
  3  192.0.2.4  rtt=4.31 ms rc=8(DSRtrMatchLabel)
     DS 1: ipaddr=192.168.46.2 ifaddr=192.168.46.2 iftype=ipv4Numbered MRU=8982 label=524282 proto=4(RSVP-TE) B/E flags:0/0
  4  192.0.2.6  rtt=4.83 ms rc=8(DSRtrMatchLabel)
     DS 1: ipaddr=192.168.67.2 ifaddr=192.168.67.2 iftype=ipv4Numbered MRU=8982 label=524281 proto=4(RSVP-TE) B/E flags:0/1
  5  192.0.2.7  rtt=5.80 ms rc=3(EgressRtr)

INFO: CLI #2052: Switching to the MD-CLI engine

In the next step, the S2L path toward PE-7 is changed from an empty path to a strict direct MPLS path (path-strict-to-PE-7). In that way, OSPF is not calculating the shortest path to the leaf node anymore.

# on PE-1:
configure {
    router "Base" {
        mpls {
            path "path-strict-to-PE-7" {
                admin-state enable
                hop 10 {
                    ip-address 192.168.13.2
                    type strict
                }
                hop 20 {
                    ip-address 192.168.35.2
                    type strict
                }
                hop 30 {
                    ip-address 192.168.57.2
                    type strict
                }
            } 

Before applying this new S2L path to the existing P2MP LSP (LSP-p2mp-1), the existing S2L path toward PE-7 is removed.

# on PE-1:
configure {
    router "Base" {
        mpls {
            lsp "LSP-p2mp-1" {
                admin-state enable
                type p2mp-rsvp
                from 192.0.2.1
                path-computation-method local-cspf
                fast-reroute {
                }
                primary-p2mp-instance "p-LSP-p2mp-1" {
                    s2l-path "empty" to 192.0.2.6 {
                    }
                    delete s2l-path "empty" to 192.0.2.7
                    s2l-path "path-strict-to-PE-7" to 192.0.2.7 {
                    }
                }
            }

As a consequence of this, only the S2L group ID changes while S2L LSP ID remains the same. P2MP LSP LSP-p2mp-1 with strict S2L path toward PE-7 shows the P2MP LSP LSP-p2mp-1 with strict S2L path to leaf PE-7.

Figure 4. P2MP LSP LSP-p2mp-1 with strict S2L path toward PE-7

S2L paths can be verified according to P2MP LSP LSP-p2mp-1 with strict S2L path toward PE-7. PE-5 is now a branch LSR node (instead of a transit LSR before).

[/]
A:admin@PE-1# show router mpls p2mp-lsp "LSP-p2mp-1" p2mp-instance p2mp-instance-name "p-LSP-p2mp-1" s2l s2l-name "path-strict-to-PE-7" to 192.0.2.7 detail

===============================================================================
MPLS LSP LSP-p2mp-1 S2L path-strict-to-PE-7 (Detail)
===============================================================================
Legend :
    @ - Detour Available                          # - Detour In Use
    b - Bandwidth Protected                       n - Node Protected
    S - Strict                                    L - Loose
    A - ABR
    s - Soft Preemption
===============================================================================
LSP Name         : LSP-p2mp-1
S2L LSP ID       : 11268
P2MP ID          : 0                       S2L Grp Id        : 3
Admin State      : Up                      Oper State        : Up
S2L State:       : Active                                    :
S2L Name         : path-strict-to-PE-7
To               : 192.0.2.7
S2L Admin        : Up                      S2L Oper          : Up
OutInterface     : 1/1/c1/1:1000           Out Label         : 524282
S2L Up Time      : 0d 00:01:06             S2L Dn Time       : 0d 00:00:00
RetryAttempt     : 0                       NextRetryIn       : 0 sec
S2L Trans        : 1                       CSPF Queries      : 1
Failure Code     : noError                 Failure Node      : n/a
Inter-area       : False
ExplicitHops     :
                  192.168.13.2(S)
               -> 192.168.35.2(S)
               -> 192.168.57.2(S)
Actual Hops      :
    192.168.13.1(192.0.2.1) @                    Record Label        : N/A
 -> 192.168.13.2(192.0.2.3) @                    Record Label        : 524282
 -> 192.168.35.2(192.0.2.5) @                    Record Label        : 524281
 -> 192.168.57.2(192.0.2.7)                      Record Label        : 524287
ComputedHops     :
    192.168.13.1(S)
 -> 192.168.13.2(S)
 -> 192.168.35.2(S)
 -> 192.168.57.2(S)
LastResignal     : n/a
===============================================================================

An oam p2mp-lsp-trace command (in classic CLI) toward PE-7 now sets the B flag on PE-5 because PE-5 acts as a branch LSR now.

[/]
A:admin@PE-1# //oam p2mp-lsp-trace "LSP-p2mp-1" p2mp-instance "p-LSP-p2mp-1" s2l-dest-address 192.0.2.7 detail
INFO: CLI #2051: Switching to the classic CLI engine
INFO: CLI #2050: Classic CLI modification of the configuration is not allowed - 'model-driven' management interface configuration mode active
*A:PE-1# /oam p2mp-lsp-trace "LSP-p2mp-1" p2mp-instance "p-LSP-p2mp-1" s2l-dest-address 192.0.2.7 detail
P2MP LSP LSP-p2mp-1: 132 bytes MPLS payload
P2MP Instance p-LSP-p2mp-1, S2L Egress 192.0.2.7

  1  192.0.2.3  rtt=2.39 ms rc=8(DSRtrMatchLabel)
     DS 1: ipaddr=192.168.35.2 ifaddr=192.168.35.2 iftype=ipv4Numbered MRU=8982 label=524281 proto=4(RSVP-TE) B/E flags:0/0
  2  192.0.2.5  rtt=3.38 ms rc=8(DSRtrMatchLabel)
     DS 1: ipaddr=192.168.57.2 ifaddr=192.168.57.2 iftype=ipv4Numbered MRU=8982 label=524287 proto=4(RSVP-TE) B/E flags:1/0
  3  192.0.2.7  rtt=5.15 ms rc=3(EgressRtr)

INFO: CLI #2052: Switching to the MD-CLI engine

Intelligent remerge

Intelligent remerge protects users from receiving duplicate multicast traffic during convergence. It also protects against duplicate traffic in case of badly designed S2L paths. Three cases are described for which intelligent remerge is implemented.

Intelligent remerge case 1 - Badly designed S2L paths

In this example, the paths of two different S2Ls of the same P2MP LSP instance have ingress label maps (ILMs) on different ports but go out on the same Next-Hop Label Forwarding Entry (NHLFE).

Intelligent remerge, case 1 shows P2MP LSP LSP-p2mp-2 with two incoming S2L paths at PE-5.

Figure 5. Intelligent remerge, case 1

On the head-end node (PE-1), P2MP LSP LSP-p2mp-2 is created with two strict direct MPLS paths (path-strict-to-PE-7 and path-strict-to-PE-6), as follows. Intelligent remerge is performed at node PE-5.

# on PE-1:
configure {
    router "Base" {
        mpls {
            path "path-strict-to-PE-6" {
                admin-state enable
                hop 10 {
                    ip-address 192.168.12.2
                    type strict
                }
                hop 20 {
                    ip-address 192.168.24.2
                    type strict
                }
                hop 30 {
                    ip-address 192.168.45.2
                    type strict
                }
                hop 40 {
                    ip-address 192.168.57.2
                    type strict
                }
                hop 50 {
                    ip-address 192.168.67.1
                    type strict
                }
            }
            path "path-strict-to-PE-7" {
                admin-state enable
                hop 10 {
                    ip-address 192.168.13.2
                    type strict
                }
                hop 20 {
                    ip-address 192.168.35.2
                    type strict
                }
                hop 30 {
                    ip-address 192.168.57.2
                    type strict
                }
            }
            lsp "LSP-p2mp-2" {
                admin-state enable
                type p2mp-rsvp
                from 192.0.2.1
                primary-p2mp-instance "p-LSP-p2mp-2" {
                    s2l-path "path-strict-to-PE-6" to 192.0.2.6 {
                    }
                    s2l-path "path-strict-to-PE-7" to 192.0.2.7 {
                    }
                }
            }
[/]
A:admin@PE-1# show router mpls p2mp-lsp "LSP-p2mp-2" p2mp-instance p2mp-instance-name "p-LSP-p2mp-2"

===============================================================================
MPLS P2MP Instance (Originating)
===============================================================================
-------------------------------------------------------------------------------
Type : Originating
-------------------------------------------------------------------------------
LSP Name    : LSP-p2mp-2
P2MP ID         : 0                         LSP Tunnel ID        : 2
Adm State       : Up                        Oper State           : Up

P2MPInstance    : p-LSP-p2mp-2
                                            P2MP-Inst-type       : Primary
P2MP Inst Id    : 2                         P2MP Lsp Id          : 30720
Inst Admin      : Up                        Inst Oper            : Up
Inst Up Time    : 0d 00:00:03               Inst Dn Time         : 0d 00:00:00
Hop Limit       : 255                       Adaptive             : Enabled
Record Route    : Record                    Record Label         : Record
Setup Priority  : 7                         Hold Priority        : 0
Include Grps    :                           Exclude Grps         :
None                                           None
Bandwidth       : No Reservation            Oper Bw              : 0 Mbps
S2L-Name        : path-strict-to-PE-7
                                            To                   : 192.0.2.7
S2L Admin       : Up                        S2L Oper             : Up
S2L-Name        : path-strict-to-PE-6
                                            To                   : 192.0.2.6
S2L Admin       : Up                        S2L Oper             : Up
-------------------------------------------------------------------------------
P2MP instances : 1
===============================================================================

To verify that node PE-5 is not sending duplicate multicast traffic downstream toward PE-7 while it receives two incoming multicast streams, a new tunnel interface and a new static <S,G> IGMP join are configured on head-end node (PE-1) and leaf nodes (PE-6 and PE-7). Also on the leaf nodes, an extension to the existing multicast information policy is needed. The configuration is as follows:

# on PE-1:
configure { 
    router "Base" {
        tunnel-interface {
            rsvp-p2mp-root "LSP-p2mp-2" {    # PIM already enabled on PE-1
            }
        }
        igmp {
            tunnel-interface {
                rsvp-p2mp-root "LSP-p2mp-2" {
                    static {
                        group 227.2.2.2 {
                            source 192.168.100.2 { }
                        }
                    }
                }
            }
# on PE-6:
configure { 
    multicast-management {
        multicast-info-policy "p2mp-pol" {
            bundle "bundle2" {
                primary-tunnel-interface {
                    rsvp-p2mp "LSP-p2mp-2"
                    sender 192.0.2.1
                }
                channel start 227.2.2.2 end 227.2.2.2 {
                }
            }
        }
    }
    router "Base" {
        tunnel-interface {
            rsvp-p2mp-leaf "LSP-p2mp-2" sender-address 192.0.2.1 {  # PIM enabled
            }
        } 
        igmp {
            interface "int-PE-6-MC-client2" {
                static {
                    group 227.2.2.2 {
                        source 192.168.100.2 { }
                    }
                }
            }
        } 
    
# on PE-7:
configure {
    multicast-management {
        multicast-info-policy "p2mp-pol" {
            bundle "bundle2" {
                primary-tunnel-interface {
                    rsvp-p2mp "LSP-p2mp-2"
                    sender 192.0.2.1
                }
                channel start 227.2.2.2 end 227.2.2.2 {
                }
            }
        }
    }
    router "Base" {
        tunnel-interface {
            rsvp-p2mp-leaf "LSP-p2mp-2" sender-address 192.0.2.1 {   # PIM enabled
            }
        } 
        igmp {
            interface "int-PE-7-MC-client1" {
                static {
                    group 227.2.2.2 {
                        source 192.168.100.2 { }
                    }
                }
            }
        }
    

For verification of incoming/outgoing multicast traffic at node PE-5, the monitor command is used.

[/]
A:admin@PE-5# monitor port 1/1/c1/1 port-string 1/1/c2/1 port-string-2 1/1/c3/1 rate interval 3 repeat 10

===============================================================================
Monitor statistics for Ports
===============================================================================
                                                   Input                 Output
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------

---snip---
-------------------------------------------------------------------------------
At time t = 12 sec (Mode: Rate)
-------------------------------------------------------------------------------
Port 1/1/c1/1
-------------------------------------------------------------------------------
Octets                                               140                1239113
Packets                                                1                    881
Errors                                                 0                      0
Bits                                                1120                9912904
Utilization (% of port capacity)                   ~0.00                   0.01

Port 1/1/c2/1
-------------------------------------------------------------------------------
Octets                                           1239582                    140
Packets                                              881                      1
Errors                                                 0                      0
Bits                                             9916656                   1120
Utilization (% of port capacity)                    0.01                  ~0.00

Port 1/1/c3/1
-------------------------------------------------------------------------------
Octets                                           1239643                    110
Packets                                              881                      1
Errors                                                 0                      0
Bits                                             9917144                    880
Utilization (% of port capacity)                    0.01                  ~0.00

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

Two incoming multicast streams are seen at PE-5 node (port 1/1/c2/1 and port 1/1/c3/1) and only one outgoing multicast stream (port 1/1/c1/1) is sent. No traffic duplication is seen.

Intelligent remerge case 2 - Make-before-break after graceful shutdown

Intelligent remerge, case 2 shows two paths of the same S2L that have Ingress Label Map (ILM) entries on different incoming ports and go out on the same NHLFE. This is the case during a make-before-break (MBB) operation on an S2L path after a graceful shutdown or global revertive. This is only a temporary situation until the original path is torn down.

Figure 6. Intelligent remerge, case 2

For this test, only multicast client MC-client1 is used (the one connected to leaf node PE-7). On nodes PE-4 and PE-7, the port to PE-6 is disabled to isolate PE-6. On the head-end node PE-1, a new P2MP LSP LSP-p2mp-3 is created with an empty MPLS path and with CSPF enabled. The metric type is TE to ensure that CSPF uses the TE metric instead of the IGP metric. In this case, the TE metric has the same value on all MPLS interfaces and the path has the hops PE-1, PE-3, PE-5, and PE-7. Also in this case, intelligent remerge is performed at node PE-5.

# on PE-1:
configure {
    router "Base" {
        mpls {
            path "empty" {
                admin-state enable
            }
            lsp "LSP-p2mp-3" {
                admin-state enable
                type p2mp-rsvp
                from 192.0.2.1
                path-computation-method local-cspf
                metric-type te
                primary-p2mp-instance "p-LSP-p2mp-3" {
                    s2l-path "empty" to 192.0.2.7 {
                    }
                }
            }
[/]
A:admin@PE-1# show router mpls p2mp-lsp "LSP-p2mp-3" p2mp-instance p2mp-instance-name "p-LSP-p2mp-3" s2l s2l-name "empty" to 192.0.2.7 detail

===============================================================================
MPLS LSP LSP-p2mp-3 S2L empty (Detail)
===============================================================================
Legend :
    @ - Detour Available                          # - Detour In Use
    b - Bandwidth Protected                       n - Node Protected
    S - Strict                                    L - Loose
    A - ABR
    s - Soft Preemption
===============================================================================
LSP Name         : LSP-p2mp-3
S2L LSP ID       : 37376
P2MP ID          : 0                       S2L Grp Id        : 1
Admin State      : Up                      Oper State        : Up
S2L State:       : Active                                    :
S2L Name         : empty
To               : 192.0.2.7
S2L Admin        : Up                      S2L Oper          : Up
OutInterface     : 1/1/c1/1:1000           Out Label         : 524286
S2L Up Time      : 0d 00:00:10             S2L Dn Time       : 0d 00:00:00
RetryAttempt     : 0                       NextRetryIn       : 0 sec
S2L Trans        : 1                       CSPF Queries      : 1
Failure Code     : noError                 Failure Node      : n/a
Inter-area       : False
ExplicitHops     :
    No Hops Specified
Actual Hops      :
    192.168.13.1(192.0.2.1)                      Record Label        : N/A
 -> 192.168.13.2(192.0.2.3)                      Record Label        : 524286
 -> 192.168.35.2(192.0.2.5)                      Record Label        : 524283
 -> 192.168.57.2(192.0.2.7)                      Record Label        : 524282
ComputedHops     :
    192.168.13.1(S)
 -> 192.168.13.2(S)
 -> 192.168.35.2(S)
 -> 192.168.57.2(S)
LastResignal     : n/a
===============================================================================

In a normal situation, the P2MP LSP follows the nodes PE-1, PE-3, PE-5, and PE-7. This can be verified with multicast traffic. Therefore, a new tunnel interface and a new static <S,G> IGMP join are configured on head-end node PE-1 and leaf node PE-7. On the leaf node, an extension to the existing multicast information policy is needed. The configuration is as follows:

# on PE-1:
configure {
    router "Base" {
        tunnel-interface {
            rsvp-p2mp-root "LSP-p2mp-3" {
            }
        }
        igmp {
            tunnel-interface {
                rsvp-p2mp-root "LSP-p2mp-3" {
                    static {
                        group 227.3.3.3 {
                            source 192.168.100.2 { }
                        }
                    }
                }
            }
# on PE-7:
configure {
    multicast-management {
        multicast-info-policy "p2mp-pol" {
            bundle "bundle3" {
                primary-tunnel-interface {
                    rsvp-p2mp "LSP-p2mp-3"
                    sender 192.0.2.1
                }
                channel start 227.3.3.3 end 227.3.3.3 {
                }
            }
        }
    }
    router "Base" {
        tunnel-interface {
            rsvp-p2mp-leaf "LSP-p2mp-3" sender-address 192.0.2.1 {
            }
        }
        igmp {
            interface "int-PE-7-MC-client1" {
                static {
                    group 227.3.3.3 {
                        source 192.168.100.2 { }
                    }
                }
            }

The traffic on PE-5 is monitored. Under normal circumstances, the ingress port is 1/1/c2/1 and the egress port is 1/1/c1/1.

[/]
A:admin@PE-5# monitor port 1/1/c1/1 port-string 1/1/c2/1 port-string-2 1/1/c3/1 rate interval 3 repeat 20

===============================================================================
Monitor statistics for Ports
===============================================================================
                                                   Input                 Output
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------

---snip---
-------------------------------------------------------------------------------
At time t = 6 sec (Mode: Rate)
-------------------------------------------------------------------------------
Port 1/1/c1/1
-------------------------------------------------------------------------------
Octets                                                21                1239531
Packets                                                0                    881
Errors                                                 0                      0
Bits                                                 168                9916248
Utilization (% of port capacity)                   ~0.00                   0.01

Port 1/1/c2/1
-------------------------------------------------------------------------------
Octets                                           1239649                     21
Packets                                              881                      0
Errors                                                 0                      0
Bits                                             9917192                    168
Utilization (% of port capacity)                    0.01                  ~0.00

Port 1/1/c3/1
-------------------------------------------------------------------------------
Octets                                                21                     21
Packets                                                0                      0
Errors                                                 0                      0
Bits                                                 168                    168
Utilization (% of port capacity)                   ~0.00                  ~0.00

-------------------------------------------------------------------------------

An RSVP graceful shutdown is performed on node PE-3, as follows:

# on PE-3:
configure {
    router "Base" {
        rsvp {
            graceful-shutdown true

The graceful shutdown on PE-3 triggers a global revertive on head-end node PE-1. A new MPLS path is calculated (see the dashed line in Intelligent remerge, case 2). For a few seconds or even less than a second, the old path and new path are active (two incoming multicast streams on node PE-5). Node PE-5 is doing intelligent remerge, not sending duplicate multicast traffic downstream toward PE-7:

[/]
A:admin@PE-5# monitor port 1/1/c1/1 port-string 1/1/c2/1 port-string-2 1/1/c3/1 rate interval 3 repeat 20

===============================================================================
Monitor statistics for Ports
===============================================================================
                                                   Input                 Output
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
---snip---

-------------------------------------------------------------------------------
At time t = 6 sec (Mode: Rate)
-------------------------------------------------------------------------------
Port 1/1/c1/1
-------------------------------------------------------------------------------
Octets                                                83                1239610
Packets                                                1                    881
Errors                                                 0                      0
Bits                                                 664                9916880
Utilization (% of port capacity)                   ~0.00                   0.01

Port 1/1/c2/1
-------------------------------------------------------------------------------
Octets                                           1239531                     89
Packets                                              881                      1
Errors                                                 0                      0
Bits                                             9916248                    712
Utilization (% of port capacity)                    0.01                  ~0.00

Port 1/1/c3/1
-------------------------------------------------------------------------------
Octets                                            218371                    119
Packets                                              156                      1
Errors                                                 0                      0
Bits                                             1746968                    952
Utilization (% of port capacity)                   ~0.00                  ~0.00

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

The granularity of the monitoring command is 3 seconds. The graceful shutdown takes less than 3 seconds. However, it is clear that the number of outgoing packets on port 1/1/c1/1 equals the number of incoming packets on port 1/1/c2/1. A number of these incoming packets also arrived on port 1/1/c3/1, but no duplicate packets were sent on the outgoing port. No traffic duplication is seen.


<continued>
-------------------------------------------------------------------------------
At time t = 9 sec (Mode: Rate)
-------------------------------------------------------------------------------
Port 1/1/c1/1
-------------------------------------------------------------------------------
Octets                                                63                1239257
Packets                                                0                    881
Errors                                                 0                      0
Bits                                                 504                9914056
Utilization (% of port capacity)                   ~0.00                   0.01

Port 1/1/c2/1
-------------------------------------------------------------------------------
Octets                                             90799                     63
Packets                                               65                      0
Errors                                                 0                      0
Bits                                              726392                    504
Utilization (% of port capacity)                   ~0.00                  ~0.00

Port 1/1/c3/1
-------------------------------------------------------------------------------
Octets                                           1239769                    169
Packets                                              881                      0
Errors                                                 0                      0
Bits                                             9918152                   1352
Utilization (% of port capacity)                    0.01                  ~0.00

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

Eventually, port 1/1/c3/1 takes over all traffic.

Intelligent remerge case 3 - Bypass and new global revertive path

When a bypass is active on the S2L path and the new global revertive path of the same S2L arrives on the same incoming interface as the original path (interface flapped) at the FRR merge point node, the node performs intelligent remerge. The implementation recognizes this specific case and signals a different label from the original S2L path coming on that same interface.

Intelligent remerge, case 3 shows the initial S2L path before the link failure (solid line), the bypass path to protect the link between PE-3 and PE-5, and the new global revertive path of the S2L (dotted line). Both the bypass path and the global revertive path share the links between PE-2 and PE-4 and between PE-4 and PE-5.

Figure 7. Intelligent remerge, case 3

For this test, all the non-default OSPF metrics are removed from the interfaces on all the PEs; on PE-1, as follows:

# on PE-1:
configure { 
    router "Base" {
        ospf 0 {
            area 0.0.0.0 {
                interface "int-PE-1-PE-2" {
                    delete metric

Only one MC-client is used (MC-client1 connected to leaf node PE-7). On nodes PE-4 and PE-7, the port toward PE-6 is disabled to isolate PE-6. On the head-end node PE-1, a new P2MP LSP "LSP-p2mp-4" is created with an empty MPLS path and FRR enabled. Also in this case, intelligent remerge is performed at node PE-5.

# on PE-1:
configure {
    router "Base" {
        mpls {
            path "empty"
                admin-state enable
            }
            lsp "LSP-p2mp-4" {
                admin-state enable
                type p2mp-rsvp
                from 192.0.2.1
                path-computation-method local-cspf
                fast-reroute {
                }
                primary-p2mp-instance "p-LSP-p2mp-4" {
                    s2l-path "empty" to 192.0.2.7 {
                    }
                }
[/]
A:admin@PE-1# show router mpls p2mp-lsp "LSP-p2mp-4" p2mp-instance p2mp-instance-name "p-LSP-p2mp-4" s2l s2l-name "empty" to 192.0.2.7 detail

===============================================================================
MPLS LSP LSP-p2mp-4 S2L empty (Detail)
===============================================================================
Legend :
    @ - Detour Available                          # - Detour In Use
    b - Bandwidth Protected                       n - Node Protected
    S - Strict                                    L - Loose
    A - ABR
    s - Soft Preemption
===============================================================================
LSP Name         : LSP-p2mp-4
S2L LSP ID       : 57344
P2MP ID          : 0                       S2L Grp Id        : 1
Admin State      : Up                      Oper State        : Up
S2L State:       : Active                                    :
S2L Name         : empty
To               : 192.0.2.7
S2L Admin        : Up                      S2L Oper          : Up
OutInterface     : 1/1/c1/1:1000           Out Label         : 524285
S2L Up Time      : 0d 00:01:09             S2L Dn Time       : 0d 00:00:00
RetryAttempt     : 0                       NextRetryIn       : 0 sec
S2L Trans        : 1                       CSPF Queries      : 1
Failure Code     : noError                 Failure Node      : n/a
Inter-area       : False
ExplicitHops     :
    No Hops Specified
Actual Hops      :
    192.168.13.1(192.0.2.1) @                    Record Label        : N/A
 -> 192.168.13.2(192.0.2.3) @                    Record Label        : 524285
 -> 192.168.35.2(192.0.2.5)                      Record Label        : 524284
 -> 192.168.57.2(192.0.2.7)                      Record Label        : 524286
ComputedHops     :
    192.168.13.1(S)
 -> 192.168.13.2(S)
 -> 192.168.35.2(S)
 -> 192.168.57.2(S)
LastResignal     : n/a
===============================================================================

In the normal situation, the P2MP LSP follows the nodes PE-1, PE-3, PE-5, and PE-7. This can be verified with multicast traffic. Therefore, a new tunnel interface and a new static <S,G> IGMP join are configured on head-end node PE-1 and leaf node PE-7. On the leaf node, an extension to the existing multicast information policy is needed. This is configured as follows:

# on PE-1:
configure {
    router "Base" {
        tunnel-interface {
            rsvp-p2mp-root "LSP-p2mp-4" {
            }
        } 
        igmp {
            tunnel-interface {
                rsvp-p2mp-root "LSP-p2mp-4" {
                    static {
                        group 227.4.4.4 {
                            source 192.168.100.2 { }
                        }
                    }
                }
# on PE-7:
configure {
    multicast-management {
        multicast-info-policy "p2mp-pol" {
            bundle "bundle4" {
                primary-tunnel-interface {
                    rsvp-p2mp "LSP-p2mp-4"
                    sender 192.0.2.1
                }
                channel start 227.4.4.4 end 227.4.4.4 {
                }
            }
        }
    }
    router "Base" {
        tunnel-interface {
            rsvp-p2mp-leaf "LSP-p2mp-4" sender-address 192.0.2.1 {
            }
        }
        igmp {
            interface "int-PE-7-MC-client1" {
                static {
                    group 227.4.4.4 {
                        source 192.168.100.2 { }
                    }
                }

The initial path goes from PE-1 via PE-3 and PE-5 to PE-7. The following command emulates a link failure on the interface from PE-3 to PE-5:

# on PE-3:
configure { 
    port 1/1/c1/1 {
        admin-state disable

As a consequence of this, traffic flows from PE-1 to PE-3 and then over the bypass link from PE-3 via PE-2 and PE-4 to PE-5, as shown in Intelligent remerge, case 3. The following show command shows the ‛#’ symbol for actual hop 192.168.13.2 and the failure code is tunnelLocallyRepaired:

[/]
A:admin@PE-1# show router mpls p2mp-lsp "LSP-p2mp-4" p2mp-instance p2mp-instance-name "p-LSP-p2mp-4" s2l s2l-name "empty" to 192.0.2.7 detail

===============================================================================
MPLS LSP LSP-p2mp-4 S2L empty (Detail)
===============================================================================
Legend :
    @ - Detour Available                          # - Detour In Use
    b - Bandwidth Protected                       n - Node Protected
    S - Strict                                    L - Loose
    A - ABR
    s - Soft Preemption
===============================================================================
LSP Name         : LSP-p2mp-4
S2L LSP ID       : 57344
P2MP ID          : 0                       S2L Grp Id        : 1
Admin State      : Up                      Oper State        : Up
S2L State:       : Active                                    :
S2L Name         : empty
To               : 192.0.2.7
S2L Admin        : Up                      S2L Oper          : Up
OutInterface     : 1/1/c1/1:1000           Out Label         : 524285
S2L Up Time      : 0d 00:03:30             S2L Dn Time       : 0d 00:00:00
RetryAttempt     : 0                       NextRetryIn       : 0 sec
S2L Trans        : 1                       CSPF Queries      : 1
Failure Code     : tunnelLocallyRepaired   Failure Node      : 192.0.2.3
Inter-area       : False
ExplicitHops     :
    No Hops Specified
Actual Hops      :
    192.168.13.1(192.0.2.1) @                    Record Label        : N/A
 -> 192.168.13.2(192.0.2.3) @ #                  Record Label        : 524285
 -> 192.168.35.2(192.0.2.5)                      Record Label        : 524284
 -> 192.168.57.2(192.0.2.7)                      Record Label        : 524286
ComputedHops     :
    192.168.13.1(S)
 -> 192.168.13.2(S)
 -> 192.168.35.2(S)
 -> 192.168.57.2(S)
LastResignal     : n/a
In Prog MBB :
 MBB Type        : GlobalRevert            NextRetryIn       : 16 sec
 Started At      : 02/11/2025 10:16:59     RetryAttempt      : 0
 FailureCode     : noError                 Failure Node      : n/a
========================================================================================

In the meantime, PE-3 triggers a global revertive action by sending a PathErr message toward the head-end node PE-1. After the global revert, the path goes from PE-1 via PE-2, PE-4, and PE-5 to PE-7.

[/]
A:admin@PE-1# show router mpls p2mp-lsp "LSP-p2mp-4" p2mp-instance p2mp-instance-name "p-LSP-p2mp-4" s2l s2l-name empty to 192.0.2.7 detail

===============================================================================
MPLS LSP LSP-p2mp-4 S2L empty (Detail)
===============================================================================
Legend :
    @ - Detour Available                          # - Detour In Use
    b - Bandwidth Protected                       n - Node Protected
    S - Strict                                    L - Loose
    A - ABR
    s - Soft Preemption
===============================================================================
LSP Name         : LSP-p2mp-4
S2L LSP ID       : 57344
P2MP ID          : 0                       S2L Grp Id        : 2
Admin State      : Up                      Oper State        : Up
S2L State:       : Active                                    :
S2L Name         : empty
To               : 192.0.2.7
S2L Admin        : Up                      S2L Oper          : Up
OutInterface     : 1/1/c2/1:1000           Out Label         : 524287
S2L Up Time      : 0d 00:03:56             S2L Dn Time       : 0d 00:00:00
RetryAttempt     : 0                       NextRetryIn       : 0 sec
S2L Trans        : 2                       CSPF Queries      : 2
Failure Code     : noError                 Failure Node      : n/a
Inter-area       : False
ExplicitHops     :
    No Hops Specified
Actual Hops      :
    192.168.12.1(192.0.2.1) @                    Record Label        : N/A
 -> 192.168.12.2(192.0.2.2)                      Record Label        : 524287
 -> 192.168.24.2(192.0.2.4)                      Record Label        : 524287
 -> 192.168.45.2(192.0.2.5)                      Record Label        : 524286
 -> 192.168.57.2(192.0.2.7)                      Record Label        : 524286
ComputedHops     :
    192.168.12.1(S)
 -> 192.168.12.2(S)
 -> 192.168.24.2(S)
 -> 192.168.45.2(S)
 -> 192.168.57.2(S)
LastResignal     : n/a
Last MBB    :
 MBB Type        : GlobalRevert            MBB State         : Success
 Ended At        : 02/11/2025 10:17:33
===============================================================================

For the very short time that the bypass path is used together with the new calculated path, PE-5 receives two incoming MC streams (both arriving on port 1/1/c3/1): one from the bypass path (PE-3 => PE-2 => PE-4 => PE-5) and one from the new MPLS path (PE-1 => PE-2 => PE-4 => PE-5 => PE-7). Port 1/1/c1/1 on PE-5 performs intelligent remerge, so only one MC stream is sent downstream toward leaf node PE-7.

Conclusion

From a configuration point of view, a P2MP LSP is only configured on the head-end node of that P2MP LSP; no explicit configuration is needed on the transit LSRs, branch LSRs, bud LSRs, and egress LERs/leaf nodes.

Because the PIM protocol is only needed on the head-end node and the leaf nodes, the core network can remain PIM-free. Although convergence is not covered in this chapter, failures in the core will be resolved by MPLS (in case of FRR, traffic loss for less than 50ms is expected), which is a major improvement compared to PIM convergence.