RSVP-TE for P2MP LSPs

RSVP-TE for P2MP LSPs

Point-to-multipoint (P2MP) LSPs carry traffic from one ingress point to several egress points. Using P2MP LSPs, traffic is multicast from one source to multiple destinations in a bandwidth efficient manner, without the ingress having to send separate copies to each receiver. Using RSVP-TE, provides the ingress router of P2MP LSP control over the path taken by the traffic and allows bandwidth guarantees to be made.

This article examines the forwarding plane and control plane mechanisms associated with P2MP LSPs.

Forwarding Plane Mechanisms

In figure 1, PE1 is the ingress router for the P2MP LSP. PE4, PE5 and PE6 are egress routers. PE1 router receives data traffic and creates two copies of each packet arriving on its ingress interface. One copy encapsulated with label value L2 is forwarded to P2 router, while another encapsulated with label value L3 is forwarded to P3 router. PE1 and P2 routers are also called branch routers as they replicate incoming data onto several interfaces.

On P2 router, for each packet belonging to P2MP LSP, P2 router makes two copies, one of which is sent to PE4 router and the other to PE5 router. Packets arrive at P2 router with label value L2. The forwarding table corresponding to P2MP LSP on P2 router dictates that for all packets with label value L2, one copy should be sent out interface-1 to PE4 router with label value L4, and another copy should be sent out interface-2 to PE5 router with label value L5. Hence, P2 router is performing packet replication in MPLS.

On P3 router, for each packet belonging to P2MP LSP, P3 router just forwards it to PE6 router. No branching occurs at P3 router and hence it is also called a transit router.

To summarize, on every link in the network, there is always a single copy of the data packet arriving at the ingress router PE1. This is a key advantage of P2MP LSP i.e. bandwidth efficiency. Even on link PE1-P2, there is always a single copy of a packet.

Control Plane Mechanisms

RFC4875 defines extensions to RSVP-TE protocol to support P2MP LSPs. For P2MP LSP, the ingress PE1 router must know the identity of egress routers PE4, PE5 and PE6. This information is configured manually as follows:

Configuring P2MP Egress routers on PE1

mpls traffic-eng destination list name P2MP_EGRESS
 ip 4.4.4.4 path-option 2 dynamic
 ip 5.5.5.5 path-option 2 dynamic
 ip 6.6.6.6 path-option 2 dynamic
!
interface Tunnel 10
 ip unnumbered Loopback 0
 tunnel mode mpls traffic-eng point-to-multipoint
 tunnel destination list mpls traffic-eng name P2MP_EGRESS
 tunnel mpls traffic-eng priority 7 7
 tunnel mpls traffic-eng bandwidth 5000
 tunnel mpls traffic-eng record-route
!

A P2MP LSP could be a set of P2P LSPs- one from ingress router to each egress routers. Each of the LSPs in this set is also known as S2L (source-to-leaf) Sub-LSP. In P2MP, each sub-LSP is signaled using its own PATH and RESV messages, the PATH message containing the Explicit Route Object (ERO) for that sub-LSP.

A P2MP LSP is identified by a P2MP SESSION Object (C-Type = 13) in RSVP PATH and RESV messages. The object contains the identifier of the P2MP session, which includes the P2MP Identifier (P2MP ID), a tunnel identifier (Tunnel ID) and an extended tunnel identifier (Extended Tunnel ID). The <P2MP ID, Tunnel ID, Extended Tunnel ID> tuple provides an identifier for the set of destinations for the P2MP LSP. For example, this tuple may look like <10, 10, 1.1.1.1> for MPLS TE Tunnel 10. The P2MP ID is a 4-byte number (usually same as Tunnel ID). The Extended Tunnel ID is usually the source IP address of MPLS TE tunnel.

Sub-Groups

P2MP LSP state is managed using RSVP messages. A P2MP LSP comprises of multiple S2L Sub-LSPs, so it may not be possible to represent the full state in a single IP packet. It must also be possible to add or remove endpoint to and from P2MP LSP. This is addressed through the addition of sub-group identifier (Sub-Group ID) and sub-group originator (Sub-Group Originator ID) to the SENDER_TEMPLATE and FILTER_SPEC objects. Using this information together with SESSION object, the branch routers can figure out whether to "branch" the signaling state for a P2MP LSP.

The Sub-Group Originator ID is usually the source IP address of P2MP LSP. The Sub-Group ID is a random unique number.

S2L Sub-LSPs

A P2MP LSP is constituted of one or more S2L Sub-LSPs. A S2L sub-LSP can be identified using the combination of P2MP ID, Tunnel ID and Extended Tunnel ID of SESSION object, tunnel source address and LSP ID from SENDER_TEMPLATE object, and S2L sub-LSP destination address. The S2L sub-LSP destination address is carried in a new S2L_SUB_LSP object.

Figure 2 shows the flow of RSVP PATH and RESV messages for the network. The RESV message contains the label value (L2, L3, etc.) in LABEL Object.

