| < draft-ietf-rohc-ip-only-00.txt | draft-ietf-rohc-ip-only-01.txt > | |||
|---|---|---|---|---|
| Network Working Group L-E. Jonsson | Network Working Group L-E. Jonsson | |||
| INTERNET-DRAFT Ericsson | INTERNET-DRAFT Ericsson | |||
| Expires: April 2003 October 28, 2002 | Expires: July 2003 January 23, 2003 | |||
| RObust Header Compression (ROHC): | RObust Header Compression (ROHC): | |||
| A Compression Profile for IP | A Compression Profile for IP | |||
| <draft-ietf-rohc-ip-only-00.txt> | <draft-ietf-rohc-ip-only-01.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 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html | http://www.ietf.org/shadow.html | |||
| This document is a submission of the IETF ROHC WG. Comments should be | This document is a submission of the IETF ROHC WG. Comments should be | |||
| directed to the ROHC WG mailing list, rohc@ietf.org. | directed to the ROHC WG mailing list, rohc@ietf.org. | |||
| Abstract | Abstract | |||
| 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 for uncompressed | (profiles) for IP/UDP/RTP, IP/ESP, IP/UDP, and also a profile for | |||
| packet streams. However, no profile was defined for compression of IP | uncompressed packet streams. However, no profile was defined for | |||
| only, which has been identified as a flaw in RFC 3095. This document | compression of IP only, which has been identified as a missing piece | |||
| addresses that problem and 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. | exclude UDP, and enhanced to compress IP header chains of arbitrary | |||
| length. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction..................................................2 | 1. Introduction..................................................2 | |||
| 2. Terminology...................................................2 | 2. Terminology...................................................3 | |||
| 3. ROHC IP Compression (Profile 0x0004)..........................3 | 3. ROHC IP Compression (Profile 0x0004)..........................3 | |||
| 4. Security Considerations.......................................4 | 3.1. Static chain termination and multiple IP headers.......3 | |||
| 5. IANA Considerations...........................................4 | 3.2. Initialization.........................................4 | |||
| 6. References....................................................4 | 3.3. Packet types...........................................5 | |||
| 7. Author's Address..............................................4 | 4. Security Considerations.......................................6 | |||
| 5. IANA Considerations...........................................6 | ||||
| 6. Acknowledgements..............................................6 | ||||
| 7. References....................................................6 | ||||
| 8. Author's Address..............................................7 | ||||
| 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 for uncompressed | (profiles) for IP/UDP/RTP, IP/ESP, IP/UDP, and also a profile for | |||
| packet streams. The profile for uncompressed data was defined to | uncompressed packet streams. The profile for uncompressed data was | |||
| provide means to encapsulate all traffic over a link within ROHC | defined to provide means to encapsulate all traffic over a link | |||
| packets. Through this profile, the lower layers do not have to | within ROHC packets. Through this profile, the lower layers do not | |||
| provide multiplexing for different packet types, but instead ROHC can | have to provide multiplexing for different packet types, but instead | |||
| handle any packet stream, even if compression profiles for all kinds | ROHC can handle any packet stream, even if compression profiles for | |||
| of packet streams have yet not been defined or implemented over the | all kinds of packet streams have yet not been defined or implemented | |||
| link. | over the link. | |||
| Although the profile without compression is simple and can tunnel | Although the profile without compression is simple and can tunnel | |||
| arbitrary packets, it has of course a major weakness in that it does | arbitrary packets, it has of course a major weakness in that it does | |||
| not compress the headers at all. When considering that normally all | not compress the headers at all. When considering that normally all | |||
| packets are expected to be IP [RFC-791, RFC-1883] packets, and that | packets are expected to be IP [RFC-791, RFC-2460] packets, and that | |||
| the IP header often represent a major part of the total header, a | the IP header often represent a major part of the total header, a | |||
| useful alternative to no compression would for most packets be | useful alternative to no compression would for most packets be | |||
| compression of the IP header only. Unfortunately, such a profile was | compression of the IP header only. Unfortunately, such a profile was | |||
| not defined in [RFC-3095], and this has thus been identified as an | not defined in [RFC-3095], and this has thus been identified as an | |||
| important missing piece in the ROHC toolbox. | important missing piece in the ROHC toolbox. | |||
| This document addresses this missing compression support and defines | This document addresses this missing compression support and defines | |||
| a ROHC compression profile for IP [RFC-791, RFC-1883] only, similar | a ROHC compression profile for IP [RFC-791, RFC-2460] only, similar | |||
| to the IP/UDP profile defined by [RFC-3095], but simplified to | to the IP/UDP profile defined by [RFC-3095], but simplified to | |||
| exclude UDP. Due to the similarities with the IP/UDP profile, the IP | exclude UDP. Due to the similarities with the IP/UDP profile, the IP | |||
| compression profile is described based on the IP/UDP profile, mainly | compression profile is described based on the IP/UDP profile, mainly | |||
| covering differences. | covering differences. The most important differences are a different | |||
| way of terminating the static header chain, and the capability to | ||||
| compress IP header chains of arbitrary length. | ||||
| 2. Terminology | 2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [RFC-2119]. | document are to be interpreted as described in RFC 2119 [RFC-2119]. | |||
| ROHC UDP | ROHC UDP | |||
| "ROHC UDP" in this document refers to the IP/UDP profile | "ROHC UDP" in this document refers to the IP/UDP profile | |||
| (Profile 0x0002) as defined in [RFC-3095]. | (Profile 0x0002) as defined in [RFC-3095]. | |||
| 3. ROHC IP Compression (Profile 0x0004) | 3. ROHC IP Compression (Profile 0x0004) | |||
| In principle, there is no real difference between the ROHC UDP | In general, there are no major difference between the ROHC UDP | |||
| profile and the IP profile defined in this document, since the | profile and the IP profile (ROHC IP) defined in this document, since | |||
| removal of UDP does not at all effect 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, | |||
| called SN or IP SN below. Unless stated explicitly below, mechanisms | simply called SN below. The most important difference between this | |||
| profile and ROHC UDP is about static chain termination and handling | ||||
| 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. Initialization | 3.1. Static chain termination and multiple IP headers | |||
| The most important difference for IP-only compression, compared to | ||||
| IP/UDP compression, is about how to terminate compression, i.e. how | ||||
| to end the static chain in IR headers. For the UDP profile, the chain | ||||
| always ends with a UDP header part, which per definition terminates | ||||
| compression, and the UDP header is also the last header in the | ||||
| uncompressed packet (except for potential application header). For | ||||
| the case of IP-only compression, there is no single last header that | ||||
| per profile definition terminates the chain. Instead, the static | ||||
| chain is terminated if the "Next Header / Protocol" field of a static | ||||
| IP header part indicates anything but IP (IPinIP or IPv6). | ||||
| Another difference with IP-only compression is related to the | ||||
| 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 | ||||
| supports compression of an arbitrary number of IP headers. The static | ||||
| chain can obviously be of an arbitrary length, and is simply | ||||
| terminated through the presence of a non-IP header (not IPinIP nor | ||||
| IPv6). The dynamic chain is structured analogously. In compressed | ||||
| packet headers, header information related to the initial two IP | ||||
| headers are carried as in the IP/UDP profile, while a dynamic header | ||||
| chain is added at the end of the compressed header for each and every | ||||
| additional IP header. The data structure used for these header | ||||
| 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 | ||||
| IP/UDP profile, providing the details of the general principles | ||||
| described in the previous paragraph. | ||||
| 3.2. 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. | IP header, where the Next Header/Protocol field has any value but | |||
| IPinIP (4) or IPv6 (41) [PROTOCOL]. At the compressor, SN is | ||||
| ********************************************************************* | initialized to a random value when the first IR packet is sent. | |||
| * Note: An open issue is how to terminate the static chain. Any * | ||||
| * NextHdr/Protocol other than 4 (IPinIP) or 41 (IPv6) would * | ||||
| * terminate the chain, but so would also a third IP header. * | ||||
| ********************************************************************* | ||||
| At the compressor, IP SN is initialized to a random | ||||
| value when the IR packet is sent. | ||||
| 2) By reusing an existing context where the existing static chain | 2) By reusing an existing context. This is done with an IR-DYN | |||
| contains the static part of an IP header. | packet, identifying profile 0x0004, where the dynamic chain | |||
| corresponds to the prefix of the existing static chain, ending | ||||
| with an IP header where the Next Header/Protocol field has any | ||||
| value but IPinIP (4) or IPv6 (41) [PROTOCOL]. At the compressor, | ||||
| SN is initialized to a random value when the first IR-DYN packet | ||||
| is sent. | ||||
| ********************************************************************* | For ROHC IP, the dynamic part of an IR or IR-DYN packet is similar to | |||
| * Note: This will have to be revised based on what is decided for * | the one for ROHC UDP, with a two-octet field containing the SN | |||
| * the above issue. * | 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 | |||
| 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 | ||||
| chains in compressed packets do not have this sequence number at the | ||||
| end of the chain, as SN is present within compressed base headers. | ||||
| As for ROHC UDP, this is done with an IR-DYN packet, identifying | 3.3. Packet types | |||
| profile 0x0004, where the dynamic chain corresponds to the prefix | ||||
| of the existing static chain that ends with the IP header. | ||||
| ********************************************************************* | The only packet format that differs from ROHC UDP is the general | |||
| * Note: This will have to be revised based on what is decided for * | format for compressed packets, which has no UDP checksum in the end. | |||
| * the above issue. * | 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 | |||
| of corresponding header portions in the static chain). | ||||
| At the compressor, IP SN is initialized to a random value. | The general format for a compressed header is thus as follows: | |||
| For ROHC IP, the dynamic part of a compressed packet is similar to | 0 1 2 3 4 5 6 7 | |||
| the one for ROHC UDP, with a two-octet field containing the SN added | --- --- --- --- --- --- --- --- | |||
| to the end of the chain. This affects the format of dynamic chains in | : Add-CID octet : | | |||
| IR and IR-DYN packets. | +---+---+---+---+---+---+---+---+ | | |||
| | first octet of base header | | | ||||
| +---+---+---+---+---+---+---+---+ | | ||||
| : : | | ||||
| / 0, 1, or 2 octets of CID / | | ||||
| : : | | ||||
| +---+---+---+---+---+---+---+---+ | | ||||
| / remainder of base header / | | ||||
| +---+---+---+---+---+---+---+---+ | | ||||
| : : | | ||||
| / Extension / | | ||||
| : : | | ||||
| --- --- --- --- --- --- --- --- | | ||||
| : : | | ||||
| + IP-ID of outer IPv4 header + | ||||
| : : (see section 5.7 or [RFC-3095]) | ||||
| --- --- --- --- --- --- --- --- | ||||
| / AH data for outer list / | | ||||
| --- --- --- --- --- --- --- --- | | ||||
| : : | | ||||
| + GRE checksum + | | ||||
| : : | | ||||
| --- --- --- --- --- --- --- --- | | ||||
| : : | | ||||
| + IP-ID of inner IPv4 header + | | ||||
| : : | | ||||
| --- --- --- --- --- --- --- --- | | ||||
| / AH data for inner list / | | ||||
| --- --- --- --- --- --- --- --- | | ||||
| : : | | ||||
| + GRE checksum + | | ||||
| : : | | ||||
| --- --- --- --- --- --- --- --- | ||||
| : List of : | ||||
| / Dynamic chains / variable, given by static chain | ||||
| : for additional IP headers : (includes no SN) | ||||
| --- --- --- --- --- --- --- --- | ||||
| 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. | |||
| [TO BE REMOVED BEFORE PUBLICATION] | { NOTE TO IANA - TO BE REMOVED BEFORE PUBLICATION } | |||
| A ROHC profile identifier must be reserved by the IANA for the | A ROHC profile identifier must be reserved by the IANA for the | |||
| profile defined in this document. Profile number 0x0004 has | profile defined in this document. Profile number 0x0004 has | |||
| previously been saved for this purpose, and should thus be used. | previously been saved for this purpose, and should thus be used. | |||
| As for previous ROHC profiles, profile numbers 0xnnXX must also be | As for previous ROHC profiles, profile numbers 0xnn04 must also be | |||
| reserved for future updates of this profile. A suggested | reserved for future variants of this profile. A suggested | |||
| registration in the "RObust Header Compression (ROHC) Profile | registration in the "RObust Header Compression (ROHC) Profile | |||
| Identifiers" name space would then be: | Identifiers" name space would then be: | |||
| 0x0004 ROHC IP [RFCXXXX (this)] | OLD: 0xnn04 To be Assigned by IANA | |||
| 0xnn04 Reserved | ||||
| [END] | ||||
| 6. References | NEW: 0x0004 ROHC IP [RFCXXXX (this)] | |||
| 0xnn04 Reserved | ||||
| { END OF NOTE } | ||||
| 6. Acknowledgements | ||||
| The author would like to thank Carsten Bormann and Ghyslain Pelletier | ||||
| for valuable input and review. | ||||
| 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, | |||
| K., Wiebke, T., Yoshimura, T. and H. Zheng, "Robust | K., Wiebke, T., Yoshimura, T. and H. Zheng, "Robust | |||
| 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-1883] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC-2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
| (IPv6) Specification", RFC 1883, December 1995. | (IPv6) Specification", RFC 2460, December 1998. | |||
| 7. Author's Address | [PROTOCOL] "Assigned Internet Protocol Numbers", IANA registry at: | |||
| http://www.iana.org/assignments/protocol-numbers | ||||
| 8. Author's Address | ||||
| Lars-Erik Jonsson Tel: +46 920 20 21 07 | Lars-Erik Jonsson Tel: +46 920 20 21 07 | |||
| Ericsson AB Fax: +46 920 20 20 99 | Ericsson AB Fax: +46 920 20 20 99 | |||
| Box 920 | Box 920 | |||
| SE-971 28 Lulea | SE-971 28 Lulea | |||
| Sweden EMail: lars-erik.jonsson@ericsson.com | Sweden EMail: lars-erik.jonsson@ericsson.com | |||
| Full Copyright Statement | Full Copyright Statement | |||
| Copyright (C) The Internet Society (2001). 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 | |||
| included on all such copies and derivative works. However, this | included on all such copies and derivative works. However, this | |||
| document itself may not be modified in any way, such as by removing | document itself may not be modified in any way, such as by removing | |||
| the copyright notice or references to the Internet Society or other | the copyright notice or references to the Internet Society or other | |||
| Internet organizations, except as needed for the purpose of | Internet organizations, except as needed for the purpose of | |||
| skipping to change at page 5, line 33 ¶ | skipping to change at page 8, 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 April 28, 2003. | This Internet-Draft expires July 23, 2003. | |||
| End of changes. 28 change blocks. | ||||
| 68 lines changed or deleted | 165 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/ | ||||