<?xml version="1.1" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC6513 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6513.xml">
<!ENTITY RFC6514 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6514.xml">
<!ENTITY RFC3618 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3618.xml">
<!ENTITY RFC7716 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7716.xml">
]>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc strict="no"?>
<?rfc rfcedstyle="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" updates="6514" docName="draft-ietf-bess-mvpn-msdp-sa-interoperation-07" ipr="trust200902">
  <front>
    <title abbrev="mvpn-sa-msdp">MVPN and MSDP SA Interoperation</title>

    <author fullname="Zhaohui Zhang" initials="Z." surname="Zhang">
      <organization>Juniper Networks</organization>
      <address>
        <email>zzhang@juniper.net</email>
      </address>
    </author>

    <author fullname="Lenny Giuliano" initials="L." surname="Giuliano">
      <organization>Juniper Networks</organization>
      <address>
        <email>lenny@juniper.net</email>
      </address>
    </author>

    <date year="2021"/>

    <workgroup>BESS</workgroup>

    <abstract>
      <t>This document specifies the procedures for interoperation between
         Multicast Virtual Private Network (MVPN) Source Active routes and
       customer Multicast Source Discovery Protocol (MSDP) Source Active routes,
         which is useful for MVPN provider networks offering services to
         customers with an existing MSDP infrastructure. Without the procedures
         described in this document, VPN-specific MSDP sessions are required
         among the PEs that are customer MSDP peers. This document updates
         RFC6514.
      </t>
    </abstract>
    <note title="Requirements Language">
      <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 BCP 14 <xref target="RFC2119"/> <xref
          target="RFC8174"/> when, and only when, they appear in all
          capitals, as shown here.
      </t>
    </note>
  </front>

  <middle>
    <section title="Terminologies">
    <t>Familiarity with MVPN and MSDP protocols and procedures is assumed.
       Some terminologies are listed below for convenience.
       <list style="symbols">
    <t>ASM: Any source multicast.
    </t>
    <t>SPT: Source-specific Shortest-path Tree.
    </t>
    <t>RPT: Rendezvous Point Tree.
    </t>
    <t>C-S: A multicast source address, identifying a multicast source
            located at a VPN customer site.
    </t>
    <t>C-G: A multicast group address used by a VPN customer.
    </t>
    <t>C-RP: A multicast Rendezvous Point for a VPN customer.
    </t>
	<t>C-Multicast: Multicast for a VPN customer.
	</t>
    <t>EC: Extended Community.
    </t>
	<t>GTM: Global Table Multicast, i.e., multicast in the default or global
	routing table vs. VRF table.
	</t>
       </list>
    </t>
    </section>
    <section title="Introduction">
    <t>Section "14. Supporting PIM-SM without Inter-Site Shared C-Trees" of
       [RFC6514] specifies the procedures for MVPN PEs to discover (C-S,C-G)
       via MVPN Source Active A-D routes and then send (C-S,C-G) C-multicast
       routes towards the ingress PEs, to establish SPTs for customer ASM flows
       for which they have downstream receivers.
       (C-*,C-G) C-multicast routes are not sent among the PEs so inter-site
       shared C-Trees are not used and the method is generally referred to as
       "spt-only" mode.
    </t>
    <t>With this mode, the MVPN Source Active routes are functionally similar to
       MSDP Source-Active messages <xref target="RFC3618"/>. For a VPN,
	   one or more of the PEs, say PE1,
       either act as a C-RP and learn of (C-S,C-G) via PIM Register messages,
       or have MSDP sessions with some MSDP peers and learn (C-S,C-G) via
       MSDP SA messages. In either case, PE1 will then originate MVPN SA
       routes for other PEs to learn the (C-S,C-G).
    </t>
    <t>[RFC6514] only specifies that a PE receiving the MVPN SA routes,
       say PE2,  will advertise (C-S,C-G) C-multicast routes if it has
       corresponding (C-*,C-G) state learnt from its CE. PE2 may also have MSDP
       sessions for the VPN with other C-RPs at its site, but
       [RFC6514] does not specify that it advertises MSDP SA messages to those
       MSDP peers for the (C-S,C-G) that it learns via MVPN SA routes. 
       PE2 would need to have an MSDP session with PE1 (that advertised the
       MVPN SA messages) to learn the sources via MSDP SA messages, for it to
       advertise the MSDP SA to its local peers. To make things worse, unless
       blocked by policy control, PE2 would in turn advertise MVPN SA routes
       because of those MSDP SA messages that it receives from PE1, which are
       redundant and unnecessary. Also notice that the PE1-PE2 MSDP
       session is VPN-specific, while the BGP sessions over which the MVPN
       routes are advertised are not.
    </t>
    <t>If a PE does advertise MSDP SA messages based on received  MVPN SA
       routes, the VPN-specific MSDP sessions with other PEs are no longer needed.
       Additionally, this MVPN/MSDP SA interoperation has the following
       inherent benefits for a BGP based solution.
       <list style="symbols">
          <t>MSDP SA refreshes are replaced with BGP hard state.
          </t>
          <t>Route Reflectors can be used instead of having peer-to-peer sessions.
          </t>
          <t>VPN extranet mechanisms can be used to propagate (C-S,C-G)
             information across VPNs with flexible policy control.
          </t>
       </list>
    </t>
    <t>While MSDP Source Active routes contain the 