In figure 2, the ingress PE1 router initiates the setup of S2L sub-LSPs to each egress routers (PE4, PE5 and PE6) that are destinations of a P2MP LSP. Each S2L sub-LSP is associated with the same P2MP LSP using common P2MP SESSION object, and Tunnel source address and LSP ID in SENDER_TEMPLATE object. Each PATH message contains a single S2L sub-LSP.

Note: It is possible that a single PATH message can carry multiple S2L sub-LSPs, however, Cisco IOS uses multiple PATH messages to signal multiple S2L sub-LSPs.

The following debug output shows individual PATH messages signaled by PE1 router to all egress routers. Notice separate Sub-Group IDs for different sub-LSPs.

PATH messages from PE1 router

!--- First PATH message for sub-LSP to PE4 router
*Aug 18 12:22:57.506: Outgoing Path:
*Aug 18 12:22:57.506:   version:1 flags:0000 cksum:4990 ttl:255 reserved:0 length:228
*Aug 18 12:22:57.510:  SESSION              type 13 length 16:
*Aug 18 12:22:57.510:   P2MP ID: 10  Tun ID: 10  Ext Tun ID: 1.1.1.1
*Aug 18 12:22:57.510:  HOP                  type 1 length 12:
*Aug 18 12:22:57.510:   Hop Addr: 10.12.1.1 LIH: 0x15000408
*Aug 18 12:22:57.510:  TIME_VALUES          type 1 length 8 :
*Aug 18 12:22:57.514:   Refresh Period (msec): 30000
*Aug 18 12:22:57.514:  EXPLICIT_ROUTE       type 1 length 36:
*Aug 18 12:22:57.514:   10.12.1.2 (Strict IPv4 Prefix, 8 bytes, /32)
*Aug 18 12:22:57.514:   10.24.1.1 (Strict IPv4 Prefix, 8 bytes, /32)
*Aug 18 12:22:57.514:   10.24.1.2 (Strict IPv4 Prefix, 8 bytes, /32)
*Aug 18 12:22:57.518:   4.4.4.4 (Strict IPv4 Prefix, 8 bytes, /32)
*Aug 18 12:22:57.518:  LABEL_REQUEST        type 1 length 8 :
*Aug 18 12:22:57.518:   Layer 3 protocol ID: 2048
*Aug 18 12:22:57.518:  SESSION_ATTRIBUTE    type 7 length 16:
*Aug 18 12:22:57.518:   Setup Prio: 7, Holding Prio: 7
*Aug 18 12:22:57.522:   Flags: (0x4) SE Style
*Aug 18 12:22:57.522:   Session Name: PE1_t10
*Aug 18 12:22:57.522:  SENDER_TEMPLATE      type 12 length 20:
*Aug 18 12:22:57.522:   Tun Sender: 1.1.1.1  LSP ID: 25  SubGroup Orig: 1.1.1.1
*Aug 18 12:22:57.522:   SubGroup ID: 1
*Aug 18 12:22:57.526:  SENDER_TSPEC         type 2 length 36:
*Aug 18 12:22:57.526:   version=0, length in words=7
*Aug 18 12:22:57.526:   Token bucket fragment (service_id=1, length=6 words
*Aug 18 12:22:57.526:     parameter id=127, flags=0, parameter length=5
*Aug 18 12:22:57.526:     average rate=6250000 bytes/sec, burst depth=1000 bytes
*Aug 18 12:22:57.526:     peak rate   =6250000 bytes/sec
*Aug 18 12:22:57.530:     min unit=1 bytes, max pkt size=2147483647 bytes
*Aug 18 12:22:57.530:  ADSPEC               type 2 length 48:
*Aug 18 12:22:57.530:  version=0  length in words=10
*Aug 18 12:22:57.530:  General Parameters  break bit=0  service length=8
*Aug 18 12:22:57.530:                                         IS Hops:1
*Aug 18 12:22:57.534:              Minimum Path Bandwidth (bytes/sec):12500000
*Aug 18 12:22:57.534:                     Path Latency (microseconds):0
*Aug 18 12:22:57.534:                                        Path MTU:1500
*Aug 18 12:22:57.534:  Controlled Load Service  break bit=0  service length=0
*Aug 18 12:22:57.534:  S2L_SUB_LSP          type 1 length 8 :
*Aug 18 12:22:57.534:   S2L Destination : 4.4.4.4
*Aug 18 12:22:57.538:  RECORD_ROUTE         type 1 length 12:
*Aug 18 12:22:57.538:   10.12.1.1/32, Flags:0x0 (No Local Protection)
!--- Second PATH message for sub-LSP to PE5 router
*Aug 18 12:22:57.546: Outgoing Path:
*Aug 18 12:22:57.546:   version:1 flags:0000 cksum:5188 ttl:255 reserved:0 length:228
*Aug 18 12:22:57.550:  SESSION              type 13 length 16:
*Aug 18 12:22:57.550:   P2MP ID: 10  Tun ID: 10  Ext Tun ID: 1.1.1.1
*Aug 18 12:22:57.554:  HOP                  type 1 length 12:
*Aug 18 12:22:57.554:   Hop Addr: 10.12.1.1 LIH: 0x09000409
*Aug 18 12:22:57.554:  TIME_VALUES          type 1 length 8 :
*Aug 18 12:22:57.554:   Refresh Period (msec): 30000
*Aug 18 12:22:57.554:  EXPLICIT_ROUTE       type 1 length 36:
*Aug 18 12:22:57.558:   10.12.1.2 (Strict IPv4 Prefix, 8 bytes, /32)
*Aug 18 12:22:57.558:   10.25.1.1 (Strict IPv4 Prefix, 8 bytes, /32)
*Aug 18 12:22:57.558:   10.25.1.2 (Strict IPv4 Prefix, 8 bytes, /32)
*Aug 18 12:22:57.558:   5.5.5.5 (Strict IPv4 Prefix, 8 bytes, /32)
*Aug 18 12:22:57.558:  LABEL_REQUEST        type 1 length 8 :
*Aug 18 12:22:57.562:   Layer 3 protocol ID: 2048
*Aug 18 12:22:57.562:  SESSION_ATTRIBUTE    type 7 length 16:
*Aug 18 12:22:57.562:   Setup Prio: 7, Holding Prio: 7
*Aug 18 12:22:57.562:   Flags: (0x4) SE Style
*Aug 18 12:22:57.562:   Session Name: PE1_t10
*Aug 18 12:22:57.562:  SENDER_TEMPLATE      type 12 length 20:
*Aug 18 12:22:57.566:   Tun Sender: 1.1.1.1  LSP ID: 25  SubGroup Orig: 1.1.1.1
*Aug 18 12:22:57.566:   SubGroup ID: 2
*Aug 18 12:22:57.566:  SENDER_TSPEC         type 2 length 36:
*Aug 18 12:22:57.566:   version=0, length in words=7
*Aug 18 12:22:57.566:   Token bucket fragment (service_id=1, length=6 words
*Aug 18 12:22:57.570:     parameter id=127, flags=0, parameter length=5
*Aug 18 12:22:57.570:     average rate=6250000 bytes/sec, burst depth=1000 bytes
*Aug 18 12:22:57.570:     peak rate   =6250000 bytes/sec
*Aug 18 12:22:57.570:     min unit=1 bytes, max pkt size=2147483647 bytes
*Aug 18 12:22:57.570:  ADSPEC               type 2 length 48:
*Aug 18 12:22:57.574:  version=0  length in words=10
*Aug 18 12:22:57.574:  General Parameters  break bit=0  service length=8
*Aug 18 12:22:57.574:                                         IS Hops:1
*Aug 18 12:22:57.574:              Minimum Path Bandwidth (bytes/sec):12500000
*Aug 18 12:22:57.578:                     Path Latency (microseconds):0
*Aug 18 12:22:57.578:                                        Path MTU:1500
*Aug 18 12:22:57.578:  Controlled Load Service  break bit=0  service length=0
*Aug 18 12:22:57.582:  S2L_SUB_LSP          type 1 length 8 :
*Aug 18 12:22:57.582:   S2L Destination : 5.5.5.5
*Aug 18 12:22:57.582:  RECORD_ROUTE         type 1 length 12:
*Aug 18 12:22:57.582:   10.12.1.1/32, Flags:0x0 (No Local Protection)
!--- Third PATH message for sub-LSP to PE6 router
*Aug 18 12:22:57.590: Outgoing Path:
*Aug 18 12:22:57.590:   version:1 flags:0000 cksum:4F6F ttl:255 reserved:0 length:228
*Aug 18 12:22:57.594:  SESSION              type 13 length 16:
*Aug 18 12:22:57.594:   P2MP ID: 10  Tun ID: 10  Ext Tun ID: 1.1.1.1
*Aug 18 12:22:57.594:  HOP                  type 1 length 12:
*Aug 18 12:22:57.594:   Hop Addr: 10.13.1.1 LIH: 0x07000404
*Aug 18 12:22:57.594:  TIME_VALUES          type 1 length 8 :
*Aug 18 12:22:57.598:   Refresh Period (msec): 30000
*Aug 18 12:22:57.598:  EXPLICIT_ROUTE       type 1 length 36:
*Aug 18 12:22:57.598:   10.13.1.2 (Strict IPv4 Prefix, 8 bytes, /32)
*Aug 18 12:22:57.598:   10.36.1.1 (Strict IPv4 Prefix, 8 bytes, /32)
*Aug 18 12:22:57.598:   10.36.1.2 (Strict IPv4 Prefix, 8 bytes, /32)
*Aug 18 12:22:57.602:   6.6.6.6 (Strict IPv4 Prefix, 8 bytes, /32)
*Aug 18 12:22:57.602:  LABEL_REQUEST        type 1 length 8 :
*Aug 18 12:22:57.606:   Layer 3 protocol ID: 2048
*Aug 18 12:22:57.606:  SESSION_ATTRIBUTE    type 7 length 16:
*Aug 18 12:22:57.606:   Setup Prio: 7, Holding Prio: 7
*Aug 18 12:22:57.606:   Flags: (0x4) SE Style
*Aug 18 12:22:57.606:   Session Name: PE1_t10
*Aug 18 12:22:57.610:  SENDER_TEMPLATE      type 12 length 20:
*Aug 18 12:22:57.610:   Tun Sender: 1.1.1.1  LSP ID: 25  SubGroup Orig: 1.1.1.1
*Aug 18 12:22:57.610:   SubGroup ID: 3
*Aug 18 12:22:57.610:  SENDER_TSPEC         type 2 length 36:
*Aug 18 12:22:57.610:   version=0, length in words=7
*Aug 18 12:22:57.614:   Token bucket fragment (service_id=1, length=6 words
*Aug 18 12:22:57.614:     parameter id=127, flags=0, parameter length=5
*Aug 18 12:22:57.614:     average rate=6250000 bytes/sec, burst depth=1000 bytes
*Aug 18 12:22:57.614:     peak rate   =6250000 bytes/sec
*Aug 18 12:22:57.614:     min unit=1 bytes, max pkt size=2147483647 bytes
*Aug 18 12:22:57.618:  ADSPEC               type 2 length 48:
*Aug 18 12:22:57.618:  version=0  length in words=10
*Aug 18 12:22:57.618:  General Parameters  break bit=0  service length=8
*Aug 18 12:22:57.618:                                         IS Hops:1
*Aug 18 12:22:57.618:              Minimum Path Bandwidth (bytes/sec):12500000
*Aug 18 12:22:57.618:                     Path Latency (microseconds):0
*Aug 18 12:22:57.622:                                            Path MTU:1500
*Aug 18 12:22:57.622:  Controlled Load Service  break bit=0  service length=0
*Aug 18 12:22:57.622:  S2L_SUB_LSP          type 1 length 8 :
*Aug 18 12:22:57.622:   S2L Destination : 6.6.6.6
*Aug 18 12:22:57.622:  RECORD_ROUTE         type 1 length 12:
*Aug 18 12:22:57.626:   10.13.1.1/32, Flags:0x0 (No Local Protection)
*Aug 18 12:22:59.286: %LINK-3-UPDOWN: Interface Tunnel10, changed state to up
*Aug 18 12:22:59.590: %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel10, changed state to up

Consider, for instance, the RESV messages from PE4 and PE5 egress routers. Both routers respond with a RESV message to P2 router that contains the label value (L4 and L5) that P2 router should use when forwarding packets to them. Thus P2 router receives two separate RESV messages for both S2L sub-LSPs to egress routers PE4 and PE5, respectively. P2 router is aware that both RESV messages from PE4 and PE5 refer to the same P2MP LSP because of the P2MP SESSION object present in them.

P2 router also sends a separate RESV message to PE1 router corresponding to each of the two S2L sub-LSPs, but deliberately uses the same label value (L2) for each. The following debug output shows separate RESV messages sent by P2 router to PE1 router.

RESV messages on P2 router

!--- P2 router receives a RESV message from PE4 router
*Aug 18 12:23:14.854: Incoming Resv:
*Aug 18 12:23:14.854:   version:1 flags:0000 cksum:40D5 ttl:255 reserved:0 length:136
*Aug 18 12:23:14.858:  SESSION              type 13 length 16:
*Aug 18 12:23:14.858:   P2MP ID: 10  Tun ID: 10  Ext Tun ID: 1.1.1.1
*Aug 18 12:23:14.858:  HOP                  type 1 length 12:
*Aug 18 12:23:14.862:   Hop Addr: 10.24.1.2 LIH: 0x9900040C
*Aug 18 12:23:14.862:  TIME_VALUES          type 1 length 8 :
*Aug 18 12:23:14.862:   Refresh Period (msec): 30000
*Aug 18 12:23:14.862:  STYLE                type 1 length 8 :
*Aug 18 12:23:14.866:   Shared-Explicit (SE)
*Aug 18 12:23:14.866:  FLOWSPEC             type 2 length 36:
*Aug 18 12:23:14.866:     version = 0 length in words = 7
*Aug 18 12:23:14.866:     service id = 5, service length = 6
*Aug 18 12:23:14.866:     tspec parameter id = 127, flags = 0,length = 5
*Aug 18 12:23:14.870:     average rate = 6250000 bytes/sec, burst depth = 1000 bytes
*Aug 18 12:23:14.870:     peak rate    = 6250000 bytes/sec
*Aug 18 12:23:14.870:     min unit = 0 bytes,max pkt size = 1500 bytes
*Aug 18 12:23:14.870:  FILTER_SPEC          type 12 length 20:
*Aug 18 12:23:14.870:   Tun Sender: 1.1.1.1, LSP ID: 25, SubGroup Orig: 1.1.1.1
*Aug 18 12:23:14.874:   SubGroup ID: 1
*Aug 18 12:23:14.874:  LABEL                type 1 length 8 :
*Aug 18 12:23:14.874:   Labels: 16
*Aug 18 12:23:14.878:  RECORD_ROUTE         type 1 length 12:
*Aug 18 12:23:14.878:   10.24.1.2/32, Flags:0x0 (No Local Protection)
*Aug 18 12:23:14.878:  S2L_SUB_LSP          type 1 length 8 :
*Aug 18 12:23:14.882:   S2L Destination : 4.4.4.4
!--- P2 router sends out a RESV message to PE1 router for sub-LSP to PE4 router
*Aug 18 12:23:14.930: Outgoing Resv:
*Aug 18 12:23:14.934:   version:1 flags:0000 cksum:98B4 ttl:255 reserved:0 length:144
*Aug 18 12:23:14.938:  SESSION              type 13 length 16:
*Aug 18 12:23:14.938:   P2MP ID: 10  Tun ID: 10  Ext Tun ID: 1.1.1.1
*Aug 18 12:23:14.938:  HOP                  type 1 length 12:
*Aug 18 12:23:14.938:   Hop Addr: 10.12.1.2 LIH: 0x15000408
*Aug 18 12:23:14.942:  TIME_VALUES          type 1 length 8 :
*Aug 18 12:23:14.942:   Refresh Period (msec): 30000
*Aug 18 12:23:14.942:  STYLE                type 1 length 8 :
*Aug 18 12:23:14.942:   Shared-Explicit (SE)
*Aug 18 12:23:14.942:  FLOWSPEC             type 2 length 36:
*Aug 18 12:23:14.946:     version = 0 length in words = 7
*Aug 18 12:23:14.946:     service id = 5, service length = 6
*Aug 18 12:23:14.946:     tspec parameter id = 127, flags = 0,length = 5
*Aug 18 12:23:14.946:     average rate = 6250000 bytes/sec, burst depth = 1000 bytes
*Aug 18 12:23:14.950:     peak rate    = 6250000 bytes/sec
*Aug 18 12:23:14.950:     min unit = 0 bytes,max pkt size = 1500 bytes
*Aug 18 12:23:14.950:  FILTER_SPEC          type 12 length 20:
*Aug 18 12:23:14.950:   Tun Sender: 1.1.1.1, LSP ID: 25, SubGroup Orig: 1.1.1.1
*Aug 18 12:23:14.950:   SubGroup ID: 1
*Aug 18 12:23:14.954:  LABEL                type 1 length 8 :
*Aug 18 12:23:14.954:   Labels: 16
*Aug 18 12:23:14.954:  RECORD_ROUTE         type 1 length 20:
*Aug 18 12:23:14.954:   10.24.1.1/32, Flags:0x0 (No Local Protection)
*Aug 18 12:23:14.958:   10.24.1.2/32, Flags:0x0 (No Local Protection)
*Aug 18 12:23:14.962:  S2L_SUB_LSP          type 1 length 8 :
*Aug 18 12:23:14.962:   S2L Destination : 4.4.4.4
!--- P2 router receives a RESV message from PE5 router
*Aug 18 12:23:14.974: Incoming Resv:
*Aug 18 12:23:14.974:   version:1 flags:0000 cksum:A0D2 ttl:255 reserved:0 length:136
*Aug 18 12:23:14.978:  SESSION              type 13 length 16:
*Aug 18 12:23:14.978:   P2MP ID: 10  Tun ID: 10  Ext Tun ID: 1.1.1.1
*Aug 18 12:23:14.978:  HOP                  type 1 length 12:
*Aug 18 12:23:14.982:   Hop Addr: 10.25.1.2 LIH: 0x3700040A
*Aug 18 12:23:14.982:  TIME_VALUES          type 1 length 8 :
*Aug 18 12:23:14.982:   Refresh Period (msec): 30000
*Aug 18 12:23:14.982:  STYLE                type 1 length 8 :
*Aug 18 12:23:14.982:   Shared-Explicit (SE)
*Aug 18 12:23:14.986:  FLOWSPEC             type 2 length 36:
*Aug 18 12:23:14.986:     version = 0 length in words = 7
*Aug 18 12:23:14.986:     service id = 5, service length = 6
*Aug 18 12:23:14.986:     tspec parameter id = 127, flags = 0,length = 5
*Aug 18 12:23:14.986:     average rate = 6250000 bytes/sec, burst depth = 1000 bytes
*Aug 18 12:23:14.990:     peak rate    = 6250000 bytes/sec
*Aug 18 12:23:14.990:     min unit = 0 bytes,max pkt size = 1500 bytes
*Aug 18 12:23:14.990:  FILTER_SPEC          type 12 length 20:
*Aug 18 12:23:14.990:   Tun Sender: 1.1.1.1, LSP ID: 25, SubGroup Orig: 1.1.1.1
*Aug 18 12:23:14.994:   SubGroup ID: 2
*Aug 18 12:23:14.994:  LABEL                type 1 length 8 :
*Aug 18 12:23:14.994:   Labels: 16
*Aug 18 12:23:14.994:  RECORD_ROUTE         type 1 length 12:
*Aug 18 12:23:14.998:   10.25.1.2/32, Flags:0x0 (No Local Protection)
*Aug 18 12:23:14.998:  S2L_SUB_LSP          type 1 length 8 :
*Aug 18 12:23:14.998:   S2L Destination : 5.5.5.5
!--- P2 router sends out a RESV message to PE1 router for sub-LSP to PE5 router
*Aug 18 12:23:15.030: Outgoing Resv:
*Aug 18 12:23:15.034:   version:1 flags:0000 cksum:A2AE ttl:255 reserved:0 length:144
*Aug 18 12:23:15.034:  SESSION              type 13 length 16:
*Aug 18 12:23:15.034:   P2MP ID: 10  Tun ID: 10  Ext Tun ID: 1.1.1.1
*Aug 18 12:23:15.038:  HOP                  type 1 length 12:
*Aug 18 12:23:15.038:   Hop Addr: 10.12.1.2 LIH: 0x09000409
*Aug 18 12:23:15.038:  TIME_VALUES          type 1 length 8 :
*Aug 18 12:23:15.038:   Refresh Period (msec): 30000
*Aug 18 12:23:15.038:  STYLE                type 1 length 8 :
*Aug 18 12:23:15.038:   Shared-Explicit (SE)
*Aug 18 12:23:15.042:  FLOWSPEC             type 2 length 36:
*Aug 18 12:23:15.042:     version = 0 length in words = 7
*Aug 18 12:23:15.042:     service id = 5, service length = 6
*Aug 18 12:23:15.042:     tspec parameter id = 127, flags = 0,length = 5
*Aug 18 12:23:15.042:     average rate = 6250000 bytes/sec, burst depth = 1000 bytes
*Aug 18 12:23:15.046:     peak rate    = 6250000 bytes/sec
*Aug 18 12:23:15.046:          min unit = 0 bytes,max pkt size = 1500 bytes
*Aug 18 12:23:15.046:  FILTER_SPEC          type 12 length 20:
*Aug 18 12:23:15.046:   Tun Sender: 1.1.1.1, LSP ID: 25, SubGroup Orig: 1.1.1.1
*Aug 18 12:23:15.046:   SubGroup ID: 2
*Aug 18 12:23:15.046:  LABEL                type 1 length 8 :
*Aug 18 12:23:15.050:   Labels: 16
*Aug 18 12:23:15.050:  RECORD_ROUTE         type 1 length 20:
*Aug 18 12:23:15.050:   10.25.1.1/32, Flags:0x0 (No Local Protection)
*Aug 18 12:23:15.054:   10.25.1.2/32, Flags:0x0 (No Local Protection)
*Aug 18 12:23:15.054:  S2L_SUB_LSP          type 1 length 8 :
*Aug 18 12:23:15.054:   S2L Destination : 5.5.5.5

P2 also installs an entry in its forwarding table such that when a packet arrives with label value L2, one copy is sent to PE4 with label value L4 and another copy is sent to PE5 with label value L5. The following output shows the forwarding table on P2 router.

Forwarding table on P2 router

P2# show mpls forwarding-table
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop
Label      Label      or Tunnel Id     Switched      interface
16         16         1.1.1.1 10 [25]  0             Fa1/1      10.24.1.2
           16         1.1.1.1 10 [25]  0             Fa2/0      10.25.1.2

PE1 is also aware of two RESV messages belonging to the same P2MP LSP due to the presence of P2MP SESSION object in them. Hence, for any data traffic for P2MP LSP, it will send only one copy of packet to P2 router with label value L2.

P2MP LSP Verification

Headend (PE1)

The show mpls traffic-eng tunnel dest-mode p2mp command shows the sub-LSPs from the headend router.

Sub-LSPs to PE4, PE5 and PE6 from PE1 router

PE1# show mpls traffic-eng tunnels dest-mode p2mp brief
Signalling Summary:
    LSP Tunnels Process:            running
    Passive LSP Listener:           running
    RSVP Process:                   running
    Forwarding:                     enabled
    Periodic reoptimization:        every 3600 seconds, next in 2924 seconds
    Periodic FRR Promotion:         Not Running
    Periodic auto-bw collection:    every 300 seconds, next in 224 seconds
P2MP TUNNELS:
                         DEST        CURRENT
INTERFACE   STATE/PROT  UP/CFG     TUNID  LSPID
Tunnel10    up/up       3/3        10     25
Displayed 1 (of 1) P2MP heads
P2MP SUB-LSPS:
SOURCE        TUNID  LSPID  DESTINATION   SUBID  STATE UP IF      DOWN IF
1.1.1.1       10     25     4.4.4.4       1      Up    head       Fa1/0
1.1.1.1       10     25     5.5.5.5       2      Up    head       Fa1/0
1.1.1.1       10     25     6.6.6.6       3      Up    head       Fa1/1
Displayed 3 P2MP sub-LSPs:
          3 (of 3) heads, 0 (of 0) midpoints, 0 (of 0) tails
PE1# show mpls traffic-eng tunnels dest-mode p2mp
P2MP TUNNELS:
Tunnel10    (p2mp),  Admin: up, Oper: up
  Name: PE1_t10
  Tunnel10 Destinations Information:
    Destination     State SLSP UpTime
    4.4.4.4         Up    00:18:39
    5.5.5.5         Up    00:18:39
    6.6.6.6         Up    00:18:39
    Summary: Destinations: 3 [Up: 3, Proceeding: 0, Down: 0 ]
      [destination list name: P2MP_EGRESS]
  History:
    Tunnel:
      Time since created: 20 hours, 58 minutes
      Time since path change: 18 minutes, 39 seconds
      Number of LSP IDs (Tun_Instances) used: 25
    Current LSP: [ID: 25]
      Uptime: 18 minutes, 39 seconds
    Prior LSP: [ID: 23]
      Removal Trigger: tunnel shutdown
  Tunnel10 LSP Information:
    Configured LSP Parameters:
      Bandwidth: 50000    kbps (Global)  Priority: 7  7   Affinity: 0x0/0xFFFF
      Metric Type: TE (default)
  Session Information
    Source: 1.1.1.1, TunID: 10
    LSPs
      ID: 25 (Current), Path-Set ID: 0x17000005
        Sub-LSPs: 3, Up: 3, Proceeding: 0, Down: 0
      Total LSPs: 1
P2MP SUB-LSPS:
 LSP: Source: 1.1.1.1, TunID: 10, LSPID: 25
     P2MP ID: 10, Subgroup Originator: 1.1.1.1
     Name: PE1_t10
     Bandwidth: 50000, Global Pool
  Sub-LSP to 4.4.4.4, P2MP Subgroup ID: 1, Role: head
    Path-Set ID: 0x17000005
    OutLabel : FastEthernet1/0, 16
    Next Hop : 10.12.1.2
    Explicit Route: 10.12.1.2 10.24.1.1 10.24.1.2 4.4.4.4
    Record   Route (Path):
    Record   Route (Resv): 10.24.1.1 10.24.1.2
  Sub-LSP to 5.5.5.5, P2MP Subgroup ID: 2, Role: head
    Path-Set ID: 0x17000005
    OutLabel : FastEthernet1/0, 16
    Next Hop : 10.12.1.2
    Explicit Route: 10.12.1.2 10.25.1.1 10.25.1.2 5.5.5.5
    Record   Route (Path):
    Record   Route (Resv): 10.25.1.1 10.25.1.2
  Sub-LSP to 6.6.6.6, P2MP Subgroup ID: 3, Role: head
    Path-Set ID: 0x17000005
    OutLabel : FastEthernet1/1, 16
    Next Hop : 10.13.1.2
    Explicit Route: 10.13.1.2 10.36.1.1 10.36.1.2 6.6.6.6
    Record   Route (Path):
    Record   Route (Resv): 10.36.1.1 10.36.1.2

Notice 3 sub-LSPs originating from PE1 router. Also, PE1 router will use the same label value (16) for traffic for sub-LSPs to PE4 and PE5.

Midpoint (P2 & P3)

Note below that P2 and P3 routers act as the middle-point for sub-LSPs to PE4 & PE5, and sub-LSP to PE6, respectively.

Sub-LSPs to PE4 and PE5 on P2 router

P2# show mpls traffic-eng tunnels dest-mode p2mp
P2MP TUNNELS:
P2MP SUB-LSPS:
 LSP: Source: 1.1.1.1, TunID: 10, LSPID: 25
     P2MP ID: 10, Subgroup Originator: 1.1.1.1
     Name: PE1_t10
     Bandwidth: 50000, Global Pool
  Sub-LSP to 4.4.4.4, P2MP Subgroup ID: 1, Role: midpoint
    Path-Set ID: 0xD2000005
    InLabel  : FastEthernet1/0, 16
    Prev Hop : 10.12.1.1
    OutLabel : FastEthernet1/1, 16
    Next Hop : 10.24.1.2
    Explicit Route: 10.24.1.2 4.4.4.4
    Record   Route (Path): 10.12.1.1
    Record   Route (Resv): 10.24.1.2
  Sub-LSP to 5.5.5.5, P2MP Subgroup ID: 2, Role: midpoint
    Path-Set ID: 0xD2000005
    InLabel  : FastEthernet1/0, 16
    Prev Hop : 10.12.1.1
    OutLabel : FastEthernet2/0, 16
    Next Hop : 10.25.1.2
    Explicit Route: 10.25.1.2 5.5.5.5
    Record   Route (Path): 10.12.1.1
    Record   Route (Resv): 10.25.1.2

Sub-LSP to PE6 on P3 router

P3# show mpls traffic-eng tunnels dest-mode p2mp
P2MP TUNNELS:
P2MP SUB-LSPS:
 LSP: Source: 1.1.1.1, TunID: 10, LSPID: 25
     P2MP ID: 10, Subgroup Originator: 1.1.1.1
     Name: PE1_t10
     Bandwidth: 50000, Global Pool
  Sub-LSP to 6.6.6.6, P2MP Subgroup ID: 3, Role: midpoint
    Path-Set ID: 0x46000001
    InLabel  : FastEthernet1/0, 16
    Prev Hop : 10.13.1.1
    OutLabel : FastEthernet1/1, 16
    Next Hop : 10.36.1.2
    Explicit Route: 10.36.1.2 6.6.6.6
    Record   Route (Path): 10.13.1.1
    Record   Route (Resv): 10.36.1.2

Tailend (PE4, PE5 & PE6)

Since PE4, PE5 and PE6 routers are the egress routers for this P2MP LSP, they are the tailend routers. Note that all tailend routers advertise unreserved label (label value higher than 15) to their upstream routers rather than explicit-null or implicit-null.

Sub-LSP to PE4 on PE4 router

PE4# show mpls traffic-eng tunnels dest-mode p2mp
P2MP TUNNELS:
P2MP SUB-LSPS:
 LSP: Source: 1.1.1.1, TunID: 10, LSPID: 25
     P2MP ID: 10, Subgroup Originator: 1.1.1.1
     Name: PE1_t10
     Bandwidth: 50000, Global Pool
  Sub-LSP to 4.4.4.4, P2MP Subgroup ID: 1, Role: tail
    Path-Set ID: 0xB7000005
    InLabel  : FastEthernet1/0, 16
    Prev Hop : 10.24.1.1
    OutLabel :  -
    Explicit Route:  NONE
    Record   Route (Path): 10.24.1.1 10.12.1.1
    Record   Route (Resv):  NONE

Sub-LSP to PE5 on PE5 router

PE5# show mpls traffic-eng tunnels dest-mode p2mp
P2MP TUNNELS:
P2MP SUB-LSPS:
 LSP: Source: 1.1.1.1, TunID: 10, LSPID: 25
     P2MP ID: 10, Subgroup Originator: 1.1.1.1
     Name: PE1_t10
     Bandwidth: 50000, Global Pool
  Sub-LSP to 5.5.5.5, P2MP Subgroup ID: 2, Role: tail
    Path-Set ID: 0xF6000003
    InLabel  : FastEthernet1/0, 16
    Prev Hop : 10.25.1.1
    OutLabel :  -
    Explicit Route:  NONE
    Record   Route (Path): 10.25.1.1 10.12.1.1
    Record   Route (Resv):  NONE

Sub-LSP to PE6 on PE6 router

PE6# show mpls traffic-eng tunnels dest-mode p2mp
P2MP TUNNELS:
P2MP SUB-LSPS:
 LSP: Source: 1.1.1.1, TunID: 10, LSPID: 25
     P2MP ID: 10, Subgroup Originator: 1.1.1.1
     Name: PE1_t10
     Bandwidth: 50000, Global Pool
  Sub-LSP to 6.6.6.6, P2MP Subgroup ID: 3, Role: tail
    Path-Set ID: 0x91000001
    InLabel  : FastEthernet1/0, 16
    Prev Hop : 10.36.1.1
    OutLabel :  -
    Explicit Route:  NONE
    Record   Route (Path): 10.36.1.1 10.13.1.1
    Record   Route (Resv):  NONE

Bandwidth Reservation

One of the advantages of P2MP LSP is bandwidth efficiency. This can be proved here. Note below the output from PE1 router. It shows that PE1 router reserved 50Mbps (tunnel bandwidth) on both its outgoing interfaces (Fa1/0 and Fa1/1) although there are 3 sub-LSP originating from it- 2 from Fa1/0 and 1 from Fa1/1. The reason for this behavior is due to Shared-Explicit (SE) style of bandwidth reservation. Hence, PE1 knows that although PE4 and PE5 are on different (sub-)LSPs, they form a part of the same LSP. Thus it avoids double-booking of the link.

Bandwidth reservation on PE1 router

PE1# show ip rsvp interface
interface    rsvp       allocated  i/f max  flow max sub max
Fa1/0        ena        50M        75M      75M      0
Fa1/1        ena        50M        75M      75M      0

Also, on P2 router, note that it reserves 50Mbps on two outgoing interfaces Fa1/1 and Fa2/0 connecting to egress routers PE4 and PE5 resp.

Bandwidth reservation on P2 router

P2# show ip rsvp interface
interface    rsvp       allocated  i/f max  flow max sub max
Fa1/0        ena        0          75M      75M      0
Fa1/1        ena        50M        75M      75M      0
Fa2/0        ena        50M        75M      75M      0

Forwarding Traffic over P2MP Tunnel

Autoroute feature of MPLS TE is not supported over P2MP LSP. Hence, static routing or vrf-PIM (for customer multicast traffic) must be configured to forward traffic over P2MP LSP.