<?xml version="1.0" encoding="US-ASCII"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc rfcedstyle="yes" ?>

<rfc number="7438"
     category="std"
     submissionType="IETF"
     consensus="yes"
     ipr="trust200902"
     updates="6826, 7246">

  <front>

    <title abbrev="mLDP In-Band Signaling with Wildcards">
      Multipoint LDP (mLDP) In-Band Signaling with Wildcards
    </title>

    <author fullname="IJsbrand Wijnands" initials="IJ."
            surname="Wijnands" role="editor">
      <organization>Cisco Systems, Inc.</organization>
      <address> 
        <postal>
          <street>De kleetlaan 6a</street>
          <city>Diegem</city>
          <region></region>
          <code>1831</code>
          <country>Belgium</country>
        </postal>
        <phone></phone>
        <email>ice@cisco.com</email>
      </address>
    </author>

    <author fullname="Eric C. Rosen" initials="E." surname="Rosen">
      <organization>Juniper Networks, Inc.</organization>
      <address> 
        <postal>
          <street>10 Technology Park Drive</street>
          <city>Westford</city>
          <region>MA</region>
          <code>01886</code>
          <country>United States</country>
        </postal>
        <phone></phone>
        <email>erosen@juniper.net</email>
      </address>
    </author>
   
    <author initials="A." surname="Gulko" fullname="Arkadiy Gulko">
      <organization>Thomson Reuters</organization>
      <address>
        <postal>
          <street>195 Broadway</street>
          <city>New York</city><region>NY</region>
          <code>10007</code>
          <country>United States</country>
        </postal>
        <email>arkadiy.gulko@thomsonreuters.com</email>
      </address>
    </author>
   
    <author initials="U." surname="Joorde" fullname="Uwe Joorde">
      <organization>Deutsche Telekom</organization>
        <address>
            <postal>
                <street>Hammer Str. 216-226</street>
                <city>Muenster</city>
                <code>D-48153</code>
                <country>Germany</country>
            </postal>
            <email>Uwe.Joorde@telekom.de</email>
        </address>
    </author>
   
    <author fullname="Jeff Tantsura" initials="J.T." surname="Tantsura">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <street>300 Holger Way</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>United States</country>
        </postal>
        <email>jeff.tantsura@ericsson.com</email>
      </address>
    </author> 
	
    <date month="January" year="2015" />

    <area>routing</area>
    <workgroup>MPLS Working Group</workgroup>

    <keyword>mpls, multicast</keyword>
<!--[rfced] The following terminology appears to be used
inconsistently. Please let us know if/how they should be
updated.

IP multicast group address vs. IP Multicast Group address
"upstream" vs. upstream
"downstream" vs. downstream
-->
    <abstract>
      <t>
        There are scenarios in which an IP multicast tree traverses an MPLS
        domain.  In these scenarios, it can be desirable to convert the IP
        multicast tree "seamlessly" into an MPLS Multipoint Label Switched
        Path (MP-LSP) when it enters the MPLS domain, and then to convert it
        back to an IP multicast tree when it exits the MPLS domain.
        Previous documents specify procedures that allow certain kinds of IP
        multicast trees (either "Source-Specific Multicast" trees or
        "Bidirectional Multicast" trees) to be attached to an MPLS
        Multipoint Label Switched Path (MP-LSP).  However, the previous
        documents do not specify procedures for attaching IP "Any-Source
        Multicast" trees to MP-LSPs, nor do they specify procedures for
        aggregating multiple IP multicast trees onto a single MP-LSP.  This
        document specifies the procedures to support these functions.  It
        does so by defining "wildcard" encodings that make it possible to
        specify, when setting up an MP-LSP, that a set of IP multicast
        trees, or a shared IP multicast tree, should be attached to that
        MP-LSP.  Support for non-bidirectional IP "Any-Source Multicast"
        trees is subject to certain applicability restrictions that are
        discussed in this document.  This document updates RFCs 6826 and
        7246. 
      </t>
    </abstract>
  </front>

  <middle>

    <section title="Introduction">
      <t>

<!-- [rfced] In the title, the acronym "mLDP" has been expanded as simply
"Multicast LDP", which matches RFC 6826 and past guidance from the WG
chair and AD regarding this expansion. Similarly, in the introduction, we
have updated the text as follows. Please let us know if you prefer
otherwise.

Original:
mLDP ("Multicast Extensions to the Label Distribution Protocol")

