draft-ietf-6man-rfc2460bis-13.txt | rfc8200.txt | |||
---|---|---|---|---|
Network Working Group S. Deering | Internet Engineering Task Force (IETF) S. Deering | |||
Internet-Draft Retired | Request for Comments: 8200 Retired | |||
Obsoletes: 2460 (if approved) R. Hinden | STD: 86 R. Hinden | |||
Intended status: Standards Track Check Point Software | Obsoletes: 2460 Check Point Software | |||
Expires: November 20, 2017 May 19, 2017 | Category: Standards Track July 2017 | |||
ISSN: 2070-1721 | ||||
Internet Protocol, Version 6 (IPv6) Specification | Internet Protocol, Version 6 (IPv6) Specification | |||
draft-ietf-6man-rfc2460bis-13 | ||||
Abstract | Abstract | |||
This document specifies version 6 of the Internet Protocol (IPv6). | This document specifies version 6 of the Internet Protocol (IPv6). | |||
It obsoletes RFC2460 | It obsoletes RFC 2460. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at http://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on November 20, 2017. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
http://www.rfc-editor.org/info/rfc8200. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 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 | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://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 | |||
skipping to change at page 2, line 19 ¶ | skipping to change at page 3, line 7 ¶ | |||
modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
than English. | than English. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3. IPv6 Header Format . . . . . . . . . . . . . . . . . . . . . 5 | 3. IPv6 Header Format . . . . . . . . . . . . . . . . . . . . . 6 | |||
4. IPv6 Extension Headers . . . . . . . . . . . . . . . . . . . 6 | 4. IPv6 Extension Headers . . . . . . . . . . . . . . . . . . . 7 | |||
4.1. Extension Header Order . . . . . . . . . . . . . . . . . 8 | 4.1. Extension Header Order . . . . . . . . . . . . . . . . . 10 | |||
4.2. Options . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 4.2. Options . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
4.3. Hop-by-Hop Options Header . . . . . . . . . . . . . . . . 12 | 4.3. Hop-by-Hop Options Header . . . . . . . . . . . . . . . . 13 | |||
4.4. Routing Header . . . . . . . . . . . . . . . . . . . . . 12 | 4.4. Routing Header . . . . . . . . . . . . . . . . . . . . . 14 | |||
4.5. Fragment Header . . . . . . . . . . . . . . . . . . . . . 14 | 4.5. Fragment Header . . . . . . . . . . . . . . . . . . . . . 15 | |||
4.6. Destination Options Header . . . . . . . . . . . . . . . 21 | 4.6. Destination Options Header . . . . . . . . . . . . . . . 23 | |||
4.7. No Next Header . . . . . . . . . . . . . . . . . . . . . 22 | 4.7. No Next Header . . . . . . . . . . . . . . . . . . . . . 24 | |||
4.8. Defining New Extension Headers and Options . . . . . . . 22 | 4.8. Defining New Extension Headers and Options . . . . . . . 24 | |||
5. Packet Size Issues . . . . . . . . . . . . . . . . . . . . . 23 | 5. Packet Size Issues . . . . . . . . . . . . . . . . . . . . . 25 | |||
6. Flow Labels . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 6. Flow Labels . . . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
7. Traffic Classes . . . . . . . . . . . . . . . . . . . . . . . 24 | 7. Traffic Classes . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
8. Upper-Layer Protocol Issues . . . . . . . . . . . . . . . . . 24 | 8. Upper-Layer Protocol Issues . . . . . . . . . . . . . . . . . 27 | |||
8.1. Upper-Layer Checksums . . . . . . . . . . . . . . . . . . 25 | 8.1. Upper-Layer Checksums . . . . . . . . . . . . . . . . . . 27 | |||
8.2. Maximum Packet Lifetime . . . . . . . . . . . . . . . . . 26 | 8.2. Maximum Packet Lifetime . . . . . . . . . . . . . . . . . 28 | |||
8.3. Maximum Upper-Layer Payload Size . . . . . . . . . . . . 27 | 8.3. Maximum Upper-Layer Payload Size . . . . . . . . . . . . 29 | |||
8.4. Responding to Packets Carrying Routing Headers . . . . . 27 | 8.4. Responding to Packets Carrying Routing Headers . . . . . 29 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 28 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 30 | |||
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 30 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 32 | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 30 | 11.2. Informative References . . . . . . . . . . . . . . . . . 33 | |||
12.2. Informative References . . . . . . . . . . . . . . . . . 31 | Appendix A. Formatting Guidelines for Options . . . . . . . . . 36 | |||
Appendix A. Formatting Guidelines for Options . . . . . . . . . 33 | Appendix B. Changes Since RFC 2460 . . . . . . . . . . . . . . . 39 | |||
Appendix B. Changes Since RFC2460 . . . . . . . . . . . . . . . 36 | Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
B.1. Change History Since RFC2460 . . . . . . . . . . . . . . 39 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 45 | ||||
1. Introduction | 1. Introduction | |||
IP version 6 (IPv6) is a new version of the Internet Protocol (IP), | IP version 6 (IPv6) is a new version of the Internet Protocol (IP), | |||
designed as the successor to IP version 4 (IPv4) [RFC0791]. The | designed as the successor to IP version 4 (IPv4) [RFC791]. The | |||
changes from IPv4 to IPv6 fall primarily into the following | changes from IPv4 to IPv6 fall primarily into the following | |||
categories: | categories: | |||
o Expanded Addressing Capabilities | o Expanded Addressing Capabilities | |||
IPv6 increases the IP address size from 32 bits to 128 bits, to | IPv6 increases the IP address size from 32 bits to 128 bits, to | |||
support more levels of addressing hierarchy, a much greater | support more levels of addressing hierarchy, a much greater | |||
number of addressable nodes, and simpler auto-configuration of | number of addressable nodes, and simpler autoconfiguration of | |||
addresses. The scalability of multicast routing is improved by | addresses. The scalability of multicast routing is improved by | |||
adding a "scope" field to multicast addresses. And a new type | adding a "scope" field to multicast addresses. And a new type | |||
of address called an "anycast address" is defined, used to send | of address called an "anycast address" is defined; it is used | |||
a packet to any one of a group of nodes. | to send a packet to any one of a group of nodes. | |||
o Header Format Simplification | o Header Format Simplification | |||
Some IPv4 header fields have been dropped or made optional, to | Some IPv4 header fields have been dropped or made optional, to | |||
reduce the common-case processing cost of packet handling and | reduce the common-case processing cost of packet handling and | |||
to limit the bandwidth cost of the IPv6 header. | to limit the bandwidth cost of the IPv6 header. | |||
o Improved Support for Extensions and Options | o Improved Support for Extensions and Options | |||
Changes in the way IP header options are encoded allows for | Changes in the way IP header options are encoded allows for | |||
skipping to change at page 3, line 46 ¶ | skipping to change at page 4, line 46 ¶ | |||
A new capability is added to enable the labeling of sequences | A new capability is added to enable the labeling of sequences | |||
of packets that the sender requests to be treated in the | of packets that the sender requests to be treated in the | |||
network as a single flow. | network as a single flow. | |||
o Authentication and Privacy Capabilities | o Authentication and Privacy Capabilities | |||
Extensions to support authentication, data integrity, and | Extensions to support authentication, data integrity, and | |||
(optional) data confidentiality are specified for IPv6. | (optional) data confidentiality are specified for IPv6. | |||
This document specifies the basic IPv6 header and the initially- | This document specifies the basic IPv6 header and the initially | |||
defined IPv6 extension headers and options. It also discusses packet | defined IPv6 extension headers and options. It also discusses packet | |||
size issues, the semantics of flow labels and traffic classes, and | size issues, the semantics of flow labels and traffic classes, and | |||
the effects of IPv6 on upper-layer protocols. The format and | the effects of IPv6 on upper-layer protocols. The format and | |||
semantics of IPv6 addresses are specified separately in [RFC4291]. | semantics of IPv6 addresses are specified separately in [RFC4291]. | |||
The IPv6 version of ICMP, which all IPv6 implementations are required | The IPv6 version of ICMP, which all IPv6 implementations are required | |||
to include, is specified in [RFC4443] | to include, is specified in [RFC4443]. | |||
The data transmission order for IPv6 is the same as for IPv4 as | The data transmission order for IPv6 is the same as for IPv4 as | |||
defined in Appendix B of [RFC0791]. | defined in Appendix B of [RFC791]. | |||
Note: As this document obsoletes [RFC2460], any document referenced | Note: As this document obsoletes [RFC2460], any document referenced | |||
in this document that includes pointers to RFC2460, should be | in this document that includes pointers to RFC 2460 should be | |||
interpreted as referencing this document. | interpreted as referencing this document. | |||
2. Terminology | 2. Terminology | |||
node a device that implements IPv6. | node a device that implements IPv6. | |||
router a node that forwards IPv6 packets not explicitly | router a node that forwards IPv6 packets not explicitly | |||
addressed to itself. [See Note below]. | addressed to itself. (See Note below.) | |||
host any node that is not a router. [See Note below]. | host any node that is not a router. (See Note below.) | |||
upper layer a protocol layer immediately above IPv6. Examples are | upper layer a protocol layer immediately above IPv6. Examples are | |||
transport protocols such as TCP and UDP, control | transport protocols such as TCP and UDP, control | |||
protocols such as ICMP, routing protocols such as OSPF, | protocols such as ICMP, routing protocols such as OSPF, | |||
and internet or lower-layer protocols being "tunneled" | and internet-layer or lower-layer protocols being | |||
over (i.e., encapsulated in) IPv6 such as IPX, | "tunneled" over (i.e., encapsulated in) IPv6 such as | |||
AppleTalk, or IPv6 itself. | Internetwork Packet Exchange (IPX), AppleTalk, or IPv6 | |||
itself. | ||||
link a communication facility or medium over which nodes can | link a communication facility or medium over which nodes can | |||
communicate at the link layer, i.e., the layer | communicate at the link layer, i.e., the layer | |||
immediately below IPv6. Examples are Ethernets (simple | immediately below IPv6. Examples are Ethernets (simple | |||
or bridged); PPP links; X.25, Frame Relay, or ATM | or bridged); PPP links; X.25, Frame Relay, or ATM | |||
networks; and internet (or higher) layer "tunnels", such | networks; and internet-layer or higher-layer "tunnels", | |||
as tunnels over IPv4 or IPv6 itself. | such as tunnels over IPv4 or IPv6 itself. | |||
neighbors nodes attached to the same link. | neighbors nodes attached to the same link. | |||
interface a node's attachment to a link. | interface a node's attachment to a link. | |||
address an IPv6-layer identifier for an interface or a set of | address an IPv6-layer identifier for an interface or a set of | |||
interfaces. | interfaces. | |||
packet an IPv6 header plus payload. | packet an IPv6 header plus payload. | |||
link MTU the maximum transmission unit, i.e., maximum packet size | link MTU the maximum transmission unit, i.e., maximum packet size | |||
in octets, that can be conveyed over a link. | in octets, that can be conveyed over a link. | |||
path MTU the minimum link MTU of all the links in a path between | path MTU the minimum link MTU of all the links in a path between | |||
a source node and a destination node. | a source node and a destination node. | |||
Note: it is possible for a device with multiple interfaces to be | Note: it is possible for a device with multiple interfaces to be | |||
configured to forward non-self-destined packets arriving from some | configured to forward non-self-destined packets arriving from some | |||
set (fewer than all) of its interfaces, and to discard non-self- | set (fewer than all) of its interfaces and to discard non-self- | |||
destined packets arriving from its other interfaces. Such a device | destined packets arriving from its other interfaces. Such a device | |||
must obey the protocol requirements for routers when receiving | must obey the protocol requirements for routers when receiving | |||
packets from, and interacting with neighbors over, the former | packets from, and interacting with neighbors over, the former | |||
(forwarding) interfaces. It must obey the protocol requirements for | (forwarding) interfaces. It must obey the protocol requirements for | |||
hosts when receiving packets from, and interacting with neighbors | hosts when receiving packets from, and interacting with neighbors | |||
over, the latter (non-forwarding) interfaces. | over, the latter (non-forwarding) interfaces. | |||
3. IPv6 Header Format | 3. IPv6 Header Format | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 5, line 41 ¶ | skipping to change at page 6, line 41 ¶ | |||
+ + | + + | |||
| | | | | | |||
+ Destination Address + | + Destination Address + | |||
| | | | | | |||
+ + | + + | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Version 4-bit Internet Protocol version number = 6. | Version 4-bit Internet Protocol version number = 6. | |||
Traffic Class 8-bit traffic class field. See section 7. | Traffic Class 8-bit Traffic Class field. See Section 7. | |||
Flow Label 20-bit flow label. See section 6. | Flow Label 20-bit flow label. See Section 6. | |||
Payload Length 16-bit unsigned integer. Length of the IPv6 | Payload Length 16-bit unsigned integer. Length of the IPv6 | |||
payload, i.e., the rest of the packet | payload, i.e., the rest of the packet | |||
following this IPv6 header, in octets. (Note | following this IPv6 header, in octets. (Note | |||
that any extension headers [Section 4] present | that any extension headers (see Section 4) | |||
are considered part of the payload, i.e., | present are considered part of the payload, | |||
included in the length count.) | i.e., included in the length count.) | |||
Next Header 8-bit selector. Identifies the type of header | Next Header 8-bit selector. Identifies the type of header | |||
immediately following the IPv6 header. Uses | immediately following the IPv6 header. Uses | |||
the same values as the IPv4 Protocol field | the same values as the IPv4 Protocol field | |||
[IANA-PN]. | [IANA-PN]. | |||
Hop Limit 8-bit unsigned integer. Decremented by 1 by | Hop Limit 8-bit unsigned integer. Decremented by 1 by | |||
each node that forwards the packet. When | each node that forwards the packet. When | |||
forwarding, the packet is discarded if Hop | forwarding, the packet is discarded if Hop | |||
Limit was zero when received or is decremented | Limit was zero when received or is decremented | |||
to zero. A node that is the destination of a | to zero. A node that is the destination of a | |||
packet should not discard a packet with hop | packet should not discard a packet with Hop | |||
limit equal to zero, it should process the | Limit equal to zero; it should process the | |||
packet normally. | packet normally. | |||
Source Address 128-bit address of the originator of the | Source Address 128-bit address of the originator of the | |||
packet. See [RFC4291]. | packet. See [RFC4291]. | |||
Destination Address 128-bit address of the intended recipient of | Destination Address 128-bit address of the intended recipient of | |||
the packet (possibly not the ultimate | the packet (possibly not the ultimate | |||
recipient, if a Routing header is present). | recipient, if a Routing header is present). | |||
See [RFC4291] and section 4.4. | See [RFC4291] and Section 4.4. | |||
4. IPv6 Extension Headers | 4. IPv6 Extension Headers | |||
In IPv6, optional internet-layer information is encoded in separate | In IPv6, optional internet-layer information is encoded in separate | |||
headers that may be placed between the IPv6 header and the upper- | headers that may be placed between the IPv6 header and the upper- | |||
layer header in a packet. There is a small number of such extension | layer header in a packet. There is a small number of such extension | |||
headers, each one identified by a distinct Next Header value. | headers, each one identified by a distinct Next Header value. | |||
Extension Headers are numbered from IANA IP Protocol Numbers | Extension headers are numbered from IANA IP Protocol Numbers | |||
[IANA-PN], the same values used for IPv4 and IPv6. When processing a | [IANA-PN], the same values used for IPv4 and IPv6. When processing a | |||
sequence of Next Header values in a packet, the first one that is not | sequence of Next Header values in a packet, the first one that is not | |||
an Extension Header [IANA-EH] indicates that the next item in the | an extension header [IANA-EH] indicates that the next item in the | |||
packet is the corresponding upper-layer header. A special "No Next | packet is the corresponding upper-layer header. A special "No Next | |||
Header" value is used if there is no upper-layer header. | Header" value is used if there is no upper-layer header. | |||
As illustrated in these examples, an IPv6 packet may carry zero, one, | As illustrated in these examples, an IPv6 packet may carry zero, one, | |||
or more extension headers, each identified by the Next Header field | or more extension headers, each identified by the Next Header field | |||
of the preceding header: | of the preceding header: | |||
+---------------+------------------------ | +---------------+------------------------ | |||
| IPv6 header | TCP header + data | | IPv6 header | TCP header + data | |||
| | | | | | |||
skipping to change at page 7, line 42 ¶ | skipping to change at page 8, line 46 ¶ | |||
The Hop-by-Hop Options header is not inserted or deleted, but may be | The Hop-by-Hop Options header is not inserted or deleted, but may be | |||
examined or processed by any node along a packet's delivery path, | examined or processed by any node along a packet's delivery path, | |||
until the packet reaches the node (or each of the set of nodes, in | until the packet reaches the node (or each of the set of nodes, in | |||
the case of multicast) identified in the Destination Address field of | the case of multicast) identified in the Destination Address field of | |||
the IPv6 header. The Hop-by-Hop Options header, when present, must | the IPv6 header. The Hop-by-Hop Options header, when present, must | |||
immediately follow the IPv6 header. Its presence is indicated by the | immediately follow the IPv6 header. Its presence is indicated by the | |||
value zero in the Next Header field of the IPv6 header. | value zero in the Next Header field of the IPv6 header. | |||
NOTE: While [RFC2460] required that all nodes must examine and | NOTE: While [RFC2460] required that all nodes must examine and | |||
process the Hop-by-Hop Options header, it is now expected that nodes | process the Hop-by-Hop Options header, it is now expected that nodes | |||
along a packet's delivery path only examine and process the Hop-by- | along a packet's delivery path only examine and process the | |||
Hop Options header if explicitly configured to do so. | Hop-by-Hop Options header if explicitly configured to do so. | |||
At the Destination node, normal demultiplexing on the Next Header | At the destination node, normal demultiplexing on the Next Header | |||
field of the IPv6 header invokes the module to process the first | field of the IPv6 header invokes the module to process the first | |||
extension header, or the upper-layer header if no extension header is | extension header, or the upper-layer header if no extension header is | |||
present. The contents and semantics of each extension header | present. The contents and semantics of each extension header | |||
determine whether or not to proceed to the next header. Therefore, | determine whether or not to proceed to the next header. Therefore, | |||
extension headers must be processed strictly in the order they appear | extension headers must be processed strictly in the order they appear | |||
in the packet; a receiver must not, for example, scan through a | in the packet; a receiver must not, for example, scan through a | |||
packet looking for a particular kind of extension header and process | packet looking for a particular kind of extension header and process | |||
that header prior to processing all preceding ones. | that header prior to processing all preceding ones. | |||
If, as a result of processing a header, the destination node is | If, as a result of processing a header, the destination node is | |||
skipping to change at page 8, line 51 ¶ | skipping to change at page 10, line 18 ¶ | |||
recommended that those headers appear in the following order: | recommended that those headers appear in the following order: | |||
IPv6 header | IPv6 header | |||
Hop-by-Hop Options header | Hop-by-Hop Options header | |||
Destination Options header (note 1) | Destination Options header (note 1) | |||
Routing header | Routing header | |||
Fragment header | Fragment header | |||
Authentication header (note 2) | Authentication header (note 2) | |||
Encapsulating Security Payload header (note 2) | Encapsulating Security Payload header (note 2) | |||
Destination Options header (note 3) | Destination Options header (note 3) | |||
upper-layer header | Upper-Layer header | |||
note 1: for options to be processed by the first destination that | note 1: for options to be processed by the first destination that | |||
appears in the IPv6 Destination Address field plus | appears in the IPv6 Destination Address field plus | |||
subsequent destinations listed in the Routing header. | subsequent destinations listed in the Routing header. | |||
note 2: additional recommendations regarding the relative order of | note 2: additional recommendations regarding the relative order of | |||
the Authentication and Encapsulating Security Payload | the Authentication and Encapsulating Security Payload | |||
headers are given in [RFC4303]. | headers are given in [RFC4303]. | |||
note 3: for options to be processed only by the final destination | note 3: for options to be processed only by the final destination | |||
of the packet. | of the packet. | |||
Each extension header should occur at most once, except for the | Each extension header should occur at most once, except for the | |||
Destination Options header which should occur at most twice (once | Destination Options header, which should occur at most twice (once | |||
before a Routing header and once before the upper-layer header). | before a Routing header and once before the upper-layer header). | |||
If the upper-layer header is another IPv6 header (in the case of IPv6 | If the upper-layer header is another IPv6 header (in the case of IPv6 | |||
being tunneled over or encapsulated in IPv6), it may be followed by | being tunneled over or encapsulated in IPv6), it may be followed by | |||
its own extension headers, which are separately subject to the same | its own extension headers, which are separately subject to the same | |||
ordering recommendations. | ordering recommendations. | |||
If and when other extension headers are defined, their ordering | If and when other extension headers are defined, their ordering | |||
constraints relative to the above listed headers must be specified. | constraints relative to the above listed headers must be specified. | |||
IPv6 nodes must accept and attempt to process extension headers in | IPv6 nodes must accept and attempt to process extension headers in | |||
any order and occurring any number of times in the same packet, | any order and occurring any number of times in the same packet, | |||
except for the Hop-by-Hop Options header which is restricted to | except for the Hop-by-Hop Options header, which is restricted to | |||
appear immediately after an IPv6 header only. Nonetheless, it is | appear immediately after an IPv6 header only. Nonetheless, it is | |||
strongly advised that sources of IPv6 packets adhere to the above | strongly advised that sources of IPv6 packets adhere to the above | |||
recommended order until and unless subsequent specifications revise | recommended order until and unless subsequent specifications revise | |||
that recommendation. | that recommendation. | |||
4.2. Options | 4.2. Options | |||
Two of the currently-defined extension headers defined in this | Two of the currently defined extension headers specified in this | |||
document -- the Hop-by-Hop Options header and the Destination Options | document -- the Hop-by-Hop Options header and the Destination Options | |||
header -- carry a variable number of type-length-value (TLV) encoded | header -- carry a variable number of "options" that are type-length- | |||
"options", of the following format: | value (TLV) encoded in the following format: | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - | |||
| Option Type | Opt Data Len | Option Data | | Option Type | Opt Data Len | Option Data | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - | |||
Option Type 8-bit identifier of the type of option. | Option Type 8-bit identifier of the type of option. | |||
Opt Data Len 8-bit unsigned integer. Length of the Option | Opt Data Len 8-bit unsigned integer. Length of the Option | |||
Data field of this option, in octets. | Data field of this option, in octets. | |||
Option Data Variable-length field. Option-Type-specific | Option Data Variable-length field. Option-Type-specific | |||
data. | data. | |||
The sequence of options within a header must be processed strictly in | The sequence of options within a header must be processed strictly in | |||
the order they appear in the header; a receiver must not, for | the order they appear in the header; a receiver must not, for | |||
example, scan through the header looking for a particular kind of | example, scan through the header looking for a particular kind of | |||
option and process that option prior to processing all preceding | option and process that option prior to processing all preceding | |||
ones. | ones. | |||
The Option Type identifiers are internally encoded such that their | The Option Type identifiers are internally encoded such that their | |||
highest-order two bits specify the action that must be taken if the | highest-order 2 bits specify the action that must be taken if the | |||
processing IPv6 node does not recognize the Option Type: | processing IPv6 node does not recognize the Option Type: | |||
00 - skip over this option and continue processing the header. | 00 - skip over this option and continue processing the header. | |||
01 - discard the packet. | 01 - discard the packet. | |||
10 - discard the packet and, regardless of whether or not the | 10 - discard the packet and, regardless of whether or not the | |||
packet's Destination Address was a multicast address, send an | packet's Destination Address was a multicast address, send an | |||
ICMP Parameter Problem, Code 2, message to the packet's | ICMP Parameter Problem, Code 2, message to the packet's | |||
Source Address, pointing to the unrecognized Option Type. | Source Address, pointing to the unrecognized Option Type. | |||
11 - discard the packet and, only if the packet's Destination | 11 - discard the packet and, only if the packet's Destination | |||
Address was not a multicast address, send an ICMP Parameter | Address was not a multicast address, send an ICMP Parameter | |||
Problem, Code 2, message to the packet's Source Address, | Problem, Code 2, message to the packet's Source Address, | |||
pointing to the unrecognized Option Type. | pointing to the unrecognized Option Type. | |||
The third-highest-order bit of the Option Type specifies whether or | The third-highest-order bit of the Option Type specifies whether or | |||
not the Option Data of that option can change en-route to the | not the Option Data of that option can change en route to the | |||
packet's final destination. When an Authentication header is present | packet's final destination. When an Authentication header is present | |||
in the packet, for any option whose data may change en-route, its | in the packet, for any option whose data may change en route, its | |||
entire Option Data field must be treated as zero-valued octets when | entire Option Data field must be treated as zero-valued octets when | |||
computing or verifying the packet's authenticating value. | computing or verifying the packet's authenticating value. | |||
0 - Option Data does not change en-route | 0 - Option Data does not change en route | |||
1 - Option Data may change en-route | 1 - Option Data may change en route | |||
The three high-order bits described above are to be treated as part | The three high-order bits described above are to be treated as part | |||
of the Option Type, not independent of the Option Type. That is, a | of the Option Type, not independent of the Option Type. That is, a | |||
particular option is identified by a full 8-bit Option Type, not just | particular option is identified by a full 8-bit Option Type, not just | |||
the low-order 5 bits of an Option Type. | the low-order 5 bits of an Option Type. | |||
The same Option Type numbering space is used for both the Hop-by-Hop | The same Option Type numbering space is used for both the Hop-by-Hop | |||
Options header and the Destination Options header. However, the | Options header and the Destination Options header. However, the | |||
specification of a particular option may restrict its use to only one | specification of a particular option may restrict its use to only one | |||
of those two headers. | of those two headers. | |||
Individual options may have specific alignment requirements, to | Individual options may have specific alignment requirements, to | |||
ensure that multi-octet values within Option Data fields fall on | ensure that multi-octet values within Option Data fields fall on | |||
natural boundaries. The alignment requirement of an option is | natural boundaries. The alignment requirement of an option is | |||
specified using the notation xn+y, meaning the Option Type must | specified using the notation xn+y, meaning the Option Type must | |||
appear at an integer multiple of x octets from the start of the | appear at an integer multiple of x octets from the start of the | |||
header, plus y octets. For example: | header, plus y octets. For example: | |||
2n means any 2-octet offset from the start of the header. | 2n means any 2-octet offset from the start of the header. | |||
8n+2 means any 8-octet offset from the start of the header, plus 2 | 8n+2 means any 8-octet offset from the start of the header, plus | |||
octets. | 2 octets. | |||
There are two padding options which are used when necessary to align | There are two padding options that are used when necessary to align | |||
subsequent options and to pad out the containing header to a multiple | subsequent options and to pad out the containing header to a multiple | |||
of 8 octets in length. These padding options must be recognized by | of 8 octets in length. These padding options must be recognized by | |||
all IPv6 implementations: | all IPv6 implementations: | |||
Pad1 option (alignment requirement: none) | Pad1 option (alignment requirement: none) | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| 0 | | | 0 | | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
NOTE! the format of the Pad1 option is a special case -- it does | NOTE! the format of the Pad1 option is a special case -- it does | |||
not have length and value fields. | not have length and value fields. | |||
The Pad1 option is used to insert one octet of padding into the | The Pad1 option is used to insert 1 octet of padding into the | |||
Options area of a header. If more than one octet of padding is | Options area of a header. If more than one octet of padding is | |||
required, the PadN option, described next, should be used, rather | required, the PadN option, described next, should be used, rather | |||
than multiple Pad1 options. | than multiple Pad1 options. | |||
PadN option (alignment requirement: none) | PadN option (alignment requirement: none) | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - | |||
| 1 | Opt Data Len | Option Data | | 1 | Opt Data Len | Option Data | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - - | |||
skipping to change at page 12, line 14 ¶ | skipping to change at page 13, line 23 ¶ | |||
Opt Data Len field contains the value N-2, and the Option Data | Opt Data Len field contains the value N-2, and the Option Data | |||
consists of N-2 zero-valued octets. | consists of N-2 zero-valued octets. | |||
Appendix A contains formatting guidelines for designing new options. | Appendix A contains formatting guidelines for designing new options. | |||
4.3. Hop-by-Hop Options Header | 4.3. Hop-by-Hop Options Header | |||
The Hop-by-Hop Options header is used to carry optional information | The Hop-by-Hop Options header is used to carry optional information | |||
that may be examined and processed by every node along a packet's | that may be examined and processed by every node along a packet's | |||
delivery path. The Hop-by-Hop Options header is identified by a Next | delivery path. The Hop-by-Hop Options header is identified by a Next | |||
Header value of 0 in the IPv6 header, and has the following format: | Header value of 0 in the IPv6 header and has the following format: | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Header | Hdr Ext Len | | | | Next Header | Hdr Ext Len | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | |||
| | | | | | |||
. . | . . | |||
. Options . | . Options . | |||
. . | . . | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Next Header 8-bit selector. Identifies the type of header | Next Header 8-bit selector. Identifies the type of header | |||
immediately following the Hop-by-Hop Options | immediately following the Hop-by-Hop Options | |||
header. Uses the same values as the IPv4 | header. Uses the same values as the IPv4 | |||
Protocol field [IANA-PN]. | Protocol field [IANA-PN]. | |||
Hdr Ext Len 8-bit unsigned integer. Length of the Hop-by- | Hdr Ext Len 8-bit unsigned integer. Length of the | |||
Hop Options header in 8-octet units, not | Hop-by-Hop Options header in 8-octet units, | |||
including the first 8 octets. | not including the first 8 octets. | |||
Options Variable-length field, of length such that the | Options Variable-length field, of length such that the | |||
complete Hop-by-Hop Options header is an | complete Hop-by-Hop Options header is an | |||
integer multiple of 8 octets long. Contains | integer multiple of 8 octets long. Contains | |||
one or more TLV-encoded options, as described | one or more TLV-encoded options, as described | |||
in section 4.2. | in Section 4.2. | |||
The only hop-by-hop options defined in this document are the Pad1 and | The only hop-by-hop options defined in this document are the Pad1 and | |||
PadN options specified in section 4.2. | PadN options specified in Section 4.2. | |||
4.4. Routing Header | 4.4. Routing Header | |||
The Routing header is used by an IPv6 source to list one or more | The Routing header is used by an IPv6 source to list one or more | |||
intermediate nodes to be "visited" on the way to a packet's | intermediate nodes to be "visited" on the way to a packet's | |||
destination. This function is very similar to IPv4's Loose Source | destination. This function is very similar to IPv4's Loose Source | |||
and Record Route option. The Routing header is identified by a Next | and Record Route option. The Routing header is identified by a Next | |||
Header value of 43 in the immediately preceding header, and has the | Header value of 43 in the immediately preceding header and has the | |||
following format: | following format: | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Header | Hdr Ext Len | Routing Type | Segments Left | | | Next Header | Hdr Ext Len | Routing Type | Segments Left | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
. . | . . | |||
. type-specific data . | . type-specific data . | |||
. . | . . | |||
| | | | | | |||
skipping to change at page 14, line 24 ¶ | skipping to change at page 15, line 33 ¶ | |||
The currently defined IPv6 Routing Headers and their status can be | The currently defined IPv6 Routing Headers and their status can be | |||
found at [IANA-RH]. Allocation guidelines for IPv6 Routing Headers | found at [IANA-RH]. Allocation guidelines for IPv6 Routing Headers | |||
can be found in [RFC5871]. | can be found in [RFC5871]. | |||
4.5. Fragment Header | 4.5. Fragment Header | |||
The Fragment header is used by an IPv6 source to send a packet larger | The Fragment header is used by an IPv6 source to send a packet larger | |||
than would fit in the path MTU to its destination. (Note: unlike | than would fit in the path MTU to its destination. (Note: unlike | |||
IPv4, fragmentation in IPv6 is performed only by source nodes, not by | IPv4, fragmentation in IPv6 is performed only by source nodes, not by | |||
routers along a packet's delivery path -- see section 5.) The | routers along a packet's delivery path -- see Section 5.) The | |||
Fragment header is identified by a Next Header value of 44 in the | Fragment header is identified by a Next Header value of 44 in the | |||
immediately preceding header, and has the following format: | immediately preceding header and has the following format: | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Header | Reserved | Fragment Offset |Res|M| | | Next Header | Reserved | Fragment Offset |Res|M| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Identification | | | Identification | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Next Header 8-bit selector. Identifies the initial header | Next Header 8-bit selector. Identifies the initial header | |||
type of the Fragmentable Part of the original | type of the Fragmentable Part of the original | |||
packet (defined below). Uses the same values | packet (defined below). Uses the same values | |||
skipping to change at page 15, line 40 ¶ | skipping to change at page 17, line 16 ¶ | |||
"original packet", and it is considered to consist of three parts, as | "original packet", and it is considered to consist of three parts, as | |||
illustrated: | illustrated: | |||
original packet: | original packet: | |||
+------------------+-------------------------+---//----------------+ | +------------------+-------------------------+---//----------------+ | |||
| Per-Fragment | Extension & Upper-Layer | Fragmentable | | | Per-Fragment | Extension & Upper-Layer | Fragmentable | | |||
| Headers | Headers | Part | | | Headers | Headers | Part | | |||
+------------------+-------------------------+---//----------------+ | +------------------+-------------------------+---//----------------+ | |||
The Per-Fragment Headers must consist of the IPv6 header plus any | The Per-Fragment headers must consist of the IPv6 header plus any | |||
extension headers that must be processed by nodes en route to the | extension headers that must be processed by nodes en route to the | |||
destination, that is, all headers up to and including the Routing | destination, that is, all headers up to and including the Routing | |||
header if present, else the Hop-by-Hop Options header if present, | header if present, else the Hop-by-Hop Options header if present, | |||
else no extension headers. | else no extension headers. | |||
The Extension Headers are all other extension headers that are not | The Extension headers are all other extension headers that are not | |||
included in the Per-Fragment headers part of the packet. For this | included in the Per-Fragment headers part of the packet. For this | |||
purpose, the Encapsulating Security Payload (ESP) is not | purpose, the Encapsulating Security Payload (ESP) is not | |||
considered an extension header. The Upper-Layer Header is the | considered an extension header. The Upper-Layer header is the | |||
first upper-layer header that is not an IPv6 extension header. | first upper-layer header that is not an IPv6 extension header. | |||
Examples of upper-layer headers include TCP, UDP, IPv4, IPv6, | Examples of upper-layer headers include TCP, UDP, IPv4, IPv6, | |||
ICMPv6, and as noted ESP. | ICMPv6, and as noted ESP. | |||
The Fragmentable Part consists of the rest of the packet after the | The Fragmentable Part consists of the rest of the packet after the | |||
upper-layer header or after any header (i.e., initial IPv6 header | upper-layer header or after any header (i.e., initial IPv6 header | |||
or extension header) that contains a Next Header value of No Next | or extension header) that contains a Next Header value of No Next | |||
Header. | Header. | |||
The Fragmentable Part of the original packet is divided into | The Fragmentable Part of the original packet is divided into | |||
fragments. The lengths of the fragments must be chosen such that the | fragments. The lengths of the fragments must be chosen such that the | |||
skipping to change at page 16, line 16 ¶ | skipping to change at page 17, line 38 ¶ | |||
ICMPv6, and as noted ESP. | ICMPv6, and as noted ESP. | |||
The Fragmentable Part consists of the rest of the packet after the | The Fragmentable Part consists of the rest of the packet after the | |||
upper-layer header or after any header (i.e., initial IPv6 header | upper-layer header or after any header (i.e., initial IPv6 header | |||
or extension header) that contains a Next Header value of No Next | or extension header) that contains a Next Header value of No Next | |||
Header. | Header. | |||
The Fragmentable Part of the original packet is divided into | The Fragmentable Part of the original packet is divided into | |||
fragments. The lengths of the fragments must be chosen such that the | fragments. The lengths of the fragments must be chosen such that the | |||
resulting fragment packets fit within the MTU of the path to the | resulting fragment packets fit within the MTU of the path to the | |||
packets' destination(s). Each complete fragment, except possibly the | packet's destination(s). Each complete fragment, except possibly the | |||
last ("rightmost") one, being an integer multiple of 8 octets long. | last ("rightmost") one, is an integer multiple of 8 octets long. | |||
The fragments are transmitted in separate "fragment packets" as | The fragments are transmitted in separate "fragment packets" as | |||
illustrated: | illustrated: | |||
original packet: | original packet: | |||
+-----------------+-----------------+--------+--------+-//-+--------+ | +-----------------+-----------------+--------+--------+-//-+--------+ | |||
| Per-Fragment |Ext & Upper-Layer| first | second | | last | | | Per-Fragment |Ext & Upper-Layer| first | second | | last | | |||
| Headers | Headers |fragment|fragment|....|fragment| | | Headers | Headers |fragment|fragment|....|fragment| | |||
+-----------------+-----------------+--------+--------+-//-+--------+ | +-----------------+-----------------+--------+--------+-//-+--------+ | |||
skipping to change at page 16, line 50 ¶ | skipping to change at page 18, line 36 ¶ | |||
o | o | |||
o | o | |||
o | o | |||
+------------------+--------+----------+ | +------------------+--------+----------+ | |||
| Per-Fragment |Fragment| last | | | Per-Fragment |Fragment| last | | |||
| Headers | Header | fragment | | | Headers | Header | fragment | | |||
+------------------+--------+----------+ | +------------------+--------+----------+ | |||
The first fragment packet is composed of: | The first fragment packet is composed of: | |||
(1) The Per-Fragment Headers of the original packet, with the | (1) The Per-Fragment headers of the original packet, with the | |||
Payload Length of the original IPv6 header changed to contain the | Payload Length of the original IPv6 header changed to contain | |||
length of this fragment packet only (excluding the length of the | the length of this fragment packet only (excluding the length | |||
IPv6 header itself), and the Next Header field of the last header | of the IPv6 header itself), and the Next Header field of the | |||
of the Per-Fragment Headers changed to 44. | last header of the Per-Fragment headers changed to 44. | |||
(2) A Fragment header containing: | (2) A Fragment header containing: | |||
The Next Header value that identifies the first header after | The Next Header value that identifies the first header | |||
the Per-Fragment Headers of the original packet. | after the Per-Fragment headers of the original packet. | |||
A Fragment Offset containing the offset of the fragment, in | A Fragment Offset containing the offset of the fragment, | |||
8-octet units, relative to the start of the Fragmentable Part | in 8-octet units, relative to the start of the | |||
of the original packet. The Fragment Offset of the first | Fragmentable Part of the original packet. The Fragment | |||
("leftmost") fragment is 0. | Offset of the first ("leftmost") fragment is 0. | |||
An M flag value of 1 as this is the first fragment. | An M flag value of 1 as this is the first fragment. | |||
The Identification value generated for the original packet. | The Identification value generated for the original | |||
packet. | ||||
(3) Extension Headers, if any, and the Upper-Layer header. These | (3) Extension headers, if any, and the Upper-Layer header. These | |||
headers must be in the first fragment. Note: This restricts the | headers must be in the first fragment. Note: This restricts | |||
size of the headers through the Upper-Layer header to the MTU of | the size of the headers through the Upper-Layer header to the | |||
the path to the packets' destinations(s). | MTU of the path to the packet's destinations(s). | |||
(4) The first fragment. | (4) The first fragment. | |||
The subsequent fragment packets are composed of: | The subsequent fragment packets are composed of: | |||
(1) The Per-Fragment Headers of the original packet, with the | (1) The Per-Fragment headers of the original packet, with the | |||
Payload Length of the original IPv6 header changed to contain the | Payload Length of the original IPv6 header changed to contain | |||
length of this fragment packet only (excluding the length of the | the length of this fragment packet only (excluding the length | |||
IPv6 header itself), and the Next Header field of the last header | of the IPv6 header itself), and the Next Header field of the | |||
of the Per-Fragment Headers changed to 44. | last header of the Per-Fragment headers changed to 44. | |||
(2) A Fragment header containing: | (2) A Fragment header containing: | |||
The Next Header value that identifies the first header after | The Next Header value that identifies the first header | |||
the Per-Fragment Headers of the original packet. | after the Per-Fragment headers of the original packet. | |||
A Fragment Offset containing the offset of the fragment, in | A Fragment Offset containing the offset of the fragment, | |||
8-octet units, relative to the start of the Fragmentable part | in 8-octet units, relative to the start of the | |||
of the original packet. | Fragmentable Part of the original packet. | |||
An M flag value of 0 if the fragment is the last ("rightmost") | An M flag value of 0 if the fragment is the last | |||
one, else an M flag value of 1. | ("rightmost") one, else an M flag value of 1. | |||
The Identification value generated for the original packet. | The Identification value generated for the original | |||
packet. | ||||
(3) The fragment itself. | (3) The fragment itself. | |||
Fragments must not be created that overlap with any other fragments | Fragments must not be created that overlap with any other fragments | |||
created from the original packet. | created from the original packet. | |||
At the destination, fragment packets are reassembled into their | At the destination, fragment packets are reassembled into their | |||
original, unfragmented form, as illustrated: | original, unfragmented form, as illustrated: | |||
reassembled original packet: | reassembled original packet: | |||
+---------------+-----------------+---------+--------+-//--+--------+ | +---------------+-----------------+---------+--------+-//--+--------+ | |||
| Per-Fragment |Ext & Upper-Layer| first | second | | last | | | Per-Fragment |Ext & Upper-Layer| first | second | | last | | |||
| Headers | Headers |frag data|fragment|.....|fragment| | | Headers | Headers |frag data|fragment|.....|fragment| | |||
+---------------+-----------------+---------+--------+-//--+--------+ | +---------------+-----------------+---------+--------+-//--+--------+ | |||
The following rules govern reassembly: | The following rules govern reassembly: | |||
An original packet is reassembled only from fragment packets that | An original packet is reassembled only from fragment packets that | |||
have the same Source Address, Destination Address, and Fragment | have the same Source Address, Destination Address, and Fragment | |||
Identification. | Identification. | |||
The Per-Fragment Headers of the reassembled packet consists of all | The Per-Fragment headers of the reassembled packet consists of all | |||
headers up to, but not including, the Fragment header of the first | headers up to, but not including, the Fragment header of the first | |||
fragment packet (that is, the packet whose Fragment Offset is | fragment packet (that is, the packet whose Fragment Offset is | |||
zero), with the following two changes: | zero), with the following two changes: | |||
The Next Header field of the last header of the Per-Fragment | The Next Header field of the last header of the Per-Fragment | |||
Headers is obtained from the Next Header field of the first | headers is obtained from the Next Header field of the first | |||
fragment's Fragment header. | fragment's Fragment header. | |||
The Payload Length of the reassembled packet is computed from | The Payload Length of the reassembled packet is computed from | |||
the length of the Per-Fragment Headers and the length and | the length of the Per-Fragment headers and the length and | |||
offset of the last fragment. For example, a formula for | offset of the last fragment. For example, a formula for | |||
computing the Payload Length of the reassembled original packet | computing the Payload Length of the reassembled original packet | |||
is: | is: | |||
PL.orig = PL.first - FL.first - 8 + (8 * FO.last) + FL.last | PL.orig = PL.first - FL.first - 8 + (8 * FO.last) + FL.last | |||
where | where | |||
PL.orig = Payload Length field of reassembled packet. | PL.orig = Payload Length field of reassembled packet. | |||
PL.first = Payload Length field of first fragment packet. | PL.first = Payload Length field of first fragment packet. | |||
FL.first = length of fragment following Fragment header of | FL.first = length of fragment following Fragment header of | |||
first fragment packet. | first fragment packet. | |||
FO.last = Fragment Offset field of Fragment header of last | FO.last = Fragment Offset field of Fragment header of last | |||
fragment packet. | fragment packet. | |||
FL.last = length of fragment following Fragment header of | FL.last = length of fragment following Fragment header of | |||
last fragment packet. | last fragment packet. | |||
The Fragmentable Part of the reassembled packet is constructed | The Fragmentable Part of the reassembled packet is constructed | |||
from the fragments following the Fragment headers in each of | from the fragments following the Fragment headers in each of | |||
the fragment packets. The length of each fragment is computed | the fragment packets. The length of each fragment is computed | |||
skipping to change at page 19, line 27 ¶ | skipping to change at page 21, line 14 ¶ | |||
relative position in Fragmentable Part is computed from its | relative position in Fragmentable Part is computed from its | |||
Fragment Offset value. | Fragment Offset value. | |||
The Fragment header is not present in the final, reassembled | The Fragment header is not present in the final, reassembled | |||
packet. | packet. | |||
If the fragment is a whole datagram (that is, both the Fragment | If the fragment is a whole datagram (that is, both the Fragment | |||
Offset field and the M flag are zero), then it does not need | Offset field and the M flag are zero), then it does not need | |||
any further reassembly and should be processed as a fully | any further reassembly and should be processed as a fully | |||
reassembled packet (i.e., updating Next Header, adjust Payload | reassembled packet (i.e., updating Next Header, adjust Payload | |||
Length, removing the Fragmentation Header, etc.). Any other | Length, removing the Fragment header, etc.). Any other | |||
fragments that match this packet (i.e., the same IPv6 Source | fragments that match this packet (i.e., the same IPv6 Source | |||
Address, IPv6 Destination Address, and Fragment Identification) | Address, IPv6 Destination Address, and Fragment Identification) | |||
should be processed independently. | should be processed independently. | |||
The following error conditions may arise when reassembling fragmented | The following error conditions may arise when reassembling fragmented | |||
packets: | packets: | |||
o If insufficient fragments are received to complete reassembly | o If insufficient fragments are received to complete reassembly | |||
of a packet within 60 seconds of the reception of the first- | of a packet within 60 seconds of the reception of the first- | |||
arriving fragment of that packet, reassembly of that packet | arriving fragment of that packet, reassembly of that packet | |||
skipping to change at page 20, line 17 ¶ | skipping to change at page 22, line 5 ¶ | |||
would exceed 65,535 octets, then that fragment must be | would exceed 65,535 octets, then that fragment must be | |||
discarded and an ICMP Parameter Problem, Code 0, message should | discarded and an ICMP Parameter Problem, Code 0, message should | |||
be sent to the source of the fragment, pointing to the Fragment | be sent to the source of the fragment, pointing to the Fragment | |||
Offset field of the fragment packet. | Offset field of the fragment packet. | |||
o If the first fragment does not include all headers through an | o If the first fragment does not include all headers through an | |||
Upper-Layer header, then that fragment should be discarded and | Upper-Layer header, then that fragment should be discarded and | |||
an ICMP Parameter Problem, Code 3, message should be sent to | an ICMP Parameter Problem, Code 3, message should be sent to | |||
the source of the fragment, with the Pointer field set to zero. | the source of the fragment, with the Pointer field set to zero. | |||
o If any of the fragments being reassembled overlaps with any | o If any of the fragments being reassembled overlap with any | |||
other fragments being reassembled for the same packet, | other fragments being reassembled for the same packet, | |||
reassembly of that packet must be abandoned and all the | reassembly of that packet must be abandoned and all the | |||
fragments that have been received for that packet must be | fragments that have been received for that packet must be | |||
discarded and no ICMP error messages should be sent. | discarded, and no ICMP error messages should be sent. | |||
It should be noted that fragments may be duplicated in the | It should be noted that fragments may be duplicated in the | |||
network. Instead of treating these exact duplicate fragments | network. Instead of treating these exact duplicate fragments | |||
as overlapping fragments, an implementation may choose to | as overlapping fragments, an implementation may choose to | |||
detect this case and drop exact duplicate fragments while | detect this case and drop exact duplicate fragments while | |||
keeping the other fragments belonging to the same packet. | keeping the other fragments belonging to the same packet. | |||
The following conditions are not expected to occur frequently, but | The following conditions are not expected to occur frequently but are | |||
are not considered errors if they do: | not considered errors if they do: | |||
The number and content of the headers preceding the Fragment | The number and content of the headers preceding the Fragment | |||
header of different fragments of the same original packet may | header of different fragments of the same original packet may | |||
differ. Whatever headers are present, preceding the Fragment | differ. Whatever headers are present, preceding the Fragment | |||
header in each fragment packet, are processed when the packets | header in each fragment packet, are processed when the packets | |||
arrive, prior to queueing the fragments for reassembly. Only | arrive, prior to queueing the fragments for reassembly. Only | |||
those headers in the Offset zero fragment packet are retained in | those headers in the Offset zero fragment packet are retained in | |||
the reassembled packet. | the reassembled packet. | |||
The Next Header values in the Fragment headers of different | The Next Header values in the Fragment headers of different | |||
skipping to change at page 21, line 10 ¶ | skipping to change at page 23, line 10 ¶ | |||
the values from the Offset zero fragment is not sufficient. For | the values from the Offset zero fragment is not sufficient. For | |||
example, Section 5.3 of [RFC3168] describes how to combine the | example, Section 5.3 of [RFC3168] describes how to combine the | |||
Explicit Congestion Notification (ECN) bits from different | Explicit Congestion Notification (ECN) bits from different | |||
fragments to derive the ECN bits of the reassembled packet. | fragments to derive the ECN bits of the reassembled packet. | |||
4.6. Destination Options Header | 4.6. Destination Options Header | |||
The Destination Options header is used to carry optional information | The Destination Options header is used to carry optional information | |||
that need be examined only by a packet's destination node(s). The | that need be examined only by a packet's destination node(s). The | |||
Destination Options header is identified by a Next Header value of 60 | Destination Options header is identified by a Next Header value of 60 | |||
in the immediately preceding header, and has the following format: | in the immediately preceding header and has the following format: | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Header | Hdr Ext Len | | | | Next Header | Hdr Ext Len | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | |||
| | | | | | |||
. . | . . | |||
. Options . | . Options . | |||
. . | . . | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 21, line 35 ¶ | skipping to change at page 23, line 35 ¶ | |||
Protocol field [IANA-PN]. | Protocol field [IANA-PN]. | |||
Hdr Ext Len 8-bit unsigned integer. Length of the | Hdr Ext Len 8-bit unsigned integer. Length of the | |||
Destination Options header in 8-octet units, | Destination Options header in 8-octet units, | |||
not including the first 8 octets. | not including the first 8 octets. | |||
Options Variable-length field, of length such that the | Options Variable-length field, of length such that the | |||
complete Destination Options header is an | complete Destination Options header is an | |||
integer multiple of 8 octets long. Contains | integer multiple of 8 octets long. Contains | |||
one or more TLV-encoded options, as described | one or more TLV-encoded options, as described | |||
in section 4.2. | in Section 4.2. | |||
The only destination options defined in this document are the Pad1 | The only destination options defined in this document are the Pad1 | |||
and PadN options specified in section 4.2. | and PadN options specified in Section 4.2. | |||
Note that there are two possible ways to encode optional destination | Note that there are two possible ways to encode optional destination | |||
information in an IPv6 packet: either as an option in the Destination | information in an IPv6 packet: either as an option in the Destination | |||
Options header, or as a separate extension header. The Fragment | Options header or as a separate extension header. The Fragment | |||
header and the Authentication header are examples of the latter | header and the Authentication header are examples of the latter | |||
approach. Which approach can be used depends on what action is | approach. Which approach can be used depends on what action is | |||
desired of a destination node that does not understand the optional | desired of a destination node that does not understand the optional | |||
information: | information: | |||
o If the desired action is for the destination node to discard | o If the desired action is for the destination node to discard | |||
the packet and, only if the packet's Destination Address is not | the packet and, only if the packet's Destination Address is not | |||
a multicast address, send an ICMP Unrecognized Type message to | a multicast address, send an ICMP Unrecognized Type message to | |||
the packet's Source Address, then the information may be | the packet's Source Address, then the information may be | |||
encoded either as a separate header or as an option in the | encoded either as a separate header or as an option in the | |||
Destination Options header whose Option Type has the value 11 | Destination Options header whose Option Type has the value 11 | |||
in its highest-order two bits. The choice may depend on such | in its highest-order 2 bits. The choice may depend on such | |||
factors as which takes fewer octets, or which yields better | factors as which takes fewer octets, or which yields better | |||
alignment or more efficient parsing. | alignment or more efficient parsing. | |||
o If any other action is desired, the information must be encoded | o If any other action is desired, the information must be encoded | |||
as an option in the Destination Options header whose Option | as an option in the Destination Options header whose Option | |||
Type has the value 00, 01, or 10 in its highest-order two bits, | Type has the value 00, 01, or 10 in its highest-order 2 bits, | |||
specifying the desired action (see section 4.2). | specifying the desired action (see Section 4.2). | |||
4.7. No Next Header | 4.7. No Next Header | |||
The value 59 in the Next Header field of an IPv6 header or any | The value 59 in the Next Header field of an IPv6 header or any | |||
extension header indicates that there is nothing following that | extension header indicates that there is nothing following that | |||
header. If the Payload Length field of the IPv6 header indicates the | header. If the Payload Length field of the IPv6 header indicates the | |||
presence of octets past the end of a header whose Next Header field | presence of octets past the end of a header whose Next Header field | |||
contains 59, those octets must be ignored, and passed on unchanged if | contains 59, those octets must be ignored and passed on unchanged if | |||
the packet is forwarded. | the packet is forwarded. | |||
4.8. Defining New Extension Headers and Options | 4.8. Defining New Extension Headers and Options | |||
Defining new IPv6 extension headers is not recommended, unless there | Defining new IPv6 extension headers is not recommended, unless there | |||
are no existing IPv6 extension headers that can be used by specifying | are no existing IPv6 extension headers that can be used by specifying | |||
a new option for that IPv6 extension header. A proposal to specify a | a new option for that IPv6 extension header. A proposal to specify a | |||
new IPv6 extension header must include a detailed technical | new IPv6 extension header must include a detailed technical | |||
explanation of why an existing IPv6 extension header can not be used | explanation of why an existing IPv6 extension header can not be used | |||
for the desired new function. See [RFC6564] for additional | for the desired new function. See [RFC6564] for additional | |||
background information. | background information. | |||
Note: New extension headers that require hop-by-hop behavior must not | Note: New extension headers that require hop-by-hop behavior must not | |||
be defined because, as specified in Section 4 of this document, the | be defined because, as specified in Section 4 of this document, the | |||
only Extension Header that has hop-by-hop behavior is the Hop-by-Hop | only extension header that has hop-by-hop behavior is the Hop-by-Hop | |||
Options header. | Options header. | |||
New hop-by-hop options are not recommended because nodes may be | New hop-by-hop options are not recommended because nodes may be | |||
configured to ignore the Hop-by-Hop Option header, drop packets | configured to ignore the Hop-by-Hop Options header, drop packets | |||
containing a hop-by-hop header, or assign packets containing a hop- | containing a Hop-by-Hop Options header, or assign packets containing | |||
by-hop header to a slow processing path. Designers considering | a Hop-by-Hop Options header to a slow processing path. Designers | |||
defining new hop-by-hop options need to be aware of this likely | considering defining new hop-by-hop options need to be aware of this | |||
behaviour. There has to be a very clear justification why any new | likely behavior. There has to be a very clear justification why any | |||
hop-by-hop option is needed before it is standardized. | new hop-by-hop option is needed before it is standardized. | |||
Instead of defining new Extension Headers, it is recommended that the | Instead of defining new extension headers, it is recommended that the | |||
Destination Options header is used to carry optional information that | Destination Options header is used to carry optional information that | |||
must be examined only by a packet's destination node(s), because they | must be examined only by a packet's destination node(s), because they | |||
provide better handling and backward compatibility. | provide better handling and backward compatibility. | |||
If new Extension Headers are defined, they need to use the following | If new extension headers are defined, they need to use the following | |||
format: | format: | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Header | Hdr Ext Len | | | | Next Header | Hdr Ext Len | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | |||
| | | | | | |||
. . | . . | |||
. Header Specific Data . | . Header-Specific Data . | |||
. . | . . | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Next Header 8-bit selector. Identifies the type of | Next Header 8-bit selector. Identifies the type of | |||
header immediately following the extension | header immediately following the extension | |||
header. Uses the same values as the IPv4 | header. Uses the same values as the IPv4 | |||
Protocol field [IANA-PN]. | Protocol field [IANA-PN]. | |||
Hdr Ext Len 8-bit unsigned integer. Length of the | Hdr Ext Len 8-bit unsigned integer. Length of the | |||
Destination Options header in 8-octet units, | Destination Options header in 8-octet units, | |||
not including the first 8 octets. | not including the first 8 octets. | |||
Header Specific Data Variable-length field. Fields specific to | Header Specific Data Variable-length field. Fields specific to | |||
the extension header. | the extension header. | |||
5. Packet Size Issues | 5. Packet Size Issues | |||
IPv6 requires that every link in the internet have an MTU of 1280 | IPv6 requires that every link in the Internet have an MTU of 1280 | |||
octets or greater. This is known as the IPv6 minimum link MTU. On | octets or greater. This is known as the IPv6 minimum link MTU. On | |||
any link that cannot convey a 1280-octet packet in one piece, link- | any link that cannot convey a 1280-octet packet in one piece, link- | |||
specific fragmentation and reassembly must be provided at a layer | specific fragmentation and reassembly must be provided at a layer | |||
below IPv6. | below IPv6. | |||
Links that have a configurable MTU (for example, PPP links [RFC1661]) | Links that have a configurable MTU (for example, PPP links [RFC1661]) | |||
must be configured to have an MTU of at least 1280 octets; it is | must be configured to have an MTU of at least 1280 octets; it is | |||
recommended that they be configured with an MTU of 1500 octets or | recommended that they be configured with an MTU of 1500 octets or | |||
greater, to accommodate possible encapsulations (i.e., tunneling) | greater, to accommodate possible encapsulations (i.e., tunneling) | |||
without incurring IPv6-layer fragmentation. | without incurring IPv6-layer fragmentation. | |||
From each link to which a node is directly attached, the node must be | From each link to which a node is directly attached, the node must be | |||
able to accept packets as large as that link's MTU. | able to accept packets as large as that link's MTU. | |||
It is strongly recommended that IPv6 nodes implement Path MTU | It is strongly recommended that IPv6 nodes implement Path MTU | |||
Discovery [RFC1981], in order to discover and take advantage of path | Discovery [RFC8201], in order to discover and take advantage of path | |||
MTUs greater than 1280 octets. However, a minimal IPv6 | MTUs greater than 1280 octets. However, a minimal IPv6 | |||
implementation (e.g., in a boot ROM) may simply restrict itself to | implementation (e.g., in a boot ROM) may simply restrict itself to | |||
sending packets no larger than 1280 octets, and omit implementation | sending packets no larger than 1280 octets, and omit implementation | |||
of Path MTU Discovery. | of Path MTU Discovery. | |||
In order to send a packet larger than a path's MTU, a node may use | In order to send a packet larger than a path's MTU, a node may use | |||
the IPv6 Fragment header to fragment the packet at the source and | the IPv6 Fragment header to fragment the packet at the source and | |||
have it reassembled at the destination(s). However, the use of such | have it reassembled at the destination(s). However, the use of such | |||
fragmentation is discouraged in any application that is able to | fragmentation is discouraged in any application that is able to | |||
adjust its packets to fit the measured path MTU (i.e., down to 1280 | adjust its packets to fit the measured path MTU (i.e., down to 1280 | |||
skipping to change at page 25, line 42 ¶ | skipping to change at page 27, line 45 ¶ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
o If the IPv6 packet contains a Routing header, the Destination | o If the IPv6 packet contains a Routing header, the Destination | |||
Address used in the pseudo-header is that of the final | Address used in the pseudo-header is that of the final | |||
destination. At the originating node, that address will be in | destination. At the originating node, that address will be in | |||
the last element of the Routing header; at the recipient(s), | the last element of the Routing header; at the recipient(s), | |||
that address will be in the Destination Address field of the | that address will be in the Destination Address field of the | |||
IPv6 header. | IPv6 header. | |||
o The Next Header value in the pseudo-header identifies the | o The Next Header value in the pseudo-header identifies the | |||
upper-layer protocol (e.g., 6 for TCP, or 17 for UDP). It will | upper-layer protocol (e.g., 6 for TCP or 17 for UDP). It will | |||
differ from the Next Header value in the IPv6 header if there | differ from the Next Header value in the IPv6 header if there | |||
are extension headers between the IPv6 header and the upper- | are extension headers between the IPv6 header and the upper- | |||
layer header. | layer header. | |||
o The Upper-Layer Packet Length in the pseudo-header is the | o The Upper-Layer Packet Length in the pseudo-header is the | |||
length of the upper-layer header and data (e.g., TCP header | length of the upper-layer header and data (e.g., TCP header | |||
plus TCP data). Some upper-layer protocols carry their own | plus TCP data). Some upper-layer protocols carry their own | |||
length information (e.g., the Length field in the UDP header); | length information (e.g., the Length field in the UDP header); | |||
for such protocols, that is the length used in the pseudo- | for such protocols, that is the length used in the pseudo- | |||
header. Other protocols (such as TCP) do not carry their own | header. Other protocols (such as TCP) do not carry their own | |||
skipping to change at page 26, line 19 ¶ | skipping to change at page 28, line 23 ¶ | |||
the length of any extension headers present between the IPv6 | the length of any extension headers present between the IPv6 | |||
header and the upper-layer header. | header and the upper-layer header. | |||
o Unlike IPv4, the default behavior when UDP packets are | o Unlike IPv4, the default behavior when UDP packets are | |||
originated by an IPv6 node is that the UDP checksum is not | originated by an IPv6 node is that the UDP checksum is not | |||
optional. That is, whenever originating a UDP packet, an IPv6 | optional. That is, whenever originating a UDP packet, an IPv6 | |||
node must compute a UDP checksum over the packet and the | node must compute a UDP checksum over the packet and the | |||
pseudo-header, and, if that computation yields a result of | pseudo-header, and, if that computation yields a result of | |||
zero, it must be changed to hex FFFF for placement in the UDP | zero, it must be changed to hex FFFF for placement in the UDP | |||
header. IPv6 receivers must discard UDP packets containing a | header. IPv6 receivers must discard UDP packets containing a | |||
zero checksum, and should log the error. | zero checksum and should log the error. | |||
o As an exception to the default behaviour, protocols that use | o As an exception to the default behavior, protocols that use UDP | |||
UDP as a tunnel encapsulation may enable zero-checksum mode for | as a tunnel encapsulation may enable zero-checksum mode for a | |||
a specific port (or set of ports) for sending and/or receiving. | specific port (or set of ports) for sending and/or receiving. | |||
Any node implementing zero-checksum mode must follow the | Any node implementing zero-checksum mode must follow the | |||
requirements specified in "Applicability Statement for the Use | requirements specified in "Applicability Statement for the Use | |||
of IPv6 UDP Datagrams with Zero Checksums" [RFC6936]. | of IPv6 UDP Datagrams with Zero Checksums" [RFC6936]. | |||
The IPv6 version of ICMP [RFC4443] includes the above pseudo-header | The IPv6 version of ICMP [RFC4443] includes the above pseudo-header | |||
in its checksum computation; this is a change from the IPv4 version | in its checksum computation; this is a change from the IPv4 version | |||
of ICMP, which does not include a pseudo-header in its checksum. The | of ICMP, which does not include a pseudo-header in its checksum. The | |||
reason for the change is to protect ICMP from misdelivery or | reason for the change is to protect ICMP from misdelivery or | |||
corruption of those fields of the IPv6 header on which it depends, | corruption of those fields of the IPv6 header on which it depends, | |||
which, unlike IPv4, are not covered by an internet-layer checksum. | which, unlike IPv4, are not covered by an internet-layer checksum. | |||
The Next Header field in the pseudo-header for ICMP contains the | The Next Header field in the pseudo-header for ICMP contains the | |||
value 58, which identifies the IPv6 version of ICMP. | value 58, which identifies the IPv6 version of ICMP. | |||
8.2. Maximum Packet Lifetime | 8.2. Maximum Packet Lifetime | |||
Unlike IPv4, IPv6 nodes are not required to enforce maximum packet | Unlike IPv4, IPv6 nodes are not required to enforce maximum packet | |||
lifetime. That is the reason the IPv4 "Time to Live" field was | lifetime. That is the reason the IPv4 "Time-to-Live" field was | |||
renamed "Hop Limit" in IPv6. In practice, very few, if any, IPv4 | renamed "Hop Limit" in IPv6. In practice, very few, if any, IPv4 | |||
implementations conform to the requirement that they limit packet | implementations conform to the requirement that they limit packet | |||
lifetime, so this is not a change in practice. Any upper-layer | lifetime, so this is not a change in practice. Any upper-layer | |||
protocol that relies on the internet layer (whether IPv4 or IPv6) to | protocol that relies on the internet layer (whether IPv4 or IPv6) to | |||
limit packet lifetime ought to be upgraded to provide its own | limit packet lifetime ought to be upgraded to provide its own | |||
mechanisms for detecting and discarding obsolete packets. | mechanisms for detecting and discarding obsolete packets. | |||
8.3. Maximum Upper-Layer Payload Size | 8.3. Maximum Upper-Layer Payload Size | |||
When computing the maximum payload size available for upper-layer | When computing the maximum payload size available for upper-layer | |||
data, an upper-layer protocol must take into account the larger size | data, an upper-layer protocol must take into account the larger size | |||
of the IPv6 header relative to the IPv4 header. For example, in | of the IPv6 header relative to the IPv4 header. For example, in | |||
IPv4, TCP's MSS option is computed as the maximum packet size (a | IPv4, TCP's Maximum Segment Size (MSS) option is computed as the | |||
default value or a value learned through Path MTU Discovery) minus 40 | maximum packet size (a default value or a value learned through Path | |||
octets (20 octets for the minimum-length IPv4 header and 20 octets | MTU Discovery) minus 40 octets (20 octets for the minimum-length IPv4 | |||
for the minimum-length TCP header). When using TCP over IPv6, the | header and 20 octets for the minimum-length TCP header). When using | |||
MSS must be computed as the maximum packet size minus 60 octets, | TCP over IPv6, the MSS must be computed as the maximum packet size | |||
because the minimum-length IPv6 header (i.e., an IPv6 header with no | minus 60 octets, because the minimum-length IPv6 header (i.e., an | |||
extension headers) is 20 octets longer than a minimum-length IPv4 | IPv6 header with no extension headers) is 20 octets longer than a | |||
header. | minimum-length IPv4 header. | |||
8.4. Responding to Packets Carrying Routing Headers | 8.4. Responding to Packets Carrying Routing Headers | |||
When an upper-layer protocol sends one or more packets in response to | When an upper-layer protocol sends one or more packets in response to | |||
a received packet that included a Routing header, the response | a received packet that included a Routing header, the response | |||
packet(s) must not include a Routing header that was automatically | packet(s) must not include a Routing header that was automatically | |||
derived by "reversing" the received Routing header UNLESS the | derived by "reversing" the received Routing header UNLESS the | |||
integrity and authenticity of the received Source Address and Routing | integrity and authenticity of the received Source Address and Routing | |||
header have been verified (e.g., via the use of an Authentication | header have been verified (e.g., via the use of an Authentication | |||
header in the received packet). In other words, only the following | header in the received packet). In other words, only the following | |||
skipping to change at page 27, line 46 ¶ | skipping to change at page 29, line 46 ¶ | |||
configuration). | configuration). | |||
o Response packets that carry Routing headers that were derived | o Response packets that carry Routing headers that were derived | |||
by reversing the Routing header of the received packet IF AND | by reversing the Routing header of the received packet IF AND | |||
ONLY IF the integrity and authenticity of the Source Address | ONLY IF the integrity and authenticity of the Source Address | |||
and Routing header from the received packet have been verified | and Routing header from the received packet have been verified | |||
by the responder. | by the responder. | |||
9. IANA Considerations | 9. IANA Considerations | |||
RFC2460 is referenced in a number of IANA registries. These include: | RFC 2460 is referenced in a number of IANA registries. These | |||
include: | ||||
o Internet Protocol Version 6 (IPv6) Parameters [IANA-6P] | o Internet Protocol Version 6 (IPv6) Parameters [IANA-6P] | |||
o Assigned Internet Protocol Numbers [IANA-PN] | ||||
o Assigned Internet Protocol Numbers [IANA-PN] | ||||
o ONC RPC Network Identifiers (netids) [IANA-NI] | o ONC RPC Network Identifiers (netids) [IANA-NI] | |||
o Technical requirements for authoritative name servers [IANA-NS] | ||||
o Network Layer Protocol Identifiers (NLPIDs) of Interest | o Network Layer Protocol Identifiers (NLPIDs) of Interest | |||
[IANA-NL] | [IANA-NL] | |||
o Protocol Registries [IANA-PR] | o Protocol Registries [IANA-PR] | |||
o Structure of Management Information (SMI) Numbers (MIB Module | The IANA has updated these references to point to this document. | |||
Registrations) [IANA-MI] | ||||
The IANA should update these references to point to this document. | ||||
10. Security Considerations | 10. Security Considerations | |||
IPv6, from the viewpoint of the basic format and transmission of | IPv6, from the viewpoint of the basic format and transmission of | |||
packets, has security properties that are similar to IPv4. These | packets, has security properties that are similar to IPv4. These | |||
security issues include: | security issues include: | |||
o Eavesdropping, On-path elements can observe the whole packet | o Eavesdropping, where on-path elements can observe the whole | |||
(including both contents and metadata) of each IPv6 datagram. | packet (including both contents and metadata) of each IPv6 | |||
o Replay, where attacker records a sequence of packets off of the | datagram. | |||
wire and plays them back to the party which originally received | o Replay, where the attacker records a sequence of packets off of | |||
them. | the wire and plays them back to the party that originally | |||
received them. | ||||
o Packet insertion, where the attacker forges a packet with some | o Packet insertion, where the attacker forges a packet with some | |||
chosen set of properties and injects it into the network. | chosen set of properties and injects it into the network. | |||
o Packet deletion, where the attacker remove a packet from the | o Packet deletion, where the attacker removes a packet from the | |||
wire. | wire. | |||
o Packet modification, where the attacker removes a packet from | o Packet modification, where the attacker removes a packet from | |||
the wire, modifies it, and re-injects it into the network. | the wire, modifies it, and reinjects it into the network. | |||
o Man in the Middle attacks, where the attacker subverts the | o Man-in-the-middle (MITM) attacks, where the attacker subverts | |||
communication stream in order to pose as the sender to receiver | the communication stream in order to pose as the sender to | |||
and the receiver to the sender. | receiver and the receiver to the sender. | |||
o Denial of Service Attacks, where the attacker sends large | o Denial-of-service (DoS) attacks, where the attacker sends large | |||
amounts of legitimate traffic to a destination to overwhelm it. | amounts of legitimate traffic to a destination to overwhelm it. | |||
IPv6 packets can be protected from eavesdropping, replay, packet | IPv6 packets can be protected from eavesdropping, replay, packet | |||
insertion, packet modification, and man in the middle attacks by use | insertion, packet modification, and MITM attacks by use of the | |||
of the "Security Architecture for the Internet Protocol" [RFC4301]. | "Security Architecture for the Internet Protocol" [RFC4301]. In | |||
In addition, upper-layer protocols such as TLS or SSH can be used to | addition, upper-layer protocols such as Transport Layer Security | |||
protect the application layer traffic running on top of IPv6. | (TLS) or Secure Shell (SSH) can be used to protect the application- | |||
layer traffic running on top of IPv6. | ||||
There is not any mechanism to protect against "denial of service | There is not any mechanism to protect against DoS attacks. Defending | |||
attacks". Defending against these type of attacks is outside the | against these type of attacks is outside the scope of this | |||
scope of this specification. | specification. | |||
IPv6 addresses are significantly larger than IPv4 address making it | IPv6 addresses are significantly larger than IPv4 addresses making it | |||
much harder to scan the address space across the Internet and even on | much harder to scan the address space across the Internet and even on | |||
a single network link (e.g., Local Area Network). See [RFC7707] for | a single network link (e.g., Local Area Network). See [RFC7707] for | |||
more information. | more information. | |||
IPv6 addresses of nodes are expected to be more visible on the | IPv6 addresses of nodes are expected to be more visible on the | |||
Internet as compared with IPv4 since the use of address translation | Internet as compared with IPv4 since the use of address translation | |||
technology is reduced. This creates some additional privacy issues | technology is reduced. This creates some additional privacy issues | |||
such as making it easier to distinguish endpoints. See [RFC7721] for | such as making it easier to distinguish endpoints. See [RFC7721] for | |||
more information. | more information. | |||
The design of IPv6 extension headers architecture, while adding a lot | The design of IPv6 extension header architecture, while adding a lot | |||
of flexibility, also creates new security challenges. As noted | of flexibility, also creates new security challenges. As noted | |||
below, issues relating the fragment extension header have been | below, issues relating to the Fragment extension header have been | |||
resolved, but it's clear that for any new extension header designed | resolved, but it's clear that for any new extension header designed | |||
in the future, the security implications need to be examined | in the future, the security implications need to be examined | |||
throughly, and this needs to include how the new extension header | thoroughly, and this needs to include how the new extension header | |||
works with existing extension headers. See [RFC7045] for more | works with existing extension headers. See [RFC7045] for more | |||
information. | information. | |||
This version of the IPv6 specification resolves a number of security | This version of the IPv6 specification resolves a number of security | |||
issues that were found with the previous version [RFC2460] of the | issues that were found with the previous version [RFC2460] of the | |||
IPv6 specification. These include: | IPv6 specification. These include: | |||
o Revised the text to handle the case of fragments that are whole | o Revised the text to handle the case of fragments that are whole | |||
datagrams (i.e., both the Fragment Offset field and the M flag | datagrams (i.e., both the Fragment Offset field and the M flag | |||
are zero). If received they should be processed as a | are zero). If received, they should be processed as a | |||
reassembled packet. Any other fragments that match should be | reassembled packet. Any other fragments that match should be | |||
processed independently. The Fragment creation process was | processed independently. The Fragment creation process was | |||
modified to not create whole datagram fragments (Fragment | modified to not create whole datagram fragments (Fragment | |||
Offset field and the M flag are zero). See [RFC6946] and | Offset field and the M flag are zero). See [RFC6946] and | |||
[RFC8021] for more information. | [RFC8021] for more information. | |||
o Removed the paragraph in Section 5 that required including a | ||||
Fragment header to outgoing packets if an ICMP Packet Too Big | ||||
message reporting a Next-Hop MTU is less than 1280. See | ||||
[RFC6946] for more information. | ||||
o Changed the text to require that IPv6 nodes must not create | o Changed the text to require that IPv6 nodes must not create | |||
overlapping fragments. Also, when reassembling an IPv6 | overlapping fragments. Also, when reassembling an IPv6 | |||
datagram, if one or more its constituent fragments is | datagram, if one or more of its constituent fragments is | |||
determined to be an overlapping fragment, the entire datagram | determined to be an overlapping fragment, the entire datagram | |||
(and any constituent fragments) must be silently discarded. | (and any constituent fragments) must be silently discarded. | |||
Includes clarification that no ICMP error message should be | Includes clarification that no ICMP error message should be | |||
sent if overlapping fragments are received. See [RFC5722] for | sent if overlapping fragments are received. See [RFC5722] for | |||
more information. | more information. | |||
0 Revised the text to require that all headers through the first | o Revised the text to require that all headers through the first | |||
Upper-Layer Header are in the first fragment. See [RFC6946] | upper-layer header are in the first fragment. See [RFC7112] | |||
for more information. | ||||
o Removed the paragraph in Section 5 that required including a | ||||
fragment header to outgoing packets if a ICMP Packet Too Big | ||||
message reporting a Next-Hop MTU less than 1280. See [RFC7112] | ||||
for more information. | for more information. | |||
o Incorporated the updates from [RFC5095] and [RFC5871] to remove | o Incorporated the updates from [RFC5095] and [RFC5871] to remove | |||
the description of the RH0 Routing Header, that the allocations | the description of the Routing Header type 0 (RH0), that the | |||
guidelines for routing headers are specified in RFC5871, and | allocations guidelines for Routing headers are specified in RFC | |||
removed RH0 Routing Header from the list of required extension | 5871, and removed RH0 from the list of required extension | |||
headers. | headers. | |||
Security issues relating to other parts of IPv6 including addressing, | Security issues relating to other parts of IPv6 including addressing, | |||
ICMPv6, Path MTU Discovery, etc., are discussed in the appropriate | ICMPv6, Path MTU Discovery, etc., are discussed in the appropriate | |||
specifications. | specifications. | |||
11. Acknowledgments | 11. References | |||
The authors gratefully acknowledge the many helpful suggestions of | ||||
the members of the IPng working group, the End-to-End Protocols | ||||
research group, and the Internet Community At Large. | ||||
The authors would also like to acknowledge the authors of the | ||||
updating RFCs that were incorporated in this version of the document | ||||
to move the IPv6 specification to Internet Standard. They are Joe | ||||
Abley, Shane Amante, Jari Arkko, Manav Bhatia, Ronald P. Bonica, | ||||
Scott Bradner, Brian Carpenter, P.F. Chimento, Marshall Eubanks, | ||||
Fernando Gont, James Hoagland, Sheng Jiang, Erik Kline, Suresh | ||||
Krishnan, Vishwas Manral, George Neville-Neil, Jarno Rajahalme, Pekka | ||||
Savola, Magnus Westerlund, and James Woodyatt. | ||||
12. References | ||||
12.1. Normative References | 11.1. Normative References | |||
[RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, DOI | [RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791, | |||
10.17487/RFC0791, September 1981, | DOI 10.17487/RFC0791, September 1981, | |||
<http://www.rfc-editor.org/info/rfc791>. | <http://www.rfc-editor.org/info/rfc791>. | |||
[RFC2474] Nichols, K., Blake, S., Baker, F., and D. Black, | [RFC2474] Nichols, K., Blake, S., Baker, F., and D. Black, | |||
"Definition of the Differentiated Services Field (DS | "Definition of the Differentiated Services Field (DS | |||
Field) in the IPv4 and IPv6 Headers", RFC 2474, DOI | Field) in the IPv4 and IPv6 Headers", RFC 2474, | |||
10.17487/RFC2474, December 1998, | DOI 10.17487/RFC2474, December 1998, | |||
<http://www.rfc-editor.org/info/rfc2474>. | <http://www.rfc-editor.org/info/rfc2474>. | |||
[RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition | [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition | |||
of Explicit Congestion Notification (ECN) to IP", RFC | of Explicit Congestion Notification (ECN) to IP", | |||
3168, DOI 10.17487/RFC3168, September 2001, | RFC 3168, DOI 10.17487/RFC3168, September 2001, | |||
<http://www.rfc-editor.org/info/rfc3168>. | <http://www.rfc-editor.org/info/rfc3168>. | |||
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing | [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing | |||
Architecture", RFC 4291, DOI 10.17487/RFC4291, February | Architecture", RFC 4291, DOI 10.17487/RFC4291, February | |||
2006, <http://www.rfc-editor.org/info/rfc4291>. | 2006, <http://www.rfc-editor.org/info/rfc4291>. | |||
[RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | |||
Control Message Protocol (ICMPv6) for the Internet | Control Message Protocol (ICMPv6) for the Internet | |||
Protocol Version 6 (IPv6) Specification", RFC 4443, DOI | Protocol Version 6 (IPv6) Specification", STD 89, | |||
10.17487/RFC4443, March 2006, | RFC 4443, DOI 10.17487/RFC4443, March 2006, | |||
<http://www.rfc-editor.org/info/rfc4443>. | <http://www.rfc-editor.org/info/rfc4443>. | |||
[RFC6437] Amante, S., Carpenter, B., Jiang, S., and J. Rajahalme, | [RFC6437] Amante, S., Carpenter, B., Jiang, S., and J. Rajahalme, | |||
"IPv6 Flow Label Specification", RFC 6437, DOI 10.17487/ | "IPv6 Flow Label Specification", RFC 6437, | |||
RFC6437, November 2011, | DOI 10.17487/RFC6437, November 2011, | |||
<http://www.rfc-editor.org/info/rfc6437>. | <http://www.rfc-editor.org/info/rfc6437>. | |||
12.2. Informative References | 11.2. Informative References | |||
[IANA-6P] "Internet Protocol Version 6 (IPv6) Parameters", | [Err2541] RFC Errata, Erratum ID 2541, RFC 2460. | |||
<https://www.iana.org/assignments/ipv6-parameters/ | ||||
ipv6-parameters.xhtml>. | ||||
[IANA-EH] "IPv6 Extension Header Types", | [Err4279] RFC Errata, Erratum ID 4279, RFC 2460. | |||
<https://www.iana.org/assignments/ipv6-parameters/ipv6- | ||||
parameters.xhtml#extension-header>. | ||||
[IANA-MI] "Structure of Management Information (SMI) Numbers (MIB | [Err4657] RFC Errata, Erratum ID 4657, RFC 2460. | |||
Module Registrations)", < http://www.iana.org/assignments/ | ||||
smi-numbers/smi-numbers.xhtml>. | ||||
[IANA-NI] "ONC RPC Network Identifiers (netids)", | [Err4662] RFC Errata, Erratum ID 4662, RFC 2460. | |||
<http://www.iana.org/assignments/rpc-netids/ | ||||
rpc-netids.xhtml>. | ||||
[IANA-NL] "Network Layer Protocol Identifiers (NLPIDs) of Interest", | [IANA-6P] IANA, "Internet Protocol Version 6 (IPv6) Parameters", | |||
<http://www.iana.org/assignments/nlpids/nlpids.xhtml>. | <https://www.iana.org/assignments/ipv6-parameters>. | |||
[IANA-NS] "Technical requirements for authoritative name servers", | [IANA-EH] IANA, "IPv6 Extension Header Types", | |||
<https://www.iana.org/help/nameserver-requirements>. | <https://www.iana.org/assignments/ipv6-parameters>. | |||
[IANA-PN] "Assigned Internet Protocol Numbers", | [IANA-NI] IANA, "ONC RPC Network Identifiers (netids)", | |||
<https://www.iana.org/assignments/protocol-numbers/ | <https://www.iana.org/assignments/rpc-netids>. | |||
protocol-numbers.xhtml>. | ||||
[IANA-PR] "Protocol Registries", <https://www.iana.org/protocols>. | [IANA-NL] IANA, "Network Layer Protocol Identifiers (NLPIDs) of | |||
Interest", <https://www.iana.org/assignments/nlpids>. | ||||
[IANA-RH] "IANA Routing Types Parameter Registry", | [IANA-PN] IANA, "Protocol Numbers", | |||
<https://www.iana.org/assignments/ipv6-parameters/ | <https://www.iana.org/assignments/protocol-numbers>. | |||
ipv6-parameters.xhtml#ipv6-parameters-3>. | ||||
[RFC1661] Simpson, W., Ed., "The Point-to-Point Protocol (PPP)", STD | [IANA-PR] IANA, "Protocol Registries", <https://www.iana.org/ | |||
51, RFC 1661, DOI 10.17487/RFC1661, July 1994, | protocols>. | |||
<http://www.rfc-editor.org/info/rfc1661>. | ||||
[RFC1981] McCann, J., Deering, S., and J. Mogul, "Path MTU Discovery | [IANA-RH] IANA, "Routing Types", <https://www.iana.org/assignments/ | |||
for IP version 6", RFC 1981, DOI 10.17487/RFC1981, August | ipv6-parameters>. | |||
1996, <http://www.rfc-editor.org/info/rfc1981>. | ||||
[RFC1661] Simpson, W., Ed., "The Point-to-Point Protocol (PPP)", | ||||
STD 51, RFC 1661, DOI 10.17487/RFC1661, July 1994, | ||||
<http://www.rfc-editor.org/info/rfc1661>. | ||||
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
(IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | |||
December 1998, <http://www.rfc-editor.org/info/rfc2460>. | December 1998, <http://www.rfc-editor.org/info/rfc2460>. | |||
[RFC4301] Kent, S. and K. Seo, "Security Architecture for the | [RFC4301] Kent, S. and K. Seo, "Security Architecture for the | |||
Internet Protocol", RFC 4301, DOI 10.17487/RFC4301, | Internet Protocol", RFC 4301, DOI 10.17487/RFC4301, | |||
December 2005, <http://www.rfc-editor.org/info/rfc4301>. | December 2005, <http://www.rfc-editor.org/info/rfc4301>. | |||
[RFC4302] Kent, S., "IP Authentication Header", RFC 4302, DOI | [RFC4302] Kent, S., "IP Authentication Header", RFC 4302, | |||
10.17487/RFC4302, December 2005, | DOI 10.17487/RFC4302, December 2005, | |||
<http://www.rfc-editor.org/info/rfc4302>. | <http://www.rfc-editor.org/info/rfc4302>. | |||
[RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", RFC | [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", | |||
4303, DOI 10.17487/RFC4303, December 2005, | RFC 4303, DOI 10.17487/RFC4303, December 2005, | |||
<http://www.rfc-editor.org/info/rfc4303>. | <http://www.rfc-editor.org/info/rfc4303>. | |||
[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, DOI | of Type 0 Routing Headers in IPv6", RFC 5095, | |||
10.17487/RFC5095, December 2007, | DOI 10.17487/RFC5095, December 2007, | |||
<http://www.rfc-editor.org/info/rfc5095>. | <http://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, | |||
<http://www.rfc-editor.org/info/rfc5722>. | <http://www.rfc-editor.org/info/rfc5722>. | |||
[RFC5871] Arkko, J. and S. Bradner, "IANA Allocation Guidelines for | [RFC5871] Arkko, J. and S. Bradner, "IANA Allocation Guidelines for | |||
the IPv6 Routing Header", RFC 5871, DOI 10.17487/RFC5871, | the IPv6 Routing Header", RFC 5871, DOI 10.17487/RFC5871, | |||
May 2010, <http://www.rfc-editor.org/info/rfc5871>. | May 2010, <http://www.rfc-editor.org/info/rfc5871>. | |||
[RFC6564] Krishnan, S., Woodyatt, J., Kline, E., Hoagland, J., and | [RFC6564] Krishnan, S., Woodyatt, J., Kline, E., Hoagland, J., and | |||
M. Bhatia, "A Uniform Format for IPv6 Extension Headers", | M. Bhatia, "A Uniform Format for IPv6 Extension Headers", | |||
RFC 6564, DOI 10.17487/RFC6564, April 2012, | RFC 6564, DOI 10.17487/RFC6564, April 2012, | |||
<http://www.rfc-editor.org/info/rfc6564>. | <http://www.rfc-editor.org/info/rfc6564>. | |||
[RFC6936] Fairhurst, G. and M. Westerlund, "Applicability Statement | [RFC6936] Fairhurst, G. and M. Westerlund, "Applicability Statement | |||
for the Use of IPv6 UDP Datagrams with Zero Checksums", | for the Use of IPv6 UDP Datagrams with Zero Checksums", | |||
RFC 6936, DOI 10.17487/RFC6936, April 2013, | RFC 6936, DOI 10.17487/RFC6936, April 2013, | |||
<http://www.rfc-editor.org/info/rfc6936>. | <http://www.rfc-editor.org/info/rfc6936>. | |||
[RFC6946] Gont, F., "Processing of IPv6 "Atomic" Fragments", RFC | [RFC6946] Gont, F., "Processing of IPv6 "Atomic" Fragments", | |||
6946, DOI 10.17487/RFC6946, May 2013, | RFC 6946, DOI 10.17487/RFC6946, May 2013, | |||
<http://www.rfc-editor.org/info/rfc6946>. | <http://www.rfc-editor.org/info/rfc6946>. | |||
[RFC7045] Carpenter, B. and S. Jiang, "Transmission and Processing | [RFC7045] Carpenter, B. and S. Jiang, "Transmission and Processing | |||
of IPv6 Extension Headers", RFC 7045, DOI 10.17487/ | of IPv6 Extension Headers", RFC 7045, | |||
RFC7045, December 2013, | DOI 10.17487/RFC7045, December 2013, | |||
<http://www.rfc-editor.org/info/rfc7045>. | <http://www.rfc-editor.org/info/rfc7045>. | |||
[RFC7112] Gont, F., Manral, V., and R. Bonica, "Implications of | [RFC7112] Gont, F., Manral, V., and R. Bonica, "Implications of | |||
Oversized IPv6 Header Chains", RFC 7112, DOI 10.17487/ | Oversized IPv6 Header Chains", RFC 7112, | |||
RFC7112, January 2014, | DOI 10.17487/RFC7112, January 2014, | |||
<http://www.rfc-editor.org/info/rfc7112>. | <http://www.rfc-editor.org/info/rfc7112>. | |||
[RFC7707] Gont, F. and T. Chown, "Network Reconnaissance in IPv6 | [RFC7707] Gont, F. and T. Chown, "Network Reconnaissance in IPv6 | |||
Networks", RFC 7707, DOI 10.17487/RFC7707, March 2016, | Networks", RFC 7707, DOI 10.17487/RFC7707, March 2016, | |||
<http://www.rfc-editor.org/info/rfc7707>. | <http://www.rfc-editor.org/info/rfc7707>. | |||
[RFC7721] Cooper, A., Gont, F., and D. Thaler, "Security and Privacy | [RFC7721] Cooper, A., Gont, F., and D. Thaler, "Security and Privacy | |||
Considerations for IPv6 Address Generation Mechanisms", | Considerations for IPv6 Address Generation Mechanisms", | |||
RFC 7721, DOI 10.17487/RFC7721, March 2016, | RFC 7721, DOI 10.17487/RFC7721, March 2016, | |||
<http://www.rfc-editor.org/info/rfc7721>. | <http://www.rfc-editor.org/info/rfc7721>. | |||
[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, <http://www.rfc-editor.org/info/rfc7739>. | February 2016, <http://www.rfc-editor.org/info/rfc7739>. | |||
[RFC8021] Gont, F., Liu, W., and T. Anderson, "Generation of IPv6 | [RFC8021] Gont, F., Liu, W., and T. Anderson, "Generation of IPv6 | |||
Atomic Fragments Considered Harmful", RFC 8021, DOI | Atomic Fragments Considered Harmful", RFC 8021, | |||
10.17487/RFC8021, January 2017, | DOI 10.17487/RFC8021, January 2017, | |||
<http://www.rfc-editor.org/info/rfc8021>. | <http://www.rfc-editor.org/info/rfc8021>. | |||
[RFC8201] McCann, J., Deering, S., Mogul, J., and R. Hinden, "Path | ||||
MTU Discovery for IP version 6", STD 87, RFC 8201, | ||||
DOI 10.17487/RFC8201, July 2017, | ||||
<http://www.rfc-editor.org/info/rfc8201>. | ||||
Appendix A. Formatting Guidelines for Options | Appendix A. Formatting Guidelines for Options | |||
This appendix gives some advice on how to lay out the fields when | This appendix gives some advice on how to lay out the fields when | |||
designing new options to be used in the Hop-by-Hop Options header or | designing new options to be used in the Hop-by-Hop Options header or | |||
the Destination Options header, as described in section 4.2. These | the Destination Options header, as described in Section 4.2. These | |||
guidelines are based on the following assumptions: | guidelines are based on the following assumptions: | |||
o One desirable feature is that any multi-octet fields within the | o One desirable feature is that any multi-octet fields within the | |||
Option Data area of an option be aligned on their natural | Option Data area of an option be aligned on their natural | |||
boundaries, i.e., fields of width n octets should be placed at | boundaries, i.e., fields of width n octets should be placed at | |||
an integer multiple of n octets from the start of the Hop-by- | an integer multiple of n octets from the start of the | |||
Hop or Destination Options header, for n = 1, 2, 4, or 8. | Hop-by-Hop or Destination Options header, for n = 1, 2, 4, or | |||
8. | ||||
o Another desirable feature is that the Hop-by-Hop or Destination | o Another desirable feature is that the Hop-by-Hop or Destination | |||
Options header take up as little space as possible, subject to | Options header take up as little space as possible, subject to | |||
the requirement that the header be an integer multiple of 8 | the requirement that the header be an integer multiple of 8 | |||
octets long. | octets long. | |||
o It may be assumed that, when either of the option-bearing | o It may be assumed that, when either of the option-bearing | |||
headers are present, they carry a very small number of options, | headers are present, they carry a very small number of options, | |||
usually only one. | usually only one. | |||
skipping to change at page 36, line 41 ¶ | skipping to change at page 39, line 5 ¶ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 0 | 0 | Option Type=X |Opt Data Len=12| | | 0 | 0 | Option Type=X |Opt Data Len=12| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 4-octet field | | | 4-octet field | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
+ 8-octet field + | + 8-octet field + | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Appendix B. Changes Since RFC2460 | Appendix B. Changes Since RFC 2460 | |||
This memo has the following changes from RFC2460. | This memo has the following changes from RFC 2460. | |||
o Removed IP Next Generation from the Abstract. | o Removed IP Next Generation from the Abstract. | |||
o Added text in Section 1 that the Data Transmission Order is the | o Added text in Section 1 that the data transmission order is the | |||
same as IPv4 as defined in RFC791. | same as IPv4 as defined in RFC 791. | |||
o Clarified the text in Section 3 about decrementing the hop limit. | o Clarified the text in Section 3 about decrementing the Hop Limit. | |||
o Clarification that extension headers (except for the hop-by-hop | o Clarified that extension headers (except for the Hop-by-Hop | |||
options header) are not processed, inserted, or deleted by any | Options header) are not processed, inserted, or deleted by any | |||
node along a packet's delivery path. | node along a packet's delivery path. | |||
o Changed requirement for the Hop-by-Hop Options header to a may, | o Changed requirement for the Hop-by-Hop Options header to a "may", | |||
and added a note to indicate what is expected regarding the Hop- | and added a note to indicate what is expected regarding the | |||
by-Hop Options header. | Hop-by-Hop Options header. | |||
o Added paragraph to Section 4 to clarify how Extension Headers are | o Added a paragraph to Section 4 to clarify how extension headers | |||
numbered and which are upper-layer headers. | are numbered and which are upper-layer headers. | |||
o Add reference to the end of Section 4 to IPv6 Extension Header | o Added a reference to the end of Section 4 to the "IPv6 Extension | |||
IANA registry. | Header Types" IANA registry. | |||
o Incorporate the updates from RFC5095 and RFC5871 to remove the | o Incorporated the updates from RFCs 5095 and 5871 to remove the | |||
description of the RH0 Routing Header, that the allocations | description of RH0, that the allocations guidelines for routing | |||
guidelines for routing headers are specified in RFC5871, and | headers are specified in RFC 5871, and removed RH0 from the list | |||
removed RH0 Routing Header from the list of required extension | of required extension headers. | |||
headers. | ||||
o Revised Section 4.5 on IPv6 Fragmentation based on updates from | o Revised Section 4.5 on IPv6 fragmentation based on updates from | |||
RFC5722, RFC6946 RFC7112, and RFC8021. This include: | RFCs 5722, 6946, 7112, and 8021. This includes: | |||
- Revised the text to handle the case of fragments that are whole | - Revised the text to handle the case of fragments that are whole | |||
datagrams (i.e., both the Fragment Offset field and the M flag | datagrams (i.e., both the Fragment Offset field and the M flag | |||
are zero). If received they should be processed as a | are zero). If received, they should be processed as a | |||
reassembled packet. Any other fragments that match should be | reassembled packet. Any other fragments that match should be | |||
processed independently. The revised Fragment creation process | processed independently. The revised Fragment creation process | |||
was modified to not create whole datagram fragments (Fragment | was modified to not create whole datagram fragments (Fragment | |||
Offset field and the M flag are zero). | Offset field and the M flag are zero). | |||
- Changed the text to require that IPv6 nodes must not create | - Changed the text to require that IPv6 nodes must not create | |||
overlapping fragments. Also, when reassembling an IPv6 | overlapping fragments. Also, when reassembling an IPv6 | |||
datagram, if one or more its constituent fragments is | datagram, if one or more its constituent fragments is | |||
determined to be an overlapping fragment, the entire datagram | determined to be an overlapping fragment, the entire datagram | |||
(and any constituent fragments) must be silently discarded. | (and any constituent fragments) must be silently discarded. | |||
Includes a clarification that no ICMP error message should be | Includes a clarification that no ICMP error message should be | |||
sent if overlapping fragments are received. | sent if overlapping fragments are received. | |||
- Revised the text to require that all headers through the first | - Revised the text to require that all headers through the first | |||
Upper-Layer Header are in the first fragment. This changed the | Upper-Layer header are in the first fragment. This changed the | |||
text describing how packets are fragmented and reassembled, and | text describing how packets are fragmented and reassembled and | |||
added a new error case. | added a new error case. | |||
- Added text to Fragment Header process on handling exact | - Added text to the Fragment header process on handling exact | |||
duplicate fragments. | duplicate fragments. | |||
- Updated the Fragmentation header text to correct the inclusion | - Updated the Fragmentation header text to correct the inclusion | |||
of AH and note no next header case. | of an Authentication Header (AH) and noted No Next Header case. | |||
- Change terminology in Fragment header section from | - Changed terminology in the Fragment header section from | |||
"Unfragmentable Headers" to "Per-Fragment Headers". | "Unfragmentable Headers" to "Per-Fragment headers". | |||
- Removed the paragraph in Section 5 that required including a | - Removed the paragraph in Section 5 that required including a | |||
fragment header to outgoing packets if a ICMP Packet Too Big | Fragment header to outgoing packets if an ICMP Packet Too Big | |||
message reporting a Next-Hop MTU less than 1280. | message reports a Next-Hop MTU less than 1280. | |||
- Changed the text to clarify MTU restriction and 8-byte | - Changed the text to clarify MTU restriction and 8-byte | |||
restrictions, and noting the restriction on headers in first | restrictions, and noted the restriction on headers in the first | |||
fragment. | fragment. | |||
o In Section 4.5 added clarification noting that some fields in the | o In Section 4.5, added clarification noting that some fields in the | |||
IPv6 header may also vary across the fragments being reassembled | IPv6 header may also vary across the fragments being reassembled, | |||
and that other specifications may provide additional instructions | and that other specifications may provide additional instructions | |||
for how they should be reassembled. For example, Section 5.3 of | for how they should be reassembled. See, for example, Section 5.3 | |||
[RFC3168]. | of [RFC3168]. | |||
o Incorporated the update from RFC6564 to add a new Section 4.8 that | o Incorporated the update from RFC 6564 to add a new Section 4.8 | |||
describes recommendations for defining new Extension headers and | that describes recommendations for defining new extension headers | |||
options. | and options. | |||
o Added text to Section 5 to define "IPv6 minimum link MTU". | o Added text to Section 5 to define "IPv6 minimum link MTU". | |||
o Simplify the text in Section 6 about Flow Labels and remove | o Simplified the text in Section 6 about Flow Labels and removed | |||
Appendix A, and instead point to the current specifications of the | what was Appendix A ("Semantics and Usage of the Flow Label | |||
IPv6 Flow Label field as defined in [RFC6437] and the Traffic | Field"); instead, pointed to the current specifications of the | |||
Class as defined in [RFC2474] and [RFC3168]. | IPv6 Flow Label field in [RFC6437] and the Traffic Class field in | |||
[RFC2474] and [RFC3168]. | ||||
o Incorporate the update in made by RFC6935 "UDP Checksums for | o Incorporated the update made by RFC 6935 ("IPv6 and UDP Checksums | |||
Tunneled Packets" in Section 8. Added an exception to the default | for Tunneled Packets") in Section 8. Added an exception to the | |||
behaviour for the handling of handling UDP packets with zero | default behavior for the handling of UDP packets with zero | |||
checksums for tunnels. | checksums for tunnels. | |||
o Add instruction to Section 9 "IANA Considerations" to change | o Added instruction to Section 9, "IANA Considerations", to change | |||
references to RFC2460 to this document | references to RFC 2460 to this document. | |||
o Revised and expanded Section 10 "Security Considerations". | o Revised and expanded Section 10, "Security Considerations". | |||
o Add a paragraph to the acknowledgement section acknowledging the | o Added a paragraph to the Acknowledgments section acknowledging the | |||
authors of the updating documents | authors of the updating documents. | |||
o Update references to current versions and assign references to | o Updated references to current versions and assigned references to | |||
normative and informative. | normative and informative. | |||
o Changes to resolve the open Errata on RFC2460. These are: | o Made changes to resolve the errata on RFC 2460. These are: | |||
Errata ID: 2541: This errata notes that RFC2460 didn't update | ||||
RFC2205 when the length of the Flow Label was changed from 24 | ||||
to 20 bits from RFC1883. This issue was resolved in RFC6437 | ||||
where the Flow Label is defined. This draft now references | ||||
RFC6437. No change is required. | ||||
Errata ID: 4279: This errata noted that the specification | ||||
doesn't handle the case of a forwarding node receiving a packet | ||||
with a zero Hop Limit. This is fixed in Section 3 of this | ||||
draft. | ||||
Errata ID: 2843: This errata is marked rejected. No change was | ||||
made. | ||||
B.1. Change History Since RFC2460 | ||||
NOTE TO RFC EDITOR: Please remove this subsection prior to RFC | ||||
Publication | ||||
This section describes change history made in each Internet Draft | ||||
that went into producing this version. The numbers identify the | ||||
Internet-Draft version in which the change was made. | ||||
Working Group Internet Drafts | ||||
13) Added link to reference to RFC6564 in Section 4.8. | ||||
13) Added text to Section 5 to define "IPv6 minimum link MTU". | ||||
13) Editorial changes. | ||||
12) Editorial changes (remove old duplicate paragraph). | ||||
11) In Section 4.5 added clarification noting that some fields in | ||||
the IPv6 header may also vary across the fragments being | ||||
reassembled and that other specifications may provide | ||||
additional instructions for how they should be reassembled. | ||||
For example, Section 5.3 of [RFC3168]. | ||||
11) In Section 4 restructured text including separated behaviors | ||||
of extension headers and the hop-by-hop option header, | ||||
removed "examine" from first paragraph about extension | ||||
headers, and removed reference to RFC7045 because "examine" | ||||
was removed (RFC7045 is referenced in Security | ||||
Considerations). Also removed "including the source and | ||||
destination nodes" from paragraph about the hop-by-hop | ||||
options header. | ||||
11) Revised Section 4.8 to make it closer to the update done by | ||||
RFC6554 that updated it and reordered the paragraphs. | ||||
11) Reordered items in Appendix B "Changes Since RFC2460" to | ||||
match the order of the document. | ||||
11) Editorial changes. | ||||
10) Revised and expanded Security Consideration Section based on | ||||
IESG Discuss comments. | ||||
10) Editorial changes. | ||||
09) Based on results of IETF last call, changed text in Section 4 | ||||
to add clarification that extension headers are not examined, | ||||
processed, inserted, or deleted by any node along a packet's | ||||
delivery path. | ||||
09) Changed reference from draft-ietf-6man-rfc4291bis to RFC4291 | ||||
because the bis draft won't be advanced as the same time. | ||||
09) Revised "Changes since RFC2460" Section to have a summary of | ||||
changes since RFC2460 and a separate subsection with a change | ||||
history of each Internet Draft. This subsection will be | ||||
removed when the RFC is published. | ||||
09) Editorial changes. | ||||
08) Revised header insertion text in Section 4 based on the | ||||
results of w.g. survey that concluded to describe the | ||||
problems with header insertion. | ||||
08) Editorial changes. | ||||
07) Expanded Security Considerations section to include both | ||||
IPsec and encryption at higher levels in the protocol stack | ||||
as ways to mitigate IP level security issues. | ||||
07) Added paragraph to Section 4 to clarify how Extension Headers | ||||
are numbered and which are upper-layer headers. | ||||
07) Moved the text regarding network duplicated fragments to the | ||||
received fragment error section. | ||||
07) Added clarification that no ICMP error message should be sent | ||||
if overlapping fragments are received. | ||||
07) Revised the text in Section 4.8 regarding new hop-by-hop | ||||
options and new Extension headers to be closer to the -05 | ||||
version. | ||||
07) Added additional registries to the IANA Considerations | ||||
section that IANA needs to update. | ||||
07) Editorial changes. | ||||
06) Added the Routing Header to the list required extension | ||||
headers that a full implementation includes. | ||||
06) Moved the text in Section 4.5 regarding the handling of | ||||
received overlapping fragments to the list of error | ||||
conditions | ||||
06) Rewrote the text in Section 4.8 "Defining New Extension | ||||
Headers and Options" to be clearer and remove redundant text. | ||||
06) Editorial changes. | ||||
05) Changed requirement for the Hop-by-Hop Options header from a | ||||
should to a may, and added a note to indicate what is | ||||
expected. | ||||
05) Corrected reference to point to draft-ietf-6man-rfc4291bis | ||||
instead of draft-hinden-6man-rfc4291bis. | ||||
05) Change to text regarding not inserting extension headers to | ||||
cite using encapsulation as an example. | ||||
04) Changed text discussing Fragment ID selection to refer to | ||||
RFC7739 for example algorithms. | ||||
04) Editorial changes. | ||||
03) Clarified the text about decrementing the hop limit. | ||||
03) Removed IP Next Generation from the Abstract. | ||||
03) Add reference to the end of Section 4 to IPv6 Extension | ||||
Header IANA registry. | ||||
03) Editorial changes. | ||||
02) Added text to Section 4.8 "Defining New Extension Headers and | ||||
Options" clarifying why no new hop by hop extension headers | ||||
should be defined. | ||||
02) Added text to Fragment Header process on handling exact | ||||
duplicate fragments. | ||||
02) Editorial changes. | ||||
01) Added text that Extension headers must never be inserted by | ||||
any node other than the source of the packet. | ||||
01) Change "must" to "should" in Section 4.3 on the Hop-by-Hop | ||||
header. | ||||
01) Added text that the Data Transmission Order is the same as | ||||
IPv4 as defined in RFC791. | ||||
01) Updated the Fragmentation header text to correct the | ||||
inclusion of AH and note no next header case. | ||||
01) Change terminology in Fragment header section from | ||||
"Unfragmentable Headers" to "Per-Fragment Headers". | ||||
01) Removed paragraph in Section 5 that required including a | ||||
fragment header to outgoing packets if a ICMP Packet Too Big | ||||
message reporting a Next-Hop MTU less than 1280. This is | ||||
based on the update in RFC8021. | ||||
01) Changed to Fragmentation Header section to clarify MTU | ||||
restriction and 8-byte restrictions, and noting the | ||||
restriction on headers in first fragment. | ||||
01) Editorial changes. | ||||
00) Add instruction to the IANA to change references to RFC2460 | ||||
to this document | ||||
00) Add a paragraph to the acknowledgement section acknowledging | ||||
the authors of the updating documents | ||||
00) Remove old paragraph in Section 4 that should have been | ||||
removed when incorporating the update from RFC7045. | ||||
00) Editorial changes. | ||||
Individual Internet Drafts | ||||
07) Update references to current versions and assign references | ||||
to normative and informative. | ||||
07) Editorial changes. | ||||
06) The purpose of this draft is to incorporate the updates | ||||
dealing with Extension headers as defined in RFC6564, | ||||
RFC7045, and RFC7112. The changes include: | ||||
RFC6564: Added new Section 4.8 that describe | ||||
recommendations for defining new Extension headers and | ||||
options | ||||
RFC7045: The changes were to add a reference to RFC7045, | ||||
change the requirement for processing the hop-by-hop | ||||
option to a should, and added a note that due to | ||||
performance restrictions some nodes won't process the Hop- | ||||
by-Hop Option header. | ||||
RFC7112: The changes were to revise the Fragmentation | ||||
Section (Section 4.5) to require that all headers through | ||||
the first Upper-Layer Header are in the first fragment. | ||||
This changed the text describing how packets are | ||||
fragmented and reassembled and added a new error case. | ||||
06) Editorial changes. | ||||
05) The purpose of this draft is to incorporate the updates | ||||
dealing with fragmentation as defined in RFC5722 and RFC6946. | ||||
Note: The issue relating to the handling of exact duplicate | ||||
fragments identified on the mailing list is left open. | ||||
05) Fix text in the end of Section 4 to correct the number of | ||||
extension headers defined in this document. | ||||
05) Editorial changes. | ||||
04) The purpose of this draft is to update the document to | ||||
incorporate the update made by RFC6935 "UDP Checksums for | ||||
Tunneled Packets". | ||||
04) Remove Routing (Type 0) header from the list of required | ||||
extension headers. | ||||
04) Editorial changes. | ||||
03) The purpose of this draft is to update the document for the | Erratum ID 2541 [Err2541]: This erratum notes that RFC 2460 | |||
deprecation of the RH0 Routing Header as specified in RFC5095 | didn't update RFC 2205 when the length of the flow label was | |||
and the allocations guidelines for routing headers as | changed from 24 to 20 bits from RFC 1883. This issue was | |||
specified in RFC5871. Both of these RFCs updated RFC2460. | resolved in RFC 6437 where the flow label is defined. This | |||
specification now references RFC 6437. No change is required. | ||||
02) The purpose of this version of the draft is to update the | Erratum ID 4279 [Err4279]: This erratum noted that the | |||
document to resolve the open Errata on RFC2460. | specification doesn't handle the case of a forwarding node | |||
receiving a packet with a zero Hop Limit. This is fixed in | ||||
Section 3 of this specification. | ||||
Errata ID: 2541: This errata notes that RFC2460 didn't | Erratum ID 4657 [Err4657]: This erratum proposed text that | |||
update RFC2205 when the length of the Flow Label was | extension headers must never be inserted by any node other than | |||
changed from 24 to 20 bits from RFC1883. This issue was | the source of the packet. This was resolved in Section 4, | |||
resolved in RFC6437 where the Flow Label is defined. This | "IPv6 Extension Headers". | |||
draft now references RFC6437. No change is required. | ||||
Errata ID: 4279: This errata noted that the specification | Erratum ID 4662 [Err4662]: This erratum proposed text that | |||
doesn't handle the case of a forwarding node receiving a | extension headers, with one exception, are not examined, | |||
packet with a zero Hop Limit. This is fixed in Section 3 | processed, modified, inserted, or deleted by any node along a | |||
of this draft. Note: No change was made regarding host | packet's delivery path. This was resolved in Section 4, "IPv6 | |||
behaviour. | Extension Headers". | |||
Errata ID: 2843: This errata is marked rejected. No | Erratum ID 2843: This erratum is marked "Rejected". No change | |||
change is required. | was made. | |||
02) Editorial changes to the Flow Label and Traffic Class text. | Acknowledgments | |||
01) The purpose of this version of the draft is to update the | The authors gratefully acknowledge the many helpful suggestions of | |||
document to point to the current specifications of the IPv6 | the members of the IPng Working Group, the End-to-End Protocols | |||
Flow Label field as defined in [RFC6437] and the Traffic | research group, and the Internet community at large. | |||
Class as defined in [RFC2474] and [RFC3168]. | ||||
00) The purpose of this version is to establish a baseline from | The authors would also like to acknowledge the authors of the | |||
RFC2460. The only intended changes are formatting (XML is | updating RFCs that were incorporated in this document to move the | |||
slightly different from .nroff), differences between an RFC | IPv6 specification to Internet Standard. They are Joe Abley, Shane | |||
and Internet Draft, fixing a few ID Nits, and updates to the | Amante, Jari Arkko, Manav Bhatia, Ronald P. Bonica, Scott Bradner, | |||
authors information. There should not be any content changes | Brian Carpenter, P.F. Chimento, Marshall Eubanks, Fernando Gont, | |||
to the specification. | James Hoagland, Sheng Jiang, Erik Kline, Suresh Krishnan, Vishwas | |||
Manral, George Neville-Neil, Jarno Rajahalme, Pekka Savola, Magnus | ||||
Westerlund, and James Woodyatt. | ||||
Authors' Addresses | Authors' Addresses | |||
Stephen E. Deering | Stephen E. Deering | |||
Retired | Retired | |||
Vancouver, British Columbia | Vancouver, British Columbia | |||
Canada | Canada | |||
Robert M. Hinden | Robert M. Hinden | |||
Check Point Software | Check Point Software | |||
959 Skyway Road | 959 Skyway Road | |||
San Carlos, CA 94070 | San Carlos, CA 94070 | |||
USA | United States of America | |||
Email: bob.hinden@gmail.com | Email: bob.hinden@gmail.com | |||
End of changes. 181 change blocks. | ||||
619 lines changed or deleted | 368 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |