| < draft-ietf-rohc-ip-only-01.txt | draft-ietf-rohc-ip-only-02.txt > | |||
|---|---|---|---|---|
| Network Working Group L-E. Jonsson | Network Working Group Lars-Erik Jonsson, Ericsson | |||
| INTERNET-DRAFT Ericsson | INTERNET-DRAFT Ghyslain Pelletier, Ericsson | |||
| Expires: July 2003 January 23, 2003 | Expires: December 2003 | |||
| June 27, 2003 | ||||
| RObust Header Compression (ROHC): | RObust Header Compression (ROHC): | |||
| A Compression Profile for IP | A Compression Profile for IP | |||
| <draft-ietf-rohc-ip-only-01.txt> | <draft-ietf-rohc-ip-only-02.txt> | |||
| Status of this memo | Status of this memo | |||
| This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
| all provisions of Section 10 of RFC2026. | all provisions of Section 10 of RFC2026. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that other | Task Force (IETF), its areas, and its working groups. Note that other | |||
| groups may also distribute working documents as Internet-Drafts. | groups may also distribute working documents as Internet-Drafts. | |||
| skipping to change at page 2, line 10 ¶ | skipping to change at page 2, line 10 ¶ | |||
| in RFC 3095. This document defines a ROHC compression profile for IP, | in RFC 3095. This document defines a ROHC compression profile for IP, | |||
| similar to the IP/UDP profile defined by RFC 3095, but simplified to | similar to the IP/UDP profile defined by RFC 3095, but simplified to | |||
| exclude UDP, and enhanced to compress IP header chains of arbitrary | exclude UDP, and enhanced to compress IP header chains of arbitrary | |||
| length. | length. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction..................................................2 | 1. Introduction..................................................2 | |||
| 2. Terminology...................................................3 | 2. Terminology...................................................3 | |||
| 3. ROHC IP Compression (Profile 0x0004)..........................3 | 3. ROHC IP Compression (Profile 0x0004)..........................3 | |||
| 3.1. Static chain termination and multiple IP headers.......3 | 3.1. Static chain termination...............................3 | |||
| 3.2. Initialization.........................................4 | 3.2. Handling multiple levels of IP headers.................3 | |||
| 3.3. Packet types...........................................5 | 3.3. Constant IP-ID.........................................4 | |||
| 4. Security Considerations.......................................6 | 3.4. Additional mode transition logic.......................6 | |||
| 5. IANA Considerations...........................................6 | 3.5. Initialization.........................................7 | |||
| 6. Acknowledgements..............................................6 | 3.6. Packet types...........................................8 | |||
| 7. References....................................................6 | 4. Security Considerations.......................................9 | |||
| 8. Author's Address..............................................7 | 5. IANA Considerations...........................................9 | |||
| 6. Acknowledgements..............................................9 | ||||
| 7. References....................................................9 | ||||
| 8. Authors' Addresses...........................................10 | ||||
| Appendix A. Detailed procedures for canceling mode transitions..11 | ||||
| A.1. Transition from Optimistic to Reliable mode................11 | ||||
| A.2. Transition from Unidirectional to Reliable mode............12 | ||||
| A.3. Transition from Reliable to Optimistic mode................12 | ||||
| A.4. Transition back to Unidirectional mode.....................13 | ||||
| 1. Introduction | 1. Introduction | |||
| The original RObust Header Compression (ROHC) RFC [RFC-3095] defines | The original RObust Header Compression (ROHC) RFC [RFC-3095] defines | |||
| a framework for header compression, along with compression protocols | a framework for header compression, along with compression protocols | |||
| (profiles) for IP/UDP/RTP, IP/ESP, IP/UDP, and also a profile for | (profiles) for IP/UDP/RTP, IP/ESP, IP/UDP, and also a profile for | |||
| uncompressed packet streams. The profile for uncompressed data was | uncompressed packet streams. The profile for uncompressed data was | |||
| defined to provide means to encapsulate all traffic over a link | defined to provide means to encapsulate all traffic over a link | |||
| within ROHC packets. Through this profile, the lower layers do not | within ROHC packets. Through this profile, the lower layers do not | |||
| have to provide multiplexing for different packet types, but instead | have to provide multiplexing for different packet types, but instead | |||
| skipping to change at page 3, line 28 ¶ | skipping to change at page 3, line 30 ¶ | |||
| In general, there are no major difference between the ROHC UDP | In general, there are no major difference between the ROHC UDP | |||
| profile and the IP profile (ROHC IP) defined in this document, since | profile and the IP profile (ROHC IP) defined in this document, since | |||
| the removal of UDP has no impact on the compression mechanisms. As | the removal of UDP has no impact on the compression mechanisms. As | |||
| for ROHC UDP, the compressor generates a 16-bit sequence number which | for ROHC UDP, the compressor generates a 16-bit sequence number which | |||
| increases by one for each packet compressed in the packet stream, | increases by one for each packet compressed in the packet stream, | |||
| simply called SN below. The most important difference between this | simply called SN below. The most important difference between this | |||
| profile and ROHC UDP is about static chain termination and handling | profile and ROHC UDP is about static chain termination and handling | |||
| of multiple IP headers. Unless stated explicitly below, mechanisms | of multiple IP headers. Unless stated explicitly below, mechanisms | |||
| and formats are as for ROHC UDP. | and formats are as for ROHC UDP. | |||
| 3.1. Static chain termination and multiple IP headers | 3.1. Static chain termination | |||
| The most important difference for IP-only compression, compared to | One difference for IP-only compression, compared to IP/UDP | |||
| IP/UDP compression, is about how to terminate compression, i.e. how | compression, is related to the termination of the static chain in IR | |||
| to end the static chain in IR headers. For the UDP profile, the chain | headers. For the UDP profile, the chain always ends with a UDP header | |||
| always ends with a UDP header part, which per definition terminates | part, which per definition provides the boundaries for the chain. The | |||
| compression, and the UDP header is also the last header in the | UDP header is also the last header in the uncompressed packet (except | |||
| uncompressed packet (except for potential application header). For | for potential application header). For the IP-only profile, there is | |||
| the case of IP-only compression, there is no single last header that | no single last header that per profile definition terminates the | |||
| per profile definition terminates the chain. Instead, the static | chain. Instead, the static chain is terminated if the "Next Header / | |||
| chain is terminated if the "Next Header / Protocol" field of a static | Protocol" field of a static IP header part indicates anything but IP | |||
| IP header part indicates anything but IP (IPinIP or IPv6). | (IPinIP or IPv6). | |||
| Another difference with IP-only compression is related to the | 3.2. Handling multiple levels of IP headers | |||
| potential compression of multiple IP headers. ROHC UDP can compress | ||||
| at most two IP headers, but additional IP headers would completely | ||||
| disable the use of header compression, since the compressed chain | ||||
| must end with the UDP header part. However, as there is no single | ||||
| packet type that ends the compressed chain with the IP profile, | ||||
| additional IP headers would not have to cause header compression to | ||||
| be disabled. By implicitly terminating the chain after at most 2 IP | ||||
| headers, additional IP headers could just be left uncompressed. | ||||
| The IP profile defined in this document goes one step further, and | The ROHC IR and IR-DYN packets defined in [RFC-3095] are used to | |||
| supports compression of an arbitrary number of IP headers. The static | communicate static and/or dynamic parts of a context. For each of the | |||
| chain can obviously be of an arbitrary length, and is simply | compression profiles defined in [RFC-3095], there is a single last | |||
| terminated through the presence of a non-IP header (not IPinIP nor | header in the header chain that clearly marks the termination of the | |||
| IPv6). The dynamic chain is structured analogously. In compressed | static chain. The length of the dynamic chain is then inferred from | |||
| packet headers, header information related to the initial two IP | the static chain in the IR header itself, or from the static chain in | |||
| headers are carried as in the IP/UDP profile, while a dynamic header | the context for the IR-DYN header. The length of both static and | |||
| chain is added at the end of the compressed header for each and every | dynamic chains may thus be of arbitrary length and may, in theory, | |||
| additional IP header. The data structure used for these header | initialize a context with an arbitrary number of IP levels. | |||
| portions in compressed headers is thus exactly the same as the one | ||||
| used in IR and IR-DYN packets. | ||||
| The following sections describe how the IP profile differs from the | However, the general compressed header formats defined in [RFC-3095, | |||
| IP/UDP profile, providing the details of the general principles | section 5.7.] specifies that a most two levels of IP headers (the | |||
| described in the previous paragraph. | 'Inner' and the 'Outer' level of IP headers) may be included in a | |||
| compressed header. Specifically, the format defined for Extension 3 | ||||
| [RFC-3095, section 5.7.5.] can only carry the 'Outer' IP header. In | ||||
| addition, while list compression may be used to compress other types | ||||
| of headers, it cannot be used to compress additional IP headers as IP | ||||
| headers may not be part of an extension header chain in compressed | ||||
| headers [ROHC, section 5.8.]. | ||||
| 3.2. Initialization | For the compression profiles defined in [RFC-3095], the consequence | |||
| is that at most two levels of IP headers can be compressed. In other | ||||
| words, the presence of additional IP headers at best partially | ||||
| disables header compression and compression will not go beyond the IR | ||||
| state (as only IR and IR-DYNs can be used in such case). | ||||
| For the compression of IP headers only, the additional IP headers | ||||
| would however not have to cause header compression to be disabled | ||||
| because there is no single packet type that ends the compressed | ||||
| chain. The excess IP headers could simply be left uncompressed by | ||||
| implicitly terminating the static and dynamic chains after at most | ||||
| two levels of IP headers. | ||||
| The IP-only profile defined in this document takes one step further | ||||
| and supports compression of an arbitrary number of IP levels. This is | ||||
| achieved by adding a dynamic chain to the general format of | ||||
| compressed headers, to include the header part of each IP level in | ||||
| excess of the first two. | ||||
| As explained above, the static chain within IR packets can be of | ||||
| arbitrary length, and the chain is terminated by the presence of a | ||||
| non-IP header (not IPinIP nor IPv6). The dynamic chain is structured | ||||
| analogously. | ||||
| For compressed headers, the information related to the initial two IP | ||||
| headers is carried as for the IP/UDP profile, and a chain of dynamic | ||||
| header information is added to the end of the compressed header for | ||||
| each and every additional IP header. This additional data structure | ||||
| is thus exactly the same as the one used in IR and IR-DYN packets. | ||||
| The length of the chain is inferred from the chain of static | ||||
| parameters in the context. While a dynamic chain carries dynamically | ||||
| changing parameters using an uncompressed representation, this | ||||
| ensures that flows with arbitrary levels of IP headers will not | ||||
| impair compression efficiency. | ||||
| 3.3. Constant IP-ID | ||||
| Most IPv4 stacks assigns IP-ID according to the value of a counter | ||||
| increasing by one for each outgoing packet. ROHC UDP compresses the | ||||
| IP-ID field using offset IP-ID encoding based on the UDP SN [RFC- | ||||
| 3095]. For stacks generating IP-ID values using a pseudo-random | ||||
| number generator, the field is not compressed and is sent as-is in | ||||
| its entirety as additional octets after the compressed header. | ||||
| Cases have also been found where an IPv4 stack uses a constant value | ||||
| for the IP Identifier. When the IP-ID field is constant, it cannot be | ||||
| compressed using offset IP-ID encoding and the field must be sent in | ||||
| its entirety. This overhead can be avoided with the addition of a | ||||
| flag within the dynamic part of the chain used to initialize the IPv4 | ||||
| header, as follow: | ||||
| Dynamic part: | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| | Type of Service | | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| | Time to Live | | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| / Identification / 2 octets | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| | DF|RND|NBO|SID| 0 | | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| / Generic extension header list / variable length | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| SID: Static IP Identifier. | ||||
| For IR and IR-DYN packets, the logic is the same as for ROHC UDP | ||||
| with the addition that field(SID) must be kept in the context. | ||||
| For compressed headers other than IR and IR-DYN: | ||||
| If value(RND) = 0 and context(SID) = 0, hdr(IP-ID) is | ||||
| compressed using Offset IP-ID encoding (see [RFC-3095 section | ||||
| 4.5.5]) using p = 0 and default-slope(IP-ID offset) = 0. | ||||
| If value(RND) = 0 and context(SID) = 1, hdr(IP-ID) is constant | ||||
| and compressed away; hdr(IP-ID) is the value of context(IP-ID). | ||||
| If value(RND) = 1, IP-ID is the uncompressed hdr(IP-ID). IP-ID | ||||
| is then passed as additional octets at the end of the | ||||
| compressed header, after any extensions. | ||||
| Note: Only IR and IR-DYN packets can update context(SID). | ||||
| Note: All other fields are the same as for ROHC UDP [RFC-3095]. | ||||
| 3.4. Additional mode transition logic | ||||
| The profiles defined in [ROHC] operate using different modes of | ||||
| compression. A mode transition can be requested once a packet has | ||||
| reached the decompressor by sending feedback indicating the desired | ||||
| mode. As per the specifications found in [ROHC], the compressor is | ||||
| compelled to honor such request. | ||||
| The Mode parameter for the value mode = 0, for packet types UOR-2, IR | ||||
| and IR-DYN, is redefined to allow the compressor to decline a mode | ||||
| transition requested by the decompressor: | ||||
| Mode: Compression mode. 0 = (C)ancel Mode Transition | ||||
| Upon receiving the Mode parameter set to '0', the decompressor MUST | ||||
| stay in its current mode of operation and SHOULD refrain from sending | ||||
| further mode transition requests for a certain amount of time. | ||||
| More specifically, with reference to the parameters C_TRANS, C_MODE, | ||||
| D_TRANS and D_MODE defined in [ROHC, section 5.6.1.], the following | ||||
| modifications apply when the compressor cancels a mode transition: | ||||
| Parameters for the compressor side: | ||||
| - C_MODE: | ||||
| This value must not be changed when sending mode information | ||||
| within packets when the mode parameter set to '0' (as a | ||||
| response to a mode transition request from the decompressor). | ||||
| - C_TRANS: | ||||
| C_TRANS is (P)ending when receiving a mode transition request | ||||
| from the decompressor. C_TRANS is set to (D)one when the | ||||
| compressor receives an ACK for a UOR-2, IR-DYN, or IR packet | ||||
| sent with the mode parameter set to the mode in use at the time | ||||
| when the mode transition request was initiated. | ||||
| Parameters for the decompressor side: | ||||
| - D_MODE: | ||||
| D_MODE MUST remain unchanged when receiving a UOR-2, an IR-DYN, | ||||
| or an IR packet sent with the mode parameter set to '0'. | ||||
| - D_TRANS: | ||||
| D_TRANS is (P)ending when a UOR-2, IR-DYN, or IR packet sent | ||||
| with the mode parameter set to '0' is received. It is set to | ||||
| (D)one when a packet of type 1 or 0 corresponding to the | ||||
| unchanged mode is received. | ||||
| The resulting mode transition procedure is described below: | ||||
| Compressor Decompressor | ||||
| ---------------------------------------------- | ||||
| C_MODE = X | | D_MODE = X | ||||
| | Mode Request(Y) +-<-<-<-| D_TRANS = I | ||||
| | +-<-<-<-<-<-<-<-+ | | ||||
| C_TRANS = P |-<-<-<-+ | | ||||
| C_MODE = X | | | ||||
| |->->->-+ IR/IR-DYN/UOR-2(SN,C) | | ||||
| | +->->->->->->->-+ | | ||||
| |->-.. +->->->-| D_TRANS = P | ||||
| |->-.. | D_MODE = X | ||||
| | ACK(SN,X) +-<-<-<-| | ||||
| | +-<-<-<-<-<-<-<-+ | | ||||
| C_TRANS = D |-<-<-<-+ | | ||||
| | | | ||||
| |->->->-+ X-0, X-1* | | ||||
| | +->->->->->->->-+ | | ||||
| | +->->->-| D_TRANS = D | ||||
| | | | ||||
| where X: mode in use before the mode transition was initiated | ||||
| Y: mode requested by the decompressor | ||||
| C: (C)ancel mode transition | ||||
| 3.5. Initialization | ||||
| The static context for ROHC IP compression can be initialized in | The static context for ROHC IP compression can be initialized in | |||
| either of two ways: | either of two ways: | |||
| 1) By using an IR packet as in ROHC UDP, where the profile is | 1) By using an IR packet as in ROHC UDP, where the profile is | |||
| 0x0004, and the static chain ends with the static part of an | 0x0004, and the static chain ends with the static part of an | |||
| IP header, where the Next Header/Protocol field has any value but | IP header, where the Next Header/Protocol field has any value but | |||
| IPinIP (4) or IPv6 (41) [PROTOCOL]. At the compressor, SN is | IPinIP (4) or IPv6 (41) [PROTOCOL]. At the compressor, SN is | |||
| initialized to a random value when the first IR packet is sent. | initialized to a random value when the first IR packet is sent. | |||
| skipping to change at page 4, line 39 ¶ | skipping to change at page 7, line 55 ¶ | |||
| with an IP header where the Next Header/Protocol field has any | with an IP header where the Next Header/Protocol field has any | |||
| value but IPinIP (4) or IPv6 (41) [PROTOCOL]. At the compressor, | value but IPinIP (4) or IPv6 (41) [PROTOCOL]. At the compressor, | |||
| SN is initialized to a random value when the first IR-DYN packet | SN is initialized to a random value when the first IR-DYN packet | |||
| is sent. | is sent. | |||
| For ROHC IP, the dynamic part of an IR or IR-DYN packet is similar to | For ROHC IP, the dynamic part of an IR or IR-DYN packet is similar to | |||
| the one for ROHC UDP, with a two-octet field containing the SN | the one for ROHC UDP, with a two-octet field containing the SN | |||
| present at the end of the dynamic chain in IR and IR-DYN packets. It | present at the end of the dynamic chain in IR and IR-DYN packets. It | |||
| should be noted that the static and dynamic chains have an arbitrary | should be noted that the static and dynamic chains have an arbitrary | |||
| length, and the SN is added only once, at the end of the dynamic | length, and the SN is added only once, at the end of the dynamic | |||
| chain in IR and IR-DYN packets. Note further that additional dynamic | chain in IR and IR-DYN packets. | |||
| chains in compressed packets do not have this sequence number at the | ||||
| end of the chain, as SN is present within compressed base headers. | ||||
| 3.3. Packet types | 3.6. Packet types | |||
| The only packet format that differs from ROHC UDP is the general | The only packet format that differs from ROHC UDP is the general | |||
| format for compressed packets, which has no UDP checksum in the end. | format for compressed packets, which has no UDP checksum in the end. | |||
| Instead, it ends with a list of dynamic header portions, one for each | Instead, it ends with a list of dynamic header portions, one for each | |||
| IP header above the initial two (if any, as indicated by the presence | IP header above the initial two (if any, as indicated by the presence | |||
| of corresponding header portions in the static chain). | of corresponding header portions in the static chain). | |||
| The general format for a compressed header is thus as follows: | The general format for a compressed header is thus as follows: | |||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| skipping to change at page 5, line 33 ¶ | skipping to change at page 8, line 33 ¶ | |||
| : : | | : : | | |||
| +---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+ | | |||
| / remainder of base header / | | / remainder of base header / | | |||
| +---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+ | | |||
| : : | | : : | | |||
| / Extension / | | / Extension / | | |||
| : : | | : : | | |||
| --- --- --- --- --- --- --- --- | | --- --- --- --- --- --- --- --- | | |||
| : : | | : : | | |||
| + IP-ID of outer IPv4 header + | + IP-ID of outer IPv4 header + | |||
| : : (see section 5.7 or [RFC-3095]) | : : (see section 5.7 of [RFC-3095]) | |||
| --- --- --- --- --- --- --- --- | --- --- --- --- --- --- --- --- | |||
| / AH data for outer list / | | / AH data for outer list / | | |||
| --- --- --- --- --- --- --- --- | | --- --- --- --- --- --- --- --- | | |||
| : : | | : : | | |||
| + GRE checksum + | | + GRE checksum + | | |||
| : : | | : : | | |||
| --- --- --- --- --- --- --- --- | | --- --- --- --- --- --- --- --- | | |||
| : : | | : : | | |||
| + IP-ID of inner IPv4 header + | | + IP-ID of inner IPv4 header + | | |||
| : : | | : : | | |||
| skipping to change at page 6, line 5 ¶ | skipping to change at page 9, line 5 ¶ | |||
| --- --- --- --- --- --- --- --- | | --- --- --- --- --- --- --- --- | | |||
| : : | | : : | | |||
| + GRE checksum + | | + GRE checksum + | | |||
| : : | | : : | | |||
| --- --- --- --- --- --- --- --- | --- --- --- --- --- --- --- --- | |||
| : List of : | : List of : | |||
| / Dynamic chains / variable, given by static chain | / Dynamic chains / variable, given by static chain | |||
| : for additional IP headers : (includes no SN) | : for additional IP headers : (includes no SN) | |||
| --- --- --- --- --- --- --- --- | --- --- --- --- --- --- --- --- | |||
| Note that the list of dynamic chains for the additional IP headers in | ||||
| compressed packets do not have a sequence number at the end of the | ||||
| chain, as SN is present within compressed base headers. | ||||
| 4. Security Considerations | 4. Security Considerations | |||
| The security considerations of [RFC-3095] apply equally to this | The security considerations of [RFC-3095] apply equally to this | |||
| document, without exceptions or additions. | document, without exceptions or additions. | |||
| 5. IANA Considerations | 5. IANA Considerations | |||
| ROHC profile identifier 0x0004 has been reserved by the IANA for the | ROHC profile identifier 0x0004 has been reserved by the IANA for the | |||
| profile defined in this document. | profile defined in this document. | |||
| skipping to change at page 6, line 34 ¶ | skipping to change at page 9, line 38 ¶ | |||
| OLD: 0xnn04 To be Assigned by IANA | OLD: 0xnn04 To be Assigned by IANA | |||
| NEW: 0x0004 ROHC IP [RFCXXXX (this)] | NEW: 0x0004 ROHC IP [RFCXXXX (this)] | |||
| 0xnn04 Reserved | 0xnn04 Reserved | |||
| { END OF NOTE } | { END OF NOTE } | |||
| 6. Acknowledgements | 6. Acknowledgements | |||
| The author would like to thank Carsten Bormann and Ghyslain Pelletier | The authors would like to thank Carsten Bormann and Fredrik Lindstr÷m | |||
| for valuable input and review. | for valuable input and review. | |||
| 7. References | 7. References | |||
| [RFC-2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC-2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", RFC 2119, March 1997. | Requirement Levels", RFC 2119, March 1997. | |||
| [RFC-3095] Bormann, C., Burmeister, C., Degermark, M., Fukushima, | [RFC-3095] Bormann, C., Burmeister, C., Degermark, M., Fukushima, | |||
| H., Hannu, H., Jonsson, L-E., Hakenberg, R., Koren, T., | H., Hannu, H., Jonsson, L-E., Hakenberg, R., Koren, T., | |||
| Le, K., Liu, Z., Martensson, A., Miyazaki, A., Svanbro, | Le, K., Liu, Z., Martensson, A., Miyazaki, A., Svanbro, | |||
| skipping to change at page 7, line 5 ¶ | skipping to change at page 10, line 8 ¶ | |||
| Header Compression (ROHC)", RFC 3095, July 2001. | Header Compression (ROHC)", RFC 3095, July 2001. | |||
| [RFC-791] Postel, J., "Internet Protocol", RFC 791, September 1981. | [RFC-791] Postel, J., "Internet Protocol", RFC 791, September 1981. | |||
| [RFC-2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC-2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
| (IPv6) Specification", RFC 2460, December 1998. | (IPv6) Specification", RFC 2460, December 1998. | |||
| [PROTOCOL] "Assigned Internet Protocol Numbers", IANA registry at: | [PROTOCOL] "Assigned Internet Protocol Numbers", IANA registry at: | |||
| http://www.iana.org/assignments/protocol-numbers | http://www.iana.org/assignments/protocol-numbers | |||
| 8. Author's Address | 8. Authors' Addresses | |||
| Lars-Erik Jonsson Tel: +46 920 20 21 07 | Lars-Erik Jonsson | |||
| Ericsson AB Fax: +46 920 20 20 99 | Ericsson AB | |||
| Box 920 | Box 920 | |||
| SE-971 28 Lulea | SE-971 28 Lulea, Sweden | |||
| Sweden EMail: lars-erik.jonsson@ericsson.com | ||||
| Phone: +46 920 20 21 07 | ||||
| Fax: +46 920 20 20 99 | ||||
| Email: lars-erik.jonsson@ericsson.com | ||||
| Ghyslain Pelletier | ||||
| Box 920 | ||||
| Ericsson AB | ||||
| SE-971 28 Lulea, Sweden | ||||
| Phone: +46 920 20 24 32 | ||||
| Fax: +46 920 20 20 99 | ||||
| Email: ghyslain.pelletier@epl.ericsson.se | ||||
| Appendix A. Detailed procedures for canceling mode transitions | ||||
| [Author's note: This appendix may be removed before publication] | ||||
| The profiles defined in [ROHC] operate using different modes of | ||||
| compression: Unidirectional (U-Mode), Bi-directional Optimistic (O- | ||||
| Mode) and Bi-directional Reliable (R-Mode). Compression always starts | ||||
| in the U-Mode, and mode transitions can only be initiated by the | ||||
| decompressor [ROHC, section 5.6.]. A mode transition can be requested | ||||
| once a packet has reached the decompressor by sending feedback | ||||
| indicating the desired mode. | ||||
| With reference to the parameters C_TRANS, C_MODE, D_TRANS and D_MODE | ||||
| defined in [ROHC, section 5.6.1.], the following sub-sections | ||||
| describe the resulting procedures when a compressor declines a mode | ||||
| transition request from the decompressor as described in section 3.4. | ||||
| A.1. Transition from Optimistic to Reliable mode | ||||
| When the decompressor initiates a mode transition from Optimistic to | ||||
| Reliable mode, the cancellation of the transition procedure is | ||||
| described as follows: | ||||
| Compressor Decompressor | ||||
| ---------------------------------------------- | ||||
| | | | ||||
| | ACK(R)/NACK(R) +-<-<-<-| D_TRANS = I | ||||
| | +-<-<-<-<-<-<-<-+ | | ||||
| C_TRANS = P |-<-<-<-+ | | ||||
| C_MODE = O | | | ||||
| |->->->-+ IR/IR-DYN/UOR-2(SN,C) | | ||||
| | +->->->->->->->-+ | | ||||
| |->-.. +->->->-| D_TRANS = P | ||||
| |->-.. | D_MODE = O | ||||
| | ACK(SN,O) +-<-<-<-| | ||||
| | +-<-<-<-<-<-<-<-+ | | ||||
| C_TRANS = D |-<-<-<-+ | | ||||
| | | | ||||
| |->->->-+ UO-0, UO-1* | | ||||
| | +->->->->->->->-+ | | ||||
| | +->->->-| D_TRANS = D | ||||
| The compressor must not send packet types 1 or 0 when C_TRANS is P, | ||||
| i.e. not until it has received an ACK for a UOR-2, IR-DYN, or IR | ||||
| packet sent with the mode transition parameter set to C. When the | ||||
| decompressor receives a UOR-2, IR-DYN, or IR packet sent with the | ||||
| mode transition parameter set to C, it must keep the value D_MODE to | ||||
| O and it sets D_TRANS to P. When the decompressor receives packet | ||||
| types 0 or 1, after having ACKed a UOR-2, IR-DYN, or IR packet, it | ||||
| sets D_TRANS to D. | ||||
| A.2. Transition from Unidirectional to Reliable mode | ||||
| The cancellation of a transition from Unidirectional to Reliable mode | ||||
| follows the same procedure as defined in section 4.2 above. | ||||
| A.3. Transition from Reliable to Optimistic mode | ||||
| When the decompressor initiates a mode transition from Reliable to | ||||
| Optimistic mode, the cancellation of the transition procedure is | ||||
| described as follows: | ||||
| Compressor Decompressor | ||||
| ---------------------------------------------- | ||||
| | | | ||||
| | ACK(O)/NACK(O) +-<-<-<-| D_TRANS = I | ||||
| | +-<-<-<-<-<-<-<-+ | | ||||
| C_TRANS = P |-<-<-<-+ | | ||||
| C_MODE = R | | | ||||
| |->->->-+ IR/IR-DYN/UOR-2(SN,C) | | ||||
| | +->->->->->->->-+ | | ||||
| |->-.. +->->->-| D_MODE = R | ||||
| |->-.. | | ||||
| | ACK(SN,R) +-<-<-<-| | ||||
| | +-<-<-<-<-<-<-<-+ | | ||||
| C_TRANS = D |-<-<-<-+ | | ||||
| | | | ||||
| |->->->-+ R-0, R-1* | | ||||
| | +->->->->->->->-+ | | ||||
| | +->->->-| D_TRANS = D | ||||
| | | | ||||
| The compressor must not send packet types 1 or 0 when C_TRANS is P, | ||||
| i.e. not until it has received an ACK for a UOR-2, IR-DYN, or IR | ||||
| packet sent with the mode transition parameter set to C. When the | ||||
| decompressor receives a UOR-2, IR-DYN, or IR packet sent with the | ||||
| mode transition parameter set to C, it must keep the value D_MODE to | ||||
| R. When the decompressor receives packet types 0 or 1, after having | ||||
| ACKed a UOR-2, IR-DYN, or IR packet, it sets D_TRANS to D. | ||||
| A.4. Transition back to Unidirectional mode | ||||
| When the decompressor initiates a mode transition from Reliable or | ||||
| Optimistic mode back to Unidirectional mode, the cancellation of the | ||||
| transition procedure is described as follows: | ||||
| Compressor Decompressor | ||||
| ---------------------------------------------- | ||||
| | | | ||||
| | ACK(U)/NACK(U) +-<-<-<-| D_TRANS = I | ||||
| | +-<-<-<-<-<-<-<-+ | | ||||
| C_TRANS = P |-<-<-<-+ | | ||||
| C_MODE = O/R| | | ||||
| |->->->-+ IR/IR-DYN/UOR-2(SN,C) | | ||||
| | +->->->->->->->-+ | | ||||
| |->-.. +->->->-| | ||||
| |->-.. | | ||||
| | ACK(SN,O/R) +-<-<-<-| | ||||
| | +-<-<-<-<-<-<-<-+ | | ||||
| C_TRANS = D |-<-<-<-+ | | ||||
| | R-0, R-1* or | | ||||
| |->->->-+ UO-0, UO-1* | | ||||
| | +->->->->->->->-+ | | ||||
| | +->->->-| D_TRANS = D | ||||
| D_MODE = O/R | ||||
| When the decompressor receives a UOR-2, IR-DYN, or IR packet sent | ||||
| with the mode transition parameter set to C, it must keep the value | ||||
| D_MODE to the bi-directional mode already in use (either O- or R- | ||||
| mode). After ACKing the first UOR-2(C), IR-DYN(C), or IR(C), the | ||||
| decompressor MUST continue to send feedback with the Mode parameter | ||||
| set to the bi-directional mode in use (either O- or R-mode) until it | ||||
| receives packet types 0 or 1. When the decompressor receives packet | ||||
| types 0 or 1, after having ACKed a UOR-2, IR-DYN, or IR packet, it | ||||
| sets D_TRANS to D. | ||||
| Full Copyright Statement | Full Copyright Statement | |||
| Copyright (C) The Internet Society (2003). All Rights Reserved. | Copyright (C) The Internet Society (2003). All Rights Reserved. | |||
| This document and translations of it may be copied and furnished to | This document and translations of it may be copied and furnished to | |||
| others, and derivative works that comment on or otherwise explain it | others, and derivative works that comment on or otherwise explain it | |||
| or assist in its implementation may be prepared, copied, published | or assist in its implementation may be prepared, copied, published | |||
| and distributed, in whole or in part, without restriction of any | and distributed, in whole or in part, without restriction of any | |||
| kind, provided that the above copyright notice and this paragraph are | kind, provided that the above copyright notice and this paragraph are | |||
| skipping to change at page 8, line 33 ¶ | skipping to change at page 14, line 33 ¶ | |||
| The limited permissions granted above are perpetual and will not be | The limited permissions granted above are perpetual and will not be | |||
| revoked by the Internet Society or its successors or assigns. | revoked by the Internet Society or its successors or assigns. | |||
| This document and the information contained herein is provided on an | This document and the information contained herein is provided on an | |||
| "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | |||
| TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | |||
| BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | |||
| HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | |||
| MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
| This Internet-Draft expires July 23, 2003. | This Internet-Draft expires December 27, 2003. | |||
| End of changes. 18 change blocks. | ||||
| 58 lines changed or deleted | 364 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||