rfc9098xml2.original.xml | rfc9098.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | ||||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<?rfc toc="yes" ?> | ||||
<?rfc toc="yes"?> | <rfc ipr="trust200902" category="info" docName="draft-ietf-v6ops-ipv6-ehs-packet | |||
<?rfc tocompact="yes"?> | -drops-08" number="9098" obsoletes="" updates="" submissionType="IETF" xml:lang= | |||
<?rfc tocdepth="2"?> | "en" tocInclude="true" tocDepth="2" symRefs="true" sortRefs="true" version="3" c | |||
<?rfc symrefs="yes" ?> | onsensus="true" xmlns:xi="http://www.w3.org/2001/XInclude"> | |||
<?rfc sortrefs="yes"?> | ||||
<?rfc strict="no" ?> | ||||
<rfc | ||||
ipr="trust200902" | ||||
category="info" | ||||
docName="draft-ietf-v6ops-ipv6-ehs-packet-drops-08"> | ||||
<front> | <front> | |||
<title abbrev="IPv6 Extension Headers">Operational Implications of IPv6 Pack ets with Extension Headers</title> | <title abbrev="IPv6 Extension Headers">Operational Implications of IPv6 Pack ets with Extension Headers</title> | |||
<seriesInfo name="RFC" value="9098"/> | ||||
<author fullname="Fernando Gont" initials="F." surname="Gont"> | <author fullname="Fernando Gont" initials="F." surname="Gont"> | |||
<organization abbrev="SI6 Networks">SI6 Networks</organization> | <organization abbrev="SI6 Networks">SI6 Networks</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Segurola y Habana 4310, 7mo Piso</street> | <street>Segurola y Habana 4310, 7mo Piso</street> | |||
<city>Villa Devoto</city> | <city>Villa Devoto</city> | |||
<region>Ciudad Autonoma de Buenos Aires</region> | <region>Ciudad Autonoma de Buenos Aires</region> | |||
<country>Argentina</country> | <country>Argentina</country> | |||
</postal> | </postal> | |||
<email>fgont@si6networks.com</email> | <email>fgont@si6networks.com</email> | |||
<uri>https://www.si6networks.com</uri> | <uri>https://www.si6networks.com</uri> | |||
skipping to change at line 31 ¶ | skipping to change at line 21 ¶ | |||
<organization abbrev="SI6 Networks">SI6 Networks</organization> | <organization abbrev="SI6 Networks">SI6 Networks</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Segurola y Habana 4310, 7mo Piso</street> | <street>Segurola y Habana 4310, 7mo Piso</street> | |||
<city>Villa Devoto</city> | <city>Villa Devoto</city> | |||
<region>Ciudad Autonoma de Buenos Aires</region> | <region>Ciudad Autonoma de Buenos Aires</region> | |||
<country>Argentina</country> | <country>Argentina</country> | |||
</postal> | </postal> | |||
<email>fgont@si6networks.com</email> | <email>fgont@si6networks.com</email> | |||
<uri>https://www.si6networks.com</uri> | <uri>https://www.si6networks.com</uri> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Nick Hilliard" initials="N" surname="Hilliard"> | <author fullname="Nick Hilliard" initials="N" surname="Hilliard"> | |||
<organization>INEX</organization> | <organization>INEX</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>4027 Kingswood Road</street> | <street>4027 Kingswood Road</street> | |||
<city>Dublin</city> | <city>Dublin</city> | |||
<code>24</code> | <code>24</code> | |||
<country>IE</country> | <country>Ireland</country> | |||
</postal> | </postal> | |||
<email>nick@inex.ie</email> | <email>nick@inex.ie</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Gert Doering" initials="G" surname="Doering"> | <author fullname="Gert Doering" initials="G" surname="Doering"> | |||
<organization>SpaceNet AG</organization> | <organization>SpaceNet AG</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Joseph-Dollinger-Bogen 14</street> | <street>Joseph-Dollinger-Bogen 14</street> | |||
<city>Muenchen</city> | <city>Muenchen</city> | |||
<code>D-80807</code> | <code>D-80807</code> | |||
<country>Germany</country> | <country>Germany</country> | |||
</postal> | </postal> | |||
<email>gert@space.net</email> | <email>gert@space.net</email> | |||
skipping to change at line 59 ¶ | skipping to change at line 47 ¶ | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Joseph-Dollinger-Bogen 14</street> | <street>Joseph-Dollinger-Bogen 14</street> | |||
<city>Muenchen</city> | <city>Muenchen</city> | |||
<code>D-80807</code> | <code>D-80807</code> | |||
<country>Germany</country> | <country>Germany</country> | |||
</postal> | </postal> | |||
<email>gert@space.net</email> | <email>gert@space.net</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Warren Kumari" initials="W." surname="Kumari"> | <author fullname="Warren Kumari" initials="W." surname="Kumari"> | |||
<organization>Google</organization> | <organization>Google</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>1600 Amphitheatre Parkway</street> | <street>1600 Amphitheatre Parkway</street> | |||
<city>Mountain View</city> | ||||
<city>Mountain View, CA</city> | <region>CA</region> | |||
<code>94043</code> | <code>94043</code> | |||
<country>US</country> | <country>US</country> | |||
</postal> | </postal> | |||
<email>warren@kumari.net</email> | <email>warren@kumari.net</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Geoff Huston" initials="G." surname="Huston"> | ||||
<author fullname="Geoff Huston" initials="G." surname="Huston"> | ||||
<organization abbrev="APNIC"/> | <organization abbrev="APNIC"/> | |||
<address> | <address> | |||
<email>gih@apnic.net</email> | <email>gih@apnic.net</email> | |||
<uri>http://www.apnic.net</uri> | <uri>https://www.apnic.net</uri> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Will (Shucheng) Liu" initials="W." surname="Liu"> | <author fullname="Will (Shucheng) Liu" initials="W." surname="Liu"> | |||
<organization>Huawei Technologies</organization> | <organization>Huawei Technologies</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Bantian, Longgang District</street> | <street>Bantian, Longgang District</street> | |||
<city>Shenzhen</city> | <city>Shenzhen</city> | |||
<code>518129</code> | <code>518129</code> | |||
<country>P.R. China</country> | <country>China</country> | |||
</postal> | </postal> | |||
<email>liushucheng@huawei.com</email> | <email>liushucheng@huawei.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="September" year="2021"/> | ||||
<date/> | ||||
<area>Operations and Management</area> | <area>Operations and Management</area> | |||
<workgroup>IPv6 Operations Working Group (v6ops)</workgroup> | <workgroup>IPv6 Operations Working Group (v6ops)</workgroup> | |||
<abstract> | <abstract> | |||
<t> | <t> | |||
This document summarizes the operational implications of IPv6 extension headers | This document summarizes the operational implications of IPv6 extension headers | |||
specified in the IPv6 protocol specification (RFC8200), and attempts to analyze | specified in the IPv6 protocol specification (RFC 8200) and attempts to analyze | |||
reasons why packets with IPv6 extension headers are often dropped in the public | reasons why packets with IPv6 extension headers are often dropped in the public | |||
Internet. | Internet. | |||
</t> | </t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section anchor="intro" numbered="true" toc="default"> | ||||
<section title="Introduction" anchor="intro"> | <name>Introduction</name> | |||
<t> | <t> | |||
IPv6 Extension Headers (EHs) allow for the extension of the IPv6 protocol, and p | IPv6 extension headers (EHs) allow for the extension of the IPv6 protocol and pr | |||
rovide support for core functionality such as IPv6 fragmentation. However, commo | ovide support for core functionality such as IPv6 fragmentation. However, common | |||
n implementation limitations suggest that EHs present a challenge for IPv6 packe | implementation limitations suggest that EHs present a challenge for IPv6 packet | |||
t routing equipment and middle-boxes, and evidence exists that IPv6 packets with | routing equipment and middleboxes, and evidence exists that IPv6 packets with E | |||
EHs are intentionally dropped in the public Internet in some circumstances. | Hs are intentionally dropped in the public Internet in some circumstances. | |||
</t> | </t> | |||
<t>This document has the following goals: | ||||
<t>This document has the following goals: | ||||
<list style="symbols"> | ||||
<t>Raise awareness about the operational and security implications of IPv6 Exten | ||||
sion Headers specified in <xref target="RFC8200"/>, and present reasons why some | ||||
networks resort to intentionally dropping packets containing IPv6 Extension Hea | ||||
ders.</t> | ||||
<t>Highlight areas where current IPv6 support by networking devices maybe sub-op | ||||
timal, such that the aforementioned support is improved.</t> | ||||
<t>Highlight operational issues associated with IPv6 extension headers, such tha | ||||
t those issues are considered in IETF standardization efforts.</t> | ||||
</list> | ||||
</t> | </t> | |||
<ul spacing="normal"> | ||||
<t> | <li>Raise awareness about the operational and security implications of I | |||
<xref target="background"/> provides background information about the IPv6 packe | Pv6 extension headers specified in <xref target="RFC8200" format="default"/> and | |||
t structure and associated implications. <xref target="previous-work"/> of this | present reasons why some networks resort to intentionally dropping packets cont | |||
document summarizes the previous work that has been carried out in the area of I | aining IPv6 extension headers.</li> | |||
Pv6 extension headers. <xref target="pfe-constraints"/> discusses packet forward | <li>Highlight areas where current IPv6 support by networking devices may | |||
ing engine constraints in contemporary routers. <xref target="inability"/> discu | be suboptimal, such that the aforementioned support is improved.</li> | |||
sses why intermediate systems may need to access Layer-4 information to make a f | <li>Highlight operational issues associated with IPv6 extension headers, | |||
orwarding decision. Finally, <xref target="operational-implications"/> discusses | such that those issues are considered in IETF standardization efforts.</li> | |||
the operational implications of IPv6 EHs. <!--Finally, <xref target="future-wor | </ul> | |||
k"/> suggests a possible action plan for improving the state of affairs with res | <t> | |||
pect to IPv6 extension headers. --> | <xref target="background" format="default"/> of this document provides backgroun | |||
d information about the IPv6 packet structure and associated implications. <xref | ||||
target="previous-work" format="default"/> summarizes previous work that has bee | ||||
n carried out in the area of IPv6 extension headers. <xref target="pfe-constrain | ||||
ts" format="default"/> discusses packet-forwarding engine constraints in contemp | ||||
orary routers. <xref target="inability" format="default"/> discusses why interme | ||||
diate systems may need to access Layer 4 information to make a forwarding decisi | ||||
on. Finally, <xref target="operational-implications" format="default"/> discusse | ||||
s operational implications of IPv6 EHs. | ||||
</t> | </t> | |||
</section> | ||||
</section> | <section numbered="true" toc="default"> | |||
<name>Terminology</name> | ||||
<section title="Terminology"> | <t> | |||
<t> | This document uses the term "intermediate system" to describe both routers and m | |||
This document uses the term "intermediate system" to describe both routers and m | iddleboxes when there is no need to distinguish between the two and where the im | |||
iddle-boxes, when there is no need to distinguish between the two and where the | portant issue is that the device being discussed forwards packets.</t> | |||
important issue is that the device being discussed forwards packets.</t> | </section> | |||
</section> | <section anchor="disclaimer" numbered="true" toc="default"> | |||
<name>Disclaimer</name> | ||||
<section title="Disclaimer" anchor="disclaimer"> | <t>This document analyzes the operational challenges represented by packet | |||
<t>This document analyzes the operational challenges represented by packets that | s that employ IPv6 extension headers and documents some of the operational reaso | |||
employ IPv6 Extension Headers, and documents some of the operational reasons wh | ns why these packets are often dropped in the public Internet. This document is | |||
y these packets are often dropped in the public Internet. This document is not a | not a recommendation to drop such packets, but rather an analysis of why they ar | |||
recommendation to drop such packets, but rather an analysis of why they are cur | e currently dropped. | |||
rently dropped. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="background" numbered="true" toc="default"> | ||||
<section title="Background Information" anchor="background"> | <name>Background Information</name> | |||
<t> | <t> | |||
It is useful to compare the basic structure of IPv6 packets against that of IPv4 | It is useful to compare the basic structure of IPv6 packets against that of IPv4 | |||
packets, and analyze the implications of the two different packet structures. | packets and analyze the implications of the two different packet structures. | |||
</t> | </t> | |||
<t> | <t> | |||
IPv4 packets have a variable-length header size, that allows for the | IPv4 packets have a variable-length header size that allows for the | |||
use of IPv4 "options" -- optional information that may be of use by | use of IPv4 "options" -- optional information that may be of use to | |||
nodes processing IPv4 packets. The IPv4 header length is specified | nodes processing IPv4 packets. The IPv4 header length is specified | |||
in the IHL header field of the mandatory IPv4 header, and must be in | in the "Internet Header Length" (IHL) field of the mandatory IPv4 header and | |||
the range from 20 octets (the minimum IPv4 header size) to 60 octets | must be in | |||
(accommodating at most 40 octets of options). The upper-layer protocol type | the range of 20 octets (the minimum IPv4 header size) to 60 octets, accommod | |||
is specified via the "Protocol" field of the mandatory IPv4 header. | ating at most 40 octets of options. The upper-layer protocol type is specified v | |||
ia the "Protocol" field of the mandatory IPv4 header. | ||||
</t> | </t> | |||
<figure anchor="ipv4-packet"> | ||||
<t> | <name>IPv4 Packet Structure</name> | |||
<figure title="IPv4 Packet Structure" anchor="ipv4-packet"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
Protocol, IHL | Protocol, IHL | |||
+--------+ | +--------+ | |||
| | | | | | |||
| v | | v | |||
+------//-----+------------------------+ | +------//-----+------------------------+ | |||
| | | | | | | | |||
| IPv4 | Upper-Layer | | | IPv4 | Upper-Layer | | |||
| Header | Protocol | | | Header | Protocol | | |||
| | | | | | | | |||
+-----//------+------------------------+ | +-----//------+------------------------+ | |||
variable length | variable length | |||
<-------------> | <-------------> | |||
]]></artwork></figure> | ]]></artwork> | |||
</t> | </figure> | |||
<t> | ||||
<t> | IPv6 took a different approach to the IPv6 packet structure. Rather than employi | |||
IPv6 took a different approach to the IPv6 packet structure. Rather than employi | ng a variable-length header as IPv4 does, IPv6 employs a packet structure simila | |||
ng a variable-length header as IPv4 does, IPv6 employs a linked-list-like packet | r to a linked list, where a mandatory fixed-length IPv6 header is followed by an | |||
structure, where a mandatory fixed-length IPv6 header is followed by an arbitra | arbitrary number of optional extension headers, with the upper-layer header bei | |||
ry number of optional extension headers, with the upper-layer header being the l | ng the last header in the IPv6 header chain. Each extension header typically spe | |||
ast header in the IPv6 header chain. Each extension header typically specifies i | cifies its length (unless it is implicit from the extension header type) and the | |||
ts length (unless it is implicit from the extension header type), and the "next | "next header" (NH) type that follows in the IPv6 header chain. | |||
header" type that follows in the IPv6 header chain. | ||||
</t> | </t> | |||
<figure anchor="ipv6-packet"> | ||||
<t> | <name>IPv6 Packet Structure</name> | |||
<figure title="IPv6 Packet Structure" anchor="ipv6-packet"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
NH NH, EH-length NH, EH-length | NH NH, EH-length NH, EH-length | |||
+-------+ +------+ +-------+ | +-------+ +------+ +-------+ | |||
| | | | | | | | | | | | | | |||
| v | v | v | | v | v | v | |||
+-------------+-------------+-//-+---------------+--------------+ | +-------------+-------------+-//-+---------------+--------------+ | |||
| | | | | | | | | | | | | | |||
| IPv6 | Ext. | | Ext. | Upper-Layer | | | IPv6 | Ext. | | Ext. | Upper-Layer | | |||
| header | Header | | Header | Protocol | | | header | Header | | Header | Protocol | | |||
| | | | | | | | | | | | | | |||
+-------------+-------------+-//-+---------------+--------------+ | +-------------+-------------+-//-+---------------+--------------+ | |||
fixed length variable number of EHs & length | fixed length variable number of EHs & length | |||
<------------> <--------------------------------> | <------------> <--------------------------------> | |||
]]></artwork></figure> | ]]></artwork> | |||
</t> | </figure> | |||
<t>This packet structure has the following implications: | ||||
<t>This packet structure has the following implications: | ||||
<list style="symbols"> | ||||
<t><xref target="RFC8200"/> requires the entire IPv6 header chain to be containe | ||||
d in the first fragment of a packet, therefore limiting the IPv6 extension heade | ||||
r chain to the size of the path MTU. | ||||
</t> | ||||
<t>Other than the path MTU constraints, there are no other limits to the number of IPv6 EHs that may be present in a packet. Therefore, there is no upper-limit regarding "how deep into the IPv6 packet" the upper-layer may be found. | ||||
</t> | </t> | |||
<ul spacing="normal"> | ||||
<t>The only way for a node to obtain the upper-layer protocol | <li> | |||
<xref target="RFC8200" format="default"/> requires the entire IPv6 hea | ||||
der chain to be contained in the first fragment of a packet, therefore limiting | ||||
the IPv6 header chain to the size of the path MTU. | ||||
</li> | ||||
<li>Other than the path MTU constraints, there are no other limits to th | ||||
e number of IPv6 EHs that may be present in a packet. Therefore, there is no upp | ||||
er limit regarding how deep into the IPv6 packet the upper-layer protocol header | ||||
may be found. | ||||
</li> | ||||
<li>The only way for a node to obtain the upper-layer protocol | ||||
type or find the upper-layer protocol header is to parse and | type or find the upper-layer protocol header is to parse and | |||
process the entire IPv6 header chain, in sequence, starting from | process the entire IPv6 header chain, in sequence, starting from | |||
the mandatory IPv6 header, until the last header in the IPv6 | the mandatory IPv6 header until the last header in the IPv6 | |||
header chain is found. | header chain is found. | |||
</li> | ||||
</ul> | ||||
</section> | ||||
<section anchor="previous-work" numbered="true" toc="default"> | ||||
<name>Previous Work on IPv6 Extension Headers</name> | ||||
<t>Some of the operational and security implications of IPv6 extension hea | ||||
ders have been discussed in the IETF: | ||||
</t> | </t> | |||
</list> | <ul spacing="normal"> | |||
<li> | ||||
</t> | ||||
</section> | ||||
<section title="Previous Work on IPv6 Extension Headers" anchor="previous-work"> | ||||
<t>Some of the operational and security implications of IPv6 Extension Headers h | ||||
ave been discussed at the IETF: | ||||
<list style="symbols"> | ||||
<t><xref target="I-D.taylor-v6ops-fragdrop"/> discusses a rationale for which op | ||||
erators drop IPv6 fragments.</t> | ||||
<t> <xref target="I-D.wkumari-long-headers"/> discusses possible issues arising | ||||
from "long" IPv6 header chains.</t> | ||||
<t><xref target="I-D.kampanakis-6man-ipv6-eh-parsing"/> describes how inconsiste | ||||
ncies in the way IPv6 packets with extension headers are parsed by different imp | ||||
lementations could result in evasion of security controls, and presents guidelin | ||||
es for parsing IPv6 extension headers with the goal of providing a common and co | ||||
nsistent parsing methodology for IPv6 implementations. | ||||
</t> | ||||
<t><xref target="I-D.ietf-opsec-ipv6-eh-filtering"/> analyzes the security impli | ||||
cations of IPv6 EHs, and the operational implications of dropping packets that e | ||||
mploy IPv6 EHs and associated options. | ||||
</t> | ||||
<t><xref target="RFC7113"/> discusses how some popular RA-Guard implementations | ||||
are subject to evasion by means of IPv6 extension headers.</t> | ||||
<t><xref target="RFC8900"/> analyzes the fragility introduced by IP fragmentatio | ||||
n.</t> | ||||
</list> | ||||
</t> | ||||
<t>A number of recent RFCs have discussed issues related to IPv6 extension heade | ||||
rs, specifying updates to a previous revision of the IPv6 standard <xref target= | ||||
"RFC2460"/>, many of which have now been incorporated into the current IPv6 core | ||||
standard <xref target="RFC8200"/> or the IPv6 Node Requirements <xref target="R | ||||
FC8504"/>. Namely, | ||||
<list style="symbols"> | ||||
<t><xref target="RFC5095"/> discusses the security implications of Routing Heade | ||||
r Type 0 (RTH0), and deprecates it.</t> | ||||
<t><xref target="RFC5722"/> analyzes the security implications of overlapping fr | ||||
agments, and provides recommendations in this area.</t> | ||||
<t><xref target="RFC7045"/> clarifies how intermediate nodes should deal with IP | ||||
v6 extension headers.</t> | ||||
<t><xref target="RFC7112"/> discusses the issues arising in a specific fragmenta | ||||
tion case where the IPv6 header chain is fragmented into two or more fragments ( | ||||
and formally forbids such fragmentation).</t> | ||||
<t><xref target="RFC6946"/> discusses a flawed (but common) processing of the so | ||||
-called IPv6 "atomic fragments", and specified improved processing of such packe | ||||
ts.</t> | ||||
<t><xref target="RFC8021"/> deprecates the generation of IPv6 atomic fragments.< | ||||
/t> | ||||
<t><xref target="RFC8504"/> clarifies processing rules for packets with extensio | ||||
n headers, and also allows hosts to enforce limits on the number of options incl | ||||
uded in IPv6 EHs.</t> | ||||
<t><xref target="RFC7739"/> discusses the security implications of predictable f | ||||
ragment Identification values, and provides recommendations for the generation o | ||||
f these values.</t> | ||||
<t><xref target="RFC6980"/> analyzes the security implications of employing IPv6 | ||||
fragmentation with Neighbor Discovery for IPv6, and formally recommends against | ||||
such usage.</t> | ||||
</list> | ||||
</t> | ||||
<t>Additionally, <xref target="RFC8200"/> has relaxed the requirement that " | <xref target="I-D.taylor-v6ops-fragdrop" format="default"/> discusses | |||
;all nodes examine and process the Hop-by-Hop Options header" from <xref ta | a rationale for which operators drop IPv6 fragments.</li> | |||
rget="RFC2460"/>, by specifying that only nodes that have been explicitly config | <li> | |||
ured to process the Hop-by-Hop Options header are required to do so.</t> | <xref target="I-D.wkumari-long-headers" format="default"/> discusses p | |||
ossible issues arising from "long" IPv6 header chains.</li> | ||||
<li> | ||||
<xref target="I-D.kampanakis-6man-ipv6-eh-parsing" format="default"/> | ||||
describes how inconsistencies in the way IPv6 packets with extension headers are | ||||
parsed by different implementations could result in evasion of security control | ||||
s and presents guidelines for parsing IPv6 extension headers, with the goal of p | ||||
roviding a common and consistent parsing methodology for IPv6 implementations. | ||||
</li> | ||||
<li> | ||||
<xref target="I-D.ietf-opsec-ipv6-eh-filtering" format="default"/> ana | ||||
lyzes the security implications of IPv6 EHs, as well as the operational implicat | ||||
ions of dropping packets that employ IPv6 EHs and associated options. | ||||
</li> | ||||
<li> | ||||
<xref target="RFC7113" format="default"/> discusses how some popular R | ||||
outer Advertisement Guard (RA-Guard) implementations are subject to evasion by m | ||||
eans of IPv6 extension headers.</li> | ||||
<li> | ||||
<xref target="RFC8900" format="default"/> analyzes the fragility intro | ||||
duced by IP fragmentation.</li> | ||||
</ul> | ||||
<t>A number of studies have measured the extent to which packets employing IPv6 | <t>A number of recent RFCs have discussed issues related to IPv6 extension | |||
extension headers are dropped in the public Internet: | headers and have specified updates to RFC 2460 <xref target="RFC2460" format="d | |||
efault"/> (an earlier version of the IPv6 standard). Many of these updates have | ||||
now been incorporated into the current IPv6 core standard <xref target="RFC8200" | ||||
format="default"/> or the IPv6 node requirements <xref target="RFC8504" format= | ||||
"default"/>. Namely, | ||||
</t> | ||||
<list style="symbols"> | <ul spacing="normal"> | |||
<t><xref target="PMTUD-Blackholes"/><!--, <xref target="Gont-IEPG88"/>, <xref ta | <li> | |||
rget="Gont-Chown-IEPG89"/>,--> and <xref target="Linkova-Gont-IEPG90"/> presente | <xref target="RFC5095" format="default"/> discusses the security impli | |||
d some preliminary measurements regarding the extent to which packet containing | cations of Routing Header Type 0 (RHT0) and deprecates it.</li> | |||
IPv6 EHs are dropped in the public Internet.</t> | <li> | |||
<t><xref target="RFC7872"/> presents more comprehensive results and documents th | <xref target="RFC5722" format="default"/> analyzes the security implic | |||
e methodology used to obtain these results.</t> | ations of overlapping fragments and provides recommendations in this area.</li> | |||
<t><xref target="Huston-2017"/> and <xref target="Huston-2020"/> measured packet | <li> | |||
drops resulting from IPv6 fragmentation when communicating with DNS servers.</t | <xref target="RFC7045" format="default"/> clarifies how intermediate n | |||
> | odes should deal with IPv6 extension headers.</li> | |||
<li> | ||||
<xref target="RFC7112" format="default"/> discusses the issues arising | ||||
in a specific fragmentation case where the IPv6 header chain is fragmented into | ||||
two or more fragments and formally forbids such fragmentation.</li> | ||||
<li> | ||||
<xref target="RFC6946" format="default"/> discusses a flawed (but comm | ||||
on) processing of the so-called IPv6 "atomic fragments" and specifies improved p | ||||
rocessing of such packets.</li> | ||||
<li> | ||||
<xref target="RFC8021" format="default"/> deprecates the generation of | ||||
IPv6 atomic fragments.</li> | ||||
<li> | ||||
<xref target="RFC8504" format="default"/> clarifies processing rules f | ||||
or packets with extension headers and also allows hosts to enforce limits on the | ||||
number of options included in IPv6 EHs.</li> | ||||
<li> | ||||
<xref target="RFC7739" format="default"/> discusses the security impli | ||||
cations of predictable fragment Identification values and provides recommendatio | ||||
ns for the generation of these values.</li> | ||||
<li> | ||||
<xref target="RFC6980" format="default"/> analyzes the security implic | ||||
ations of employing IPv6 fragmentation with Neighbor Discovery for IPv6 and form | ||||
ally recommends against such usage.</li> | ||||
</ul> | ||||
</list> | <t>Additionally, <xref target="RFC8200" format="default"/> has relaxed the | |||
requirement that "all nodes must examine and process the Hop-by-Hop Options hea | ||||
der" from <xref target="RFC2460" format="default"/>, by specifying that only nod | ||||
es that have been explicitly configured to process the Hop-by-Hop Options header | ||||
are required to do so.</t> | ||||
<t>A number of studies have measured the extent to which packets employing | ||||
IPv6 extension headers are dropped in the public Internet: | ||||
</t> | </t> | |||
</section> | <ul spacing="normal"> | |||
<li> | ||||
<section title="Packet Forwarding Engine Constraints" anchor="pfe-constraints"> | <xref target="PMTUD-Blackholes" format="default"/> and <xref target="L | |||
inkova-Gont-IEPG90" format="default"/> present some preliminary measurements reg | ||||
<t> | arding the extent to which packets containing IPv6 EHs are dropped in the public | |||
Internet.</li> | ||||
<li> | ||||
<xref target="RFC7872" format="default"/> presents more comprehensive | ||||
results and documents the methodology used to obtain these results.</li> | ||||
<li> | ||||
<xref target="Huston-2017" format="default"/> and <xref target="Huston | ||||
-2020" format="default"/> measure packet drops resulting from IPv6 fragmentation | ||||
when communicating with DNS servers.</li> | ||||
</ul> | ||||
</section> | ||||
<section anchor="pfe-constraints" numbered="true" toc="default"> | ||||
<name>Packet-Forwarding Engine Constraints</name> | ||||
<t> | ||||
Most contemporary carrier-grade routers use dedicated hardware, e.g. application | Most contemporary carrier-grade routers use dedicated hardware, e.g., Applicatio | |||
-specific | n-Specific | |||
integrated circuits (ASICs) or network processing units (NPUs), to determine how | Integrated Circuits (ASICs) or Network Processing Units (NPUs), to determine how | |||
to forward | to forward | |||
packets across their internal fabrics (see <xref target="IEPG94-Scudder"/> and < | packets across their internal fabrics (see <xref target="IEPG94-Scudder" format= | |||
xref target="APNIC-Scudder"/> for details). One of the | "default"/> and <xref target="APNIC-Scudder" format="default"/> for details). O | |||
common methods of handling next-hop lookup is to send a small portion of the | ne common method of handling next-hop lookups is to send a small portion of the | |||
ingress packet to a lookup engine with specialised hardware, e.g. ternary | ingress packet to a lookup engine with specialized hardware, e.g., ternary | |||
content-addressable memory (TCAM) or reduced latency dynamic random-access memor y | content-addressable memory (TCAM) or reduced latency dynamic random-access memor y | |||
(RLDRAM), to determine the packet's next-hop. Technical constraints | (RLDRAM), to determine the packet's next hop. Technical constraints | |||
mean that there is a trade-off between the amount of data sent to the lookup | mean that there is a trade-off between the amount of data sent to the lookup | |||
engine and the overall packet forwarding rate of the lookup engine. If more dat a is | engine and the overall packet-forwarding rate of the lookup engine. If more dat a is | |||
sent, the lookup engine can inspect further into the packet, but the overall | sent, the lookup engine can inspect further into the packet, but the overall | |||
packet forwarding rate of the system will be reduced. If less data is sent, the | packet-forwarding rate of the system will be reduced. If less data is sent, the | |||
overall packet forwarding rate of the router will be increased but the packet lo | overall packet-forwarding rate of the router will be increased, but the packet l | |||
okup | ookup | |||
engine may not be able to inspect far enough into a packet to determine how | engine may not be able to inspect far enough into a packet to determine how | |||
it should be handled. | it should be handled. | |||
</t> | </t> | |||
<!-- | ||||
<t> | ||||
<list style="hanging"> | ||||
<t hangText="NOTE:"><vspace blankLines="0"/>For example, contemporary high-end | ||||
routers can use up to 192 bytes | ||||
of header (Cisco ASR9000 Typhoon) or 384 bytes of header (Juniper MX Trio). | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<t> | <aside> | |||
<list style="hanging"> | <t>NOTE:</t> | |||
<t hangText="NOTE:"><vspace blankLines="0"/>For example, some contemporary high- | <t indent="3"> | |||
end routers are known to inspect up to 192 bytes, while others are known to pars | For example, some contemporary high-end routers are known to inspect up to 192 b | |||
e up to 384 bytes of header. | ytes, while others are known to parse up to 384 bytes of header. | |||
</t> | ||||
</list> | ||||
</t> | </t> | |||
</aside> | ||||
<t>If a hardware forwarding engine on a contemporary router cannot make a | <t>If a hardware-forwarding engine on a contemporary router cannot make a | |||
forwarding decision about a packet because critical information is not sent | forwarding decision about a packet because critical information is not sent | |||
to the look-up engine, then the router will normally drop the packet. <xref targ | to the lookup engine, then the router will normally drop the packet. <xref targe | |||
et="inability"/> discusses some of the reasons for which a contemporary router m | t="inability" format="default"/> discusses some of the reasons for which a conte | |||
ight need to access layer-4 information to make a forwarding decision.</t> | mporary router might need to access Layer 4 information to make a forwarding dec | |||
ision.</t> | ||||
<t> | <t> | |||
Historically, some packet forwarding engines punted packets of this form to | Historically, some packet-forwarding engines punted packets of this kind to | |||
the control plane for more in-depth analysis, but this is unfeasible on most | the control plane for more in-depth analysis, but this is unfeasible on most | |||
contemporary router architectures as a result of the vast difference between the | contemporary router architectures as a result of the vast difference between the | |||
hardware | hardware-based forwarding | |||
forwarding capacity of the router and processing capacity of the control plane a | capacity of the router and the processing capacity of the control plane and the | |||
nd the size of the management link which | size of the management link that connects the control plane to the forwarding pl | |||
connects the control plane to the forwarding plane. Other platforms may have a | ane. Other platforms may have a separate software-based forwarding plane that i | |||
separate software forwarding plane that is | s | |||
distinct both from the hardware forwarding plane and the control | distinct both from the hardware-based forwarding plane and the control | |||
plane. However, the limited CPU resources of this software-based | plane. However, the limited CPU resources of this software-based | |||
forwarding plane, as well as the limited bandwidth of the associated | forwarding plane, as well as the limited bandwidth of the associated | |||
link results in similar throughput constraints. </t> | link, results in similar throughput constraints. </t> | |||
<t> | ||||
<t> | ||||
If an IPv6 header chain is sufficiently long that it exceeds the | If an IPv6 header chain is sufficiently long such that it exceeds the | |||
packet look-up capacity of the router, the router might be unable to | packet lookup capacity of the router, the router might be unable to | |||
determine how the packet should be handled, and thus could resort to | determine how the packet should be handled and thus could resort to | |||
dropping the packet. | dropping the packet. | |||
</t> | </t> | |||
<section anchor="recirculation" numbered="true" toc="default"> | ||||
<name>Recirculation</name> | ||||
<t> | ||||
<section title="Recirculation" anchor="recirculation"> | Although type-length-value (TLV) chains are amenable to iterative processing on | |||
<t> | architectures | |||
that have packet lookup engines with deep inspection capabilities, some | ||||
Although TLV chains are amenable to iterative processing on architectures | packet-forwarding engines manage IPv6 header chains using | |||
that have packet look-up engines with deep inspection capabilities, some | recirculation. This approach processes extension headers one at a time: | |||
packet forwarding engines manage IPv6 Extension Header chains using | when processing on one extension header is completed, the packet is looped | |||
recirculation. This approach processes Extension Headers one at a time: | ||||
when processing on one Extension Header is completed, the packet is looped | ||||
back through the processing engine again. This recirculation process | back through the processing engine again. This recirculation process | |||
continues repeatedly until there are no more Extension Headers left to be | continues repeatedly until there are no more extension headers left to be | |||
processed. | processed. | |||
</t> | </t> | |||
<t> | <t> | |||
Recirculation is typically used on packet forwarding engines with limited | Recirculation is typically used on packet-forwarding engines with limited | |||
look-up capability, because it allows arbitrarily long header chains to be | lookup capability, because it allows arbitrarily long header chains to be | |||
processed without the complexity and cost associated with packet forwarding | processed without the complexity and cost associated with packet-forwarding | |||
engines which have deep look-up capabilities. However, recirculation can | engines, which have deep lookup capabilities. However, recirculation can | |||
impact the forwarding capacity of hardware, as each packet will pass through | impact the forwarding capacity of hardware, as each packet will pass through | |||
the processing engine multiple times. Depending on configuration, the type | the processing engine multiple times. Depending on configuration, the type | |||
of packets being processed, and the hardware capabilities of the packet | of packets being processed, and the hardware capabilities of the packet-forwardi | |||
forwarding engine, this could impact data-plane throughput performance on the | ng | |||
router. | engine, the data-plane throughput performance on the | |||
router might be negatively affected. | ||||
</t> | </t> | |||
</section> | ||||
</section> | </section> | |||
<section anchor="inability" numbered="true" toc="default"> | ||||
</section> | <name>Requirement to Process Layer 3 / Layer 4 Information in Intermediate | |||
Systems</name> | ||||
<section title="Requirement to Process Layer-3/layer-4 information in Intermedia | <t>The following subsections discuss some of the reasons for which interme | |||
te Systems" anchor="inability"> | diate systems may need to process Layer 3 / Layer 4 information to make a forwar | |||
ding decision.</t> | ||||
<t>The following subsections discuss some of the reasons for which intermediate | <section anchor="ecmp-load-balancing" numbered="true" toc="default"> | |||
systems may need to process Layer-3/layer-4 information to make a forwarding dec | <name>ECMP and Hash-Based Load Sharing</name> | |||
ision.</t> | <t>In the case of Equal Cost Multipath (ECMP) load sharing, the intermed | |||
iate system | ||||
<section title="ECMP and Hash-based Load-Sharing" anchor="ecmp-load-balancing"> | ||||
<t>In the case of equal cost multi-path (ECMP) load sharing, the intermediate sy | ||||
stem | ||||
needs to make a decision regarding which of its interfaces to | needs to make a decision regarding which of its interfaces to | |||
use to forward a given packet. Since round-robin usage of the links is usually | use to forward a given packet. Since round-robin usage of the links is usually | |||
avoided to prevent packet reordering, forwarding engines need to | avoided to prevent packet reordering, forwarding engines need to | |||
use a mechanism that will consistently forward the same data streams down | use a mechanism that will consistently forward the same data streams down | |||
the same forwarding paths. Most forwarding engines achieve this by | the same forwarding paths. Most forwarding engines achieve this by | |||
calculating a simple hash using an n-tuple gleaned from a combination of | calculating a simple hash using an n-tuple gleaned from a combination of | |||
layer-2 through to layer-4 packet header information. This n-tuple will | Layer 2 through to Layer 4 protocol header information. This n-tuple will | |||
typically use the src/dst MAC address, src/dst IP address, and if possible | typically use the src/dst Media Access Control (MAC) addresses, src/dst IP addre | |||
further layer-4 src/dst port information. | sses, and, if possible, | |||
further Layer 4 src/dst port information. | ||||
</t> | </t> | |||
<t>In the IPv6 world, flows are expected to be identified by means of th | ||||
<t>In the IPv6 world, flows are expected to be identified by means of the IPv6 F | e IPv6 "Flow Label" <xref target="RFC6437" format="default"/>. Thus, ECMP and ha | |||
low Label <xref target="RFC6437"/>. Thus, ECMP and Hash-based Load-Sharing shoul | sh-based load sharing should be possible without the need to process the entire | |||
d be possible without the need to process the entire IPv6 header chain to obtain | IPv6 header chain to obtain upper-layer information to identify flows. <xref tar | |||
upper-layer information to identify flows. <xref target="RFC7098"/> discusses h | get="RFC7098" format="default"/> discusses how the IPv6 Flow Label can be used t | |||
ow the IPv6 Flow Label can used to enhance layer 3/4 load distribution and balan | o enhance Layer 3/4 load distribution and balancing for large server farms. | |||
cing for large server farms. | ||||
</t> | </t> | |||
<t>Historically, many IPv6 implementations failed to set the Flow Label, | ||||
<t>Historically, many IPv6 implementations failed to set the Flow Label, and has | and hash-based ECMP/load-sharing devices also did not employ the Flow Label for | |||
h-based ECMP/load-sharing devices also did not employ the Flow Label for perform | performing their task. While support of <xref target="RFC6437" format="default" | |||
ing their task. While support of <xref target="RFC6437"/> is currently widesprea | /> is currently widespread for current versions of all popular host implementati | |||
d for current versions of all popular host implementations, there is still only | ons, there is still only marginal usage of the IPv6 Flow Label for ECMP and load | |||
marginal usage of the IPv6 Flow Label for ECMP and load balancing <xref target=" | balancing <xref target="Almeida-2020" format="default"/>. A contributing factor | |||
Cunha-2020"/>. A contributing factor could be the issues that have been found in | could be the issues that have been found in host implementations and middleboxe | |||
host implementations and middle-boxes <xref target="Jaeggli-2018"/>.</t> | s <xref target="Jaeggli-2018" format="default"/>.</t> | |||
<t> | ||||
<t> | Clearly, widespread support of <xref target="RFC6437" format="default"/> would r | |||
Clearly, widespread support of <xref target="RFC6437"/> would relieve intermedia | elieve intermediate systems from having to process the entire IPv6 header chain, | |||
te systems from having to process the entire IPv6 header chain, making Flow Labe | making Flow Label-based ECMP and load sharing <xref target="RFC6438" format="de | |||
l-based ECMP and Load-Sharing <xref target="RFC6438"/> feasible. | fault"/> feasible. | |||
</t> | </t> | |||
<t> | <t> | |||
If an intermediate system cannot determine consistent n-tuples for calculating f low hashes, data streams are more likely to end up being distributed unequally a cross ECMP and load-shared links. This may lead to packet drops or reduced perf ormance. | If an intermediate system cannot determine consistent n-tuples for calculating f low hashes, data streams are more likely to end up being distributed unequally a cross ECMP and load-shared links. This may lead to packet drops or reduced perf ormance. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="enforcing-infrastructure-acls" numbered="true" toc="defau | ||||
<section title="Enforcing infrastructure ACLs" anchor="enforcing-infrastructure- | lt"> | |||
acls"> | <name>Enforcing Infrastructure ACLs</name> | |||
<t>Infrastructure Access Control Lists (iACLs) drop unwanted packets des | ||||
<t>Infrastructure ACLs (iACLs) drop unwanted packets destined | tined | |||
to a network's infrastructure. Typically, iACLs are deployed because external d | to a network's infrastructure. Typically, iACLs are deployed because external d | |||
irect access to a network's infrastructure addresses is operationally unnecessar | irect access to a network's infrastructure addresses is operationally unnecessar | |||
y, and can be used for attacks of different sorts against router | y and can be used for attacks of different sorts against router | |||
control planes. To this end, traffic usually needs to be differentiated on the | control planes. To this end, traffic usually needs to be differentiated on the | |||
basis of layer-3 | basis of Layer 3 | |||
or layer-4 criteria to achieve a useful balance of protection and functionality. | or Layer 4 criteria to achieve a useful balance of protection and functionality. | |||
For example, an infrastructure may be configured with the following policy: | For example, an infrastructure may be configured with the following policy: | |||
<list style="symbols"> | ||||
<t>Permit some amount of ICMP echo (ping) traffic towards a router's | ||||
addresses for troubleshooting.</t> | ||||
<t>Permit BGP sessions on the shared network of an exchange point (potentially | ||||
differentiating between the amount of packets/seconds permitted for established | ||||
sessions and connection establishment), but do not permit other traffic from the | ||||
same peer IP addresses.</t> | ||||
</list> | ||||
</t> | </t> | |||
<t> | <ul spacing="normal"> | |||
<li>Permit some amount of ICMP echo (ping) traffic towards a router's | ||||
addresses for troubleshooting.</li> | ||||
<li>Permit BGP sessions on the shared network of an exchange point (po | ||||
tentially differentiating between the amount of packets/second permitted for est | ||||
ablished sessions and for connection establishment), but do not permit other tra | ||||
ffic from the same peer IP addresses.</li> | ||||
</ul> | ||||
<t> | ||||
If a forwarding router cannot determine consistent n-tuples for calculating flow hashes, data streams are more likely to end up being distributed unequally acro ss ECMP and load-shared links. This may lead to packet drops or reduced perform ance. | If a forwarding router cannot determine consistent n-tuples for calculating flow hashes, data streams are more likely to end up being distributed unequally acro ss ECMP and load-shared links. This may lead to packet drops or reduced perform ance. | |||
</t> | </t> | |||
<t> | <t> | |||
If a network cannot deploy infrastructure ACLs, then the security of the network | If a network cannot deploy infrastructure ACLs, then the security of the network | |||
may be compromised due to having more potential attack vectors open. | may be compromised as a result of the increased attack surface. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="ddos-management" numbered="true" toc="default"> | ||||
<section title="DDoS Management and Customer Requests for Filtering" anchor="ddo | <name>DDoS Management and Customer Requests for Filtering</name> | |||
s-management"> | <t>The case of customer Distributed Denial-of-Service (DDoS) protection | |||
<t>The case of customer DDoS protection and edge-to-core customer protection | and edge-to-core customer protection | |||
filters is similar in nature to the iACL protection. Similar | filters is similar in nature to the iACL protection. Similar | |||
to iACL protection, layer-4 ACLs generally need to be applied as close to the | to iACL protection, Layer 4 ACLs generally need to be applied as close to the | |||
edge of the network as possible, even though the intent is usually to protect th e | edge of the network as possible, even though the intent is usually to protect th e | |||
customer edge rather than the provider core. Application of layer-4 DDoS protec | customer edge rather than the provider core. Application of Layer 4 DDoS protec | |||
tion | tion | |||
to a network edge is often automated using Flowspec <xref target="RFC8955"/> <xr | to a network edge is often automated using BGP Flowspec <xref target="RFC8955" f | |||
ef target="RFC8956"/>. | ormat="default"/> <xref target="RFC8956" format="default"/>. | |||
</t> | </t> | |||
<t>For example, a website that normally only handles traffic on TCP port | ||||
<t>For example, a web site that normally only handled traffic on TCP ports | s | |||
80 and 443 could be subject to a volumetric DDoS attack using NTP and DNS | 80 and 443 could be subject to a volumetric DDoS attack using NTP and DNS | |||
packets with randomised source IP address, thereby rendering | packets with a randomized source IP address, thereby rendering | |||
traditional <xref target="RFC5635"/> source-based real-time black hole | source-based remote triggered black hole <xref target="RFC5635"/> | |||
mechanisms useless. In this situation, DDoS protection ACLs could be configured | mechanisms useless. In this situation, ACLs that provide DDoS protection could | |||
to | be configured to | |||
block all UDP traffic at the network edge without impairing the web server | block all UDP traffic at the network edge without impairing the web server | |||
functionality in any way. Thus, being able to block arbitrary | functionality in any way. Thus, being able to block arbitrary | |||
protocols at the network edge can avoid DDoS-related problems both in the provid er | protocols at the network edge can avoid DDoS-related problems both in the provid er | |||
network and on the customer edge link. | network and on the customer edge link. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="nids" numbered="true" toc="default"> | ||||
<name>Network Intrusion Detection and Prevention</name> | ||||
<section title="Network Intrusion Detection and Prevention" anchor="nids"> | <t>Network Intrusion Detection Systems (NIDS) examine network traffic an | |||
<t>Network Intrusion Detection Systems (NIDS) examine network traffic and try to | d try to identify traffic patterns that can be correlated to network-based attac | |||
identify traffic patterns that can be correlated to network-based attacks. Thes | ks. These systems generally attempt to inspect application-layer traffic (if pos | |||
e systems generally inspect application-layer traffic (if possible), but at the | sible) but, at the bare minimum, inspect Layer 4 flows. When attack activity is | |||
bare minimum inspect layer-4 flows. When attack activity is inferred, the operat | inferred, the operator is notified of the potential intrusion attempt. | |||
or is notified of the potential intrusion attempt. | ||||
</t> | </t> | |||
<t>Network Intrusion Prevention Systems (IPS) operate similarly to NIDS's, but t | <t>Network Intrusion Prevention Systems (IPS) operate similarly to NIDSs | |||
hey can also prevent intrusions by reacting to detected attack attempts by e.g., | , but they can also prevent intrusions by reacting to detected attack attempts b | |||
triggering packet filtering policies at firewalls and other devices.</t> | y e.g., triggering packet filtering policies at firewalls and other devices.</t> | |||
<t>Use of extension headers can be problematic for NIDS/IPS, since: | ||||
<t>Use of extension headers can be problematic for NIDS/IPS, since: | ||||
<list style="symbols"> | ||||
<t>Extension headers increase the complexity of resulting traffic, and the assoc | ||||
iated work and system requirements to process it.</t> | ||||
<t>Use of unknown extension headers can prevent an NIDS/IPS from processing laye | ||||
r-4 information.</t> | ||||
<t>Use of IPv6 fragmentation requires a stateful fragment-reassembly operation, | ||||
even for decoy traffic employing forged source addresses (see e.g., <xref target | ||||
="nmap"/>).</t> | ||||
</list> | ||||
</t> | </t> | |||
<ul spacing="normal"> | ||||
<t>As a result, in order to increase the efficiency or effectiveness of these sy | <li>Extension headers increase the complexity of resulting traffic and | |||
stems, packets employing IPv6 extension headers are often dropped at the network | the associated work and system requirements to process it.</li> | |||
ingress point(s) of networks that deploy these systems.</t> | <li>Use of unknown extension headers can prevent a NIDS or IPS from pr | |||
ocessing Layer 4 information.</li> | ||||
</section> | <li>Use of IPv6 fragmentation requires a stateful fragment-reassembly | |||
operation, even for decoy traffic employing forged source addresses (see, e.g., | ||||
<section title="Firewalling" anchor="firewalls"> | <xref target="nmap" format="default"/>).</li> | |||
<t>Firewalls enforce security policies by means of packet filtering. These syste | </ul> | |||
ms usually inspect layer-3 and layer-4 traffic, but can often also examine appli | <t>As a result, in order to increase the efficiency or effectiveness of | |||
cation-layer traffic flows.</t> | these systems, packets employing IPv6 extension headers are often dropped at the | |||
network ingress point(s) of networks that deploy these systems.</t> | ||||
<t>As with NIDS/IPS (<xref target="nids"/>), use of IPv6 extension headers can r | </section> | |||
epresent a challenge to network firewalls, since: | <section anchor="firewalls" numbered="true" toc="default"> | |||
<list style="symbols"> | <name>Firewalling</name> | |||
<t>Extension headers increase the complexity of resulting traffic, and the assoc | <t>Firewalls enforce security policies by means of packet filtering. The | |||
iated work and system requirements to process it, as outlined in <xref target="Z | se systems usually inspect Layer 3 and Layer 4 traffic but can often also examin | |||
ack-FW-Benchmark"/>.</t> | e application-layer traffic flows.</t> | |||
<t>Use of unknown extension headers can prevent firewalls from processing layer- | <t>As with a NIDS or IPS (<xref target="nids" format="default"/>), use o | |||
4 information.</t> | f IPv6 extension headers can represent a challenge to network firewalls, since: | |||
<t>Use of IPv6 fragmentation requires a stateful fragment-reassembly operation, | ||||
even for decoy traffic employing forged source addresses (see e.g., <xref target | ||||
="nmap"/>).</t> | ||||
</list> | ||||
</t> | </t> | |||
<ul spacing="normal"> | ||||
<t>Additionally, a common firewall filtering policy is the so-called "defau | <li>Extension headers increase the complexity of resulting traffic and | |||
lt deny", where all traffic is blocked (by default), and only expected traf | the associated work and system requirements to process it, as outlined in <xref | |||
fic is added to an "allow/accept list".</t> | target="Zack-FW-Benchmark" format="default"/>.</li> | |||
<li>Use of unknown extension headers can prevent firewalls from proces | ||||
<t>As a result, packets employing IPv6 extension headers are often | sing Layer 4 information.</li> | |||
<li>Use of IPv6 fragmentation requires a stateful fragment-reassembly | ||||
operation, even for decoy traffic employing forged source addresses (see, e.g., | ||||
<xref target="nmap" format="default"/>).</li> | ||||
</ul> | ||||
<t>Additionally, a common firewall filtering policy is the so-called "de | ||||
fault deny", where all traffic is blocked (by default), and only expected traffi | ||||
c is added to an "allow/accept list".</t> | ||||
<t>As a result, packets employing IPv6 extension headers are often | ||||
dropped by network firewalls, either because of the challenges | dropped by network firewalls, either because of the challenges | |||
represented by extension headers or because the use of IPv6 extension | represented by extension headers or because the use of IPv6 extension | |||
headers has not been explicitly allowed.</t> | headers has not been explicitly allowed.</t> | |||
<t>Note that although the data presented in <xref target="Zack-FW-Benchmark"/> w | <t>Note that although the data presented in <xref target="Zack-FW-Benchm | |||
ere several years old at the time of publication of this document, many contempo | ark" format="default"/> was several years old at the time of publication of this | |||
rary firewalls use comparable hardware and software architecture, and consequent | document, many contemporary firewalls use comparable hardware and software arch | |||
ly the conclusions of this benchmark are still relevant, despite its age.</t> | itectures; consequently, the conclusions of this benchmark are still relevant, d | |||
</section> | espite its age.</t> | |||
</section> | ||||
</section> | </section> | |||
<section anchor="operational-implications" numbered="true" toc="default"> | ||||
<section title="Operational and Security Implications" anchor="operational-impli | <name>Operational and Security Implications</name> | |||
cations"> | ||||
<!-- | ||||
[fgont] Isn't this already discussed in the "ddos-management" section? | ||||
<t>FIXME: Implementation of edge-to-core customer sanitisation filters</t> | ||||
<section title="Inability to Find Layer-4 Information" anchor="inability-layer-4 | <section anchor="inability-layer-4-info" numbered="true" toc="default"> | |||
-info"> | <name>Inability to Find Layer 4 Information</name> | |||
<t>As discussed in <xref target="inability"/>, intermediate systems that need to | <t>As discussed in <xref target="inability" format="default"/>, intermed | |||
find the layer-4 header must process the entire IPv6 extension header chain. W | iate systems that need to find the Layer 4 header must process the entire IPv6 h | |||
hen such devices are unable to obtain the required information, the forwarding d | eader chain. When such devices are unable to obtain the required information, t | |||
evice has the option to drop the packet unconditionally, forward the packet unco | he forwarding device has the option to drop the packet unconditionally, forward | |||
nditionally, or process the packet outside the normal forwarding path. Forwardi | the packet unconditionally, or process the packet outside the normal forwarding | |||
ng packets unconditionally will usually allow for the circumvention of security | path. Forwarding packets unconditionally will usually allow for the circumventi | |||
controls (see e.g., <xref target="firewalls"/>), while processing packets outsid | on of security controls (see, e.g., <xref target="firewalls" format="default"/>) | |||
e of the normal forwarding path will usually open the door to DoS attacks (see e | , while processing packets outside of the normal forwarding path will usually op | |||
.g., <xref target="pfe-constraints"/>). Thus, in these scenarios, devices often | en the door to Denial-of-Service (DoS) attacks (see, e.g., <xref target="pfe-con | |||
simply resort to dropping such packets unconditionally. | straints" format="default"/>). Thus, in these scenarios, devices often simply re | |||
sort to dropping such packets unconditionally. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="route-processor-protection" numbered="true" toc="default" | ||||
<section title="Route-Processor Protection" anchor="route-processor-protection"> | > | |||
<t>Most contemporary carrier-grade routers have a fast hardware-assisted forward | <name>Route-Processor Protection</name> | |||
ing plane | <t>Most contemporary carrier-grade routers have a fast hardware-assisted | |||
forwarding plane | ||||
and a loosely coupled control plane, connected together with a link that | and a loosely coupled control plane, connected together with a link that | |||
has much less capacity than the forwarding plane could handle. Traffic | has much less capacity than the forwarding plane could handle. Traffic | |||
differentiation cannot be performed by the control plane, because this would | differentiation cannot be performed by the control plane because this would | |||
overload the internal link connecting the forwarding plane to the control | overload the internal link connecting the forwarding plane to the control | |||
plane. | plane. | |||
</t> | </t> | |||
<t>The Hop-by-Hop Options header has been particularly challenging since | ||||
<t>The Hop-by-Hop Options header has been particularly challenging since in most | , in most circumstances, the corresponding packet is punted to the control plane | |||
circumstances, the corresponding packet is punted to the control plane for proc | for processing. As a result, many operators drop IPv6 packets containing this e | |||
essing. As a result, many operators drop IPv6 packets containing this extension | xtension header <xref target="RFC7872" format="default"/>. <xref target="RFC6192 | |||
header <xref target="RFC7872"/>. <xref target="RFC6192"/> provides advice regard | " format="default"/> provides advice regarding protection of a router's control | |||
ing protection of a router's control plane.</t> | plane.</t> | |||
</section> | </section> | |||
<section anchor="finer-grained" numbered="true" toc="default"> | ||||
<section title="Inability to Perform Fine-grained Filtering" anchor="finer-grain | <name>Inability to Perform Fine-Grained Filtering</name> | |||
ed"> | <t>Some intermediate systems do not have support for fine-grained filter | |||
ing of IPv6 extension headers. For example, an operator that wishes to drop pack | ||||
<t>Some intermediate systems do not have support for fine-grained filtering of I | ets containing RHT0 may only be able to filter on the extension header type (Rou | |||
Pv6 extension headers. For example, an operator that wishes to drop packets cont | ting Header). This could result in an operator enforcing a coarser filtering pol | |||
aining Routing Header Type 0 (RHT0), may only be able to filter on the extension | icy (e.g., "drop all packets containing a Routing Header" vs. "only drop packets | |||
header type (Routing Header). This could result in an operator enforcing a more | that contain a Routing Header Type 0"). | |||
coarse filtering policy (e.g., "drop all packets containing a Routing Header" v | ||||
s. "only drop packets that contain a Routing Header Type 0"). | ||||
</t> | ||||
<!-- | ||||
<t>Some router implementations lack fine-grained filtering of IPv6 extension hea | ||||
ders. For example, an operator may want to drop packets containing Routing Heade | ||||
r Type 0 (RHT0) but may only be able to filter on the extension header type (Rou | ||||
ting Header). As a result, the operator may end up enforcing a more coarse filte | ||||
ring policy (e.g., "drop all packets containing a Routing Header" vs. "only drop | ||||
packets that contain a Routing Header Type 0"). | ||||
</t> | ||||
</section> | ||||
<section title="Security Concerns Associated with IPv6 Extension Headers" anchor | ||||
="security-implications"> | ||||
<t>The security implications of IPv6 Extension Headers generally fall into one o | ||||
r more of these categories: | ||||
<list style="symbols"> | ||||
<t>Evasion of security controls</t> | ||||
<t>DoS due to processing requirements</t> | ||||
<t>DoS due to implementation errors</t> | ||||
<t>Extension Header-specific issues</t> | ||||
</list> | ||||
</t> | </t> | |||
<!-- IPv4 packets that contain limited space for IPv4 options and an "Internet H eader Length" (IHL) field where the upper-layer protocols c --> | ||||
<t>Unlike IPv4 packets where the upper-layer protocol can be trivially found by | </section> | |||
means of the "IHL" ("Internet Header Length") IPv4 header field, the structure o | <section anchor="security-implications" numbered="true" toc="default"> | |||
f IPv6 packets is more flexible and complex. This can represent a challenge for | <name>Security Concerns Associated with IPv6 Extension Headers</name> | |||
devices that need to find this information, since locating upper-layer protocol | <t>The security implications of IPv6 extension headers generally fall in | |||
information requires that all IPv6 extension headers be examined. In turn, this | to one or more of these categories: | |||
presents implementation difficulties, since some packet filtering mechanisms th | ||||
at require upper-layer information (even if just the upper layer protocol type) | ||||
can be trivially circumvented by inserting IPv6 Extension Headers between the ma | ||||
in IPv6 header and the upper layer protocol. <xref target="RFC7113"/> describes | ||||
this issue for the RA-Guard case, but the same techniques could be employed to c | ||||
ircumvent other IPv6 firewall and packet filtering mechanisms. Additionally, im | ||||
plementation inconsistencies in packet forwarding engines can result in evasion | ||||
of security controls <xref target="I-D.kampanakis-6man-ipv6-eh-parsing"/> <xref | ||||
target="Atlasis2014"/> <xref target="BH-EU-2014"/>. | ||||
</t> | </t> | |||
<ul spacing="normal"> | ||||
<li>Evasion of security controls</li> | ||||
<li>DoS due to processing requirements</li> | ||||
<li>DoS due to implementation errors</li> | ||||
<li>Issues specific to the extension header type</li> | ||||
</ul> | ||||
<t>Sometimes packets with IPv6 Extension Headers can impact throughput performan | <t>Unlike IPv4 packets where the upper-layer protocol can be trivially found by | |||
ce on intermediate systems. Unless appropriate mitigations are put in place (e.g | means of the IHL field of the IPv4 header, the structure of IPv6 packets is more | |||
., packet dropping and/or rate-limiting), an attacker could simply send a large | flexible and complex. This can represent a challenge for devices that need to | |||
amount of IPv6 traffic employing IPv6 Extension Headers with the purpose of perf | find this information, since locating upper-layer protocol information requires | |||
orming a Denial of Service (DoS) attack (see <xref target="recirculation"/> and | that all IPv6 extension headers be examined. In turn, this presents implementati | |||
<xref target="operational-implications"/> for further details). | on difficulties, since some packet-filtering mechanisms that require upper-layer | |||
<list style="hanging"> | information (even if just the upper-layer protocol type) can be trivially circu | |||
<t hangText="NOTE:"><vspace blankLines="0"/>In the most trivial case, a packet t | mvented by inserting IPv6 extension headers between the main IPv6 header and the | |||
hat includes a Hop-by-Hop Options header might go through the slow forwarding pa | upper-layer protocol header. <xref target="RFC7113" format="default"/> describe | |||
th, to be processed by the router's CPU. Alternatively, a router configured to e | s this issue for the RA-Guard case, but the same techniques could be employed to | |||
nforce an ACL based on upper-layer information (e.g., upper layer protocol or TC | circumvent other IPv6 firewall and packet-filtering mechanisms. Additionally, | |||
P Destination Port) may need to process the entire IPv6 header chain in order to | implementation inconsistencies in packet-forwarding engines can result in evasio | |||
find the required information, thereby causing the packet to be processed in th | n of security controls <xref target="I-D.kampanakis-6man-ipv6-eh-parsing" format | |||
e slow path <xref target="Cisco-EH-Cons"/>. We note that, for obvious reasons, t | ="default"/> <xref target="Atlasis2014" format="default"/> <xref target="BH-EU-2 | |||
he aforementioned performance issues can affect other devices such as firewalls, | 014" format="default"/>. | |||
Network Intrusion Detection Systems (NIDS), etc. <xref target="Zack-FW-Benchmar | ||||
k"/>. The extent to which performance is affected on these devices is implementa | ||||
tion-dependent. | ||||
</t> | </t> | |||
</list> | <t>Sometimes, packets with IPv6 extension headers can impact throughput performance on intermediate systems. Unless appropriate mitigations are put in p lace (e.g., packet dropping and/or rate limiting), an attacker could simply send a large amount of IPv6 traffic employing IPv6 extension headers with the purpos e of performing a DoS attack (see Sections <xref target="recirculation" format=" counter"/> and <xref target="operational-implications" format="counter"/> for fu rther details). The extent to which performance is affected on these devices is implementation dependent. | |||
</t> | </t> | |||
<t>IPv6 implementations, like all other software, tend to mature with time and w | <aside> | |||
ide-scale deployment. While the IPv6 protocol itself has existed for over 20 yea | <t>NOTE:</t> | |||
rs, serious bugs related to IPv6 Extension Header processing continue to be disc | <t indent="3"> | |||
overed (see e.g., <xref target="Cisco-Frag"/>, <xref target="Microsoft-SA"/>, an | In the most trivial case, a packet that includes a Hop-by-Hop Options header mig | |||
d <xref target="FreeBSD-SA"/>). Because there is currently little operational r | ht go through the slow forwarding path, to be processed by the router's CPU. Alt | |||
eliance on IPv6 Extension headers, the corresponding code paths are rarely exerc | ernatively, a router configured to enforce an ACL based on upper-layer informati | |||
ised, and there is the potential for bugs that still remain to be discovered in | on (e.g., upper-layer protocol type or TCP Destination Port) may need to process | |||
some implementations.</t> | the entire IPv6 header chain in order to find the required information, thereby | |||
causing the packet to be processed in the slow path <xref target="Cisco-EH-Cons | ||||
<t>IPv6 Fragment Headers are employed to allow fragmentation of IPv6 packets. Wh | " format="default"/>. We note that, for obvious reasons, the aforementioned perf | |||
ile many of the security implications of the fragmentation / reassembly mechanis | ormance issues can affect devices such as firewalls, NIDSs, etc. <xref target="Z | |||
m are known from the IPv4 world, several related issues have crept into IPv6 imp | ack-FW-Benchmark" format="default"/>. | |||
lementations. These range from denial of service attacks to information leakage, | ||||
as discussed in <xref target="RFC7739"/>, <xref target="Bonica-NANOG58"/> and < | ||||
xref target="Atlasis2012"/>). | ||||
</t> | </t> | |||
</section> | </aside> | |||
</section> | ||||
<section title="IANA Considerations" anchor="iana-cons"> | <t>IPv6 implementations, like all other software, tend to mature with ti | |||
<t>This document has no IANA actions. | me and wide-scale deployment. While the IPv6 protocol itself has existed for ove | |||
r 20 years, serious bugs related to IPv6 extension header processing continue to | ||||
be discovered (see, e.g., <xref target="Cisco-Frag" format="default"/>, <xref t | ||||
arget="Microsoft-SA" format="default"/>, and <xref target="FreeBSD-SA" format="d | ||||
efault"/>). Because there is currently little operational reliance on IPv6 exte | ||||
nsion headers, the corresponding code paths are rarely exercised, and there is t | ||||
he potential for bugs that still remain to be discovered in some implementations | ||||
.</t> | ||||
<t>The IPv6 Fragment Header is employed for the fragmentation and reasse | ||||
mbly of IPv6 packets. While many of the security implications of the fragmentati | ||||
on/reassembly mechanism are known from the IPv4 world, several related issues ha | ||||
ve crept into IPv6 implementations. These range from DoS attacks to information | ||||
leakages, as discussed in <xref target="RFC7739" format="default"/>, <xref targe | ||||
t="Bonica-NANOG58" format="default"/>, and <xref target="Atlasis2012" format="de | ||||
fault"/>. | ||||
</t> | </t> | |||
</section> | </section> | |||
</section> | ||||
<section title="Security Considerations"> | <section anchor="iana-cons" numbered="true" toc="default"> | |||
<name>IANA Considerations</name> | ||||
<t>The security implications of IPv6 extension headers are discussed in <xref ta | <t>This document has no IANA actions. | |||
rget="security-implications"/>. This document does not introduce any new securi | ||||
ty issues. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Acknowledgements"> | <name>Security Considerations</name> | |||
<t>The authors would like to thank (in alphabetical order) Mikael Abrahamsson, F | <t>The security implications of IPv6 extension headers are discussed in <x | |||
red Baker, Dale W. Carder, Brian Carpenter, Tim Chown, Owen DeLong, Gorry Fairhu | ref target="security-implications" format="default"/>. This document does not i | |||
rst, Guillermo Gont, Tom Herbert, Lee Howard, Tom Petch, Sander Steffann, Eduard | ntroduce any new security issues. | |||
Vasilenko, Eric Vyncke, Rob Wilton, Jingrong Xie, and Andrew Yourtchenko, for p | </t> | |||
roviding valuable comments on earlier versions of this document. </t> | ||||
<t>Fernando Gont would like to thank Jan Zorz / Go6 Lab <https://go6lab.si/&g | ||||
t;, Jared Mauch, and Sander Steffann <https://steffann.nl/>, for providing | ||||
access to systems and networks that were employed to perform experiments and me | ||||
asurements involving packets with IPv6 Extension Headers.</t> | ||||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<displayreference target="I-D.ietf-opsec-ipv6-eh-filtering" to="IPV6-EH"/> | ||||
<displayreference target="I-D.kampanakis-6man-ipv6-eh-parsing" to="PARSING"/> | ||||
<displayreference target="I-D.taylor-v6ops-fragdrop" to="OPERATORS"/> | ||||
<displayreference target="I-D.wkumari-long-headers" to="HEADERS"/> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include | ||||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6946.xml"/> | ||||
<references title='Normative References'> | <xi:include | |||
<?rfc include="reference.RFC.6946" ?> | href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5095.xml"/> | |||
<?rfc include="reference.RFC.5095" ?> | ||||
<?rfc include="reference.RFC.5722" ?> | ||||
<?rfc include="reference.RFC.7112" ?> | ||||
<?rfc include="reference.RFC.8021" ?> | ||||
<?rfc include="reference.RFC.8200" ?> | ||||
<?rfc include="reference.RFC.8504" ?> | ||||
<?rfc include="reference.RFC.6980" ?> | ||||
</references> | ||||
<references title='Informative References'> | ||||
<?rfc include="reference.RFC.2460" ?> | ||||
<?rfc include="reference.RFC.5635" ?> | ||||
<?rfc include="reference.RFC.6192" ?> | ||||
<?rfc include="reference.RFC.6437" ?> | ||||
<?rfc include="reference.RFC.6438" ?> | ||||
<?rfc include="reference.RFC.7098" ?> | ||||
<?rfc include="reference.RFC.7045" ?> | <xi:include | |||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5722.xml"/> | ||||
<xi:include | ||||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7112.xml"/> | ||||
<xi:include | ||||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8021.xml"/> | ||||
<?rfc include="reference.RFC.7113" ?> | <xi:include | |||
<?rfc include="reference.I-D.taylor-v6ops-fragdrop" ?> | href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml"/> | |||
<?rfc include="reference.I-D.wkumari-long-headers" ?> | <xi:include | |||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8504.xml"/> | ||||
<xi:include | ||||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6980.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<?rfc include="reference.I-D.kampanakis-6man-ipv6-eh-parsing" ?> | <xi:include | |||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2460.xml"/> | ||||
<xi:include | ||||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5635.xml"/> | ||||
<xi:include | ||||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6192.xml"/> | ||||
<xi:include | ||||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6437.xml"/> | ||||
<?rfc include="reference.RFC.7739" ?> | <xi:include | |||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6438.xml"/> | ||||
<xi:include | ||||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7098.xml"/> | ||||
<xi:include | ||||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7045.xml"/> | ||||
<xi:include | ||||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7113.xml"/> | ||||
<xi:include | ||||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7739.xml"/> | ||||
<xi:include | ||||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7872.xml"/> | ||||
<?rfc include="reference.RFC.7872" ?> | <xi:include | |||
<?rfc include="reference.I-D.ietf-opsec-ipv6-eh-filtering" ?> | href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8900.xml"/> | |||
<?rfc include="reference.RFC.8900" ?> | <xi:include | |||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8955.xml"/> | ||||
<xi:include | ||||
href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8956.xml"/> | ||||
<?rfc include="reference.RFC.8955" ?> | <reference anchor='I-D.ietf-opsec-ipv6-eh-filtering'> | |||
<?rfc include="reference.RFC.8956" ?> | <front> | |||
<title>Recommendations on the Filtering of IPv6 Packets Containing IPv6 Extensio | ||||
n Headers at Transit Routers</title> | ||||
<author initials='F' surname='Gont' fullname='Fernando Gont'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='W' surname='Liu' fullname='Will Liu'> | ||||
<organization /> | ||||
</author> | ||||
<date year='2021' month='June' day='3' /> | ||||
</front> | ||||
<seriesInfo name='Internet-Draft' value='draft-ietf-opsec-ipv6-eh-filtering-08'/ | ||||
> | ||||
<format type='TXT' target='https://www.ietf.org/internet-drafts/draft-ietf-opsec | ||||
-ipv6-eh-filtering-08.txt'/> | ||||
</reference> | ||||
<reference anchor="Atlasis2014" target="http://www.insinuator.net/2014/05/a- | <reference anchor='I-D.taylor-v6ops-fragdrop'> | |||
novel-way-of-abusing-ipv6-extension-headers-to-evade-ipv6-security-devices/"> | <front> | |||
<front> | <title>Why Operators Filter Fragments and What It Implies</title> | |||
<title>A Novel Way of Abusing IPv6 Extension Headers to Evade IPv6 Security De | ||||
vices</title> | ||||
<author initials="A.A." surname="Atlasis" fullname="Antonios Atlasis"> | ||||
<organization></organization> | ||||
</author> | ||||
<date month="May" year="2014"/> | ||||
</front> | ||||
</reference> | <author initials='J' surname='Jaeggli' fullname='Joel Jaeggli'> | |||
<organization /> | ||||
</author> | ||||
<reference anchor="nmap" target="https://nmap.org/book/man-bypass-firewalls- | <author initials='L' surname='Colitti' fullname='Lorenzo Colitti'> | |||
ids.html"> | <organization /> | |||
<front> | </author> | |||
<title>Dealing with IPv6 fragmentation in the DNS</title> | ||||
<author fullname="Fyodor" initials="" surname="Fyodor"> | ||||
</author> | <author initials='W' surname='Kumari' fullname='Warren Kumari'> | |||
<date/> | <organization /> | |||
</front> | </author> | |||
<seriesInfo name="" value="Firewall/IDS Evasion and Spoofing"/> | ||||
</reference> | ||||
<reference anchor="Huston-2017" target="https://blog.apnic.net/2017/08/22/de | <author initials='E' surname='Vyncke' fullname='Eric Vyncke'> | |||
aling-ipv6-fragmentation-dns/"> | <organization /> | |||
<front> | </author> | |||
<title>Dealing with IPv6 fragmentation in the DNS</title> | ||||
<author fullname="Geoff Huston" initials="G." surname="Huston"> | ||||
<organization abbrev="APNIC"/> | ||||
<address> | <author initials='M' surname='Kaeo' fullname='Merike Kaeo'> | |||
<email>gih@apnic.net</email> | <organization /> | |||
<uri>http://www.apnic.net</uri> | </author> | |||
</address> | ||||
</author> | ||||
<date year="2017"/> | ||||
</front> | ||||
<seriesInfo name="" value="APNIC Blog"/> | ||||
</reference> | ||||
<reference anchor="Huston-2020" target="https://www.cmand.org/workshops/2020 | <author initials='T' surname='Taylor' fullname='Tom Taylor' role="editor"> | |||
06-v6/slides/2020-06-16-xtn-hdrs.pdf"> | <organization /> | |||
<front> | </author> | |||
<title>Measurement of IPv6 Extension Header Support</title> | ||||
<author fullname="Geoff Huston" initials="G." surname="Huston"> | ||||
<organization abbrev="APNIC"/> | ||||
<address> | <date month='December' day='3' year='2013' /> | |||
<email>gih@apnic.net</email> | </front> | |||
<uri>http://www.apnic.net</uri> | ||||
</address> | ||||
</author> | ||||
<date year="2020"/> | ||||
</front> | ||||
<seriesInfo name="" value="NPS/CAIDA 2020 Virtual IPv6 Workshop"/ | ||||
> | ||||
</reference> | ||||
<reference anchor="Jaeggli-2018" target="https://blog.apnic.net/2018/01/11/i | <seriesInfo name='Internet-Draft' value='draft-taylor-v6ops-fragdrop-02' /> | |||
pv6-flow-label-misuse-hashing/"> | <format type='TXT' | |||
<front> | target='http://www.ietf.org/internet-drafts/draft-taylor-v6ops-fragdrop- | |||
<title>IPv6 flow label: misuse in hashing</title> | 02.txt' /> | |||
<author fullname="Joel Jaeggli" initials="J." surname="Jaeggli"> | </reference> | |||
</author> | ||||
<date year="2018"/> | ||||
</front> | ||||
<seriesInfo name="" value="APNIC Blog"/> | ||||
</reference> | ||||
<reference anchor="Cunha-2020" target="https://www.cmand.org/workshops/20200 | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.wkumari | |||
6-v6/slides/cunha.pdf"> | -long-headers.xml"/> | |||
<front> | ||||
<title>IPv4 vs IPv6 load balancing in Internet routes</title> | ||||
<author fullname="Italo Cunha" initials="I." surname="Cunha"> | ||||
<organization abbrev="UFMG"/> | ||||
</author> | <reference anchor='I-D.kampanakis-6man-ipv6-eh-parsing'> | |||
<front> | ||||
<title>Implementation Guidelines for Parsing IPv6 Extension Headers</title> | ||||
<author initials='P' surname='Kampanakis' fullname='Panos Kampanakis'> | ||||
<organization /> | ||||
</author> | ||||
<date month='August' day='5' year='2014' /> | ||||
</front> | ||||
<seriesInfo name='Internet-Draft' value='draft-kampanakis-6man-ipv6-eh-parsing-0 | ||||
1' /> | ||||
<format type='TXT' | ||||
target='http://www.ietf.org/internet-drafts/draft-kampanakis-6man-ipv6-e | ||||
h-parsing-01.txt' /> | ||||
</reference> | ||||
<date year="2020"/> | <reference anchor="Atlasis2014" target="http://www.insinuator.net/2014/0 | |||
</front> | 5/a-novel-way-of-abusing-ipv6-extension-headers-to-evade-ipv6-security-devices/" | |||
<seriesInfo name="" value="NPS/CAIDA 2020 Virtual IPv6 Workshop"/ | > | |||
> | <front> | |||
</reference> | <title>A Novel Way of Abusing IPv6 Extension Headers to Evade IPv6 S | |||
ecurity Devices</title> | ||||
<author initials="A." surname="Atlasis" fullname="Antonios Atlasis"> | ||||
<organization/> | ||||
</author> | ||||
<date month="May" year="2014"/> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="BH-EU-2014" target="https://www.ernw.de/download/eu-14-At | <reference anchor="nmap" target="https://nmap.org/book/man-bypass-firewa | |||
lasis-Rey-Schaefer-briefings-Evasion-of-HighEnd-IPS-Devices-wp.pdf"> | lls-ids.html"> | |||
<front> | <front> | |||
<title>Evasion of High-End IDPS Devices at the IPv6 Era</title> | <title>Firewall/IDS Evasion and Spoofing</title> | |||
<author initials="A.a." surname="Atlasis" fullname="Antonios Atlasis"> | <author fullname="Gordon 'Fyodor' Lyon" initials="G." surname="Lyon" | |||
<organization></organization> | > | |||
</author> | </author> | |||
<author initials="E.R." surname="Rey" fullname="Enno Rey"> | <date/> | |||
<organization></organization> | </front> | |||
</author> | <refcontent>Chapter 15. Nmap Reference Guide</refcontent> | |||
<author initials="R.S." surname="Schaefer" fullname="Rafael Schaefer"> | </reference> | |||
<organization></organization> | ||||
</author> | ||||
<date year="2014"/> | <reference anchor="Huston-2017" target="https://blog.apnic.net/2017/08/2 | |||
</front> | 2/dealing-ipv6-fragmentation-dns/"> | |||
<seriesInfo name="" value="BlackHat Europe 2014"/> | <front> | |||
</reference> | <title>Dealing with IPv6 fragmentation in the DNS</title> | |||
<author fullname="Geoff Huston" initials="G." surname="Huston"> | ||||
<organization abbrev="APNIC"/> | ||||
</author> | ||||
<date year="2017" month="August"/> | ||||
</front> | ||||
<refcontent>APNIC Blog</refcontent> | ||||
</reference> | ||||
<reference anchor="Atlasis2012" target="https://media.blackhat.com/bh-eu-12/ | <reference anchor="Huston-2020" target="https://www.cmand.org/workshops/ | |||
Atlasis/bh-eu-12-Atlasis-Attacking_IPv6-Slides.pdf"> | 202006-v6/slides/2020-06-16-xtn-hdrs.pdf"> | |||
<front> | <front> | |||
<title>Attacking IPv6 Implementation Using Fragmentation</title> | <title>Measurement of IPv6 Extension Header Support</title> | |||
<author initials="A.A." surname="Atlasis" fullname="Antonios Atlasis"> | <author fullname="Geoff Huston" initials="G." surname="Huston"> | |||
<organization></organization> | <organization abbrev="APNIC"/> | |||
</author> | </author> | |||
<date year=""/> | <date year="2020" month="June"/> | |||
</front> | </front> | |||
<seriesInfo name="" value="BlackHat Europe 2012. Amsterdam, Nethe | <refcontent>NPS/CAIDA 2020 Virtual IPv6 Workshop</refcontent> | |||
rlands. March 14-16, 2012"/> | </reference> | |||
</reference> | ||||
<reference anchor="Linkova-Gont-IEPG90" target="http://www.iepg.org/2014-07- | <reference anchor="Jaeggli-2018" target="https://blog.apnic.net/2018/01/ | |||
20-ietf90/iepg-ietf90-ipv6-ehs-in-the-real-world-v2.0.pdf"> | 11/ipv6-flow-label-misuse-hashing/"> | |||
<front> | <front> | |||
<title>IPv6 Extension Headers in the Real World v2.0</title> | <title>IPv6 flow label: misuse in hashing</title> | |||
<author initials="J." surname="Linkova" fullname="Jen Linkova"> | <author fullname="Joel Jaeggli" initials="J." surname="Jaeggli"> | |||
<organization></organization> | </author> | |||
</author> | <date year="2018" month="January"/> | |||
<author initials="F." surname="Gont" fullname="Fernando Gont"> | </front> | |||
<organization></organization> | <refcontent>APNIC Blog</refcontent> | |||
</author> | </reference> | |||
<date year=""/> | <reference anchor="Almeida-2020" target="https://homepages.dcc.ufmg.br/~ | |||
</front> | cunha/papers/almeida20infocom-mca.pdf"> | |||
<seriesInfo name="" value="IEPG 90. Toronto, ON, Canada. July 20, | <front> | |||
2014"/> | <title>Classification of Load Balancing in the Internet</title> | |||
</reference> | ||||
<reference anchor="IEPG94-Scudder" target="http://www.iepg.org/2015-11-01-ie | <author fullname="Rafael Almeida" initials="R." surname="Almeida"> | |||
tf94/IEPG-RouterArchitecture-jgs.pdf"> | <organization abbrev="UFMG"/> | |||
<front> | </author> | |||
<title>Modern Router Architecture for Protocol Designers</title> | ||||
<author initials="B." surname="Petersen" fullname="Brian Petersen"> | ||||
<organization>Juniper Networks</organization> | ||||
</author> | ||||
<author initials="J." surname="Scudder" fullname="John Scudder"> | ||||
<organization>Juniper Networks</organization> | ||||
</author> | ||||
<date year=""/> | <author fullname="Italo Cunha" initials="I." surname="Cunha"> | |||
</front> | <organization abbrev="UFMG"/> | |||
<seriesInfo name="" value="IEPG 94. Yokohama, Japan. November 1, | </author> | |||
2015"/> | ||||
</reference> | ||||
<reference anchor="APNIC-Scudder" target="https://blog.apnic.net/2020/06/04/ | <author fullname="Renata Teixeira" initials="R" surname="Teixeira"> | |||
modern-router-architecture-and-ipv6/"> | <organization abbrev="INRIA"/> | |||
<front> | </author> | |||
<title>Modern router architecture and IPv6</title> | ||||
<author initials="J." surname="Scudder" fullname="John Scudder"> | <author fullname="Darryl Veitch" initials="D." surname="Veitch"> | |||
<organization>Juniper Networks</organization> | <organization abbrev="UTS"/> | |||
</author> | </author> | |||
<date year=""/> | <author fullname="Christophe Diot" initials="C." surname="Diot"> | |||
</front> | <organization abbrev="Google"/> | |||
<seriesInfo name="" value="APNIC Blog, June 4, 2020"/> | </author> | |||
</reference> | ||||
<reference anchor="Bonica-NANOG58" target="https://www.nanog.org/sites/defau | <date year="2020" month="July"/> | |||
lt/files/mon.general.fragmentation.bonica.pdf"> | </front> | |||
<front> | <refcontent>IEEE INFOCOM 2020</refcontent> | |||
<title>IPV6 FRAGMENTATION: The Case For Deprecation</title> | <seriesInfo name="DOI" value="10.1109/INFOCOM41043.2020.9155387"/> | |||
<author initials="R." surname="Bonica" fullname="Ron Bonica"> | </reference> | |||
<organization></organization> | ||||
</author> | ||||
<date year=""/> | <reference anchor="BH-EU-2014" target="https://www.ernw.de/download/eu-1 | |||
</front> | 4-Atlasis-Rey-Schaefer-briefings-Evasion-of-HighEnd-IPS-Devices-wp.pdf"> | |||
<seriesInfo name="" value="NANOG 58. New Orleans, Louisiana, USA. | <front> | |||
June 3-5, 2013"/> | <title>Evasion of High-End IDPS Devices at the IPv6 Era</title> | |||
</reference> | <author initials="A." surname="Atlasis" fullname="Antonios Atlasis"> | |||
<organization/> | ||||
</author> | ||||
<author initials="E." surname="Rey" fullname="Enno Rey"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="R." surname="Schaefer" fullname="Rafael Schaefer"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2014"/> | ||||
</front> | ||||
<refcontent>Black Hat Europe 2014</refcontent> | ||||
</reference> | ||||
<reference anchor="Cisco-Frag" target="http://tools.cisco.com/security/cente | <reference anchor="Atlasis2012" target="https://void.gr/kargig/ipv6/bh-e | |||
r/content/CiscoSecurityAdvisory/cisco-sa-20150611-iosxr"> | u-12-Atlasis-Attacking_IPv6-Slides.pdf"> | |||
<front> | <front> | |||
<title>Cisco IOS XR Software Crafted IPv6 Packet Denial of Service Vulnerabili | <title>Attacking IPv6 Implementation Using Fragmentation</title> | |||
ty</title> | <author initials="A." surname="Atlasis" fullname="Antonios Atlasis"> | |||
<author> | <organization/> | |||
<organization>Cisco</organization> | </author> | |||
</author> | <date month="March" year="2012"/> | |||
<date month="June" year="2015"/> | </front> | |||
</front> | <refcontent>Black Hat Europe 2012</refcontent> | |||
</reference> | ||||
</reference> | <reference anchor="Linkova-Gont-IEPG90" target="http://www.iepg.org/2014 | |||
-07-20-ietf90/iepg-ietf90-ipv6-ehs-in-the-real-world-v2.0.pdf"> | ||||
<front> | ||||
<title>IPv6 Extension Headers in the Real World v2.0</title> | ||||
<author initials="J." surname="Linkova" fullname="Jen Linkova"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="F." surname="Gont" fullname="Fernando Gont"> | ||||
<organization/> | ||||
</author> | ||||
<date year="2014" month="July"/> | ||||
</front> | ||||
<refcontent>IEPG 90</refcontent> | ||||
</reference> | ||||
<reference anchor="FreeBSD-SA" target="https://www.freebsd.org/security/advi | <reference anchor="IEPG94-Scudder" target="http://www.iepg.org/2015-11-0 | |||
sories/FreeBSD-SA-20:24.ipv6.asc"> | 1-ietf94/IEPG-RouterArchitecture-jgs.pdf"> | |||
<front> | <front> | |||
<title>FreeBSD Security Advisory FreeBSD-SA-20:24.ipv6: IPv6 Hop-by-Hop option | <title>Modern Router Architecture for Protocol Designers</title> | |||
s use-after-free bug</title> | <author initials="B." surname="Petersen" fullname="Brian Petersen"> | |||
<author> | <organization>Juniper Networks</organization> | |||
<organization>FreeBSD</organization> | </author> | |||
</author> | <author initials="J." surname="Scudder" fullname="John Scudder"> | |||
<date day="2" month="September" year="2020"/> | <organization>Juniper Networks</organization> | |||
</front> | </author> | |||
<date year="2015" month="November"/> | ||||
</front> | ||||
<refcontent>IEPG 94</refcontent> | ||||
</reference> | ||||
</reference> | <reference anchor="APNIC-Scudder" target="https://blog.apnic.net/2020/06 | |||
/04/modern-router-architecture-and-ipv6/"> | ||||
<front> | ||||
<title>Modern router architecture and IPv6</title> | ||||
<author initials="J." surname="Scudder" fullname="John Scudder"> | ||||
<organization>Juniper Networks</organization> | ||||
</author> | ||||
<date year="2020" month="June"/> | ||||
</front> | ||||
<refcontent>APNIC Blog</refcontent> | ||||
</reference> | ||||
<reference anchor="Microsoft-SA" target="https://msrc.microsoft.com/update-g | <reference anchor="Bonica-NANOG58" target="https://www.nanog.org/sites/d | |||
uide/vulnerability/CVE-2021-24094"> | efault/files/mon.general.fragmentation.bonica.pdf"> | |||
<front> | <front> | |||
<title>Windows TCP/IP Remote Code Execution Vulnerability (CVE-2021-24094)</ti | <title>IPv6 Fragmentation: The Case For Deprecation</title> | |||
tle> | <author initials="R." surname="Bonica" fullname="Ron Bonica"> | |||
<author> | <organization/> | |||
<organization>Microsoft</organization> | </author> | |||
</author> | <date year="2013" month="June"/> | |||
<date day="9" month="February" year="2021"/> | </front> | |||
</front> | <refcontent>NANOG 58</refcontent> | |||
</reference> | ||||
</reference> | <reference anchor="Cisco-Frag" target="http://tools.cisco.com/security/c | |||
enter/content/CiscoSecurityAdvisory/cisco-sa-20150611-iosxr"> | ||||
<front> | ||||
<title>Cisco IOS XR Software Crafted IPv6 Packet Denial of Service V | ||||
ulnerability</title> | ||||
<author> | ||||
<organization>Cisco</organization> | ||||
</author> | ||||
<date month="June" year="2015"/> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="Cisco-EH-Cons" target="http://www.cisco.com/en/US/technol | <reference anchor="FreeBSD-SA" target="https://www.freebsd.org/security/ | |||
ogies/tk648/tk872/technologies_white_paper0900aecd8054d37d.pdf"> | advisories/FreeBSD-SA-20:24.ipv6.asc"> | |||
<front> | <front> | |||
<title>IPv6 Extension Headers Review and Considerations</title> | <title>IPv6 Hop-by-Hop options use-after-free bug</title> | |||
<author> | <author> | |||
<organization>Cisco</organization> | <organization>The FreeBSD Project</organization> | |||
</author> | </author> | |||
<date month="October" year="2006"/> | <date month="September" year="2020"/> | |||
</front> | </front> | |||
</reference> | ||||
</reference> | <reference anchor="Microsoft-SA" target="https://msrc.microsoft.com/upda | |||
te-guide/vulnerability/CVE-2021-24094"> | ||||
<front> | ||||
<title>Windows TCP/IP Remote Code Execution Vulnerability</title> | ||||
<author> | ||||
<organization>Microsoft</organization> | ||||
</author> | ||||
<date month="February" year="2021"/> | ||||
</front> | ||||
<refcontent>CVE-2021-24094</refcontent> | ||||
</reference> | ||||
<reference anchor="Zack-FW-Benchmark" target="https://www.ipv6hackers.org/fi | <reference anchor="Cisco-EH-Cons" target="http://www.cisco.com/en/US/tec | |||
les/meetings/ipv6-hackers-1/zack-ipv6hackers1-firewall-security-assessment-and-b | hnologies/tk648/tk872/technologies_white_paper0900aecd8054d37d.pdf"> | |||
enchmarking.pdf"> | <front> | |||
<front> | <title>IPv6 Extension Headers Review and Considerations</title> | |||
<title abbrev="Firewall Benchmarking">Firewall Security Assessment and Benchma | <author> | |||
rking IPv6 Firewall Load Tests</title> | <organization>Cisco</organization> | |||
<author initials="E." surname="Zack" fullname="Eldad Zack"> | </author> | |||
</author> | <date month="October" year="2006"/> | |||
<date year=""/> | </front> | |||
</front> | </reference> | |||
<seriesInfo name="" value="IPv6 Hackers Meeting #1, Berlin, Germa | ||||
ny. June 30, 2013"/> | ||||
<!-- July 27 - August 1 --> | ||||
</reference> | ||||
<reference anchor="PMTUD-Blackholes" target="http://www.nlnetlabs.nl/downloa | <reference anchor="Zack-FW-Benchmark" target="https://www.ipv6hackers.or | |||
ds/publications/pmtu-black-holes-msc-thesis.pdf"> | g/files/meetings/ipv6-hackers-1/zack-ipv6hackers1-firewall-security-assessment-a | |||
<front> | nd-benchmarking.pdf"> | |||
<title>Discovering Path MTU black holes on the Internet using RIPE Atlas</titl | <front> | |||
e> | <title abbrev="Firewall Benchmarking">Firewall Security Assessment a | |||
<author initials="M." surname="De Boer" fullname="Maikel De Boer"> | nd Benchmarking IPv6 Firewall Load Tests</title> | |||
<organization></organization> | <author initials="E." surname="Zack" fullname="Eldad Zack"> | |||
</author> | ||||
<author initials="J." surname="Bosma" fullname="Jeffrey Bosma"> | ||||
<organization></organization> | ||||
</author> | </author> | |||
<date month="July" year="2012"/> | <date year="2013" month="June"/> | |||
</front> | </front> | |||
<refcontent>IPv6 Hackers Meeting #1</refcontent> | ||||
</reference> | </reference> | |||
</references> | <reference anchor="PMTUD-Blackholes" target="http://www.nlnetlabs.nl/dow | |||
nloads/publications/pmtu-black-holes-msc-thesis.pdf"> | ||||
<front> | ||||
<title>Discovering Path MTU black holes on the Internet using RIPE A | ||||
tlas</title> | ||||
<author initials="M." surname="De Boer" fullname="Maikel De Boer"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="J." surname="Bosma" fullname="Jeffrey Bosma"> | ||||
<organization/> | ||||
</author> | ||||
<date month="July" year="2012"/> | ||||
</front> | ||||
<refcontent>University of Amsterdam, MSc. Systems & Network Engineer | ||||
ing</refcontent> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section numbered="false" toc="default"> | ||||
<name>Acknowledgements</name> | ||||
<t>The authors would like to thank (in alphabetical order) <contact fullna | ||||
me="Mikael Abrahamsson"/>, <contact fullname="Fred Baker"/>, <contact fullname=" | ||||
Dale W. Carder"/>, <contact fullname="Brian Carpenter"/>, <contact fullname="Tim | ||||
Chown"/>, <contact fullname="Owen DeLong"/>, <contact fullname="Gorry Fairhurst | ||||
"/>, <contact fullname="Guillermo Gont"/>, <contact fullname="Tom Herbert"/>, <c | ||||
ontact fullname="Lee Howard"/>, <contact fullname="Tom Petch"/>, <contact fullna | ||||
me="Sander Steffann"/>, <contact fullname="Eduard Vasilenko"/>, <contact fullnam | ||||
e="Éric Vyncke"/>, <contact fullname="Rob Wilton"/>, <contact fullname="Jingrong | ||||
Xie"/>, and <contact fullname="Andrew Yourtchenko"/> for providing valuable com | ||||
ments on earlier draft versions of this document. </t> | ||||
<t><contact fullname="Fernando Gont"/> would like to thank <contact fullna | ||||
me="Jan Zorz"/> / Go6 Lab <eref brackets="angle" target="https://go6lab.si/"/>, | ||||
<contact fullname="Jared Mauch"/>, and <contact fullname="Sander Steffann"/> <er | ||||
ef brackets="angle" target="https://steffann.nl/"/> for providing access to syst | ||||
ems and networks that were employed to perform experiments and measurements invo | ||||
lving packets with IPv6 extension headers.</t> | ||||
</section> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 139 change blocks. | ||||
820 lines changed or deleted | 865 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/ |