RFC 3843

RObust Header Compression (ROHC): A Compression Profile for IP

πŸ“… published June 2004, from ietf

RFC 3843 πŸ’– ROHC IP Profile, Part 1 of 3

bestie, this one is a Standards Track doc from June 2004, written by L-E. Jonsson and G. Pelletier at Ericsson πŸ’…. It's published under the Network Working Group banner. The title is RObust Header Compression (ROHC): A Compression Profile for IP ✨.

Status of this Memo πŸ“œ

okay so this document is an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements 🫢. If you want the current standardization state of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited 🌈.

Copyright (C) The Internet Society (2004).

Abstract πŸ¦‹

so the original ROHC RFC, which is RFC 3095, is the big framework for header compression πŸŽ€. It comes with profiles for IP/UDP/RTP, IP/ESP (Encapsulating Security Payload), IP/UDP, and a profile for uncompressed packet streams. The catch is that nobody ever defined a profile for compressing just IP, and that was a huge missing piece 😭. This document fixes that. It's a ROHC compression profile for IP that's basically the IP/UDP profile from RFC 3095 but simplified so it leaves out UDP, and it's upgraded to handle IP header chains of any length πŸ”₯.

Table of Contents πŸ“š

1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
2.  Terminology. . . . . . . . . . . . . . . . . . . . . . . . . .  2
3.  ROHC IP Compression (Profile 0x0004) . . . . . . . . . . . . .  3
    3.1.  Static Chain Termination . . . . . . . . . . . . . . . .  3
    3.2.  Handling Multiple Levels of IP Headers . . . . . . . . .  3
    3.3.  Constant IP-ID . . . . . . . . . . . . . . . . . . . . .  4
    3.4.  Additional Mode Transition Logic . . . . . . . . . . . .  6
    3.5.  Initialization . . . . . . . . . . . . . . . . . . . . .  8
    3.6.  Packet Types . . . . . . . . . . . . . . . . . . . . . .  8
    3.7.  The CONTEXT_MEMORY Feedback Option . . . . . . . . . . . 10
4.  Security Considerations. . . . . . . . . . . . . . . . . . . . 10
5.  IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 10
6.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 10
7.  Normative References . . . . . . . . . . . . . . . . . . . . . 11
Appendix A.  Detailed Procedures for Canceling Mode Transitions. . 12
    A.1.  Transition from Optimistic to Reliable Mode. . . . . . . 12
    A.2.  Transition from Unidirectional to Reliable Mode. . . . . 13
    A.3.  Transition from Reliable to Optimistic Mode. . . . . . . 13
    A.4.  Transition Back to Unidirectional Mode . . . . . . . . . 14
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 15
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 16

1. Introduction ✨

okay so RFC 3095, which is the original ROHC RFC [RFC-3095], gives us a framework for header compression along with profiles for IP/UDP/RTP, IP/ESP (Encapsulating Security Payload), IP/UDP, and an uncompressed packet stream profile 🌸. That last one exists so you can wrap all the traffic on a link inside ROHC packets. The lower layers don't have to handle multiplexing for different packet types, and ROHC can carry any packet stream, even when nobody has defined a compression profile for that kind of stream yet on that link 🧚.

Now, the no-compression profile is simple and can tunnel any packet, but it has a big weakness: it doesn't compress headers at all πŸ’€. Normally, packets are expected to be IP [RFC-791, RFC-2460] packets, and the IP header is often a big chunk of the total header. So for most packets, a more useful option than no compression would be compressing just the IP header πŸ‘‘. RFC 3095 [RFC-3095] didn't define that profile, which made it an important missing piece in the ROHC toolbox 😀.

This document fills that gap with a ROHC compression profile for IP only [RFC-791, RFC-2460]. It's similar to the IP/UDP profile from [RFC-3095], but simplified to exclude UDP πŸ¦‹. Since it's so similar to IP/UDP, this profile is described based on the IP/UDP profile, and the doc mostly covers the differences. The big ones are a different way of ending the static header chain, and the ability to compress IP header chains of arbitrary length πŸ’œ.

2. Terminology 🧠

bestie, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC-2119] πŸŽ€.

ROHC UDP 🌷

"ROHC UDP" in this document refers to the IP/UDP profile (Profile 0x0002) as defined in [RFC-3095] πŸ“.

3. ROHC IP Compression (Profile 0x0004) πŸ’…

so in general, ROHC UDP and the IP profile (ROHC IP) from this document don't have major differences 🫢. Removing UDP doesn't really affect the compression mechanisms in principle. Just like ROHC UDP, the compressor generates a 16-bit sequence number that goes up by one for every packet it compresses in the packet stream. We'll call it SN from here on πŸ”’. The biggest difference between this profile and ROHC UDP is how the static chain gets terminated and how multiple IP headers get handled. Unless stated explicitly below, the mechanisms and formats are the same as ROHC UDP 🌈.

3.1. Static Chain Termination πŸ”—

Okay, here's the IP-only twist πŸ‘€. Compared to IP/UDP compression, the difference is in how the static chain gets terminated in IR headers. For the UDP profile, the chain always ends with a UDP header part, which by definition gives the chain its boundaries. The UDP header is also the last header in the uncompressed packet (except maybe an application header). For the IP-only profile, there's no single last header that terminates the chain by profile definition 😡. Instead, the static chain ends when the "Next Header / Protocol" field of a static IP header part indicates anything other than IP (IPinIP or IPv6) ✨.

There's also a second option. The compressor can choose to end the static chain at any IP header, and it signals that by setting the MSB of the IP version field to 1 (0xC for IPv4 or 0xE for IPv6) πŸ’–. The decompressor must store this indication in the context so it can decompress later headers correctly 🧚. Also, note that the IP version field in decompressed headers must be restored to its original value πŸ™ˆ.

3.2. Handling Multiple Levels of IP Headers 🌸

so the ROHC IR and IR-DYN packets from [RFC-3095] are used to communicate the static and/or dynamic parts of a context πŸŽ€. For every compression profile in [RFC-3095], there's a single last header in the header chain that clearly marks where the static chain ends. The length of the dynamic chain is then inferred from the static chain in the IR header itself, or from the static chain in the context for the IR-DYN header 🧠. So both static and dynamic chains can be any length, and in theory they can start a context with any number of IP levels 🌈.

Here's the catch, though 😬. The general compressed header formats in [RFC-3095, section 5.7.] say that at most two levels of IP headers (the 'Inner' and the 'Outer' level of IP headers) can be included in a compressed header. Specifically, the format for Extension 3 [RFC-3095, section 5.7.5.] can only carry one single 'Outer' IP header πŸ₯Ί. On top of that, list compression can be used to compress other types of headers, but it can't compress additional IP headers, because IP headers can't be part of an extension header chain in compressed headers [RFC-3095, section 5.8.] πŸ™…β€β™€οΈ.

So for the profiles in [RFC-3095], the result is that at most two levels of IP headers can be compressed. Put another way, extra IP headers at best partially disable header compression, since the compressor is only allowed to send IR and IR-DYN packets in those cases πŸ’€.

For IP-only compression, though, the extra IP headers don't have to disable header compression. No single packet type ends the compressed chain. The excess IP headers can just stay uncompressed by implicitly ending the static and dynamic chains after at most two levels of IP headers πŸ¦‹.

The IP-only profile in this document goes a step further and supports compressing any number of IP levels πŸ‘‘. It does this by adding a dynamic chain to the general format of compressed headers, which carries the header part of each IP level beyond the first two ✨.

Just like before, the static chain within IR packets can be any length, and it ends when a non-IP header shows up (not IPinIP nor IPv6). Or, as described in section 3.1, the chain can be explicitly ended with a special code value in the IP version field πŸ’–. The dynamic chain is built the same way 🫢.

For compressed headers, the info about the first two IP headers is carried just like the IP/UDP profile does it, and a chain of dynamic header info gets added to the end of the compressed header for each additional IP header 🌷. This extra data structure is exactly the same as the one used in IR and IR-DYN packets πŸ“. The chain length gets inferred from the chain of static parameters in the context 🧚. A dynamic chain carries parameters that change dynamically using an uncompressed representation, and this means flows with any number of IP header levels won't hurt compression efficiency πŸ”₯πŸ’…

3.3. Constant IP-ID ✨

Most IPv4 stacks give each packet an IP-ID from a counter that goes up by one for every outgoing packet πŸ”’. ROHC UDP compresses that field with offset IP-ID encoding based on the UDP SN [RFC-3095]. Stacks that make their IP-IDs with a pseudo-random number generator are a different story 🎲. For those, the field isn't compressed at all. It gets sent as-is, all of it, as extra octets after the compressed header.

Some IPv4 stacks have also been caught using one constant value for the IP Identifier πŸ™ˆ. When the IP-ID is constant, offset IP-ID encoding can't compress it, so the whole field has to be sent. You can dodge that overhead by adding a flag to the dynamic part of the chain that's used to set up the IPv4 header. It looks like this:

Dynamic part:

   +---+---+---+---+---+---+---+---+
   |        Type of Service        |
   +---+---+---+---+---+---+---+---+
   |         Time to Live          |
   +---+---+---+---+---+---+---+---+
   /        Identification         /   2 octets
   +---+---+---+---+---+---+---+---+
   | DF|RND|NBO|SID|       0       |
   +---+---+---+---+---+---+---+---+
   / Generic extension header list /  variable length
   +---+---+---+---+---+---+---+---+

SID stands for Static IP Identifier πŸ’–, and here's how it works:

  • For IR and IR-DYN packets, the logic is the same as for ROHC UDP, with one addition: field(SID) has to 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]) with p = 0 and default-slope(IP-ID offset) = 0.
    • If value(RND) = 0 and context(SID) = 1, hdr(IP-ID) is constant and gets compressed away. hdr(IP-ID) is the value of context(IP-ID).
    • If value(RND) = 1, IP-ID is the uncompressed hdr(IP-ID). It then gets passed as extra octets at the very end of the compressed header, after any extensions 🧚.

Only IR and IR-DYN packets can update context(SID). Everything else works exactly like ROHC UDP [RFC-3095] πŸŽ€.


3.4. Additional Mode Transition Logic πŸ¦‹

The profiles in [RFC-3095] work in different compression modes. A mode transition can be requested once a packet reaches the decompressor, by sending feedback that says which mode is wanted. Per the rules in [RFC-3095], the compressor is compelled to honour those requests πŸ‘‘.

For the IP profile in this document, the Mode parameter with value mode = 0 (packet types UOR-2, IR and IR-DYN) gets redefined. Now the compressor is allowed to say no to a mode transition the decompressor asked for πŸ™…β€β™€οΈ:

Mode: Compression mode.  0 = (C)ancel Mode Transition

When the decompressor gets a Mode parameter set to '0', it MUST stay in its current mode of operation. It SHOULD also hold off on sending more mode transition requests for the declined mode for a while 😀.

Here's the detail, using the parameters C_TRANS, C_MODE, D_TRANS, and D_MODE from [RFC-3095, section 5.6.1.]. These changes apply whenever 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 if the mode parameter is set to '0' (as a response to a mode transition request from the decompressor).
    • C_TRANS: C_TRANS is (P)ending when a mode transition request comes in 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 that was in use when the mode transition request started.
  • 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' gets received. It is set to (D)one when a packet of type 1 or 0 for the unchanged mode gets received.

Here's how the whole mode transition dance goes down πŸ‘―β€β™€οΈ:

           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 🌸

There are two ways to set up the static context for ROHC IP compression πŸ› οΈ:

  1. Use an IR packet, same as in ROHC UDP. The profile is 0x0004, and the static chain ends with the static part of an IP header. In that header, the Next Header/Protocol field has any value except IPinIP (4) or IPv6 (41) [PROTOCOL], or the IP version field signals termination (see section 3.1). At the compressor, SN gets set to a random value when the first IR packet goes out.
  2. Reuse an context that already exists. You do this with an IR-DYN packet that names profile 0x0004. The dynamic chain matches the prefix of the existing static chain, and it ends with an IP header where the Next Header/Protocol field has any value except IPinIP (4) or IPv6 (41) [PROTOCOL], or where the IP version field signals termination (see section 3.1). At the compressor, SN gets set to a random value when the first IR-DYN packet goes out.

For ROHC IP, the dynamic part of an IR or IR-DYN packet looks a lot like the one for ROHC UDP πŸ’œ. It has a two-octet field holding the SN, sitting at the end of the dynamic chain. It should be noted that the static and dynamic chains can be any length, and the SN only gets added once, at the end of the dynamic chain in IR and IR-DYN packets πŸ“Œ.


3.6. Packet Types πŸŽ€

Apart from one new feedback option (see section 3.7), the only packet format that's different from ROHC UDP is the general format for compressed packets. The difference is that it has no UDP checksum at the end. Instead, it ends with a list of dynamic header portions, one for each IP header above the initial two (if there are any, as shown by matching header portions in the static chain) 🧩.

Here's the general format for a compressed header:

  0   1   2   3   4   5   6   7
 --- --- --- --- --- --- --- ---
:         Add-CID octet         :                    |
+---+---+---+---+---+---+---+---+                    |
|   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 of [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)
 --- --- --- --- --- --- --- ---

