<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-dhc-dhcpv6-pd-relay-requirements-05" indexInclude="true" ipr="trust200902" number="8987" prepTime="2021-02-28T15:36:22" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="4" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-dhc-dhcpv6-pd-relay-requirements-05" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc8987" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="DHCPv6 PD Relay">DHCPv6 Prefix Delegating Relay Requirements</title>
    <seriesInfo name="RFC" value="8987" stream="IETF"/>
    <author fullname="Ian Farrer" initials="I." surname="Farrer">
      <organization showOnFrontPage="true">Deutsche Telekom AG</organization>
      <address>
        <postal>
          <street>Landgrabenweg 151</street>
          <city>Bonn</city>
          <code>53227</code>
          <country>Germany</country>
        </postal>
        <email>ian.farrer@telekom.de</email>
      </address>
    </author>
    <author fullname="Naveen Kottapalli" initials="N." surname="Kottapalli">
      <organization showOnFrontPage="true">Benu Networks</organization>
      <address>
        <postal>
          <street>WeWork Galaxy, 43 Residency Road</street>
          <city>Bangalore</city>
          <code>560025</code>
          <region>Karnataka</region>
          <country>India</country>
        </postal>
        <email>nkottapalli@benunets.com</email>
      </address>
    </author>
    <author fullname="Martin Hunek" initials="M." surname="Hunek">
      <organization showOnFrontPage="true">Technical University of Liberec</organization>
      <address>
        <postal>
          <street>Studentska 1402/2</street>
          <city>Liberec</city>
          <code>46017</code>
          <country>Czech Republic</country>
        </postal>
        <email>martin.hunek@tul.cz</email>
      </address>
    </author>
    <author fullname="Richard Patterson" initials="R." surname="Patterson">
      <organization showOnFrontPage="true">Sky UK Ltd.</organization>
      <address>
        <postal>
          <street>1 Brick Lane</street>
          <city>London</city>
          <code>E1 6PU</code>
          <country>United Kingdom</country>
        </postal>
        <email>richard.patterson@sky.uk</email>
      </address>
    </author>
    <date month="02" year="2021"/>
    <area>Internet</area>
    <workgroup>DHC Work Group</workgroup>
    <keyword>Prefix Delegation</keyword>
    <keyword>DHCPv6 relay</keyword>
    <keyword>Delegating router</keyword>
    <keyword>Requesting router</keyword>
    <keyword>Delegating relay</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document describes operational problems that are known to 
    occur when using DHCPv6 relays with prefix delegation. These 
    problems can prevent successful delegation and result in routing 
    failures. To address these problems, this document provides 
    necessary functional requirements for operating DHCPv6 relays with 
    prefix delegation.</t>
      <t indent="0" pn="section-abstract-2">It is recommended that any network operator using DHCPv6 
    prefix delegation with relays ensure that these requirements 
    are followed on their networks.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc8987" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2021 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Simplified BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Simplified BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-general">General</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.2">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.2.1"><xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-topology">Topology</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.3">
                <t indent="0" pn="section-toc.1-1.2.2.3.1"><xref derivedContent="2.3" format="counter" sectionFormat="of" target="section-2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-problems-observed-with-exis">Problems Observed with Existing Delegating Relay Implementations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-dhcp-messages-not-being-for">DHCP Messages Not Being Forwarded by the Delegating Relay</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-delegating-relay-loss-of-st">Delegating Relay Loss of State on Reboot</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.3">
                <t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent="3.3" format="counter" sectionFormat="of" target="section-3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-multiple-delegated-prefixes">Multiple Delegated Prefixes for a Single Client</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.4">
                <t indent="0" pn="section-toc.1-1.3.2.4.1"><xref derivedContent="3.4" format="counter" sectionFormat="of" target="section-3.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-dropping-messages-from-devi">Dropping Messages from Devices with Duplicate MAC Addresses and DUIDs</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.5">
                <t indent="0" pn="section-toc.1-1.3.2.5.1"><xref derivedContent="3.5" format="counter" sectionFormat="of" target="section-3.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-forwarding-loops-between-cl">Forwarding Loops between Client and Relay</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-for-delegating">Requirements for Delegating Relays</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-general-requirements">General Requirements</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-routing-requirements">Routing Requirements</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-service-continuity-requirem">Service Continuity Requirements</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.4">
                <t indent="0" pn="section-toc.1-1.4.2.4.1"><xref derivedContent="4.4" format="counter" sectionFormat="of" target="section-4.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-operational-requirements">Operational Requirements</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">For Internet service providers that offer native IPv6 access 
    with prefix delegation to their customers, a common deployment 
    architecture is to have a DHCPv6 relay agent function located in
    the ISP's Layer 3 customer edge device and a separate, centralized
    DHCPv6 server infrastructure.  <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/> describes
    the functionality of a DHCPv6 relay, and <xref target="RFC8415" sectionFormat="of" section="19.1.3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-19.1.3" derivedContent="RFC8415"/> mentions
    this deployment scenario, but it does not provide details for all of
    the functional requirements that the relay needs to fulfill to
    operate deterministically in this deployment scenario.</t>
      <t indent="0" pn="section-1-2">A DHCPv6 relay agent for prefix delegation is a function commonly
    implemented in routing devices, but implementations vary in 
    their functionality and client/server interworking. This can
    result in operational problems such as messages not being forwarded 
    by the relay or unreachability of the delegated prefixes. This 
    document provides a set of requirements for devices implementing a 
    relay function for use with prefix delegation.
      </t>
      <t indent="0" pn="section-1-3">The mechanisms for a relay to inject routes (including aggregated 
    ones) on its network-facing interface based on prefixes learned 
    from a server via DHCP prefix delegation (DHCP-PD) are out of scope of the document.</t>
      <t indent="0" pn="section-1-4">Multi-hop DHCPv6 relaying is not affected. The requirements 
    in this document are solely applicable to the DHCP relay agent 
    co-located with the first-hop router to which the DHCPv6 client 
    requesting the prefix is connected, so no changes to any
    subsequent relays in the path are needed.</t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-terminology">Terminology</name>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-2.1">
        <name slugifiedName="name-general">General</name>
        <t indent="0" pn="section-2.1-1">This document uses the terminology defined in <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/>. However, when defining the functional 
        elements for prefix delegation, <xref target="RFC8415" sectionFormat="comma" section="4.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-4.2" derivedContent="RFC8415"/> defines the term "delegating router" as:
        </t>
        <blockquote pn="section-2.1-2">The router that acts as a DHCP server and responds to requests for delegated prefixes.</blockquote>
        <t indent="0" pn="section-2.1-3">

        This document is concerned with deployment scenarios in which 
        the DHCPv6 relay and DHCPv6 server functions are separated, so 
        the term "delegating router" is not used. Instead, a new term 
        is introduced to describe the relaying function:

        </t>
        <dl newline="true" spacing="normal" indent="3" pn="section-2.1-4">
          <dt pn="section-2.1-4.1">Delegating relay:</dt>
          <dd pn="section-2.1-4.2">A delegating relay acts as an
            intermediate device, forwarding DHCPv6 messages containing
            IA_PD and IAPREFIX options between the client and server. The
            delegating relay does not implement a DHCPv6 server 
            function. The delegating relay is also responsible for 
            routing traffic for the delegated prefixes.
          </dd>
        </dl>
        <t indent="0" pn="section-2.1-5">Where the term "relay" is used on its own within this document, 
        it should be understood to be a delegating relay unless 
        specifically stated otherwise.
        </t>
        <t indent="0" pn="section-2.1-6">In CableLabs DOCSIS environments, the Cable Modem Termination 
        System (CMTS) would be considered a delegating relay with 
        respect to Customer Premises Devices (CPEs) (<xref target="DOCSIS_3.1" format="default" sectionFormat="of" derivedContent="DOCSIS_3.1"/>, Section 5.2.7.2).  A Broadband 
        Network Gateway (BNG) in a DSL-based access network may be a 
        delegating relay if it does not implement a local DHCPv6 server 
        function (<xref target="TR-092" format="default" sectionFormat="of" derivedContent="TR-092"/>, Section 4.10).
        </t>
        <t indent="0" pn="section-2.1-7"><xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/> defines the "DHCP server" (or 
        "server") as:
        </t>
        <blockquote pn="section-2.1-8">A node that responds to requests from clients.  It may or
            may not be on the same link as the client(s).  Depending on 
            its capabilities, if it supports prefix delegation it may 
            also feature the functionality of a delegating router.
