idnits 2.17.1 draft-ietf-rohc-ip-only-05.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** The document seems to lack a 1id_guidelines paragraph about 6 months document validity -- however, there's a paragraph with a matching beginning. Boilerplate error? ** The document seems to lack a 1id_guidelines paragraph about the list of current Internet-Drafts -- however, there's a paragraph with a matching beginning. Boilerplate error? == No 'Intended status' indicated for this document; assuming Proposed Standard Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (October 10, 2003) is 7498 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 normative reference: RFC 2460 (Obsoleted by RFC 8200) -- Possible downref: Non-RFC (?) normative reference: ref. 'PROTOCOL' Summary: 5 errors (**), 0 flaws (~~), 2 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group Lars-Erik Jonsson, Ericsson 3 INTERNET-DRAFT Ghyslain Pelletier, Ericsson 4 Expires: April 2004 5 October 10, 2003 7 RObust Header Compression (ROHC): 8 A Compression Profile for IP 9 11 Status of this memo 13 This document is an Internet-Draft and is in full conformance with 14 all provisions of Section 10 of RFC2026. 16 Internet-Drafts are working documents of the Internet Engineering 17 Task Force (IETF), its areas, and its working groups. Note that other 18 groups may also distribute working documents as Internet-Drafts. 20 Internet-Drafts are draft documents valid for a maximum of six months 21 and may be updated, replaced, or obsoleted by other documents at any 22 time. It is inappropriate to use Internet-Drafts as reference 23 material or cite them other than as "work in progress". 25 The list of current Internet-Drafts can be accessed at 26 http://www.ietf.org/ietf/lid-abstracts.txt 28 The list of Internet-Draft Shadow Directories can be accessed at 29 http://www.ietf.org/shadow.html 31 This document is a submission of the IETF ROHC WG. Comments should be 32 directed to the ROHC WG mailing list, rohc@ietf.org. 34 Abstract 36 The original RObust Header Compression (ROHC) RFC, RFC 3095, defines 37 a framework for header compression, along with compression protocols 38 (profiles) for IP/UDP/RTP, IP/ESP, IP/UDP, and also a profile for 39 uncompressed packet streams. However, no profile was defined for 40 compression of IP only, which has been identified as a missing piece 41 in RFC 3095. This document defines a ROHC compression profile for IP, 42 similar to the IP/UDP profile defined by RFC 3095, but simplified to 43 exclude UDP, and enhanced to compress IP header chains of arbitrary 44 length. 46 Table of Contents 48 1. Introduction..................................................2 49 2. Terminology...................................................3 50 3. ROHC IP Compression (Profile 0x0004)..........................3 51 3.1. Static Chain Termination...............................3 52 3.2. Handling Multiple Levels of IP Headers.................3 53 3.3. Constant IP-ID.........................................4 54 3.4. Additional Mode Transition Logic.......................6 55 3.5. Initialization.........................................7 56 3.6. Packet Types...........................................8 57 3.7. The CONTEXT_MEMORY Feedback Option.....................9 58 4. Security Considerations.......................................9 59 5. IANA Considerations...........................................9 60 6. Intellectual Property Right Claim Considerations.............10 61 7. Acknowledgements.............................................10 62 8. References...................................................10 63 9. Authors' Addresses...........................................11 64 Appendix A. Detailed Procedures for Canceling Mode Transitions..12 65 A.1. Transition from Optimistic to Reliable Mode................12 66 A.2. Transition from Unidirectional to Reliable Mode............13 67 A.3. Transition from Reliable to Optimistic Mode................13 68 A.4. Transition Back to Unidirectional Mode.....................14 70 1. Introduction 72 The original RObust Header Compression (ROHC) RFC [RFC-3095] defines 73 a framework for header compression, along with compression protocols 74 (profiles) for IP/UDP/RTP, IP/ESP, IP/UDP, and also a profile for 75 uncompressed packet streams. The profile for uncompressed data was 76 defined to provide a means to encapsulate all traffic over a link 77 within ROHC packets. Through this profile, the lower layers do not 78 have to provide multiplexing for different packet types, but instead 79 ROHC can handle any packet stream, even if compression profiles for 80 all kinds of packet streams have yet not been defined or implemented 81 over the link. 83 Although the profile without compression is simple and can tunnel 84 arbitrary packets, it has of course a major weakness in that it does 85 not compress the headers at all. When considering that normally all 86 packets are expected to be IP [RFC-791, RFC-2460] packets, and that 87 the IP header often represents a major part of the total header, a 88 useful alternative to no compression would for most packets be 89 compression of the IP header only. Unfortunately, such a profile was 90 not defined in [RFC-3095], and this has thus been identified as an 91 important missing piece in the ROHC toolbox. 93 This document addresses this missing compression support and defines 94 a ROHC compression profile for IP [RFC-791, RFC-2460] only, similar 95 to the IP/UDP profile defined by [RFC-3095], but simplified to 96 exclude UDP. Due to the similarities with the IP/UDP profile, the IP 97 compression profile is described based on the IP/UDP profile, mainly 98 covering differences. The most important differences are a different 99 way of terminating the static header chain, and the capability to 100 compress IP header chains of arbitrary length. 102 2. Terminology 104 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 105 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 106 document are to be interpreted as described in [RFC-2119]. 108 ROHC UDP 110 "ROHC UDP" in this document refers to the IP/UDP profile 111 (Profile 0x0002) as defined in [RFC-3095]. 113 3. ROHC IP Compression (Profile 0x0004) 115 In general, there are no major difference between the ROHC UDP 116 profile and the IP profile (ROHC IP) defined in this document, since 117 the removal of UDP has no impact on the compression mechanisms in 118 principle. As for ROHC UDP, the compressor generates a 16-bit 119 sequence number which increases by one for each packet compressed in 120 the packet stream, simply called SN below. The most important 121 difference between this profile and ROHC UDP is about static chain 122 termination and handling of multiple IP headers. Unless stated 123 explicitly below, mechanisms and formats are as for ROHC UDP. 125 3.1. Static Chain Termination 126 One difference for IP-only compression, compared to IP/UDP 127 compression, is related to the termination of the static chain in IR 128 headers. For the UDP profile, the chain always ends with a UDP header 129 part, which per definition provides the boundaries for the chain. The 130 UDP header is also the last header in the uncompressed packet (except 131 for a potential application header). For the IP-only profile, there 132 is no single last header that per profile definition terminates the 133 chain. Instead, the static chain is terminated if the "Next Header / 134 Protocol" field of a static IP header part indicates anything but IP 135 (IPinIP or IPv6). 137 3.2. Handling Multiple Levels of IP Headers 139 The ROHC IR and IR-DYN packets defined in [RFC-3095] are used to 140 communicate static and/or dynamic parts of a context. For each of the 141 compression profiles defined in [RFC-3095], there is a single last 142 header in the header chain that clearly marks the termination of the 143 static chain. The length of the dynamic chain is then inferred from 144 the static chain in the IR header itself, or from the static chain in 145 the context for the IR-DYN header. The length of both static and 146 dynamic chains may thus be of arbitrary length and may, in theory, 147 initialize a context with an arbitrary number of IP levels. 149 However, the general compressed header formats defined in [RFC-3095, 150 section 5.7.] specifies that at most two levels of IP headers (the 151 'Inner' and the 'Outer' level of IP headers) may be included in a 152 compressed header. Specifically, the format defined for Extension 3 153 [RFC-3095, section 5.7.5.] can only carry one single 'Outer' IP 154 header. In addition, while list compression may be used to compress 155 other types of headers, it cannot be used to compress additional IP 156 headers as IP headers may not be part of an extension header chain in 157 compressed headers [ROHC, section 5.8.]. 159 For the compression profiles defined in [RFC-3095], the consequence 160 is that at most two levels of IP headers can be compressed. In other 161 words, the presence of additional IP headers at best partially 162 disables header compression, as the compressor will only be allowed 163 to send IR and IR-DYN packets in such cases. 165 For the compression of IP headers only, the additional IP headers 166 would however not have to cause header compression to be disabled 167 because there is no single packet type that ends the compressed 168 chain. The excess IP headers could simply be left uncompressed by 169 implicitly terminating the static and dynamic chains after at most 170 two levels of IP headers. 172 The IP-only profile defined in this document takes one step further 173 and supports compression of an arbitrary number of IP levels. This is 174 achieved by adding a dynamic chain to the general format of 175 compressed headers, to include the header part of each IP level in 176 excess of the first two. 178 As explained above, the static chain within IR packets can be of 179 arbitrary length, and the chain is terminated by the presence of a 180 non-IP header (not IPinIP nor IPv6). The dynamic chain is structured 181 analogously. 183 For compressed headers, the information related to the initial two IP 184 headers is carried as for the IP/UDP profile, and a chain of dynamic 185 header information is added to the end of the compressed header for 186 each and every additional IP header. This additional data structure 187 is thus exactly the same as the one used in IR and IR-DYN packets. 188 The length of the chain is inferred from the chain of static 189 parameters in the context. While a dynamic chain carries dynamically 190 changing parameters using an uncompressed representation, this 191 ensures that flows with arbitrary levels of IP headers will not 192 impair compression efficiency. 194 3.3. Constant IP-ID 196 Most IPv4 stacks assign IP-ID according to the value of a counter 197 increasing by one for each outgoing packet. ROHC UDP compresses the 198 IP-ID field using offset IP-ID encoding based on the UDP SN [RFC- 199 3095]. For stacks generating IP-ID values using a pseudo-random 200 number generator, the field is not compressed and is sent as-is in 201 its entirety as additional octets after the compressed header. 203 Cases have also been found where an IPv4 stack uses a constant value 204 for the IP Identifier. When the IP-ID field is constant, it cannot be 205 compressed using offset IP-ID encoding and the field must be sent in 206 its entirety. This overhead can be avoided with the addition of a 207 flag within the dynamic part of the chain used to initialize the IPv4 208 header, as follow: 210 Dynamic part: 212 +---+---+---+---+---+---+---+---+ 213 | Type of Service | 214 +---+---+---+---+---+---+---+---+ 215 | Time to Live | 216 +---+---+---+---+---+---+---+---+ 217 / Identification / 2 octets 218 +---+---+---+---+---+---+---+---+ 219 | DF|RND|NBO|SID| 0 | 220 +---+---+---+---+---+---+---+---+ 221 / Generic extension header list / variable length 222 +---+---+---+---+---+---+---+---+ 224 SID: Static IP Identifier. 226 For IR and IR-DYN packets, the logic is the same as for ROHC UDP 227 with the addition that field(SID) must be kept in the context. 229 For compressed headers other than IR and IR-DYN: 231 If value(RND) = 0 and context(SID) = 0, hdr(IP-ID) is 232 compressed using Offset IP-ID encoding (see [RFC-3095 section 233 4.5.5]) using p = 0 and default-slope(IP-ID offset) = 0. 235 If value(RND) = 0 and context(SID) = 1, hdr(IP-ID) is constant 236 and compressed away; hdr(IP-ID) is the value of context(IP-ID). 238 If value(RND) = 1, IP-ID is the uncompressed hdr(IP-ID). IP-ID 239 is then passed as additional octets at the end of the 240 compressed header, after any extensions. 242 Note: Only IR and IR-DYN packets can update context(SID). 244 Note: All other fields are the same as for ROHC UDP [RFC-3095]. 246 3.4. Additional Mode Transition Logic 248 The profiles defined in [RFC-3095] operate using different modes of 249 compression. A mode transition can be requested once a packet has 250 reached the decompressor by sending feedback indicating the desired 251 mode. As per the specifications found in [RFC-3095], the compressor 252 is compelled to honor such request. 254 For the IP profile defined in this document, the Mode parameter for 255 the value mode = 0 (packet types UOR-2, IR and IR-DYN) is redefined 256 to allow the compressor to decline a mode transition requested by the 257 decompressor: 259 Mode: Compression mode. 0 = (C)ancel Mode Transition 261 Upon receiving the Mode parameter set to '0', the decompressor MUST 262 stay in its current mode of operation and SHOULD refrain from sending 263 further mode transition requests for the declined mode for a certain 264 amount of time. 266 More specifically, with reference to the parameters C_TRANS, C_MODE, 267 D_TRANS and D_MODE defined in [ROHC, section 5.6.1.], the following 268 modifications apply when the compressor cancels a mode transition: 270 Parameters for the compressor side: 272 - C_MODE: 273 This value must not be changed when sending mode information 274 within packets when the mode parameter set to '0' (as a 275 response to a mode transition request from the decompressor). 277 - C_TRANS: 278 C_TRANS is (P)ending when receiving a mode transition request 279 from the decompressor. C_TRANS is set to (D)one when the 280 compressor receives an ACK for a UOR-2, IR-DYN, or IR packet 281 sent with the mode parameter set to the mode in use at the time 282 when the mode transition request was initiated. 284 Parameters for the decompressor side: 286 - D_MODE: 287 D_MODE MUST remain unchanged when receiving a UOR-2, an IR-DYN, 288 or an IR packet sent with the mode parameter set to '0'. 290 - D_TRANS: 291 D_TRANS is (P)ending when a UOR-2, IR-DYN, or IR packet sent 292 with the mode parameter set to '0' is received. It is set to 293 (D)one when a packet of type 1 or 0 corresponding to the 294 unchanged mode is received. 296 The resulting mode transition procedure is described below: 298 Compressor Decompressor 299 ---------------------------------------------- 300 C_MODE = X | | D_MODE = X 301 | Mode Request(Y) +-<-<-<-| D_TRANS = I 302 | +-<-<-<-<-<-<-<-+ | 303 C_TRANS = P |-<-<-<-+ | 304 C_MODE = X | | 305 |->->->-+ IR/IR-DYN/UOR-2(SN,C) | 306 | +->->->->->->->-+ | 307 |->-.. +->->->-| D_TRANS = P 308 |->-.. | D_MODE = X 309 | ACK(SN,X) +-<-<-<-| 310 | +-<-<-<-<-<-<-<-+ | 311 C_TRANS = D |-<-<-<-+ | 312 | | 313 |->->->-+ X-0, X-1* | 314 | +->->->->->->->-+ | 315 | +->->->-| D_TRANS = D 316 | | 318 where X: mode in use before the mode transition was initiated 319 Y: mode requested by the decompressor 320 C: (C)ancel mode transition 322 3.5. Initialization 324 The static context for ROHC IP compression can be initialized in 325 either of two ways: 327 1) By using an IR packet as in ROHC UDP, where the profile is 328 0x0004, and the static chain ends with the static part of an 329 IP header, where the Next Header/Protocol field has any value but 330 IPinIP (4) or IPv6 (41) [PROTOCOL]. At the compressor, SN is 331 initialized to a random value when the first IR packet is sent. 333 2) By reusing an existing context. This is done with an IR-DYN 334 packet, identifying profile 0x0004, where the dynamic chain 335 corresponds to the prefix of the existing static chain, ending 336 with an IP header where the Next Header/Protocol field has any 337 value but IPinIP (4) or IPv6 (41) [PROTOCOL]. At the compressor, 338 SN is initialized to a random value when the first IR-DYN packet 339 is sent. 341 For ROHC IP, the dynamic part of an IR or IR-DYN packet is similar to 342 the one for ROHC UDP, with a two-octet field containing the SN 343 present at the end of the dynamic chain in IR and IR-DYN packets. It 344 should be noted that the static and dynamic chains have an arbitrary 345 length, and the SN is added only once, at the end of the dynamic 346 chain in IR and IR-DYN packets. 348 3.6. Packet Types 350 Except for one new feedback option (see section 3.7), the only packet 351 format that differs from ROHC UDP is the general format for 352 compressed packets, which has no UDP checksum in the end. Instead, it 353 ends with a list of dynamic header portions, one for each IP header 354 above the initial two (if any, as indicated by the presence of 355 corresponding header portions in the static chain). 357 The general format for a compressed header is thus as follows: 359 0 1 2 3 4 5 6 7 360 --- --- --- --- --- --- --- --- 361 : Add-CID octet : | 362 +---+---+---+---+---+---+---+---+ | 363 | first octet of base header | | 364 +---+---+---+---+---+---+---+---+ | 365 : : | 366 / 0, 1, or 2 octets of CID / | 367 : : | 368 +---+---+---+---+---+---+---+---+ | 369 / remainder of base header / | 370 +---+---+---+---+---+---+---+---+ | 371 : : | 372 / Extension / | 373 : : | 374 --- --- --- --- --- --- --- --- | 375 : : | 376 + IP-ID of outer IPv4 header + 377 : : (see section 5.7 of [RFC-3095]) 378 --- --- --- --- --- --- --- --- 379 / AH data for outer list / | 380 --- --- --- --- --- --- --- --- | 381 : : | 382 + GRE checksum + | 383 : : | 384 --- --- --- --- --- --- --- --- | 385 : : | 386 + IP-ID of inner IPv4 header + | 387 : : | 388 --- --- --- --- --- --- --- --- | 389 / AH data for inner list / | 390 --- --- --- --- --- --- --- --- | 391 : : | 392 + GRE checksum + | 393 : : | 394 --- --- --- --- --- --- --- --- 395 : List of : 396 / Dynamic chains / variable, given by static chain 397 : for additional IP headers : (includes no SN) 398 --- --- --- --- --- --- --- --- 400 Note that the list of dynamic chains for the additional IP headers in 401 compressed packets do not have a sequence number at the end of the 402 chain, as SN is present within compressed base headers. 404 3.7. The CONTEXT_MEMORY Feedback Option 406 The CONTEXT_MEMORY option informs the compressor that the 407 decompressor does not have sufficient memory resources to handle the 408 context of the packet stream, as the stream is currently compressed. 410 0 1 2 3 4 5 6 7 411 +---+---+---+---+---+---+---+---+ 412 | Opt Type = 9 | Opt Len = 0 | 413 +---+---+---+---+---+---+---+---+ 415 When receiving a CONTEXT_MEMORY option, the compressor SHOULD take 416 actions to compress the packet stream in a way that requires less 417 decompressor memory resources, or stop compressing the packet stream. 419 4. Security Considerations 421 The security considerations of [RFC-3095] apply equally to this 422 document, without exceptions or additions. 424 5. IANA Considerations 426 ROHC profile identifier 0x0004 has been reserved by the IANA for the 427 profile defined in this document. 429 { NOTE TO IANA - TO BE REMOVED BEFORE PUBLICATION } 431 A ROHC profile identifier must be reserved by the IANA for the 432 profile defined in this document. Profile number 0x0004 has 433 previously been saved for this purpose, and should thus be used. 434 As for previous ROHC profiles, profile numbers 0xnn04 must also be 435 reserved for future variants of this profile. A suggested 436 registration in the "RObust Header Compression (ROHC) Profile 437 Identifiers" name space would then be: 439 OLD: 0xnn04 To be Assigned by IANA 441 NEW: 0x0004 ROHC IP [RFCXXXX (this)] 442 0xnn04 Reserved 444 { END OF NOTE } 446 6. Intellectual Property Right Claim Considerations 448 The IETF has been notified of intellectual property rights claimed in 449 regard to some or all of the specification contained in this 450 document. For more information consult the online list of claimed 451 rights. 453 The IETF takes no position regarding the validity or scope of any 454 intellectual property or other rights that might be claimed to 455 pertain to the implementation or use of the technology described in 456 this document or the extent to which any license under such rights 457 might or might not be available; neither does it represent that it 458 has made any effort to identify any such rights. Information on the 459 IETF's procedures with respect to rights in standards-track and 460 standards-related documentation can be found in BCP-11. Copies of 461 claims of rights made available for publication and any assurances of 462 licenses to be made available, or the result of an attempt made to 463 obtain a general license or permission for the use of such 464 proprietary rights by implementors or users of this specification can 465 be obtained from the IETF Secretariat. 467 The IETF invites any interested party to bring to its attention any 468 copyrights, patents or patent applications, or other proprietary 469 rights which may cover technology that may be required to practice 470 this standard. Please address the information to the IETF Executive 471 Director. 473 7. Acknowledgements 475 The authors would like to thank Carsten Bormann, Fredrik Lindstrom, 476 Tommy Lundemo, and especially the committed document reviewers 477 Kristofer Sandlund and Mark West, for valuable input and review. 479 8. References 481 [RFC-791] Postel, J., "Internet Protocol", RFC 791, September 1981. 483 [RFC-2119] Bradner, S., "Key words for use in RFCs to Indicate 484 Requirement Levels", RFC 2119, March 1997. 486 [RFC-2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 487 (IPv6) Specification", RFC 2460, December 1998. 489 [RFC-3095] Bormann, C., Burmeister, C., Degermark, M., Fukushima, 490 H., Hannu, H., Jonsson, L-E., Hakenberg, R., Koren, T., 491 Le, K., Liu, Z., Martensson, A., Miyazaki, A., Svanbro, 492 K., Wiebke, T., Yoshimura, T. and H. Zheng, "Robust 493 Header Compression (ROHC)", RFC 3095, July 2001. 495 [PROTOCOL] "Assigned Internet Protocol Numbers", IANA registry at: 496 http://www.iana.org/assignments/protocol-numbers 498 9. Authors' Addresses 500 Lars-Erik Jonsson 501 Ericsson AB 502 Box 920 503 SE-971 28 Lulea, Sweden 505 Phone: +46 920 20 21 07 506 Fax: +46 920 20 20 99 507 Email: lars-erik.jonsson@ericsson.com 509 Ghyslain Pelletier 510 Box 920 511 Ericsson AB 512 SE-971 28 Lulea, Sweden 514 Phone: +46 920 20 24 32 515 Fax: +46 920 20 20 99 516 Email: ghyslain.pelletier@ericsson.com 518 Appendix A. Detailed Procedures for Canceling Mode Transitions 520 The profiles defined in [RFC-3095] operate using different modes of 521 compression: Unidirectional (U-Mode), Bi-directional Optimistic (O- 522 Mode) and Bi-directional Reliable (R-Mode). Compression always starts 523 in the U-Mode, and mode transitions can only be initiated by the 524 decompressor [ROHC, section 5.6.]. A mode transition can be requested 525 once a packet has reached the decompressor by sending feedback 526 indicating the desired mode. 528 With reference to the parameters C_TRANS, C_MODE, D_TRANS and D_MODE 529 defined in [ROHC, section 5.6.1.], the following sub-sections 530 describe the resulting procedures when a compressor declines a mode 531 transition request from the decompressor as described in section 3.4. 533 A.1. Transition from Optimistic to Reliable Mode 535 When the decompressor initiates a mode transition from Optimistic to 536 Reliable mode, the cancellation of the transition procedure is 537 described as follows: 539 Compressor Decompressor 540 ---------------------------------------------- 541 | | 542 | ACK(R)/NACK(R) +-<-<-<-| D_TRANS = I 543 | +-<-<-<-<-<-<-<-+ | 544 C_TRANS = P |-<-<-<-+ | 545 C_MODE = O | | 546 |->->->-+ IR/IR-DYN/UOR-2(SN,C) | 547 | +->->->->->->->-+ | 548 |->-.. +->->->-| D_TRANS = P 549 |->-.. | D_MODE = O 550 | ACK(SN,O) +-<-<-<-| 551 | +-<-<-<-<-<-<-<-+ | 552 C_TRANS = D |-<-<-<-+ | 553 | | 554 |->->->-+ UO-0, UO-1* | 555 | +->->->->->->->-+ | 556 | +->->->-| D_TRANS = D 558 The compressor must not send packet types 1 or 0 when C_TRANS is P, 559 i.e. not until it has received an ACK for a UOR-2, IR-DYN, or IR 560 packet sent with the mode transition parameter set to C. When the 561 decompressor receives a UOR-2, IR-DYN, or IR packet sent with the 562 mode transition parameter set to C, it must keep the value D_MODE as 563 O and set D_TRANS to P. When the decompressor receives packet types 0 564 or 1, after having ACKed a UOR-2, IR-DYN, or IR packet, it sets 565 D_TRANS to D. 567 A.2. Transition from Unidirectional to Reliable Mode 569 The cancellation of a transition from Unidirectional to Reliable mode 570 follows the same procedure as defined in section 4.2 above. 572 A.3. Transition from Reliable to Optimistic Mode 574 When the decompressor initiates a mode transition from Reliable to 575 Optimistic mode, the cancellation of the transition procedure is 576 described as follows: 578 Compressor Decompressor 579 ---------------------------------------------- 580 | | 581 | ACK(O)/NACK(O) +-<-<-<-| D_TRANS = I 582 | +-<-<-<-<-<-<-<-+ | 583 C_TRANS = P |-<-<-<-+ | 584 C_MODE = R | | 585 |->->->-+ IR/IR-DYN/UOR-2(SN,C) | 586 | +->->->->->->->-+ | 587 |->-.. +->->->-| D_MODE = R 588 |->-.. | 589 | ACK(SN,R) +-<-<-<-| 590 | +-<-<-<-<-<-<-<-+ | 591 C_TRANS = D |-<-<-<-+ | 592 | | 593 |->->->-+ R-0, R-1* | 594 | +->->->->->->->-+ | 595 | +->->->-| D_TRANS = D 596 | | 598 The compressor must not send packet types 1 or 0 when C_TRANS is P, 599 i.e. not until it has received an ACK for a UOR-2, IR-DYN, or IR 600 packet sent with the mode transition parameter set to C. When the 601 decompressor receives a UOR-2, IR-DYN, or IR packet sent with the 602 mode transition parameter set to C, it must keep the value D_MODE as 603 R. When the decompressor receives packet types 0 or 1, after having 604 ACKed a UOR-2, IR-DYN, or IR packet, it sets D_TRANS to D. 606 A.4. Transition Back to Unidirectional Mode 608 When the decompressor initiates a mode transition from Reliable or 609 Optimistic mode back to Unidirectional mode, the cancellation of the 610 transition procedure is described as follows: 612 Compressor Decompressor 613 ---------------------------------------------- 614 | | 615 | ACK(U)/NACK(U) +-<-<-<-| D_TRANS = I 616 | +-<-<-<-<-<-<-<-+ | 617 C_TRANS = P |-<-<-<-+ | 618 C_MODE = O/R| | 619 |->->->-+ IR/IR-DYN/UOR-2(SN,C) | 620 | +->->->->->->->-+ | 621 |->-.. +->->->-| 622 |->-.. | 623 | ACK(SN,O/R) +-<-<-<-| 624 | +-<-<-<-<-<-<-<-+ | 625 C_TRANS = D |-<-<-<-+ | 626 | R-0, R-1* or | 627 |->->->-+ UO-0, UO-1* | 628 | +->->->->->->->-+ | 629 | +->->->-| D_TRANS = D 630 D_MODE = O/R 632 When the decompressor receives a UOR-2, IR-DYN, or IR packet sent 633 with the mode transition parameter set to C, it must keep the value 634 D_MODE to the bi-directional mode already in use (either O- or R- 635 mode). After ACKing the first UOR-2(C), IR-DYN(C), or IR(C), the 636 decompressor MUST continue to send feedback with the Mode parameter 637 set to the bi-directional mode in use (either O- or R-mode) until it 638 receives packet types 0 or 1. When the decompressor receives packet 639 types 0 or 1, after having ACKed a UOR-2, IR-DYN, or IR packet, it 640 sets D_TRANS to D. 642 Full Copyright Statement 644 Copyright (C) The Internet Society (2003). All Rights Reserved. 646 This document and translations of it may be copied and furnished to 647 others, and derivative works that comment on or otherwise explain it 648 or assist in its implementation may be prepared, copied, published 649 and distributed, in whole or in part, without restriction of any 650 kind, provided that the above copyright notice and this paragraph are 651 included on all such copies and derivative works. However, this 652 document itself may not be modified in any way, such as by removing 653 the copyright notice or references to the Internet Society or other 654 Internet organizations, except as needed for the purpose of 655 developing Internet standards in which case the procedures for 656 copyrights defined in the Internet Standards process must be 657 followed, or as required to translate it into languages other than 658 English. 660 The limited permissions granted above are perpetual and will not be 661 revoked by the Internet Society or its successors or assigns. 663 This document and the information contained herein is provided on an 664 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 665 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 666 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 667 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 668 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 670 This Internet-Draft expires April 10, 2004.