Network Working Group H. Hannu, Ericsson INTERNET-DRAFT J. Christoffersson, Ericsson Expires: August 2002 S. Forsgren. Ericsson K. Leung, Nokia Z. Liu, Nokia R. Price, Siemens/Roke Manor February 15, 2002 SigComp - Extended Operations Status of this memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or cite them other than as "work in progress". The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/lid-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html This document is a submission of the IETF ROHC WG. Comments should be directed to its mailing list, rohc@cdt.luth.se. Abstract This document defines extended operation mechanisms, explicit acknowledgements and shared compression, for [SIGCOMP]. When these extended mechanisms are applied an increase of the compression efficiency is expected. Hannu, et al. [Page 1] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 Table of contents 1. Introduction..................................................2 2. Terminology...................................................2 3. Architectural view for feedback...............................4 4. State reference model.........................................5 5. Extended operation mechanisms.................................6 6. Implications on SigComp.......................................9 7. Security considerations......................................14 8. IANA considerations..........................................14 9. Acknowledgements.............................................14 10. Authors' addresses...........................................14 11. Intellectual Property Right Considerations...................15 12. References...................................................15 Appendix A. Document history.....................................16 1. Introduction This document defines extended operation mechanisms, explicit acknowledgements and shared compression, for [SIGCOMP]. These mechanisms are expected to improve the compression efficiency, compared to the case when one of the communicating implementations only support the basic SigComp. For better understanding of this draft the reader should consult [SIGCOMP]. 2. Terminology 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]. Universal Decompressor Virtual Machine (UDVM) The virtual machine described in [SIGCOMP]. The UDVM is used for decompression of SigComp messages. The UDVM is capable of interoperating with a wide range of compression algorithms. Decompressor The decompressor invokes the UDVM. It is responsible for supplying the UDVM with compressed data and make decompressed data available for the application. Compressor The compressor invokes the encoder, and keeps track of states that can be used for compression. Responsible for supplying UDVM Hannu, et al. [Page 2] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 instructions to its remote decompressor in order for compressed data to be decompressed. Explicit acknowledgements Is defined as the case where an acknowledgement for a state is explicitly sent from a decompressor to a compressor. The acknowledgment can either be sent standalone or piggybacked with a SigComp message. Shared compression Is defined as the case when a compressor uses data that has been received by the associated decompressor. Dynamic compression Is defined as the case when a compressor uses data, which are related to previous SigComp messages. Encoder Encodes data according to a (compression) algorithm into UDVM readable code. The encoded data can be decoded by a UDVM provided with the needed instructions. Application Invokes the SigComp compressor and decompressor. State Data saved either by a compressor or a decompressor. The data reflects the contents of a UDVM memory. State identifier Reference to a state saved either by a compressor or a decompressor. - state_identifier This is a reference to a state, which a compressor uses for compression. - shared_identifier This is a reference to a state, which consist only of an uncompressed message. This kind of state is necessary for efficient utilization of shared compression, as remote compressors might use different compression algorithms. Hannu, et al. [Page 3] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 - acked_identifier This is a reference to a state, which is acknowledged and saved by a decompressor. SigComp message May contain a compressed application message in the form of UDVM bytecode. In case of a message- based transport, such as UDP, a SigComp message corresponds to exactly one (UDP) datagram. For a stream-based transport, such as TCP, each SigComp message is separated by a 0xFFFF delimiter. Application message An uncompressed message, as provided from or to the application, which is to be compressed by the compressor. When delivered from the decompressor the data has passed through the decompression process and is referred to as decompressed data or a decompressed message. 3. Architectural view for feedback A SigComp endpoint may provide feedback to its remote SigComp endpoint, see Figure 1. +--------------------+ +--------------------+ | Endpoint 1 | | Endpoint 2 | | +--------------+ | | +--------------+ | | | Compressor | | | | Decompressor | | | | [------------+--+--------------+--+--] * | | | +-|-------^----+ | | +--|---|-------+ | | | | | | | | | | | | | | | | | | | | | | | | | | +-|-------|----+ | | +--v---|-------+ | | | * [----+--+--------------+--+------] | | | | Decompressor | | | | Compressor | | | +--------------+ | | +--------------+ | +--------------------+ +--------------------+ Figure 1. Architectural view With the extended feedback format specified in Section 6, it is possible for a SigComp endpoint to confirm which states that have been established to its remote SigComp endpoint. The established state confirmations are referred to as acknowledgments. Depending on the established states this particular type of feedback may be used to increase the compression efficiency. Hannu, et al. [Page 4] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 4. State reference model A UDVM may want to save the status of its memory and this status is referred to as a state. As explained in [SIGCOMP] a save state request may or may not be granted. For later reference to a saved state, e.g. if the UDVM is to be loaded with this state, a reference is needed to locate the specific state. This reference is called state identifier. 4.1. Overview of state reference with dynamic compression When compressor 1 (comp_1) compresses a message M it uses the information corresponding to a UDVM state that its remote decompressor (decomp_2) has established and acknowledged. If comp_1 decides that it for compression of later messages would like to be able to use the new state, which is the former state with the addition of information from M, it must save the new state. If an acknowledgement is received for this new state, comp_1 can utilize the new state in the compression process. Below is an overview of the model. Available state(s) Compressor: The state is anticipated for compression of later messages, and is therefore saved. Decompressor: The decompressor saves the state if it will acknowledge it. An acknowledged state may be used for compression. Acked state(s) The compressor can only use a state(s) that the remote decompressor has saved and acknowledged. Hannu, et al. [Page 5] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 Compressor 1 Decompressor 2 +---+ +---+ | C | | D | +---+ +---+ Available Acked | | Available State(s) State(s) | | State(s) -----------------------+------------+------------------ s0 s0 | | s0 s1=s0+m1 | --m1(s0)-->| | <--ack(s1) | s0,s1 s0,s1 s0,s1 | | | | s0,s1 s0,s1 | --m2(s1)-->| (m2 Lost) s2=s1+m1 | | | | s0-s2 s0,s1 | | s3=s1+m3 | --m3(s1)-->| s0,s1 | | | | | <--ack(s3) | s0,s1,s3=s1+m3 s0-s3 s0,s1,s3 | | Figure 2. Example of message flow. 5. Extended operation mechanisms For a compressor to be able to utilize a certain state it must know that the remote decompressor has access to this state. In case where compressed messages can be lost or misordered on the path between compressor and decompressor, some sort of acknowledgement must be used by a decompressor to notify the remote compressor that a certain state has been established. Over reliable and ordered transport the most recent state may be used, if the compressor has downloaded such a UDVM instruction code to its remote decompressor. The following subsections describe how an explicit acknowledgement scheme and shared compression can be applied in SigComp. 5.1. Explicit acknowledgement scheme A SigComp message will along with the compressed message carry a reference to which state that was used for compression of the message. This reference is the state_identifier, as described in Section 2. Hannu, et al. [Page 6] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 Together with state_identifier the SigComp message may also carry an acknowledgement, which would be the acked_identifier, see Section 2. The acknowledgement can be either standalone or piggybacked. For security reasons as explained in SigComp it is RECOMMENDED that this particular feedback is piggybacked and not sent standalone. 5.2. Shared Compression To allow for shared compression a compressing endpoint MUST save a state, which is the uncompressed version of the compressed message. The reference to this uncompressed version is the shared_identifier, as described in Section 2. It must also indicate to its remote decompressor that this compressed message's uncompressed version was saved as a state at the compressor. If a compressing endpoint indicates that a shared compression state was saved, its local decompressor MUST be able to retrieve that particular state. The retrieval of this particular state is done according to the state retrieval instructions of the UDVM. 5.3. Maintaining state data across session Usually, signaling protocols (e.g. SIP) have the concept of sessions. However, from the compression point of view, the messages sent by the same source contain redundancies beyond session boundary. Consequently, it is natural to maintain the state data from the same source across sessions so that high performance can be achieved and maintained with the overhead amortized over a much longer period of time than a session. 5.4. Use of user-specific dictionary The concept of user-specific dictionary is based on the following observation that for protocols such as SIP, a given user/device combination will produce some messages containing fields that are always populated with the same data. Take SIP as an example, capabilities of the SIP endpoints are communicated during session initiation, and do not tend to change unless the device's capabilities change. Similarly, user-specific information such as a user's URL, a user's name, and a user's e-mail address likely won't change on frequent basis, and will appear regularly in SIP signaling exchanges involving a specific user. Therefore, a SigComp compressor could start uploading the user- specific dictionary, as part of the initial state, to the decompressor even before any signaling messages are generated from a particular application . This enables the immediate compression/decompression once the messages start to flow. Hannu, et al. [Page 7] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 5.5. Checkpoint state and rollback mechanism The following mechanisms can be used to recover from decompression failure due to a reference to a non-exist state (i.e. not established at all or has been deleted by the decompressor) or a corrupted state: 1) When a compressor sends a compressed message that will create new decompression state on the decompressor side, it can set a CHK_PT bit in the message to indicate that the newly created state will be a checkpoint state. A checkpoint state means that the decompressor SHOULD NOT delete it until it is explicitly instructed -- by the compressor -- to do so. In addition, the checkpoint state MUST be explicitly acknowledged by the receiving decompressor to the sending compressor. 2) When a decompressor encounters a decompression failure as described above, it can send a rollback message to its remote compressor indicating such a failure. In addition, the rollback message may carry a list of state IDs of those checkpoint states that are currently maintained by the decompressor. This is useful in the case when the decompressor has to delete even checkpoint states due to limited memory. When receiving such a rollback message, the compressor MUST NOT use any state to compress subsequent messages other than those explicitly listed in the rollback message or if the list is empty, than those checkpoint states it stores locally and have been acknowledged. 5.6. Implicit deletion when creating a new state To achieve the maximum compression efficiency, a compressor may want to delete part (e.g. dictionary part) of byte buffer to make room for the new content. This is especially important when implementing SigComp with limited memory (as in the case of a mobile terminal). With the implicit deletion, some part(s) of the byte buffer are chosen to be deleted according to a well defined algorithm that is known and applied in the same way at both compressor and decompressor. As input into the algorithm, one provides the total size to be deleted (e.g. number of bytes), and the algorithm specifies which part(s) are to be deleted. The freed room can then allow new content to be added to the byte buffer. Since the same algorithm is applied at both SigComp entities, there is no need to explicitly signal which part(s) have been deleted. In particular, when the allocated memory has been filled up, each SigComp entity, when it wants to add items of combined size S, will implicitly delete part(s) of combined size S. Since there is no need for signaling, the scheme is more efficient (lower signaling overhead) and more robust (less prone to errors or losses affecting the signaling information). Hannu, et al. [Page 8] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 For example, the implicit deletion may be applied to the entire writable UDVM memory defined by working_memory_start and working_memory_end or only some parts of the writable UDVM memory. In the latter case, it is assumed that the peer SigComp entities agree on which parts the operation is applied to and the total size of those parts. 6. Implications on SigComp The extended operations will have implication on the SigComp messages sent between the compressor and the remote decompressor. It will also have implications on the interface between the UDVM and its local decompressor functionalities. 6.1. Implications on SigComp messages For the support of the extended operation mechanisms, SigComp messages must be able to carry the indications and information addressed in Section 5. The basic SigComp message has the following format: 0 1 2 3 4 5 6 7 +---+---+---+---+---+---+---+---+ | | : state_identifier (n-bytes) : | | +---+---+---+---+---+---+---+---+ | | : Remaining UDVM bytecode : | | +---+---+---+---+---+---+---+---+ Figure 3. Format of basic SigComp message. The content of the UDVM byte code is an implementation decision. However, in the case of extended operations it should convey the following information: - The shared_identifier as described in Section 2, and Section 5.2, MUST be conveyed when shared compression is applied. - State identifiers of states that are acknowledged as successfully saved by the decompressor, i.e. acked_identifiers. Figure 4, depicts an example of what an extended basic SigComp message, with the support of all extended operation mechanisms, could look like. Note that this is only an example, the format is an implementation decision. Hannu, et al. [Page 9] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 0 1 2 3 4 5 6 7 +---+---+---+---+---+---+---+---+ | | : state_identifier (n-bytes) : | | +---+---+---+---+---+---+---+---+ | s | a | r | b | Reserved | +---+---+---+---+---+---+---+---+ | | : shared_identifier (n-bytes) : Present if 's' is set | | +---+---+---+---+---+---+---+---+ | | : acked_identifier (n-bytes) : Present if 'a' is set | | +---+---+---+---+---+---+---+---+ | Possible | : Compressed data : | | +---+---+---+---+---+---+---+---+ Figure 4. Example of SigComp message for extended operations. 'r' : If set, then a state corresponding to the decompressed version of this compressed message was saved at the compressor. 'b' : Explained in Section 6.2.3. For the explanation of (n-bytes) see [SIGCOMP]. 6.2. Implications on the UDVM-decompressor interface This interface is used to pass feedback information from the UDVM to its local decompressor. The decompressor then forwards this information on to the local compressor. 6.2.1. General SigComp feedback format The general SigComp feedback information has the following format: Hannu, et al. [Page 10] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Total length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | UDVM_version | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | overall_memory_size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | cycles_per_bit | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | cycles_per_message | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Requested feedback length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | : Requested feedback : | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Returned feedback length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | : Returned feedback : | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 5. High-level view of general SigComp feedback information. For description of the items see [SigComp]. The following Section describes how the general feedback format is used to provided extended operation mechanisms to basic sigComp. 6.2.2. Extended SigComp requested feedback format The requested feedback is feedback from the UDVM to its remote compressor. To make the extended acknowledgement scheme work, the Requested feedback is filled with information on states that UDVM requests the state handler to save. In case the state handler refuses to save one or more of the indicated states, the feedback sent from the compressor will be updated accordingly. The format of the Requested feedback is of the following form: The variable n specifies the number of state identifiers included in the extended operations feedback format. id_length (x) and id_values (x) corresponds to the same state. Hannu, et al. [Page 11] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | n | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | id_length 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | : id_value_1 : | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | id_length 2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | : id_value_2 : | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : : : : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | id_length n | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | : id_value_n : | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 6. Format of the Requested feedback. 6.2.2. Extended SigComp returned feedback format The returned feedback is feedback from the remote endpoint to the local compressor. The 'r' bit indicates that an uncompressed version of the compressed message sent in this message has been saved at the remote endpoint, with the demands of Section 5.2. The 'b' bit is explained in Section 6.2.3. The format of the returned feedback is of the following form: Hannu, et al. [Page 12] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |r|b| n | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | id_length 1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | : id_value_1 : | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | id_length 2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | : id_value_2 : | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : : : : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | id_length n | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | : id_value_n : | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 7. Format of the Returned feedback. 6.2.3. Acknowledgement optimization This section describes an optimization for the case when shared compression is used and an acknowledgement is piggybacked. Consider the following scenario. Comp_1 sends a message M compressed, with state(s0) to decomp_1. As comp_1 supports shared compression it saves state(M), and sets bit 'r', to signal that state(M) can be used by comp_2 in the compression process. If decomp_1 saves state(s0+M) = state(s1), which is the new state of the UDVM after decompression of M, then state(s1) can be implicitly acknowledged, if comp_2 uses M for further compression. Comp_2 sets the 'b' bit, which indicates that state(s0+M) is saved, which can be found from state(M), which is referenced by shared_identifier. This avoids acked_identifier to be present in the SigComp message for state(s0+M). Thus, a compressor that sets the 'r' bit should also hold a mapping between state(M) and state(s0+M). Note: The only state that this feature acknowledges, is the state that was created by combining the state used for compression of the Hannu, et al. [Page 13] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 shared message and the shared message itself. For any other case the acked_identifier has to be used. 7. Security considerations The features in this document are believed not to add any additional security risks to the ones in [SIGCOMP]. 8. IANA considerations [Editors note: This section is TBW] 9. Acknowledgements [Editors note: This section is TBW. Some names have been moved here from the list of authors] Thanks to Carsten Bormann (cabo@tzi.org) Christopher Clanton (christopher.clanton@nokia.com) Miguel Garcia (Miguel.A.Garcia@ericsson.com) Lars-Erik Jonsson (lars-erik.jonsson@epl.ericsson.se) Khiem Le (khiem.le@nokia.com) Mats Nordberg (mats.nordberg@epl.ericsson.se) Jonathan Rosenberg (jdrosen@dynamicsoft.com) Krister Svanbro (krister.svanbro@epl.ericsson.se) for valuable input and review. 10. Authors' addresses Hans Hannu Phone: +46 920 20 21 84 Fax: +46 920 20 20 99 E-Mail: hans.hannu@epl.ericsson.se Jan Christoffersson Phone: +46 920 20 28 40 Fax: +46 920 20 20 99 E-Mail: jan.christoffersson@epl.ericsson.se Stefan Forsgren Phone: +46 920 20 23 39 Fax: +46 920 20 20 99 E-Mail: stefan.forsgren@epl.ericsson.se Hannu, et al. [Page 14] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 Box 920 Ericsson Erisoft AB SE-971 28 Lulea, Sweden Ka Cheong Leung Phone: +1 972 374-0630 Fax: +1 972 894-4589 E-mail: kacheong.leung@nokia.com Zhigang Liu Phone: +1 972 894-5935 Fax: +1 972 894-4589 E-Mail: zhigang.liu@nokia.com Nokia Research Center 6000 Connection Drive Irving, TX 75039, USA Richard Price Phone: +44 1794 833681 E-mail: richard.price@roke.co.uk Roke Manor Research Ltd Romsey, Hants, SO51 0ZN United Kingdom 11. Intellectual Property Right Considerations The IETF has been notified of intellectual property rights claimed in regard to some or all of the specification contained in this document. For more information consult the online list of claimed rights. 12. References [SIP] Handley et. al., SIP: Session Initiation Protocol, RFC 2543, Internet Engineering Task Force, March 1999 [SIGCOMP] H. Hannu et. al., Signaling Compression (SigComp), Internet Draft (work in progress), February 2002. Hannu, et al. [Page 15] INTERNET-DRAFT SigComp - Extended Operations February 15, 2002 Appendix A. Document history - January 28, 2002, version 00 First version. This draft describes the extended operation mechanisms, explicit acknowledgements and shared compression from draft-ietf-rohc-sigcomp-02.txt. - February 15, 2002, version 01 Second version. Updated to reflect the changes made in [SIGCOMP]. This Internet-Draft expires in August 2002. Hannu, et al. [Page 16]