NG MVPN Junos
NG MVPN Junos
NG MVPN Junos
Table of Contents
Executive Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Example Network Topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
NG MVPN Concepts and Terminology. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Route Distinguisher and VRF Route Target Extended Community . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
C-Multicast Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
BGP MVPNs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Sender and Receiver Site Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
P-tunnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
NG MVPN Control Plane. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
BGP MCAST-VPN Address Family and Route Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Intra-AS MVPN Membership Discovery (Type 1 Routes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Inter-AS MVPN Membership Discovery (Type 2 Routes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Selective P-Tunnels (Type 3 and Type 4 Routes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Source Active AD Routes (Type 5 Routes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
C-multicast Route Exchange (Type 6 and Type 7 Routes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
PMSI Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
VRF Route Import and Source AS Extended Communities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Distribution of C-multicast Routes towards VPN Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Constructing C-multicast Routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Eliminating PE-PE Distribution of (C-*, C-G) State Using Source Active AD Routes . . . . . . . . . . . . . . . . . . . . . . . . 14
Receiving C-multicast Routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
NG MVPN Data Plane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Inclusive P-tunnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
PMSI Attribute of Inclusive P-tunnels Signaled by PIM-SM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
PMSI Attribute of Inclusive P-tunnels Signaled by RSVP-TE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Selective P-tunnels (S-PMSI AD/Type 3 and Leaf AD/Type 4 Routes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
JUNOS NG MVPNs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Turning on NG MVPN Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Generating NG MVPN VRF Import and Export Policies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Policies that Support Unicast BGP-MPLS VPN Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Policies that Support NG MVPN Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Generating src-as and rt-import Communities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Originating Type 1 Intra-AS AD Routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Attaching RT Community to Type 1 Routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Attaching PMSI Attribute to Type 1 Routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Sender-Only and Receiver-Only Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Signaling P-tunnels and Data Plane Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
P-tunnels Signaled by PIM (Inclusive) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Table of Figures
Figure 1: Example NG MVPN network. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Figure 2: Intra-AS I-PMSI AD route type MCAST-VPN NLRI format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Figure 3: PMSI tunnel attribute format. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Figure 4: Attaching a special and dynamic RT to C-multicast mvpn routes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Figure 5: Example of C-multicast mvpn route distribution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Figure 6: C-multicast route type MCAST-VPN NLRI format. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Figure 7: Source active AD route type MCAST-VPN NLRI format. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Figure 8: S-PMSI AD route type MCAST-VPN NLRI format. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Figure 9: Leaf AD route type MCAST-VPN NLRI format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Figure 10: JUNOS NG MVPN routing flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Figure 11: RSVP-TE P2MP session object format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Figure 12: Enabling double route lookup on VPN packet headers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
List of Tables:
Table 1: NG MVPN Control Plane Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Table 2: NG MVPN BGP Route Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Table 3: Distinction Between rt-import Attached to VPN-IPv4 Routes and RT Attached to C-multicast
mvpn Routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Table 4: Tunnel Types Supported by PMSI Tunnel Attribute. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Table 5: Automatically Generated Routing Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Executive Summary
This white paper provides an overview of next-generation multicast VPNs (NG MVPNs) and describes how NG MVPN
control and data plane protocols work together in Juniper Networks JUNOS Software. The target audience of this
document is network architects, engineers, and operators. The paper consists of two main parts.
Overview of NG MVPNsThese sections include background material of how NG MVPNs work in general: concepts,
terminology, control plane, and data plane.
JUNOS NG MVPNsThese sections detail how Juniper Networks routers operate and interact with each other to set
up NG MVPN routing and forwarding state in the network.
Scope
The scope of this paper includes these JUNOS features.
Intra-AS MVPN membership discovery via BGP MCAST-VPN address family
BGP C-multicast route exchange when the PE-CE protocol is PIM-SM (SSM), PIM-SM (ASM), PIM-DM or IGMP
(source-tree-only mode)
IP/GRE based inclusive P-tunnels signaled by PIM-SM (ASM)
MPLS inclusive P-tunnels signaled by RSVP-TE P2MP LSPs
MPLS selective P-tunnels signaled by RSVP-TE P2MP LSPs
In addition to features identified in this paper, JUNOS Software also supports these features.
NG MVPN applications: extranet with P2MP TE
IP/GRE-based inclusive P-tunnels signaled by PIM-SM (SSM)
NG MVPN applications: hub and spoke
It is assumed that you are familiar with the following drafts and RFCs.
BGP Encodings and Procedures for Multicast in MPLS/BGP IP VPNs (draft-ietf-l3vpn-2547bis-mcast-bgp)
Multicast in MPLS/BGP IP VPNs (draft-ietf-l3vpn-2547bis-mcast)
BGP/MPLS IP Virtual Private Networks (RFC 4364)
Protocol Independent Multicast - Sparse Mode: Protocol Specification (RFC 4601)
Mandatory Features in a Layer 3 Multicast BGP/MPLS VPN Solution (draft-ietf-l3vpn-mvpn-considerations)
Introduction
Layer 3 BGP-MPLS VPNs are widely deployed in todays networks worldwide. Multicast applications, such as IPTV,
are rapidly gaining popularity as is the number of networks with multiple, media-rich services merging over a shared
MPLS infrastructure. As such, the demand for delivering multicast service across a BGP-MPLS infrastructure in a
scalable and reliable way is also increasing.
RFC 4364 describes protocols and procedures for building unicast BGP-MPLS VPNs. However, there is no framework
specified in the RFC for provisioning multicast VPN (MVPN) services. Up to now, MVPN traffic has been overlaid
on top of a BGP-MPLS network using a virtual LAN model based on Draft Rosen. Using the Draft Rosen approach,
service providers were faced with control and data plane scaling issues of an overlay model and the maintenance of
two routing/forwarding mechanisms: one for VPN unicast and one for VPN multicast service. For more information
on the limitations of Draft Rosen, see draft-rekhter-mboned-mvpn-deploy.
As a result, the IETF Layer 3 VPN working group published an IETF draft (2547bis-mcast) that outlines the new
architecture for NG MVPNs, as well as an accompanying draft (2547bis-mcast-bgp) that proposes a BGP control
plane for MVPNs. In turn, Juniper Networks delivered the industrys first implementation of BGP NG MVPNs in 2007.
P1
PE3
10.1.1.1
10.1.1.10
10.1.1.3
so-0/0/1
fe-0/2/3
fe-0/2/0
so-0/0/3
so-0/0/3
vpna
RD 10.1.1.1:1
RT traget:10:1
C-RP(local) 10.12.53.1
CE1
vpna
RD 10.1.1.3:1
RT traget:10:1
PE2
10.1.1.2
vpna
RD 10.1.1.2:1
RT traget:10:1
CE2
SITE 1
so-0/2/0
SITE 2
SOURCE
C-S 192.168.1.2
C-G1 224.1.1.1
C-G2 232.1.1.1
CE3
SITE 3
(192.168.1.2, 232.1.1.1)
RECEIVER 1
(*, 224.1.1.1)
RECEIVER 2
C-Multicast Routing
Customer multicast (C-multicast) routing information exchange refers to the distribution of customer PIM
(C-PIM) join/prune messages received from local customer edge (CE) routers to other PEs (towards the VPN
multicast source).
BGP MVPNs
BGP MVPNs use BGP as the control plane protocol between PEs for MVPNs, including the exchange of C-multicast
routing information. The support of BGP as a PE-PE protocol for exchanging C-multicast routes is mandated by
draft-ietf-l3vpn-mvpn-considerations. The use of BGP for distributing C-multicast routing information is closely
modeled after its highly successful counterpart of VPN unicast route distribution. Using BGP as the control plane
protocol allows service providers to take advantage of this widely deployed, feature-rich protocol. It also enables
service providers to leverage their knowledge and investment in managing BGP-MPLS VPN unicast service to offer
VPN multicast services.
P-tunnels
The 2547bis-mcast draft defines P-tunnels as the transport mechanisms used for forwarding VPN multicast traffic
across service provider networks. Different tunneling technologies, such as GRE and MPLS, can be used to create
P-tunnels. P-tunnels can be signaled by a variety of signaling protocols. This paper describes only PIM-SM (ASM)
signaled IP/GRE P-tunnels and RSVP-TE signaled MPLS P-tunnels.
In BGP MVPNs, the sender PE distributes information about the P-tunnel in a new BGP attribute called PMSI
(provider multicast service interface). By default, all receiver PEs join and become the leaves of the P-tunnel rooted
at the sender PE.
P-tunnels can be inclusive or selective. An inclusive P-tunnel (I-PMSI P-tunnel) enables a PE router that is in the
sender site set of an MVPN to transmit multicast data to all PE routers that are members of that MVPN. A selective
P-tunnel (S-PMSI P-tunnel) enables a PE router that is in the sender site set of an MVPN to transmit multicast data
to a subset of the PEs.
Description
MVPN autodiscovery
A PE router discovers the identity of the other PE routers that participate in the
same MVPN.
Distribution of P-tunnel
information
A sender PE router advertises the type and identifier of the P-tunnel that it will be
using for transmitting VPN multicast packets.
Type
Name
Description
Membership
autodiscovery routes for
inclusive P-tunnels
S-PMSI AD route
Leaf AD route
C-multicast routes
+-----------------------------------+
| Originating Routers IP Address
+-----------------------------------+
Figure 2: Intra-AS I-PMSI AD route type MCAST-VPN NLRI format
Field
Description
RD
Originating Routers IP
Address
Set to the IP address of the router originating this route, which is typically the
primary loopback address of the PE router.
Type
PE1 RD
PE1 lo0
Similarly, in Figure 1, PE2 and PE3 originate the following intra-AS AD routes.
1:10.1.1.2:1:10.1.1.2
1:10.1.1.3:1:10.1.1.3
PMSI Attribute
The PMSI attribute (Figure 3) carries information about the P-tunnel. In an NG MVPN network, the sender PE router
sets up the P-tunnel, and therefore is responsible for originating the PMSI attribute. The PMSI attribute can be
attached to Type 1, Type 2, or Type 3 routes.
+-----------------------------------+
| Flags (1 octet)
+-----------------------------------+
| Tunnel Type (1 octet)
+-----------------------------------+
| MPLS Label (3 octets)
+-----------------------------------+
| Tunnel Identifier (variable)
+-----------------------------------+
Figure 3: PMSI tunnel attribute format
Field
Description
Flags
Currently has only one flag specified: Leaf Information Required. This flag is
used for S-PMSI P-tunnel setup.
Tunnel Type
Identifies the tunnel technology used by the sender. Currently there are seven types
of tunnels supported.
MPLS Label
Used when the sender PE allocates the MPLS labels (also called upstream label
allocation). This technique is described in RFC 5331 and is outside the scope of this
paper.
Tunnel Identifier
Uniquely identifies the tunnel. Its value depends on the value set in the tunnel type
field.
VRF route
import community
PE1 lo0
A unique number
assigned to vpna
src-as:65000:0
Source AS
community
Must be 0
Local AS
Example: In Figure 1, PE1 originates the following rt-import and src-as extended communities.
Similarly, in Figure 1, PE2 and PE3 originate the following rt-import and src-as extended communities.
rt-import:10.1.1.2:62 src-as:65000:0
rt-import:10.1.1.3:63 src-as:65000:0
10
Receiver PE advertises
C-multicast mvpn routes
with the RT = rt-import
attached to C-S or C-RP
Sender PE imports
C-multicast mvpn routes if
RT = sender PE rt-import
The RT attached to C-multicast routes is also referred to as C-multicast import RT and should not to be confused with
rt-import (Table 3). Note that C-multicast mvpn routes differ from other mvpn routes in one essential way: they
carry a dynamic RT whose value depends on the identity of the active sender PE at a given time and may change if
the active PE changes.
A PE router that receives a local C-join determines the identity of the active sender PE router by performing a unicast
route lookup for the C-S or C-RP in the unicast VRF table. If there is more than one route, the receiver PE chooses a
single forwarder PE. The procedures used for choosing a single forwarder are outlined in 2547bis-mcast-bgp and are
not covered in this paper.
After the active sender (upstream) PE is selected, the receiver PE constructs the C-multicast mvpn route
corresponding to the local C-join.
Once the C-multicast route is constructed, the receiver PE needs to attach the correct RT to this route targeting the
active sender PE. As mentioned, each PE router creates a unique VRF route import (rt-import) community and
attaches it to the VPN-IPv4 routes. When the receiver PE does a route lookup for C-S or C-RP, it can extract the value
of the rt-import associated with this route and set the value of C-multicast import RT to the value of rt-import
(Figure 5).
On the active sender PE, C-multicast routes are imported only if they carry an RT whose value is the same as the
rt-import that the sender PE generated.
11
Step 2
Step 3
Step 4
PE2 and PE3 install the VPN routes they learned from PE1 in their vpna unicast route tables.
Step 2
Step 3
PE2 nds the rt-import community attached to the C-S received in Step 192.168.1.2).
1(
rt-import:10.1.1.1:64
Step 4
Step 5
PE1 compares the RT attached to the C-multicast mvpn routes to the rt-import it created.
RT received: target:10.1.1.1:64
rt-import created by PE1: rt-import:10.1.1.1:64
Step 2
If there is a match in Step 1, the C-multicast mvpn route is imported into the VRF table and
translated back into a C-join message. It can now be processed as a normal C-join.
Step 3
The check in Step 1 happens on PE3 as well, but since PE3s rt-import (10.1.1.3:63) is different
than the RT attached to the C-multicast mvpn route (10.1.1.1:64), PE3 discards the route.
Figure 5: Example of C-multicast mvpn route distribution
12
+-----------------------------------+
| Source AS (4 octets)
+-----------------------------------+
| Multicast Source Length (1 octet) |
+-----------------------------------+
| Multicast Source (variable)
+-----------------------------------+
| Multicast Group Length (1 octet)
+-----------------------------------+
| Multicast Group (variable)
+-----------------------------------+
Figure 6: C-multicast route type MCAST-VPN NLRI format
Field
Description
RD
Set to the RD of the C-S or C-RP (the RD associated with the upstream PE router).
Source AS
Set to the value found in the src-as community of the C-S or C-RP.
Set to 32 for IPv4 and to 128 for IPv6 C-S or C-RP IP addresses.
Multicast Source
Multicast Group
This same structure is used for encoding both Type 6 and Type 7 routes with two differences.
The first difference is the value used for the multicast source field. For Type 6 routes, this field is set to the IP
address of the C-RP configured. For Type 7 routes, this field is set to the IP address of the C-S contained in the
(C-S, C-G) message.
The second difference is the value used for RD. For Type 6 routes, this field is set to the RD that was attached to
the IP address of the C-RP. For Type 7 routes, this field is set to the RD that was attached to IP address of the C-S.
Example: In Figure 1, PE2 creates the following Type 7 route in response to receiving (C-S, C-G) of (192.168.1.2,
232.1.1.1). C-S is reachable via PE1.
7:10.1.1.1:1:65000:32:192.168.1.2:32:232.1.1.1
Type
Source AS
Active sender PE
RD (towards C-S)
C-S mask
C-S
C-G
C-G mask
13
Example: In Figure 1, PE3 creates the following Type 6 route in response to receiving (C-*, C-G) of
(*, 224.1.1.1). C-RP is reachable via PE1.
6:10.1.1.1:1:65000:32:10.12.53.1:32:224.1.1.1
Type
Source AS
Active sender PE
RD (towards C-RP)
C-S mask
C-RP
C-G
C-G mask
Eliminating PE-PE Distribution of (C-*, C-G) State Using Source Active AD Routes
PE routers must maintain additional state when the C-multicast routing protocol is PIM-SM in ASM mode. This
requirement is because with ASM, the receivers first join the shared tree rooted at C-RP (called C-RP Tree or C-RPT).
However, as the VPN multicast sources become active, receivers learn the identity of the sources and join the tree
rooted at the source (called customer shortest-path tree or C-SPT). The receivers then send a prune message to
C-RP to stop the traffic coming through the shared tree for the group that they joined to C-SPT. The switch from
C-RPT to C-SPT is a complicated process requiring additional state.
The 2547bis-mcast draft specifies optional procedures that completely eliminate the need for joining to C-RPT. These
procedures require PE routers to keep track of all active VPN sources using one of two options. One option is to colocate
C-RP on one of the PE routers. The second option is to use MSDP between one of the PEs and the customer C-RP.
In this approach, a PE router that receives a local (C-*, C-G) join creates a Type 6 route, but does not advertise
the route to the remote PEs until it receives information about an active source. The PE router acting as the C-RP
(or that learns about active sources via MSDP) is responsible for originating a Type 5 route. A Type 5 route carries
information about the active source and the group addresses. The information contained in a Type 5 route is
enough for receiver PEs to join C-SPT by originating a Type 7 route towards the sender PE, completely skipping the
advertisement of Type 6 route that was created when a C-join was received.
Figure 7 shows the format of source active (SA) AD route.
+-----------------------------------+
| RD (8 octets)
+-----------------------------------+
| Multicast Source Length (1 octet) |
+-----------------------------------+
| Multicast Source (variable)
+-----------------------------------+
| Multicast Group Length (1 octet)
+-----------------------------------+
| Multicast Group (variable)
+-----------------------------------+
Figure 7: Source active AD route type MCAST-VPN NLRI format
14
Field
Description
RD
Multicast Source
Set to the IP address of the C-S that is actively transmitting data to C-G.
Multicast Group
Example: In Figure 1, PE1 originates the following Type 5 route in response to receiving register messages
from CE1 (since it is the C-RP).
5:10.1.1.1:1:32:192.168.1.2:32:224.1.1.1
Type
C-S Mask
Originating router
(PE1) RD
C-S
C-G
C-G mask
Example: In Figure 1, PE3 originates the following Type 7 route in response to receiving (*, 224.1.1.1) C-join and
the Type 5 route.
7:10.1.1.1:1:65000:32:192.168.1.2:32:224.1.1.1
Type
Source AS
Active sender
PE (PE1) RD
C-S mask
C-S
C-G
C-G mask
15
Description
PIM-SSM tree
PIM-SM tree
PIM-Bidir tree
Ingress replication
Inclusive P-tunnels
PMSI Attribute of Inclusive P-tunnels Signaled by PIM-SM
When the tunnel type field of the PMSI attribute is set to 4 (PIM-SM Tree), the tunnel identifier field contains
<Sender Address, P-Multicast Group Address>. The sender address field is set to the router-id (rid)
of the sender PE. The P-multicast group address is set to a multicast group address from the service providers
P-multicast address space and uniquely identifies the VPN. A receiver PE router that receives an intra-AS AD route
with a PMSI attribute whose tunnel type is PIM-SM is required to join the P-tunnel.
Example: In Figure 1, if the service provider had deployed PIM-SM P-tunnels (instead of RSVP-TE P-tunnels) PE1
would have advertised the following PMSI attribute.
PMSI: 0:PIM-SM:label[0:0:0]:Sender10.1.1.1 Group 239.1.1.1
16
+-----------------------------------+
| RD (8 octets)
+-----------------------------------+
| Multicast Source Length (1 octet) |
+-----------------------------------+
| Multicast Source (variable)
+-----------------------------------+
| Multicast Group Length (1 octet)
+-----------------------------------+
| Multicast Group (variable)
+-----------------------------------+
Figure 8: S-PMSI AD route type MCAST-VPN NLRI format
Field
Description
RD
Multicast Source
Multicast Group
The S-PMSI AD (Type 3) route carries a PMSI attribute similar to the PMSI attribute carried with intra-AS AD
(Type 1) routes. The Flags field of the PMSI attribute carried by the S-PMSI AD route is set to Leaf Information
+-----------------------------------+
| Route Key (variable)
+-----------------------------------+
| Originating Routers IP Address
+-----------------------------------+
Required. This flag signals receiver PE routers to originate a Type 4 leaf AD route (Figure 9) to join the selective
P-tunnel if they have active receivers.
Figure 9: Leaf AD route type MCAST-VPN NLRI format
Field
Description
Route Keu
Originating Routers IP
Address
Set to the IP address of the PE originating the leaf AD route, typically the primary
loopback address.
17
JUNOS NG MVPNs
Juniper introduced the industrys first implementation of BGP NG MVPNs. Refer to Figure 10 for a summary of a
JUNOS NG MVPN routing flow.
PE1
PE2/PE3
Step 1: PE-PE IBGP sessions with INET-VPN and MCAST-VPN NLRIs are established.
Step 2: PE-PE VPN-IPv4 routes carrying RT, rt-import, and src-as are exchanged.
Step 3: PE-PE Type 1 routes are exchanged.
PE1
PE2/PE3
Step 4: PE1 attaches PMSI attribute to Type 1 route.
Step 5: PE1 signals P-tunnel if RSVP-TE, PE1 signals P2MP LSP by sending RSVP
PATH messages
Step 6: PE2 and PE3 join the P-tunnel.
CE2/CE3
PE2/PE3
Step 7: Receivers come online. C-join messages are propagated to PE2 and PE3.
Step 8: PE2 and PE3 do a route look up for C-S and C-RP respectively, and extract
the RD, rt-import, src-as associated with each route.
Step 9: PE2 originates Type 7 route carrying RT (value matching rt-import); PE3
creates Type 6 route, but does not advertise it.
CE1/PE2/PE
PE1
Step 10: Source comes online. Register messages are sent to PE1. PE1 originates a
Type 5 route.
Step 11: PE3 originates Type 7 route based on Type 5 and Type 6.
PE1
Step 12: PE1 compares local rt-import to RT received with Type 7 routes.
Step 13: PE1 imports Type 7 routes.
Step 14: PE1 passes C-join messages to C-PIM.
18
Description
bgp.l3vpn.0
bgp.mvpn.0
<routing-instance-name>.inet.0 Populated by local and remote VPN unicast routes. The local VPN
routes are typically learned from local CE routers via protocols
like BGP, OSPF, and RIP, or via a static configuration. The remote
VPN routes are imported from the bgp.l3vpn.0 table if their RT
matches one of the import RTs configured for the VPN. When remote
VPN routes are imported from the bgp.l3vpn.0 table, their RD is
removed, leaving them as regular unicast IPv4 addresses.
<routing-instance-name>.mvpn.0 Populated by local and remote mvpn routes. The local mvpn routes
are typically the locally originated routes, such as Type 1 intra-AS AD
routes, or Type 7 C-multicast routes. The remote mvpn routes are
imported from the bgp.mvpn.0 table based on their RT. The import
RT used for accepting mvpn routes into the <routing-instancename>.mvpn.0 table is different for C-multicast mvpn routes (Type 6
and Type 7) versus non-C-multicast mvpn routes (Type 1 Type 5).
19
accept
20
Example: In Figure 1, PE1 creates the following export policy. PE1 adds rt-import:10.1.1.1:64 and
src-as:65000:0 communities to unicast VPN routes through this policy.
user@PE1> show policy __vrf-mvpn-export-inet-vpna-internal__
Policy __vrf-mvpn-export-inet-vpna-internal__:
Term unnamed:
then community + __vrf-mvpn-community-rt_import-vpna-internal__ [rt-import:10.1.1.1:64
] community + __vrf-mvpn-community-src_as-vpna-internal__ [src-as:65000:0 ] accept
21
22
JUNOS Software creates two additional internal policies in response to configuring multicast RTs. These polices
are applied to non-C-multicast mvpn routes during import and export decisions. Multicast VRF internal import and
export polices follow a naming convention similar to unicast VRF import and export policies. The contents of these
polices are also similar to policies applied to unicast VPN routes.
Multicast VRF import policy: __vrf-mvpn-import-target-<routing-instance-name>-internal__
Multicast VRF export policy: __vrf-mvpn-export-target-<routing-instance-name>-internal__
Example: In Figure 1, PE1 creates the following internal mvpn policies if import-target and export-target
are configured to be target:10:2.
user@PE1> show policy __vrf-mvpn-import-target-vpna-internal__
Policy __vrf-mvpn-import-target-vpna-internal__:
Term unnamed:
from community __vrf-mvpn-community-import-vpna-internal__ [target:10:2 ]
then accept
Term unnamed:
then reject
user@PE1> show policy __vrf-mvpn-export-target-vpna-internal__
Policy __vrf-mvpn-export-target-vpna-internal__:
Term unnamed:
then community + __vrf-mvpn-community-export-vpna-internal__ [target:10:2 ] accept
Tunnel type
Originating routers
IP address
P-group address
If the P-tunnel configured is RSVP-TE, then the PMSI attribute carries the RSVP-TE P2MP Session Object. This
P2MP Session Object is used as the identifier for the parent P2MP LSP and contains the following fields (Figure 11).
23
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
P2MP ID
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
MUST be zero
Tunnel ID
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Extended Tunnel ID
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 11: RSVP-TE P2MP session object format
In JUNOS Software, P2MP ID and Extended Tunnel ID fields are set to the rid of the sender PE. The Tunnel
ID is set to the Port number used for the P2MP RSVP session that is unique for the length of the RSVP session.
Example: In Figure 1, PE1 originates the following PMSI attribute. C-Type 13 (Session_13) indicates that this is an
IPv4 P2MP LSP as defined in RFC 4875. The P2MP ID and Extended Tunnel ID fields are set to PE1s loopback
address (10.1.1.1). The Tunnel ID is set to 6574, which is the Port number of the RSVP session originated
from PE1 to PE2 and PE3.
PMSI: Flags 0:RSVP-TE:label[0:0:0]:Session_13[10.1.1.1:0:6574:10.1.1.1]
Tunnel type
No MPLS label
Example: In Figure 1, PE1 signals the following RSVP sessions to PE2 and PE3 (using Port number 6574). In this
example, we see that PE1 is signaling a P2MP LSP named 10.1.1.1:65535:mvpn:vpna with two sub-LSPs. Both
sub-LSPs 10.1.1.3:10.1.1.1:65535:mvpn:vpna and 10.1.1.2:10.1.1.1:65535:mvpn:vpna. use the
same RSVP Port number (6574) as the parent P2MP LSP.
user@PE1> show rsvp session p2mp detail
Ingress RSVP: 2 sessions
P2MP name: 10.1.1.1:65535:mvpn:vpna, P2MP branch count: 2
10.1.1.3
From: 10.1.1.1, LSPstate: Up, ActiveRoute: 0
LSPname: 10.1.1.3:10.1.1.1:65535:mvpn:vpna, LSPpath: Primary
P2MP LSPname: 10.1.1.1:65535:mvpn:vpna
Suggested label received: -, Suggested label sent: Recovery label received: -, Recovery label sent: 299968
Resv style: 1 SE, Label in: -, Label out: 299968
Time left:
-, Since: Wed May 27 07:36:22 2009
Tspec: rate 0bps size 0bps peak Infbps m 20 M 1500
Port number: sender 1 receiver 6574 protocol 0
PATH rcvfrom: localclient
Adspec: sent MTU 1500
Path MTU: received 1500
PATH sentto: 10.12.100.6 (fe-0/2/3.0) 27 pkts
RESV rcvfrom: 10.12.100.6 (fe-0/2/3.0) 27 pkts
Explct route: 10.12.100.6 10.12.100.22
Record route: <self> 10.12.100.6 10.12.100.22
10.1.1.2
From: 10.1.1.1, LSPstate: Up, ActiveRoute: 0
LSPname: 10.1.1.2:10.1.1.1:65535:mvpn:vpna, LSPpath: Primary
24
25
Example: In Figure 1, PE1 creates the following mt subinterface. The logical interface number is 32768, indicating
that this sub-unit will be used for GRE encapsulation.
user@PE1> show interfaces mt-0/1/0 terse
Interface
Admin Link Proto
mt-0/1/0
up
up
mt-0/1/0.32768
up
up
inet
inet6
Local
Remote
Example: In Figure 1, PE2 creates the following mt subinterface. The logical interface number is 49152, indicating
that this sub-unit will be used for GRE de-encapsulation.
user@PE2> show interfaces mt-0/1/0 terse
Interface
Admin Link Proto
mt-0/1/0
up
up
mt-0/1/0.49152
up
up
inet
inet6
Local
Remote
On the VRF side of the sender PE, C-PIM installs a Local Source entry in its C-PIM database for the active local
VPN source. The OIL of this entry points to Pseudo-MVPN, indicating that the downstream interface points to the
receivers in the NG MVPN network.
26
Example: In Figure 1, PE1 installs the following entry in its C-PIM database.
user@PE1> show pim join extensive instance vpna 224.1.1.1
Instance: PIM.vpna Family: INET
R = Rendezvous Point Tree, S = Sparse, W = Wildcard
Group: 224.1.1.1
Source: 192.168.1.2
Flags: sparse,spt
Upstream interface: fe-0/2/0.0
Upstream neighbor: 10.12.97.2
Upstream state: Local RP, Join to Source
Keepalive timeout: 0
Downstream neighbors:
Interface: Pseudo-MVPN
The forwarding entry corresponding to the C-PIM Local Source (or Local RP) on the sender PE router points to
the mt encapsulation subinterface as the downstream interface. This indicates that the local multicast data packets
will be encapsulated as they are passed on to the P-PIM protocol.
Example: In Figure 1, PE1 has the following multicast forwarding entry for group 224.1.1.1. The Upstream
interface is the PE-CE interface and the Downstream interface is the mt encapsulation subinterface.
user@PE1> show multicast route extensive instance vpna group 224.1.1.1
Family: INET
Group: 224.1.1.1
Source: 192.168.1.2/32
Upstream interface: fe-0/2/0.0
Downstream interface list:
mt-0/1/0.32768
Session description: ST Multicast Groups
Statistics: 7 kBps, 79 pps, 719738 packets
Next-hop ID: 262144
Upstream protocol: MVPN
Route state: Active
Forwarding state: Forwarding
Cache lifetime/timeout: forever
Wrong incoming interface notifications: 0
27
Example: In Figure 1, PE3 has the following entry in its P-PIM database. The Downstream interface points to
the GRE de-encapsulation subinterface.
user@PE3> show pim join extensive
Instance: PIM.master Family: INET
R = Rendezvous Point Tree, S = Sparse, W = Wildcard
Group: 239.1.1.1
Source: *
RP: 10.1.1.10
Flags: sparse,rptree,wildcard
Upstream interface: so-0/0/3.0
Upstream neighbor: 10.12.100.21
Upstream state: Join to RP
Downstream neighbors:
Interface: mt-1/2/0.49152
10.12.53.13 State: Join Flags: SRW
Group: 239.1.1.1
Source: 10.1.1.1
Flags: sparse,spt
Upstream interface: so-0/0/3.0
Upstream neighbor: 10.12.100.21
Upstream state: Join to Source
Keepalive timeout: 351
Downstream neighbors:
Interface: mt-1/2/0.49152
10.12.53.13 State: Join Flags: S
Timeout: Infinity
Timeout: Infinity
On the VRF side of the receiver PE, C-PIM installs a join entry in its C-PIM database. The OIL of this entry points to
the local VPN interface, indicating active local receivers. The Upstream protocol, interface, and neighbor of
this entry point to the NG-MVPN network.
Example: In Figure 1, PE3 has the following entry in its C-PIM database.
user@PE3> show pim join extensive instance vpna 224.1.1.1
Instance: PIM.vpna Family: INET
R = Rendezvous Point Tree, S = Sparse, W = Wildcard
Group: 224.1.1.1
Source: *
RP: 10.12.53.1
Flags: sparse,rptree,wildcard
Upstream protocol: BGP
Upstream interface: Through BGP
Upstream neighbor: Through MVPN
Upstream state: Join to RP
Downstream neighbors:
Interface: so-0/2/0.0
10.12.87.1 State: Join Flags: SRW
Timeout: Infinity
Group: 224.1.1.1
Source: 192.168.1.2
Flags: sparse
Upstream protocol: BGP
Upstream interface: Through BGP
28
The forwarding entry corresponding to the C-PIM entry on the receiver PE uses the mt de-encapsulation
subinterface as the Upstream interface.
Example: In Figure 1, PE3 installs the following multicast forwarding entry for the local receiver.
user@PE3> show multicast route extensive instance vpna group 224.1.1.1
Family: INET
Group: 224.1.1.1
Source: 192.168.1.2/32
Upstream interface: mt-1/2/0.49152
Downstream interface list:
so-0/2/0.0
Session description: ST Multicast Groups
Statistics: 1 kBps, 10 pps, 149 packets
Next-hop ID: 262144
Upstream protocol: MVPN
Route state: Active
Forwarding state: Forwarding
Cache lifetime/timeout: forever
Wrong incoming interface notifications: 0
29
30
*[VPN/0] 03:03:17
to table vpna.inet.0, Pop
In JUNOS Software, VPN multicast routing entries are stored in the <routing-instance-name>.inet.1 table, which
is where the second route lookup occurs. In the example above, even though vpna.inet.0 is listed as the
routing table where the second lookup happens after the Pop operation, internally the lookup is pointed to the
vpna.inet.1 table.
Example:
In Figure 1, PE3 contains the following entry in its VPN multicast routing table.
31
Example: In Figure 1, PE3 contains the following VPN multicast forwarding entry corresponding to the multicast
routing entry for the Local join. The Upstream interface points to lsi.0 and the Downstream interface
(OIL) points to so-0/2/0.0 (towards local receivers). The Upstream protocol is MVPN because the VPN
multicast source is reachable via the NG-MVPN network. The lsi.0 interface is similar to the mt interface used
when PIM-based P-tunnels are used. The lsi.0 interface is used for removing the top MPLS header.
user@PE3> show multicast route extensive instance vpna
Family: INET
Group: 224.1.1.1
Source: 192.168.1.2/32
Upstream interface: lsi.0
Downstream interface list:
so-0/2/0.0
Session description: ST Multicast Groups
Statistics: 1 kBps, 10 pps, 3472 packets
Next-hop ID: 262144
Upstream protocol: MVPN
Route state: Active
Forwarding state: Forwarding
Cache lifetime/timeout: forever
Wrong incoming interface notifications: 0
Family: INET6
The requirement for a double route lookup on the VPN packet header requires two additional configuration
statements on the egress PE routers when P-tunnels are signaled by RSVP-TE.
First, since the top MPLS label used for the P2MP sub-LSP is actually tied to the VRF table on the egress PE routers,
the penultimate-hop popping (PHP) operation must be disabled. PHP allows the penultimate router (router before
the egress PE) to remove the top MPLS label. PHP works well for VPN unicast data packets because they typically
carry two MPLS labels: one for the VPN and one for the transport LSP. Once the LSP label is removed, unicast VPN
packets still have a VPN label that can be used for determining the VPN to which the packets belong. VPN multicast
data packets, on the other hand, carry only one MPLS label that is directly tied to the VPN. Therefore, the MPLS label
carried by VPN multicast packets must be preserved until the packets reach the egress PE. Normally, PHP must be
disabled through manual configuration. To simplify configuration, PHP is disabled by default on Juniper PE routers
when you configure the protocols mvpn statement under the routing-instance hierarchy. You do not need to
explicitly disable it.
Second, in JUNOS Software, VPN labels associated with a VRF table can be allocated in two ways.
Allocate a unique label for each VPN next hop (PE-CE interface). This is the default behavior.
Allocate one label for the entire VRF table, which requires additional configuration. Only allocating a label for
the entire VRF table allows a second lookup on the VPN packets header. Therefore, PE routers supporting NGMVPN services must be configured to allocate labels for the VRF table. There are two ways to do this (Figure 12).
-- One is by configuring a special tunnel interface called vt under the [routing-instances <routinginstance-name> interfaces] hierarchy, which requires a Tunnel PIC.
-- The second is by configuring the vrf-table-label statement under the [routing-instances
<routing-instance-name>] hierarchy, which does not require a Tunnel PIC.
Both of these options enable an egress PE to perform two route lookups, however there are some differences in the
way in which the second lookup is done.
If vt is configured, the allocated label is installed in the mpls table with a Pop operation and a forwarding next hop
pointing to the vt interface.
32
2. Congure label
allocation per
VPN table
Congure vt
Congure
vrf-table-label
Example: In Figure 1, PE2 uses a vt configuration and installs the following entry in its mpls table. The label
associated with the P2MP sub-LSP (299840) is installed with a Pop and a forward operation with vt-0/1/0.0
being the next hop. VPN multicast packets received from the core exit the vt-0/1/0.0 interface without their MPLS
header and the egress PE2 does a second lookup on the packet header in the vpna.inet.1 table.
user@PE2> show route table mpls label 299840
mpls.0: 9 destinations, 9 routes (9 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
299840
*[VPN/0] 00:00:22
> via vt-0/1/0.0, Pop
If the vrf-table-label is configured, the allocated label is installed in the mpls table with a Pop operation and
the forwarding entry points to the <routing-instance-name>.inet.0 table (which internally triggers the
second lookup to be done in the <routing-instance-name>.inet.1 table).
Example: In Figure 1, PE3 uses vrf-table-label configuration and installs the following entry in its mpls table.
user@PE3> show route table mpls label 16
mpls.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
16
*[VPN/0] 03:03:17
to table vpna.inet.0, Pop
Configuring label allocation for each VRF table affects both unicast VPN and mvpn routes. However, you can enable
per-VRF label allocation for mvpn routes only if per-VRF allocation is configured via vt. This feature is configured
via multicast and unicast keywords under the [routing-instances <routing-instance-name>
interface vt-x/y/z.0] hierarchy.
Note that configuring vrf-table-label enables per-VRF label allocation for both unicast and mvpn routes and
can not be turned off for either type of routes (it is either on or off for both).
If a PE is a bud router, meaning it has local receivers and also forwards MPLS packets received over a P2MP LSP
downstream to other P and PE routers, then there is a difference in how vrf-table-label and vt work. With
vrf-table-label configuration, the bud PE receives two copies of the packet from the penultimate router:
one to be forwarded to local receivers and the other to be forwarded to downstream P and PE routers. With vt
configuration, the PE receives a single copy of the packet.
33
RFC 4875 describes a branch node as an LSR that replicates the incoming data on to one or more outgoing
interfaces. On a branch node, the incoming data carrying an MPLS label is replicated onto one or more outgoing
interfaces that can use different MPLS labels. Branch nodes keep track of incoming and outgoing labels associated
with P2MP LSPs.
Example: In Figure 1, branch node P1 has the incoming label 300016 and outgoing labels 16 for sub-LSP
10.1.1.3:10.1.1.1:65535:mvpn:vpna (to PE3) and 299840 for sub-LSP 10.1.1.2:10.1.1.1:65535:
mvpn:vpna (to PE2).
user@P1> show rsvp session
Ingress RSVP: 0 sessions
Total 0 displayed, Up 0, Down 0
Egress RSVP: 0 sessions
Total 0 displayed, Up 0, Down 0
Transit RSVP: 2 sessions
To
From
State
10.1.1.3
10.1.1.1
Up
0 1 SE
10.1.1.2
10.1.1.1
Up
0 1 SE
Total 2 displayed, Up 2, Down 0
Example: The corresponding forwarding entry on P1 shows that the packets coming in with one MPLS label
(300016) are swapped with labels 16 and 299840 and forwarded out through their respective interfaces
(so-0/0/3.0 and so-0/0/1.0 respectively towards PE2 and PE3).
user@P1> show route table mpls label 300016
mpls.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
300016
34
Second, the ingress PE attaches a PMSI attribute to a Type 3 route. This PMSI attribute is similar to the PMSI
attribute advertised for inclusive P-tunnels with one difference: the PMSI attribute carried with Type 3 routes has
its Flags bit set to Leaf Information Required. This means that the sender PE router is requesting receiver
PE routers to send a Type 4 route if they have active receivers for the (C-S, C-G) carried in the Type 3 route. Also,
remember that for each selective P-tunnel, a new P2MP and associated sub-LSPs are signaled. The PMSI attribute
of a Type 3 route carries information about the new P2MP LSP.
Example: In Figure 1, PE1 advertises the following Type 3 route and the PMSI attribute. The P2MP Session
Object included in the PMSI attribute has a different Port number (29499) than the one used for the inclusive
tunnel (6574) indicating that this is a new P2MP tunnel.
user@PE1> show route advertising-protocol bgp 10.1.1.3 detail table vpna.mvpn | find 3:
* 3:10.1.1.1:1:32:192.168.1.2:32:224.1.1.1:10.1.1.1/240 (1 entry, 1 announced)
BGP group int type Internal
Route Distinguisher: 10.1.1.1:1
Nexthop: Self
Flags: Nexthop Change
Localpref: 100
AS path: [65000] I
Communities: target:10:1
PMSI: Flags 1:RSVP-TE:label[0:0:0]:Session_13[10.1.1.1:0:29499:10.1.1.1]
Egress PE routers with active receivers should respond to a Type 3 route by originating a Type 4 leaf AD route. A leaf
AD route contains a route key and the originating routers IP address fields. The Route Key field of the Leaf AD route
contains the original Type 3 route that was received. The Originating Routers IP Address field is set to the rid of the
PE originating the leaf AD route.
The ingress PE adds each egress PE that originated the leaf AD route as a leaf (destination of the sub-LSP for
selective P2MP LSP). Similarly, the egress PE router that originated the leaf AD route sets up forwarding state to
start receiving data through the selective P-tunnel.
Egress PEs advertise Type 4 routes with an RT that is specific to the PE signaling the selective P-tunnel. This RT is
in the form of target:<rid of the sender PE>:0. The sender PE (the PE signaling the selective P-tunnel)
applies a special internal import policy to Type 4 routes that looks for an RT with its own rid.
Example: In Figure 1, PE3 originates the following Type 4 route. The local Type 4 route is installed by the mvpn module.
user@PE3> show route table vpna.mvpn | find 4:3:
4:3:10.1.1.1:1:32:192.168.1.2:32:224.1.1.1:10.1.1.1:1.1.1.3/240
*[MVPN/70] 00:15:29, metric2 1
Indirect
35
Example: PE3 advertises the local Type 4 route with the following RT community. This RT carries the IP address of
the sender PE (10.1.1.1) followed by a 0.
user@PE3> show route advertising-protocol bgp 10.1.1.1 table vpna.mvpn detail | find 4:3:
* 4:3:10.1.1.1:1:32:192.168.1.2:32:224.1.1.1:10.1.1.1:10.1.1.3/240 (1 entry, 1 announced)
BGP group int type Internal
Nexthop: Self
Flags: Nexthop Change
Localpref: 100
AS path: [65000] I
Communities: target:10.1.1.1:0
Example: PE1 (the PE signaling the selective P-tunnel) applies the following import policy to Type 4 routes. The
routes are accepted if their RT matches target:10.1.1.1:0.
user@PE1> show policy __vrf-mvpn-import-cmcast-leafAD-global-internal__
Policy __vrf-mvpn-import-cmcast-leafAD-global-internal__:
Term unnamed:
from community __vrf-mvpn-community-rt_import-target-global-internal__
[target:10.1.1.1:0 ]
then accept
Term unnamed:
then reject
For each selective P-tunnel configured, a Type 3 route is advertised and a new P2MP LSP is signaled. P2MP LSPs
created by JUNOS Software for selective P-tunnels are named using the following naming convention.
Selective P2MP LSPs naming convention:
<ingress PE rid>:<a per VRF unique number>:mv<a unique number>:<routing-instancename>
Selective P2MP sub-LSP naming convention:
<egress PE rid>:<ingress PE rid>:<a per VRF unique>:mv<a unique number>:<routinginstance-name>
Example: In Figure 1, PE1 signals P2MP LSP 10.1.1.1:65534:mv5:vpna with one sub-LSP
10.1.1.3:10.1.1.1:65534:mv5:vpna. The first P2MP LSP 10.1.1.1:65534:mvpn:vpna is the LSP created
for the inclusive tunnel.
user@PE1> show mpls lsp p2mp
Ingress LSP: 2 sessions
P2MP name: 10.1.1.1:65535:mvpn:vpna, P2MP branch count: 2
To
From
State Rt P
ActivePath
LSPname
10.1.1.3
10.1.1.1
Up
0 *
10.1.1.3:10.1.1.1:65535:mvpn:vpna
10.1.1.2
10.1.1.1
Up
0 *
10.1.1.2:10.1.1.1:65535:mvpn:vpna
P2MP name: 10.1.1.1:65535:mv5:vpna, P2MP branch count: 1
To
From
State Rt P
ActivePath
LSPname
10.1.1.3
10.1.1.1
Up
0 *
10.1.1.3:10.1.1.1:65535:mv5:vpna
Total 3 displayed, Up 3, Down 0
Egress LSP: 0 sessions
Total 0 displayed, Up 0, Down 0
Transit LSP: 0 sessions
Total 0 displayed, Up 0, Down 0
36
Timeout: Infinity
Step 2. T
he (C-*, C-G) entry in the C-PIM database triggers the generation of a Type 6 route that is then installed in
the <routing-instance-name>.mvpn.0 table by C-PIM. The Type 6 route uses the C-RP IP address as
the source.
37
Example: In Figure 1, PE3 installs the following Type 6 route in the vpna.mvpn.0 table.
user@PE3> show route table vpna.mvpn.0 detail | find 6:10.1.1.1
6:10.1.1.1:1:65000:32:10.12.53.1:32:224.1.1.1/240 (1 entry, 1 announced)
*PIM
Preference: 105
Next hop type: Multicast (IPv4), Next hop index: 262144
Next-hop reference count: 11
State: <Active Int>
Age: 1d 1:32:58
Task: PIM.vpna
Announcement bits (2): 0-PIM.vpna 1-mvpn global task
AS path: I
Communities: no-advertise target:10.1.1.1:64
Step 3. T
he RD and RT attached to the Type 6 route are learned from a route lookup in the <routing-instancename>.inet.0 table for the IP address of the C-RP.
Example: In Figure 1, PE3 has the following entry for C-RP 10.12.53.1 in the vpna.inet.0 table.
user@PE3> show route table vpna.inet.0 10.12.53.1 detail
vpna.inet.0: 9 destinations, 9 routes (9 active, 0 holddown, 0 hidden)
10.12.53.1/32 (1 entry, 1 announced)
*BGP
Preference: 170/-101
Route Distinguisher: 10.1.1.1:1
Next hop type: Indirect
Next-hop reference count: 6
Source: 10.1.1.1
Next hop type: Router, Next hop index: 588
Next hop: via so-0/0/3.0, selected
Label operation: Push 16, Push 299808(top)
Protocol next hop: 10.1.1.1
Push 16
Indirect next hop: 8da91f8 262143
State: <Secondary Active Int Ext>
Local AS: 65000 Peer AS: 65000
Age: 4:49:25
Metric2: 1
Task: BGP_65000.10.1.1.1+179
Announcement bits (1): 0-KRT
AS path: I
Communities: target:10:1 src-as:65000:0 rt-import:10.1.1.1:64
Import Accepted
VPN Label: 16
Localpref: 100
Router ID: 10.1.1.1
Primary Routing Table bgp.l3vpn.0
Step 4. O
nce the VPN source starts transmitting data, the first PE that becomes aware of the active source (either by
receiving register messages or the MSDP SA routes) installs a Type 5 route in its VRF mvpn table.
38
Example: In Figure 1, PE1 starts receiving C-PIM register messages from CE1 and installs the following entry in
the vpna.mvpn.0 table.
user@PE1> show route table vpna.mvpn.0 detail | find 5:10.1.1.1
5:10.1.1.1:1:32:192.168.1.2:32:224.1.1.1/240 (1 entry, 1 announced)
*PIM
Preference: 105
Next hop type: Multicast (IPv4)
Next-hop reference count: 30
State: <Active Int>
Age: 1d 1:36:33
Task: PIM.vpna
Announcement bits (3): 0-PIM.vpna 1-mvpn global task 2-BGP RT Background
AS path: I
Step 5. T
ype 5 routes that are installed in the <routing-instance-name>.mvpn.0 table are picked up by BGP
and advertised to remote PE routers.
Example: In Figure 1, PE1 advertises the following Type 5 route to remote PE routers.
user@PE1> show route advertising-protocol bgp 10.1.1.3 detail table vpna.mvpn.0 | find 5:
* 5:10.1.1.1:1:32:192.168.1.2:32:224.1.1.1/240 (1 entry, 1 announced)
BGP group int type Internal
Route Distinguisher: 10.1.1.1:1
Nexthop: Self
Flags: Nexthop Change
Localpref: 100
AS path: [65000] I
Communities: target:10:1
Step 6. The receiver PE that has both a Type 5 and Type 6 route for (C-*, C-G) is now ready to originate a Type 7 route.
Example: In Figure 1, PE3 has the following Type 5, 6, and 7 routes in the vpna.mvpn.0 table. The Type 6 route
is installed by C-PIM in Step 2. The Type 5 route is learned via BGP in Step 5. The Type 7 route is originated by the
MVPN module in response to having both Type 5 and Type 6 routes for the same (C-*, C-G). The RT of the Type 7 route
is the same as the RT of the Type 6 route due to the fact that both routes (IP address of the C-RP [10.12.53.1]
and the address of the VPN multicast source [192.168.1.2]) are reachable via the same PE1 router). Therefore,
10.12.53.1 and 192.168.1.2 carry the same rt-import (10.1.1.1:64) community.
user@PE3> show route table vpna.mvpn.0 detail
5:10.1.1.1:1:32:192.168.1.2:32:224.1.1.1/240 (1 entry, 1 announced)
*BGP
Preference: 170/-101
Next hop type: Indirect
Next-hop reference count: 4
Source: 10.1.1.1
Protocol next hop: 10.1.1.1
Indirect next hop: 2 no-forward
State: <Secondary Active Int Ext>
Local AS: 65000 Peer AS: 65000
Age: 1d 1:43:13
Metric2: 1
Task: BGP_65000.10.1.1.1+55384
Announcement bits (2): 0-PIM.vpna 1-mvpn global task
AS path: I
Communities: target:10:1
Import Accepted
Localpref: 100
Router ID: 10.1.1.1
Primary Routing Table bgp.mvpn.0
39
Step 7. The Type 7 route installed in the VRF mvpn table is picked up by BGP and advertised to remote PE routers.
Example: In Figure 1, PE3 advertises the following Type 7 route.
user@PE3> show route advertising-protocol bgp 10.1.1.1 detail table vpna.mvpn.0 | find
7:10.1.1.1
* 7:10.1.1.1:1:65000:32:192.168.1.2:32:224.1.1.1/240 (1 entry, 1 announced)
BGP group int type Internal
Route Distinguisher: 10.1.1.3:1
Nexthop: Self
Flags: Nexthop Change
Localpref: 100
AS path: [65000] I
Communities: target:10.1.1.1:64
If the C-join is a source tree join, then the Type 7 route is originated immediately (without waiting for a Type 5 route).
Example: In Figure 1, PE2 originates the following Type 7 route in response to receiving a (192.168.1.2,
232.1.1.1) C-join.
user@PE2> show route table vpna.mvpn.0 detail | find 7:10.1.1.1
7:10.1.1.1:1:65000:32:192.168.1.2:32:232.1.1.1/240 (1 entry, 1 announced)
*PIM
Preference: 105
Next hop type: Multicast (IPv4), Next hop index: 262146
Next-hop reference count: 4
State: <Active Int>
Age: 2d 18:59:56
Task: PIM.vpna
Announcement bits (3): 0-PIM.vpna 1-mvpn global task 2-BGP RT Background
AS path: I
Communities: target:10.1.1.1:64
40
41
Remote C-joins (Type 7 routes learned via BGP translated back to normal C-joins) are installed in the VRF C-PIM
database on the sender PE router and are processed based on regular C-PIM procedures. This process completes
the end-to-end C-multicast routing exchange.
Example: In Figure 1, PE1 installs the following entries in its C-PIM database.
user@PE1> show pim join extensive instance vpna
Instance: PIM.vpna Family: INET
R = Rendezvous Point Tree, S = Sparse, W = Wildcard
Group: 224.1.1.1
Source: 192.168.1.2
Flags: sparse,spt
Upstream interface: fe-0/2/0.0
Upstream neighbor: 10.12.97.2
Upstream state: Local RP, Join to Source
Keepalive timeout: 201
Downstream neighbors:
Interface: Pseudo-MVPN
Group: 232.1.1.1
Source: 192.168.1.2
Flags: sparse,spt
Upstream interface: fe-0/2/0.0
Upstream neighbor: 10.12.97.2
Upstream state: Local RP, Join to Source
Keepalive timeout:
Downstream neighbors:
Interface: Pseudo-MVPN
Instance: PIM.vpna Family: INET6
R = Rendezvous Point Tree, S = Sparse, W = Wildcard
Conclusion
NG MVPNs provide service providers a new way of offering multicast VPN service. The strength of NG MVPN comes
from its architecture that brings together the multicast protocols used at the edge and the BGP-MPLS technology
deployed in the core. In particular, the use of BGP for transferring multicast routes across geographic locations and
P2MP LSPs for distributing multicast data bring VPN multicast service offering to the same reliable and scalable
level as the VPN unicast service.
42
Acronyms
AD
autodiscovery
ASBR
ASM
any-source multicast
Bidir
bidirectional
BGP
CE
customer edge
C-G
C-join
C-multicast
customer multicast
C-PIM
customer PIM
C-RP
C-RPT
customer RP Tree
C-S
C-SPT
GRE
IANA
INET
internet
I-PMSI
inclusive PMSI
LSP
MCAST
multicast
mLDP
MP2MP
multipoint to multipoint
MPLS
MSDP
MVPN
multicast VPN
NG MVPN
NLRI
OIL
OSPF
P2MP
point to multipoint
PE
provider edge
PHP
penultimate-hop popping
P-group
P-join
PIC
PIM
PIM SM
PIM SSM
PMSI
P-PIM
provider PIM
43
P-RP
RD
route distinguisher
RIP
RP
rendezvous point
RSVP-TE
RT
route target
SA
source active
SAFI
S-PMSI
selective PMSI
VPN
VRF
VPN-IPv4
References
BGP Encodings and Procedures for Multicast in MPLS/BGP IP VPNs draft-ietf-l3vpn-2547bis-mcast-bgp
www.ietf.org/internet-drafts/draft-ietf-l3vpn-2547bis-mcast-bgp
BGP/MPLS IP Virtual Private Networks (VPNs) RFC 4364
www.ietf.org/rfc/rfc4364.txt?number=4364
Border Gateway Protocol (BGP) Data Collection Standard Communities (IANA-MVPN-Extend, per RFC 4360)
www.iana.org/assignments/bgp-extended-communities
Extensions to RSVP-TE for Point-to-Multipoint TE LSPs RFC 4875
www.ietf.org/rfc/rfc4875.txt
IETF Layer 3 Virtual Private Networks (l3vpn) Working Group
www.ietf.org/html.charters/l3vpn-charter.html
Mandatory Features in a Layer 3 Multicast BGP/MPLS VPN Solution
http://tools.ietf.org/html/draft-ietf-l3vpn-mvpn-considerations-04
Multicast in MPLS/BGP IP VPNs draft-ietf-l3vpn-2547bis-mcast
www.ietf.org/internet-drafts/draft-ietf-l3vpn-2547bis-mcast
Multicast in MPLS/BGP VPNs draft-rosen-vpn-mcast
http://tools.ietf.org/html/draft-rosen-vpn-mcast
Multicast Source Discovery Protocol (MSDP)
www.ietf.org/rfc/rfc3618.txt
Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification RFC 4601
www.ietf.org/rfc/rfc4601.txt?number=4601
Subsequent Address Family Identifiers (SAFI) (IANA-SAFI-MVPN, per RFC 4760)
www.iana.org/assignments/safi-namespace
44
APAC Headquarters
Juniper Networks (Hong Kong)
26/F, Cityplaza One
1111 Kings Road
Taikoo Shing, Hong Kong
Phone: 852.2332.3636
Fax: 852.2574.7803
EMEA Headquarters
Juniper Networks Ireland
Airside Business Park
Swords, County Dublin,
Ireland
Phone: 35.31.8903.600
Fax: 35.31.8903.601
45