idnits 2.17.00 (12 Aug 2021) /tmp/idnits14366/draft-ietf-rohc-ip-only-02.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? == There is 1 instance of lines with non-ascii characters in the document. == 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 (June 27, 2003) is 6902 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) == Missing Reference: 'ROHC' is mentioned on line 475, but not defined ** Obsolete normative reference: RFC 2460 (Obsoleted by RFC 8200) -- Possible downref: Non-RFC (?) normative reference: ref. 'PROTOCOL' Summary: 5 errors (**), 0 flaws (~~), 4 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: December 2003 5 June 27, 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 4. Security Considerations.......................................9 58 5. IANA Considerations...........................................9 59 6. Acknowledgements..............................................9 60 7. References....................................................9 61 8. Authors' Addresses...........................................10 62 Appendix A. Detailed procedures for canceling mode transitions..11 63 A.1. Transition from Optimistic to Reliable mode................11 64 A.2. Transition from Unidirectional to Reliable mode............12 65 A.3. Transition from Reliable to Optimistic mode................12 66 A.4. Transition back to Unidirectional mode.....................13 68 1. Introduction 70 The original RObust Header Compression (ROHC) RFC [RFC-3095] defines 71 a framework for header compression, along with compression protocols 72 (profiles) for IP/UDP/RTP, IP/ESP, IP/UDP, and also a profile for 73 uncompressed packet streams. The profile for uncompressed data was 74 defined to provide means to encapsulate all traffic over a link 75 within ROHC packets. Through this profile, the lower layers do not 76 have to provide multiplexing for different packet types, but instead 77 ROHC can handle any packet stream, even if compression profiles for 78 all kinds of packet streams have yet not been defined or implemented 79 over the link. 81 Although the profile without compression is simple and can tunnel 82 arbitrary packets, it has of course a major weakness in that it does 83 not compress the headers at all. When considering that normally all 84 packets are expected to be IP [RFC-791, RFC-2460] packets, and that 85 the IP header often represent a major part of the total header, a 86 useful alternative to no compression would for most packets be 87 compression of the IP header only. Unfortunately, such a profile was 88 not defined in [RFC-3095], and this has thus been identified as an 89 important missing piece in the ROHC toolbox. 91 This document addresses this missing compression support and defines 92 a ROHC compression profile for IP [RFC-791, RFC-2460] only, similar 93 to the IP/UDP profile defined by [RFC-3095], but simplified to 94 exclude UDP. Due to the similarities with the IP/UDP profile, the IP 95 compression profile is described based on the IP/UDP profile, mainly 96 covering differences. The most important differences are a different 97 way of terminating the static header chain, and the capability to 98 compress IP header chains of arbitrary length. 100 2. Terminology 102 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 103 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 104 document are to be interpreted as described in RFC 2119 [RFC-2119]. 106 ROHC UDP 108 "ROHC UDP" in this document refers to the IP/UDP profile 109 (Profile 0x0002) as defined in [RFC-3095]. 111 3. ROHC IP Compression (Profile 0x0004) 113 In general, there are no major difference between the ROHC UDP 114 profile and the IP profile (ROHC IP) defined in this document, since 115 the removal of UDP has no impact on the compression mechanisms. As 116 for ROHC UDP, the compressor generates a 16-bit sequence number which 117 increases by one for each packet compressed in the packet stream, 118 simply called SN below. The most important difference between this 119 profile and ROHC UDP is about static chain termination and handling 120 of multiple IP headers. Unless stated explicitly below, mechanisms 121 and formats are as for ROHC UDP. 123 3.1. Static chain termination 125 One difference for IP-only compression, compared to IP/UDP 126 compression, is related to the termination of the static chain in IR 127 headers. For the UDP profile, the chain always ends with a UDP header 128 part, which per definition provides the boundaries for the chain. The 129 UDP header is also the last header in the uncompressed packet (except 130 for potential application header). For the IP-only profile, there is 131 no single last header that per profile definition terminates the 132 chain. Instead, the static chain is terminated if the "Next Header / 133 Protocol" field of a static IP header part indicates anything but IP 134 (IPinIP or IPv6). 136 3.2. Handling multiple levels of IP headers 138 The ROHC IR and IR-DYN packets defined in [RFC-3095] are used to 139 communicate static and/or dynamic parts of a context. For each of the 140 compression profiles defined in [RFC-3095], there is a single last 141 header in the header chain that clearly marks the termination of the 142 static chain. The length of the dynamic chain is then inferred from 143 the static chain in the IR header itself, or from the static chain in 144 the context for the IR-DYN header. The length of both static and 145 dynamic chains may thus be of arbitrary length and may, in theory, 146 initialize a context with an arbitrary number of IP levels. 148 However, the general compressed header formats defined in [RFC-3095, 149 section 5.7.] specifies that a most two levels of IP headers (the 150 'Inner' and the 'Outer' level of IP headers) may be included in a 151 compressed header. Specifically, the format defined for Extension 3 152 [RFC-3095, section 5.7.5.] can only carry the 'Outer' IP header. In 153 addition, while list compression may be used to compress other types 154 of headers, it cannot be used to compress additional IP headers as IP 155 headers may not be part of an extension header chain in compressed 156 headers [ROHC, section 5.8.]. 158 For the compression profiles defined in [RFC-3095], the consequence 159 is that at most two levels of IP headers can be compressed. In other 160 words, the presence of additional IP headers at best partially 161 disables header compression and compression will not go beyond the IR 162 state (as only IR and IR-DYNs can be used in such case). 164 For the compression of IP headers only, the additional IP headers 165 would however not have to cause header compression to be disabled 166 because there is no single packet type that ends the compressed 167 chain. The excess IP headers could simply be left uncompressed by 168 implicitly terminating the static and dynamic chains after at most 169 two levels of IP headers. 171 The IP-only profile defined in this document takes one step further 172 and supports compression of an arbitrary number of IP levels. This is 173 achieved by adding a dynamic chain to the general format of 174 compressed headers, to include the header part of each IP level in 175 excess of the first two. 177 As explained above, the static chain within IR packets can be of 178 arbitrary length, and the chain is terminated by the presence of a 179 non-IP header (not IPinIP nor IPv6). The dynamic chain is structured 180 analogously. 182 For compressed headers, the information related to the initial two IP 183 headers is carried as for the IP/UDP profile, and a chain of dynamic 184 header information is added to the end of the compressed header for 185 each and every additional IP header. This additional data structure 186 is thus exactly the same as the one used in IR and IR-DYN packets. 187 The length of the chain is inferred from the chain of static 188 parameters in the context. While a dynamic chain carries dynamically 189 changing parameters using an uncompressed representation, this 190 ensures that flows with arbitrary levels of IP headers will not 191 impair compression efficiency. 193 3.3. Constant IP-ID 195 Most IPv4 stacks assigns IP-ID according to the value of a counter 196 increasing by one for each outgoing packet. ROHC UDP compresses the 197 IP-ID field using offset IP-ID encoding based on the UDP SN [RFC- 198 3095]. For stacks generating IP-ID values using a pseudo-random 199 number generator, the field is not compressed and is sent as-is in 200 its entirety as additional octets after the compressed header. 202 Cases have also been found where an IPv4 stack uses a constant value 203 for the IP Identifier. When the IP-ID field is constant, it cannot be 204 compressed using offset IP-ID encoding and the field must be sent in 205 its entirety. This overhead can be avoided with the addition of a 206 flag within the dynamic part of the chain used to initialize the IPv4 207 header, as follow: 209 Dynamic part: 211 +---+---+---+---+---+---+---+---+ 212 | Type of Service | 213 +---+---+---+---+---+---+---+---+ 214 | Time to Live | 215 +---+---+---+---+---+---+---+---+ 216 / Identification / 2 octets 217 +---+---+---+---+---+---+---+---+ 218 | DF|RND|NBO|SID| 0 | 219 +---+---+---+---+---+---+---+---+ 220 / Generic extension header list / variable length 221 +---+---+---+---+---+---+---+---+ 223 SID: Static IP Identifier. 225 For IR and IR-DYN packets, the logic is the same as for ROHC UDP 226 with the addition that field(SID) must be kept in the context. 228 For compressed headers other than IR and IR-DYN: 230 If value(RND) = 0 and context(SID) = 0, hdr(IP-ID) is 231 compressed using Offset IP-ID encoding (see [RFC-3095 section 232 4.5.5]) using p = 0 and default-slope(IP-ID offset) = 0. 234 If value(RND) = 0 and context(SID) = 1, hdr(IP-ID) is constant 235 and compressed away; hdr(IP-ID) is the value of context(IP-ID). 237 If value(RND) = 1, IP-ID is the uncompressed hdr(IP-ID). IP-ID 238 is then passed as additional octets at the end of the 239 compressed header, after any extensions. 241 Note: Only IR and IR-DYN packets can update context(SID). 243 Note: All other fields are the same as for ROHC UDP [RFC-3095]. 245 3.4. Additional mode transition logic 247 The profiles defined in [ROHC] operate using different modes of 248 compression. A mode transition can be requested once a packet has 249 reached the decompressor by sending feedback indicating the desired 250 mode. As per the specifications found in [ROHC], the compressor is 251 compelled to honor such request. 253 The Mode parameter for the value mode = 0, for packet types UOR-2, IR 254 and IR-DYN, is redefined to allow the compressor to decline a mode 255 transition requested by the decompressor: 257 Mode: Compression mode. 0 = (C)ancel Mode Transition 259 Upon receiving the Mode parameter set to '0', the decompressor MUST 260 stay in its current mode of operation and SHOULD refrain from sending 261 further mode transition requests for a certain amount of time. 263 More specifically, with reference to the parameters C_TRANS, C_MODE, 264 D_TRANS and D_MODE defined in [ROHC, section 5.6.1.], the following 265 modifications apply when the compressor cancels a mode transition: 267 Parameters for the compressor side: 269 - C_MODE: 270 This value must not be changed when sending mode information 271 within packets when the mode parameter set to '0' (as a 272 response to a mode transition request from the decompressor). 274 - C_TRANS: 275 C_TRANS is (P)ending when receiving a mode transition request 276 from the decompressor. C_TRANS is set to (D)one when the 277 compressor receives an ACK for a UOR-2, IR-DYN, or IR packet 278 sent with the mode parameter set to the mode in use at the time 279 when the mode transition request was initiated. 281 Parameters for the decompressor side: 283 - D_MODE: 284 D_MODE MUST remain unchanged when receiving a UOR-2, an IR-DYN, 285 or an IR packet sent with the mode parameter set to '0'. 287 - D_TRANS: 288 D_TRANS is (P)ending when a UOR-2, IR-DYN, or IR packet sent 289 with the mode parameter set to '0' is received. It is set to 290 (D)one when a packet of type 1 or 0 corresponding to the 291 unchanged mode is received. 293 The resulting mode transition procedure is described below: 295 Compressor Decompressor 296 ---------------------------------------------- 297 C_MODE = X | | D_MODE = X 298 | Mode Request(Y) +-<-<-<-| D_TRANS = I 299 | +-<-<-<-<-<-<-<-+ | 300 C_TRANS = P |-<-<-<-+ | 301 C_MODE = X | | 302 |->->->-+ IR/IR-DYN/UOR-2(SN,C) | 303 | +->->->->->->->-+ | 304 |->-.. +->->->-| D_TRANS = P 305 |->-.. | D_MODE = X 306 | ACK(SN,X) +-<-<-<-| 307 | +-<-<-<-<-<-<-<-+ | 308 C_TRANS = D |-<-<-<-+ | 309 | | 310 |->->->-+ X-0, X-1* | 311 | +->->->->->->->-+ | 312 | +->->->-| D_TRANS = D 313 | | 315 where X: mode in use before the mode transition was initiated 316 Y: mode requested by the decompressor 317 C: (C)ancel mode transition 319 3.5. Initialization 321 The static context for ROHC IP compression can be initialized in 322 either of two ways: 324 1) By using an IR packet as in ROHC UDP, where the profile is 325 0x0004, and the static chain ends with the static part of an 326 IP header, where the Next Header/Protocol field has any value but 327 IPinIP (4) or IPv6 (41) [PROTOCOL]. At the compressor, SN is 328 initialized to a random value when the first IR packet is sent. 330 2) By reusing an existing context. This is done with an IR-DYN 331 packet, identifying profile 0x0004, where the dynamic chain 332 corresponds to the prefix of the existing static chain, ending 333 with an IP header where the Next Header/Protocol field has any 334 value but IPinIP (4) or IPv6 (41) [PROTOCOL]. At the compressor, 335 SN is initialized to a random value when the first IR-DYN packet 336 is sent. 338 For ROHC IP, the dynamic part of an IR or IR-DYN packet is similar to 339 the one for ROHC UDP, with a two-octet field containing the SN 340 present at the end of the dynamic chain in IR and IR-DYN packets. It 341 should be noted that the static and dynamic chains have an arbitrary 342 length, and the SN is added only once, at the end of the dynamic 343 chain in IR and IR-DYN packets. 345 3.6. Packet types 347 The only packet format that differs from ROHC UDP is the general 348 format for compressed packets, which has no UDP checksum in the end. 349 Instead, it ends with a list of dynamic header portions, one for each 350 IP header above the initial two (if any, as indicated by the presence 351 of corresponding header portions in the static chain). 353 The general format for a compressed header is thus as follows: 355 0 1 2 3 4 5 6 7 356 --- --- --- --- --- --- --- --- 357 : Add-CID octet : | 358 +---+---+---+---+---+---+---+---+ | 359 | first octet of base header | | 360 +---+---+---+---+---+---+---+---+ | 361 : : | 362 / 0, 1, or 2 octets of CID / | 363 : : | 364 +---+---+---+---+---+---+---+---+ | 365 / remainder of base header / | 366 +---+---+---+---+---+---+---+---+ | 367 : : | 368 / Extension / | 369 : : | 370 --- --- --- --- --- --- --- --- | 371 : : | 372 + IP-ID of outer IPv4 header + 373 : : (see section 5.7 of [RFC-3095]) 374 --- --- --- --- --- --- --- --- 375 / AH data for outer list / | 376 --- --- --- --- --- --- --- --- | 377 : : | 378 + GRE checksum + | 379 : : | 380 --- --- --- --- --- --- --- --- | 381 : : | 382 + IP-ID of inner IPv4 header + | 383 : : | 384 --- --- --- --- --- --- --- --- | 385 / AH data for inner list / | 386 --- --- --- --- --- --- --- --- | 387 : : | 388 + GRE checksum + | 389 : : | 390 --- --- --- --- --- --- --- --- 391 : List of : 392 / Dynamic chains / variable, given by static chain 393 : for additional IP headers : (includes no SN) 394 --- --- --- --- --- --- --- --- 396 Note that the list of dynamic chains for the additional IP headers in 397 compressed packets do not have a sequence number at the end of the 398 chain, as SN is present within compressed base headers. 400 4. Security Considerations 402 The security considerations of [RFC-3095] apply equally to this 403 document, without exceptions or additions. 405 5. IANA Considerations 407 ROHC profile identifier 0x0004 has been reserved by the IANA for the 408 profile defined in this document. 410 { NOTE TO IANA - TO BE REMOVED BEFORE PUBLICATION } 412 A ROHC profile identifier must be reserved by the IANA for the 413 profile defined in this document. Profile number 0x0004 has 414 previously been saved for this purpose, and should thus be used. 415 As for previous ROHC profiles, profile numbers 0xnn04 must also be 416 reserved for future variants of this profile. A suggested 417 registration in the "RObust Header Compression (ROHC) Profile 418 Identifiers" name space would then be: 420 OLD: 0xnn04 To be Assigned by IANA 422 NEW: 0x0004 ROHC IP [RFCXXXX (this)] 423 0xnn04 Reserved 425 { END OF NOTE } 427 6. Acknowledgements 429 The authors would like to thank Carsten Bormann and Fredrik Lindstr÷m 430 for valuable input and review. 432 7. References 434 [RFC-2119] Bradner, S., "Key words for use in RFCs to Indicate 435 Requirement Levels", RFC 2119, March 1997. 437 [RFC-3095] Bormann, C., Burmeister, C., Degermark, M., Fukushima, 438 H., Hannu, H., Jonsson, L-E., Hakenberg, R., Koren, T., 439 Le, K., Liu, Z., Martensson, A., Miyazaki, A., Svanbro, 440 K., Wiebke, T., Yoshimura, T. and H. Zheng, "Robust 441 Header Compression (ROHC)", RFC 3095, July 2001. 443 [RFC-791] Postel, J., "Internet Protocol", RFC 791, September 1981. 445 [RFC-2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 446 (IPv6) Specification", RFC 2460, December 1998. 448 [PROTOCOL] "Assigned Internet Protocol Numbers", IANA registry at: 449 http://www.iana.org/assignments/protocol-numbers 451 8. Authors' Addresses 453 Lars-Erik Jonsson 454 Ericsson AB 455 Box 920 456 SE-971 28 Lulea, Sweden 458 Phone: +46 920 20 21 07 459 Fax: +46 920 20 20 99 460 Email: lars-erik.jonsson@ericsson.com 462 Ghyslain Pelletier 463 Box 920 464 Ericsson AB 465 SE-971 28 Lulea, Sweden 467 Phone: +46 920 20 24 32 468 Fax: +46 920 20 20 99 469 Email: ghyslain.pelletier@epl.ericsson.se 471 Appendix A. Detailed procedures for canceling mode transitions 473 [Author's note: This appendix may be removed before publication] 475 The profiles defined in [ROHC] operate using different modes of 476 compression: Unidirectional (U-Mode), Bi-directional Optimistic (O- 477 Mode) and Bi-directional Reliable (R-Mode). Compression always starts 478 in the U-Mode, and mode transitions can only be initiated by the 479 decompressor [ROHC, section 5.6.]. A mode transition can be requested 480 once a packet has reached the decompressor by sending feedback 481 indicating the desired mode. 483 With reference to the parameters C_TRANS, C_MODE, D_TRANS and D_MODE 484 defined in [ROHC, section 5.6.1.], the following sub-sections 485 describe the resulting procedures when a compressor declines a mode 486 transition request from the decompressor as described in section 3.4. 488 A.1. Transition from Optimistic to Reliable mode 490 When the decompressor initiates a mode transition from Optimistic to 491 Reliable mode, the cancellation of the transition procedure is 492 described as follows: 494 Compressor Decompressor 495 ---------------------------------------------- 496 | | 497 | ACK(R)/NACK(R) +-<-<-<-| D_TRANS = I 498 | +-<-<-<-<-<-<-<-+ | 499 C_TRANS = P |-<-<-<-+ | 500 C_MODE = O | | 501 |->->->-+ IR/IR-DYN/UOR-2(SN,C) | 502 | +->->->->->->->-+ | 503 |->-.. +->->->-| D_TRANS = P 504 |->-.. | D_MODE = O 505 | ACK(SN,O) +-<-<-<-| 506 | +-<-<-<-<-<-<-<-+ | 507 C_TRANS = D |-<-<-<-+ | 508 | | 509 |->->->-+ UO-0, UO-1* | 510 | +->->->->->->->-+ | 511 | +->->->-| D_TRANS = D 513 The compressor must not send packet types 1 or 0 when C_TRANS is P, 514 i.e. not until it has received an ACK for a UOR-2, IR-DYN, or IR 515 packet sent with the mode transition parameter set to C. When the 516 decompressor receives a UOR-2, IR-DYN, or IR packet sent with the 517 mode transition parameter set to C, it must keep the value D_MODE to 518 O and it sets D_TRANS to P. When the decompressor receives packet 519 types 0 or 1, after having ACKed a UOR-2, IR-DYN, or IR packet, it 520 sets D_TRANS to D. 522 A.2. Transition from Unidirectional to Reliable mode 524 The cancellation of a transition from Unidirectional to Reliable mode 525 follows the same procedure as defined in section 4.2 above. 527 A.3. Transition from Reliable to Optimistic mode 529 When the decompressor initiates a mode transition from Reliable to 530 Optimistic mode, the cancellation of the transition procedure is 531 described as follows: 533 Compressor Decompressor 534 ---------------------------------------------- 535 | | 536 | ACK(O)/NACK(O) +-<-<-<-| D_TRANS = I 537 | +-<-<-<-<-<-<-<-+ | 538 C_TRANS = P |-<-<-<-+ | 539 C_MODE = R | | 540 |->->->-+ IR/IR-DYN/UOR-2(SN,C) | 541 | +->->->->->->->-+ | 542 |->-.. +->->->-| D_MODE = R 543 |->-.. | 544 | ACK(SN,R) +-<-<-<-| 545 | +-<-<-<-<-<-<-<-+ | 546 C_TRANS = D |-<-<-<-+ | 547 | | 548 |->->->-+ R-0, R-1* | 549 | +->->->->->->->-+ | 550 | +->->->-| D_TRANS = D 551 | | 553 The compressor must not send packet types 1 or 0 when C_TRANS is P, 554 i.e. not until it has received an ACK for a UOR-2, IR-DYN, or IR 555 packet sent with the mode transition parameter set to C. When the 556 decompressor receives a UOR-2, IR-DYN, or IR packet sent with the 557 mode transition parameter set to C, it must keep the value D_MODE to 558 R. When the decompressor receives packet types 0 or 1, after having 559 ACKed a UOR-2, IR-DYN, or IR packet, it sets D_TRANS to D. 561 A.4. Transition back to Unidirectional mode 563 When the decompressor initiates a mode transition from Reliable or 564 Optimistic mode back to Unidirectional mode, the cancellation of the 565 transition procedure is described as follows: 567 Compressor Decompressor 568 ---------------------------------------------- 569 | | 570 | ACK(U)/NACK(U) +-<-<-<-| D_TRANS = I 571 | +-<-<-<-<-<-<-<-+ | 572 C_TRANS = P |-<-<-<-+ | 573 C_MODE = O/R| | 574 |->->->-+ IR/IR-DYN/UOR-2(SN,C) | 575 | +->->->->->->->-+ | 576 |->-.. +->->->-| 577 |->-.. | 578 | ACK(SN,O/R) +-<-<-<-| 579 | +-<-<-<-<-<-<-<-+ | 580 C_TRANS = D |-<-<-<-+ | 581 | R-0, R-1* or | 582 |->->->-+ UO-0, UO-1* | 583 | +->->->->->->->-+ | 584 | +->->->-| D_TRANS = D 585 D_MODE = O/R 587 When the decompressor receives a UOR-2, IR-DYN, or IR packet sent 588 with the mode transition parameter set to C, it must keep the value 589 D_MODE to the bi-directional mode already in use (either O- or R- 590 mode). After ACKing the first UOR-2(C), IR-DYN(C), or IR(C), the 591 decompressor MUST continue to send feedback with the Mode parameter 592 set to the bi-directional mode in use (either O- or R-mode) until it 593 receives packet types 0 or 1. When the decompressor receives packet 594 types 0 or 1, after having ACKed a UOR-2, IR-DYN, or IR packet, it 595 sets D_TRANS to D. 597 Full Copyright Statement 599 Copyright (C) The Internet Society (2003). All Rights Reserved. 601 This document and translations of it may be copied and furnished to 602 others, and derivative works that comment on or otherwise explain it 603 or assist in its implementation may be prepared, copied, published 604 and distributed, in whole or in part, without restriction of any 605 kind, provided that the above copyright notice and this paragraph are 606 included on all such copies and derivative works. However, this 607 document itself may not be modified in any way, such as by removing 608 the copyright notice or references to the Internet Society or other 609 Internet organizations, except as needed for the purpose of 610 developing Internet standards in which case the procedures for 611 copyrights defined in the Internet Standards process must be 612 followed, or as required to translate it into languages other than 613 English. 615 The limited permissions granted above are perpetual and will not be 616 revoked by the Internet Society or its successors or assigns. 618 This document and the information contained herein is provided on an 619 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 620 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 621 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 622 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 623 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 625 This Internet-Draft expires December 27, 2003.