rfc9161xml2.original.xml | rfc9161.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!DOCTYPE rfc [ | |||
<!ENTITY RFC7432 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <!ENTITY nbsp " "> | |||
C.7432.xml"> | <!ENTITY zwsp "​"> | |||
<!ENTITY RFC4861 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <!ENTITY nbhy "‑"> | |||
C.4861.xml"> | <!ENTITY wj "⁠"> | |||
<!ENTITY RFC0826 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.0826.xml"> | ||||
<!ENTITY RFC6820 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.6820.xml"> | ||||
<!ENTITY RFC5227 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.5227.xml"> | ||||
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.2119.xml"> | ||||
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8174.xml"> | ||||
<!ENTITY RFC6957 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.6957.xml"> | ||||
<!ENTITY RFC4862 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.4862.xml"> | ||||
<!ENTITY RFC9047 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.9047.xml"> | ||||
]> | ]> | |||
<?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 category="std" docName="draft-ietf-bess-evpn-proxy-arp-nd-16" | ||||
ipr="trust200902" submissionType="IETF" updates="7432"> | ||||
<!-- Generated by id2xml 1.5.0 on 2020-07-14T16:18:41Z --> | ||||
<?rfc strict="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<?rfc symrefs="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie | |||
tf-bess-evpn-proxy-arp-nd-16" number="9161" consensus="true" ipr="trust200902" s | ||||
<?rfc sortrefs="no"?> | ubmissionType="IETF" updates="7432" obsoletes="" xml:lang="en" tocInclude="true" | |||
tocDepth="3" symRefs="true" sortRefs="true" version="3"> | ||||
<?rfc text-list-symbols="o-*+"?> | ||||
<?rfc toc="yes"?> | ||||
<front> | <front> | |||
<title abbrev="EVPN Proxy-ARP/ND">Operational Aspects of Proxy-ARP/ND in | <title abbrev="EVPN Proxy ARP/ND">Operational Aspects of Proxy ARP/ND in | |||
Ethernet Virtual Private Networks</title> | Ethernet Virtual Private Networks</title> | |||
<seriesInfo name="RFC" value="9161"/> | ||||
<author fullname="Jorge Rabadan" initials="J." role="editor" | <author fullname="Jorge Rabadan" initials="J." role="editor" surname="Rabada | |||
surname="Rabadan"> | n"> | |||
<organization>Nokia</organization> | <organization>Nokia</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>777 Middlefield Road</street> | <street>777 Middlefield Road</street> | |||
<city>Mountain View</city> | <city>Mountain View</city> | |||
<region>CA</region> | <region>CA</region> | |||
<code>94043</code> | <code>94043</code> | |||
<country>United States of America</country> | ||||
<country>USA</country> | ||||
</postal> | </postal> | |||
<email>jorge.rabadan@nokia.com</email> | <email>jorge.rabadan@nokia.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Senthil Sathappan" initials="S." surname="Sathappan"> | <author fullname="Senthil Sathappan" initials="S." surname="Sathappan"> | |||
<organization>Nokia</organization> | <organization>Nokia</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>701 E. Middlefield Road</street> | <street>701 E. Middlefield Road</street> | |||
<city>Mountain View</city> | ||||
<street>Mountain View, CA 94043 USA</street> | <region>CA</region> | |||
</postal> | <code>94043</code> | |||
<country>United States of America</country> | ||||
</postal> | ||||
<email>senthil.sathappan@nokia.com</email> | <email>senthil.sathappan@nokia.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Kiran Nagaraj" initials="K." surname="Nagaraj"> | <author fullname="Kiran Nagaraj" initials="K." surname="Nagaraj"> | |||
<organization>Nokia</organization> | <organization>Nokia</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>701 E. Middlefield Road</street> | <street>701 E. Middlefield Road</street> | |||
<city>Mountain View</city> | ||||
<street>Mountain View, CA 94043 USA</street> | <region>CA</region> | |||
<code>94043</code> | ||||
<country>United States of America</country> | ||||
</postal> | </postal> | |||
<email>kiran.nagaraj@nokia.com</email> | <email>kiran.nagaraj@nokia.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Greg Hankins" initials="G." surname="Hankins"> | <author fullname="Greg Hankins" initials="G." surname="Hankins"> | |||
<organization>Nokia</organization> | <organization>Nokia</organization> | |||
<address> | <address> | |||
<email>greg.hankins@nokia.com</email> | <email>greg.hankins@nokia.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Thomas King" initials="T." surname="King"> | <author fullname="Thomas King" initials="T." surname="King"> | |||
<organization abbrev="DE-CIX">DE-CIX Management GmbH</organization> | <organization abbrev="DE-CIX">DE-CIX Management GmbH</organization> | |||
<address> | <address> | |||
<email>thomas.king@de-cix.net</email> | <email>thomas.king@de-cix.net</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="January" year="2022"/> | ||||
<workgroup>BESS Workgroup</workgroup> | ||||
<date day="6" month="October" year="2021"/> | <keyword>ARP suppression | |||
</keyword> | ||||
<workgroup>BESS Workgroup</workgroup> | <keyword>flood suppression | |||
</keyword> | ||||
<keyword>ARP unicast-forward | ||||
</keyword> | ||||
<keyword>Duplicate IP Detection | ||||
</keyword> | ||||
<abstract> | <abstract> | |||
<t>This document describes the Ethernet Virtual Private Networks (EVPN) | <t>This document describes the Ethernet Virtual Private Network (EVPN) | |||
Proxy-ARP/ND function, augmented by the capability of the ARP/ND | Proxy ARP/ND function augmented by the capability of the ARP/ND | |||
Extended Community. From that perspective this document updates the EVPN | Extended Community. From that perspective, this document updates the EVPN | |||
specification to provide more comprehensive documentation of the | specification to provide more comprehensive documentation of the | |||
operation of the Proxy-ARP/ND function. The EVPN Proxy-ARP/ND function | operation of the Proxy ARP/ND function. The EVPN Proxy ARP/ND function | |||
and the ARP/ND Extended Community help operators of Internet Exchange | and the ARP/ND Extended Community help operators of Internet Exchange | |||
Points, Data Centers, and other networks deal with IPv4 and IPv6 address | Points, Data Centers, and other networks deal with IPv4 and IPv6 address | |||
resolution issues associated with large Broadcast Domains by reducing | resolution issues associated with large Broadcast Domains by reducing | |||
and even suppressing the flooding produced by address resolution in the | and even suppressing the flooding produced by address resolution in the | |||
EVPN network.</t> | EVPN network.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section anchor="sect-1" title="Terminology"> | ||||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
"OPTIONAL" in this document are to be interpreted as described in BCP14 | ||||
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, | ||||
they appear in all capitals, as shown here.</t> | ||||
<t>ARP: Address Resolution Protocol.</t> | ||||
<t>AS-MAC: Anti-spoofing MAC. It is a especial MAC configured on all the | ||||
PEs attached to the same BD and used for the Duplicate IP Detection | ||||
procedures.</t> | ||||
<t>BD: Broadcast Domain.</t> | <section anchor="sect-2" numbered="true" toc="default"> | |||
<name>Introduction</name> | ||||
<t>BUM: Broadcast, Unknown unicast and Multicast layer-2 traffic.</t> | <t>As specified in <xref target="RFC7432" format="default"/>, the IP | |||
Address field in the Ethernet Virtual Private Network (EVPN) Media | ||||
<t>CE: Customer Edge router.</t> | Access Control (MAC) / IP Advertisement route may optionally carry one | |||
of the IP addresses associated with the MAC address. A Provider Edge (PE) | ||||
<t>DAD: Duplicate Address Detection, as per <xref | may learn | |||
target="RFC4861"/>.</t> | local IP->MAC pairs and advertise them in EVPN MAC/IP Advertisement | |||
routes. Remote PEs importing those routes in the same Broadcast Domain | ||||
<t>DC: Data Center.</t> | (BD) may add those IP->MAC pairs to their Proxy ARP/ND tables and | |||
reply to local ARP Requests or Neighbor Solicitations (or | ||||
<t>EVI: EVPN Instance.</t> | "unicast-forward" those packets to the owner MAC), reducing and even | |||
suppressing, in some cases, the flooding in the EVPN network.</t> | ||||
<t>EVPN and its associated Proxy ARP/ND function are extremely useful in | ||||
Data Centers (DCs) or Internet Exchange Points (IXPs) with large Broadcast | ||||
Domains, | ||||
where the amount of ARP/ND flooded traffic causes issues on connected | ||||
routers and Customer Edges (CEs). <xref target="RFC6820" format="default"/ | ||||
> describes the address | ||||
resolution problems in large DC networks.</t> | ||||
<t>This document describes the Proxy ARP/ND function in <xref | ||||
target="RFC7432" format="default"/> networks, augmented by the | ||||
capability of the ARP/ND Extended Community <xref target="RFC9047" | ||||
format="default"/>. From that perspective, this document updates <xref | ||||
target="RFC7432" format="default"/>.</t> | ||||
<t>Proxy ARP/ND may be implemented to help IXPs, DCs, and other operators | ||||
deal with the issues derived from address resolution in large Broadcast | ||||
Domains.</t> | ||||
<t>EVPN: Ethernet Virtual Private Networks, as per <xref | <section anchor="sect-2.1" numbered="true" toc="default"> | |||
target="RFC7432"/>.</t> | <name>The Data Center Use Case</name> | |||
<t>As described in <xref target="RFC6820" format="default"/>, the IPv4 | ||||
and IPv6 address resolution can create a lot of issues in large | ||||
DCs. In particular, the issues created by IPv4 Address | ||||
Resolution Protocol procedures may be significant.</t> | ||||
<t>On one hand, ARP Requests use broadcast MAC addresses; therefore, | ||||
any Tenant System in a large Broadcast Domain will see a large amount | ||||
of ARP traffic, which is not addressed to most of the receivers.</t> | ||||
<t>On the other hand, the flooding issue becomes even worse if some | ||||
Tenant Systems disappear from the Broadcast Domain, since some | ||||
implementations will persistently retry sending ARP Requests. As <xref | ||||
target="RFC6820" format="default"/> states, there are no clear | ||||
requirements for retransmitting ARP Requests in the absence of | ||||
replies; hence, an implementation may choose to keep retrying endlessly | ||||
even if there are no replies.</t> | ||||
<t>The amount of flooding that address resolution creates can be | ||||
mitigated by the use of EVPN and its Proxy ARP/ND function.</t> | ||||
</section> | ||||
<section anchor="sect-2.2" numbered="true" toc="default"> | ||||
<name>The Internet Exchange Point Use Case</name> | ||||
<t>The implementation described in this document is especially useful | ||||
in IXP networks.</t> | ||||
<t>A typical IXP provides access to a large Layer 2 Broadcast Domain | ||||
for peering purposes (referred to as "the peering network"), where | ||||
(hundreds of) Internet routers are connected. We refer to these | ||||
Internet routers as CE devices in this section. | ||||
Because of the requirement to connect all routers to a single Layer 2 | ||||
network, the peering networks use IPv4 addresses in length ranges from | ||||
/21 to /24 (and even bigger for IPv6), which can create very large | ||||
Broadcast Domains. | ||||
<t>GARP: Gratuitous ARP message.</t> | This peering network is transparent to the CEs and | |||
therefore floods any ARP Requests or NS messages to all the CEs in the | ||||
network. Gratuitous ARP and NA messages are flooded to all the CEs | ||||
too.</t> | ||||
<t>In these IXP networks, most of the CEs are typically peering | ||||
routers and roughly all the Broadcast, Unknown Unicast, and Multicast | ||||
(BUM) traffic is originated by the ARP and ND address resolution | ||||
procedures. This ARP/ND BUM traffic causes significant data volumes | ||||
that reach every single router in the peering network. Since the | ||||
ARP/ND messages are processed in "slow path" software processors and | ||||
they take high priority in the routers, heavy loads of ARP/ND traffic | ||||
can cause some routers to run out of resources. CEs disappearing from | ||||
the network may cause address resolution explosions that can make a | ||||
router with limited processing power fail to keep BGP sessions | ||||
running.</t> | ||||
<t>The issue might be better in IPv6 routers if Multicast Listener | ||||
Discovery (MLD) snooping was enabled, since ND uses an SN-multicast | ||||
address in NS messages; however, ARP uses broadcast and has to be | ||||
processed by all the routers in the network. Some routers may also be | ||||
configured to broadcast periodic Gratuitous ARPs (GARPs) <xref | ||||
target="RFC5227" format="default"/>. For IPv6, the fact that IPv6 CEs | ||||
have more than one IPv6 address contributes to the growth of ND | ||||
flooding in the network. The amount of ARP/ND flooded traffic grows | ||||
linearly with the number of IXP participants; therefore, the issue can | ||||
only grow worse as new CEs are added.</t> | ||||
<t>In order to deal with this issue, IXPs have developed certain | ||||
solutions over the past years. While these solutions may mitigate the | ||||
issues of address resolution in large broadcast domains, EVPN | ||||
provides new more efficient possibilities to IXPs. EVPN and its | ||||
Proxy ARP/ND function may help solve the issue in a distributed and | ||||
scalable way, fully integrated with the PE network.</t> | ||||
</section> | ||||
</section> | ||||
<t>IP->MAC: an IP address associated to a MAC address. IP->MAC | <section anchor="sect-1" numbered="true" toc="default"> | |||
entries are programmed in Proxy-ARP/ND tables and may be of three | <name>Terminology</name> | |||
different types: dynamic, static or EVPN-learned.</t> | ||||
<t>IXP: Internet eXchange Point.</t> | <t> | |||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
IRED</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"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
<t>IXP-LAN: the IXP's large Broadcast Domain to where Internet routers | <dl indent="12"> | |||
are connected.</t> | <dt>ARP: | |||
</dt> | ||||
<dd>Address Resolution Protocol | ||||
</dd> | ||||
<t>LAG: Link Aggregation Group.</t> | <dt>AS-MAC: | |||
</dt> | ||||
<dd>Anti-spoofing MAC. It is a special MAC configured on all the | ||||
PEs attached to the same BD and used for the duplicate IP detection | ||||
procedures. | ||||
</dd> | ||||
<t>MAC or IP DA: MAC or IP Destination Address.</t> | <dt>BD: | |||
</dt> | ||||
<dd>Broadcast Domain | ||||
</dd> | ||||
<t>MAC or IP SA: MAC or IP Source Address.</t> | <dt>BUM: | |||
</dt> | ||||
<dd>Broadcast, Unknown Unicast, and Multicast Layer 2 traffic | ||||
</dd> | ||||
<t>ND: Neighbor Discovery Protocol.</t> | <dt>CE: | |||
</dt> | ||||
<dd>Customer Edge router | ||||
</dd> | ||||
<t>NS: Neighbor Solicitation message.</t> | <dt>DAD: | |||
</dt> | ||||
<dd>Duplicate Address Detection, as per <xref target="RFC4861"/> | ||||
</dd> | ||||
<t>NA: Neighbor Advertisement.</t> | <dt>DC: | |||
</dt> | ||||
<dd>Data Center | ||||
</dd> | ||||
<t>NUD: Neighbor Unreachability Detection, as per <xref | <dt>EVI: | |||
target="RFC4861"/>.</t> | </dt> | |||
<dd>EVPN Instance | ||||
</dd> | ||||
<t>O Flag: Override Flag in NA messages, as per <xref | <dt>EVPN: | |||
target="RFC4861"/>.</t> | </dt> | |||
<dd>Ethernet Virtual Private Network, as per <xref target="RFC7432"/> | ||||
</dd> | ||||
<t>PE: Provider Edge router.</t> | <dt>GARP: | |||
</dt> | ||||
<dd>Gratuitous ARP | ||||
</dd> | ||||
<t>R Flag: Router Flag in NA messages, as per <xref | <dt>IP->MAC: | |||
target="RFC4861"/>.</t> | </dt> | |||
<dd>An IP address associated to a MAC address. IP->MAC entries are | ||||
programmed in Proxy ARP/ND tables and may be of three different | ||||
types: dynamic, static, or EVPN-learned. | ||||
</dd> | ||||
<t>RT2: EVPN Route type 2 or EVPN MAC/IP Advertisement route, as per | <dt>IXP: | |||
<xref target="RFC7432"/>.</t> | </dt> | |||
<dd>Internet Exchange Point | ||||
</dd> | ||||
<t>S Flag: Solicited Flag in NA messages, as per <xref | <dt>IXP-LAN: | |||
target="RFC4861"/>.</t> | </dt> | |||
<dd>The IXP's large Broadcast Domain to where Internet routers are conn | ||||
ected. | ||||
</dd> | ||||
<t>SN-multicast address: Solicited-Node IPv6 multicast address used by | <dt>LAG: | |||
NS messages.</t> | </dt> | |||
<dd>Link Aggregation Group | ||||
</dd> | ||||
<t>TLLA: Target Link Layer Address, as per <xref target="RFC4861"/>.</t> | <dt>MAC or IP DA: | |||
</dt> | ||||
<dd>MAC or IP Destination Address | ||||
</dd> | ||||
<t>VPLS: Virtual Private LAN Service.</t> | <dt>MAC or IP SA: | |||
</dt> | ||||
<dd>MAC or IP Source Address | ||||
</dd> | ||||
<t>This document assumes familiarity with the terminology used in <xref | <dt>ND: | |||
target="RFC7432"/>.</t> | </dt> | |||
</section> | <dd>Neighbor Discovery | |||
</dd> | ||||
<section anchor="sect-2" title="Introduction"> | <dt>NS: | |||
<t>As specified in <xref target="RFC7432"/> the IP Address field in the | </dt> | |||
Ethernet Virtual Private Networks (EVPN) MAC/IP Advertisement route may | <dd>Neighbor Solicitation | |||
optionally carry one of the IP addresses associated with the MAC | </dd> | |||
address. A PE may learn local IP->MAC pairs and advertise them in | ||||
EVPN MAC/IP Advertisement routes. Remote PEs importing those routes in | ||||
the same Broadcast Domain (BD) may add those IP->MAC pairs to their | ||||
Proxy-ARP/ND tables and reply to local ARP requests or Neighbor | ||||
Solicitations (or 'unicast-forward' those packets to the owner MAC), | ||||
reducing and even suppressing in some cases the flooding in the EVPN | ||||
network.</t> | ||||
<t>EVPN and its associated Proxy-ARP/ND function are extremely useful in | <dt>NA: | |||
DCs or Internet Exchange Points (IXPs) with large broadcast domains, | </dt> | |||
where the amount of ARP/ND flooded traffic causes issues on connected | <dd>Neighbor Advertisement | |||
routers and CEs. <xref target="RFC6820"/> describes the address | </dd> | |||
resolution problems in large DC networks.</t> | ||||
<t>This document describes the Proxy-ARP/ND function in <xref | <dt>NUD: | |||
target="RFC7432"/> networks, augmented by the capability of the ARP/ND | </dt> | |||
Extended Community <xref target="RFC9047"/>. From that perspective this | <dd>Neighbor Unreachability Detection, as per <xref target="RFC4861"/> | |||
document updates <xref target="RFC7432"/>.</t> | </dd> | |||
<t>Proxy-ARP/ND may be implemented to help IXPs, DCs and other operators | <dt>O Flag: | |||
deal with the issues derived from address resolution in large broadcast | </dt> | |||
domains.</t> | <dd>Override Flag in NA messages, as per <xref target="RFC4861"/> | |||
</dd> | ||||
<section anchor="sect-2.1" title="The Data Center Use-Case"> | <dt>PE: | |||
<t>As described in <xref target="RFC6820"/> the IPv4 and IPv6 address | </dt> | |||
resolution can create a lot of issues in large DCs. In particular, the | <dd>Provider Edge router | |||
issues created by the IPv4 Address Resolution Protocol procedures may | </dd> | |||
be significant.</t> | ||||
<t>On one hand, ARP Requests use broadcast MAC addresses, therefore | <dt>R Flag: | |||
any Tenant System in a large Broadcast Domain will see a large amount | </dt> | |||
of ARP traffic, which is not addressed to most of the receivers.</t> | <dd>Router Flag in NA messages, as per <xref target="RFC4861" format="d | |||
efault"/> | ||||
</dd> | ||||
<t>On the other hand, the flooding issue becomes even worse if some | <dt>RT2: | |||
Tenant Systems disappear from the broadcast domain, since some | </dt> | |||
implementations will persistently retry sending ARP Requests. As <xref | <dd>EVPN Route type 2 or EVPN MAC/IP Advertisement route, as per | |||
target="RFC6820"/> states, there are no clear requirements for | <xref target="RFC7432" format="default"/> | |||
retransmitting ARP Requests in the absence of replies, hence an | </dd> | |||
implementation may choose to keep retrying endlessly even if there are | ||||
no replies.</t> | ||||
<t>The amount of flooding that address resolution creates can be | <dt>S Flag: | |||
mitigated by the use of EVPN and its Proxy-ARP/ND function.</t> | </dt> | |||
</section> | <dd>Solicited Flag in NA messages, as per <xref target="RFC4861" | |||
format="default"/> | ||||
</dd> | ||||
<section anchor="sect-2.2" title="The Internet Exchange Point Use-Case"> | <dt>SN-multicast address: | |||
<t>The implementation described in this document is especially useful | </dt> | |||
in IXP networks.</t> | <dd>Solicited-Node IPv6 multicast address used by NS messages | |||
</dd> | ||||
<t>A typical IXP provides access to a large layer-2 Broadcast Domain | <dt>TLLA: | |||
for peering purposes (referred to as 'the peering network'), where | </dt> | |||
(hundreds of) Internet routers are connected. We refer to these | <dd>Target Link Layer Address, as per <xref target="RFC4861" format="de | |||
Internet routers as Customer Edge (CE) devices in this section. | fault"/> | |||
Because of the requirement to connect all routers to a single layer-2 | </dd> | |||
network the peering networks use IPv4 addresses in length ranges from | ||||
/21 to /24 (and even bigger for IPv6), which can create very large | ||||
broadcast domains. This peering network is transparent to the CEs, and | ||||
therefore, floods any ARP request or NS messages to all the CEs in the | ||||
network. Gratuitous ARP and NA messages are flooded to all the CEs | ||||
too.</t> | ||||
<t>In these IXP networks, most of the CEs are typically peering | <dt>VPLS: | |||
routers and roughly all the BUM traffic is originated by the ARP and | </dt> | |||
ND address resolution procedures. This ARP/ND BUM traffic causes | <dd>Virtual Private LAN Service | |||
significant data volumes that reach every single router in the peering | </dd> | |||
network. Since the ARP/ND messages are processed in "slow path" | ||||
software processors and they take high priority in the routers, heavy | ||||
loads of ARP/ND traffic can cause some routers to run out of | ||||
resources. CEs disappearing from the network may cause address | ||||
resolution explosions that can make a router with limited processing | ||||
power fail to keep BGP sessions running.</t> | ||||
<t>The issue might be better in IPv6 routers if MLD-snooping was | </dl> | |||
enabled, since ND uses SN-multicast address in NS messages; however, | ||||
ARP uses broadcast and has to be processed by all the routers in the | ||||
network. Some routers may also be configured to broadcast periodic | ||||
GARPs <xref target="RFC5227"/>. For IPv6, the fact that IPv6 CEs have | ||||
more than one IPv6 address contributes to the growth of ND flooding in | ||||
the network. The amount of ARP/ND flooded traffic grows linearly with | ||||
the number of IXP participants, therefore the issue can only grow | ||||
worse as new CEs are added.</t> | ||||
<t>In order to deal with this issue, IXPs have developed certain | <t>This document assumes familiarity with the terminology used in <xref ta | |||
solutions over the past years. While these solutions may mitigate the | rget="RFC7432" format="default"/>.</t> | |||
issues of address resolution in large broadcasts domains, EVPN | ||||
provides new more efficient possibilities to IXPs. EVPN and its | ||||
Proxy-ARP/ND function may help solve the issue in a distributed and | ||||
scalable way, fully integrated with the PE network.</t> | ||||
</section> | ||||
</section> | </section> | |||
<section anchor="sect-4" title="Solution Description"> | <section anchor="sect-4" numbered="true" toc="default"> | |||
<t><xref target="ure-proxy-arp-nd-network-example"/> illustrates an | <name>Solution Description</name> | |||
example EVPN network where the Proxy-ARP/ND function is enabled.</t> | <t><xref target="ure-proxy-arp-nd-network-example" format="default"/> illu | |||
strates an | ||||
<figure anchor="ure-proxy-arp-nd-network-example" | example EVPN network where the Proxy ARP/ND function is enabled.</t> | |||
title="Proxy-ARP/ND network example"> | <figure anchor="ure-proxy-arp-nd-network-example"> | |||
<artwork><![CDATA[ | <name>Proxy ARP/ND Network Example</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
BD1 | BD1 | |||
Proxy-ARP/ND | Proxy ARP/ND | |||
+------------+ | +------------+ | |||
IP1/M1 +----------------------------+ |IP1->M1 EVPN| | IP1/M1 +----------------------------+ |IP1->M1 EVPN| | |||
GARP --->Proxy-ARP/ND | |IP2->M2 EVPN| | GARP --->Proxy ARP/ND | |IP2->M2 EVPN| | |||
+---+ +--------+ RT2(IP1/M1) | |IP3->M3 sta | | +---+ +--------+ RT2(IP1/M1) | |IP3->M3 sta | | |||
|CE1+------| BD1 | ------> +------+---|IP4->M4 dyn | | |CE1+------| BD1 | ------> +------+---|IP4->M4 dyn | | |||
+---+ +--------+ | +------------+ | +---+ +--------+ | +------------+ | |||
PE1 | +--------+ Who has IP1? | PE1 | +--------+ Who has IP1? | |||
| EVPN | | BD1 | <----- +---+ | | EVPN | | BD1 | <----- +---+ | |||
| EVI1 | | | -----> |CE3| | | EVI1 | | | -----> |CE3| | |||
IP2/M2 | | | | IP1->M1 +---+ | IP2/M2 | | | | IP1->M1 +---+ | |||
GARP --->Proxy-ARP/ND | +--------+ | IP3/M3 | GARP --->Proxy ARP/ND | +--------+ | IP3/M3 | |||
+---+ +--------+ RT2(IP2/M2) | | | +---+ +--------+ RT2(IP2/M2) | | | |||
|CE2+----| BD1 | ------> +--------------+ | |CE2+----| BD1 | ------> +--------------+ | |||
+---+ +--------+ PE3| +---+ | +---+ +--------+ PE3| +---+ | |||
PE2 | +----+CE4| | PE2 | +----+CE4| | |||
+----------------------------+ +---+ | +----------------------------+ +---+ | |||
<---IP4/M4 GARP | <---IP4/M4 GARP | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t>When the Proxy ARP/ND function is enabled in a BD (Broadcast Domain) | ||||
<t>When the Proxy-ARP/ND function is enabled in a BD (Broadcast Domain) | ||||
of the EVPN PEs, each PE creates a Proxy table specific to that BD that | of the EVPN PEs, each PE creates a Proxy table specific to that BD that | |||
can contain three types of Proxy-ARP/ND entries:</t> | can contain three types of Proxy ARP/ND entries:</t> | |||
<t><list style="letters"> | ||||
<t>Dynamic entries: learned by snooping CE's ARP and ND messages. | ||||
For instance, IP4->M4 in <xref | ||||
target="ure-proxy-arp-nd-network-example"/>.</t> | ||||
<t>Static entries: provisioned on the PE by the management system. | ||||
For instance, IP3->M3 in <xref | ||||
target="ure-proxy-arp-nd-network-example"/>.</t> | ||||
<t>EVPN-learned entries: learned from the IP/MAC information encoded | <dl newline="true"> | |||
in the received RT2's coming from remote PEs. For instance, | ||||
IP1->M1 and IP2->M2 in <xref | ||||
target="ure-proxy-arp-nd-network-example"/>.</t> | ||||
</list></t> | ||||
<t>As a high level example, the operation of the EVPN Proxy-ARP/ND | <dt>Dynamic entries: | |||
function in the network of <xref | </dt> | |||
target="ure-proxy-arp-nd-network-example"/> is described below. In this | <dd>Learned by snooping a CE's ARP and ND messages; for instance, | |||
example we assume IP1, IP2 and IP3 are IPv4 addresses:</t> | see IP4->M4 in <xref target="ure-proxy-arp-nd-network-example" | |||
format="default"/>. | ||||
</dd> | ||||
<t><list style="numbers"> | <dt>Static entries: | |||
<t>Proxy-ARP/ND is enabled in BD1 of PE1, PE2 and PE3.</t> | </dt> | |||
<dd>Provisioned on the PE by the management system; for instance, | ||||
see IP3->M3 in <xref target="ure-proxy-arp-nd-network-example" | ||||
format="default"/>. | ||||
</dd> | ||||
<t>The PEs start adding dynamic, static and EVPN-learned entries to | <dt>EVPN-learned entries: | |||
their Proxy tables:<list style="letters"> | </dt> | |||
<?rfc subcompact="yes"?> | <dd>Learned from the IP/MAC information encoded in the received RT2's | |||
coming from remote PEs; for instance, see IP1->M1 and IP2->M2 in | ||||
<xref target="ure-proxy-arp-nd-network-example" format="default"/>. | ||||
</dd> | ||||
</dl> | ||||
<t>PE3 adds IP1->M1 and IP2->M2 based on the EVPN routes | <t>As a high-level example, the operation of the EVPN Proxy ARP/ND function in | |||
the network of <xref target="ure-proxy-arp-nd-network-example" | ||||
format="default"/> is described below. In this example, we assume IP1, IP2, and | ||||
IP3 are IPv4 addresses:</t> | ||||
<ol spacing="normal" type="1"> | ||||
<li>Proxy ARP/ND is enabled in BD1 of PE1, PE2, and PE3.</li> | ||||
<li> | ||||
<t>The PEs start adding dynamic, static, and EVPN-learned entries to | ||||
their Proxy tables:</t> | ||||
<ol spacing="normal" type="a"> | ||||
<li>PE3 adds IP1->M1 and IP2->M2 based on the EVPN routes | ||||
received from PE1 and PE2. Those entries were previously learned | received from PE1 and PE2. Those entries were previously learned | |||
as dynamic entries in PE1 and PE2 respectively, and advertised | as dynamic entries in PE1 and PE2, respectively, and advertised | |||
in BGP EVPN.</t> | in BGP EVPN.</li> | |||
<li>PE3 adds IP4->M4 as dynamic. This entry is learned by | ||||
<t>PE3 adds IP4->M4 as dynamic. This entry is learned by | snooping the corresponding ARP messages sent by CE4.</li> | |||
snooping the corresponding ARP messages sent by CE4.</t> | <li>An operator also provisions the static entry IP3->M3.</li> | |||
</ol> | ||||
<t>An operator also provisions the static entry IP3->M3.</t> | </li> | |||
<li> | ||||
<?rfc subcompact="no"?> | ||||
</list></t> | ||||
<t>When CE3 sends an ARP Request asking for the MAC address of IP1, | <t>When CE3 sends an ARP Request asking for the MAC address of IP1, | |||
PE3 will:<list style="letters"> | PE3 will:</t> | |||
<?rfc subcompact="yes"?> | <ol spacing="normal" type="a"> | |||
<li>Intercept the ARP Request and perform a Proxy ARP lookup for | ||||
<t>Intercept the ARP Request and perform a Proxy-ARP lookup for | IP1.</li> | |||
IP1.</t> | <li>If the lookup is successful (as in <xref target="ure-proxy-arp-n | |||
d-network-example" format="default"/>), PE3 will send an | ||||
<t>If the lookup is successful (as in <xref | ||||
target="ure-proxy-arp-nd-network-example"/>), PE3 will send an | ||||
ARP Reply with IP1->M1. The ARP Request will not be flooded | ARP Reply with IP1->M1. The ARP Request will not be flooded | |||
to the EVPN network or any other local CEs.</t> | to the EVPN network or any other local CEs.</li> | |||
<li>If the lookup is not successful, PE3 will flood the ARP | ||||
<t>If the lookup is not successful, PE3 will flood the ARP | Request in the EVPN network and the other local CEs.</li> | |||
Request in the EVPN network and the other local CEs.</t> | </ol> | |||
</li> | ||||
<?rfc subcompact="no"?> | </ol> | |||
</list></t> | <t>In the same example, if we assume IP1, IP2, IP3, and IP4 are now IPv6 | |||
</list></t> | addresses and Proxy ARP/ND is enabled in BD1:</t> | |||
<ol spacing="normal" type="1"><li> | ||||
<t>In the same example, if we assume IP1, IP2, IP3 and IP4 are now IPv6 | <t>PEs will start adding entries in a similar way as they would for IP | |||
addresses and Proxy-ARP/ND is enabled in BD1:</t> | v4; | |||
however, there are some differences:</t> | ||||
<t><list style="numbers"> | <ol spacing="normal" type="a"><li>IP1->M1 and IP2->M2 are | |||
<t>PEs will start adding entries in a similar way as for IPv4, | learned as dynamic entries in PE1 and PE2, respectively, by snooping | |||
however there are some differences:<list style="letters"> | NA messages and not by snooping NS messages. In the IPv4 case, any | |||
<t>IP1->M1 and IP2->M2 are learned as dynamic entries in | ARP frame can be snooped to learn the dynamic Proxy ARP entry. When | |||
PE1 and PE2 respectively, by snooping NA messages and not by | learning the dynamic entries, the R and O Flags contained in the | |||
snooping NS messages. In the IPv4 case, any ARP frame can be | snooped NA messages will be added to the Proxy ND entries too.</li> | |||
snooped to learn the dynamic Proxy-ARP entry. When learning the | <li>PE1 and PE2 will advertise those entries in EVPN MAC/IP | |||
dynamic entries, the R and O Flags contained in the snooped NA | ||||
messages will be added to the Proxy-ND entries too.</t> | ||||
<t>PE1 and PE2 will advertise those entries in EVPN MAC/IP | ||||
Advertisement routes, including the corresponding learned R and | Advertisement routes, including the corresponding learned R and | |||
O Flags in the ARP/ND Extended Community.</t> | O Flags in the ARP/ND Extended Community.</li> | |||
<li>PE3 also adds IP4->M4 as dynamic after snooping an NA | ||||
<t>PE3 also adds IP4->M4 as dynamic, after snooping an NA | message sent by CE4.</li> | |||
message sent by CE4.</t> | </ol> | |||
</list></t> | </li> | |||
<li>When CE3 sends an NS message asking for the MAC address of IP1, | ||||
<t>When CE3 sends an NS message asking for the MAC address of IP1, | PE3 behaves as in the IPv4 example, by intercepting the NS, performing | |||
PE3 behaves as in the IPv4 example, by intercepting the NS, doing a | a | |||
lookup on the IP and replying with an NA if the lookup is | lookup on the IP, and replying with an NA if the lookup is | |||
successful. If it is successful the NS is not flooded to the EVPN | successful. If it is successful, the NS is not flooded to the EVPN | |||
PEs or any other local CEs.</t> | PEs or any other local CEs.</li> | |||
<li>If the lookup is not successful, PE3 will flood the NS to remote | ||||
<t>If the lookup is not successful, PE3 will flood the NS to remote | ||||
EVPN PEs attached to the same BD and the other local CEs as in the | EVPN PEs attached to the same BD and the other local CEs as in the | |||
IPv4 case.</t> | IPv4 case.</li> | |||
</list></t> | </ol> | |||
<t>As PE3 learns more and more host entries in the Proxy ARP/ND table, | ||||
<t>As PE3 learns more and more host entries in the Proxy-ARP/ND table, | ||||
the flooding of ARP Request messages among PEs is reduced and in some | the flooding of ARP Request messages among PEs is reduced and in some | |||
cases it can even be suppressed. In a network where most of the | cases, it can even be suppressed. In a network where most of the | |||
participant CEs are not moving between PEs and they advertise their | participant CEs are not moving between PEs and are advertising their | |||
presence with GARPs or unsolicited-NA messages, the ARP/ND flooding | presence with GARPs or unsolicited-NA messages, the ARP/ND flooding | |||
among PEs, as well as the unknown unicast flooding, can practically be | among PEs, as well as the unknown unicast flooding, can practically be | |||
suppressed. In an EVPN-based IXP network, where all the entries are | suppressed. In an EVPN-based IXP network, where all the entries are | |||
Static, the ARP/ND flooding among PEs is in fact totally suppressed.</t> | static, the ARP/ND flooding among PEs is in fact totally suppressed.</t> | |||
<t>In a network where CEs move between PEs, the Proxy ARP/ND function | ||||
<t>In a network where CEs move between PEs, the Proxy-ARP/ND function | ||||
relies on the CE signaling its new location via GARP or unsolicited-NA | relies on the CE signaling its new location via GARP or unsolicited-NA | |||
messages so that tables are immediately updated. If a CE moves | messages so that tables are immediately updated. If a CE moves | |||
"silently", that is, without issuing any GARP or NA message upon getting | "silently", that is, without issuing any GARP or NA message upon getting | |||
attached to the destination PE, the mechanisms described in <xref | attached to the destination PE, the mechanisms described in <xref target=" | |||
target="sect-4.4"/> make sure that the Proxy-ARP/ND tables are | sect-4.4" format="default"/> make sure that the Proxy ARP/ND tables are | |||
eventually updated.</t> | eventually updated.</t> | |||
<section numbered="true" toc="default"> | ||||
<section title="Proxy-ARP/ND Sub-Functions"> | <name>Proxy ARP/ND Sub-functions</name> | |||
<t>The Proxy-ARP/ND function can be structured in six sub-functions or | <t>The Proxy ARP/ND function can be structured in six sub-functions or | |||
procedures:</t> | procedures:</t> | |||
<ol spacing="normal" type="1"><li>Learning sub-function</li> | ||||
<t><list style="numbers"> | <li>Reply sub-function</li> | |||
<t>Learning sub-function</t> | <li>Unicast-forward sub-function</li> | |||
<li>Maintenance sub-function</li> | ||||
<t>Reply sub-function</t> | <li>Flood handling sub-function</li> | |||
<li>Duplicate IP detection sub-function</li> | ||||
<t>Unicast-forward sub-function</t> | </ol> | |||
<t>A Proxy ARP/ND implementation <bcp14>MUST</bcp14> at least support | ||||
<t>Maintenance sub-function</t> | the Learning, Reply, Maintenance, and duplicate IP detection | |||
sub-functions. The following sections describe each individual | ||||
<t>Flood handling sub-function</t> | sub-function.</t> | |||
<t>Duplicate IP detection sub-function</t> | ||||
</list></t> | ||||
<t>A Proxy-ARP/ND implementation MUST at least support the Learning, | ||||
Reply, Maintenance, and Duplicate IP detection sub-functions. The | ||||
following sections describe each individual sub-function.</t> | ||||
</section> | </section> | |||
<section anchor="sect-4.1" numbered="true" toc="default"> | ||||
<section anchor="sect-4.1" title="Learning Sub-Function"> | <name>Learning Sub-function</name> | |||
<t>A Proxy-ARP/ND implementation in an EVPN BD MUST support dynamic | <t>A Proxy ARP/ND implementation in an EVPN BD <bcp14>MUST</bcp14> | |||
and EVPN-learned entries, and SHOULD support static entries.</t> | support dynamic and EVPN-learned entries and <bcp14>SHOULD</bcp14> | |||
support static entries.</t> | ||||
<t>Static entries are provisioned from the management plane. A static | <t>Static entries are provisioned from the management plane. A static | |||
entry is configured on the PE attached to the host using the IP | entry is configured on the PE attached to the host using the IP | |||
address in that entry. The provisioned static IP->MAC entry MUST be | address in that entry. The provisioned static IP->MAC entry | |||
advertised in EVPN with an ARP/ND Extended Community where the | <bcp14>MUST</bcp14> be advertised in EVPN with an ARP/ND Extended | |||
Immutable ARP/ND Binding Flag (I) is set to 1, as per <xref | Community where the Immutable ARP/ND Binding Flag (I) is set to 1, as | |||
target="RFC9047"/>. When the I flag in the ARP/ND Extended Community | per <xref target="RFC9047" format="default"/>. When the I Flag in the | |||
is 1, the advertising PE indicates that the IP address must not be | ARP/ND Extended Community is 1, the advertising PE indicates that the | |||
associated to a MAC, other than the one included in the EVPN MAC/IP | IP address must not be associated to a MAC other than the one included | |||
Advertisement route. The advertisement of I=1 in the ARP/ND Extended | in the EVPN MAC/IP Advertisement route. The advertisement of I = 1 in | |||
Community is compatible with any value of the Sticky bit (S) or | the ARP/ND Extended Community is compatible with any value of the | |||
Sequence Number in the <xref target="RFC7432"/> MAC Mobility Extended | Sticky bit (S) or sequence number in the <xref target="RFC7432" | |||
Community. Note that the I bit in the ARP/ND Extended Community refers | format="default"/> MAC Mobility Extended Community. Note that the | |||
to the immutable configured association between the IP and the MAC | I bit in the ARP/ND Extended Community refers to the immutable | |||
address in the IP->MAC binding, whereas the S bit in the MAC | configured association between the IP and the MAC address in the | |||
Mobility Extended Community refers to the fact that the advertised MAC | IP->MAC binding, whereas the S bit in the MAC Mobility Extended | |||
address is not subject to the <xref target="RFC7432"/> mobility | Community refers to the fact that the advertised MAC address is not | |||
subject to the <xref target="RFC7432" format="default"/> mobility | ||||
procedures.</t> | procedures.</t> | |||
<t>An entry may associate a configured static IP to a list of | <t>An entry may associate a configured static IP to a list of | |||
potential MACs, i.e. IP1->(MAC1,MAC2..MACN). Until a frame | potential MACs, i.e., IP1->(MAC1,MAC2..MACN). Until a frame | |||
(including local ARP/NA message) is received from the CE, the PE will | (including a local ARP/NA message) is received from the CE, the PE will | |||
not advertise any IP1->MAC in EVPN. Upon receiving traffic from the | not advertise any IP1->MAC in EVPN. Upon receiving traffic from the | |||
CE, the PE will check that the source MAC, E.g., MAC1, is included in | CE, the PE will check that the source MAC, e.g., MAC1, is included in | |||
the list of allowed MACs. Only in that case, the PE will activate the | the list of allowed MACs. Only in that case, the PE will activate the | |||
IP1->MAC1 and advertise only that IP1 and MAC1 in an EVPN MAC/IP | IP1->MAC1 and advertise only that IP1 and MAC1 in an EVPN MAC/IP | |||
Advertisement route.</t> | Advertisement route.</t> | |||
<t>The PE <bcp14>MUST</bcp14> create EVPN-learned entries from the recei | ||||
<t>The PE MUST create EVPN-learned entries from the received valid | ved valid | |||
EVPN MAC/IP Advertisement routes containing a MAC and IP address.</t> | EVPN MAC/IP Advertisement routes containing a MAC and IP address.</t> | |||
<t>Dynamic entries are learned in different ways depending on whether | <t>Dynamic entries are learned in different ways depending on whether | |||
the entry contains an IPv4 or IPv6 address:</t> | the entry contains an IPv4 or IPv6 address:</t> | |||
<t><list style="letters"> | <dl newline="true"> | |||
<t>Proxy-ARP dynamic entries: <list style="empty"> | ||||
<t>The PE MUST snoop all ARP packets (that is, all frames with | ||||
Ethertype 0x0806) received from the CEs attached to the BD in | ||||
order to learn dynamic entries. ARP packets received from | ||||
remote EVPN PEs attached to the same BD are not snooped. The | ||||
Learning function will add the Sender MAC and Sender IP of the | ||||
snooped ARP packet to the Proxy-ARP table. Note that a MAC or | ||||
an IP address with value 0 SHOULD NOT be learned.</t> | ||||
</list></t> | ||||
<t>Proxy-ND dynamic entries:<list style="empty"> | <dt>Proxy ARP dynamic entries: | |||
<t>The PE MUST snoop the NA messages (Ethertype 0x86dd, ICMPv6 | </dt> | |||
type 136) received from the CEs attached to the BD and learn | <dd>The PE <bcp14>MUST</bcp14> snoop all ARP packets (that is, all | |||
dynamic entries from the Target Address and TLLA information. | frames with Ethertype 0x0806) received from the CEs attached to the | |||
NA messages received from remote EVPN PEs are not snooped. A | BD in order to learn dynamic entries. ARP packets received from | |||
PE implementing Proxy-ND as in this document MUST NOT create | remote EVPN PEs attached to the same BD are not snooped. The | |||
dynamic IP->MAC entries from NS messages, since they don't | Learning function will add the sender MAC and sender IP of the | |||
contain the R Flag required by the Proxy-ND reply function. | snooped ARP packet to the Proxy ARP table. Note that a MAC or an IP | |||
See <xref target="sect-4.1.1"/> for more information about the | address with value 0 <bcp14>SHOULD NOT</bcp14> be learned. | |||
R Flag.</t> | </dd> | |||
<t>This document specifies an "anycast" capability that can be | <dt>Proxy ND dynamic entries: | |||
configured for the proxy-ND function of the PE, and affects | </dt> | |||
how dynamic Proxy-ND entries are learned based on the O Flag | <dd> | |||
of the snooped NA messages. If the O Flag is zero in the | <t>The PE <bcp14>MUST</bcp14> snoop the NA messages (Ethertype | |||
received NA message, the IP->MAC SHOULD only be learned in | 0x86dd, ICMPv6 type 136) received from the CEs attached to the BD | |||
case the IPv6 "anycast" capability is enabled in the BD. | and learn dynamic entries from the Target Address and TLLA | |||
Irrespective, an NA message with O Flag = 0 will be normally | information. NA messages received from remote EVPN PEs are not | |||
forwarded by the PE based on a MAC DA lookup.</t> | snooped. A PE implementing Proxy ND as in this document | |||
</list></t> | <bcp14>MUST NOT</bcp14> create dynamic IP->MAC entries from NS | |||
</list></t> | messages because they don't contain the R Flag required by the | |||
Proxy ND reply function. See <xref target="sect-4.1.1" | ||||
format="default"/> for more information about the R Flag.</t> | ||||
<t>This document specifies an "anycast" capability that can be | ||||
configured for the Proxy ND function of the PE and affects how | ||||
dynamic Proxy ND entries are learned based on the O Flag of the | ||||
snooped NA messages. If the O Flag is zero in the received NA | ||||
message, the IP->MAC <bcp14>SHOULD</bcp14> only be learned in | ||||
case the IPv6 "anycast" capability is enabled in the BD. | ||||
Irrespective, an NA message with O Flag = 0 will be normally | ||||
forwarded by the PE based on a MAC DA lookup. | ||||
</t> | ||||
</dd> | ||||
<t>The following procedure associated to the Learning sub-function is | </dl> | |||
RECOMMENDED:</t> | ||||
<t><list style="symbols"> | <t>The following procedure associated to the Learning sub-function is | |||
<t>When a new Proxy-ARP/ND EVPN or static active entry is learned | <bcp14>RECOMMENDED</bcp14>:</t> | |||
(or provisioned), the PE SHOULD send a GARP or unsolicited-NA | <ul spacing="normal"> | |||
message to all the connected access CEs. The PE SHOULD send a GARP | <li>When a new Proxy ARP/ND EVPN or static active entry is learned | |||
(or provisioned), the PE <bcp14>SHOULD</bcp14> send a GARP or unsoli | ||||
cited-NA | ||||
message to all the connected access CEs. The PE <bcp14>SHOULD</bcp14 | ||||
> send a GARP | ||||
or unsolicited-NA message for dynamic entries only if the ARP/NA | or unsolicited-NA message for dynamic entries only if the ARP/NA | |||
message that previously created the entry on the PE was NOT | message that previously created the entry on the PE was NOT | |||
flooded to all the local connected CEs before. This | flooded to all the local connected CEs before. This | |||
GARP/unsolicited-NA message makes sure the CE ARP/ND caches are | GARP/unsolicited-NA message makes sure the CE ARP/ND caches are | |||
updated even if the ARP/NS/NA messages from CEs connected to | updated even if the ARP/NS/NA messages from CEs connected to | |||
remote PEs are not flooded in the EVPN network.</t> | remote PEs are not flooded in the EVPN network.</li> | |||
</list></t> | </ul> | |||
<t>Note that if a Static entry is provisioned with the same IP as an | <t>Note that if a static entry is provisioned with the same IP as an | |||
existing EVPN-learned or Dynamic entry, the Static entry takes | existing EVPN-learned or dynamic entry, the static entry takes | |||
precedence.</t> | precedence.</t> | |||
<t>In case of a PE reboot, the static and EVPN entries will be | <t>In case of a PE reboot, the static and EVPN entries will be | |||
re-added as soon as the PE is back online and receives all the EVPN | re-added as soon as the PE is back online and receives all the EVPN | |||
routes for the BD. However, the dynamic entries will be gone. Due to | routes for the BD. However, the dynamic entries will be gone. Due to | |||
that reason, new NS and ARP Requests will be flooded by the PE to | that reason, new NS and ARP Requests will be flooded by the PE to | |||
remote PEs and dynamic entries gradually re-learned again.</t> | remote PEs and dynamic entries gradually relearned again.</t> | |||
<section anchor="sect-4.1.1" title="Proxy-ND and the NA Flags"> | <section anchor="sect-4.1.1" numbered="true" toc="default"> | |||
<t><xref target="RFC4861"/> describes the use of the R Flag in IPv6 | <name>Proxy ND and the NA Flags</name> | |||
<t><xref target="RFC4861" format="default"/> describes the use of the | ||||
R Flag in IPv6 | ||||
address resolution:</t> | address resolution:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li>Nodes capable of routing IPv6 packets must reply to NS | |||
<t>Nodes capable of routing IPv6 packets must reply to NS | messages with NA messages where the R Flag is set (R Flag = 1).</li> | |||
messages with NA messages where the R Flag is set (R | <li>Hosts that are not able to route IPv6 packets must indicate | |||
Flag=1).</t> | ||||
<t>Hosts that are not able to route IPv6 packets must indicate | ||||
that inability by replying with NA messages that contain R | that inability by replying with NA messages that contain R | |||
Flag=0.</t> | Flag = 0.</li> | |||
</list></t> | </ul> | |||
<t>The use of the R Flag in NA messages has an impact on how hosts | <t>The use of the R Flag in NA messages has an impact on how hosts | |||
select their default gateways when sending packets off-link, as per | select their default gateways when sending packets off-link, as per | |||
<xref target="RFC4861"/>:</t> | <xref target="RFC4861" format="default"/>:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li>Hosts build a Default Router List based on the received RAs | |||
<t>Hosts build a Default Router List based on the received RAs | and NAs with R Flag = 1. Each cache entry has an IsRouter flag, | |||
and NAs with R Flag=1. Each cache entry has an IsRouter flag, | ||||
which must be set for received RAs and is set based on the R | which must be set for received RAs and is set based on the R | |||
flag in the received NAs. A host can choose one or more Default | Flag in the received NAs. A host can choose one or more Default | |||
Routers when sending packets off-link.</t> | Routers when sending packets off-link.</li> | |||
<li>In those cases where the IsRouter flag changes from TRUE to | ||||
<t>In those cases where the IsRouter flag changes from TRUE to | FALSE as a result of an NA update, the node must remove that | |||
FALSE as a result of a NA update, the node must remove that | router from the Default Router List and update the Destination | |||
router from the Default Router List and update the Destination | Cache entries for all destinations using that neighbor as a | |||
Cache entries for all destinations using that neighbor as a | router, as specified in <xref target="RFC4861" sectionFormat="of" | |||
router, as specified in <xref target="RFC4861"/> section 7.3.3. | section="7.3.3" format="default"/>. This is needed to detect when | |||
This is needed to detect when a node that is used as a router | a node that is used as a router stops forwarding packets due to | |||
stops forwarding packets due to being configured as a host.</t> | being configured as a host.</li> | |||
</list></t> | </ul> | |||
<t>The R and O Flags for a Proxy ARP/ND entry will be learned in | ||||
<t>The R Flag and O Flag for a Proxy-ARP/ND entry will be learned in | ||||
the following ways:</t> | the following ways:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li>The R Flag information <bcp14>SHOULD</bcp14> be added to the | |||
<t>The R Flag information SHOULD be added to the Static entries | static entries by the management interface. The O Flag information | |||
by the management interface. The O Flag information MAY also be | <bcp14>MAY</bcp14> also be added by the management interface. If | |||
added by the management interface. If the R and O Flags are not | the R and O Flags are not configured, the default value is 1.</li> | |||
configured, the default value is 1.</t> | <li>Dynamic entries <bcp14>SHOULD</bcp14> learn the R Flag and | |||
<bcp14>MAY</bcp14> learn the O Flag from the snooped NA messages | ||||
<t>Dynamic entries SHOULD learn the R Flag and MAY learn the O | used to learn the IP->MAC itself.</li> | |||
Flag from the snooped NA messages used to learn the IP->MAC | <li>EVPN-learned entries <bcp14>SHOULD</bcp14> learn the R Flag | |||
itself.</t> | and <bcp14>MAY</bcp14> learn the O Flag from the ARP/ND Extended | |||
Community <xref target="RFC9047" format="default"/> received from | ||||
<t>EVPN-learned entries SHOULD learn the R Flag and MAY learn | EVPN along with the RT2 used to learn the IP->MAC itself. If no | |||
the O Flag from the ARP/ND Extended Community <xref | ARP/ND Extended Community is received, the PE will add a | |||
target="RFC9047"/> received from EVPN along with the RT2 used to | configured R Flag / O Flag to the entry. These configured R and O | |||
learn the IP->MAC itself. If no ARP/ND Extended Community is | Flags <bcp14>MAY</bcp14> be an administrative choice with a | |||
received, the PE will add a configured R Flag/O Flag to the | default value of 1. The configuration of this administrative | |||
entry. These configured R and O Flags MAY be an administrative | choice provides a backwards-compatible option with EVPN PEs that | |||
choice with a default value of 1. The configuration of this | follow <xref target="RFC7432" format="default"/> but do not | |||
administrative choice provides a backwards compatible option | support this specification.</li> | |||
with EVPN PEs that follow <xref target="RFC7432"/> but do not | </ul> | |||
support this specification.</t> | <t>Note that, typically, IP->MAC entries with O = 0 will not be | |||
</list></t> | learned; therefore, the Proxy ND function will reply to NS | |||
messages with NA messages that contain O = 1. However, this document | ||||
<t>Note that, typically, IP->MAC entries with O=0 will not be | ||||
learned, and therefore the Proxy-ND function will reply to NS | ||||
messages with NA messages that contain O=1. However, this document | ||||
allows the configuration of the "anycast" capability in the BD where | allows the configuration of the "anycast" capability in the BD where | |||
the Proxy-ND function is enabled. If "anycast" is enabled in the BD | the Proxy ND function is enabled. If "anycast" is enabled in the BD | |||
and an NA message with O=0 is received, the associated IP->MAC | and an NA message with O = 0 is received, the associated IP->MAC | |||
entry will be learned with O=0. If this "anycast" capability is | entry will be learned with O = 0. If this "anycast" capability is | |||
enabled in the BD, Duplicate IP Detection must be disabled so that | enabled in the BD, duplicate IP detection must be disabled so that | |||
the PE is able to learn the same IP mapped to different MACs in the | the PE is able to learn the same IP mapped to different MACs in the | |||
same Proxy-ND table. If the "anycast" capability is disabled, NA | same Proxy ND table. If the "anycast" capability is disabled, NA | |||
messages with O Flag = 0 will not create a Proxy-ND entry (although | messages with O Flag = 0 will not create a Proxy ND entry (although | |||
they will be forwarded normally), hence no EVPN advertisement with | they will be forwarded normally); hence, no EVPN advertisement with | |||
ARP/ND Extended Community will be generated.</t> | ARP/ND Extended Community will be generated.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sect-4.2" numbered="true" toc="default"> | ||||
<section anchor="sect-4.2" title="Reply Sub-Function"> | <name>Reply Sub-function</name> | |||
<t>This sub-function will reply to address resolution | <t>This sub-function will reply to address resolution | |||
requests/solicitations upon successful lookup in the Proxy-ARP/ND | requests/solicitations upon successful lookup in the Proxy ARP/ND | |||
table for a given IP address. The following considerations should be | table for a given IP address. The following considerations should be | |||
taken into account, assuming that the ARP Request/NS lookup hits a | taken into account, assuming that the ARP Request / NS lookup hits a | |||
Proxy-ARP/ND entry IP1->MAC1:</t> | Proxy ARP/ND entry IP1->MAC1:</t> | |||
<ol spacing="normal" type="a"><li> | ||||
<t><list style="letters"> | <t>When replying to ARP Requests or NS messages:</t> | |||
<t>When replying to ARP Request or NS messages:<list | <ul spacing="normal"> | |||
style="symbols"> | <li>The PE <bcp14>SHOULD</bcp14> use the Proxy ARP/ND entry MAC | |||
<t>the PE SHOULD use the Proxy-ARP/ND entry MAC address MAC1 | address MAC1 as MAC SA. This is <bcp14>RECOMMENDED</bcp14> so | |||
as MAC SA. This is RECOMMENDED so that the resolved MAC can be | that the resolved MAC can be learned in the MAC forwarding | |||
learned in the MAC forwarding database of potential layer-2 | database of potential Layer 2 switches sitting between the PE | |||
switches sitting between the PE and the CE requesting the | and the CE requesting the address resolution.</li> | |||
address resolution.</t> | <li>For an ARP reply, the PE <bcp14>MUST</bcp14> use the | |||
Proxy ARP entry IP1 and MAC1 addresses in the sender Protocol | ||||
<t>for an ARP reply, the PE MUST use the Proxy-ARP entry IP1 | Address and Hardware Address fields, respectively.</li> | |||
and MAC1 addresses in the Sender Protocol Address and Hardware | <li>For an NA message in response to an address resolution NS or | |||
Address fields, respectively.</t> | DAD NS, the PE <bcp14>MUST</bcp14> use IP1 as the IP SA and | |||
Target Address. M1 <bcp14>MUST</bcp14> be used as the Target | ||||
<t>for an NA message in response to an address resolution NS | Link Local Address (TLLA).</li> | |||
or DAD NS, the PE MUST use IP1 as the IP SA and Target | </ul> | |||
Address. M1 MUST be used as the Target Link Local Address | </li> | |||
(TLLA).</t> | <li>A PE <bcp14>SHOULD NOT</bcp14> reply to a request/solicitation rec | |||
</list></t> | eived on the | |||
<t>A PE SHOULD NOT reply to a request/solicitation received on the | ||||
same attachment circuit over which the IP->MAC is learned. In | same attachment circuit over which the IP->MAC is learned. In | |||
this case the requester and the requested IP are assumed to be | this case, the requester and the requested IP are assumed to be | |||
connected to the same layer-2 CE/access network linked to the PE's | connected to the same Layer 2 CE/access network linked to the PE's | |||
attachment circuit, and therefore the requested IP owner will | attachment circuit; therefore, the requested IP owner will | |||
receive the request directly.</t> | receive the request directly.</li> | |||
<li>A PE <bcp14>SHOULD</bcp14> reply to broadcast/multicast address re | ||||
<t>A PE SHOULD reply to broadcast/multicast address resolution | solution | |||
messages, that is, ARP-Request, ARP probes, NS messages as well as | messages, i.e., ARP Requests, ARP probes, NS messages, as well as | |||
DAD NS messages. An ARP probe is an ARP request constructed with | DAD NS messages. An ARP probe is an ARP Request constructed with | |||
an all-zero sender IP address that may be used by hosts for IPv4 | an all-zero sender IP address that may be used by hosts for IPv4 | |||
Address Conflict Detection as specified in <xref | Address Conflict Detection as specified in <xref target="RFC5227" fo | |||
target="RFC5227"/>. A PE SHOULD NOT reply to unicast address | rmat="default"/>. A PE <bcp14>SHOULD NOT</bcp14> reply to unicast address | |||
resolution requests (for instance, NUD NS messages).</t> | resolution requests (for instance, NUD NS messages).</li> | |||
<li> | ||||
<t>When replying to an NS, a PE SHOULD set the Flags in the NA | <t>When replying to an NS, a PE <bcp14>SHOULD</bcp14> set the Flags | |||
messages as follows:<list style="symbols"> | in the NA | |||
<t>The R-bit is set as it was learned for the IP->MAC entry | messages as follows:</t> | |||
in the NA messages that created the entry (see <xref | <ul spacing="normal"> | |||
target="sect-4.1.1"/>).</t> | <li>The R bit is set as it was learned for the IP->MAC entry | |||
in the NA messages that created the entry (see <xref target="sec | ||||
<t>The S Flag will be set/unset as per <xref | t-4.1.1" format="default"/>).</li> | |||
target="RFC4861"/>.</t> | <li>The S Flag will be set/unset as per <xref target="RFC4861" for | |||
mat="default"/>.</li> | ||||
<t>The O Flag will be set in all the NA messages issued by the | <li>The O Flag will be set in all the NA messages issued by the | |||
PE, except in the case the BD is configured with the "anycast" | PE except in the case in which the BD is configured with the | |||
capability and the entry was previously learned with O=0. If | "anycast" capability and the entry was previously learned with | |||
"anycast" is enabled and there are more than one MAC for a | O = 0. If "anycast" is enabled and there is more than one MAC for | |||
given IP in the Proxy-ND table, the PE will reply to NS | a given IP in the Proxy ND table, the PE will reply to NS | |||
messages with as many NA responses as 'anycast' entries there | messages with as many NA responses as "anycast" entries there | |||
are in the Proxy-ND table.</t> | are in the Proxy ND table.</li> | |||
</list></t> | </ul> | |||
</li> | ||||
<t>For Proxy-ARP, a PE MUST only reply to ARP-Request with the | <li>For Proxy ARP, a PE <bcp14>MUST</bcp14> only reply to ARP Requests | |||
format specified in <xref target="RFC0826"/>.</t> | with the | |||
format specified in <xref target="RFC0826" format="default"/>.</li> | ||||
<t>For Proxy-ND, a PE MUST reply to NS messages with known options | <li> | |||
with the format and options specified in <xref target="RFC4861"/>, | <t>For Proxy ND, a PE <bcp14>MUST</bcp14> reply to NS messages | |||
and MAY reply, discard, forward or unicast-forward NS messages | with known options with the format and options specified in <xref | |||
containing other options. An administrative choice to control the | target="RFC4861" format="default"/> and <bcp14>MAY</bcp14> reply, | |||
behavior for received NS messages with unknown options ('reply', | discard, forward, or unicast-forward NS messages containing other | |||
'discard', 'unicast-forward' or 'forward') MAY be supported. <list | options. An administrative choice to control the behavior for | |||
style="symbols"> | received NS messages with unknown options ("reply", "discard", | |||
<t>The 'reply' option implies that the PE ignores the unknown | "unicast-forward", or "forward") <bcp14>MAY</bcp14> be | |||
supported. </t> | ||||
<ul spacing="normal"> | ||||
<li>The "reply" option implies that the PE ignores the unknown | ||||
options and replies with NA messages, assuming a successful | options and replies with NA messages, assuming a successful | |||
lookup on the Proxy-ND table. An unsuccessful lookup will | lookup on the Proxy ND table. An unsuccessful lookup will | |||
result in a ‘forward’ behavior (i.e., flood the NS | result in a "forward" behavior (i.e., flood the NS | |||
message based on the MAC DA.</t> | message based on the MAC DA).</li> | |||
<li>If "discard" is available, the operator should assess if | ||||
<t>If 'discard' is available, the operator should assess if | flooding NS unknown options may be a security risk for the EVPN | |||
flooding NS unknown options may be a security risk for the | BD (and if so, enable "discard") or, on the contrary, if not | |||
EVPN BD (and if so, enable 'discard'), or if, on the contrary, | forwarding/flooding NS unknown options may disrupt | |||
not forwarding/flooding NS unknown options may disrupt | connectivity. This option discards NS messages with unknown | |||
connectivity. This option discards NS messages with unknown | options irrespective of the result of the lookup on the | |||
options, irrespective of the result of the lookup on the | Proxy ND table.</li> | |||
Proxy-ND table.</t> | <li>The "unicast-forward" option is described in <xref target="sec | |||
t-4.3" format="default"/>.</li> | ||||
<t>The 'unicast-forward' option is described in <xref | <li>The "forward" option implies flooding the NS message based | |||
target="sect-4.3"/>.</t> | ||||
<t>The 'forward' option implies flooding the NS message based | ||||
on the MAC DA. This option forwards NS messages with unknown | on the MAC DA. This option forwards NS messages with unknown | |||
options, irrespective of the result of the lookup on the | options irrespective of the result of the lookup on the | |||
Proxy-ND table. The 'forward' option is RECOMMENDED by this | Proxy ND table. The "forward" option is <bcp14>RECOMMENDED</bcp1 | |||
document.</t> | 4> by this | |||
</list></t> | document.</li> | |||
</list></t> | </ul> | |||
</li> | ||||
</ol> | ||||
</section> | </section> | |||
<section anchor="sect-4.3" numbered="true" toc="default"> | ||||
<section anchor="sect-4.3" title="Unicast-forward Sub-Function"> | <name>Unicast-Forward Sub-function</name> | |||
<t>As discussed in <xref target="sect-4.2"/>, in some cases the | <t>As discussed in <xref target="sect-4.2" format="default"/>, in some c | |||
operator may want to 'unicast-forward' certain ARP-Request and NS | ases, the | |||
operator may want to "unicast-forward" certain ARP Requests and NS | ||||
messages as opposed to reply to them. The implementation of a | messages as opposed to reply to them. The implementation of a | |||
'unicast-forward' function is RECOMMENDED. This option can be enabled | "unicast-forward" function is <bcp14>RECOMMENDED</bcp14>. This option ca n be enabled | |||
with one of the following parameters:</t> | with one of the following parameters:</t> | |||
<ol spacing="normal" type="a"><li>unicast-forward always</li> | ||||
<t><list style="letters"> | <li>unicast-forward unknown-options</li> | |||
<t>unicast-forward always</t> | </ol> | |||
<t>If "unicast-forward always" is enabled, the PE will perform a | ||||
<t>unicast-forward unknown-options</t> | Proxy ARP/ND table lookup and, in case of a hit, the PE will forward | |||
</list></t> | the packet to the owner of the MAC found in the Proxy ARP/ND table. | |||
<t>If 'unicast-forward always' is enabled, the PE will perform a | ||||
Proxy-ARP/ND table lookup and in case of a hit, the PE will forward | ||||
the packet to the owner of the MAC found in the Proxy-ARP/ND table. | ||||
This is irrespective of the options carried in the ARP/ND packet. This | This is irrespective of the options carried in the ARP/ND packet. This | |||
option provides total transparency in the BD and yet reduces the | option provides total transparency in the BD and yet reduces the | |||
amount of flooding significantly.</t> | amount of flooding significantly.</t> | |||
<t>If "unicast-forward unknown-options" is enabled, upon a successful | ||||
<t>If 'unicast-forward unknown-options' is enabled, upon a successful | Proxy ARP/ND lookup, the PE will perform a "unicast-forward" action | |||
Proxy-ARP/ND lookup, the PE will perform a 'unicast-forward' action | only if the ARP Requests or NS messages carry unknown options, as | |||
only if the ARP-Request or NS messages carry unknown options, as | explained in <xref target="sect-4.2" format="default"/>. The "unicast-fo | |||
explained in <xref target="sect-4.2"/>. The 'unicast-forward | rward | |||
unknown-options' configuration allows the support of new applications | unknown-options" configuration allows the support of new applications | |||
using ARP/ND in the BD while still reducing the flooding.</t> | using ARP/ND in the BD while still reducing the flooding.</t> | |||
<t>Irrespective of the enabled option, if there is no successful | <t>Irrespective of the enabled option, if there is no successful | |||
Proxy-ARP/ND lookup, the unknown ARP-Request/NS will be flooded in the | Proxy ARP/ND lookup, the unknown ARP Request / NS message will be floode | |||
context of the BD, as per <xref target="sect-4.5"/>.</t> | d in the | |||
context of the BD, as per <xref target="sect-4.5" format="default"/>.</t | ||||
> | ||||
</section> | </section> | |||
<section anchor="sect-4.4" numbered="true" toc="default"> | ||||
<section anchor="sect-4.4" title="Maintenance Sub-Function"> | <name>Maintenance Sub-function</name> | |||
<t>The Proxy-ARP/ND tables SHOULD follow a number of maintenance | <t>The Proxy ARP/ND tables <bcp14>SHOULD</bcp14> follow a number of main | |||
tenance | ||||
procedures so that the dynamic IP->MAC entries are kept if the | procedures so that the dynamic IP->MAC entries are kept if the | |||
owner is active and flushed (and the associated RT2 withdrawn) if the | owner is active and flushed (and the associated RT2 withdrawn) or if the | |||
owner is no longer in the network. The following procedures are | owner is no longer in the network. The following procedures are | |||
RECOMMENDED:</t> | <bcp14>RECOMMENDED</bcp14>:</t> | |||
<t><list style="letters"> | <dl newline="true"> | |||
<t>Age-time <vspace blankLines="1"/>A dynamic Proxy-ARP/ND entry | ||||
MUST be flushed out of the table if the IP->MAC has not been | ||||
refreshed within a given age-time. The entry is refreshed if an | ||||
ARP or NA message is received for the same IP->MAC entry. The | ||||
age-time is an administrative option and its value should be | ||||
carefully chosen depending on the specific use case: in IXP | ||||
networks (where the CE routers are fairly static) the age-time may | ||||
normally be longer than in DC networks (where mobility is | ||||
required).</t> | ||||
<t>Send-refresh option<vspace blankLines="1"/>The PE MAY send | <dt>Age-time: | |||
periodic refresh messages (ARP/ND "probes") to the owners of the | </dt> | |||
dynamic Proxy-ARP/ND entries, so that the entries can be refreshed | <dd>A dynamic Proxy ARP/ND entry <bcp14>MUST</bcp14> be flushed out | |||
before they age out. The owner of the IP->MAC entry would reply | of the table if the IP->MAC has not been refreshed within a given | |||
to the ARP/ND probe and the corresponding entry age-time reset. | age-time. The entry is refreshed if an ARP or NA message is received | |||
The periodic send-refresh timer is an administrative option and is | for the same IP->MAC entry. The age-time is an administrative | |||
RECOMMENDED to be a third of the age-time or a half of the | option, and its value should be carefully chosen depending on the | |||
age-time in scaled networks. <vspace blankLines="1"/>An ARP | specific use case; in IXP networks (where the CE routers are fairly | |||
refresh issued by the PE will be an ARP-Request message with the | static), the age-time may normally be longer than in DC networks | |||
Sender's IP = 0 sent from the PE's MAC SA. If the PE has an IP | (where mobility is required). | |||
address in the subnet, for instance on an Integrated Routing and | </dd> | |||
Bridging (IRB) interface, then it MAY use it as a source for the | ||||
ARP request (instead of Sender's IP = 0). An ND refresh will be a | ||||
NS message issued from the PE's MAC SA and a Link Local Address | ||||
associated to the PE's MAC. <vspace blankLines="1"/>The refresh | ||||
request messages SHOULD be sent only for dynamic entries and not | ||||
for static or EVPN-learned entries. Even though the refresh | ||||
request messages are broadcast or multicast, the PE SHOULD only | ||||
send the message to the attachment circuit associated to the MAC | ||||
in the IP->MAC entry.</t> | ||||
</list></t> | ||||
<t>The age-time and send-refresh options are used in EVPN networks to | <dt>Send-refresh option: | |||
avoid unnecessary EVPN RT2 withdrawals: if refresh messages are sent | </dt> | |||
before the corresponding BD Bridge-Table and Proxy-ARP/ND age-time for | <dd> | |||
a given entry expires, inactive but existing hosts will reply, | ||||
refreshing the entry and therefore avoiding unnecessary EVPN MAC/IP | ||||
Advertisement withdrawals in EVPN. Both entries (MAC in the BD and | ||||
IP->MAC in Proxy-ARP/ND) are reset when the owner replies to the | ||||
ARP/ND probe. If there is no response to the ARP/ND probe, the MAC and | ||||
IP->MAC entries will be legitimately flushed and the RT2s | ||||
withdrawn.</t> | ||||
</section> | ||||
<section anchor="sect-4.5" title="Flood (to Remote PEs) Handling"> | <t>The PE <bcp14>MAY</bcp14> send periodic refresh messages | |||
<t>The Proxy-ARP/ND function implicitly helps reducing the flooding of | (ARP/ND "probes") to the owners of the dynamic Proxy ARP/ND | |||
ARP Request and NS messages to remote PEs in an EVPN network. However, | entries, so that the entries can be refreshed before they age | |||
out. The owner of the IP->MAC entry would reply to the ARP/ND | ||||
probe and the corresponding entry age-time reset. The periodic | ||||
send-refresh timer is an administrative option and is | ||||
<bcp14>RECOMMENDED</bcp14> to be a third of the age-time or a half | ||||
of the age-time in scaled networks. </t> | ||||
<t>An ARP refresh issued by the PE will be an ARP Request message | ||||
with the sender's IP = 0 sent from the PE's MAC SA. If the PE has | ||||
an IP address in the subnet, for instance, on an Integrated Routing | ||||
and Bridging (IRB) interface, then it <bcp14>MAY</bcp14> use it as | ||||
a source for the ARP Request (instead of sender's IP = 0). An ND | ||||
refresh will be an NS message issued from the PE's MAC SA and a | ||||
Link Local Address associated to the PE's MAC. </t> | ||||
<t>The refresh request messages <bcp14>SHOULD</bcp14> be sent only | ||||
for dynamic entries and not for static or EVPN-learned | ||||
entries. Even though the refresh request messages are broadcast or | ||||
multicast, the PE <bcp14>SHOULD</bcp14> only send the message to | ||||
the attachment circuit associated to the MAC in the IP->MAC | ||||
entry.</t> | ||||
</dd> | ||||
</dl> | ||||
<t>The age-time and send-refresh options are used in EVPN networks to avoid | ||||
unnecessary EVPN RT2 withdrawals; if refresh messages are sent before the | ||||
corresponding BD Bridge-Table and Proxy ARP/ND age-time for a given entry | ||||
expires, inactive but existing hosts will reply, refreshing the entry and | ||||
therefore avoiding unnecessary EVPN MAC/IP Advertisement withdrawals in | ||||
EVPN. Both entries (MAC in the BD and IP->MAC in the Proxy ARP/ND) are reset | ||||
when the owner replies to the ARP/ND probe. If there is no response to the | ||||
ARP/ND probe, the MAC and IP->MAC entries will be legitimately flushed and | ||||
the RT2s withdrawn.</t> | ||||
</section> | ||||
<section anchor="sect-4.5" numbered="true" toc="default"> | ||||
<name>Flood (to Remote PEs) Handling</name> | ||||
<t>The Proxy ARP/ND function implicitly helps reduce the flooding of | ||||
ARP Requests and NS messages to remote PEs in an EVPN network. However, | ||||
in certain use cases, the flooding of ARP/NS/NA messages (and even the | in certain use cases, the flooding of ARP/NS/NA messages (and even the | |||
unknown unicast flooding) to remote PEs can be suppressed completely | unknown unicast flooding) to remote PEs can be suppressed completely | |||
in an EVPN network.</t> | in an EVPN network.</t> | |||
<t>For instance, in an IXP network, since all the participant CEs are | <t>For instance, in an IXP network, since all the participant CEs are | |||
well known and will not move to a different PE, the IP->MAC entries | well known and will not move to a different PE, the IP->MAC entries | |||
for the local CEs may be all provisioned on the PEs by a management | for the local CEs may be all provisioned on the PEs by a management | |||
system. Assuming the entries for the CEs are all provisioned on the | system. Assuming the entries for the CEs are all provisioned on the | |||
local PE, a given Proxy-ARP/ND table will only contain static and | local PE, a given Proxy ARP/ND table will only contain static and | |||
EVPN-learned entries. In this case, the operator may choose to | EVPN-learned entries. In this case, the operator may choose to | |||
suppress the flooding of ARP/NS/NA from the local PE to the remote PEs | suppress the flooding of ARP/NS/NA from the local PE to the remote PEs | |||
completely.</t> | completely.</t> | |||
<t>The flooding may also be suppressed completely in IXP networks with | <t>The flooding may also be suppressed completely in IXP networks with | |||
dynamic Proxy-ARP/ND entries assuming that all the CEs are directly | dynamic Proxy ARP/ND entries assuming that all the CEs are directly | |||
connected to the PEs and they all advertise their presence with a | connected to the PEs and that they all advertise their presence with a | |||
GARP/unsolicited-NA when they connect to the network. If any of those | GARP/unsolicited-NA when they connect to the network. If any of those | |||
two assumptions is not true and any of the PEs may not learn all the | two assumptions are not true and any of the PEs may not learn all the | |||
local Proxy-ARP/ND entries, flooding of the ARP/NS/NA messages from | local Proxy ARP/ND entries, flooding of the ARP/NS/NA messages from | |||
the local PE to the remote PEs SHOULD NOT be suppressed, or the | the local PE to the remote PEs <bcp14>SHOULD NOT</bcp14> be suppressed, | |||
or the | ||||
address resolution process for some CEs will not be completed.</t> | address resolution process for some CEs will not be completed.</t> | |||
<t>In networks where fast mobility is expected (DC use case), it is | <t>In networks where fast mobility is expected (DC use case), it is | |||
NOT RECOMMENDED to suppress the flooding of unknown ARP-Requests/NS or | <bcp14>NOT RECOMMENDED</bcp14> to suppress the flooding of unknown ARP R | |||
GARPs/unsolicited-NAs. Unknown ARP-Requests/NS refer to those | equests / NS messages or | |||
ARP-Request/NS messages for which the Proxy-ARP/ND lookups for the | GARPs/unsolicited-NAs. Unknown ARP Requests / NS messages refer to those | |||
ARP Requests / NS messages for which the Proxy ARP/ND lookups for the | ||||
requested IPs do not succeed.</t> | requested IPs do not succeed.</t> | |||
<t>In order to give the operator the choice to suppress/allow the | <t>In order to give the operator the choice to suppress/allow the | |||
flooding to remote PEs, a PE MAY support administrative options to | flooding to remote PEs, a PE <bcp14>MAY</bcp14> support administrative o ptions to | |||
individually suppress/allow the flooding of:</t> | individually suppress/allow the flooding of:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li>Unknown ARP Requests and NS messages.</li> | |||
<t>Unknown ARP-Request and NS messages.</t> | <li>GARP and unsolicited-NA messages.</li> | |||
</ul> | ||||
<t>GARP and unsolicited-NA messages.</t> | ||||
</list></t> | ||||
<t>The operator will use these options based on the expected behavior | <t>The operator will use these options based on the expected behavior | |||
on the CEs.</t> | on the CEs.</t> | |||
</section> | </section> | |||
<section anchor="sect-4.6" numbered="true" toc="default"> | ||||
<section anchor="sect-4.6" title="Duplicate IP Detection"> | <name>Duplicate IP Detection</name> | |||
<t>The Proxy-ARP/ND function MUST support duplicate IP detection as | <t>The Proxy ARP/ND function <bcp14>MUST</bcp14> support duplicate IP | |||
per this section so that ARP/ND-spoofing attacks or duplicate IPs due | detection as per this section so that ARP/ND-spoofing attacks or | |||
to human errors can be detected. For IPv6 addresses, CEs will continue | duplicate IPs due to human errors can be detected. For IPv6 addresses, | |||
to carry out the DAD procedures as per <xref target="RFC4862"/>. The | CEs will continue to carry out the DAD procedures as per <xref | |||
solution described in this section is an additional security mechanism | target="RFC4862" format="default"/>. The solution described in this | |||
carried out by the PEs that guarantees IPv6 address moves between PEs | section is an additional security mechanism carried out by the PEs | |||
are legitimate and not the result of an attack. <xref | that guarantees IPv6 address moves between PEs are legitimate and not | |||
target="RFC6957"/> describes a solution for IPv6 Duplicate Address | the result of an attack. <xref target="RFC6957" format="default"/> | |||
Detection Proxy, however, it is defined for point-to-multipoint | describes a solution for the IPv6 Duplicate Address Detection Proxy; | |||
topologies with a split-horizon forwarding, where the | however, it is defined for point-to-multipoint topologies with a | |||
‘CEs’ have no direct communication within the same L2 link | split-horizon forwarding, where the "CEs" have no direct communication | |||
and therefore it is not suitable for EVPN Broadcast Domains. In | within the same L2 link; therefore, it is not suitable for EVPN | |||
addition, the solution described in this section includes the use of | Broadcast Domains. In addition, the solution described in this section | |||
the AS-MAC for additional security.</t> | includes the use of the AS-MAC for additional security.</t> | |||
<t>ARP/ND spoofing is a technique whereby an attacker sends "fake" | <t>ARP/ND spoofing is a technique whereby an attacker sends "fake" | |||
ARP/ND messages onto a broadcast domain. Generally the aim is to | ARP/ND messages onto a Broadcast Domain. Generally, the aim is to | |||
associate the attacker's MAC address with the IP address of another | associate the attacker's MAC address with the IP address of another | |||
host causing any traffic meant for that IP address to be sent to the | host causing any traffic meant for that IP address to be sent to the | |||
attacker instead.</t> | attacker instead.</t> | |||
<t>The distributed nature of EVPN and Proxy ARP/ND allows the easy | ||||
<t>The distributed nature of EVPN and Proxy-ARP/ND allows the easy | detection of duplicated IPs in the network in a similar way to the | |||
detection of duplicated IPs in the network, in a similar way to the | MAC duplication detection function supported by <xref target="RFC7432" f | |||
MAC duplication detection function supported by <xref | ormat="default"/> for MAC addresses.</t> | |||
target="RFC7432"/> for MAC addresses.</t> | <t>Duplicate IP detection monitors "IP-moves" in the Proxy ARP/ND | |||
table in the following way: | ||||
<t>Duplicate IP detection monitors "IP-moves" in the Proxy-ARP/ND | </t> | |||
table in the following way:<!----><list style="letters"> | <ol spacing="normal" type="a"><li>When an existing active IP1->MAC1 | |||
<t>When an existing active IP1->MAC1 entry is modified, a PE | entry is modified, a PE starts an M-second timer (default value of | |||
starts an M-second timer (default value of M=180), and if it | M = 180), and if it detects N IP moves before the timer expires (default | |||
detects N IP moves before the timer expires (default value of | value of N = g5), it concludes that a duplicate IP situation has | |||
N=5), it concludes that a duplicate IP situation has occurred. An | occurred. An IP move is considered when, for instance, IP1->MAC1 is | |||
IP move is considered when, for instance, IP1->MAC1 is replaced | replaced by IP1->MAC2 in the Proxy ARP/ND table. Static IP->MAC | |||
by IP1->MAC2 in the Proxy-ARP/ND table. Static IP->MAC | entries, i.e., locally provisioned or EVPN-learned entries with I = 1 | |||
entries, that is, locally provisioned or EVPN-learned entries with | in the ARP/ND Extended Community, are not subject to this | |||
I=1 in the ARP/ND Extended Community, are not subject to this | procedure. Static entries <bcp14>MUST NOT</bcp14> be overridden by | |||
procedure. Static entries MUST NOT be overridden by dynamic | dynamic Proxy ARP/ND entries.</li> | |||
Proxy-ARP/ND entries.</t> | <li> | |||
<t>In order to detect the duplicate IP faster, the PE | ||||
<t>In order to detect the duplicate IP faster, the PE SHOULD send | <bcp14>SHOULD</bcp14> send a Confirm message to the former owner | |||
a Confirm message to the former owner of the IP. A Confirm message | of the IP. A Confirm message is a unicast ARP Request / NS message | |||
is a unicast ARP-Request/NS message sent by the PE to the MAC | sent by the PE to the MAC addresses that previously owned the IP, | |||
addresses that previously owned the IP, when the MAC changes in | when the MAC changes in the Proxy ARP/ND table. The Confirm | |||
the Proxy-ARP/ND table. The Confirm message uses a sender's IP | message uses a sender's IP 0.0.0.0 in case of ARP (if the PE has | |||
0.0.0.0 in case of ARP (if the PE has an IP address in the subnet | an IP address in the subnet, then it <bcp14>MAY</bcp14> use it) | |||
then it MAY use it) and an IPv6 Link Local Address in case of NS. | and an IPv6 Link Local Address in case of NS. If the PE does not | |||
If the PE does not receive an answer within a given time, the new | receive an answer within a given time, the new entry will be | |||
entry will be confirmed and activated. The default RECOMMENDED | confirmed and activated. The default <bcp14>RECOMMENDED</bcp14> | |||
time to receive the confirmation is 30 seconds. In case of | time to receive the confirmation is 30 seconds. In case of | |||
spoofing, for instance, if IP1->MAC1 moves to IP1->MAC2, the | spoofing, for instance, if IP1->MAC1 moves to IP1->MAC2, the | |||
PE may send a unicast ARP-Request/NS message for IP1 with MAC DA= | PE may send a unicast ARP Request / NS message for IP1 with MAC DA | |||
MAC1 and MAC SA= PE's MAC. This will force the legitimate owner to | = MAC1 and MAC SA = PE's MAC. This will force the legitimate owner | |||
respond if the move to MAC2 was spoofed, and make the PE issue | to respond if the move to MAC2 was spoofed and make the PE issue | |||
another Confirm message, this time to MAC DA= MAC2. If both, | another Confirm message, this time to MAC DA = MAC2. | |||
legitimate owner and spoofer keep replying to the Confirm message, | ||||
the PE will detect the duplicate IP within the M-second | If both, the legitimate owner and spoofer keep replying to the | |||
timer:<list style="symbols"> | Confirm message. The PE would then detect the duplicate IP within the | |||
<t>If the IP1->MAC1 pair was previously owned by the | M-second timer, and a response would be triggered as follows:</t> | |||
<ul spacing="normal"> | ||||
<li>If the IP1->MAC1 pair was previously owned by the | ||||
spoofer and the new IP1->MAC2 was from a valid CE, then the | spoofer and the new IP1->MAC2 was from a valid CE, then the | |||
issued Confirm message would trigger a response from the | issued Confirm message would trigger a response from the | |||
spoofer.</t> | spoofer.</li> | |||
<li>If it were the other way around, that is, IP1->MAC1 was | ||||
<t>If it were the other way around, that is, IP1->MAC1 was | ||||
previously owned by a valid CE, the Confirm message would | previously owned by a valid CE, the Confirm message would | |||
trigger a response from the CE.</t> | trigger a response from the CE.</li> | |||
</list><list style="empty"> | </ul> | |||
<t hangText="">Either way, if this process continues, then | <ul empty="true" spacing="normal"> | |||
duplicate detection will kick in.</t> | <li>Either way, if this process continues, then | |||
</list></t> | duplicate detection will kick in.</li> | |||
</ul> | ||||
<t>Upon detecting a duplicate IP situation:<list style="numbers"> | </li> | |||
<t>The entry in duplicate detected state cannot be updated | <li> | |||
with new dynamic or EVPN-learned entries for the same IP. The | <t>Upon detecting a duplicate IP situation:</t> | |||
operator MAY override the entry, though, with a static | <ol spacing="normal" type="1"><li>The entry in duplicate detected | |||
IP->MAC.</t> | state cannot be updated with new dynamic or EVPN-learned entries | |||
for the same IP. The operator <bcp14>MAY</bcp14> override the | ||||
<t>The PE SHOULD alert the operator and stop responding to | entry, though, with a static IP->MAC.</li> | |||
<li>The PE <bcp14>SHOULD</bcp14> alert the operator and stop respo | ||||
nding to | ||||
ARP/NS for the duplicate IP until a corrective action is | ARP/NS for the duplicate IP until a corrective action is | |||
taken.</t> | taken.</li> | |||
<li>Optionally, the PE <bcp14>MAY</bcp14> associate an | ||||
<t>Optionally the PE MAY associate an "anti-spoofing-mac" | "anti-spoofing-mac" (AS-MAC) to the duplicate IP in the | |||
(AS-MAC) to the duplicate IP in the Proxy-ARP/ND table. The PE | Proxy ARP/ND table. The PE will send a GARP/unsolicited-NA | |||
will send a GARP/unsolicited-NA message with IP1->AS-MAC to | message with IP1->AS-MAC to the local CEs as well as an RT2 | |||
the local CEs as well as an RT2 (with IP1->AS-MAC) to the | (with IP1->AS-MAC) to the remote PEs. This will update the | |||
remote PEs. This will update the ARP/ND caches on all the CEs | ARP/ND caches on all the CEs in the BD; hence, all the CEs in | |||
in the BD, and hence all the CEs in the BD will use the AS-MAC | the BD will use the AS-MAC as MAC DA when sending traffic to | |||
as MAC DA when sending traffic to IP1. This procedure prevents | IP1. This procedure prevents the spoofer from attracting any | |||
the spoofer from attracting any traffic for IP1. Since the | traffic for IP1. Since the AS-MAC is a managed MAC address known | |||
AS-MAC is a managed MAC address known by all the PEs in the | by all the PEs in the BD, all the PEs <bcp14>MAY</bcp14> apply | |||
BD, all the PEs MAY apply filters to drop and/or log any frame | filters to drop and/or log any frame with MAC DA = AS-MAC. The | |||
with MAC DA= AS-MAC. The advertisement of the AS-MAC as a | advertisement of the AS-MAC as a "drop-MAC" (by using an | |||
"black-hole MAC" (by using an indication in the RT2) that can | indication in the RT2) that can be used directly in the BD to | |||
be used directly in the BD to drop frames is for further | drop frames is for further study.</li> | |||
study.</t> | </ol> | |||
</list></t> | </li> | |||
<li>The duplicate IP situation will be cleared when a corrective | ||||
<t>The duplicate IP situation will be cleared when a corrective | action is taken by the operator or, alternatively, after a | |||
action is taken by the operator, or alternatively after a | HOLD-DOWN timer (default value of 540 seconds).</li> | |||
HOLD-DOWN timer (default value of 540 seconds).</t> | ||||
</list></t> | ||||
<t>The values of M, N and HOLD-DOWN timer SHOULD be a configurable | </ol> | |||
<t>The values of M, N, and HOLD-DOWN timer <bcp14>SHOULD</bcp14> be a co | ||||
nfigurable | ||||
administrative option to allow for the required flexibility in | administrative option to allow for the required flexibility in | |||
different scenarios.</t> | different scenarios.</t> | |||
<t>For Proxy ND, the duplicate IP detection described in this section | ||||
<t>For Proxy-ND, the Duplicate IP Detection described in this section | <bcp14>SHOULD</bcp14> only monitor IP moves for IP->MACs learned from | |||
SHOULD only monitor IP moves for IP->MACs learned from NA messages | NA messages | |||
with O Flag=1. NA messages with O Flag=0 would not override the ND | with O Flag = 1. NA messages with O Flag = 0 would not override the ND | |||
cache entries for an existing IP, and therefore the procedure in this | cache entries for an existing IP; therefore, the procedure in this | |||
section would not detect duplicate IPs. This Duplicate IP Detection | section would not detect duplicate IPs. This duplicate IP detection | |||
for IPv6 SHOULD be disabled when the IPv6 "anycast" capability is | for IPv6 <bcp14>SHOULD</bcp14> be disabled when the IPv6 "anycast" capab | |||
ility is | ||||
activated in a given BD.</t> | activated in a given BD.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sect-5" title="Solution Benefits"> | <section anchor="sect-5" numbered="true" toc="default"> | |||
<name>Solution Benefits</name> | ||||
<t>The solution described in this document provides the following | <t>The solution described in this document provides the following | |||
benefits:<list style="letters"> | benefits:</t> | |||
<t>The solution may suppress completely the flooding of the ARP/ND | <ol spacing="normal" type="a"> | |||
messages in the EVPN network, assuming that all the CE IP->MAC | <li>May completely suppress | |||
addresses local to the PEs are known or provisioned on the PEs from | the flooding of the ARP/ND messages in the EVPN network, assuming that | |||
a management system. Note that in this case, the unknown unicast | all the CE IP->MAC addresses local to the PEs are known or | |||
flooded traffic can also be suppressed, since all the expected | provisioned on the PEs from a management system. Note that in this case, | |||
unicast traffic will be destined to known MAC addresses in the PE | the unknown unicast flooded traffic can also be suppressed, since all | |||
BDs.</t> | the expected unicast traffic will be destined to known MAC addresses in | |||
the PE BDs.</li> | ||||
<t>The solution reduces significantly the flooding of the ARP/ND | <li>Significantly reduces the flooding of the ARP/ND | |||
messages in the EVPN network, assuming that some or all the CE | messages in the EVPN network, assuming that some or all the CE | |||
IP->MAC addresses are learned on the data plane by snooping | IP->MAC addresses are learned on the data plane by snooping | |||
ARP/ND messages issued by the CEs.</t> | ARP/ND messages issued by the CEs.</li> | |||
<li>Provides a way to refresh periodically the CE | ||||
<t>The solution provides a way to refresh periodically the CE | IP->MAC entries learned through the data plane so that the | |||
IP->MAC entries learned through the data plane, so that the | ||||
IP->MAC entries are not withdrawn by EVPN when they age out | IP->MAC entries are not withdrawn by EVPN when they age out | |||
unless the CE is not active anymore. This option helps reducing the | unless the CE is not active anymore. This option helps reducing the | |||
EVPN control plane overhead in a network with active CEs that do not | EVPN control plane overhead in a network with active CEs that do not | |||
send packets frequently.</t> | send packets frequently.</li> | |||
<li>Provides a mechanism to detect duplicate IP addresses and avoid | ||||
<t>Provides a mechanism to detect duplicate IP addresses and avoid | ||||
ARP/ND-spoof attacks or the effects of duplicate addresses due to | ARP/ND-spoof attacks or the effects of duplicate addresses due to | |||
human errors.</t> | human errors.</li> | |||
</list></t> | </ol> | |||
</section> | </section> | |||
<section anchor="sect-6" numbered="true" toc="default"> | ||||
<section anchor="sect-6" title="Deployment Scenarios"> | <name>Deployment Scenarios</name> | |||
<t>Four deployment scenarios with different levels of ARP/ND control are | <t>Four deployment scenarios with different levels of ARP/ND control are | |||
available to operators using this solution, depending on their | available to operators using this solution depending on their | |||
requirements to manage ARP/ND: all dynamic learning, all dynamic | requirements to manage ARP/ND: all dynamic learning, all dynamic | |||
learning with Proxy-ARP/ND, hybrid dynamic learning and static | learning with Proxy ARP/ND, hybrid dynamic learning and static | |||
provisioning with Proxy-ARP/ND, and all static provisioning with | provisioning with Proxy ARP/ND, and all static provisioning with | |||
Proxy-ARP/ND.</t> | Proxy ARP/ND.</t> | |||
<section anchor="sect-6.1" numbered="true" toc="default"> | ||||
<section anchor="sect-6.1" title="All Dynamic Learning"> | <name>All Dynamic Learning</name> | |||
<t>In this scenario for minimum security and mitigation, EVPN is | <t>In this scenario for minimum security and mitigation, EVPN is | |||
deployed in the BD with the Proxy-ARP/ND function shutdown. PEs do not | deployed in the BD with the Proxy ARP/ND function shutdown. PEs do not | |||
intercept ARP/ND requests and flood all requests issued by the CEs, as | intercept ARP/ND requests and flood all requests issued by the CEs as | |||
a conventional layer-2 network among those CEs would do. While no | a conventional Layer 2 network among those CEs would suffice. While no | |||
ARP/ND mitigation is used in this scenario, the operator can still | ARP/ND mitigation is used in this scenario, the operator can still | |||
take advantage of EVPN features such as control plane learning and | take advantage of EVPN features such as control plane learning and | |||
all-active multihoming in the peering network.</t> | all-active multihoming in the peering network.</t> | |||
<t>Although this option does not require any of the procedures | <t>Although this option does not require any of the procedures | |||
described in this document, it is added as baseline/default option for | described in this document, it is added as a baseline/default option for | |||
completeness. This option is equivalent to VPLS as far as ARP/ND is | completeness. This option is equivalent to VPLS as far as ARP/ND is | |||
concerned. The options described in <xref target="sect-6.2"/>, <xref | concerned. The options described in Sections <xref target="sect-6.2" for | |||
target="sect-6.3"/> and <xref target="sect-6.4"/> are only possible in | mat="counter"/>, <xref target="sect-6.3" format="counter"/>, and <xref target="s | |||
EVPN networks in combination with their Proxy-ARP/ND capabilities.</t> | ect-6.4" format="counter"/> are only possible in | |||
EVPN networks in combination with their Proxy ARP/ND capabilities.</t> | ||||
</section> | </section> | |||
<section anchor="sect-6.2" numbered="true" toc="default"> | ||||
<section anchor="sect-6.2" title="Dynamic Learning with Proxy-ARP/ND"> | <name>Dynamic Learning with Proxy ARP/ND</name> | |||
<t>This scenario minimizes flooding while enabling dynamic learning of | <t>This scenario minimizes flooding while enabling dynamic learning of | |||
IP->MAC entries. The Proxy-ARP/ND function is enabled in the BDs of | IP->MAC entries. The Proxy ARP/ND function is enabled in the BDs of | |||
the EVPN PEs, so that the PEs snoop ARP/ND messages issued by the CEs | the EVPN PEs so that the PEs snoop ARP/ND messages issued by the CEs | |||
and respond to CE ARP-requests/NS messages.</t> | and respond to CE ARP Requests / NS messages.</t> | |||
<t>PEs will flood requests if the entry is not in their Proxy table. | <t>PEs will flood requests if the entry is not in their Proxy table. | |||
Any unknown source IP->MAC entries will be learned and advertised | Any unknown source IP->MAC entries will be learned and advertised | |||
in EVPN, and traffic to unknown entries is discarded at the ingress | in EVPN, and traffic to unknown entries is discarded at the ingress | |||
PE.</t> | PE.</t> | |||
<t>This scenario makes use of the Learning, Reply, and Maintenance | ||||
<t>This scenario makes use of the Learning, Reply and Maintenance | ||||
sub-functions, with an optional use of the Unicast-forward and | sub-functions, with an optional use of the Unicast-forward and | |||
Duplicate IP detection sub-functions. The Flood handling sub-function | duplicate IP detection sub-functions. The Flood handling sub-function | |||
uses default flooding for unknown ARP-Request/NS messages.</t> | uses default flooding for unknown ARP Requests / NS messages.</t> | |||
</section> | </section> | |||
<section anchor="sect-6.3" numbered="true" toc="default"> | ||||
<section anchor="sect-6.3" | <name>Hybrid Dynamic Learning and Static Provisioning with Proxy ARP/ND< | |||
title="Hybrid Dynamic Learning and Static Provisioning with Proxy | /name> | |||
-ARP/ND"> | ||||
<t>Some IXPs and other operators want to protect particular hosts on | <t>Some IXPs and other operators want to protect particular hosts on | |||
the BD while allowing dynamic learning of CE addresses. For example, | the BD while allowing dynamic learning of CE addresses. For example, | |||
an operator may want to configure static IP->MAC entries for | an operator may want to configure static IP->MAC entries for | |||
management and infrastructure hosts that provide critical services. In | management and infrastructure hosts that provide critical services. In | |||
this scenario, static entries are provisioned from the management | this scenario, static entries are provisioned from the management | |||
plane for protected IP->MAC addresses, and dynamic learning with | plane for protected IP->MAC addresses, and dynamic learning with | |||
Proxy-ARP/ND is enabled as described in <xref target="sect-6.2"/> on | Proxy ARP/ND is enabled as described in <xref target="sect-6.2" format=" default"/> on | |||
the BD.</t> | the BD.</t> | |||
<t>This scenario makes use of the same sub-functions as in <xref | <t>This scenario makes use of the same sub-functions as in <xref | |||
target="sect-6.2"/>, but adding static entries added by the Learning | target="sect-6.2" format="default"/> but with static entries added by | |||
sub-function.</t> | the Learning sub-function.</t> | |||
</section> | </section> | |||
<section anchor="sect-6.4" numbered="true" toc="default"> | ||||
<section anchor="sect-6.4" | <name>All Static Provisioning with Proxy ARP/ND</name> | |||
title="All Static Provisioning with Proxy-ARP/ND"> | ||||
<t>For a solution that maximizes security and eliminates flooding and | <t>For a solution that maximizes security and eliminates flooding and | |||
unknown unicast in the peering network, all IP->MAC entries are | unknown unicast in the peering network, all IP->MAC entries are | |||
provisioned from the management plane. The Proxy-ARP/ND function is | provisioned from the management plane. The Proxy ARP/ND function is | |||
enabled in the BDs of the EVPN PEs, so that the PEs intercept and | enabled in the BDs of the EVPN PEs so that the PEs intercept and | |||
respond to CE requests. Dynamic learning and ARP/ND snooping is | respond to CE requests. | |||
disabled so that ARP-Requests and NS to unknown IPs are discarded at | Dynamic learning and ARP/ND snooping is | |||
disabled so that ARP Requests and NS messages to unknown IPs are discard | ||||
ed at | ||||
the ingress PE. This scenario provides an operator the most control | the ingress PE. This scenario provides an operator the most control | |||
over IP->MAC entries and allows an operator to manage all entries | over IP->MAC entries and allows an operator to manage all entries | |||
from a management system.</t> | from a management system.</t> | |||
<t>In this scenario, the Learning sub-function is limited to static | <t>In this scenario, the Learning sub-function is limited to static | |||
entries, the Maintenance sub-function will not require any procedures | entries, the Maintenance sub-function will not require any procedures | |||
due to the static entries, and the Flood handling sub-function will | due to the static entries, and the Flood handling sub-function will | |||
completely suppress Unknown ARP-Requests/NS messages as well as GARP | completely suppress unknown ARP Requests / NS messages as well as GARP | |||
and unsolicited-NA messages.</t> | and unsolicited-NA messages.</t> | |||
</section> | </section> | |||
<section anchor="sect-6.5" numbered="true" toc="default"> | ||||
<section anchor="sect-6.5" | <name>Example of Deployment in Internet Exchange Points</name> | |||
title="Example of Deployment in Internet Exchange Points"> | ||||
<t>Nowadays, almost all IXPs install some security rules in order to | <t>Nowadays, almost all IXPs install some security rules in order to | |||
protect the peering network (BD). These rules are often called port | protect the peering network (BD). These rules are often called port | |||
security. Port security summarizes different operational steps that | security. Port security summarizes different operational steps that | |||
limit the access to the IXP-LAN and the customer router, and controls | limit the access to the IXP-LAN and the customer router and controls | |||
the kind of traffic that the routers are allowed to exchange (e.g., | the kind of traffic that the routers are allowed to exchange (e.g., | |||
Ethernet, IPv4, IPv6). Due to this, the deployment scenario as | Ethernet, IPv4, and IPv6). Due to this, the deployment scenario as | |||
described in <xref target="sect-6.4"/> "All Static Provisioning with | described in <xref target="sect-6.4" format="default"/>, "All Static | |||
Proxy-ARP/ND" is the predominant scenario for IXPs.</t> | Provisioning with Proxy ARP/ND", is the predominant scenario for | |||
IXPs.</t> | ||||
<t>In addition to the "All Static Provisioning" behavior, in IXP | <t>In addition to the "All Static Provisioning" behavior, in IXP | |||
networks it is recommended to configure the Reply Sub-Function to | networks it is recommended to configure the Reply sub-function to | |||
'discard' ARP-Requests/NS messages with unrecognized options.</t> | "discard" ARP Requests / NS messages with unrecognized options.</t> | |||
<t>At IXPs, customers usually follow a certain operational life cycle. | ||||
<t>At IXPs, customers usually follow a certain operational life-cycle. | For each step of the operational life cycle, specific operational | |||
For each step of the operational life-cycle specific operational | ||||
procedures are executed.</t> | procedures are executed.</t> | |||
<t>The following describes the operational procedures that are needed | <t>The following describes the operational procedures that are needed | |||
to guarantee port security throughout the life-cycle of a customer | to guarantee port security throughout the life cycle of a customer | |||
with focus on EVPN features:</t> | with focus on EVPN features:</t> | |||
<ol spacing="normal" type="1"><li> | ||||
<t><list style="numbers"> | <t>A new customer is connected the first time to the IXP:</t> | |||
<t>A new customer is connected the first time to the IXP:<vspace | <t>Before the connection between the customer router | |||
blankLines="1"/>Before the connection between the customer router | ||||
and the IXP-LAN is activated, the MAC of the router is | and the IXP-LAN is activated, the MAC of the router is | |||
allow-listed on the IXP's switch port. All other MAC addresses are | allowlisted on the IXP's switch port. All other MAC addresses are | |||
blocked. Pre-defined IPv4 and IPv6 addresses of the IXP peering | blocked. Pre-defined IPv4 and IPv6 addresses of the IXP peering | |||
network space are configured at the customer router. The | network space are configured at the customer router. The | |||
IP->MAC static entries (IPv4 and IPv6) are configured in the | IP->MAC static entries (IPv4 and IPv6) are configured in the | |||
management system of the IXP for the customer's port in order to | management system of the IXP for the customer's port in order to | |||
support Proxy-ARP/ND. <vspace blankLines="1"/> In case a customer | support Proxy ARP/ND. </t> | |||
uses multiple ports aggregated to a single logical port (LAG) some | <t>In case a customer uses multiple ports aggregated to a single | |||
vendors randomly select the MAC address of the LAG from the | logical port (LAG), some vendors randomly select the MAC address of | |||
different MAC addresses assigned to the ports. In this case the | the LAG from the different MAC addresses assigned to the ports. In | |||
static entry will be used associated to a list of allowed | this case, the static entry will be used and associated to a list of | |||
MACs.</t> | allowed MACs.</t> | |||
</li> | ||||
<t>Replacement of customer router:<vspace blankLines="1"/>If a | <li> | |||
customer router is about to be replaced, the new MAC address(es) | <t>Replacement of customer router:</t> | |||
must be installed in the management system besides the MAC | ||||
address(es) of the currently connected router. This allows the | ||||
customer to replace the router without any active involvement of | ||||
the IXP operator. For this, static entries are also used. After | ||||
the replacement takes place, the MAC address(es) of the replaced | ||||
router can be removed.</t> | ||||
<t>Decommissioning a customer router<vspace blankLines="1"/>If a | <t>If a customer router is about to be replaced, the new MAC | |||
address(es) must be installed in the management system in addition | ||||
to the MAC address(es) of the currently connected router. This | ||||
allows the customer to replace the router without any active | ||||
involvement of the IXP operator. For this, static entries are also | ||||
used. After the replacement takes place, the MAC address(es) of | ||||
the replaced router can be removed.</t> | ||||
</li> | ||||
<li> | ||||
<t>Decommissioning a customer router:</t> | ||||
<t>If a | ||||
customer router is decommissioned, the router is disconnected from | customer router is decommissioned, the router is disconnected from | |||
the IXP PE. Right after that, the MAC address(es) of the router | the IXP PE. Right after that, the MAC address(es) of the router | |||
and IP->MAC bindings can be removed from the management | and IP->MAC bindings can be removed from the management | |||
system.</t> | system.</t> | |||
</list></t> | </li> | |||
</ol> | ||||
</section> | </section> | |||
<section anchor="sect-6.6" numbered="true" toc="default"> | ||||
<section anchor="sect-6.6" title="Example of Deployment in Data Centers"> | <name>Example of Deployment in Data Centers</name> | |||
<t>DCs normally have different requirements than IXPs in terms of | <t>DCs normally have different requirements than IXPs in terms of | |||
Proxy- ARP/ND. Some differences are listed below:<list style="letters"> | Proxy ARP/ND. Some differences are listed below:</t> | |||
<t>The required mobility in virtualized DCs makes the "Dynamic | <ol spacing="normal" type="a"><li>The required mobility in virtualized | |||
Learning" or "Hybrid Dynamic and Static Provisioning" models more | DCs makes the "Dynamic Learning" or "Hybrid Dynamic and Static | |||
appropriate than the "All Static Provisioning" model.</t> | Provisioning" models more appropriate than the "All Static | |||
Provisioning" model.</li> | ||||
<t>IPv6 'anycast' may be required in DCs, while it is typically | <li>IPv6 "anycast" may be required in DCs, while it is typically not | |||
not a requirement in IXP networks. Therefore if the DC needs IPv6 | a requirement in IXP networks. Therefore, if the DC needs IPv6 | |||
anycast addresses, the "anycast" capability will be explicitly | anycast addresses, the "anycast" capability will be explicitly | |||
enabled in the Proxy-ND function, hence the Proxy-ND sub-functions | enabled in the Proxy ND function and hence the Proxy ND sub-functions | |||
modified accordingly. For instance, if IPv6 'anycast' is enabled | modified accordingly. For instance, if IPv6 "anycast" is enabled in | |||
in the Proxy-ND function, the Duplicate IP Detection procedure in | the Proxy ND function, the duplicate IP detection procedure in <xref | |||
<xref target="sect-4.6"/> must be disabled.</t> | target="sect-4.6" format="default"/> must be disabled.</li> | |||
<li>DCs may require special options on ARP/ND as opposed to the | ||||
<t>DCs may require special options on ARP/ND as opposed to the | ||||
address resolution function, which is the only one typically | address resolution function, which is the only one typically | |||
required in IXPs. Based on that, the Reply Sub-function may be | required in IXPs. Based on that, the Reply sub-function may be | |||
modified to forward or discard unknown options.</t> | modified to forward or discard unknown options.</li> | |||
</list></t> | </ol> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sect-7" title="Security Considerations"> | <section anchor="sect-7" numbered="true" toc="default"> | |||
<t>The security considerations of <xref target="RFC7432"/> and <xref | <name>Security Considerations</name> | |||
target="RFC9047"/> apply to this document too. Note that EVPN does not | <t>The security considerations of <xref target="RFC7432" format="default"/ | |||
> and <xref target="RFC9047" format="default"/> apply to this document too. Note | ||||
that EVPN does not | ||||
inherently provide cryptographic protection (including confidentiality | inherently provide cryptographic protection (including confidentiality | |||
protection).</t> | protection).</t> | |||
<t>The procedures in this document reduce the amount of ARP/ND message | <t>The procedures in this document reduce the amount of ARP/ND message | |||
flooding, which in itself provides a protection to "slow path" software | flooding, which in itself provides a protection to "slow path" software | |||
processors of routers and Tenant Systems in large BDs. The ARP/ND | processors of routers and Tenant Systems in large BDs. The ARP/ND | |||
requests that are replied by the Proxy-ARP/ND function (hence not | requests that are replied to by the Proxy ARP/ND function (hence not | |||
flooded) are normally targeted to existing hosts in the BD. ARP/ND | flooded) are normally targeted to existing hosts in the BD. ARP/ND | |||
requests targeted to absent hosts are still normally flooded; however, | requests targeted to absent hosts are still normally flooded; however, | |||
the suppression of Unknown ARP-Requests and NS messages described in | the suppression of unknown ARP Requests and NS messages described in | |||
<xref target="sect-4.5"/> can provide an additional level of security | <xref target="sect-4.5" format="default"/> can provide an additional | |||
against ARP-Requests/NS messages issued to non-existing hosts.</t> | level of security against ARP Requests / NS messages issued to | |||
non-existing hosts.</t> | ||||
<t>While the unicast-forward and/or flood suppression sub-functions | <t>While the unicast-forward and/or flood suppression sub-functions | |||
provide an added security mechanism for the BD, they can also increase | provide an added security mechanism for the BD, they can also increase | |||
the risk of blocking the service for a CE if the EVPN PEs cannot provide | the risk of blocking the service for a CE if the EVPN PEs cannot provide | |||
the ARP/ND resolution that the CE needs.</t> | the ARP/ND resolution that the CE needs.</t> | |||
<t>The solution also provides protection against Denial-of-Service (DoS) | ||||
<t>The solution also provides protection against Denial Of Service | attacks that use ARP/ND spoofing as a first step. The duplicate IP | |||
attacks that use ARP/ND-spoofing as a first step. The Duplicate IP | detection and the use of an AS-MAC as explained in <xref | |||
Detection and the use of an AS-MAC as explained in <xref | target="sect-4.6" format="default"/> protects the BD against ARP/ND | |||
target="sect-4.6"/> protects the BD against ARP/ND spoofing.</t> | spoofing.</t> | |||
<t>The Proxy ARP/ND function specified in this document does not allow | ||||
<t>The Proxy-ARP/ND function specified in this document does not allow | for the learning of an IP address mapped to multiple MAC addresses in | |||
the learning of an IP address mapped to multiple MAC addresses in the | the same table unless the "anycast" capability is enabled (and only in | |||
same table, unless the "anycast" capability is enabled (and only in case | case of Proxy ND). When "anycast" is enabled in the Proxy ND function, | |||
of Proxy-ND). When "anycast" is enabled in the Proxy-ND function, the | the number of allowed entries for the same IP address | |||
number of allowed entries for the same IP address MUST be limited by the | <bcp14>MUST</bcp14> be limited by the operator to prevent DoS attacks | |||
operator to prevent DoS attacks that attempt to fill the Proxy-ND table | that attempt to fill the Proxy ND table with a significant number of | |||
with a significant number of entries for the same IP.</t> | entries for the same IP.</t> | |||
<t>This document provides some examples and guidelines that can be used | ||||
<t>The document provides some examples and guidelines that can be used | by IXPs in their EVPN BDs. When EVPN and its associated Proxy ARP/ND | |||
by IXPs in their EVPN BDs. When EVPN and its associated Proxy-ARP/ND | ||||
function are used in IXP networks, they provide ARP/ND security and | function are used in IXP networks, they provide ARP/ND security and | |||
mitigation. IXPs must still employ additional security mechanisms that | mitigation. IXPs must still employ additional security mechanisms that | |||
protect the peering network as per the established BCPs such as the ones | protect the peering network as per the established BCPs such as the ones | |||
described in <xref target="Euro-IX-BCP"/>. For example, IXPs should | described in <xref target="EURO-IX-BCP" format="default"/>. For example, | |||
disable all unneeded control protocols, and block unwanted protocols | IXPs should disable all unneeded control protocols and block unwanted | |||
from CEs so that only IPv4, ARP and IPv6 Ethertypes are permitted on the | protocols from CEs so that only IPv4, ARP, and IPv6 Ethertypes are | |||
peering network. In addition, port security features and ACLs can | permitted on the peering network. In addition, port security features | |||
provide an additional level of security.</t> | and ACLs can provide an additional level of security.</t> | |||
<t>Finally, it is worth noting that the Proxy ARP/ND solution in this | ||||
<t>Finally, it is worth noting that the Proxy-ARP/ND solution in this | ||||
document will not work if there is a mechanism securing ARP/ND exchanges | document will not work if there is a mechanism securing ARP/ND exchanges | |||
among CEs, because the PE is not able to secure the "proxied" ND | among CEs because the PE is not able to secure the "proxied" ND | |||
messages.</t> | messages.</t> | |||
</section> | </section> | |||
<section anchor="sect-8" numbered="true" toc="default"> | ||||
<section anchor="sect-8" title="IANA Considerations"> | <name>IANA Considerations</name> | |||
<t>No IANA considerations.</t> | <t>This document has no IANA actions.</t> | |||
</section> | ||||
<section anchor="sect-10" title="Acknowledgments"> | ||||
<t>The authors want to thank Ranganathan Boovaraghavan, Sriram | ||||
Venkateswaran, Manish Krishnan, Seshagiri Venugopal, Tony Przygienda, | ||||
Robert Raszuk and Iftekhar Hussain for their review and contributions. | ||||
Thank you to Oliver Knapp as well, for his detailed review.</t> | ||||
</section> | </section> | |||
<section anchor="sect-11" title="Contributors"> | ||||
<t>In addition to the authors listed on the front page, the following | ||||
co-authors have also contributed to this document:</t> | ||||
<figure> | ||||
<artwork><![CDATA[ | ||||
Wim Henderickx | ||||
Nokia | ||||
Daniel Melzer | ||||
DE-CIX Management GmbH | ||||
Erik Nordmark | ||||
Zededa | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | ||||
</middle> | </middle> | |||
<back> | <back> | |||
<references title="Normative References"> | <references> | |||
&RFC7432; | <name>References</name> | |||
<references> | ||||
&RFC4861; | <name>Normative References</name> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
&RFC0826; | FC.7432.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
&RFC5227; | FC.4861.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
&RFC2119; | FC.0826.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5227.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.9047.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
&RFC8174; | <reference anchor="EURO-IX-BCP" target="https://www.euro-ix.net/en/forix | |||
ps/set-ixp/ixp-bcops"> | ||||
<front> | ||||
<title>European Internet Exchange Association</title> | ||||
<author fullname="Euro-IX"/> | ||||
<date/> | ||||
</front> | ||||
</reference> | ||||
&RFC9047; | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
FC.6820.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6957.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4862.xml"/> | ||||
</references> | ||||
</references> | </references> | |||
<references title="Informative References"> | <section anchor="sect-10" numbered="false" toc="default"> | |||
<reference anchor="Euro-IX-BCP"> | <name>Acknowledgments</name> | |||
<front> | <t>The authors want to thank <contact fullname="Ranganathan | |||
<title>European Internet Exchange Association Best Practises - | Boovaraghavan"/>, <contact fullname="Sriram Venkateswaran"/>, <contact | |||
https://www.euro-ix.net/en/forixps/set-ixp/ixp-bcops/</title> | fullname="Manish Krishnan"/>, <contact fullname="Seshagiri Venugopal"/>, | |||
<contact fullname="Tony Przygienda"/>, <contact fullname="Robert | ||||
Raszuk"/>, and <contact fullname="Iftekhar Hussain"/> for their review | ||||
and contributions. Thank you to <contact fullname="Oliver Knapp"/> as | ||||
well for his detailed review.</t> | ||||
</section> | ||||
<section anchor="sect-11" numbered="false" toc="default"> | ||||
<name>Contributors</name> | ||||
<t>In addition to the authors listed on the front page, the following | ||||
coauthors have also contributed to this document:</t> | ||||
<author fullname="Euro-IX"/> | <author fullname="Wim Henderickx" initials="W" surname="Henderickx"> | |||
<organization>Nokia</organization> | ||||
</author> | ||||
<date/> | <author fullname="Daniel Melzer" initials="D" surname="Melzer"> | |||
</front> | <organization>DE-CIX Management GmbH</organization> | |||
</reference> | </author> | |||
&RFC6820; | <author fullname="Erik Nordmark" initials="E" surname="Nordmark"> | |||
<organization>Zededa</organization> | ||||
</author> | ||||
&RFC6957; | </section> | |||
&RFC4862; | ||||
</references> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 203 change blocks. | ||||
960 lines changed or deleted | 1007 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |