<?xml version="1.0"?>
<?rfc toc="yes"?><?rfc tocompact="yes"?><?rfc tocdepth="3"?><?rfc tocindent="yes"?><?rfc symrefs="yes"?><?rfc sortrefs="yes"?><?rfc comments="yes"?><?rfc inline="yes"?><?rfc compact="yes"?><?rfc subcompact="no"?><rfc docName="draft-morin-multicast-damping-01" ipr="trust200902">
  <front>
    <title abbrev="Multicast state damping">Multicast state damping</title>

    <author fullname="Thomas Morin" initials="T" role="editor" surname="Morin">
      <organization>Orange</organization>

      <address>
        <postal>
          <street>2, avenue Pierre Marzin</street>

          <city>Lannion</city>

          <code>22307</code>

          <country>France</country>
        </postal>

        <email>thomas.morin@orange.com</email>
      </address>
    </author>

    <author fullname="Stephane Litkowski" initials="S" surname="Litkowski">
      <organization>Orange</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country>France</country>
        </postal>

        <email>stephane.litkowski@orange.com</email>
      </address>
    </author>

    <author fullname="Keyur Patel" initials="K" surname="Patel">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>170 W. Tasman Drive</street>

          <city>San Jose</city>

          <region>CA</region>

          <code>95134</code>

          <country>USA</country>
        </postal>

        <email>keyupate@cisco.com</email>
      </address>
    </author>

    <author fullname="Jeffrey (Zhaohui) Zhang" initials="J" surname="Zhang">
      <organization abbrev="Juniper Networks">Juniper Networks
      Inc.</organization>

      <address>
        <postal>
          <street>10 Technology Park Drive</street>

          <city>Westford</city>

          <region>MA</region>

          <code>01886</code>

          <country>USA</country>
        </postal>

        <email>zzhang@juniper.net</email>
      </address>
    </author>

    <author fullname="Robert Kebler" initials="R" surname="Kebler">
      <organization abbrev="Juniper Networks">Juniper Networks
      Inc.</organization>

      <address>
        <postal>
          <street>10 Technology Park Drive</street>

          <city>Westford</city>

          <region>MA</region>

          <code>01886</code>

          <country>USA</country>
        </postal>

        <email>rkebler@juniper.net</email>
      </address>
    </author>

    <author fullname="Jeff Haas" initials="J" surname="Haas">
      <organization>Juniper Networks</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <email>jhaas@juniper.net </email>
      </address>
    </author>

    <date day="14" month="January" year="2014"/>

    <abstract>
      <t>This document describes procedures to damp multicast routing state
      changes and prevent the churn due to the multicast dynamicity at the
      edge of a network. The procedures described in this document help avoid
      uncontrolled control plane load increase on the core routing
      infrastructure. New procedures are proposed inspired from BGP unicast
      route damping principles, but adapted to multicast. They cover multicast
      and multicast in VPNs contexts.</t>
    </abstract>

    <note title="Requirements Language">
      <t>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 <xref target="RFC2119">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>When multicast receivers join and leave a said multicast group or
      channel at the edge of a network through multicast membership control
      protocols (IGMP, MLD), multicast routing protocols (e.g. PIM-SM, or
      mVPN) adjust multicast routing states accordingly to forward or prune
      multicast traffic to these receivers.</t>

      <t>Mechanisms need to be put in place to ensure that the load put on the
      control plane of core routers remains under control regardless of the
      frequency at which multicast memberships changes are made by end hosts.
      By nature multicast memberships change based on the behavior of
      multicast applications running on end hosts, hence the frequency of
      membership changes can legitimately be much higher than the typical
      churn of unicast routing states.</t>

      <t>This document describes procedures aimed at protecting the control
      plane of the core network infrastructure (more specifically edge
      routers, core routers and in the case of multicast in VPN contexts BGP
      Route Reflectors) while at the same time avoiding negative effects on
      the service provided, although at the expense of a minimal increase in
      average of bandwidth use in the network.</t>

      <t>The base principle is described in <xref target="overview"/>.
      Existing mechanisms that could be relied upon are discussed in <xref target="existing"/>. <xref target="procedures"/> details the proposed
      procedures.</t>

      <t>Sections <xref format="counter" target="mvpn"/> and <xref format="counter" target="evpn"/> provide more specific details related
      to multicast in VPNs contexts.</t>

      <t>Finally, <xref target="operational"/> discusses operational
      considerations related to the proposed mechanism.</t>
    </section>

    <section title="Terminology">
      <t>TBC</t>
    </section>

    <section anchor="overview" title="Overview">
      <t>The procedures described in this document allows the network operator
      to configure multicast routers so that they can delay the propagation of
      multicast state prune messages, when faced with a rate of multicast
      state dynamicity exceeding a certain configurable threshold. Assuming
      that the number of multicast states that can be created by a receiver is
      bounded, delaying the propagation of multicast state pruning results in
      setting up an upper bound to the average frequency at which the router
      will send state updates to an upstream router.</t>

      <t>From the point of view of a downstream router, this approach has no
      impact: the multicast routing states changes that it solicits to its
      upstream router will be honored without any additional delay. Indeed the
      propagation of joins is not impacted by the proposed defined procedures,
      and having the upstream router delay state prune propagation to its own
      upstream does not affect what traffic is sent to the downstream router.
      In particular, the amount of bandwidth used on the link downstream to a
      router applying this damping technique is not increased.</t>

      <t>This approach increases the average bandwidth utilization on a link
      upstream to a router applying this technique: indeed, the bandwidth of a
      said multicast flow will be used for a longer time than if no damping
      was applied. That said, it is expected that this technique will allow to
      meet the goals of protecting the multicast routing infrastructure
      control plane without a significant average increase of bandwidth; for
      instance, damping events happening at a frequency higher than one event
      per X second, can be done without increasing the time during which a
      multicast flow is present on a link of more than X second.</t>

      <t>To be practical, such a mechanism requires configurability, in
      particular, needs to offer means to control when damping is triggered
      and allow delaying Pruning for a longer period of time the more activity
      there is on a multicast state.</t>

      <t>Note that the issues related to control plane load due to the
      dynamicity of multicast sources coming and going in the context of ASM
      multicast, are out of the scope of this document.</t>
    </section>

    <section anchor="existing" title="Existing mechanisms">
      <section anchor="rate-limiting" title="Rate-limiting of multicast control traffic">
        <t><xref target="RFC4609"/> examines multicast security threats and
        among other things the risk described in <xref target="intro"/>. A
        mechanism relying on rate-limiting PIM messages is proposed in <xref target="RFC4609">section 5.3.3</xref>, but has the identified
        drawbacks of impacting the service delivered and having side-effects
        on legitimate users.</t>
      </section>

      <section anchor="existing-timers" title="Existing PIM, IGMP and MLD timers">
        <t>In the context of PIM multicast routing protocols (), a mechanism
        exists that in some context may offer a form of de facto damping
        mechanism for multicast states. Indeed, when active, the prune
        override mechanism consist in having a PIM upstream router delay for a
        certain time [prune override interval] before taking into account a
        PIM Prune message sent by a downstream neighbor. This mechanism has
        not been designed specifically for the purpose of damping multicast
        state, but as a means to allow PIM to operate on multi-access
        networks. See <xref target="RFC4601"/> section 4.3.3.</t>

        <t>However, when active, this mechanism will prevent a downstream
        router to produce multicast routing protocol messages for a said
        multicast state that would result in the upstream router to send, to
        its own upstream, multicast routing protocol messages at a rate higher
        than 1/[prune override interval].</t>

        <t>Similarly, the IGMP and MLD multicast membership control protocols
        can provide under the right conditions a similar behavior.</t>

        <t>These mechanisms are not considered suitable to meet the goals
        spelled out in <xref target="intro"/>, the main reasons being
        that:<list style="symbols">
            <t>when enabled these mechanisms require additional bandwidth on
            the local link on which the effect of a Prune is delayed</t>

            <t>to be active, they may require disabling features that may
            otherwise be required or useful; one typical example is explicit
            tracking for IGMP/MLD or PIM</t>

            <t>on certain implementation, would require disabling behavior
            that cannot be turned off</t>

            <t>do not provide a suitable level of configurability</t>

            <t>do not provide a way to discriminate between multicast flows
            based on an averaged estimation of their recent past
            dynamicity</t>
          </list></t>
      </section>

      <section anchor="unicast-damping" title="BGP Route Damping">
        <t>The procedures defined in <xref target="RFC2439"/> for BGP route
        flap damping are useful for operators who want to control the impact
        of unicast route churn on the routing infrastructure, and offer a
        standardized set of parameters to control damping.</t>

        <t>These procedures are not directly relevant in a multicast context,
        for the following reasons:<list style="symbols">
            <t>they are not specified for multicast routing protocol in
            general</t>

            <t>even in contexts where BGP routes are used to carry multicast
            routing states (e.g. <xref target="RFC6514"/>), these procedures
            do not allow to implement the principle described in this
            document, the main reason being that a damped route becomes
            suppressed, while the target behavior would be to keep advertising
            when damping is triggered on a multicast route</t>
          </list></t>

        <t>However, the set of parameters standardized to control the
        thresholds of the exponential decay mechanism can be relevantly
        reused. This is the approach proposed for the procedures described in
        this document (<xref target="procedures"/>). Motivations for doing so
        is to help the network operator deploy this feature based on
        consistent configuration parameter, and obtain predictable results,
        without the drawbacks of exposed in <xref target="rate-limiting"/> and
        <xref target="existing-timers"/>.</t>
      </section>
    </section>

    <section anchor="procedures" title="Procedures for multicast state damping">
      <t>This section describes procedures for multicast state damping
      satisfying the goals spelled out in <xref target="intro"/>. This section
      spells out procedures for (S,G) states in the PIM-SM protocol (<xref target="RFC4601"/> ; they apply unchanged for such states created based
      on multicast group management protocols (IGMP <xref target="RFC3376"/>,
      MLD <xref target="RFC3810"/>) on downstream interfaces. How these
      procedures apply for any-source multicast (ASM) routing state will be
      covered in a further revision. </t>

      <t>The following notions introduced in <xref target="RFC2439"/> are
      reused in these procedures:<list style="hanging">
          <t hangText="figure-of-merit:"><spanx style="strong"/>a number
          reflecting the current estimation of past recent activity of an
          (S,G) multicast routing state, which evolves based on routing events
          related to this state and based an exponential decay algorithm ; the
          activation or inactivation of damping on the state is based on this
          number</t>

          <t hangText="cutoff-threshold:">value of the <spanx style="strong">figure-of-merit</spanx>
          over which damping is applied (configurable parameter)</t>

          <t hangText="reuse-threshold:">value of the <spanx style="strong">figure-of-merit</spanx>
          under which damping stops being applied (configurable parameter)</t>

          <t hangText="decay-half-life:">period of time used to control how
          fast is the exponential decay of the <spanx style="strong">figure-of-merit</spanx>
          (configurable parameter)</t>
        </list></t>

      <t>Additionally to these values, a configurable "<spanx style="strong">increment-factor</spanx>"
      parameter is introduced, that controls by how much the <spanx style="strong">figure-of-merit</spanx> is incremented on multicast state
      update events.</t>

      <t>Section <xref target="defaults"/> will propose default values for all
      the configurable parameters.</t>

      <t>On reception of updated multicast membership or routing information
      on a downstream interface I for a said (S,G) state, that results in a
      change of the state of the PIM downstream state machine (see <xref target="RFC4601">section 4.5.3 of </xref>), a router implementing these
      procedures MUST:<list style="symbols">
          <t>apply unchanged procedures for everything relating to what
          multicast traffic ends up traffic being sent on downstream
          interfaces, including interface I</t>

          <t>increasing the <spanx style="strong">figure-of-merit</spanx> for
          the (S,G) by the <spanx style="strong">increment-factor</spanx>
          (updating the <spanx style="strong">figure-of-merit</spanx> based on
          the decay algorithm must be done prior to this increment)</t>

          <t>update the damping state for the (S,G) state: damping becomes
          active on the state if the recomputed <spanx style="strong">figure-of-merit</spanx>
          is above the configured <spanx style="strong">cutoff-threshold</spanx></t>

          <t>update the upstream state machine for (S,G) as per <xref target="RFC4601">section 4.5.7 of</xref>, with the following change:
          if the state machine transitions to NotJoined state because of the
          reception of a PIM or IGMP/MLD message on a downstream interface
          (i.e. in the terminology of <xref target="RFC4601"/>
          inherited_olist(S,G) becomes NULL ), and if damping is active on the
          state, the router SHOULD NOT send the resulting Prune(S,G) message
          to its upstream neighbor ; this message MUST be sent when the
          damping state becomes, i.e. inactive when <spanx style="strong">figure-of-merit</spanx>
          decays to a value below the configured <spanx style="strong">reuse-threshold</spanx></t>
        </list></t>

      <t/>

      <t>Same techniques as the ones described in <xref target="RFC2439"/> can
      be applied to determine when the figure-of-merit value is recomputed
      based on the exponential decay algorithm and the configured <spanx style="strong">decay-half-life</spanx>. Given the specificity of
      multicast applications, it is REQUIRED for the implementation to let the
      operator configure the <spanx style="strong">decay-half-life</spanx> in
      seconds, rather than in minutes. When the recomputation is done
      periodically, the period should be low enough to not significantly delay
      the inactivation of damping on a multicast state beyond what the
      operator wanted to configure (i.e. for a half-life of 10s, recomputing
      the <spanx style="strong">figure-of-merit</spanx> each minute would
      result in a multicast state to remained damped for a time longer than
      what the parameters are supposed to command).</t>

      <t>When a (S,G) state expires, its associated <spanx style="strong">figure-of-merit</spanx>
      and damping state are removed as well.</t>

      <t>These procedures do interact with PIM procedures related to refreshes
      or expiration of multicast routing states. Indeed, PIM Prune messages
      triggered by the expiration of the (S,G) keep-alive timer, are not
      suppressed or delayed (see <xref target="maximum-values"/> for a
      discussion on why this specific aspect is not expected to impede the
      efficiency of damping procedures), and the reception of Join messages
      not causing transition of state on the downstream interface does not
      lead to incrementing the <spanx style="strong">figure-of-merit</spanx>.</t>

      <t>Note that these procedures do not impact the PIM assert mechanism, in
      particular PIM Prune messages triggered by a change of the PIM assert
      winner on the upstream interface, are not suppressed or delayed.</t>

      <t>Note also that no action is triggered based on the reception of PIM
      Prune messages (or corresponding IGMP/MLD messages) that relate to
      non-existing (S,G) state, in particular, no <spanx style="strong">figure-of-merit</spanx>
      or damping state is created in this case.</t>
    </section>

    <section anchor="mvpn" title="Procedures for multicast in IP VPNs">
      <t>In VPN contexts, providing isolation between customers of a shared
      infrastructure is a core requirement resulting in even stringent
      expectations with regards to risks of denial of service attacks.
      Procedures for multicast support in IP VPNs are described in <xref target="RFC6513"/> and <xref target="RFC6514"/> and <xref target="RFC6514">section 16 of</xref> specifically spells out the need
      for damping the activity of C-multicast and Leaf Auto-discovery
      route.</t>

      <t>The procedures described in <xref target="procedures"/> can be
      applied in the VRF PIM-SM implementation (in the "C-PIM instance"), with
      the corresponding action to suppressing the emission of a Prune(S,G)
      message being to not withdraw the C-multicast Source Tree Join (C-S,C-G)
      BGP route. Implementation of <xref target="RFC6513"/> relying on the use
      of PIM to carry C-multicast routing information MUST support this
      technique.</t>

      <t>In the context of <xref target="RFC6514"/> where BGP is used to
      distribute C-multicast routing information, an additional option
      consists in applying damping at the level of the BGP implementation
      based on existing BGP damping mechanism, applied to C-multicast Source
      Tree Join routes and Shared Tree Join routes (and also Leaf A-D routes -
      see <xref target="ptunnel"/>), and modified to provide the same effect
      of procedures described in <xref target="procedures"/> along the
      following guidelines:<list style="symbols">
          <t>not withdrawing (instead of not advertising) damped routes</t>

          <t>providing means to configure the half-life in seconds if that
          option is not already available</t>

          <t>using parameters for the exponential decay that are specific to
          multicast, based on default values and multicast specific
          configuration</t>
        </list></t>

      <t>Note that in a context where BGP Route Reflectors are used, it can be
      considered useful to also be able to apply damping on RRs. Additionally,
      for mVPN Inter-AS deployments, it can be needed to protect one AS from
      the dynamicity of multicast VPN routing events from other ASes. In that
      perspective, it is RECOMMENDED for implementations to support damping
      mVPN C-multicast routes directly into BGP, without relying on the PIM-SM
      state machine.</t>

      <t>The choice to implement damping based on BGP routes or the procedures
      described in <xref target="procedures"/>, is up to the implementor, but
      at least one of the two MUST be implemented; keeping in mind that in
      contexts where damping on RRs and ASBRs the BGP approach is
      RECOMMENDED.</t>

      <t>Note well that damping SHOULD NOT be applied to BGP routes of the
      following sub-types: "Intra-AS I-PMSI A-D Route", "Inter-AS I-PMSI A-D
      Route", "S-PMSI A-D Route", and "Source Active A-D Route".</t>

      <t>The following sub-sections describe additional procedures providing
      coverage against harmful effects of high multicast membership state
      dynamicity specific to mVPNs, and preserving the goals spelled out in
      <xref target="intro"/>.</t>

      <section anchor="ptunnel" title="Damping P-tunnel change events">
        <t>When selective P-tunnels are used (see <xref target="RFC6513">section 7 of</xref>), the effect of updating the
        upstream state machine for a said (C-S,C-G) state on a PE connected to
        multicast receivers, is not only to generate activity to propagate
        C-multicast routing information to the source connected PE, but also
        to possibly trigger changes related to the P-tunnels carrying
        (C-S,C-G) traffic. Protecting the provider network for an excessive
        amount of change in the state of P-tunnels is required, and this
        section details how it can be done.</t>

        <t>A PE implementing these procedures for mVPN MUST damp Leaf A-D
        routes, in the same manner as it would for C-multicast routes (see
        <xref target="mvpn"/>).</t>

        <t>A PE implementing these procedures for mVPN MUST damp the activity
        related to removing itself from a P-tunnel. Possible ways to do so
        depend on the type of P-tunnel, and local implementation details are
        left up to the implementor.</t>

        <t>The following is proposed as example of how the above can be
        achieved.</t>

        <t><list style="symbols">
            <t>For P-tunnels implemented with the PIM protocol, this consists
            in applying multicast state damping techniques describe in <xref target="procedures"/>to the P-PIM instance, at least for (S,G)
            states corresponding to P-tunnels.</t>

            <t>For P-tunnels implemented with the mLDP protocol, this consists
            in applying damping techniques completely similar as the one
            described in <xref target="procedures"/>, but generalized to apply
            to mLDP states</t>

            <t>For root-initiated P-tunnel (P-tunnels implemented with the
            P2MP RSVP-TE, or relying on ingress replication), no particular
            action needs to be implemented to damp P-tunnels membership as
            soon as the activity of Leaf A-D route is damped</t>

            <t>Another possibility is to base the decision to join or not join
            the P-tunnel to which a said (C-S,C-G) is bound, and to advertise
            or not advertise a Leaf A-D route related to (C-S,C-G), based on
            whether or not a C-multicast Source Tree Join route is being
            advertised for (C-S,C-G), rather than by relying on the state of
            the C-PIM Upstream state machine for (C-S,C-G)</t>
          </list></t>
      </section>
    </section>

    <section anchor="evpn" title="Procedures for Ethernet VPNs">
      <t>Specifications exists to support or optimize multicast and broadcast
      in the context of Ethernet VPNs (<xref target="I-D.ietf-l2vpn-vpls-mcast"/>, <xref target="I-D.ietf-l2vpn-evpn"/>). The said specifications make use of
      S-PMSI and P-tunnels and for this reason, an implementation of these
      procedures MUST follow the procedures described in <xref target="ptunnel"/>.</t>
    </section>

    <section anchor="operational" title="Operational considerations">
      <section title="Enabling and configuring multicast damping">
        <t>In the context of flat multicast routing, it is proposed that
        enabling this multicast damping mechanism at the edge of a network
        providing a multicast service, for instance at receiver-facing routers
        or in ASBRs, will be sufficient to address the targeted issue.
        Additionally, these procedures can be enabled on core routers as
        well.</t>

        <t>In the context of multicast VPNs, these procedures would be enabled
        on PE routers. Additionally in the case of C-multicast routing based
        on BGP extensions (<xref target="RFC6514"/>) these procedures can be
        enabled on ASBRs, and possibly Route Reflectors as well.</t>
      </section>

      <section title="Troubleshooting and monitoring">
        <t>Implementing the damping mechanisms described in this document
        should be complemented by appropriate tools to observe and
        troubleshoot damping activity.</t>

        <t>More specifically it is RECOMMENDED to complement the existing
        interface providing information on multicast states with information
        on eventual damping of corresponding states (e.g. MRIB states). In the
        case of mVPN this applies also to information on P-tunnels damping,
        and when BGP is used for C-multicast routing propagation, to BGP
        C-multicast routes.</t>
      </section>

      <section anchor="maximum-values" title="Maximum values for exponential decay and thresholds parameters">
        <t>[TBC]</t>

        <t/>
      </section>

      <section anchor="defaults" title="Default values">
        <t>[TBC]</t>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document makes no request of IANA.</t>

      <t>Note to RFC Editor: this section may be removed on publication as an
      RFC.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The procedures defined in this document do not introduce additional
      security issues not already present in the contexts addressed, and
      actually aim at addressing some of the identified risks without
      introducing as much denial of service risk as some of the mechanisms
      already defined.</t>

      <t>The protection provided relates to the control plane of the multicast
      routing protocols, including the components implementing the routing
      protocols and the components responsible for updating the multicast
      forwarding plane.</t>

      <t>The procedures describe are meant to provide some level of protection
      for the router on which they are enabled by reducing the amount of
      routing state updates that it needs to send to its upstream neighbor or
      peers, but do not provide any reduction of the control plane load
      related to processing routing information from downstream neighbors.
      Protecting routers from an increase in control plane load due to
      activity on downstream interfaces toward core routers (or in the context
      of BGP-based mVPN C-multicast routing, BGP peers) shall rely upon the
      activation of damping on corresponding downstream neighbors (or BGP
      peers) and/or at the edge of the network. Protecting routers from an
      increase in control plane load due to activity on customer-facing
      downstream interfaces or downstream interfaces to routers in another
      administrative domain, is out of the scope of this document and should
      rely upon already defined mechanisms (see <xref target="RFC4609"/>).</t>

      <t>To be effective the procedures described here must be complemented by
      configuration limiting the number of multicast states that can be
      created on a multicast router through protocol interactions with
      multicast receivers, neighbor routers in adjacent ASes, or in multicast
      VPN contexts with multicast CEs. Note well that the two mechanism may
      interact: state for which Prune has been requested may still remain
      taken into account for some time if damping has been triggered and hence
      result in otherwise acceptable new state from being successfully
      created.</t>

      <t>Additionally, it is worth noting that these procedures are not meant
      to protect against peaks of control plane load, but only address
      averaged load. For instance, assuming a set of multicast states
      submitted to the same Join/Prune events, damping can prevent more than a
      certain number of Join/Prune messages to be sent upstream in the period
      of time that elapses between the reception of Join/Prune messages
      triggering the activation of damping on these states and when damping
      becomes inactive after decay.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>We would like to thank Bruno Decreane, Jeff Haas and Lenny Giuliano
      for discussions that helped shape this proposal. We would also like to
      thank Yakov Rekhter and Eric Rosen for their reviews and helpful
      comments. Thanks to Wim Henderickx for his comments and support of this
      proposal.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <!-- Begin inclusion reference.RFC.2119.xml. --><reference anchor="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"/>
<area>General</area>
<keyword>keyword</keyword>
<abstract>
<t>
   In many standards track documents several words are used to signify
   the requirements in the specification.  These words are often
   capitalized.  This document defines these words as they should be
   interpreted in IETF documents.  Authors who follow these guidelines
   should incorporate this phrase near the beginning of their document:

<list>
<t>
      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.
</t></list></t>
<t>
   Note that the force of these words is modified by the requirement
   level of the document in which they are used.
</t></abstract></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><!-- End inclusion reference.RFC.2119.xml. -->

      <!-- Begin inclusion reference.RFC.2439.xml. --><reference anchor="RFC2439">

<front>
<title>BGP Route Flap Damping</title>
<author initials="C." surname="Villamizar" fullname="Curtis Villamizar">
<organization>ANS</organization>
<address>
<email>curtis@ans.net</email></address></author>
<author initials="R." surname="Chandra" fullname="Ravi Chandra">
<organization>Cisco Systems</organization>
<address>
<email>rchandra@cisco.com</email></address></author>
<author initials="R." surname="Govindan" fullname="Ramesh Govindan">
<organization>ISI</organization>
<address>
<email>govindan@isi.edu</email></address></author>
<date year="1998" month="November"/>
<area>Routing</area>
<keyword>border gateway protocol</keyword>
<keyword>BGP</keyword>
<keyword>routing</keyword>
<abstract>
<t>
   A usage of the BGP routing protocol is described which is capable of
   reducing the routing traffic passed on to routing peers and therefore
   the load on these peers without adversely affecting route convergence
   time for relatively stable routes.  This technique has been
   implemented in commercial products supporting BGP. The technique is
   also applicable to IDRP.
</t>
<t>
   The overall goals are:

<list>
<t>
   o  to provide a mechanism capable of reducing router processing load
      caused by instability
</t>
<t>
   o  in doing so prevent sustained routing oscillations
</t>
<t>
   o  to do so without sacrificing route convergence time for generally
      well behaved routes.
</t></list></t>
<t>
   This must be accomplished keeping other goals of BGP in mind:

<list>
<t>
   o  pack changes into a small number of updates
</t>
<t>
   o  preserve consistent routing
</t>
<t>
   o  minimal addition space and computational overhead
</t></list></t>
<t>
   An excessive rate of update to the advertised reachability of a
   subset of Internet prefixes has been widespread in the Internet.
   This observation was made in the early 1990s by many people involved
   in Internet operations and remains the case.  These excessive updates
   are not necessarily periodic so route oscillation would be a
   misleading term.  The informal term used to describe this effect is
   "route flap".  The techniques described here are now widely deployed
   and are commonly referred to as "route flap damping".
</t></abstract></front>

<seriesInfo name="RFC" value="2439"/>
<format type="TXT" octets="86376" target="http://www.rfc-editor.org/rfc/rfc2439.txt"/>
<format type="XML" octets="86919" target="http://xml.resource.org/public/rfc/xml/rfc2439.xml"/>
</reference><!-- End inclusion reference.RFC.2439.xml. -->

      <!-- Begin inclusion reference.RFC.4601.xml. --><reference anchor="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"/>
<abstract>
<t>This document specifies Protocol Independent Multicast - Sparse Mode (PIM-SM). PIM-SM is a multicast routing protocol that can use the underlying unicast routing information base or a separate multicast-capable routing information base. It builds unidirectional shared trees rooted at a Rendezvous Point (RP) per group, and optionally creates shortest-path trees per source.&lt;/t&gt;&lt;t&gt; This document obsoletes RFC 2362, an Experimental version of PIM-SM. [STANDARDS-TRACK]</t></abstract></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><!-- End inclusion reference.RFC.4601.xml. -->

      <!-- Begin inclusion reference.RFC.3376.xml. --><reference anchor="RFC3376">

<front>
<title>Internet Group Management Protocol, Version 3</title>
<author initials="B." surname="Cain" fullname="B. Cain">
<organization/></author>
<author initials="S." surname="Deering" fullname="S. Deering">
<organization/></author>
<author initials="I." surname="Kouvelas" fullname="I. Kouvelas">
<organization/></author>
<author initials="B." surname="Fenner" fullname="B. Fenner">
<organization/></author>
<author initials="A." surname="Thyagarajan" fullname="A. Thyagarajan">
<organization/></author>
<date year="2002" month="October"/></front>

<seriesInfo name="RFC" value="3376"/>
<format type="TXT" octets="119726" target="http://www.rfc-editor.org/rfc/rfc3376.txt"/>
</reference><!-- End inclusion reference.RFC.3376.xml. -->

      <!-- Begin inclusion reference.RFC.3810.xml. --><reference anchor="RFC3810">

<front>
<title>Multicast Listener Discovery Version 2 (MLDv2) for IPv6</title>
<author initials="R." surname="Vida" fullname="R. Vida">
<organization/></author>
<author initials="L." surname="Costa" fullname="L. Costa">
<organization/></author>
<date year="2004" month="June"/>
<abstract>
<t>This document updates RFC 2710, and it specifies Version 2 of the ulticast Listener Discovery Protocol (MLDv2).  MLD is used by an IPv6 router to discover the presence of multicast listeners on directly attached links, and to discover which multicast addresses are of interest to those neighboring nodes.  MLDv2 is designed to be interoperable with MLDv1.  MLDv2 adds the ability for a node to report interest in listening to packets with a particular multicast address only from specific source addresses or from all sources except for specific source addresses. [STANDARDS-TRACK]</t></abstract></front>

<seriesInfo name="RFC" value="3810"/>
<format type="TXT" octets="153579" target="http://www.rfc-editor.org/rfc/rfc3810.txt"/>
</reference><!-- End inclusion reference.RFC.3810.xml. -->

      <!-- Begin inclusion reference.RFC.6513.xml. --><reference anchor="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"/>
<abstract>
<t>In order for IP multicast traffic within a BGP/MPLS IP VPN (Virtual Private Network) to travel from one VPN site to another, special protocols and procedures must be implemented by the VPN Service Provider.  These protocols and procedures are specified in this document. [STANDARDS-TRACK]</t></abstract></front>

<seriesInfo name="RFC" value="6513"/>
<format type="TXT" octets="213780" target="http://www.rfc-editor.org/rfc/rfc6513.txt"/>
</reference><!-- End inclusion reference.RFC.6513.xml. -->

      <!-- Begin inclusion reference.RFC.6514.xml. --><reference anchor="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"/>
<abstract>
<t>This document describes the BGP encodings and procedures for exchanging the information elements required by Multicast in MPLS/BGP IP VPNs, as specified in RFC 6513. [STANDARDS-TRACK]</t></abstract></front>

<seriesInfo name="RFC" value="6514"/>
<format type="TXT" octets="145112" target="http://www.rfc-editor.org/rfc/rfc6514.txt"/>
</reference><!-- End inclusion reference.RFC.6514.xml. -->

      <!-- Begin inclusion reference.I-D.ietf-l2vpn-vpls-mcast.xml. --><reference anchor="I-D.ietf-l2vpn-vpls-mcast">
<front>
<title>Multicast in VPLS</title>

<author initials="R" surname="Aggarwal" fullname="Rahul Aggarwal">
    <organization/>
</author>

<author initials="Y" surname="Rekhter" fullname="Yakov Rekhter">
    <organization/>
</author>

<author initials="Y" surname="Kamite" fullname="Yuji Kamite">
    <organization/>
</author>

<author initials="L" surname="Fang" fullname="Luyuan Fang">
    <organization/>
</author>

<date month="November" day="22" year="2013"/>

<abstract><t>[RFC4761] and [RFC4762] describe a solution for Virtual Private LAN Service (VPLS) multicast that relies on the use of point-to-point or multipoint-to-point unicast Label Switched Paths (LSPs) for carrying multicast traffic. This solution has certain limitations for certain VPLS multicast traffic profiles. For example, it may result in highly non-optimal bandwidth utilization when large amount of multicast traffic is to be transported.  This document describes solutions for overcoming a subset of the limitations of existing VPLS multicast solution. It describes procedures for VPLS multicast that utilize multicast trees in the service provider (SP) network. The solution described in this document allows sharing of one such multicast tree among multiple VPLS instances. Furthermore, the solution described in this document allows a single multicast tree in the SP network to carry traffic belonging only to a specified set of one or more IP multicast streams from one or more VPLS instances.</t></abstract>

</front>

<seriesInfo name="Internet-Draft" value="draft-ietf-l2vpn-vpls-mcast-16"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-l2vpn-vpls-mcast-16.txt"/>
</reference><!-- End inclusion reference.I-D.ietf-l2vpn-vpls-mcast.xml. -->

      <!-- Begin inclusion reference.I-D.ietf-l2vpn-evpn.xml. --><reference anchor="I-D.ietf-l2vpn-evpn">
<front>
<title>BGP MPLS Based Ethernet VPN</title>

<author initials="A" surname="Sajassi" fullname="Ali Sajassi">
    <organization/>
</author>

<author initials="R" surname="Aggarwal" fullname="Rahul Aggarwal">
    <organization/>
</author>

<author initials="W" surname="Henderickx" fullname="Wim Henderickx">
    <organization/>
</author>

<author initials="F" surname="Balus" fullname="Florin Balus">
    <organization/>
</author>

<author initials="A" surname="Isaac" fullname="Aldrin Isaac">
    <organization/>
</author>

<author initials="J" surname="Uttaro" fullname="Jim Uttaro">
    <organization/>
</author>

<date month="July" day="14" year="2013"/>

<abstract><t>This document describes procedures for BGP MPLS based Ethernet VPNs (EVPN).</t></abstract>

</front>

<seriesInfo name="Internet-Draft" value="draft-ietf-l2vpn-evpn-04"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-l2vpn-evpn-04.txt"/>
</reference><!-- End inclusion reference.I-D.ietf-l2vpn-evpn.xml. -->
    </references>

    <references title="Informative References">
      <!-- Begin inclusion reference.RFC.4609.xml. --><reference anchor="RFC4609">

<front>
<title>Protocol Independent Multicast - Sparse Mode (PIM-SM) Multicast Routing Security Issues and Enhancements</title>
<author initials="P." surname="Savola" fullname="P. Savola">
<organization/></author>
<author initials="R." surname="Lehtonen" fullname="R. Lehtonen">
<organization/></author>
<author initials="D." surname="Meyer" fullname="D. Meyer">
<organization/></author>
<date year="2006" month="October"/>
<abstract>
<t>This memo describes security threats for the larger (intra-domain or inter-domain) multicast routing infrastructures.  Only Protocol Independent Multicast - Sparse Mode (PIM-SM) is analyzed, in its three main operational modes: the traditional Any-Source Multicast (ASM) model, the source-specific multicast (SSM) model, and the ASM model enhanced by the Embedded Rendezvous Point (Embedded-RP) group-to-RP mapping mechanism.  This memo also describes enhancements to the protocol operations that mitigate the identified threats.  This memo provides information for the Internet community.</t></abstract></front>

<seriesInfo name="RFC" value="4609"/>
<format type="TXT" octets="49812" target="http://www.rfc-editor.org/rfc/rfc4609.txt"/>
</reference><!-- End inclusion reference.RFC.4609.xml. -->
    </references>
  </back>
</rfc>
