Internet DRAFT - draft-tao-mpls-pim-interworking
draft-tao-mpls-pim-interworking
INTERNET-DRAFT B. Tao, Ed.
Intended Status: Standards Track Huawei Technologies Inc.
Expires: April 2, 2014 Others
October 2, 2013
MPLS PIM Inter-working
draft-tao-mpls-pim-interworking-02
Abstract
This document describes a framework for the inter-working between
Protocol Independent Multicast [PIM] and a leaf-driven MPLS P2MP
tunnel signaling protocol so that multiple PIM sites around an MPLS
network can form a single PIM domain without compromising PIM's
features, scalability, and performance.
Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as
Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/1id-abstracts.html
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html
Copyright and License Notice
Copyright (c) 2012 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
B. Tao et al. Expires April 2, 2014 [Page 1]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1 Background . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Purpose of This Work . . . . . . . . . . . . . . . . . . . 5
1.3 Terminology . . . . . . . . . . . . . . . . . . . . . . . . 6
2. An Overview: PIM MPLS Inter-working . . . . . . . . . . . . . 6
2.1 PIM-SM, PIM-SSM and PIM-BiDir States . . . . . . . . . . . . 6
2.2 PIM-MPLS Border Router(mPMBR) . . . . . . . . . . . . . . . 7
2.3 A Reference Model for PIM-MPLS Inter-working(PMIW) . . . . . 8
2.3.1 QPI, MPLS Tunnel and M-Flow Spec Binding . . . . . . . 10
2.3.2 PIM Support for QPI and M-Flow Spec Binding . . . . . . 10
2.3.3 M-Flow Spec Binding Policies . . . . . . . . . . . . . . 11
2.3.4 IP Multicast Packet Forwarding at an mPMBR . . . . . . . 11
2.4 Impacted PIM messages and procedures . . . . . . . . . . . . 11
2.4.1 PIM Hello and Adjacency Over MPLS Backbone . . . . . . . 11
2.4.2 PIM Assert and Message . . . . . . . . . . . . . . . . . 12
2.4.3 PIM hop-by-hop Bootstrapping and Message . . . . . . . . 12
2.4.4 PIM Unicast Messages and C-RP Advertisement . . . . . . 12
2.4.5 PIM RP Register and RegisterStop . . . . . . . . . . . . 13
2.4.6 PIM Join/Prune States and In-Band Signaling in MPLS . . 13
2.4.6.4 Aggregating Two Tunnels to Use A Single Tunnel . . . 13
3 Algorithms and Procedures . . . . . . . . . . . . . . . . . . . 14
3.1 Dynamic P2MP Tunnel Creation and Bind An M-Flow Spec To It . 14
3.1.1. In-Band Tunnel Signaling at Leaf LER . . . . . . . . . 16
3.1.2. In-Band Tunnel Signaling at Transit LSR . . . . . . . . 17
3.1.3. In-Band Tunnel Signaling at Root LER . . . . . . . . . 18
3.1.4. Considerations for Load Balance and Traffic
Engineering(TE) . . . . . . . . . . . . . . . . . . . . 18
3.2. Operational Procedures for PIM RPT to SPT switch . . . . . 18
4. M-Flow Spec Format . . . . . . . . . . . . . . . . . . . . . . 19
5 OAM&P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6 Security Considerations . . . . . . . . . . . . . . . . . . . . 23
7 IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 23
8 References . . . . . . . . . . . . . . . . . . . . . . . . . . 23
8.1 Normative References . . . . . . . . . . . . . . . . . . . 23
8.2 Informative References . . . . . . . . . . . . . . . . . . 23
B. Tao et al. Expires April 2, 2014 [Page 2]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 24
Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . . . 24
B. Tao et al. Expires April 2, 2014 [Page 3]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
1 Introduction
1.1 Background
IP multicast sources and their receivers can be located at multiple
separated sites which are around an MPLS network. PIM, the most
popular IP multicast protocol, runs in each of these sites. A
requirement therefore is to use the MPLS tunnels to "connect" these
multiple PIM sites as if they were in a single PIM domain.
Currently there are a few standards to achieve this, most of them for
multicast VPN(mVPN) cases:
a) [RFC6513] and [RFC6514] use a third protocol, the extended
BGP, to discover multicast routes and other states from
each PIM site, propagate to other sites, and establish
P2MP tunnels in the MPLS backbone to support VPN multicast
within MPLS backbone.
b) [I-D.lin-mrsvp-te-mvpn] uses an mRSVP-TE [mRSVP-TE]
tunnel within MPLS to transparently multicast both PIM's
control and data traffic to other VPN sites, and if
necessary, establishes a separated P2MP tunnel for each
individual multicast flow. This is an out-of-band method
to signal VPN PIM states over MPLS backbone. In this way,
separated PIM sites of a VPN form a single PIM domain in
the VPN, and PIM adjacencies each pair of MPLS edge routers
are maintained across the MPLS backbone.
c) [I-D.Wijnands-mldp-inband] uses in-band signaling to build
mLDP P2MP tunnels to support (S, G) and (*, G) multicast
states. Currently, the draft only specifies the encoding and
decoding for the above two types of multicast states. It
relies on a third protocol to signal PIM ASM related states.
These methods, however, either depends on using BGP and new
extensions, or support only a limited portion of PIM features for a
particular MPLS P2MP protocol, or has limited scale and efficiency
within MPLS.
[RFC6513] extends BGP to support PIM features across an MPLS backbone
for multicast VPN cases. This dependency requires the deployment of
BGP and its extensions, as well as the associated OAM&P.
The extra protocol involvement also introduces more interactions
among protocols and thus causes additional overheads to BGP. For
example, [RFC6513] uses a BGP discovery phase on a PIM join state
B. Tao et al. Expires April 2, 2014 [Page 4]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
before a tunnel can be signaled in the MPLS backbone. This adds a
delay to the dynamic tunnel signaling.
The out-of-bound method limits itself as a solution for only certain
cases because: a) It applies to a particular MPLS signaling protocol
[mRSVP-TE]; b) Fully meshed PIM adjacencies make PIM procedures to
cross MPLS costly thus limits the solution to be used under limited
scale (See [RFC6517]); c) The default tunnel may not be optimally
routed within MPLS and its usage prevents flexible load balancing and
traffic engineering at tunnel level; only limited aggregation can be
done on (S, G) data tunnels; d) For PIM RPT to SPT switch, new
procedures and messages are introduced.
In the third solution, the supported PIM features are limited and the
solution is limited to [mLDP] as the MPLS signaling protocol.
See [RFC6517] for more information.
1.2 Purpose of This Work
In this document, we introduce a PIM-MPLS inter-working framework
which provides the following to resolve the current issues:
a) Complete the full support of PIM features with only PIM and a
point-to-multipoint(P2MP) tunneling protocol involved;
b) Neutrally support various tunnel signaling protocols,
including [mRSVP-TE] and [mLDP]; PIM states are "in-band"
signaled by the tunnel signaling protocol to another PIM site
while the signaling protocol itself uses the data to set up
the tunnel with optimal routing and traffic engineering;
c) Minimize the changes to the two(2) involved protocols and any
introduction of new procedures;
d) Provide flexible tunnel aggregation and load balancing for
scalability and shared resource usage in backbone
e) Minimize overheads in the backbone and on the PIM-MPLS border
routers without introducing performance and scalability
bottlenecks. There is no PIM adjacencies cross over the
backbone network
It is important to point out that some existing solutions can be made
to work with this framework to have complete PIM support.
[mRSVP-TE] and [mLDP] are protocols to signal point-to-
multipoint(P2MP) and multipoint to multipoint(MP2MP) tunnels in an
MPLS network, starting from the leaves of these tunnels. The leaf-
B. Tao et al. Expires April 2, 2014 [Page 5]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
driven signaling is in the same direction as PIM builds its multicast
forwarding information base, i.e., from the multicast data listeners
to the senders. This framework will take advantage of this
characteristics to set up the forwarding states in an MPLS backbone
with less messages and delays.
1.3 Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
2. An Overview: PIM MPLS Inter-working
2.1 PIM-SM, PIM-SSM and PIM-BiDir States
[PIM] defines four(4) types of Multicast Routing Information
Base(MRIB) entries:
1. (*, *, RP)
2. (*, G)
3. (S, G)
4. (S, G, rpt)
For each MRIB entry, the framework identifies the following PIM
forwarding states for our purpose in this document:
Downstream Per-interface Join/Prune state:
One of {"NoInfo" (NI), "Join" (J)}
Upstream non-interface specific Join/Prune state:
One of {"NotJoined", "Joined"}
For each (*, G), there is a sub-set of states called (S, G, RPT), one
for each (S, G) pair. In this draft, we are only concerned with their
following states:
B. Tao et al. Expires April 2, 2014 [Page 6]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
Downstream Per-interface Join/Prune state:
One of {"NoInfo", "Pruned"}
Upstream non-interface specific Join/Prune State:
One of {"RPTNotJoined(G)", "NotPruned(S,G,rpt)",
"Pruned(S,G,rpt)"}
For definitions of these states, readers are referred to the [PIM]
document.
This framework makes these PIM states as part of signaling data for a
leaf-driven MPLS protocol to signal its P2MP tunnels to achieve
optimal multicast routing within the MPLS network and in highly
scalable fashion. On the other hand, the remote PIM site at upstream
obtains these states from the MPLS signaling data to set up proper
PIM forwarding states for the upstream site. These PIM states are
therefore "In-Band" signaled to the remote PIM site by MPLS, while
MPLS itself sets up optimized multicast LSPs for the traffic to go
through the MPLS backbone.
We hereafter call them M-Flow Specs, and for in-band signaling
purpose, assign a value to each of the types as the following:
M-Flow Spec Type-1(value 1) for (*, *, RP);
M-Flow Spec Type-2(value 2) for (*, G);
M-Flow Spec Type-3(value 3) for (S, G);
M-Flow Spec Type-4(value 4) for (S, G, RPT);
2.2 PIM-MPLS Border Router(mPMBR)
An mPMBR is a border router where PIM meets the MPLS backbone and
inter-works with an MPLS signaling protocol to set up the tunnels,
and where IP multicast packets exit an upstream PIM site to enter the
MPLS backbone or exit the MPLS backbone to enter a downstream PIM
site. An mPMBR can run a multicast member discovery protocol such as
IGMP or MLD, besides PIM. Therefore the mPMBR can have local
listeners.
An mPMBR is called local to a PIM site if it is where the PIM site
connects to the MPLS backbone.
B. Tao et al. Expires April 2, 2014 [Page 7]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
For convenience in the following discussions, we define the following
macro to determine where a P2MP tunnel ingress, or root, will be, for
each M-Flow spec F defined previously:
mPMBR_lkup(F) = {
RP's local mPMBR address, if F is a (*, *, RP) spec; or
RP(G)'s local mPMBR adderss if F is a (*, G) spec; or
S's local mPMBR address if F is a (S, G) spec; or
RP(G)'s local mPMBR if F is a (S, G, RPT)
}
An mPMBR needs to specify its router ID and advertise it to unicast
routing protocol(s) to make the address reachable from all other
mPMBRs. It also specifies its PIM interfaces that face a PIM site, as
well as one or more MPLS interfaces over which P2MP tunnels can be
signaled to support the inter-working functions as defined in this
work. In this framework, P2MP tunnels and their sub-LSPs are
dynamically created and removed when M-Flow specs are created or
removed on mPMBRs.
When a tunnel is created for an M-Flow spec, a logic interface is
also created at the tunnel's ingress and egress endpoints,
respectively. This logic interface will act as if it were a PIM
interface but it does not actually run PIM on it. At an P2MP egress
mPMBR, PIM builds non-interface upstream states on it using the M-
Flow spec created by PIM; at the ingress, or P2MP root mPMBR, PIM
builds per-interface downstream states using the M-Flow spec data
signaled by the tunnel signaling protocol.
An M-FLow spec is said to be "bound" to such a logic interface once
the interface is created as above to pass the traffic which will be
forwarded per the M-Flow spec by the IP multicast forwarding plane.
At a P2MP tunnel's ingress mPMBR, IP multicast packets of the bound
M-FLow spec enters this logic interface, which "leads" the packets
into the MPLS tunnel. At an egress mPMBR, the packets exit the tunnel
and were treated as if they were received from the logic interface as
an upstream interface. At this point the packets will be forwarded
using the native IP multicast forwarding rules.
We call each of these logic interfaces a Quasi-PIM interface(QPI).
2.3 A Reference Model for PIM-MPLS Inter-working(PMIW)
Figure 1 illustrates the PIM-MPLS inter-working model on an mPMBR. In
this model, a QPI is created for an MPLS tunnel at the ingress and
B. Tao et al. Expires April 2, 2014 [Page 8]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
egress LSRs, and this QPI is "advertised" to the mPMBR's PIM, so that
PIM uses it as if it were a PIM interface except that PIM protocol
does not actually run on it, and therefore PIM does not send or
receive any PIM protocol control messages over it (i.e. there is no
PIM adjacency on a QPI), but can still send and receive IP multicast
data packets.
The PIM on each mPMBR uses native PIM procedures to work with its PIM
site router(s) and build proper PIM control and multicast packet
forwarding states over the PIM interfaces as well QPIs.
In order for the mPMBR PIM to build proper control and forwarding
states for a QPI, PIM procedures must be modified to
i) Extend any validation checks to include the QPI to accept
IP multicast packets from the backbone;
ii) PIM RFP_Interface() macro can return a QPI if the RPF
next-hop goes over an IP interface that has MPLS enabled
to support the inter-working.
<---------PIM------>|<---PMIW--->|<----MPLS---->
| |
+--------------------------+
+-----+ | PIM | | |
---| PIM |----| |------------| ========
.......................M-Flows...................
---| |----| |------------| ========
+-----+ ^ |MFIB | ^ | | ^
^ | +-----+--------|---|-------+ |
| | ^ | |
| | | | |
PIM Site | | | |
Router | | QPI MPLS Tunnel
| |
Native PIM mPMBR
Interface
Figure 1: mPMBR PIM-MPLS Inter-working(PMIW) Reference Model
In the Figure 1, an IP multicast packet in mPMBR's PIM segment is
forwarded over the PIM interface(s) as well as QPIs using PIM's
B. Tao et al. Expires April 2, 2014 [Page 9]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
native forwarding rules; when an IP multicast packet enters a QPI,
the packet will be encapsulated with MPLS and enters the
corresponding tunnel. When a packet exits the tunnel at the remote
mPMBR, the QPI on this receiving mPMBR becomes the incoming interface
for the packet, and the packet enters PIM's segment where it will be
forwarded under PIM's native rules.
2.3.1 QPI, MPLS Tunnel and M-Flow Spec Binding
When a P2MP tunnel is created in the MPLS backbone for an M-Flow
spec, a QPI is also created as an IP multicast logical interface at
each of the egress and ingress mPMBRs, and the M-Flow spec is bound
to the QPIs at each of the mPMBRs respectively. At the ingress mPMBR,
the QPI is where an IP multicast packet enters the P2MP tunnel with
the MPLS header, and is subsequently forwarded along the tunnel. At
each egress mPMBR, the QPI associated with the tunnel is where the
MPLS packet is de-capsulated, and the resulted IP multicast packet
continues to be forwarded using PIM's native forwarding rules.
The QPI operational status is the same as the P2MP tunnel operational
state.
At an ingress mPMBR, an M-Flow spec F is said to be "bound" to a QPI
(therefore the tunnel as well) when the ingress mPMBR sets the IP
multicast forwarding rules of F to use the QPI as a downstream
interface in order to carry the traffic of F to other PIM sites, via
the backbone network.
At an egress mPMBR, an M-Flow spec F is said to be "bound" to a QPI
(therefore the tunnel as well) when the egress mPMBR sets the IP
multicast forwarding rules of F to use the QPI as an upstream
interface in order to receive the traffic of F from another PIM site,
via the backbone network.
2.3.2 PIM Support for QPI and M-Flow Spec Binding
In this framework, QPIs are made to PIM as if they were a PIM
interface, except that PIM control messages do not go over the QPIs.
The implementation needs to establish proper PIM per-interface
downstream states and upstream states for the QPI and the data
signaled by MPLS, which is originated from other PIM interface states
and the MPLS signaled data from the remote PIM sites.
The actual implementation of the binding on each mPMBR is beyond the
scope of this work.
The detailed PIM protocol support for the QPI will be completed in a
B. Tao et al. Expires April 2, 2014 [Page 10]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
later version.
2.3.3 M-Flow Spec Binding Policies
This framework introduces two sets of policies to restrict the
binding of an M-Flow to a Tunnel.
1. Default Policy: AGG_POLICY_0 (value: 0)
a. One tunnel per (S, G) M-Flow spec; and
b. One tunnel per RP for (*, *, RP) M-Flow spec; and
c. One tunnel for all M-Flow specs of (*, G) such that
RP(G) gives the same RP
The default policy is used by a LSR when no other policy is
explicitly specified. It is the finest grained, and MUST be provided
by an implementation.
2. AGG_POLICY_1 (value: 1):
a. A separate P-Tunnel is used to aggregate all (S, G)
M-Flow specs such that mPMBR_lkup((S,G)) gives the
same mPMBR; and
b. A separate P-Tunnel is used to aggregate all
(*, *, RP) M-Flow specs such that mPMBR_lkup((*, *,RP))
gives the same mPMBR; and
c. A separate P-Tunnel is used to aggregate all (*, G)
M-Flow specs such that mPMBR_lkup((*, G)) gives the same
mPMBR.
AGG_POLICY_1 is the most coarse grained and it, besides others, can
be optionally provided by an implementation.
2.3.4 IP Multicast Packet Forwarding at an mPMBR
If an IP multicast packet arrives at an mPMBR from a PIM interface,
it is forwarded using native IP multicast rules. If an oif is a QPI,
the QPI makes the packet to be forwarded into the corresponding MPLS
P2MP tunnel.
If an IP multicast packet arrives at an egress mPMBR from a P2MP
tunnel, it is handled by the bound QPI, which acts as an iif for IP
multicast flow. If there is no bound QPI, the packet is dropped.
2.4 Impacted PIM messages and procedures
2.4.1 PIM Hello and Adjacency Over MPLS Backbone
An mPMBR does not build any PIM adjacency with any other mPMBR over
B. Tao et al. Expires April 2, 2014 [Page 11]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
the MPLS backbone. Instead, relevant PIM states are mapped to and
from the MPLS signaling data. The details will be covered in later
sections when actual procedures are provided. The PIM downstream per-
interface states on a QPI is directly mapped from the corresponding
MPLS P2MP tunnel's in-band signaled M-Flow spec data. The PIM
upstream states, on the other hand, will be in-band signed to other
PIM sites by a P2MP tunneling protocol, and at the same time the
signaling protocol sets up optimally routed P2MP tunnel within the
MPLS for the multicast flows.
There are no impacts to other routers within MPLS backbone or in PIM
sites.
2.4.2 PIM Assert and Message An implementation following this framework
will not need to make any changes to for PIM asserts, as they will be
only applicable inside a PIM site locally, and the framework does not
let PIM go cross the backbone.
There are no impacts to any router in MPLS backbone or in PIM sites.
2.4.3 PIM hop-by-hop Bootstrapping and Message
A designated multicast channel within MPLS backbone, called Multicast
Bootstrap Tunnel(MBT), is used to carry PIM's bootstrap messages
among all mPMBRs. This tunnel can be either an MP2MP or a bi-
directional P2MP tree. The root is designated by the MPLS network
operator and leaves are all mPMBRs. An MPLS packet entered into the
MBT from any mPMBR will reach all other mPMBRs.
At each mPMBR, PIM sends and receives bootstrap messages to each of
the mPMBR's PIM interfaces as well as the MBT. Each mPMBRs must
implement the functions to send and receive PIM bootstrap messages
over the MBT.
There are no other impacts to an mPMBR PIM's native bootstrap
procedures, and there are no impacts to other routers other than the
mPMBRs.
2.4.4 PIM Unicast Messages and C-RP Advertisement
PIM unicast messages, including CRP advertisement, Register and
RegisterStop, are sent and received in raw IP, with PIM protocol
number.
Each mPMBR must be able to receive a raw IP PIM packet arrived at a
non-PIM interface that is MPLS enabled to support PIM-MPLS inter-
working.
B. Tao et al. Expires April 2, 2014 [Page 12]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
There are no other impacts to PIM's native procedures for unicast
messages on an mPMBR, and there are no impacts to other routers other
than mPMBRs.
2.4.5 PIM RP Register and RegisterStop
Except for the changes common to PIM unicast messages as in the
previous subsection, there are no other impacts for PIM RP register
and registerStop.
For information purpose, a RP may choose to send a (S, G) join toward
the source S after an (S, G) register packet is received by the RP,
and the resulted tree may go over the MPLS network. In this case, the
mechanism and procedures for (S, G) SPT support apply. The details
will be in later subsections.
2.4.6 PIM Join/Prune States and In-Band Signaling in MPLS
An mPMBR, say mpmbr, can have four(4) types of M-Flow specs
corresponding to PIM's upstream states. Except for the M-Flow spec
Type-4, each of the rest, say, F at the mpmbr can bind to an MPLS
P2MP tunnel in the MPLS network with mpmbr as one of its leaf(egress)
LSRs, and the root set to mPMBR_lkup(F). A signaling protocol which
is to work under this framework will support the binding of the Type-
1, Type-2, and Type-3 M-Flow specs with its tunnels. A Type-4 M-FLow
spec is associated with a Type-2 M-Flow spec, as an (S, G, RPT) state
is embedded into a (*, G) state. Therefore there is no separate
binding for a Type-4 M-Flow spec.
Before an M-Flow spec F is bound to a tunnel, the to-be bound tunnel
may have some undetermined information such as a tunnel identifier,
but the tunnel signaling procedure uses F and other known tunnel
identification data during the tunnel signaling. After the M-Flow
spec is bound to a tunnel, tunnel's identification data will be
completed.
The binding can happen at the leaf, at a transit LSR, or at the root,
according to the binding procedure in "Algorithms and Procedures".
2.4.6.4 Aggregating Two Tunnels to Use A Single Tunnel
Two tunnels may be aggregated into a single one, if their M-Flow
B. Tao et al. Expires April 2, 2014 [Page 13]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
specs can be merged to form a super set of M-Flow specs, without
violating each original tunnel's aggregation policy. The policy tests
are performed using the algorithms and procedures as defined in
Section 3.
The merged tunnel can be set up using Make-Before-Break(MBB). They
must have the same root in order to be aggregated. The procedure of
P2MP MBB is beyond the scope of this draft.
3 Algorithms and Procedures
3.1 Dynamic P2MP Tunnel Creation and Bind An M-Flow Spec To It
This section describes the procedure to bind an M-Flow spec to a
tunnel.
First, each M-Flow spec F has an aggregation policy to restrict
aggregating the M-Flow spec into a tunnel. This policy can be
configured explicitly by an operator, or is the default policy if it
is not configured.
An M-Flow spec F has the following attributes:
F.agg_policy: An policy to restrict binding and aggregating
F into a tunnel. This policy can be configured
explicitly by an operator, or is the default
policy if it is not configured.
F.spec_type: One of the spec types.
F.bound_tnl: The MPLS tunnel used by the IP multicasting
data which enters and exits the tunnel per F's
corresponding PIM forwarding rules.
For simplicity purpose, and without implying actual implementations,
the framework uses the following macros and functions on each LER or
LSR:
TS = {all tunnels on a node that supports PIM-MPLS
inter-working};
mflow_specs(T) = {set of M-Flow specs that have bound to
tunnel T}
mflow_spec_type(T) = The type of the M-Flow specs that are
bound to tunnel T
agg_policy_compatible(F, T) = TRUE if and only if
T.agg_policy derives F.agg_policy
B. Tao et al. Expires April 2, 2014 [Page 14]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
agg_policy_compatible(T1, T2) = TRUE if and only if
T1.agg_policy derives T2.agg_policy
bind_candidate(F) {
foreach(T in TS) {
if ((T' = F.bound_tnl) != NULL && T' signaling is
completed)
{
return T';
}
if (F.spec_type == mflow_spec_type(T) &&
agg_policy_compatible(F, T))
{
return T;
}
}
return NULL;
}
mflow_spec_bind(F, LSR) {
if ((T = bind_candidate(F)) != NULL)
{
mflow_specs_merge(T);
F.bound_tnl = T;
}
else if (I_am_leaf(LSR))
{
T = initiate_signal_p2mp_tunnel(F);
mflow_specs(T) = {F};
F.bound_tnl = T;
}
else if (I_am_root(LSR))
{
T = continue_signal_p2mp_tunnel(F);
mflow_specs(T) = {F};
F.bound_tnl = T;
}
else //I am transit LSR
{
T = continue_signal_p2mp_tunnel(F);
mflow_specs(T) = {F};
}
}
init_signal_p2mp_tunnel(F) triggers a P2MP tunnel creation
using the local LER as the leaf, and mPMBR_lkup(F) as the
root.
B. Tao et al. Expires April 2, 2014 [Page 15]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
continue_signal_p2mp_tunnel(F)continues the signaling
procedure for the P2MP tunnel that was initiated for F.
The following defines M-Flow spec merge operation:
mflow_specs_merge(T, F)
{
switch(F.spec_type)
{
case Type-1:
/* mflow_specs(T) is a set of group ranges each with
a list of (S, G, RPT) entries; F must be a group
range with a list of its (S, G, RPT) entries */
mflow_specs(T) = mflow_specs(T) union {F};
break;
case Type-2:
mflow_specs(T).sg_rpt_joins =
mflow_specs(T).sg_rpt_joins union F.sg_rpt_joins;
mflow_specs(T).sg_rpt_prunes =
mflow_specs(T).sg_rpt_prunes intersect
F.sg_rpt_prunes
/* sg_rpt_joins and sg_rpt_prunes are the lists of G's
joined and pruned(S, G, RPT) entries */
break;
case Type-3:
mflow_specs(T) = mflow_specs(T) union {F};
/* mflow_specs(T) is a set of (S, G) entries */
break;
case Type-4:
break; /* (S, G, RPT) entries go with wildcards */
}
}
The actual procedures for initiate_signal_p2mp_tunnel(F) and
continue_signal_p2mp_tunnel(F) are MPLS signaling protocol specific
and will be out of scope for this document.
3.1.1. In-Band Tunnel Signaling at Leaf LER
An M-FLow spec F is instantiated when an mPMBR PIM creates a J/P
upstream state. There are three cases under which F may be bound to a
P2MP tunnel at the leaf LER:
Case 1: F is an M-FLow spec already bound to a tunnel egress.
Therefore the corresponding QPI of the tunnel is used
B. Tao et al. Expires April 2, 2014 [Page 16]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
for F.
Case 2: F is not bound to an existing tunnel yet but F's
binding policy is compatible with an M-Flow spec which
has been bound to a P2MP tunnel. Therefore, F is then
bound to the same tunnel, and its QPI is used for F.
The leaf mPMBR does not initiate a new tunnel.
Case 3: None of Case 1 and Case 2 is true. Then a tunnel with
some unknown identifier is signaled using an extended
MPLS protocol, and F as additional data for in-band
signaling. Binding does not happen at this time.
After the unknown tunnel signaling is completed, an
upstream node, either a transit or the root should have
bound F to the tunnel. In addition, it should have also
determined if the tunnel is a new one or an existing
one which this M-Flow spec is bound with.
In the former case, a new QPI is created for the new
tunnel and bound to F. In the latter case, F is bound
to the QPI of the existing tunnel.
3.1.2. In-Band Tunnel Signaling at Transit LSR
As a transit LSR receives a P2MP tunnel signaling message for M-Flow
spec F, it does the following:
Case 1: bind_candidate(F) gives a candidate tunnel T, and T
is then bound to F. Therefore the LSR becomes a
branching LSR. It does the following:
a. Merge F into T.mflow_specs with
mflow_specs_merge(T, F)
b. The branching LSR MPLS signaling procedure of
specific signaling protocol is then performed
Case 2: Otherwise, it is still an unknown tunnel. It does:
a. Merge F to T.mflow_specs using
mflow_specs_merge(T, F);
b. The non-branching LSR MPLS signaling procedure of
the specific protocol is then performed.
B. Tao et al. Expires April 2, 2014 [Page 17]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
3.1.3. In-Band Tunnel Signaling at Root LER
Assume an M-FLow spec F is received at the root mPMBR from MPLS
backbone.
Case 1: F is an M-FLow spec already bound to a tunnel ingress.
Therefore the corresponding QPI of the tunnel is used
for F.
Case 2: F is not bound to an existing tunnel yet but F's
binding policy is compatible with an M-Flow spec which
has been bound to a P2MP tunnel. Therefore, F can then
be bound to the same tunnel, and its QPI is used for F.
Case 3: Neither Case 1 or Case 2 can bind the M-Flow spec.
a. Determine if a new tunnel or an existing tunnel is
used for the M-Flow spec, based on binding policy
and other requirements; if it is a new
tunnel, complete the rest of tunnel signaling using
the signaling protocol;
b. Create a QPI for the tunnel and bound it to F;
c. The new QPI is added to root mPMBR PIM as an
quosi-PIM oif, and F is mapped to PIM's downstream
state;
d. Complete the rest signaling at root with specific
tunnel signaling procedures
3.1.4. Considerations for Load Balance and Traffic Engineering(TE)
Each LSR including any transit node in the MPLS backbone uses the
combination of aggregation and load-balance policies, as well as
traffic engineering requirements to decide if an existing tunnel
should be shared for an M-Flow spec, and how to route it if the M-
Flow spec is to use a separate tunnel.
For example, a transit LSR may decide to merge a new M-Flow spec into
an existing P2MP tunnel to avoid allocating new network resources it;
or decides to reserve resources initially to be ready for a new
tunnel, but once an upstream LSR decides to use an existing tunnel
for the M-Flow spec, it will release the resources it has reserved
earlier. But if eventually a new tunnel is created, the reserved
resources will be used by the new tunnel.
3.2. Operational Procedures for PIM RPT to SPT switch
B. Tao et al. Expires April 2, 2014 [Page 18]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
This framework uses mPMBR PIM's native RPT to SPT switch to initiate
the corresponding traffic switch from the RPT's P2MP tunnel to the
SPT's P2MP tunnel. At the downstream egress mPMBR, when a (S, G, RPT)
state is created for the bound QPI, the mPMBR's PIM-MPLS inter-
working module adds the corresponding M-Flow spec F of Type-4 to the
tunnel's M-Flow specs, using mflow_specs_merge(T, F). The new M-FLow
spec is then sent to the root mPMBR.
When F is received by the root mPMBR, the native PIM procedure will
be performed at the mPMBR to complete the switch. This procedure
determines if (S, G) traffic should be stopped on the RPT as traffic
now is being received from the SPT.
4. M-Flow Spec Format
PIM passes an M-Flow spec to the MPLS signaling protocol when its
forwarding state changes.
An M-Flow spec is encoded in the following format:
0 1 2 3
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Type | Reserved | Num groups |policy |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Multicast Group Address 1 (Encoded-Group format) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Number of Joined Sources | Number of Pruned Sources |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Joined Source Address 1 (Encoded-Source format) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+-+-+
| . |
| . |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Joined Source Address n (Encoded-Source format) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Pruned Source Address 1 (Encoded-Source format) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| . |
| . |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Pruned Source Address n (Encoded-Source format) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| . |
| . |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Multicast Group Address m (Encoded-Group format) |
B. Tao et al. Expires April 2, 2014 [Page 19]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Number of Joined Sources | Number of Pruned Sources |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Joined Source Address 1 (Encoded-Source format) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| . |
| . |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Joined Source Address n (Encoded-Source format) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Pruned Source Address 1 (Encoded-Source format) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| . |
| . |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Pruned Source Address n (Encoded-Source format) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
An Encoded-Source address takes the following format:
0 1 2 3
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Addr Family | Encoding Type | Rsrvd |S|W|R| Mask Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...
An Encoded-Group addresses take the following format:
0 1 2 3
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Addr Family | Encoding Type |B| Reserved |Z| Mask Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Group multicast Address
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+...
"Type": 1, 2, 3, or 4 to indicate M-Flow spec type. "Policy" -
M-Flow spec and tunnel binding/aggregation policy.
Other fields are from [PIM] and must be set according to the
PIM specifications.
The encoding of each M-Flow spec is specified according to its type:
B. Tao et al. Expires April 2, 2014 [Page 20]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
For M-Flow Spec Type-1 (*, *, RP):
The Multicast Group Address 1 gives the group range. It is
encoded as the Multicast Group Address + Mask Length.
A one-entry join or prune source list is used for the group
range and the source address of the entry is set to the RP.
(S, G, RPT) list can be encoded in by adding them in join/
prune source list for individual specific group.
For M-Flow Spec Type-2 (*, G):
The Multicast Group Address 1 gives the group address. It is
encoded as the Multicast Group Address + full mask length.
A source entry in joined or pruned source list is used for the
group and the source address of the entry is set to the RP.
(S, G, RPT) list may be encoded by adding them in join/prune
source list for the specific group.
For M-Flow Spec Type-3 (S, G):
Multicast Group Address + Full Length Mask Length give the
group address G;
Source address is encoded into the source list.
For M-Flow Spec Type-4 (S, G, RPT):
Multicast Group Address + Full Length Mask Length give the
group address G.
Source address is encoded into the source list with 'R' bit
set and 'W' bit cleared. See [PIM-SM]"Source Address" encoding
for definition of these bits.
5 OAM&P
B. Tao et al. Expires April 2, 2014 [Page 21]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
This section is to be completed in future.
B. Tao et al. Expires April 2, 2014 [Page 22]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
6 Security Considerations
There is no additional security requirement for this work.
7 IANA Considerations
There is no IANA impact from the framework.
8 References
8.1 Normative References
[PIM] B. Fenner, M. Handley, H. Holbrook, I. Kouvelas, "Protocol
Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification
(Revised)", RFC 4601, August 2006.
[mRSVP-TE] R., Li, Q. Zhao, and C. Jacquenet, "Receiver-Driven
Multicast Traffic Engineered Label Switched Paths", draft-lzj-mpls-
receiver-driven-multicast-rsvp-te-00 (work in progress), March 2012.
[mLDP] Wijnands, IJ., Minei, I., Kompella, K., and B. Thomas,"Label
Distribution Protocol Extensions for Point-to- Multipoint and
Multipoint-to-Multipoint Label Switched Paths", RFC 6388, November
2011.
[RFC4875] R. Aggarwal, D. Papadimitriou, S. Yasukawa, "Extensions to
Resource Reservation Protocol - Traffic Engineering (RSVP-TE) for
Point-to-Multipoint TE Label Switched Paths (LSPs)", RFC 4875, May
2007
8.2 Informative References
[RFC2119] S. Bradner, "Key words for use in RFCs to Indicate
Requirement Levels", RFC 2119, March 1997.
[RFC6513] E. Rosen, R. Aggarwal, "Multicast in MPLS/BGP IP VPNs",
RFC 6513, Feb. 2012.
[RFC6514] R. Aggarwal, E. Rosen, T. Morin, Y. Rekhter, "BGP
Encodings and Procedures for Multicast in MPLS/BGP IP VPNs",
B. Tao et al. Expires April 2, 2014 [Page 23]
INTERNET DRAFT MPLS PIM Inter-working October 2, 2013
RFC 6514, Feb. 2012.
[RFC6517] T. Morin, B. Niven-Jenkins, Y. Kamite, R. Zhang, N.
Leymann, N. Bitar, "Mandatory Features in a Layer 3 Multicast
BGP/MPLS VPN Solution", RFC 6517, Feb., 2012
[RFC6037] E. Rosen, Y. Cai, and IJ. Wijnands, "Cisco Systems'
Solution for Multicast in BGP/MPLS IP VPNs", RFC 6037, October 2010.
[I-D.Wijnands-mldp-inband] IJ. Wijnands, Ed., T. Eckert, N. Leymann,
M. Napierala, "Multipoint LDP in-band signaling for Point-to-
Multipoint and Multipoint-to-Multipoint Label Switched Paths",
draft-ietf-mpls-mldp-in-band-signaling-06, December 1, 2011
[I-D.rekhter-pim-sm-over-mldp] Rekhter, Y., Aggarwal, R., and N.
Leymann, "Carrying PIM-SM in ASM mode Trees over P2MP mLDP LSPs",
draft-rekhter-pim-sm-over-mldp-04, August 2010.
[I-D.lin-mrsvp-te-mvpn] L. Han, "Multicast VPN Support by Receiver-
Driven Multicast Extensions to RSVP-TE", draft-hlj-l3vpn-mvpn-mrsvp-
te-00, July 2012
Authors' Addresses
Bisong Tao
2330 Central Expressway
Santa Clara, CA 95050
EMail: roberttao@huawei.com
Others(TBD)
Acknowledgement
The author(s) would like to thank the members of Huawei USA IP/MPLS
Team for their helpful review comments during the work of this draft.
B. Tao et al. Expires April 2, 2014 [Page 24]