idnits 2.17.1 draft-ietf-intarea-ipv4-id-update-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- == There are 2 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. -- The draft header indicates that this document updates RFC2003, but the abstract doesn't seem to mention this, which it should. -- The draft header indicates that this document updates RFC1122, but the abstract doesn't seem to mention this, which it should. -- The draft header indicates that this document updates RFC791, but the abstract doesn't seem to mention this, which it should. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year (Using the creation date from RFC791, updated by this document, for RFC5378 checks: 1981-09-01) -- The document seems to contain a disclaimer for pre-RFC5378 work, and may have content which was first submitted before 10 November 2008. The disclaimer is necessary when there are original authors that you have been unable to contact, or if some do not wish to grant the BCP78 rights to the IETF Trust. If you are able to get all authors (current and original) to grant those rights, you can and should remove the disclaimer; otherwise, the disclaimer is needed and you can ignore this comment. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (October 22, 2010) is 4928 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Obsolete informational reference (is this intentional?): RFC 2460 (Obsoleted by RFC 8200) -- Obsolete informational reference (is this intentional?): RFC 2671 (Obsoleted by RFC 6891) -- Obsolete informational reference (is this intentional?): RFC 4960 (Obsoleted by RFC 9260) Summary: 0 errors (**), 0 flaws (~~), 2 warnings (==), 8 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 Internet Area WG J. Touch 2 Internet Draft USC/ISI 3 Updates: 791,1122,2003 October 22, 2010 4 Intended status: Proposed Standard 5 Expires: April 2011 7 Updated Specification of the IPv4 ID Field 8 draft-ietf-intarea-ipv4-id-update-01.txt 10 Status of this Memo 12 This Internet-Draft is submitted to IETF in full conformance with the 13 provisions of BCP 78 and BCP 79. 15 This document may contain material from IETF Documents or IETF 16 Contributions published or made publicly available before November 17 10, 2008. The person(s) controlling the copyright in some of this 18 material may not have granted the IETF Trust the right to allow 19 modifications of such material outside the IETF Standards Process. 20 Without obtaining an adequate license from the person(s) controlling 21 the copyright in such materials, this document may not be modified 22 outside the IETF Standards Process, and derivative works of it may 23 not be created outside the IETF Standards Process, except to format 24 it for publication as an RFC or to translate it into languages other 25 than English. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF), its areas, and its working groups. Note that 29 other groups may also distribute working documents as Internet- 30 Drafts. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 The list of current Internet-Drafts can be accessed at 38 http://www.ietf.org/ietf/1id-abstracts.txt 40 The list of Internet-Draft Shadow Directories can be accessed at 41 http://www.ietf.org/shadow.html 43 This Internet-Draft will expire on April 22, 2011. 45 Copyright Notice 47 Copyright (c) 2010 IETF Trust and the persons identified as the 48 document authors. All rights reserved. 50 This document is subject to BCP 78 and the IETF Trust's Legal 51 Provisions Relating to IETF Documents 52 (http://trustee.ietf.org/license-info) in effect on the date of 53 publication of this document. Please review these documents 54 carefully, as they describe your rights and restrictions with respect 55 to this document. Code Components extracted from this document must 56 include Simplified BSD License text as described in Section 4.e of 57 the Trust Legal Provisions and are provided without warranty as 58 described in the Simplified BSD License. 60 Abstract 62 The IPv4 Identification (ID) field enables fragmentation and 63 reassembly, and as currently specified is required to be unique 64 within the maximum lifetime on all datagrams. If enforced, this 65 uniqueness requirement would limit all connections to 6.4 Mbps. 66 Because this is obviously not the case, it is clear that existing 67 systems violate the current specification. This document updates the 68 specification of the IPv4 ID field to more closely reflect current 69 practice and to more closely match IPv6 so that the field is defined 70 only when a datagram is actually fragmented. It also discusses the 71 impact of these changes on how datagrams are used. 73 Table of Contents 75 1. Introduction...................................................3 76 2. Conventions used in this document..............................3 77 3. The IPv4 ID Field..............................................3 78 4. Uses of the IPv4 ID Field......................................4 79 5. Background on IPv4 ID Reassembly Issues........................5 80 6. Updates to the IPv4 ID Specification...........................6 81 6.1. IPv4 ID Used Only for Fragmentation.......................7 82 6.2. Encourage Safe IPv4 ID Use................................8 83 6.3. IPv4 ID Requirements That Persist.........................9 84 7. Impact on Datagram Use.........................................9 85 8. Updates to Existing Standards.................................10 86 8.1. Updates to RFC 791.......................................10 87 8.2. Updates to RFC 1122......................................11 88 8.3. Updates to RFC 2003......................................11 89 9. Impact on NATs and Tunnel Ingresses...........................12 90 10. Impact on Header Compression.................................13 91 11. Security Considerations......................................13 92 12. IANA Considerations..........................................13 93 13. References...................................................14 94 13.1. Normative References....................................14 95 13.2. Informative References..................................14 96 14. Acknowledgments..............................................15 98 1. Introduction 100 In IPv4, the Identification (ID) field is a 16-bit value that is 101 unique for every datagram for a given source address, destination 102 address, and protocol, such that it does not repeat within the 103 Maximum Segment Lifetime (MSL) [RFC791][RFC1122]. As currently 104 specified, all datagrams between a source and destination of a given 105 protocol must have unique IPv4 ID values over a period of this MSL, 106 which is typically interpreted as two minutes (120 seconds). This 107 uniqueness is currently specified as for all datagrams, regardless of 108 fragmentation settings. 110 The uniqueness of the IPv4 ID is a known problem for high speed 111 devices; if strictly enforced, it would limit the speed of a single 112 protocol between two endpoints to 6.4 Mbps for typical MTUs of 1500 113 bytes [RFC4963]. It is common for a single protocol to operate far in 114 excess of these rates, which strongly indicates that the uniqueness 115 of the IPv4 ID as specified is already moot. 117 This document updates the specification of the IPv4 ID field to more 118 closely reflect current practice, and to include considerations taken 119 into account during the specification of the similar field in IPv6. 121 2. Conventions used in this document 123 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 124 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 125 document are to be interpreted as described in RFC-2119 [RFC2119]. 127 In this document, the characters ">>" proceeding an indented line(s) 128 indicates a requirement using the key words listed above. This 129 convention aids reviewers in quickly identifying or finding this 130 document's explicit requirements. 132 3. The IPv4 ID Field 134 IP supports datagram fragmentation, where large datagrams are split 135 into smaller components to traverse links with limited maximum 136 transmission units (MTUs). Fragments are indicated in different ways 137 in IPv4 and IPv6: 139 o In IPv4, fragments are indicated using four fields of the basic 140 header: Identification (ID), Fragment Offset, a "Don't Fragment" 141 flag (DF), and a "More Fragments" flag (MF) [RFC791] 143 o In IPv6, fragments are indicated in an extension header that 144 includes an ID, Fragment Offset, and MF flag similar to their 145 counterparts in IPv4 [RFC2460] 147 IPv4 and IPv6 fragmentation differs in a few important ways. IPv6 148 fragmentation occurs only at the source, so a DF bit is not needed to 149 prevent downstream devices from initiating fragmentation (i.e., IPv6 150 always acts as if DF=1). The IPv6 fragment header is present only 151 when a datagram has been fragmented, so the ID field is not present 152 for non-fragmented datagrams, and thus is meaningful only for 153 fragments. Finally, the IPv6 ID field is 32 bits, and required unique 154 per source/destination address pair for IPv6, whereas for IPv4 it is 155 only 16 bits and required unique per source/destination/protocol 156 triple. 158 This document focuses on the IPv4 ID field issues, because in IPv6 159 the field is larger and present only in fragments. 161 4. Uses of the IPv4 ID Field 163 The IPv4 ID field was originally intended for fragmentation and 164 reassembly [RFC791]. Within a given source address, destination 165 address, and protocol, fragments of an original datagram are matched 166 based on their IPv4 ID. This requires that IDs are unique within the 167 address/protocol triple when fragmentation is possible (e.g., DF=0) 168 or when it has already occurred (e.g., frag_offset>0 or MF=1). 170 The IPv4 ID field can be useful for other purposes. The field has 171 been suggested as a way to detect and remove duplicate datagrams, 172 e.g., at congested routers, although this has been noted and no 173 current deployments are known (see Sec. 3.2.1.5 of [RFC1122]). It can 174 similarly be used at end hosts to reduce the impact of duplication on 175 higher-layer protocols (e.g., additional processing in TCP, or the 176 need for application-layer duplicate suppression in UDP). 178 The IPv4 ID field can also be used to validate payloads of ICMP 179 responses as matching the originally transmitted datagram at a host 180 [RFC4963]. In this case, the ICMP payload - an IP datagram prefix - 181 is matched against a cache of recently transmitted IP headers to 182 check that the received ICMP reflects a transmitted datagram. At a 183 tunnel ingress, the IPv4 ID enables returning ICMP messages to be 184 matched to a cache of recently transmitted datagrams, to support ICMP 185 relaying, with similar challenges [RFC2003]. 187 Uses of the IPv4 ID field beyond fragmentation and reassembly require 188 that the IPv4 ID be unique across all datagrams, not only when 189 fragmentation is enabled. This document deprecates all such non- 190 fragmentation uses. 192 5. Background on IPv4 ID Reassembly Issues 194 The following is a summary of issues with IPv4 fragment reassembly in 195 high speed environments raised previously [RFC4963]. Readers are 196 encouraged to consult RFC 4963 for a more detailed discussion of 197 these issues. 199 With the maximum IPv4 datagram size of 64KB, a 16-bit ID field that 200 does not repeat within 120 seconds means that the aggregate of all 201 TCP connections of a given protocol between two endpoints is limited 202 to roughly 286 Mbps; at a more typical MTU of 1500 bytes, this speed 203 drops to 6.4 Mbps [RFC4963]. This limit currently applies for all 204 IPv4 datagrams within a single protocol (i.e., the IPv4 protocol 205 field) between two IP addresses, regardless of whether fragmentation 206 is enabled or inhibited, and whether a datagram is fragmented or not. 208 IPv6, even at typical MTUs, is capable of 18.7 Tbps with 209 fragmentation between two endpoints as an aggregate across all 210 protocols, due to the larger 32-bit ID field (and the fact that the 211 IPv6 next-header field, the equivalent of the IPv4 protocol field, is 212 not considered in differentiating fragments). When fragmentation is 213 not used the field is absent, and in that case IPv6 speeds are not 214 limited by the ID field uniqueness. 216 Note also that 120 seconds is only an estimate on the maximum 217 datagram lifetime. It is loosely based on half maximum value of the 218 IP TTL field (255), measured in seconds, because the TTL is 219 decremented not only for each hop, but also for each second a 220 datagram is held at a router (as implied in [RFC791]). Network delays 221 are incurred in other ways, e.g., satellite links, which can add 222 seconds of delay even though the TTL is often not decremented by a 223 corresponding amount. There is thus no enforcement mechanism to 224 ensure that datagrams older than 120 seconds are discarded. 226 Wireless Internet devices are frequently connected at speeds over 54 227 Mbps, and wired links of 1 Gbps have been the default for several 228 years. Although many end-to-end transport paths are congestion 229 limited, these devices easily achieve 100+ Mbps application-layer 230 throughput over LANs (e.g., disk-to-disk file transfer rates), and 231 numerous throughput demonstrations have been performed with COTS 232 systems over wide-area paths at these speeds for over a decade. This 233 strongly suggests that IPv4 ID uniqueness has been moot for a long 234 time. 236 6. Updates to the IPv4 ID Specification 238 This document updates the specification of the IPv4 ID field in three 239 distinct ways, as discussed in subsequent subsections: 241 o Use the IPv4 ID field only for fragmentation 243 o Avoiding a performance impact when the IPv4 ID field is used 245 o Encourage safe operation when the IPv4 ID field is used 247 There are two kinds of datagrams used in the following discussion, 248 named as follows: 250 o Atomic datagrams: datagrams not yet having been fragmented (MF=0 251 and fragment offset=0) and for which further fragmentation has 252 been inhibited (DF=1), i.e., as a C-code expression: 254 (DF==1)&&(MF==0)&&(frag_offset==0) 256 o Non-atomic datagrams: datagrams which have either already been 257 fragmented, i.e.: 259 (MF=1)||(frag_offset>0) 261 or for which fragmentation remains possible: 263 (DF=0) 265 I.e., non-atomic datagrams can be expressed in two equivalent 266 tests: 268 (DF==0)||(MF==1)||(frag_offset>0) 270 which can also be expressed as follows, using DeMorgan's Law and 271 other identities: 273 ~((DF==1)&&(MF==0)&&(frag_offset==0)) 275 Note that this final expression is the same as "not(atomic)". 277 6.1. IPv4 ID Used Only for Fragmentation 279 Although RFC1122 suggests the IPv4 ID field has other uses, this 280 document asserts that this field is defined only for fragmentation 281 and reassembly. 283 o >> IPv4 ID field MUST NOT be used for purposes other than 284 fragmentation and reassembly. 286 This has a few implications. In atomic datagrams, the IPv4 ID field 287 has no meaning, and thus can be set to an arbitrary value, i.e., the 288 requirement for non-repeating IDs within the address/protocol triple 289 is no longer required for atomic datagrams: 291 o >> Originating sources MAY set the IPv4 ID field of atomic 292 datagrams to any value. 294 Second, all network nodes, whether at intermediate routers, 295 destination hosts, or other devices (e.g., NATs, firewalls, tunnel 296 egresses), cannot rely on the field: 298 o >> All devices that examine IPv4 headers MUST ignore the IPv4 ID 299 field of atomic datagrams. 301 The IPv4 ID field is thus meaningful only for non-atomic datagrams - 302 datagrams that have either already been fragmented, or those for 303 which fragmentation remains permitted. Atomic datagrams are detected 304 by their DF, MF, and fragmentation offset fields as explained in 305 Section 6, because such a test is completely backward compatible; 306 this document thus does not reserve any IPv4 ID values, including 0, 307 as distinguished. 309 Deprecating the use of the IPv4 ID field for non-reassembly uses 310 should have little - if any - impact. IPv4 IDs are already frequently 311 repeated, e.g., over even moderately fast connections. Duplicate 312 suppression was only suggested [RFC1122], and no impacts of IPv4 ID 313 reuse have been noted. Routers are not required to issue ICMPs on any 314 particular timescale, and so IPv4 ID repetition should not have been 315 used for validation, and again repetition occurs and probably could 316 have been noticed [RFC1812]. ICMP relaying at tunnel ingresses is 317 specified to use soft state rather than a datagram cache, and should 318 have been noted if the latter for similar reasons [RFC2003]. 320 6.2. Encourage Safe IPv4 ID Use 322 This document makes further changes to the specification of the IPv4 323 ID field and its use to encourage its safe use as corollary 324 requirements changes as follows. 326 RFC 1122 discusses that TCP retransmits a segment it may be possible 327 to reuse the IPv4 ID (see Section 8.2). This can make it difficult 328 for a source to avoid IPv4 ID repetition for received fragments. RFC 329 1122 concludes that this behavior "is not useful"; this document 330 formalizes that conclusion as follows: 332 o >> The IPv4 ID of non-atomic datagrams MUST NOT be reused when 333 sending a copy of an earlier non-atomic datagram. 335 RFC 1122 also suggests that fragments can overlap [RFC1122]. Such 336 overlap can occur if successive retransmissions are fragmented in 337 different ways but the same reassembly IPv4 ID. 339 This overlap is noted as the result of reusing IPv4 IDs when 340 retransmitting datagrams, which this document deprecates. Overlapping 341 fragments are themselves a hazard [RFC4963]. As a result: 343 o >> Overlapping datagrams MUST be silently ignored during 344 reassembly. 346 The IPv4 ID of non-atomic datagrams also needs to remain stable, to 347 ensure that existing fragments are not reassembled incorrectly, as 348 well as to ensure that the uniqueness of the IDs as generated by the 349 source is not undermined. 351 For atomic datagrams, because the IPv4 ID field is ignored on 352 receipt, it can be possible to rewrite the field. Rewriting can be 353 useful to prevent use of the field as a covert channel, or to enable 354 more efficient header compression. However, the IPv4 ID field needs 355 to remain immutable when it is validated by higher layer protocols, 356 such as IPsec. As a result: 358 o >> The IPv4 ID field of non-atomic datagrams, or protected atomic 359 datagrams MUST NOT change in transit; the IPv4 ID field of 360 unprotected atomic datagrams MAY be changed in transit. 362 Protected datagrams are defined as those whose header fields are 363 covered by integrity validation, such as IPsec AH [RFC4302]. 365 6.3. IPv4 ID Requirements That Persist 367 This document does not relax the IPv4 ID field uniqueness 368 requirements of [RFC791] for non-atomic datagrams, i.e.: 370 o >> Sources emitting non-atomic datagrams MUST NOT repeat IPv4 ID 371 values within one MSL for a given source address/destination 372 address/protocol triple. 374 Such sources include originating hosts, tunnel ingresses, and NATs 375 (see Section 9). 377 This document does not relax the requirement that all network devices 378 honor the DF bit, i.e.: 380 o >> IPv4 datagrams whose DF=1 MUST NOT be fragmented. 382 o >> IPv4 datagram transit devices MUST NOT clear the DF bit. 384 In specific, DF=1 prevents fragmenting datagrams that are integral. 385 DF=1 also prevents further fragmenting received fragments. 386 Fragmentation, either of an unfragmented datagram or of fragments, is 387 current permitted only where DF=0 in the original emitted datagram, 388 and this document does not change that requirement. 390 7. Impact on Datagram Use 392 The following is a summary of the recommendations that are the result 393 of the previous changes to the IPv4 ID field specification. 395 Because atomic datagrams can use arbitrary IPv4 ID values, the ID 396 field no longer imposes a performance impact in those cases. However, 397 the performance impact remains for non-atomic datagrams. As a result: 399 o >> Sources of non-atomic IPv4 datagrams MUST rate-limit their 400 output to comply with the ID uniqueness requirements. 402 Such sources include, in particular, DNS over UDP [RFC2671]. 404 Because there is no strict definition of the MSL, reassembly hazards 405 exist regardless of the IPv4 ID reuse interval or the reassembly 406 timeout. As a result: 408 o >> Higher layer protocols SHOULD verify the integrity of IPv4 409 datagrams, e.g., using a checksum or hash that can detect 410 reassembly errors (the UDP checksum is weak in this regard, but 411 better than nothing), as in SEAL [RFC5320]. 413 Additional integrity checks can be employed using tunnels, as in 414 SEAL, IPsec, or SCTP [RFC4301][RFC4960][RFC5320]. Such checks can 415 avoid the reassembly hazards that can occur when using UDP and TCP 416 checksums [RFC4963], or when using partial checksums as in UDP-Lite 417 [RFC3828]. Because such integrity checks can avoid the impact of 418 reassembly errors: 420 o >> Sources of non-atomic IPv4 datagrams using strong integrity 421 checks MAY reuse the ID within MSL values smaller than is typical. 423 Note, however, that such more frequent reuse can still result in 424 corrupted reassembly and poor throughput, although it would not 425 propagate reassembly errors to higher layer protocols. 427 8. Updates to Existing Standards 429 The following sections address the specific changes to existing 430 protocols indicated by this document. 432 8.1. Updates to RFC 791 434 RFC 791 states that: 436 The originating protocol module of an internet datagram sets the 437 identification field to a value that must be unique for that 438 source-destination pair and protocol for the time the datagram 439 will be active in the internet system. 441 And later that: 443 Thus, the sender must choose the Identifier to be unique for this 444 source, destination pair and protocol for the time the datagram 445 (or any fragment of it) could be alive in the internet. 447 It seems then that a sending protocol module needs to keep a table 448 of Identifiers, one entry for each destination it has communicated 449 with in the last maximum datagram lifetime for the internet. 451 However, since the Identifier field allows 65,536 different 452 values, some host may be able to simply use unique identifiers 453 independent of destination. 455 It is appropriate for some higher level protocols to choose the 456 identifier. For example, TCP protocol modules may retransmit an 457 identical TCP segment, and the probability for correct reception 458 would be enhanced if the retransmission carried the same 459 identifier as the original transmission since fragments of either 460 datagram could be used to construct a correct TCP segment. 462 This document changes RFC 791 as follows: 464 o IPv4 ID uniqueness applies to only non-atomic datagrams. 466 o Non-atomic IPv4 datagrams retransmitted by higher level protocols 467 are no longer permitted to reuse the ID value. 469 8.2. Updates to RFC 1122 471 RFC 1122 states that: 473 3.2.1.5 Identification: RFC-791 Section 3.2 475 When sending an identical copy of an earlier datagram, a 476 host MAY optionally retain the same Identification field in 477 the copy. 479 DISCUSSION: 481 Some Internet protocol experts have maintained that when a 482 host sends an identical copy of an earlier datagram, the new 483 copy should contain the same Identification value as the 484 original. There are two suggested advantages: (1) if the 485 datagrams are fragmented and some of the fragments are lost, 486 the receiver may be able to reconstruct a complete datagram 487 from fragments of the original and the copies; (2) a 488 congested gateway might use the IP Identification field (and 489 Fragment Offset) to discard duplicate datagrams from the 490 queue. 492 This document changes RFC 1122 as follows: 494 o The IPv4 ID field is no longer permitted for duplicate detection. 496 o The IPv4 ID field is no longer repeatable for higher level 497 protocol retransmission. 499 o IPv4 datagram fragments no longer are permitted to overlap. 501 8.3. Updates to RFC 2003 503 This document updates how IPv4-in-IPv4 tunnels create IPv4 ID values 504 for the IPv4 outer header [RFC2003], but only in the same way as for 505 any other IPv4 datagram source. 507 9. Impact on NATs and Tunnel Ingresses 509 Network address translators (NATs) and address/port translators 510 (NAPTs) rewrite IP fields, and tunnel ingresses (using IPv4 511 encapsulation) copy and modify some IPv4 fields, so all are 512 considered sources, as do any devices that rewrite any portion of the 513 source address, destination address, protocol, and ID tuple for non- 514 atomic datagrams [RFC3022]. As a result, they are subject to all the 515 requirements of any source, as has been noted. 517 NATs present a particularly challenging situation for fragmentation. 518 Because NATs overwrite portions of the reassembly tuple in both 519 directions, they can destroy tuple uniqueness and result in a 520 reassembly hazard. Whenever IPv4 source address, destination address, 521 or protocol fields are modified, a NAT needs to ensure that the ID 522 field is generated appropriately, rather than simply copied from the 523 incoming datagram. In specific: 525 o >> NATs MUST ensure that the IPv4 ID field of datagrams whose 526 address or protocol are translated comply with requirements as if 527 the datagram were sourced by the NAT. 529 This compliance means that the IPv4 ID field of non-atomic datagrams 530 translated at a NAT need to obey the uniqueness requirements of any 531 IPv4 datagram source. Unfortunately, fragments already violate that 532 requirement, as they repeat an IPv4 ID within the MSL for a given 533 source address, destination address, and protocol triple. 535 Such problems with transmitting fragments through NATs are already 536 known; translation is based on the transport port number, which is 537 present in only the first fragment anyway [RFC3022]. This document 538 underscores the point that not only is reassembly (and possibly 539 subsequent fragmentation) required for translation, it can be used to 540 avoid issues with IPv4 ID uniqueness. 542 Note that NATs/NAPTs already need to exercise special care when 543 emitting datagrams on their public side, because merging datagrams 544 from many sources onto a single outgoing source address can result in 545 IPv4 ID collisions. This situation precedes this document, and is not 546 affected by it. It is exacerbated in large-scale, so-called "carrier 547 grade" NATs [Ni09]. 549 Tunnel ingresses act as sources for the outermost header, but tunnels 550 act as routers for the inner headers (i.e., the datagram as arriving 551 at the tunnel ingress). Ingresses can fragment as originating sources 552 of the outer header, because they control the uniqueness of that IPv4 553 ID field. They need to avoid fragmenting the datagram at the inner 554 header, for the same reasons as any intermediate device, as noted 555 elsewhere in this document. 557 10. Impact on Header Compression 559 Header compression algorithms already accommodate various ways in 560 which the IPv4 ID changes between sequential datagrams. Such 561 algorithms currently need to preserve the IPv4 ID. 563 When compression can assume a nonchanging IPv4 ID, efficiency can be 564 increased. However, when compression assumes a changing ID as a 565 default, having a non-changing ID can make compression less efficient 566 (see footnote 21 of [RFC1144], which is optimized for non-atomic 567 datagrams). This document thus does not recommend whether atomic IPv4 568 datagrams should use nonchanging or changing IDs, but rather allows 569 those IDs to be modified in transit (as per Sec. 6.2), which can be 570 used to accommodate more efficient compression as desired. 572 11. Security Considerations 574 This document attempts to address the security considerations 575 associated with fragmentation in IPv4 [RFC4459]. 577 When the IPv4 ID is ignored on receipt (e.g., for atomic datagrams), 578 its value becomes unconstrained; that field then can more easily be 579 used as a covert channel. For some atomic datagrams - notably those 580 not protected by IPsec Authentication Header (AH) [RFC4302] - it is 581 now possible, and may be desirable, to rewrite the IPv4 ID field to 582 avoid its use as such a channel. 584 The IPv4 ID also now adds much less entropy of the header of a 585 datagram. The IPv4 ID had previously been unique (for a given 586 source/address pair, and protocol field) within one MSL, although 587 this requirement was not enforced and clearly is typically ignored. 588 IDs of non-atomic datagrams are now required unique only within the 589 expected reordering of fragments, which could substantially reduce 590 the amount of entropy in that field. The IPv4 ID of atomic datagrams 591 is not required unique, and so contributes no entropy to the header. 593 The deprecation of the IPv4 ID field's uniqueness for atomic 594 datagrams can defeat the ability to count devices behind a NAT 595 [Be02]. This is not intended as a security feature, however. 597 12. IANA Considerations 599 There are no IANA considerations in this document. 601 The RFC Editor should remove this section prior to publication 603 13. References 605 13.1. Normative References 607 [RFC791] Postel, J., "Internet Protocol", RFC 791 / STD 5, September 608 1981. 610 [RFC1122] Braden, R., Ed., "Requirements for Internet Hosts - 611 Communication Layers", RFC 1122 / STD 3, October 1989. 613 [RFC1812] Baker, F. (Ed.), "Requirements for IP Version 4 Routers", 614 RFC 1812 / STD 4, Jun. 1995. 616 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 617 Requirement Levels", RFC 2119 / BCP 14, March 1997. 619 [RFC2003] Perkins, C., "IP Encapsulation within IP", RFC 2003, 620 October 1996. 622 13.2. Informative References 624 [Be02] Bellovin, S., "A Technique for Counting NATted Hosts", 625 Internet Measurement Conference, Proceedings of the 2nd ACM 626 SIGCOMM Workshop on Internet Measurement, November 2002. 628 [Ni09] Nishitani, T., I. Yamagata, S. Miyakawa, A. Nakagawa, H. 629 Ashida, "Common Functions of Large Scale NAT (LSN) ", (work 630 in progress), draft-nishitani-cgn-05, July 2010. 632 [RFC1144] Jacobson, V., "Compressing TCP/IP Headers", RFC 1144, Feb. 633 1990. 635 [RFC2460] Deering, S., R. Hinden, "Internet Protocol, Version 6 636 (IPv6) Specification", RFC 2460, December 1998. 638 [RFC2671] Vixie,P., "Extension Mechanisms for DNS (EDNS0)", RFC 2671, 639 August 1999. 641 [RFC3022] Srisuresh, P. and K. Egevang, "Traditional IP Network 642 Address Translator (Traditional NAT)", RFC 3022, January 643 2001. 645 [RFC3828] Larzon, L-A., M. Degermark, S. Pink, L-E. Jonsson, Ed., G. 646 Fairhurst, Ed., "The Lightweight User Datagram Protocol 647 (UDP-Lite)", RFC 3828, July 2004. 649 [RFC4301] Kent, S., K. Seo, "Security Architecture for the Internet 650 Protocol", RFC 4301, Dec. 2005. 652 [RFC4302] Kent, S., "IP Authentication Header", RFC 4302, Dec. 2005. 654 [RFC4459] Savola, P., "MTU and Fragmentation Issues with In-the- 655 Network Tunneling", RFC 4459, April 2006. 657 [RFC4960] Stewart, R. (Ed.), "Stream Control Transmission Protocol", 658 RFC 4960, Sep. 2007. 660 [RFC4963] Heffner, J., M. Mathis, B. Chandler, "IPv4 Reassembly 661 Errors at High Data Rates," RFC 4963, July 2007. 663 [RFC5320] Templin, F., Ed., "The Subnetwork Encapsulation and 664 Adaptation Layer (SEAL)", RFC 5320, Feb. 2010. 666 14. Acknowledgments 668 This document was inspired by of numerous discussions among the 669 authors, Jari Arkko, Lars Eggert, Dino Farinacci, and Fred Templin, 670 as well as members participating in the Internet Area Working Group. 671 Detailed feedback was provided by Carlos Pignataro and Gorry 672 Fairhurst. This document originated as an Independent Stream draft 673 co-authored by Matt Mathis, PSC, and his contributions are greatly 674 appreciated. 676 This document was prepared using 2-Word-v2.0.template.dot. 678 Author's Address 680 Joe Touch 681 USC/ISI 682 4676 Admiralty Way 683 Marina del Rey, CA 90292-6695 684 U.S.A. 686 Phone: +1 (310) 448-9151 687 Email: touch@isi.edu