Current:
mLDP (Multicast LDP)
-->

	<xref target="RFC6826"/> and <xref target="RFC7246"/> specify
	procedures for mLDP (Multipoint LDP) that allow an IP multicast tree
	(either a "Source-Specific Multicast" tree or a "Bidirectional
	Multicast" tree) to be attached "seamlessly" to an MPLS Multipoint
	Label Switched Path (MP-LSP).  This can be useful, for example, when
	there is multicast data that originates in a domain that supports IP
	multicast, which then has to be forwarded across a domain that
	supports MPLS multicast and then has to forwarded across another
	domain that supports IP multicast.  By attaching an IP multicast
	tree to an MP-LSP, data that is traveling along the IP multicast
	tree can be moved seamlessly to the MP-LSP when it enters the MPLS
	multicast domain.  The data then travels along the MP-LSP through
	the MPLS domain.  When the data reaches the boundary of the MPLS
	domain, it can be moved seamlessly to an IP multicast tree.  This
	ability to attach IP multicast trees to MPLS MP-LSPs can be useful
	in either VPN context or global context.
      </t>

      <t>
        In mLDP, every MP-LSP is identified by the combination of a "root
        node" (or "Ingress Label Switching Router (LSR)") and an "Opaque
        Value" that, in the context of the root node, uniquely identifies
        the MP-LSP.  These are encoded into an mLDP "Forwarding Equivalence
        Class (FEC) Element".  To set up an MP-LSP, the Egress LSRs
        originate mLDP control messages containing the FEC element.  A given
        FEC Element value identifies a single MP-LSP and is passed upstream
        from the Egress LSRs, through the intermediate LSRs, to the Ingress
        LSR.
      </t>
      <t>
        In IP multicast, a multicast tree is identified by the combination
        of an IP source address ("S") and an IP group address ("G"), usually
        written as "(S,G)".  A tree carrying traffic of multiple sources is
        identified by its group address, and the identifier is written as
        "(*,G)".
      </t>
      <t>

<!-- [rfced] Regarding capitalization, we note that "mLDP In-Band Signaling"
has been capitalized in this document; however, it appears as "mLDP
in-band signaling" in RFCs 6826 and 7246. Please let us know if it should
be updated in this document.
-->

        When an MP-LSP is being set up, the procedures of <xref
        target="RFC6826"/> and <xref target="RFC7246"/>, known as "mLDP
        in-band signaling", allow the Egress LSRs of the MP-LSP to encode
        the identifier of an IP multicast tree in the "Opaque Value" field
        of the mLDP FEC Element that identifies the MP-LSP.  Only the Egress
        and Ingress LSRs are aware that the mLDP FEC Elements contain
        encodings of the IP multicast tree identifier; intermediate nodes
        along the MP-LSP do not take any account of the internal structure
        of the FEC Element's Opaque Value, and the internal structure of the
        Opaque Value does not affect the operation of mLDP.  By using mLDP
        in-band signaling, the Egress LSRs of an MP-LSP inform the Ingress
        LSR that they expect traffic of the identified IP multicast tree
        (and only that traffic) to be carried on the MP-LSP.  That is, mLDP
        in-band signaling not only sets up the MP-LSP, it also binds a given
        IP multicast tree to the MP-LSP.
      </t>
      <t>
        If multicast is being done in a VPN context <xref
        target="RFC7246"/>, then the mLDP FEC elements also contain a "Route
        Distinguisher" (RD) (see <xref target="RFC7246"/>), as the IP
        multicast trees are identified not merely by "(S,G)" but by
        "(RD,S,G)".  The procedures of this document are also applicable in
        this case.  Of course, when an Ingress LSR processes an in-band
        signaling Opaque Value that contains an RD, it does so in the
        context of the VPN associated with that RD.
      </t>
      <t>
        If mLDP in-band signaling is not used, then some other protocol must be
        used to bind an IP multicast tree to the MP-LSP; this requires
        additional communication mechanisms between the Ingress LSR and the
        Egress LSRs of the MP-LSP.  The purpose of mLDP in-band signaling is
        to eliminate the need for these other protocols.
      </t>
      <t>
        When following the procedures of <xref target="RFC6826"/> and <xref
        target="RFC7246"/> for non-bidirectional trees, the Opaque Value has
        an IP source address (S) and an IP group address (G) encoded into
        it, thus enabling it to identify a particular IP multicast (S,G)
        tree.  Only a single IP source-specific multicast tree (i.e., a
        single "(S,G)") can be identified in a given FEC element.  As a
        result, a given MP-LSP can carry data from only a single IP
        source-specific multicast tree (i.e., a single "(S,G) tree").
        However, there are scenarios in which it would be desirable to
        aggregate a number of (S,G) trees on a single MP-LSP.  Aggregation
        allows a given number of IP multicast trees to use a smaller number
        of MP-LSPs, thus saving state in the network.
      </t>
      <t>
        In addition, <xref target="RFC6826"/> and <xref target="RFC7246"/>
        do not support the attachment of an "Any-Source Multicast" (ASM)
        shared tree to an MP-LSP, except in the case where the ASM shared
        tree is a "bidirectional" (BIDIR) tree (i.e., a tree set up by BIDIR-PIM
        <xref target="RFC5015"/>).  However, there are scenarios in which it would be
        desirable to attach a non-bidirectional ASM shared tree to an
        MP-LSP.
      </t>
      <t>
        This document specifies a way to encode an mLDP "Opaque Value" in
        which either the "S" or the "G" or both are replaced by a "wildcard"
        (written as "*").  Procedures are described for using the wildcard
        encoding to map non-bidirectional ASM shared trees to MP-LSPs and
        for mapping multiple (S,G) trees (with a common value of S or a
        common value of G) to a single MP-LSP.
      </t>
      <t>
	Some example scenarios where wildcard encoding is useful are
	<list style="symbols">
	  <t>
	    PIM shared tree forwarding with "threshold infinity";
	  </t>
	  <t>
	    IGMP/Multicast Listener Discovery (MLD) proxying; and
	  </t>
	  <t>
	    Selective Source mapping.
	  </t>
	</list>
	These scenarios are discussed in <xref target="usecases"/>.  Note
	that this list of scenarios is not meant to be exhaustive.
      </t>
      <t>
	This document specifies only the mLDP procedures that are specific to
	the use of wildcards.  mLDP in-band signaling procedures that are
	not specific to the use of wildcards can be found in <xref
	target="RFC6826"/> and <xref target="RFC7246"/>.  Unless otherwise
	specified in this document, those procedures still apply when
	wildcards are used.
      </t>
    </section>

       <section title="Terminology and Definitions" >
         <t>
           Readers of this document are assumed to be familiar with the
           terminology and concepts of the documents listed as Normative
           References.  For convenience, some of the more frequently used
           terms appear below.
         </t>

         <t>
	   <list style="hanging">
	     <t hangText="IGMP:">
               <vspace />
             Internet Group Management Protocol.</t>
	     <t hangText='In-band signaling:'>
               <vspace />
	       Using the opaque value of a mLDP FEC element to carry the
	       (S,G) or (*,G) identifying a particular IP multicast tree.
               This document also allows (S,*) to be encoded in the opaque
               value; see <xref target="wildgroup"/>.
	     </t>
	     <t hangText='Ingress LSR:'>
               <vspace />
	       Root node of a MP-LSP.  When mLDP in-band signaling is used,
	       the Ingress LSR receives mLDP messages about a particular
	       MP-LSP from downstream and emits IP multicast control
	       messages upstream.  The set of IP multicast control
	       messages that are emitted upstream depends upon the contents
	       of the LDP Opaque Value TLVs.  The Ingress LSR also receives
	       IP multicast data messages from upstream and sends them
	       downstream as MPLS packets on an MP-LSP.
	     </t>
	     <t hangText='IP multicast tree:'>
               <vspace />
	       An IP multicast distribution tree identified by an IP
	       multicast group address and optionally a source IP address,
	       also referred to as (S,G) and (*,G).
	     </t>
	     <t hangText="MLD:">
               <vspace />
               Multicast Listener Discovery.
             </t>
	     <t hangText='mLDP:'>
               <vspace />
	       Multipoint LDP.
	     </t>
	     <t hangText='MP-LSP:'>
               <vspace />
	       A Point-to-Multipoint (P2MP) or Multipoint-to-Multipoint (MP2MP) LSP.
	     </t>
	     <t hangText="PIM:">
               <vspace />
               Protocol Independent Multicast.
             </t>
	     <t hangText='PIM-ASM:'>
               <vspace />
	       PIM Any-Source Multicast.
	     </t>
	     <t hangText='PIM-SM:'>
               <vspace />
	       PIM Sparse Mode. 
	     </t>
	     <t hangText='PIM-SSM:'>
               <vspace />
	       PIM Source-Specific Multicast.
	     </t>
	     <t hangText='RP:'>
               <vspace />
	       The PIM Rendezvous Point.
	     </t>
	     <t hangText='Egress LSR:'>
               <vspace />
	       The Egress LSRs of an MP-LSP are LSPs that receive MPLS
	       multicast data packets from upstream on that MP-LSP, and that
	       forward that data downstream as IP multicast data packets.
	       The Egress LSRs also receive IP multicast control messages
	       from downstream and send mLDP control messages upstream.
	       When in-band signaling is used, the Egress LSRs construct
	       Opaque Value TLVs that contain IP source and/or group
	       addresses based on the contents of the IP multicast control
	       messages received from downstream.
	     </t>
	     <t hangText='Threshold Infinity:'>
               <vspace />
	       A PIM-SM procedure where no source-specific multicast (S,G)
	       trees are created for multicast packets that are forwarded
	       down the shared tree (*,G).
	     </t>
             <t hangText="TLV:">
               <vspace />
               A protocol element consisting of a type field, followed by a
               length field, followed by a value field.  Note that the value
               field of a TLV may be subdivided into a number of
               subfields.
             </t>            
	   </list>
         </t>
         <t>
           The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
           NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
           "MAY", and "OPTIONAL" in this document are to be interpreted as
           described in RFC 2119 <xref target="RFC2119"/>.
         </t>
    </section>

    <section title="Wildcards in mLDP Opaque Value TLVs">
      <t>
        <xref target="RFC6826"/> and <xref target="RFC7246"/> define the
        following Opaque Value TLVs: Transit IPv4 Source TLV, Transit IPv6
        Source TLV, Transit VPNv4 Source TLV, and Transit VPNv6 Source TLV.
        The value field of each such TLV is divided into a number of
        subfields, one of which contains an IP source address, and one of
        which contains an IP group address.  Per those documents, these
        fields must contain valid IP addresses.
      </t>
      <t>
        This document extends the definition of those TLVs by allowing
        either the IP source address field or the IP group address field (or
        both) to specify a "wildcard" rather than a valid IP address.
      </t>
      <section title="Encoding the Wildcards">
        <t>
          A value of all zeroes in the IP source address subfield is used
          to represent a wildcard source address.  A value of all zeroes in
          the IP group address subfield is used to represent the wildcard
          group address.  Note that the lengths of these subfields are as
          specified in the previous documents.
        </t>
      </section>
      <section title="Wildcard Semantics">
        <t>
          If the IP source address subfield contains the wildcard, and the
          IP group address subfield contains an IP multicast group address
          that is NOT in the SSM address range (see Section 4.8 of <xref
          target="RFC4601"/>), then the TLV identifies a PIM-SM shared tree.
          Please see <xref target="restrictions"/> for the applicability
          restrictions that apply to this case.
        </t>
        <t>
          If the IP source address subfield contains the wildcard, and the
          IP group address subfield contains an IP multicast group address
          that is in the SSM address range, then the TLV identifies the
          collection of PIM trees with the given group address.
        </t>
        <t>
          If the IP source address subfield contains a non-zero IP address,
          and the IP group address subfield contains the wildcard, the TLV
          identifies the collection of PIM-SSM trees that have the source
          address as their root.
        </t>
        <t>
          Procedures for the use of the wildcards are discussed in Sections
          <xref target="usecases" format="counter"/>, <xref
          target="wildsource" format="counter"/>, and <xref
          target="wildgroup" format="counter"/>.  Please note that, as
          always, the structure of an Opaque Value TLV does not affect the
          operation of mLDP.  The structure is meaningful only to the IP
          multicast modules at the Ingress and Egress LSRs.
        </t>
        <t>
          Procedures for the use of a wildcard group in the following TLVs
          (defined in <xref target="RFC6826"/> or <xref target="RFC7246"/>)
          are outside the scope of the current document: Transit IPv4 Bidir
          TLV, Transit IPv6 Bidir TLV, Transit VPNv4 Bidir TLV, and Transit
          VPNv6 Bidir TLV.
        </t>
        <t>
          Procedures for the use of both a wildcard source and a wildcard
          group in the same TLV are outside the scope of the current document.
        </t>
        <t>
          Note that the Bidir TLVs do not have a source address subfield,
          and hence the notion of a wildcard source is not applicable to
          them.
        </t>
      </section>
      <section title="Backwards Compatibility">
        <t>
          The procedures of this document do not change the behavior
          described in <xref target="RFC6826"/> and <xref
          target="RFC7246"/>.
        </t>
        <t>
          A correctly operating Egress LSR that supports <xref
          target="RFC6826"/> and/or <xref target="RFC7246"/>, but that does
          not support this document, will never generate mLDP FEC Element
          Opaque values that contain source or group wildcards.
        </t>
        <t>
          Neither <xref target="RFC6826"/> nor <xref target="RFC7246"/>
          specifies the behavior of an Ingress LSR that receives mLDP FEC
          Element Opaque values that contain zeroes in the source address or
          group address subfields. However, if an Ingress LSR supports
          <xref target="RFC6826"/> and/or <xref target="RFC7246"/>, but does
          not support this document, then it has no choice but to treat any such
          received FEC elements as invalid; the procedures specified in
          <xref target="RFC6826"/> and <xref target="RFC7246"/> do not work
          when the Opaque values contain zeroes in the source address or
          group address subfields.
        </t>
        <t>
          The procedures of this document thus presuppose that if an Egress
          LSR uses wildcard encodings when setting up an MP-LSP, then the
          Ingress LSR (i.e., the root of the multipoint LSP) supports the
          procedures of this document.  An Egress LSR MUST NOT use wildcard
          encodings when setting up a particular multipoint LSP unless it is
          known a priori that the Ingress LSR supports the procedures of
          this document.  How this is known is outside the scope of this
          document.
        </t>
      </section>
      <section title="Applicability Restrictions with Regard to ASM"
               anchor="restrictions">
        <t>
          In general, support for non-bidirectional PIM-ASM trees requires
          (a) a procedure for determining the set of sources for a given ASM
          tree ("source discovery"), and (b) a procedure for pruning a
          particular source off a shared tree ("source pruning").  No such
          procedures are specified in this document.  Therefore, the
          combination of a wildcard source with an ASM group address MUST
          NOT be used unless it is known a priori that neither source
          discovery nor source pruning are needed.  How this is known is
          outside the scope of this document.  <xref target="usecases"/>
          describes some use cases in which source discovery and source
          pruning are not needed.
        </t>
        <t>
          There are, of course, use cases where source discovery and/or source
          pruning is needed.  These can be handled with procedures such as
          those specified in <xref target="RFC6513"/>, <xref
          target="RFC6514"/>, and <xref target="GTM"/>. Use of mLDP in-band
          signaling is NOT RECOMMENDED for those cases.
        </t>
      </section>
    </section>

    <section title="Some Wildcard Use Cases" anchor="usecases">
      <t>
        This section discusses a number of wildcard use cases.  The set of
        use cases here is not meant to be exhaustive.  In each of these use
        cases, the Egress LSRs construct mLDP Opaque Value TLVs that contain
        wildcards in the IP source address or IP group address subfields.
      </t>
      <section title="PIM Shared Tree Forwarding">
        <t>
          PIM <xref target="RFC4601"/> has the concept of a "shared tree",
          identified as (*,G). This concept is only applicable when G is an
          IP multicast group address that is not in the SSM address range
          (i.e., is an ASM group address).  Every ASM group is associated
          with a Rendezvous Point (RP), and the (*,G) tree is built towards
          the RP (i.e., its root is the RP).  The RP for group G is
          responsible for forwarding packets down the (*,G) tree. The
          packets forwarded down the (*,G) tree may be from any multicast
          source, as long as they have an IP destination address of G.
        </t>
        <t>
          The RP learns about all the multicast sources for a given group
          and then joins a source-specific tree for each such source.  That is,
          when the RP for G learns that S has multicast data to send to G,
          the RP joins the (S,G) tree.  When the RP receives multicast data
          from S that is destined to G, the RP forwards the data down the
          (*,G) tree.  There are several different ways that the RP may
          learn about the sources for a given group.  The RP may learn of
          sources via PIM Register messages <xref target="RFC4601"/>, via
          Multicast Source Discovery Protocol (MSDP) <xref target="RFC3618"/>,
	  or by observing packets from a source that is directly connected to the RP.
        </t>
        <t>
          In PIM, a PIM router that has receivers for a particular ASM
          multicast group G (known as a "last hop" router for G) will first
          join the (*,G) tree.  As it receives multicast traffic on the
          (*,G) tree, it learns (by examining the IP headers of the
          multicast data packets) the sources that are transmitting to G.
          Typically, when a last hop router for group G learns that source S
          is transmitting to G, the last hop router joins the (S,G) tree
          and "prunes" S off the (*,G) tree.  This allows each last hop
          router to receive the multicast data along the shortest path from the
          source to the last hop router. (Full details of this behavior
          can be found in <xref target="RFC4601"/>.)
        </t>
        <t>
          In some cases, however, a last hop router for group G may decide
          not to join the source trees, but rather to keep receiving all the
          traffic for G from the (*,G) tree.  In this case, we say that the
          last hop router has "threshold infinity" for group G. This is
          optional behavior documented in <xref
          target='RFC4601'/>. "Threshold infinity" is often used in
          deployments where the RP is between the multicast sources and the
          multicast receivers for group G, i.e., in deployments where it is
          known that the shortest path from any source to any receiver of
          the group goes through the RP. In these deployments, there is no
          advantage for a last hop router to join a source tree since the
          data is already traveling along the shortest path.  The only
          effect of executing the complicated procedures for joining a
          source tree and pruning the source off the shared tree would be to
          increase the amount of multicast routing state that has to be
          maintained in the network.
        </t>
        <t>
	  To efficiently use mLDP in-band signaling in this scenario, it is
	  necessary for the Egress LSRs to construct an Opaque Value TLV
	  that identifies a (*,G) tree.  This is done by using the wildcard
	  in the IP source address subfield and setting the IP group
	  address subfield to G.
        </t>
        <t>
          Note that these mLDP in-band signaling procedures do not support
          PIM-ASM in scenarios where "threshold infinity" is not used.
        </t>
    </section>

    <section title="IGMP/MLD Proxying" anchor="IGMPProxy">
      <t>
	There are scenarios where the multicast senders and receivers are
        directly connected to an MPLS routing domain, and where it is
        desired to use mLDP rather than PIM to set up "trees" through that
        domain.
      </t>
      <t>
        In these scenarios, we can apply "IGMP/MLD proxying" and eliminate
        the use of PIM. The senders and receivers consider the MPLS domain
        to be single hop between each other. <xref target='RFC4605'/>
        documents procedures where a multicast routing protocol is not
        necessary to build a "simple tree". Within the MPLS domain, mLDP
        will be used to build an MP-LSP, but this is hidden from the senders
        and receivers.  The procedures defined in <xref target='RFC4605'/>
        are applicable since the senders and receivers are considered to be
        one hop away from each other.
      </t>
      <t>
	For mLDP to build the necessary MP-LSP, it needs to know the root of
	the tree. Following the procedures as defined in <xref
	target='RFC4605'/>, we depend on manual configuration of the mLDP
	root for the ASM multicast group. Since the MP-LSP for a given ASM
        multicast group will carry traffic from all the sources for that
        group, the Opaque Value TLV used to construct the MP-LSP will
        contain a wildcard in the IP source address subfield.
      </t>
    </section>

    <section title="Selective Source Mapping">
      <t>
	In many IPTV deployments, the content servers are gathered into a
	small number of sites.  Popular channels are often statically
	configured and forwarded over a core MPLS network to the Egress
	routers. Since these channels are statically defined, they MAY also
	be forwarded over a multipoint LSP with wildcard encoding. The sort
	of wildcard encoding that needs to be used (source and/or group)
	depends on the source/group allocation policy of the IPTV
	provider. Other options are to use MSDP <xref target='RFC3618'/> or
	BGP "Auto-Discovery" procedures <xref target='RFC6513'/> for source
	discovery by the Ingress LSR. Based on the received wildcard, the
	Ingress LSR can select from the set of IP multicast streams for
        which it has state.
      </t>
    </section>
  </section>
  
  <section title="Procedures for Wildcard Source Usage" anchor="wildsource">
    <t>
      The decision to use mLDP in-band signaling is made by the IP multicast
      component of an Egress LSR, based on provisioned policy.  The decision
      to use (or not to use) a wildcard in the IP source address subfield
      of an mLDP Opaque Value TLV is also made by the IP multicast
      component, again based on provisioned policy.  Following are some
      example policies that may be useful:
      <list style="numbers">
	<t>
	  Suppose that PIM is enabled, an Egress LSR needs to join a
	  non-bidirectional ASM group G, and the RP for G is reachable via a
	  BGP route.  The Egress LSR may choose the BGP Next Hop of the
	  route to the RP to be the Ingress LSR (root node) of the MP-LSP
	  corresponding to the (*,G) tree (see also <xref
	  target="root_node_address"/>).  The Egress LSR may identify the
	  (*,G) tree by using an mLDP Opaque Value TLV whose IP source
	  address subfield contains a wildcard, and whose IP group address
	  subfield contains G.
	</t>
	<t>
	  Suppose that PIM is not enabled for group G, and an IGMP/MLD group
	  membership report for G has been received by an Egress LSR.  The
	  Egress LSR may determine the "proxy device" for G (see <xref
	  target="IGMPProxy"/>).  It can then set
	  up an MP-LSP for which the proxy device is the Ingress LSR.  The
	  Egress LSR needs to signal the Ingress LSR that the MP-LSP is to
	  carry traffic belonging to group G; it does this by using an
	  Opaque Value TLV whose IP source address subfield contains a
	  wildcard, and whose IP group address subfield contains G.
	</t>
      </list>
    </t>
    <t>
      As the policies needed in any one deployment may be very different
      than the policies needed in another, this document does not
      specify any particular set of policies as being mandatory to
      implement. 
    </t>
    <t>
      When the Ingress LSR receives an mLDP Opaque Value TLV that has been
      defined for in-band signaling, the information from the subfields
      of that TLV is passed to the IP multicast component of the Ingress
      LSR.  If the IP source address subfield contains a wildcard, the IP
      multicast component must determine how to process it.  The
      processing MUST follow the rules below:
      <list style="numbers">
	<t>
	  If PIM is enabled and the group identified in the Opaque Value
	  TLV is a non-bidirectional ASM group, the Ingress LSR acts as if
	  it had received a (*,G) IGMP/MLD report from a downstream node,
	  and the procedures defined in <xref target="RFC4601"/> are
	  followed.
	</t>
	<t>
	  If PIM is enabled and the identified group is a PIM-SSM group, all
	  multicast sources known for the group on the Ingress LSR are to be
	  forwarded down the MP-LSP.  In this scenario, it is assumed that
	  the Ingress LSR is already receiving all the necessary traffic.
	  How the Ingress LSR receives this traffic is outside the scope of
	  this document.
	</t>
	<t>
	  If PIM is not enabled for the identified group, the Ingress LSR
	  acts as if it had received a (*,G) IGMP/MLD report from a
	  downstream node, and the procedures as defined in <xref
	  target='RFC4605'/> are followed.  The Ingress LSR should forward
	  the (*,G) packets to the Egress LSR through the MP-LSP identified
	  by the Opaque Value TLV. (See also <xref target="IGMPProxy" />.)
	</t>
      </list>
    </t>
  </section>

    <section title="Procedures for Wildcard Group Usage" anchor="wildgroup">
      <t>
	The decision to use mLDP in-band signaling is made by the IP
	multicast component of an Egress LSR based on provisioned policy.
	The decision to use (or not to use) a wildcard in the IP group
	address subfield of an mLDP Opaque Value TLV is also made by the IP
	multicast component of the Egress LSR, again based on provisioned
	policy.  As the policies needed in any one deployment may be very
	different than the policies needed in another, this document does
	not specify any particular set of policies as being mandatory to
	implement.
      </t>
      <t>
	When the Ingress LSR (i.e., the root node of the MP-LSP) receives an
	mLDP Opaque Value TLV that has been defined for in-band signaling,
	the information from the subfields of that TLV is passed to the IP
	multicast component of the Ingress LSR.  If the IP group address
	subfield contains a wildcard, then the Ingress LSR examines its IP
	multicast routing table to find all the IP multicast streams whose
	IP source address is the address specified in the IP source address
	subfield of the TLV.  All these streams SHOULD be forwarded down
	the MP-LSP identified by the Opaque Value TLV.  Note that some of
	these streams may have SSM group addresses, while some may have ASM
	group addresses.
      </t>
    </section>

    <section title="Determining the MP-LSP Root (Ingress LSR)"
             anchor="root_node_address"> 
<!--[rfced] How may this sentence be rephrased for clarity? Please review
     and let us know the intended meaning.

ORIGINAL
When a wildcard source encoding is used, PIM is enabled, and the group is a
non-bidirectional ASM group, a similar procedure is applied.

PERHAPS
When a wildcard source encoding is used, PIM is enabled, and when the group is
a non-bidirectional ASM group, a similar procedure is applied.
-->
      <t>
	<xref target="RFC6826"/> and <xref target="RFC7246"/> describe
	procedures by which an Egress LSR may determine the MP-LSP root node
	address corresponding to a given (S,G) IP multicast stream.  That
	determination is based upon the IP address of the source ("S") of
	the multicast stream.  To follow the procedures of this document, it
	is necessary to determine the MP-LSP root node corresponding to a
	given (*,G) set of IP multicast streams.  The only difference from
	the above mentioned procedures is that the Proxy device or RP
	address is used instead of the source to discover the mLDP root node
	address.
      </t>
      <t>
        Other procedures for determining the root node are also allowed, as
        determined by policy.
      </t>
    </section>

    <section title="Anycast RP">
      <t>
	In the scenarios where mLDP in-band signaling is used, it is
	unlikely that the RP-to-group mappings are being dynamically
	distributed over the MPLS core. It is more likely that the RP
	address is statically configured at each multicast site. In these
	scenarios, it is advisable to configure an Anycast RP address at
	each site in order to provide redundancy. See <xref
	target='RFC3446'/> for more details.
      </t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>
	There are no security considerations other than ones already
	mentioned in <xref target="RFC5036"/>, <xref target="RFC6826"/>, and
	<xref target="RFC7246"/>.
      </t>
    </section>

  </middle>

  <back>
    
    <references title="Normative References">

<reference anchor='RFC2119' target="http://www.rfc-editor.org/info/rfc2119">
<front>
<title abbrev='RFC Key Words'>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='Scott Bradner'>
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass. Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street></postal>
<phone>- +1 617 495 3864</phone>
<email>sob@harvard.edu</email></address></author>
<date year='1997' month='March' />
</front>
<seriesInfo name='BCP' value='14' />
<seriesInfo name='RFC' value='2119' />
<format type='TXT' octets='4723' target='http://www.rfc-editor.org/rfc/rfc2119.txt' />
<format type='HTML' octets='17970' target='http://xml.resource.org/public/rfc/html/rfc2119.html' />
<format type='XML' octets='5777' target='http://xml.resource.org/public/rfc/xml/rfc2119.xml' />
</reference>

<reference anchor='RFC4601' target="http://www.rfc-editor.org/info/rfc4601">
<front>
<title>Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol
Specification (Revised)
</title>
<author initials='B.' surname='Fenner' fullname='B. Fenner'>
<organization /></author>
<author initials='M.' surname='Handley' fullname='M. Handley'>
<organization /></author>
<author initials='H.' surname='Holbrook' fullname='H. Holbrook'>
<organization /></author>
<author initials='I.' surname='Kouvelas' fullname='I. Kouvelas'>
<organization /></author>
<date year='2006' month='August' />
</front>
<seriesInfo name='RFC' value='4601' />
<format type='TXT' octets='340632' target='http://www.rfc-editor.org/rfc/rfc4601.txt' />
<format type='PDF' octets='304538' target='http://www.rfc-editor.org/rfc/rfc4601.pdf' />
</reference>

<reference anchor='RFC4605' target="http://www.rfc-editor.org/info/rfc4605">
<front>
<title>Internet Group Management Protocol (IGMP) / Multicast Listener Discovery (MLD)-Based Multicast Forwarding ("IGMP/MLD Proxying")</title>
<author initials='B.' surname='Fenner' fullname='B. Fenner'>
<organization /></author>
<author initials='H.' surname='He' fullname='H. He'>
<organization /></author>
<author initials='B.' surname='Haberman' fullname='B. Haberman'>
<organization /></author>
<author initials='H.' surname='Sandick' fullname='H. Sandick'>
<organization /></author>
<date year='2006' month='August' />
</front>
<seriesInfo name='RFC' value='4605' />
<format type='TXT' octets='25558' target='http://www.rfc-editor.org/rfc/rfc4605.txt' />
</reference>

<reference anchor='RFC5036' target="http://www.rfc-editor.org/info/rfc5036">
<front>
<title>LDP Specification</title>
<author initials='L.' surname='Andersson' fullname='L. Andersson'>
<organization /></author>
<author initials='I.' surname='Minei' fullname='I. Minei'>
<organization /></author>
<author initials='B.' surname='Thomas' fullname='B. Thomas'>
<organization /></author>
<date year='2007' month='October' />
</front>
<seriesInfo name='RFC' value='5036' />
<format type='TXT' octets='287101' target='http://www.rfc-editor.org/rfc/rfc5036.txt' />
</reference>

<reference anchor='RFC6826' target="http://www.rfc-editor.org/info/rfc6826">
<front>
<title>Multipoint LDP In-Band Signaling for Point-to-Multipoint and Multipoint-to-Multipoint Label Switched Paths</title>
<author initials='IJ.' surname='Wijnands' fullname='IJ. Wijnands'>
<organization /></author>
<author initials='T.' surname='Eckert' fullname='T. Eckert'>
<organization /></author>
<author initials='N.' surname='Leymann' fullname='N. Leymann'>
<organization /></author>
<author initials='M.' surname='Napierala' fullname='M. Napierala'>
<organization /></author>
<date year='2013' month='January' />
</front>
<seriesInfo name='RFC' value='6826' />
<format type='TXT' octets='23927' target='http://www.rfc-editor.org/rfc/rfc6826.txt' />
</reference>

<reference anchor='RFC7246' target="http://www.rfc-editor.org/info/rfc7246">
<front>
<title>Multipoint Label Distribution Protocol In-Band Signaling in a Virtual Routing and Forwarding (VRF) Table Context</title>
<author initials='IJ.' surname='Wijnands' fullname='IJ. Wijnands'>
<organization /></author>
<author initials='P.' surname='Hitchen' fullname='P. Hitchen'>
<organization /></author>
<author initials='N.' surname='Leymann' fullname='N. Leymann'>
<organization /></author>
<author initials='W.' surname='Henderickx' fullname='W. Henderickx'>
<organization /></author>
<author initials='A.' surname='Gulko' fullname='A. Gulko'>
<organization /></author>
<author initials='J.' surname='Tantsura' fullname='J. Tantsura'>
<organization /></author>
<date year='2014' month='June' />
</front>
<seriesInfo name='RFC' value='7246' />
<format type='TXT' octets='24698' target='http://www.rfc-editor.org/rfc/rfc7246.txt' />
</reference>

    </references>

    <references title="Informative References">

<reference anchor='RFC3446' target="http://www.rfc-editor.org/info/rfc3446">
<front>
<title>Anycast Rendevous Point (RP) mechanism using Protocol Independent Multicast (PIM) and Multicast Source Discovery Protocol (MSDP)</title>
<author initials='D.' surname='Kim' fullname='D. Kim'>
<organization /></author>
<author initials='D.' surname='Meyer' fullname='D. Meyer'>
<organization /></author>
<author initials='H.' surname='Kilmer' fullname='H. Kilmer'>
<organization /></author>
<author initials='D.' surname='Farinacci' fullname='D. Farinacci'>
<organization /></author>
<date year='2003' month='January' />
</front>
<seriesInfo name='RFC' value='3446' />
<format type='TXT' octets='14792' target='http://www.rfc-editor.org/rfc/rfc3446.txt' />
</reference>

<reference anchor='RFC3618' target="http://www.rfc-editor.org/info/rfc3618">
<front>
<title>Multicast Source Discovery Protocol (MSDP)</title>
<author initials='B.' surname='Fenner' fullname='B. Fenner'>
<organization /></author>
<author initials='D.' surname='Meyer' fullname='D. Meyer'>
<organization /></author>
<date year='2003' month='October' />
</front>
<seriesInfo name='RFC' value='3618' />
<format type='TXT' octets='42238' target='http://www.rfc-editor.org/rfc/rfc3618.txt' />
</reference>

<reference anchor='RFC5015' target="http://www.rfc-editor.org/info/rfc5015">
<front>
<title>Bidirectional Protocol Independent Multicast (BIDIR-PIM)</title>
<author initials='M.' surname='Handley' fullname='M. Handley'>
<organization /></author>
<author initials='I.' surname='Kouvelas' fullname='I. Kouvelas'>
<organization /></author>
<author initials='T.' surname='Speakman' fullname='T. Speakman'>
<organization /></author>
<author initials='L.' surname='Vicisano' fullname='L. Vicisano'>
<organization /></author>
<date year='2007' month='October' />
</front>
<seriesInfo name='RFC' value='5015' />
<format type='TXT' octets='96431' target='http://www.rfc-editor.org/rfc/rfc5015.txt' />
</reference>

<reference anchor='RFC6513' target="http://www.rfc-editor.org/info/rfc6513">
<front>
<title>Multicast in MPLS/BGP IP VPNs</title>
<author initials='E.' surname='Rosen' fullname='E. Rosen'>
<organization /></author>
<author initials='R.' surname='Aggarwal' fullname='R. Aggarwal'>
<organization /></author>
<date year='2012' month='February' />
</front>
<seriesInfo name='RFC' value='6513' />
<format type='TXT' octets='213780' target='http://www.rfc-editor.org/rfc/rfc6513.txt' />
</reference>

<reference anchor='RFC6514' target="http://www.rfc-editor.org/info/rfc6514">
<front>
<title>BGP Encodings and Procedures for Multicast in MPLS/BGP IP VPNs</title>
<author initials='R.' surname='Aggarwal' fullname='R. Aggarwal'>
<organization /></author>
<author initials='E.' surname='Rosen' fullname='E. Rosen'>
<organization /></author>
<author initials='T.' surname='Morin' fullname='T. Morin'>
<organization /></author>
<author initials='Y.' surname='Rekhter' fullname='Y. Rekhter'>
<organization /></author>
<date year='2012' month='February' />
</front>
<seriesInfo name='RFC' value='6514' />
<format type='TXT' octets='145112' target='http://www.rfc-editor.org/rfc/rfc6514.txt' />
</reference>

<!--draft-ietf-bess-mvpn-global-table-mcast-00: I-D Exists-->
<reference anchor="GTM">
	<front>
          <title>Global Table Multicast with BGP-MVPN Procedures</title>
          <author initials="J" surname="Zhang">
	    <organization />
	  </author>
          <author initials="L" surname="Giulano">
	    <organization />
	  </author>
          <author initials="E" surname="Rosen">
	    <organization />
	  </author>
          <author initials="K" surname="Subramanian">
	    <organization />
	  </author>
          <author initials="D" surname="Pacella">
	    <organization />
	  </author>
          <author initials="J" surname="Schiller">
	    <organization />
	  </author>
          <date month='November' year='2014' />
        </front>
	<seriesInfo name='Work in Progress,'
                    value='draft-ietf-bess-mvpn-global-table-mcast-00' /> 
	<format type='TXT'
		target='http://tools.ietf.org/id/draft-ietf-l3vpn-mvpn-global-table-mcast-00.txt'
                /> 
      </reference>
    </references>

<!--[rfced] FYI, the following updates will be applied during
post-xml2rfc processing in accordance with RFC 7322.

- Removal of the "Appendix" designation from the heading of the
 Acknowledgments section.

- Addition of the Authors' Addresses section to the table of contents.
-->
    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>
        We would like to thank Loa Andersson, Pranjal Dutta, Lizhong Jin,
        and Curtis Villamizar for their review and comments.
      </t> 
    </section>

  </back>



</rfc>