Heads up πŸ‘€: the dynamic chains for the extra IP headers in compressed packets don't have a sequence number at the end, because SN already lives inside the compressed base headers.


3.7. The CONTEXT_MEMORY Feedback Option 🧠

The CONTEXT_MEMORY option tells the compressor that the decompressor doesn't have enough memory to handle the context of the packet stream, the way the stream is compressed right now 😬.

  0   1   2   3   4   5   6   7
+---+---+---+---+---+---+---+---+
|  Opt Type = 9 |  Opt Len = 0  |
+---+---+---+---+---+---+---+---+

When the compressor gets a CONTEXT_MEMORY option, it SHOULD either compress the packet stream in a way that needs less decompressor memory, or stop compressing the packet stream altogether 🫢.


4. Security Considerations πŸ”

The security considerations of [RFC-3095] apply equally to this document, without exceptions or additions. No cap, the whole [RFC-3095] security section is the one to read 🚨.

5. IANA Considerations πŸ“‹

ROHC profile identifier 0x0004 has been reserved by the IANA for the profile defined in this document πŸŽ‰.

6. Acknowledgements πŸ’Œ

The authors would like to thank Carsten Bormann, Fredrik Lindstrom, Tommy Lundemo, and especially the committed document reviewers Kristofer Sandlund and Mark West, for valuable input and review 🫢✨.

7. Normative References πŸ“š

Okay bestie, these are the docs this one leans on so hard it's basically co-dependent πŸ’…

  • [RFC-791] Postel, J., "Internet Protocol", RFC 791, September 1981.
  • [RFC-2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [RFC-2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998.
  • [RFC-3095] Bormann, C., Burmeister, C., Degermark, M., Fukushima, H., Hannu, H., Jonsson, L-E., Hakenberg, R., Koren, T., Le, K., Liu, Z., Martensson, A., Miyazaki, A., Svanbro, K., Wiebke, T., Yoshimura, T. and H. Zheng, "Robust Header Compression (ROHC)", RFC 3095, July 2001.
  • [PROTOCOL] "Assigned Internet Protocol Numbers", IANA registry at: http://www.iana.org/assignments/protocol-numbers

Appendix A. Detailed Procedures for Canceling Mode Transitions πŸ¦‹

Okay so the profiles in [RFC-3095] run in different modes of compression: Unidirectional (U-Mode), Bi-directional Optimistic (O-Mode), and Bi-directional Reliable (R-Mode). Compression always starts in U-Mode, and mode transitions can only be started by the decompressor [RFC-3095, section 5.6.]. A transition can be requested once a packet has reached the decompressor, by sending feedback that says which mode it wants πŸ’–

With the parameters C_TRANS, C_MODE, D_TRANS, and D_MODE from [RFC-3095, section 5.6.1.] in mind, the sub-sections below walk through what happens when a compressor says no to a mode transition request from the decompressor, as described in section 3.4.

A.1. Transition from Optimistic to Reliable Mode 🌸

So when the decompressor tries to switch from Optimistic to Reliable mode, here's how the cancellation goes:

             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 as O and set 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 πŸŽ€

Cancelling a transition from Unidirectional to Reliable mode works the exact same way as in section 4.2 above. No new drama here πŸ’…

A.3. Transition from Reliable to Optimistic Mode 🧚

When the decompressor switches from Reliable to Optimistic mode, the cancellation goes like this:

               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 as 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 πŸ“

Last one, and it's a big one 😭 When the decompressor goes from Reliable or Optimistic mode back to Unidirectional mode, the cancellation looks like this:

              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. πŸ‘‘


Authors' Addresses πŸ–ŠοΈ

Lars-Erik Jonsson
Ericsson AB
Box 920
SE-971 28 Lulea, Sweden

Phone: +46 8 404 29 61
Fax:   +46 920 996 21
EMail: lars-erik.jonsson@ericsson.com


Ghyslain Pelletier
Ericsson AB
Box 920
SE-971 28 Lulea, Sweden

Phone: +46 8 404 29 43
Fax:   +46 920 996 21
EMail: ghyslain.pelletier@ericsson.com

Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


Intellectual Property πŸ”

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or the extent to which any license under such rights might or might not be available. It also doesn't represent that it has made any independent effort to identify any such rights. Information on the procedures for rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the result of an attempt to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. 🫢


Acknowledgement πŸ’œ

Funding for the RFC Editor function is currently provided by the Internet Society. 🌸

πŸ“¦ where this page comes from