source, group and RP addresses of a given multicast flow, MVPN Source Active 
routes only contain the source and group.  MSDP requires the RP address 
information in order to perform peer-RPF.  Therefore, this document 
describes how to convey the RP address information into the MVPN Source 
Active route using an Extended Community so this information can be shared 
with an existing MSDP infrastructure.  
    </t>
    <t>The procedures apply to Global Table Multicast (GTM) [RFC7716] as well.
    </t>
    <section title="MVPN RPT-SPT Mode">
    <t>For comparison, another method of supporting customer ASM is generally
       referred to as "rpt-spt" mode. Section "13. Switching from a Shared 
       C-Tree to a Source C-Tree" of [RFC6514] specifies the MVPN SA procedures
       for that mode, but those SA routes are a replacement for PIM-ASM
       assert and (s,g,rpt) prune mechanisms, not for source discovery purposes.
       MVPN/MSDP SA interoperation for the "rpt-spt" mode is outside of the scope
       of this document. In the rest of the document, the "spt-only" mode is
       assumed.
    </t>
    </section>
    </section>
    <section title="Specification">
    <t>The MVPN PEs that act as customer RPs or have one or more MSDP sessions
       in a VPN (or the global table in case of GTM) are treated as an MSDP
       mesh group for that VPN (or the global table). In the rest of the
       document, it is referred to as the PE mesh group. This PE mesh group
	   MUST NOT include other MSDP speakers, and is integrated
       into the rest of MSDP infrastructure for the VPN (or the global table)
       following normal MSDP rules and practices.
    </t>
    <t>When an MVPN PE advertises an MVPN SA route following procedures in
       [RFC6514] for the "spt-only" mode,
       it SHOULD attach an "MVPN SA RP-address Extended Community". This
       is a Transitive IPv4-Address-Specific Extended Community. The Local
       Administrative field is set to zero and the Global Administrative field
       is set to an RP address determined as the following:
       <list style="symbols">
          <t>If the (C-S,C-G) is learnt as result of PIM Register
             mechanism, the local RP address for the C-G is used.
          </t>
          <t>If the (C-S,C-G) is learnt as result of incoming MSDP SA messages,
             the RP address in the selected MSDP SA message is used.
          </t>
       </list>
    </t>
    <t>In addition to procedures in [RFC6514], an MVPN PE may be provisioned
       to generate MSDP SA messages from received MVPN SA routes, with or
       without local policy control. If a received MVPN SA route triggers an
       MSDP SA message, the MVPN SA route is treated as if a corresponding MSDP SA message
       was received from within the PE mesh group and normal MSDP procedure
       is followed (e.g. an MSDP SA message is advertised to other MSDP peers
       outside the PE mesh group). The (S,G) information comes from the
       (C-S,C-G) encoding in the MVPN SA NLRI and the RP address comes from
       the "MVPN SA RP-address EC" mentioned above.
       If the received MVPN SA route does not have the EC (this could
       be from a legacy PE that does not have the capability to attach the EC),
       the local RP address for the C-G is used. In that case,
   it is possible that the receiving PE's RP for the C-G is actually the MSDP peer
   to which the generated MSDP message is advertised, causing the peer to
   discard it due to RPF failure. To get around that problem the peer SHOULD
   use local policy to accept the MSDP SA message.
    </t>
    <t>An MVPN PE MAY treat only the best MVPN SA route selected by the BGP route
       selection process (instead of all
       MVPN SA routes) for a given (C-S,C-G) as a received MSDP SA message (and
       advertise the corresponding MSDP message). In that case, if the selected
       best MVPN SA route does not have the "MVPN SA RP-address
       EC" but another route for the same (C-S, C-G) does, then the next
       best route with the EC SHOULD be chosen.  As a result, when/if the
       best MVPN SA route with the EC changes, a new MSDP SA message is 
 advertised if the RP address determined according to the newly selected
 MVPN SA route is different from before. The previously advertised MSDP
 SA message with the older RP address will be timed out.
    </t>
    </section>
    <section anchor="Security" title="Security Considerations">
      <t>
RFC6514 specifies the procedure for a PE to generate an MVPN SA upon 
discovering a (C-S,C-G) flow (e.g. via a received MSDP SA message) in a VPN.
This document extends this capability in the reverse direction -
upon receiving an MVPN SA route in a VPN generate
corresponding MSDP SA and advertise to MSDP peers in the same VPN.  
As such, the capabilities specified in this document introduce no 
additional security considerations beyond those already specified in 
RFC6514 and RFC3618.  Moreover, the capabilities specified in this document 
actually eliminate the control message amplification that exists today 
where VPN-specific MSDP sessions are required among the PEs that are 
customer MSDP peers, which lead to redundant messages (MSDP SAs and MVPN 
SAs) being carried in parallel between PEs.
      </t>
    </section>
    <section title="IANA Considerations" anchor="sarpec">
    <t>This document introduces a new Transitive IPv4 Address Specific
       Extended Community "MVPN SA RP-address Extended Community".
       IANA has registered subcode 0x20 in the Transitive IPv4-Address-Specific
       Extended Community Sub-Types registry for this EC.
    </t>
    </section>
    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors thank Eric Rosen and Vinod Kumar for their review, comments,
         questions and suggestions for this document. The authors also
         thank Yajun Liu for her review and comments.
      </t>
    </section>
   </middle>

  <back>
    <references title="Normative References">
	  &RFC2119;
	  &RFC8174;
      &RFC6514;
    </references>

    <references title="Informative References">
      &RFC3618;
      &RFC7716;
    </references>
  </back>
</rfc>