</blockquote>
        <t indent="0" pn="section-2.1-9">
        This document serves the deployment cases where a DHCPv6 server 
        is not located on the same link as the client (necessitating the 
        delegating relay). The server supports prefix delegation and is 
        capable of leasing prefixes to clients, but it is not responsible 
        for other functions required of a delegating router, such as 
        managing routes for the delegated prefixes.
        </t>
        <t indent="0" pn="section-2.1-10">The term "requesting router" has previously been used to 
        describe the DHCP client requesting prefixes for use. This 
        document adopts the terminology of <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/> and 
        uses "DHCP client" or "client" interchangeably for this element.
        </t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-2.2">
        <name slugifiedName="name-topology">Topology</name>
        <t indent="0" pn="section-2.2-1">The following diagram shows the deployment topology relevant 
        to this document.
        </t>
        <figure anchor="topology_overview" align="left" suppress-title="false" pn="figure-1">
          <name slugifiedName="name-topology-overview">Topology Overview</name>
          <artwork align="center" name="" type="" alt="" pn="section-2.2-2.1">
+
|             ------- uplink ------&gt;
|                                       _    ,--,_
|   +--------+       +------------+   _(  `'      )_    +--------+
+---+   PD   |-------| Delegating |--(   Operator   )---| DHCPv6 |
|   | Client |       |    relay   |   `(_ Network_)'    | server |
|   +--------+       +----------- +      `--'`---'      +--------+
|
|             &lt;----- downlink ------
+                 (client facing)
Client
Network
        </artwork>
        </figure>
        <t indent="0" pn="section-2.2-3">The client requests prefixes via the downlink interface of the 
        delegating relay.  The resulting prefixes will be used for 
        addressing the client network.  The delegating relay is 
        responsible for forwarding DHCP messages, including prefix 
        delegation requests and responses between the client and server.  
        Messages are forwarded from the delegating relay to the server 
        using multicast or unicast via the operator uplink interface.
        </t>
        <t indent="0" pn="section-2.2-4">The delegating relay provides the operator's Layer 3 edge 
        towards the client and is responsible for routing traffic to 
        and from clients connected to the client network using addresses 
        from the delegated prefixes.
        </t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-2.3">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-2.3-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
    </section>
    <section anchor="relay_problems" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-problems-observed-with-exis">Problems Observed with Existing Delegating Relay Implementations</name>
      <t indent="0" pn="section-3-1">The following sections of the document describe problems that 
      have been observed with delegating relay implementations in 
      commercially available devices.
      </t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-3.1">
        <name slugifiedName="name-dhcp-messages-not-being-for">DHCP Messages Not Being Forwarded by the Delegating Relay</name>
        <t indent="0" pn="section-3.1-1">Delegating relay implementations have been observed not to 
        forward messages between the client and server. This generally 
        occurs if a client sends a message that is unexpected by the 
        delegating relay.  For example, the delegating relay already 
        has an active PD lease entry for an existing client on a port. 
        A new client is connected to this port and sends a Solicit 
        message. The delegating relay then drops the Solicit messages 
        until either it receives a DHCP Release message from the 
        original client or the existing lease times out. This causes
        a particular problem when a client device needs to be replaced 
        due to a failure.
        </t>
        <t indent="0" pn="section-3.1-2">In addition to dropping messages, in some cases, the delegating
        relay will generate error messages and send them to the client, 
        e.g., "NoBinding" messages being sent in the event that the 
        delegating relay does not have an active delegated prefix lease.
        </t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-3.2">
        <name slugifiedName="name-delegating-relay-loss-of-st">Delegating Relay Loss of State on Reboot</name>
        <t indent="0" pn="section-3.2-1">For proper routing of client traffic, the delegating relay 
        requires a corresponding routing table entry for each active 
        prefix delegated to a connected client.  A delegating relay 
        that does not store this state persistently across reboots 
        will not be able to forward traffic to the client's delegated 
        leases until the state is reestablished through new DHCP 
        messages.
        </t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-3.3">
        <name slugifiedName="name-multiple-delegated-prefixes">Multiple Delegated Prefixes for a Single Client</name>
        <t indent="0" pn="section-3.3-1">DHCPv6 <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/> allows a client to include more 
       than one instance of OPTION_IA_PD in messages in order to request 
       multiple prefix delegations by the server.  If configured for 
       this, the server supplies one (or more) instance of 
       OPTION_IAPREFIX for each received instance of OPTION_IA_PD, each 
       containing information for a different delegated prefix.
        </t>
        <t indent="0" pn="section-3.3-2">In some delegating relay implementations, only a single 
       delegated prefix per DHCP Unique Identifier (DUID) is supported. In those cases, only one 
       IPv6 route for one of the delegated prefixes is installed, 
       meaning that other prefixes delegated to a client are 
       unreachable.
        </t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-3.4">
        <name slugifiedName="name-dropping-messages-from-devi">Dropping Messages from Devices with Duplicate MAC Addresses and DUIDs</name>
        <t indent="0" pn="section-3.4-1">It is an operational reality that client devices with 
        duplicate Media Access Control (MAC) addresses and/or DUIDs exist and have been 
        deployed. In some networks, the operational costs of locating 
        and swapping out such devices are prohibitive.
        </t>
        <t indent="0" pn="section-3.4-2">Delegating relays have been observed to restrict forwarding 
        client messages originating from one client DUID to a single 
        interface. In this case, if the same client DUID appears from a 
        second client on another interface while there is already an 
        active lease, messages originating from the second client are 
        dropped, causing the second client to be unable to obtain a 
        prefix delegation.
        </t>
        <t indent="0" pn="section-3.4-3">It should be noted that in some access networks, the MAC 
        address and/or DUID are used as part of device identification 
        and authentication. In such networks, 
enforcing uniqueness of the MAC address and/or DUID is a necessary function and is not considered a problem.
        </t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-3.5">
        <name slugifiedName="name-forwarding-loops-between-cl">Forwarding Loops between Client and Relay</name>
        <t indent="0" pn="section-3.5-1">If the client loses information about an active prefix 
        lease it has been delegated while the lease entry and 
        associated route are still active in the delegating relay, 
        then the relay will forward traffic to the client. The 
        client will return this traffic to the relay, which is the client's default 
        gateway (learned via a Router Advertisement (RA)). The loop will continue until 
        either the client is successfully reprovisioned via DHCP or 
        the lease ages out in the relay.
        </t>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-requirements-for-delegating">Requirements for Delegating Relays</name>
      <t indent="0" pn="section-4-1">To resolve the problems described in 
     <xref target="relay_problems" format="default" sectionFormat="of" derivedContent="Section 3"/> and to preempt other undesirable 
     behavior, the following <xref target="genreq" format="none" sectionFormat="of" derivedContent="">section</xref> of the document describes a set 
     of functional requirements for the delegating relay.
      </t>
      <t indent="0" pn="section-4-2">In addition, relay implementers are reminded that 
      <xref target="RFC8415" format="default" sectionFormat="of" derivedContent="RFC8415"/> makes it clear that relays <bcp14>MUST</bcp14> forward
      packets that either contain message codes it may not understand (<xref target="RFC8415" sectionFormat="of" section="19" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-19" derivedContent="RFC8415"/>) or options that it does not understand (<xref target="RFC8415" sectionFormat="of" section="16" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-16" derivedContent="RFC8415"/>).</t>
      <section numbered="true" toc="include" anchor="genreq" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-general-requirements">General Requirements</name>
        <ol type="G-%d:" indent="adaptive" spacing="normal" start="1" pn="section-4.1-1">
	  <li pn="section-4.1-1.1" derivedCounter="G-1:">The delegating relay <bcp14>MUST</bcp14> forward messages
            bidirectionally between the client and server without 
            changing the contents of the message.</li>
          <li pn="section-4.1-1.2" derivedCounter="G-2:">The relay <bcp14>MUST</bcp14> allow for multiple prefixes 
            to be delegated for the same client IA_PD. These delegations 
            may have different lifetimes.
          </li>
          <li pn="section-4.1-1.3" derivedCounter="G-3:">The relay <bcp14>MUST</bcp14> allow for multiple prefixes 
            (with or without separate IA_PDs) to be delegated to a 
            single client connected to a single interface, identified 
            by its DHCPv6 Client Identifier (DUID).
          </li>
          <li pn="section-4.1-1.4" derivedCounter="G-4:">A delegating relay may have one or more 
            interfaces on which it acts as a relay, as well as one or 
            more interfaces on which it does not
            (for example, in an ISP, it might act as a relay on all 
            southbound interfaces but not on the northbound 
            interfaces).  The relay <bcp14>SHOULD</bcp14> allow the same client 
            identifier (DUID) to have active delegated prefix leases on 
            more than one interface simultaneously unless client DUID 
            uniqueness is necessary for the functioning or security of 
            the network.  This is to allow client devices with duplicate 
            DUIDs to function on separate broadcast domains.
          </li>
          <li pn="section-4.1-1.5" derivedCounter="G-5:">The maximum number of simultaneous prefixes
            delegated to a single client <bcp14>MUST</bcp14> be configurable.
          </li>
          <li pn="section-4.1-1.6" derivedCounter="G-6:">The relay <bcp14>MUST</bcp14> implement a mechanism to 
            limit the maximum number of active prefix delegations on a 
            single port for all client identifiers and IA_PDs. This 
            value <bcp14>MUST</bcp14> be configurable.
          </li>
          <li pn="section-4.1-1.7" derivedCounter="G-7:">It is <bcp14>RECOMMENDED</bcp14> that delegating relays 
            support at least 8 active delegated leases per client device 
            and use this as the default limit.
          </li>
          <li pn="section-4.1-1.8" derivedCounter="G-8:">The delegating relay <bcp14>MUST</bcp14> update the lease 
            lifetimes based on the client's reply messages it forwards to 
            the client and only expire the delegated prefixes when the 
            valid lifetime has elapsed.
          </li>
          <li pn="section-4.1-1.9" derivedCounter="G-9:">On receipt of a Release message from the 
            client, the delegating relay <bcp14>MUST</bcp14> expire the active leases 
            for each of the IA_PDs in the message.
          </li>
        </ol>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-routing-requirements">Routing Requirements</name>
        <ol type="R-%d:" indent="adaptive" spacing="normal" start="1" pn="section-4.2-1">
          <li pn="section-4.2-1.1" derivedCounter="R-1:">The relay <bcp14>MUST</bcp14> maintain a local routing 
            table that is dynamically updated with leases and the 
            associated next hops as they are delegated to clients. When 
            a delegated prefix is released or expires, the associated 
            route <bcp14>MUST</bcp14> be removed from the relay's routing table.
          </li>
          <li pn="section-4.2-1.2" derivedCounter="R-2:">The delegating relay's routing entry <bcp14>MUST</bcp14>
            use the same prefix length for the delegated prefix as
            given in the IA_PD.
          </li>
          <li pn="section-4.2-1.3" derivedCounter="R-3:">The relay <bcp14>MUST</bcp14> provide a mechanism to 
            dynamically update ingress filters permitting ingress 
            traffic sourced from client delegated leases and blocking 
            packets from invalid source prefixes.  This is to implement 
            anti-spoofing as described in <xref target="BCP38" format="default" sectionFormat="of" derivedContent="BCP38"/>. The 
            delegating relay's ingress filter entry <bcp14>MUST</bcp14> use the same 
            prefix length for the delegated prefix as given in the 
            IA_PD.
          </li>
          <li pn="section-4.2-1.4" derivedCounter="R-4:">The relay <bcp14>MAY</bcp14> provide a mechanism to 
            dynamically advertise delegated leases into a routing 
            protocol as they are learned. If such a mechanism is 
            implemented, when a delegated lease is released or expires, 
            the delegated route <bcp14>MUST</bcp14> be withdrawn from the routing 
            protocol.  The mechanism by which the routes are inserted 
            and deleted is out of the scope of this document.
          </li>
          <li pn="section-4.2-1.5" derivedCounter="R-5:">
            <t indent="0" pn="section-4.2-1.5.1">To prevent routing loops, the relay <bcp14>SHOULD</bcp14> 
            implement a configurable policy to drop potential looping 
            packets received on any DHCP-PD client-facing interfaces.
            </t>
            <t indent="0" pn="section-4.2-1.5.2">
            The policy <bcp14>SHOULD</bcp14> be configurable on a per-client or 
            per-destination basis.
            </t>
            <t indent="0" pn="section-4.2-1.5.3">
            Looping packets are those with a destination address in a 
            prefix delegated to a client connected to that interface, 
            as follows:
            </t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-1.5.4">
              <li pn="section-4.2-1.5.4.1">For point-to-point links, when the 
            packet's ingress and egress interfaces match.</li>
              <li pn="section-4.2-1.5.4.2">For multi-access links, when the packet's ingress and 
            egress interface match, and the source link-layer and 
            next-hop link-layer addresses match.</li>
            </ul>
            <t indent="0" pn="section-4.2-1.5.5">
            An ICMPv6 Type 1, Code 6 (Destination 
            Unreachable, reject route to destination) error message <bcp14>MAY</bcp14>
            be sent as per <xref target="RFC4443" sectionFormat="comma" section="3.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4443#section-3.1" derivedContent="RFC4443"/>.  
            The ICMP policy <bcp14>SHOULD</bcp14> be configurable.
            </t>
          </li>
        </ol>
      </section>
      <section anchor="service_continuity" numbered="true" toc="include" removeInRFC="false" pn="section-4.3">
        <name slugifiedName="name-service-continuity-requirem">Service Continuity Requirements</name>
        <ol type="S-%d:" indent="adaptive" spacing="normal" start="1" pn="section-4.3-1">
          <li pn="section-4.3-1.1" derivedCounter="S-1:">
            <t indent="0" pn="section-4.3-1.1.1">To preserve active client prefix 
           delegations across relay restarts, the relay <bcp14>SHOULD</bcp14> 
           implement at least one of the following:
            </t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.3-1.1.2">
              <li pn="section-4.3-1.1.2.1">Implement DHCPv6 Bulk Leasequery as defined in 
                <xref target="RFC5460" format="default" sectionFormat="of" derivedContent="RFC5460"/>.
              </li>
              <li pn="section-4.3-1.1.2.2">Store active prefix delegations in persistent storage 
                so they can be reread after the reboot.
              </li>
            </ul>
          </li>
          <li pn="section-4.3-1.2" derivedCounter="S-2:">If a client's next-hop link-local address 
            becomes unreachable (e.g., due to a link-down event on the 
            relevant physical interface), routes for the client's 
            delegated prefixes <bcp14>MUST</bcp14> be retained by the delegating relay 
            unless they are released or removed due to expiring DHCP 
            timers. This is to reestablish routing for the delegated 
            prefix if the client next hop becomes reachable without the 
            delegated prefixes needing to be relearned.
          </li>
          <li pn="section-4.3-1.3" derivedCounter="S-3:">The relay <bcp14>SHOULD</bcp14> implement DHCPv6 Active Leasequery as defined in <xref target="RFC7653" format="default" sectionFormat="of" derivedContent="RFC7653"/> to keep 
            the local lease database in sync with the DHCPv6 server.
          </li>
        </ol>
      </section>
      <section anchor="opreqs" numbered="true" toc="include" removeInRFC="false" pn="section-4.4">
        <name slugifiedName="name-operational-requirements">Operational Requirements</name>
        <ol type="O-%d:" indent="adaptive" spacing="normal" start="1" pn="section-4.4-1">
          <li pn="section-4.4-1.1" derivedCounter="O-1:">The relay <bcp14>SHOULD</bcp14> implement an interface 
            allowing the operator to view the active delegated prefixes. 
            This <bcp14>SHOULD</bcp14> provide information about the delegated lease 
            and client details such as the client identifier, next-hop 
            address, connected interface, and remaining lifetimes.
          </li>
          <li pn="section-4.4-1.2" derivedCounter="O-2:">The relay <bcp14>SHOULD</bcp14> provide a method for the 
            operator to clear active bindings for an individual lease, 
            client, or all bindings on a port.
          </li>
          <li pn="section-4.4-1.3" derivedCounter="O-3:">To facilitate troubleshooting of 
            operational problems between the delegating relay and other 
            elements, it is <bcp14>RECOMMENDED</bcp14> that a time synchronization 
            protocol be used by the delegating relays and DHCP servers.
          </li>
        </ol>
      </section>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-5-1">This document has no IANA actions.</t>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-6-1">This document does not add any new security considerations 
      beyond those mentioned in <xref target="RFC8213" sectionFormat="of" section="4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8213#section-4" derivedContent="RFC8213"/> 
      and <xref target="RFC8415" sectionFormat="of" section="22" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8415#section-22" derivedContent="RFC8415"/>.
      </t>
      <t indent="0" pn="section-6-2">If the delegating relay implements <xref target="BCP38" format="default" sectionFormat="of" derivedContent="BCP38"/> 
      filtering, then the filtering rules will need to be dynamically 
      updated as delegated prefixes are leased.
      </t>
      <t indent="0" pn="section-6-3"><xref target="RFC8213" format="default" sectionFormat="of" derivedContent="RFC8213"/> describes a method for securing traffic 
    between the relay agent and server by sending DHCP messages over an 
    IPsec tunnel.  It is <bcp14>RECOMMENDED</bcp14> that this be implemented by the 
    delegating relay.</t>
      <t indent="0" pn="section-6-4">Failure to implement requirement G-6 may have specific security 
    implications, such as a resource depletion attack on the relay.</t>
      <t indent="0" pn="section-6-5">The operational requirements in <xref target="opreqs" format="default" sectionFormat="of" derivedContent="Section 4.4"/>
      may introduce additional security considerations. It is 
      <bcp14>RECOMMENDED</bcp14> that the operational security practices described
      in <xref target="RFC4778" format="default" sectionFormat="of" derivedContent="RFC4778"/> be implemented.
      </t>
    </section>
  </middle>
  <back>
    <references pn="section-7">
      <name slugifiedName="name-references">References</name>
      <references pn="section-7.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">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.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC4443" target="https://www.rfc-editor.org/info/rfc4443" quoteTitle="true" derivedAnchor="RFC4443">
          <front>
            <title>Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification</title>
            <author initials="A." surname="Conta" fullname="A. Conta">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Deering" fullname="S. Deering">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Gupta" fullname="M. Gupta" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2006" month="March"/>
            <abstract>
              <t indent="0">This document describes the format of a set of control messages used in ICMPv6 (Internet Control Message Protocol).  ICMPv6 is the Internet Control Message Protocol for Internet Protocol version 6 (IPv6).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="89"/>
          <seriesInfo name="RFC" value="4443"/>
          <seriesInfo name="DOI" value="10.17487/RFC4443"/>
        </reference>
        <reference anchor="RFC4778" target="https://www.rfc-editor.org/info/rfc4778" quoteTitle="true" derivedAnchor="RFC4778">
          <front>
            <title>Operational Security Current Practices in Internet Service Provider Environments</title>
            <author initials="M." surname="Kaeo" fullname="M. Kaeo">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="January"/>
            <abstract>
              <t indent="0">This document is a survey of the current practices used in today's large ISP operational networks to secure layer 2 and layer 3 infrastructure devices.  The information listed here is the result of information gathered from people directly responsible for defining and implementing secure infrastructures in Internet Service Provider environments.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4778"/>
          <seriesInfo name="DOI" value="10.17487/RFC4778"/>
        </reference>
        <reference anchor="RFC5460" target="https://www.rfc-editor.org/info/rfc5460" quoteTitle="true" derivedAnchor="RFC5460">
          <front>
            <title>DHCPv6 Bulk Leasequery</title>
            <author initials="M." surname="Stapp" fullname="M. Stapp">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2009" month="February"/>
            <abstract>
              <t indent="0">The Dynamic Host Configuration Protocol for IPv6 (DHCPv6) has been extended with a Leasequery capability that allows a client to request information about DHCPv6 bindings.  That mechanism is limited to queries for individual bindings.  In some situations individual binding queries may not be efficient, or even possible.  This document expands on the Leasequery protocol, adding new query types and allowing for bulk transfer of DHCPv6 binding data via TCP.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5460"/>
          <seriesInfo name="DOI" value="10.17487/RFC5460"/>
        </reference>
        <reference anchor="RFC7653" target="https://www.rfc-editor.org/info/rfc7653" quoteTitle="true" derivedAnchor="RFC7653">
          <front>
            <title>DHCPv6 Active Leasequery</title>
            <author initials="D." surname="Raghuvanshi" fullname="D. Raghuvanshi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Kinnear" fullname="K. Kinnear">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Kukrety" fullname="D. Kukrety">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="October"/>
            <abstract>
              <t indent="0">The Dynamic Host Configuration Protocol for IPv6 (DHCPv6) has been extended with a Leasequery capability that allows a requestor to request information about DHCPv6 bindings.  That mechanism is limited to queries for DHCPv6 binding data updates prior to the time the DHCPv6 server receives the Leasequery request.  Continuous update of an external requestor with Leasequery data is sometimes desired. This document expands on the DHCPv6 Leasequery protocol and allows for active transfer of real-time DHCPv6 binding information data via TCP.  This document also updates DHCPv6 Bulk Leasequery (RFC 5460) by adding new options.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7653"/>
          <seriesInfo name="DOI" value="10.17487/RFC7653"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8213" target="https://www.rfc-editor.org/info/rfc8213" quoteTitle="true" derivedAnchor="RFC8213">
          <front>
            <title>Security of Messages Exchanged between Servers and Relay Agents</title>
            <author initials="B." surname="Volz" fullname="B. Volz">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Y." surname="Pal" fullname="Y. Pal">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="August"/>
            <abstract>
              <t indent="0">The Dynamic Host Configuration Protocol for IPv4 (DHCPv4) has no guidance for how to secure messages exchanged between servers and relay agents.  The Dynamic Host Configuration Protocol for IPv6 (DHCPv6) states that IPsec should be used to secure messages exchanged between servers and relay agents but does not require encryption.  With recent concerns about pervasive monitoring and other attacks, it is appropriate to require securing relay-to-relay and relay-to-server communication for DHCPv6 and relay-to-server communication for DHCPv4.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8213"/>
          <seriesInfo name="DOI" value="10.17487/RFC8213"/>
        </reference>
        <reference anchor="RFC8415" target="https://www.rfc-editor.org/info/rfc8415" quoteTitle="true" derivedAnchor="RFC8415">
          <front>
            <title>Dynamic Host Configuration Protocol for IPv6 (DHCPv6)</title>
            <author initials="T." surname="Mrugalski" fullname="T. Mrugalski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Siodelski" fullname="M. Siodelski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Volz" fullname="B. Volz">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Yourtchenko" fullname="A. Yourtchenko">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Richardson" fullname="M. Richardson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Jiang" fullname="S. Jiang">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Lemon" fullname="T. Lemon">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Winters" fullname="T. Winters">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="November"/>
            <abstract>
              <t indent="0">This document describes the Dynamic Host Configuration Protocol for IPv6 (DHCPv6): an extensible mechanism for configuring nodes with network configuration parameters, IP addresses, and prefixes. Parameters can be provided statelessly, or in combination with stateful assignment of one or more IPv6 addresses and/or IPv6 prefixes.  DHCPv6 can operate either in place of or in addition to stateless address autoconfiguration (SLAAC).</t>
              <t indent="0">This document updates the text from RFC 3315 (the original DHCPv6 specification) and incorporates prefix delegation (RFC 3633), stateless DHCPv6 (RFC 3736), an option to specify an upper bound for how long a client should wait before refreshing information (RFC 4242), a mechanism for throttling DHCPv6 clients when DHCPv6 service is not available (RFC 7083), and relay agent handling of unknown messages (RFC 7283).  In addition, this document clarifies the interactions between models of operation (RFC 7550).  As such, this document obsoletes RFC 3315, RFC 3633, RFC 3736, RFC 4242, RFC 7083, RFC 7283, and RFC 7550.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8415"/>
          <seriesInfo name="DOI" value="10.17487/RFC8415"/>
        </reference>
      </references>
      <references pn="section-7.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <referencegroup anchor="BCP38" target="https://www.rfc-editor.org/info/bcp38" derivedAnchor="BCP38">
          <reference anchor="RFC2827" target="https://www.rfc-editor.org/info/rfc2827" quoteTitle="true">
            <front>
              <title>Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing</title>
              <author initials="P." surname="Ferguson" fullname="P. Ferguson">
                <organization showOnFrontPage="true"/>
              </author>
              <author initials="D." surname="Senie" fullname="D. Senie">
                <organization showOnFrontPage="true"/>
              </author>
              <date year="2000" month="May"/>
              <abstract>
                <t indent="0">This paper discusses a simple, effective, and straightforward method for using ingress traffic filtering to prohibit DoS (Denial of Service) attacks which use forged IP addresses to be propagated from 'behind' an Internet Service Provider's (ISP) aggregation point.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="38"/>
            <seriesInfo name="RFC" value="2827"/>
            <seriesInfo name="DOI" value="10.17487/RFC2827"/>
          </reference>
        </referencegroup>
        <reference anchor="DOCSIS_3.1" target="https://www.cablelabs.com/specification/CM-SP-MULPIv3.1" quoteTitle="true" derivedAnchor="DOCSIS_3.1">
          <front>
            <title>MAC and Upper Layer Protocols Interface Specification</title>
            <author>
              <organization showOnFrontPage="true">CableLabs</organization>
            </author>
            <date month="January" year="2017"/>
          </front>
          <seriesInfo name="Version" value="10"/>
          <seriesInfo name="DOCSIS" value="3.1"/>
        </reference>
        <reference anchor="TR-092" target="https://www.broadband-forum.org/download/TR-092.pdf" quoteTitle="true" derivedAnchor="TR-092">
          <front>
            <title>Broadband Remote Access Server (BRAS) Requirements Document</title>
            <author>
              <organization showOnFrontPage="true">Broadband Forum</organization>
            </author>
            <date month="August" year="2004"/>
          </front>
          <seriesInfo name="Technical Report" value="TR-092"/>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">The authors of this document would like to thank <contact fullname="Bernie Volz"/>, 
      <contact fullname="Ted Lemon"/>, and <contact fullname="Michael Richardson"/> for their valuable comments.
      </t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Ian Farrer" initials="I." surname="Farrer">
        <organization showOnFrontPage="true">Deutsche Telekom AG</organization>
        <address>
          <postal>
            <street>Landgrabenweg 151</street>
            <city>Bonn</city>
            <code>53227</code>
            <country>Germany</country>
          </postal>
          <email>ian.farrer@telekom.de</email>
        </address>
      </author>
      <author fullname="Naveen Kottapalli" initials="N." surname="Kottapalli">
        <organization showOnFrontPage="true">Benu Networks</organization>
        <address>
          <postal>
            <street>WeWork Galaxy, 43 Residency Road</street>
            <city>Bangalore</city>
            <code>560025</code>
            <region>Karnataka</region>
            <country>India</country>
          </postal>
          <email>nkottapalli@benunets.com</email>
        </address>
      </author>
      <author fullname="Martin Hunek" initials="M." surname="Hunek">
        <organization showOnFrontPage="true">Technical University of Liberec</organization>
        <address>
          <postal>
            <street>Studentska 1402/2</street>
            <city>Liberec</city>
            <code>46017</code>
            <country>Czech Republic</country>
          </postal>
          <email>martin.hunek@tul.cz</email>
        </address>
      </author>
      <author fullname="Richard Patterson" initials="R." surname="Patterson">
        <organization showOnFrontPage="true">Sky UK Ltd.</organization>
        <address>
          <postal>
            <street>1 Brick Lane</street>
            <city>London</city>
            <code>E1 6PU</code>
            <country>United Kingdom</country>
          </postal>
          <email>richard.patterson@sky.uk</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
