| < draft-ietf-v6ops-ipv6-ehs-packet-drops-00.txt | draft-ietf-v6ops-ipv6-ehs-packet-drops-01.txt > | |||
|---|---|---|---|---|
| IPv6 Operations Working Group (v6ops) F. Gont | IPv6 Operations Working Group (v6ops) F. Gont | |||
| Internet-Draft SI6 Networks | Internet-Draft SI6 Networks | |||
| Intended status: Informational N. Hilliard | Intended status: Informational N. Hilliard | |||
| Expires: February 1, 2021 INEX | Expires: April 17, 2021 INEX | |||
| G. Doering | G. Doering | |||
| SpaceNet AG | SpaceNet AG | |||
| W. Kumari | W. Kumari | |||
| G. Huston | G. Huston | |||
| APNIC | APNIC | |||
| W. Liu | W. Liu | |||
| Huawei Technologies | Huawei Technologies | |||
| July 31, 2020 | October 14, 2020 | |||
| Operational Implications of IPv6 Packets with Extension Headers | Operational Implications of IPv6 Packets with Extension Headers | |||
| draft-ietf-v6ops-ipv6-ehs-packet-drops-00 | draft-ietf-v6ops-ipv6-ehs-packet-drops-01 | |||
| Abstract | Abstract | |||
| This document summarizes the operational implications of IPv6 | This document summarizes the operational implications of IPv6 | |||
| extension headers, and attempts to analyze reasons why packets with | extension headers, and attempts to analyze reasons why packets with | |||
| IPv6 extension headers may be dropped in the public Internet. | IPv6 extension headers may be dropped in the public Internet. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| skipping to change at page 1, line 41 ¶ | skipping to change at page 1, line 41 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on February 1, 2021. | This Internet-Draft will expire on April 17, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Previous Work on IPv6 Extension Headers . . . . . . . . . . . 3 | 3. Background Information . . . . . . . . . . . . . . . . . . . 3 | |||
| 4. Packet Forwarding Engine Constraints . . . . . . . . . . . . 5 | 4. Previous Work on IPv6 Extension Headers . . . . . . . . . . . 5 | |||
| 5. Requirement to Process Layer-3/layer-4 information in | 5. Packet Forwarding Engine Constraints . . . . . . . . . . . . 7 | |||
| Intermediate Systems . . . . . . . . . . . . . . . . . . . . 6 | 5.1. Recirculation . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5.1. ECMP and Hash-based Load-Sharing . . . . . . . . . . . . 6 | 6. Requirement to Process Layer-3/layer-4 information in | |||
| 5.2. Enforcing infrastructure ACLs . . . . . . . . . . . . . . 7 | Intermediate Systems . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5.3. DDoS Management and Customer Requests for Filtering . . . 7 | 6.1. ECMP and Hash-based Load-Sharing . . . . . . . . . . . . 8 | |||
| 6. Operational Implications . . . . . . . . . . . . . . . . . . 8 | 6.2. Enforcing infrastructure ACLs . . . . . . . . . . . . . . 9 | |||
| 6.1. Inability to Find Layer-4 Information . . . . . . . . . . 8 | 6.3. DDoS Management and Customer Requests for Filtering . . . 9 | |||
| 6.2. Route-Processor Protection . . . . . . . . . . . . . . . 8 | 6.4. Network Intrusion Detection and Prevention . . . . . . . 10 | |||
| 6.3. Inability to Perform Fine-grained Filtering . . . . . . . 8 | 6.5. Firewalling . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 6.4. Security Concerns Associated with IPv6 Extension Headers 8 | 7. Operational Implications . . . . . . . . . . . . . . . . . . 11 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 7.1. Inability to Find Layer-4 Information . . . . . . . . . . 11 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | 7.2. Route-Processor Protection . . . . . . . . . . . . . . . 11 | |||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | 7.3. Inability to Perform Fine-grained Filtering . . . . . . . 12 | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 7.4. Security Concerns Associated with IPv6 Extension Headers 12 | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 10 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 10.2. Informative References . . . . . . . . . . . . . . . . . 11 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | ||||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 14 | ||||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 15 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 | ||||
| 1. Introduction | 1. Introduction | |||
| IPv6 Extension Headers (EHs) allow for the extension of the IPv6 | IPv6 Extension Headers (EHs) allow for the extension of the IPv6 | |||
| protocol, and provide support for core functionality such as IPv6 | protocol, and provide support for core functionality such as IPv6 | |||
| fragmentation. However, common implementation limitations suggest | fragmentation. However, common implementation limitations suggest | |||
| that EHs present a challenge for IPv6 packet routing equipment and | that EHs present a challenge for IPv6 packet routing equipment and | |||
| middle-boxes, and evidence exists that IPv6 packets with EHs may be | middle-boxes, and evidence exists that IPv6 packets with EHs may be | |||
| intentionally dropped in the public Internet in some network | intentionally dropped in the public Internet in some network | |||
| deployments. | deployments. | |||
| skipping to change at page 3, line 19 ¶ | skipping to change at page 3, line 22 ¶ | |||
| intentionally drop packets containing IPv6 Extension Headers. | intentionally drop packets containing IPv6 Extension Headers. | |||
| o Highlight areas where current IPv6 support by networking devices | o Highlight areas where current IPv6 support by networking devices | |||
| maybe sub-optimal, such that the aforementioned support is | maybe sub-optimal, such that the aforementioned support is | |||
| improved. | improved. | |||
| o Highlight operational issues associated with IPv6 extension | o Highlight operational issues associated with IPv6 extension | |||
| headers, such that those issues are considered in IETF | headers, such that those issues are considered in IETF | |||
| standardization efforts. | standardization efforts. | |||
| Section 3 of this document summarizes the previous work that has been | Section 3 provides background information about the IPv6 packet | |||
| carried out in the area of IPv6 extension headers. Section 4 | structure and associated implications. Section 4 of this document | |||
| discuses packet forwarding engine constraints in modern routers. | summarizes the previous work that has been carried out in the area of | |||
| Section 5 discusses why modern routers and middle-boxes may need to | IPv6 extension headers. Section 5 discusses packet forwarding engine | |||
| access Layer-4 information to make a forwarding decision. Finally, | constraints in contemporary routers. Section 6 discusses why | |||
| Section 6 discusses the operational implications of IPv6 EHs. | contemporary routers and middle-boxes may need to access Layer-4 | |||
| information to make a forwarding decision. Finally, Section 7 | ||||
| discusses the operational implications of IPv6 EHs. | ||||
| 2. Disclaimer | 2. Disclaimer | |||
| This document analyzes the operational challenges represented by | This document analyzes the operational challenges represented by | |||
| packets that employ IPv6 Extension Headers, and documents some of the | packets that employ IPv6 Extension Headers, and documents some of the | |||
| operational reasons for which these packets may be dropped in the | operational reasons why these packets may be dropped in the public | |||
| public Internet. This document IS NOT a recommendation to drop such | Internet. This document is not a recommendation to drop such | |||
| packets, but rather an analysis of why they are dropped. | packets, but rather an analysis of why they are dropped. | |||
| 3. Previous Work on IPv6 Extension Headers | 3. Background Information | |||
| 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. | ||||
| IPv4 packets have a variable-length header size, that allows for the | ||||
| use of IPv4 "options" -- optional information that may be of use by | ||||
| nodes processing IPv4 packets. The IPv4 header length is specified | ||||
| in the IHL header field of the mandatory IPv4 header, and must be in | ||||
| the range from 20 octets (the minimum IPv4 header size) to 60 octets | ||||
| (accommodating at most 40 octets of options). The upper-layer | ||||
| protocol type is specified via the "Protocol" field of the mandatory | ||||
| IPv4 header. | ||||
| Protocol, IHL | ||||
| +--------+ | ||||
| | | | ||||
| | v | ||||
| +------//-----+------------------------+ | ||||
| | | | | ||||
| | IPv4 | Upper-Layer | | ||||
| | Header | Protocol | | ||||
| | | | | ||||
| +-----//------+------------------------+ | ||||
| variable length | ||||
| <-------------> | ||||
| Figure 1: IPv4 Packet Structure | ||||
| IPv6 took a different approach to the IPv6 packet structure. Rather | ||||
| than employing a variable-length header as IPv4 does, IPv6 employs a | ||||
| linked-list-like packet structure, where a mandatory fixed-length | ||||
| IPv6 header is followed by an arbitrary number of optional extension | ||||
| headers, with the upper-layer header being the last header in the | ||||
| IPv6 header chain. Each extension header typically specifies its | ||||
| length (unless it is implicit from the extension header type), and | ||||
| the "next header" type that follows in the IPv6 IPv6 header chain. | ||||
| NH NH, EH-length NH, EH-length | ||||
| +-------+ +------+ +-------+ | ||||
| | | | | | | | ||||
| | v | v | v | ||||
| +-------------+-------------+-//-+---------------+--------------+ | ||||
| | | | | | | | ||||
| | IPv6 | Ext. | | Ext. | Upper-Layer | | ||||
| | header | Header | | Header | Protocol | | ||||
| | | | | | | | ||||
| +-------------+-------------+-//-+---------------+--------------+ | ||||
| fixed length variable number of EHs & length | ||||
| <------------> <--------------------------------> | ||||
| Figure 2: IPv6 Packet Structure | ||||
| This packet structure has the following implications: | ||||
| o [RFC8200] requires the entire IPv6 header chain to be contained in | ||||
| the first fragment of a packet, therefore limiting the IPv6 | ||||
| extension header chain to the size of the Path-MTU. | ||||
| o 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. | ||||
| o The only way for a node to obtain the upper-layer protocol type or | ||||
| find the upper-layer protocol header is to parse and process the | ||||
| entire IPv6 header chain, in sequence, starting from the mandatory | ||||
| IPv6 header, until the last header in the IPv6 header chain is | ||||
| found. | ||||
| 4. Previous Work on IPv6 Extension Headers | ||||
| Some of the operational implications of IPv6 Extension Headers have | Some of the operational implications of IPv6 Extension Headers have | |||
| been discussed in IETF circles: | been discussed in IETF circles: | |||
| o [I-D.taylor-v6ops-fragdrop] discusses a rationale for which | o [I-D.taylor-v6ops-fragdrop] discusses a rationale for which | |||
| operators drop IPv6 fragments. | operators drop IPv6 fragments. | |||
| o [I-D.wkumari-long-headers] discusses possible issues arising from | o [I-D.wkumari-long-headers] discusses possible issues arising from | |||
| "long" IPv6 header chains. | "long" IPv6 header chains. | |||
| skipping to change at page 4, line 12 ¶ | skipping to change at page 5, line 45 ¶ | |||
| extension headers with the goal of providing a common and | extension headers with the goal of providing a common and | |||
| consistent parsing methodology for IPv6 implementations. | consistent parsing methodology for IPv6 implementations. | |||
| o [I-D.ietf-opsec-ipv6-eh-filtering] analyzes the security | o [I-D.ietf-opsec-ipv6-eh-filtering] analyzes the security | |||
| implications of IPv6 EHs, and the operational implications of | implications of IPv6 EHs, and the operational implications of | |||
| dropping packets that employ IPv6 EHs and associated options. | dropping packets that employ IPv6 EHs and associated options. | |||
| o [RFC7113] discusses how some popular RA-Guard implementations are | o [RFC7113] discusses how some popular RA-Guard implementations are | |||
| subject to evasion by means of IPv6 extension headers. | subject to evasion by means of IPv6 extension headers. | |||
| o [I-D.ietf-intarea-frag-fragile] analyzes the fragility introduced | o [RFC8900] analyzes the fragility introduced by IP fragmentation. | |||
| by IP fragmentation. | ||||
| A number of recent RFCs have discussed issues related to IPv6 | A number of recent RFCs have discussed issues related to IPv6 | |||
| extension headers, specifying updates to a previous revision of the | extension headers, specifying updates to a previous revision of the | |||
| IPv6 standard ([RFC2460]), many of which have now been incorporated | IPv6 standard ([RFC2460]), many of which have now been incorporated | |||
| into the current IPv6 core standard ([RFC8200]) or the IPv6 Node | into the current IPv6 core standard ([RFC8200]) or the IPv6 Node | |||
| Requirements ([RFC8504]). Namely, | Requirements ([RFC8504]). Namely, | |||
| o [RFC5095] discusses the security implications of Routing Header | o [RFC5095] discusses the security implications of Routing Header | |||
| Type 0 (RTH0), and deprecates it. | Type 0 (RTH0), and deprecates it. | |||
| o [RFC5722] analyzes the security implications of overlapping | o [RFC5722] analyzes the security implications of overlapping | |||
| fragments, and provides recommendations in this area. | fragments, and provides recommendations in this area. | |||
| o [RFC7045] clarifies how intermediate nodes should deal with IPv6 | o [RFC7045] clarifies how intermediate nodes should deal with IPv6 | |||
| extension headers. | extension headers. | |||
| o [RFC7112] discusses the issues arising in a specific fragmentation | o [RFC7112] discusses the issues arising in a specific fragmentation | |||
| skipping to change at page 5, line 7 ¶ | skipping to change at page 6, line 37 ¶ | |||
| o [RFC7739] discusses the security implications of predictable | o [RFC7739] discusses the security implications of predictable | |||
| fragment Identification values, and provides recommendations for | fragment Identification values, and provides recommendations for | |||
| the generation of these values. | the generation of these values. | |||
| o [RFC6980] analyzes the security implications of employing IPv6 | o [RFC6980] analyzes the security implications of employing IPv6 | |||
| fragmentation with Neighbor Discovery for IPv6, and formally | fragmentation with Neighbor Discovery for IPv6, and formally | |||
| recommends against such usage. | recommends against such usage. | |||
| Additionally, [RFC8200] has relaxed the requirement that "all nodes | Additionally, [RFC8200] has relaxed the requirement that "all nodes | |||
| examine and process the Hop-by-Hop Options header" from [RFC2460], by | examine and process the Hop-by-Hop Options header" from [RFC2460], by | |||
| specifying that only to nodes that have been explicitly configured to | specifying that only nodes that have been explicitly configured to | |||
| process the Hop-by-Hop Options header are required to do so. | process the Hop-by-Hop Options header are required to do so. | |||
| A number of studies have measured the extent to which packets | A number of studies have measured the extent to which packets | |||
| employing IPv6 extension headers are dropped in the public Internet: | employing IPv6 extension headers are dropped in the public Internet: | |||
| o [PMTUD-Blackholes], [Gont-IEPG88], [Gont-Chown-IEPG89], and | o [PMTUD-Blackholes], [Gont-IEPG88], [Gont-Chown-IEPG89], and | |||
| [Linkova-Gont-IEPG90] presented some preliminary measurements | [Linkova-Gont-IEPG90] presented some preliminary measurements | |||
| regarding the extent to which packet containing IPv6 EHs are | regarding the extent to which packet containing IPv6 EHs are | |||
| dropped in the public Internet. | dropped in the public Internet. | |||
| o [RFC7872] presents more comprehensive results and documents the | o [RFC7872] presents more comprehensive results and documents the | |||
| methodology for obtaining the presented results. | methodology for obtaining the presented results. | |||
| o [Huston-2017] and [Huston-2020] measured packet drops resulting | o [Huston-2017] and [Huston-2020] measured packet drops resulting | |||
| from IPv6 fragmentation when communicating with DNS servers. | from IPv6 fragmentation when communicating with DNS servers. | |||
| 4. Packet Forwarding Engine Constraints | 5. Packet Forwarding Engine Constraints | |||
| Most modern routers use dedicated hardware (e.g. ASICs or NPUs) to | Most contemporary routers use dedicated hardware (e.g. ASICs or | |||
| determine how to forward packets across their internal fabrics (see | NPUs) to determine how to forward packets across their internal | |||
| [IEPG94-Scudder] and [APNIC-Scudder] for details). One of the common | fabrics (see [IEPG94-Scudder] and [APNIC-Scudder] for details). One | |||
| methods of handling next-hop lookup is to send a small portion of the | of the common methods of handling next-hop lookup is to send a small | |||
| ingress packet to a lookup engine with specialised hardware (e.g. | portion of the ingress packet to a lookup engine with specialised | |||
| ternary CAM or RLDRAM) to determine the packet's next-hop. Technical | hardware (e.g. ternary CAM or RLDRAM) to determine the packet's next- | |||
| constraints mean that there is a trade-off between the amount of data | hop. Technical constraints mean that there is a trade-off between | |||
| sent to the lookup engine and the overall performance of the lookup | the amount of data sent to the lookup engine and the overall | |||
| engine. If more data is sent, the lookup engine can inspect further | performance of the lookup engine. If more data is sent, the lookup | |||
| into the packet, but the overall performance of the system will be | engine can inspect further into the packet, but the overall | |||
| reduced. If less data is sent, the overall performance of the router | performance of the system will be reduced. If less data is sent, the | |||
| will be increased but the packet lookup engine may not be able to | overall performance of the router will be increased but the packet | |||
| inspect far enough into a packet to determine how it should be | lookup engine may not be able to inspect far enough into a packet to | |||
| handled. | determine how it should be handled. | |||
| NOTE: | NOTE: | |||
| For example, current high-end routers can use up to 192 bytes of | For example, contemporary high-end routers can use up to 192 bytes | |||
| header (Cisco ASR9000 Typhoon) or 384 bytes of header (Juniper MX | of header (Cisco ASR9000 Typhoon) or 384 bytes of header (Juniper | |||
| Trio). | MX Trio). | |||
| If a hardware forwarding engine on a modern router cannot make a | If a hardware forwarding engine on a contemporary router cannot make | |||
| forwarding decision about a packet because critical information is | a forwarding decision about a packet because critical information is | |||
| not sent to the look-up engine, then the router will normally drop | not sent to the look-up engine, then the router will normally drop | |||
| the packet. | the packet. | |||
| NOTE: | NOTE: | |||
| Section 6 discusses some of the reasons for which a contemporary | ||||
| Section 5 discusses some of the reasons for which a modern router | router might need to access layer-4 information to make a | |||
| might need to access layer-4 information to make a forwarding | forwarding decision. | |||
| decision. | ||||
| Historically, some packet forwarding engines punted packets of this | Historically, some packet forwarding engines punted packets of this | |||
| form to the control plane for more in-depth analysis, but this is | form to the control plane for more in-depth analysis, but this is | |||
| unfeasible on most current router architectures as a result of the | unfeasible on most current router architectures as a result of the | |||
| vast difference between the hardware forwarding capacity of the | vast difference between the hardware forwarding capacity of the | |||
| router and processing capacity of the control plane and the size of | router and processing capacity of the control plane and the size of | |||
| the management link which connects the control plane to the | the management link which connects the control plane to the | |||
| forwarding plane. | forwarding plane. | |||
| If an IPv6 header chain is sufficiently long that its header exceeds | If an IPv6 header chain is sufficiently long that its header exceeds | |||
| the packet look-up capacity of the router, then it may be dropped due | the packet look-up capacity of the router, then it may be dropped due | |||
| to hardware inability to determine how it should be handled. | to hardware inability to determine how it should be handled. | |||
| 5. Requirement to Process Layer-3/layer-4 information in Intermediate | 5.1. Recirculation | |||
| Although TLV chains are amenable to iterative processing on | ||||
| architectures which have packet look-up engines with deep inspection | ||||
| capabilities, some packet forwarding engines manage IPv6 Extension | ||||
| Header chains using 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 continues repeatedly until there | ||||
| are no more Extension Headers left to be processed. | ||||
| Recirculation is typically used on packet forwarding engines with | ||||
| limited look-up capability, as it allows arbitrarily long header | ||||
| chains to be processed without the complexity and cost associated | ||||
| with packet forwarding engines which have deep look-up capabilities. | ||||
| However, recirculation can impact the forwarding capacity of | ||||
| hardware, as each packet will pass through the processing engine | ||||
| multiple times. Depending on configuration, the type of packets | ||||
| being processed, and the hardware capabilities of the packet | ||||
| forwarding engine, this may impact data-plane throughput performance | ||||
| on the router. | ||||
| 6. Requirement to Process Layer-3/layer-4 information in Intermediate | ||||
| Systems | Systems | |||
| The following subsections discuss some of reasons for which modern | The following subsections discuss some of reasons for which | |||
| routers and middle-boxes may need to process Layer-3/layer-4 | contemporary routers and middle-boxes may need to process Layer-3/ | |||
| information to make a forwarding decision. | layer-4 information to make a forwarding decision. | |||
| 5.1. ECMP and Hash-based Load-Sharing | 6.1. ECMP and Hash-based Load-Sharing | |||
| In the case of ECMP (equal cost multi path) load sharing, the router | In the case of ECMP (equal cost multi path) load sharing, the router | |||
| on the sending side of the link needs to make a decision regarding | on the sending side of the link needs to make a decision regarding | |||
| which of the links to use for a given packet. Since round-robin | which of the links to use for a given packet. Since round-robin | |||
| usage of the links is usually avoided in order to prevent packet | usage of the links is usually avoided in order to prevent packet | |||
| reordering, forwarding engines need to use a mechanism which will | reordering, forwarding engines need to use a mechanism which will | |||
| consistently forward the same data streams down the same forwarding | consistently forward the same data streams down the same forwarding | |||
| paths. Most forwarding engines achieve this by calculating a simple | paths. Most forwarding engines achieve this by calculating a simple | |||
| hash using an n-tuple gleaned from a combination of layer-2 through | hash using an n-tuple gleaned from a combination of layer-2 through | |||
| to layer-4 packet header information. This n-tuple will typically | to layer-4 packet header information. This n-tuple will typically | |||
| skipping to change at page 7, line 15 ¶ | skipping to change at page 9, line 20 ¶ | |||
| Clearly, widespread support of [RFC6437] would relieve middle-boxes | Clearly, widespread support of [RFC6437] would relieve middle-boxes | |||
| from having to process the entire IPv6 header chain, making Flow | from having to process the entire IPv6 header chain, making Flow | |||
| Label-based ECMP and Hash-based Load-Sharing [RFC6438] feasible. | Label-based ECMP and Hash-based Load-Sharing [RFC6438] feasible. | |||
| While support of [RFC6437] is currently widespread for current | While support of [RFC6437] is currently widespread for current | |||
| versions of all popular host implementations, there is still only | versions of all popular host implementations, there is still only | |||
| marginal usage of the IPv6 Flow Label for ECMP and load balancing | marginal usage of the IPv6 Flow Label for ECMP and load balancing | |||
| [Cunha-2020] -- possibly as a result of issues that have been found | [Cunha-2020] -- possibly as a result of issues that have been found | |||
| in host implementations and middle-boxes [Jaeggli-2018]. | in host implementations and middle-boxes [Jaeggli-2018]. | |||
| 5.2. Enforcing infrastructure ACLs | 6.2. Enforcing infrastructure ACLs | |||
| Generally speaking, infrastructure ACLs (iACLs) drop unwanted packets | Generally speaking, infrastructure ACLs (iACLs) drop unwanted packets | |||
| destined to parts of a provider's infrastructure, because they are | destined to parts of a provider's infrastructure, because they are | |||
| not operationally needed and can be used for attacks of different | not operationally needed and can be used for attacks of different | |||
| sorts against the router's control plane. Some traffic needs to be | sorts against router control planes. Some traffic needs to be | |||
| differentiated depending on layer-3 or layer-4 criteria to achieve a | differentiated depending on layer-3 or layer-4 criteria to achieve a | |||
| useful balance of protection and functionality, for example: | useful balance of protection and functionality, for example: | |||
| o Permit some amount of ICMP echo (ping) traffic towards the | o Permit some amount of ICMP echo (ping) traffic towards a router's | |||
| router's addresses for troubleshooting. | addresses for troubleshooting. | |||
| o Permit BGP sessions on the shared network of an exchange point | o Permit BGP sessions on the shared network of an exchange point | |||
| (potentially differentiating between the amount of packets/seconds | (potentially differentiating between the amount of packets/seconds | |||
| permitted for established sessions and connection establishment), | permitted for established sessions and connection establishment), | |||
| but do not permit other traffic from the same peer IP addresses. | but do not permit other traffic from the same peer IP addresses. | |||
| 5.3. DDoS Management and Customer Requests for Filtering | 6.3. DDoS Management and Customer Requests for Filtering | |||
| The case of customer DDoS protection and edge-to-core customer | The case of customer DDoS protection and edge-to-core customer | |||
| protection filters is similar in nature to the infrastructure ACL | protection filters is similar in nature to the infrastructure ACL | |||
| protection. Similar to infrastructure ACL protection, layer-4 ACLs | protection. Similar to infrastructure ACL protection, layer-4 ACLs | |||
| generally need to be applied as close to the edge of the network as | generally need to be applied as close to the edge of the network as | |||
| possible, even though the intent is usually to protect the customer | possible, even though the intent is usually to protect the customer | |||
| edge rather than the provider core. Application of layer-4 DDoS | edge rather than the provider core. Application of layer-4 DDoS | |||
| protection to a network edge is often automated using Flowspec | protection to a network edge is often automated using Flowspec | |||
| [RFC5575]. | [RFC5575]. | |||
| skipping to change at page 8, line 5 ¶ | skipping to change at page 10, line 11 ¶ | |||
| ports 80 and 443 could be subject to a volumetric DDoS attack using | ports 80 and 443 could be subject to a volumetric DDoS attack using | |||
| NTP and DNS packets with randomised source IP address, thereby | NTP and DNS packets with randomised source IP address, thereby | |||
| rendering traditional [RFC5635] source-based real-time black hole | rendering traditional [RFC5635] source-based real-time black hole | |||
| mechanisms useless. In this situation, DDoS protection ACLs could be | mechanisms useless. In this situation, DDoS protection ACLs could be | |||
| configured to block all UDP traffic at the network edge without | configured to block all UDP traffic at the network edge without | |||
| impairing the web server functionality in any way. Thus, being able | impairing the web server functionality in any way. Thus, being able | |||
| to block arbitrary protocols at the network edge can avoid DDoS- | to block arbitrary protocols at the network edge can avoid DDoS- | |||
| related problems both in the provider network and on the customer | related problems both in the provider network and on the customer | |||
| edge link. | edge link. | |||
| 6. Operational Implications | 6.4. Network Intrusion Detection and Prevention | |||
| 6.1. Inability to Find Layer-4 Information | Network Intrusion Detection Systems (NIDS) examine network traffic | |||
| and try to identify traffic patterns that can be correlated to | ||||
| network-based attacks. These systems generally inspect application- | ||||
| layer traffic (if possible), but at the bare minimum inspect layer-4 | ||||
| flows. When attack activity is inferred, the operator is signaled of | ||||
| the potential intrusion attempt. | ||||
| As discussed in Section 5, modern routers and middle-boxes that need | Network Intrusion Prevention Systems (IPS) operate similarly to | |||
| to find the layer-4 header must process the entire IPv6 extension | NIDS's, but they may also prevent intrusions by reacting to detected | |||
| header chain. When such devices are unable to obtain the required | attack attempts by e.g. triggering packet filtering policies at | |||
| information, they may simply resort to dropping the corresponding | firewalls and other devices. | |||
| packets. | ||||
| 6.2. Route-Processor Protection | Use of extension headers may result problematic for NIDS/IPS, since: | |||
| Most modern routers have a fast hardware-assisted forwarding plane | o Extension headers increase the complexity of resulting traffic, | |||
| and a loosely coupled control plane, connected together with a link | and the associated work and system requirements to process it. | |||
| that has much less capacity than the forwarding plane could handle. | ||||
| Traffic differentiation cannot be done by the control plane side, | o Use of unknown extension headers may prevent an NIDS/IPS to | |||
| because this would overload the internal link connecting the | process layer-4 information | |||
| o Use of IPv6 fragmentation requires a stateful fragment-reassembly | ||||
| operation, even for decoy traffic employing forged source | ||||
| addresses (see e.g. [nmap]). | ||||
| As a result, in order to increase the efficiency or effectiveness of | ||||
| these systems, packets employing IPv6 extension headers may be | ||||
| dropped at the network ingress point(s) of networks that deploy these | ||||
| systems. | ||||
| 6.5. Firewalling | ||||
| Firewalls enforce security policies by means of packet filtering. | ||||
| These systems generally inspect layer-3 and layer-4 traffic, and may | ||||
| also examine application-layer traffic flows. | ||||
| As with NIDS/IPS (Section 6.4), use of IPv6 extension headers may | ||||
| represent a challenge to network firewalls, since: | ||||
| o Extension headers increase the complexity of resulting traffic, | ||||
| and the associated work and system requirements to process it (see | ||||
| e.g. [Zack-FW-Benchmark]). | ||||
| o Use of unknown extension headers may prevent an NIDS/IPS to | ||||
| process layer-4 information | ||||
| o Use of IPv6 fragmentation requires a stateful fragment-reassembly | ||||
| operation, even for decoy traffic employing forged source | ||||
| addresses (see e.g. [nmap]). | ||||
| Additionally, a common firewall filtering policy is the so-called | ||||
| "default deny", where all traffic is blocked (by default), and only | ||||
| expected traffic is added to an "allow/accept list". | ||||
| As a result, whether because of the challenges represented by | ||||
| extension headers or because the use of IPv6 extension headers has | ||||
| not been explicitly allowed, packets employing IPv6 extension headers | ||||
| may be dropped by network firewalls. | ||||
| 7. Operational Implications | ||||
| 7.1. Inability to Find Layer-4 Information | ||||
| As discussed in Section 6, contemporary routers and middle-boxes that | ||||
| need to find the layer-4 header must process the entire IPv6 | ||||
| extension header chain. When such devices are unable to obtain the | ||||
| required information, they may simply resort to dropping the | ||||
| corresponding packets. | ||||
| 7.2. Route-Processor Protection | ||||
| Most contemporary routers have a fast hardware-assisted forwarding | ||||
| plane and a loosely coupled control plane, connected together with a | ||||
| link that has much less capacity than the forwarding plane could | ||||
| handle. Traffic differentiation cannot be done by the control plane | ||||
| side, because this would overload the internal link connecting the | ||||
| forwarding plane to the control plane. | forwarding plane to the control plane. | |||
| The Hop-by-Hop Options header has been particularly challenging | The Hop-by-Hop Options header has been particularly challenging since | |||
| since, in most (if not all) implementations, it has typically caused | in most circumstances, the corresponding packet is punted to the | |||
| the corresponding packet to be punted to a software path. As a | control plane for processing. As a result, operators usually drop | |||
| result, operators usually drop IPv6 packets containing this extension | IPv6 packets containing this extension header. Please see [RFC6192] | |||
| header. Please see [RFC6192] for advice regarding protection of the | for advice regarding protection of the router control plane. | |||
| router control plane. | ||||
| 6.3. Inability to Perform Fine-grained Filtering | 7.3. Inability to Perform Fine-grained Filtering | |||
| Some router implementations lack fine-grained filtering of IPv6 | Some router implementations lack fine-grained filtering of IPv6 | |||
| extension headers. For example, an operator may want to drop packets | extension headers. For example, an operator may want to drop packets | |||
| containing Routing Header Type 0 (RHT0) but may only be able to | containing Routing Header Type 0 (RHT0) but may only be able to | |||
| filter on the extension header type (Routing Header). As a result, | filter on the extension header type (Routing Header). As a result, | |||
| the operator may end up enforcing a more coarse filtering policy | the operator may end up enforcing a more coarse filtering policy | |||
| (e.g. "drop all packets containing a Routing Header" vs. "only drop | (e.g. "drop all packets containing a Routing Header" vs. "only drop | |||
| packets that contain a Routing Header Type 0"). | packets that contain a Routing Header Type 0"). | |||
| 6.4. Security Concerns Associated with IPv6 Extension Headers | 7.4. Security Concerns Associated with IPv6 Extension Headers | |||
| The security implications of IPv6 Extension Headers generally fall | The security implications of IPv6 Extension Headers generally fall | |||
| into one or more of these categories: | into one or more of these categories: | |||
| o Evasion of security controls | o Evasion of security controls | |||
| o DoS due to processing requirements | o DoS due to processing requirements | |||
| o DoS due to implementation errors | o DoS due to implementation errors | |||
| skipping to change at page 9, line 4 ¶ | skipping to change at page 12, line 27 ¶ | |||
| The security implications of IPv6 Extension Headers generally fall | The security implications of IPv6 Extension Headers generally fall | |||
| into one or more of these categories: | into one or more of these categories: | |||
| o Evasion of security controls | o Evasion of security controls | |||
| o DoS due to processing requirements | o DoS due to processing requirements | |||
| o DoS due to implementation errors | o DoS due to implementation errors | |||
| o Extension Header-specific issues | o Extension Header-specific issues | |||
| Unlike IPv4 packets where the upper-layer protocol can be trivially | Unlike IPv4 packets where the upper-layer protocol can be trivially | |||
| found by means of the "IHL" ("Internet Header Length") IPv4 header | found by means of the "IHL" ("Internet Header Length") IPv4 header | |||
| field, the structure of IPv6 packets is more flexible and complex, | field, the structure of IPv6 packets is more flexible and complex, | |||
| and may represent a challenge for devices that need to find this | and may represent a challenge for devices that need to find this | |||
| information, since locating upper-layer protocol information requires | information, since locating upper-layer protocol information requires | |||
| that all IPv6 extension headers be examined. This has presented | that all IPv6 extension headers be examined. This has presented | |||
| implementation difficulties, and packet filtering mechanisms that | implementation difficulties, and packet filtering mechanisms that | |||
| require upper-layer information (even if just the upper layer | require upper-layer information (even if just the upper layer | |||
| protocol type) have been found to be trivially evasible by inserting | protocol type) can be trivially circumvented by inserting IPv6 | |||
| IPv6 Extension Headers between the main IPv6 header and the upper | Extension Headers between the main IPv6 header and the upper layer | |||
| layer protocol. [RFC7113] describes this issue for the RA-Guard | protocol. [RFC7113] describes this issue for the RA-Guard case, but | |||
| case, but the same techniques can be employed to circumvent other | the same techniques can be employed to circumvent other IPv6 firewall | |||
| IPv6 firewall and packet filtering mechanisms. Additionally, | and packet filtering mechanisms. Additionally, implementation | |||
| implementation inconsistencies in packet forwarding engines may | inconsistencies in packet forwarding engines may result in evasion of | |||
| result in evasion of security controls | security controls [I-D.kampanakis-6man-ipv6-eh-parsing] [Atlasis2014] | |||
| [I-D.kampanakis-6man-ipv6-eh-parsing] [Atlasis2014] [BH-EU-2014]. | [BH-EU-2014]. | |||
| Packets that use IPv6 Extension Headers may have a negative | Packets with attached IPv6 Extension Headers may impact performance | |||
| performance impact on the handling devices. Unless appropriate | on routers that forward them. Unless appropriate mitigations are put | |||
| mitigations are put in place (e.g., packet dropping and/or rate- | in place (e.g., packet dropping and/or rate-limiting), an attacker | |||
| limiting), an attacker could simply send a large amount of IPv6 | could simply send a large amount of IPv6 traffic employing IPv6 | |||
| traffic employing IPv6 Extension Headers with the purpose of | Extension Headers with the purpose of performing a Denial of Service | |||
| performing a Denial of Service (DoS) attack (see Section 6 for | (DoS) attack (see Section 7 for further details). | |||
| further details). | ||||
| NOTE: | NOTE: | |||
| In the most trivial case, a packet that includes a Hop-by-Hop | In the most trivial case, a packet that includes a Hop-by-Hop | |||
| Options header might go through the slow forwarding path, and be | Options header might go through the slow forwarding path, and be | |||
| processed by the router's CPU. Another possible case might be | processed by the router's CPU. Another possible case might be | |||
| that in which a router that has been configured to enforce an ACL | where a router that has been configured to enforce an ACL based on | |||
| based on upper-layer information (e.g., upper layer protocol or | upper-layer information (e.g., upper layer protocol or TCP | |||
| TCP Destination Port), needs to process the entire IPv6 header | Destination Port), needs to process the entire IPv6 header chain | |||
| chain (in order to find the required information), causing the | (in order to find the required information), causing the packet to | |||
| packet to be processed in the slow path [Cisco-EH-Cons]. We note | be processed in the slow path [Cisco-EH-Cons]. We note that, for | |||
| that, for obvious reasons, the aforementioned performance issues | obvious reasons, the aforementioned performance issues may affect | |||
| may affect other devices such as firewalls, Network Intrusion | other devices such as firewalls, Network Intrusion Detection | |||
| Detection Systems (NIDS), etc. [Zack-FW-Benchmark]. The extent | Systems (NIDS), etc. [Zack-FW-Benchmark]. The extent to which | |||
| to which these devices are affected is typically implementation- | these devices are affected is typically implementation-dependent. | |||
| dependent. | ||||
| IPv6 implementations, like all other software, tend to mature with | IPv6 implementations, like all other software, tend to mature with | |||
| time and wide-scale deployment. While the IPv6 protocol itself has | time and wide-scale deployment. While the IPv6 protocol itself has | |||
| existed for over 20 years, serious bugs related to IPv6 Extension | existed for over 20 years, serious bugs related to IPv6 Extension | |||
| Header processing continue to be discovered. Because there is | Header processing continue to be discovered (see e.g. [Cisco-Frag1], | |||
| currently little operational reliance on IPv6 Extension headers, the | [Cisco-Frag2], and [FreeBSD-SA]). Because there is currently little | |||
| corresponding code paths are rarely exercised, and there is the | operational reliance on IPv6 Extension headers, the corresponding | |||
| potential for bugs that still remain to be discovered in some | code paths are rarely exercised, and there is the potential for bugs | |||
| implementations. | that still remain to be discovered in some implementations. | |||
| IPv6 Fragment Headers are employed to allow fragmentation of IPv6 | IPv6 Fragment Headers are employed to allow fragmentation of IPv6 | |||
| packets. While many of the security implications of the | packets. While many of the security implications of the | |||
| fragmentation / reassembly mechanism are known from the IPv4 world, | fragmentation / reassembly mechanism are known from the IPv4 world, | |||
| several related issues have crept into IPv6 implementations. These | several related issues have crept into IPv6 implementations. These | |||
| range from denial of service attacks to information leakage, as | range from denial of service attacks to information leakage, as | |||
| discussed in [RFC7739], [Bonica-NANOG58] and [Atlasis2012]). | discussed in [RFC7739], [Bonica-NANOG58] and [Atlasis2012]). | |||
| 7. IANA Considerations | 8. IANA Considerations | |||
| There are no IANA registries within this document. The RFC-Editor | There are no IANA registries within this document. The RFC-Editor | |||
| can remove this section before publication of this document as an | can remove this section before publication of this document as an | |||
| RFC. | RFC. | |||
| 8. Security Considerations | 9. Security Considerations | |||
| The security implications of IPv6 extension headers are discussed in | The security implications of IPv6 extension headers are discussed in | |||
| Section 6.4. This document does not introduce any new security | Section 7.4. This document does not introduce any new security | |||
| issues. | issues. | |||
| 9. Acknowledgements | 10. Acknowledgements | |||
| The authors would like to thank (in alphabetical order) Mikael | The authors would like to thank (in alphabetical order) Mikael | |||
| Abrahamsson, Fred Baker, Brian Carpenter, Tim Chown, Owen DeLong, Tom | Abrahamsson, Fred Baker, Brian Carpenter, Tim Chown, Owen DeLong, Tom | |||
| Herbert, Lee Howard, Sander Steffann, Eduard Vasilenko, Eric Vyncke, | Herbert, Lee Howard, Tom Petch, Sander Steffann, Eduard Vasilenko, | |||
| Jingrong Xie, and Andrew Yourtchenko, for providing valuable comments | Eric Vyncke, Jingrong Xie, and Andrew Yourtchenko, for providing | |||
| on earlier versions of this document. | valuable comments on earlier versions of this document. | |||
| Fernando Gont would like to thank Jan Zorz / Go6 Lab | Fernando Gont would like to thank Jan Zorz / Go6 Lab | |||
| <http://go6lab.si/>, Jared Mauch, and Sander Steffann | <https://go6lab.si/>, Jared Mauch, and Sander Steffann | |||
| <http://steffann.nl/>, for providing access to systems and networks | <https://steffann.nl/>, for providing access to systems and networks | |||
| that were employed to perform experiments and measurements involving | that were employed to perform experiments and measurements involving | |||
| packets with IPv6 Extension Headers. | packets with IPv6 Extension Headers. | |||
| 10. References | 11. References | |||
| 10.1. Normative References | ||||
| [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | 11.1. Normative References | |||
| (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | ||||
| December 1998, <https://www.rfc-editor.org/info/rfc2460>. | ||||
| [RFC5095] Abley, J., Savola, P., and G. Neville-Neil, "Deprecation | [RFC5095] Abley, J., Savola, P., and G. Neville-Neil, "Deprecation | |||
| of Type 0 Routing Headers in IPv6", RFC 5095, | of Type 0 Routing Headers in IPv6", RFC 5095, | |||
| DOI 10.17487/RFC5095, December 2007, | DOI 10.17487/RFC5095, December 2007, | |||
| <https://www.rfc-editor.org/info/rfc5095>. | <https://www.rfc-editor.org/info/rfc5095>. | |||
| [RFC5722] Krishnan, S., "Handling of Overlapping IPv6 Fragments", | [RFC5722] Krishnan, S., "Handling of Overlapping IPv6 Fragments", | |||
| RFC 5722, DOI 10.17487/RFC5722, December 2009, | RFC 5722, DOI 10.17487/RFC5722, December 2009, | |||
| <https://www.rfc-editor.org/info/rfc5722>. | <https://www.rfc-editor.org/info/rfc5722>. | |||
| skipping to change at page 11, line 37 ¶ | skipping to change at page 15, line 5 ¶ | |||
| [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
| (IPv6) Specification", STD 86, RFC 8200, | (IPv6) Specification", STD 86, RFC 8200, | |||
| DOI 10.17487/RFC8200, July 2017, | DOI 10.17487/RFC8200, July 2017, | |||
| <https://www.rfc-editor.org/info/rfc8200>. | <https://www.rfc-editor.org/info/rfc8200>. | |||
| [RFC8504] Chown, T., Loughney, J., and T. Winters, "IPv6 Node | [RFC8504] Chown, T., Loughney, J., and T. Winters, "IPv6 Node | |||
| Requirements", BCP 220, RFC 8504, DOI 10.17487/RFC8504, | Requirements", BCP 220, RFC 8504, DOI 10.17487/RFC8504, | |||
| January 2019, <https://www.rfc-editor.org/info/rfc8504>. | January 2019, <https://www.rfc-editor.org/info/rfc8504>. | |||
| 10.2. Informative References | 11.2. Informative References | |||
| [APNIC-Scudder] | [APNIC-Scudder] | |||
| Scudder, J., "Modern router architecture and IPv6", APNIC | Scudder, J., "Modern router architecture and IPv6", APNIC | |||
| Blog, June 4, 2020, <https://blog.apnic.net/2020/06/04/ | Blog, June 4, 2020, <https://blog.apnic.net/2020/06/04/ | |||
| modern-router-architecture-and-ipv6/>. | modern-router-architecture-and-ipv6/>. | |||
| [Atlasis2012] | [Atlasis2012] | |||
| Atlasis, A., "Attacking IPv6 Implementation Using | Atlasis, A., "Attacking IPv6 Implementation Using | |||
| Fragmentation", BlackHat Europe 2012. Amsterdam, | Fragmentation", BlackHat Europe 2012. Amsterdam, | |||
| Netherlands. March 14-16, 2012, | Netherlands. March 14-16, 2012, | |||
| skipping to change at page 12, line 18 ¶ | skipping to change at page 15, line 32 ¶ | |||
| <http://www.insinuator.net/2014/05/a-novel-way-of-abusing- | <http://www.insinuator.net/2014/05/a-novel-way-of-abusing- | |||
| ipv6-extension-headers-to-evade-ipv6-security-devices/>. | ipv6-extension-headers-to-evade-ipv6-security-devices/>. | |||
| [BH-EU-2014] | [BH-EU-2014] | |||
| Atlasis, A., Rey, E., and R. Schaefer, "Evasion of High- | Atlasis, A., Rey, E., and R. Schaefer, "Evasion of High- | |||
| End IDPS Devices at the IPv6 Era", BlackHat Europe 2014, | End IDPS Devices at the IPv6 Era", BlackHat Europe 2014, | |||
| 2014, <https://www.ernw.de/download/eu-14-Atlasis-Rey- | 2014, <https://www.ernw.de/download/eu-14-Atlasis-Rey- | |||
| Schaefer-briefings-Evasion-of-HighEnd-IPS-Devices-wp.pdf>. | Schaefer-briefings-Evasion-of-HighEnd-IPS-Devices-wp.pdf>. | |||
| [Bonica-NANOG58] | [Bonica-NANOG58] | |||
| Bonica, R., "IPv6 Extension Headers in the Real World | Bonica, R., "IPV6 FRAGMENTATION: The Case For | |||
| v2.0", NANOG 58. New Orleans, Louisiana, USA. June 3-5, | Deprecation", NANOG 58. New Orleans, Louisiana, USA. June | |||
| 2013, <https://www.nanog.org/sites/default/files/ | 3-5, 2013, <https://www.nanog.org/sites/default/files/ | |||
| mon.general.fragmentation.bonica.pdf>. | mon.general.fragmentation.bonica.pdf>. | |||
| [Cisco-EH-Cons] | [Cisco-EH-Cons] | |||
| Cisco, "IPv6 Extension Headers Review and Considerations", | Cisco, "IPv6 Extension Headers Review and Considerations", | |||
| October 2006, | October 2006, | |||
| <http://www.cisco.com/en/US/technologies/tk648/tk872/ | <http://www.cisco.com/en/US/technologies/tk648/tk872/ | |||
| technologies_white_paper0900aecd8054d37d.pdf>. | technologies_white_paper0900aecd8054d37d.pdf>. | |||
| [Cisco-Frag1] | ||||
| Cisco, "Cisco IOS Software IPv6 Virtual Fragmentation | ||||
| Reassembly Denial of Service Vulnerability", September | ||||
| 2013, <http://tools.cisco.com/security/center/content/ | ||||
| CiscoSecurityAdvisory/cisco-sa-20130925-ipv6vfr>. | ||||
| [Cisco-Frag2] | ||||
| Cisco, "Cisco IOS XR Software Crafted IPv6 Packet Denial | ||||
| of Service Vulnerability", June 2015, | ||||
| <http://tools.cisco.com/security/center/content/ | ||||
| CiscoSecurityAdvisory/cisco-sa-20150611-iosxr>. | ||||
| [Cunha-2020] | [Cunha-2020] | |||
| Cunha, I., "IPv4 vs IPv6 load balancing in Internet | Cunha, I., "IPv4 vs IPv6 load balancing in Internet | |||
| routes", NPS/CAIDA 2020 Virtual IPv6 Workshop, 2020, | routes", NPS/CAIDA 2020 Virtual IPv6 Workshop, 2020, | |||
| <https://www.cmand.org/workshops/202006-v6/slides/ | <https://www.cmand.org/workshops/202006-v6/slides/ | |||
| cunha.pdf>. | cunha.pdf>. | |||
| [FreeBSD-SA] | ||||
| FreeBSD, "FreeBSD Security Advisory FreeBSD-SA-20:24.ipv6: | ||||
| IPv6 Hop-by-Hop options use-after-free bug", September | ||||
| 2020, <https://www.freebsd.org/security/advisories/ | ||||
| FreeBSD-SA-20:24.ipv6.asc>. | ||||
| [Gont-Chown-IEPG89] | [Gont-Chown-IEPG89] | |||
| Gont, F. and T. Chown, "A Small Update on the Use of IPv6 | Gont, F. and T. Chown, "A Small Update on the Use of IPv6 | |||
| Extension Headers", IEPG 89. London, UK. March 2, 2014, | Extension Headers", IEPG 89. London, UK. March 2, 2014, | |||
| <http://www.iepg.org/2014-03-02-ietf89/fgont-iepg-ietf89- | <http://www.iepg.org/2014-03-02-ietf89/fgont-iepg-ietf89- | |||
| eh-update.pdf>. | eh-update.pdf>. | |||
| [Gont-IEPG88] | [Gont-IEPG88] | |||
| Gont, F., "Fragmentation and Extension header Support in | Gont, F., "Fragmentation and Extension header Support in | |||
| the IPv6 Internet", IEPG 88. Vancouver, BC, Canada. | the IPv6 Internet", IEPG 88. Vancouver, BC, Canada. | |||
| November 13, 2013, <http://www.iepg.org/2013-11-ietf88/ | November 13, 2013, <http://www.iepg.org/2013-11-ietf88/ | |||
| skipping to change at page 13, line 11 ¶ | skipping to change at page 16, line 47 ¶ | |||
| DNS", APNIC Blog, 2017, | DNS", APNIC Blog, 2017, | |||
| <https://blog.apnic.net/2017/08/22/dealing-ipv6- | <https://blog.apnic.net/2017/08/22/dealing-ipv6- | |||
| fragmentation-dns/>. | fragmentation-dns/>. | |||
| [Huston-2020] | [Huston-2020] | |||
| Huston, G., "Measurement of IPv6 Extension Header | Huston, G., "Measurement of IPv6 Extension Header | |||
| Support", NPS/CAIDA 2020 Virtual IPv6 Workshop, 2020, | Support", NPS/CAIDA 2020 Virtual IPv6 Workshop, 2020, | |||
| <https://www.cmand.org/workshops/202006-v6/ | <https://www.cmand.org/workshops/202006-v6/ | |||
| slides/2020-06-16-xtn-hdrs.pdf>. | slides/2020-06-16-xtn-hdrs.pdf>. | |||
| [I-D.ietf-intarea-frag-fragile] | ||||
| Bonica, R., Baker, F., Huston, G., Hinden, R., Troan, O., | ||||
| and F. Gont, "IP Fragmentation Considered Fragile", draft- | ||||
| ietf-intarea-frag-fragile-17 (work in progress), September | ||||
| 2019. | ||||
| [I-D.ietf-opsec-ipv6-eh-filtering] | [I-D.ietf-opsec-ipv6-eh-filtering] | |||
| Gont, F. and W. LIU, "Recommendations on the Filtering of | Gont, F. and W. LIU, "Recommendations on the Filtering of | |||
| IPv6 Packets Containing IPv6 Extension Headers", draft- | IPv6 Packets Containing IPv6 Extension Headers", draft- | |||
| ietf-opsec-ipv6-eh-filtering-06 (work in progress), July | ietf-opsec-ipv6-eh-filtering-06 (work in progress), July | |||
| 2018. | 2018. | |||
| [I-D.kampanakis-6man-ipv6-eh-parsing] | [I-D.kampanakis-6man-ipv6-eh-parsing] | |||
| Kampanakis, P., "Implementation Guidelines for parsing | Kampanakis, P., "Implementation Guidelines for parsing | |||
| IPv6 Extension Headers", draft-kampanakis-6man-ipv6-eh- | IPv6 Extension Headers", draft-kampanakis-6man-ipv6-eh- | |||
| parsing-01 (work in progress), August 2014. | parsing-01 (work in progress), August 2014. | |||
| skipping to change at page 14, line 11 ¶ | skipping to change at page 17, line 40 ¶ | |||
| DNS", APNIC Blog, 2018, | DNS", APNIC Blog, 2018, | |||
| <https://blog.apnic.net/2018/01/11/ipv6-flow-label-misuse- | <https://blog.apnic.net/2018/01/11/ipv6-flow-label-misuse- | |||
| hashing/>. | hashing/>. | |||
| [Linkova-Gont-IEPG90] | [Linkova-Gont-IEPG90] | |||
| Linkova, J. and F. Gont, "IPv6 Extension Headers in the | Linkova, J. and F. Gont, "IPv6 Extension Headers in the | |||
| Real World v2.0", IEPG 90. Toronto, ON, Canada. July 20, | Real World v2.0", IEPG 90. Toronto, ON, Canada. July 20, | |||
| 2014, <http://www.iepg.org/2014-07-20-ietf90/iepg- | 2014, <http://www.iepg.org/2014-07-20-ietf90/iepg- | |||
| ietf90-ipv6-ehs-in-the-real-world-v2.0.pdf>. | ietf90-ipv6-ehs-in-the-real-world-v2.0.pdf>. | |||
| [nmap] Fyodor, "Dealing with IPv6 fragmentation in the | ||||
| DNS", Firewall/IDS Evasion and Spoofing, | ||||
| <https://nmap.org/book/man-bypass-firewalls-ids.html>. | ||||
| [PMTUD-Blackholes] | [PMTUD-Blackholes] | |||
| De Boer, M. and J. Bosma, "Discovering Path MTU black | De Boer, M. and J. Bosma, "Discovering Path MTU black | |||
| holes on the Internet using RIPE Atlas", July 2012, | holes on the Internet using RIPE Atlas", July 2012, | |||
| <http://www.nlnetlabs.nl/downloads/publications/pmtu- | <http://www.nlnetlabs.nl/downloads/publications/pmtu- | |||
| black-holes-msc-thesis.pdf>. | black-holes-msc-thesis.pdf>. | |||
| [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | ||||
| (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | ||||
| December 1998, <https://www.rfc-editor.org/info/rfc2460>. | ||||
| [RFC5575] Marques, P., Sheth, N., Raszuk, R., Greene, B., Mauch, J., | [RFC5575] Marques, P., Sheth, N., Raszuk, R., Greene, B., Mauch, J., | |||
| and D. McPherson, "Dissemination of Flow Specification | and D. McPherson, "Dissemination of Flow Specification | |||
| Rules", RFC 5575, DOI 10.17487/RFC5575, August 2009, | Rules", RFC 5575, DOI 10.17487/RFC5575, August 2009, | |||
| <https://www.rfc-editor.org/info/rfc5575>. | <https://www.rfc-editor.org/info/rfc5575>. | |||
| [RFC5635] Kumari, W. and D. McPherson, "Remote Triggered Black Hole | [RFC5635] Kumari, W. and D. McPherson, "Remote Triggered Black Hole | |||
| Filtering with Unicast Reverse Path Forwarding (uRPF)", | Filtering with Unicast Reverse Path Forwarding (uRPF)", | |||
| RFC 5635, DOI 10.17487/RFC5635, August 2009, | RFC 5635, DOI 10.17487/RFC5635, August 2009, | |||
| <https://www.rfc-editor.org/info/rfc5635>. | <https://www.rfc-editor.org/info/rfc5635>. | |||
| skipping to change at page 15, line 15 ¶ | skipping to change at page 18, line 49 ¶ | |||
| [RFC7739] Gont, F., "Security Implications of Predictable Fragment | [RFC7739] Gont, F., "Security Implications of Predictable Fragment | |||
| Identification Values", RFC 7739, DOI 10.17487/RFC7739, | Identification Values", RFC 7739, DOI 10.17487/RFC7739, | |||
| February 2016, <https://www.rfc-editor.org/info/rfc7739>. | February 2016, <https://www.rfc-editor.org/info/rfc7739>. | |||
| [RFC7872] Gont, F., Linkova, J., Chown, T., and W. Liu, | [RFC7872] Gont, F., Linkova, J., Chown, T., and W. Liu, | |||
| "Observations on the Dropping of Packets with IPv6 | "Observations on the Dropping of Packets with IPv6 | |||
| Extension Headers in the Real World", RFC 7872, | Extension Headers in the Real World", RFC 7872, | |||
| DOI 10.17487/RFC7872, June 2016, | DOI 10.17487/RFC7872, June 2016, | |||
| <https://www.rfc-editor.org/info/rfc7872>. | <https://www.rfc-editor.org/info/rfc7872>. | |||
| [RFC8900] Bonica, R., Baker, F., Huston, G., Hinden, R., Troan, O., | ||||
| and F. Gont, "IP Fragmentation Considered Fragile", | ||||
| BCP 230, RFC 8900, DOI 10.17487/RFC8900, September 2020, | ||||
| <https://www.rfc-editor.org/info/rfc8900>. | ||||
| [Zack-FW-Benchmark] | [Zack-FW-Benchmark] | |||
| Zack, E., "Firewall Security Assessment and Benchmarking | Zack, E., "Firewall Security Assessment and Benchmarking | |||
| IPv6 Firewall Load Tests", IPv6 Hackers Meeting #1, | IPv6 Firewall Load Tests", IPv6 Hackers Meeting #1, | |||
| Berlin, Germany. June 30, 2013, | Berlin, Germany. June 30, 2013, | |||
| <http://www.ipv6hackers.org/meetings/ipv6-hackers-1/zack- | <https://www.ipv6hackers.org/files/meetings/ipv6-hackers- | |||
| ipv6hackers1-firewall-security-assessment-and- | 1/zack-ipv6hackers1-firewall-security-assessment-and- | |||
| benchmarking.pdf>. | benchmarking.pdf>. | |||
| Authors' Addresses | Authors' Addresses | |||
| Fernando Gont | Fernando Gont | |||
| SI6 Networks | SI6 Networks | |||
| Segurola y Habana 4310, 7mo Piso | Segurola y Habana 4310, 7mo Piso | |||
| Villa Devoto, Ciudad Autonoma de Buenos Aires | Villa Devoto, Ciudad Autonoma de Buenos Aires | |||
| Argentina | Argentina | |||
| End of changes. 54 change blocks. | ||||
| 148 lines changed or deleted | 326 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/ | ||||