| < draft-ietf-rohc-rtp-lla-02.txt | draft-ietf-rohc-rtp-lla-03.txt > | |||
|---|---|---|---|---|
| A new Request for Comments is now available in online RFC libraries. | ||||
| Network Working Group Lars-Erik Jonsson | RFC 3242 | |||
| INTERNET-DRAFT Ghyslain Pelletier | ||||
| Expires: March 2002 Ericsson | ||||
| September 12, 2001 | ||||
| A Link-Layer Assisted ROHC Profile for IP/UDP/RTP | ||||
| <draft-ietf-rohc-rtp-lla-02.txt> | ||||
| 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 a ROHC profile for compression of IP/UDP/RTP | ||||
| packets, utilizing functionality provided by the lower layers to | ||||
| increase compression efficiency by completely eliminating the header | ||||
| for most packets during normal operation. The profile is built as an | ||||
| extension to the ROHC RTP profile [ROHC]. It defines additional | ||||
| mechanisms needed in ROHC, states requirements on the assisting layer | ||||
| to guarantee transparency, and specifies general logic for | ||||
| compression and decompression making use of this header-free packet. | ||||
| Table of contents | ||||
| 1. Introduction....................................................3 | ||||
| 2. Terminology.....................................................5 | ||||
| 3. Overview of the link-layer assisted profile.....................5 | ||||
| 3.1. Providing packet type identification.....................6 | ||||
| 3.2. Replacing the sequence number............................6 | ||||
| 3.3. CRC replacement..........................................7 | ||||
| 3.4. Applicability of this profile............................7 | ||||
| 4. Additions and exceptions compared to ROHC RTP...................8 | ||||
| 4.1. Additional packet types..................................8 | ||||
| 4.1.1. No-Header Packet (NHP)..........................8 | ||||
| 4.1.2. Context Synchronization Packet (CSP)............8 | ||||
| 4.1.3. Context Check Packet (CCP)......................9 | ||||
| 4.2. Interfaces towards the assisting layer..................10 | ||||
| 4.2.1. Interface, compressor to assisting layer.......11 | ||||
| 4.2.2. Interface, assisting layer to decompressor.....12 | ||||
| 4.3. Optimistic approach agreement (U/O-mode)................12 | ||||
| 4.4. Specific notes on reliable mode.........................13 | ||||
| 4.5. Fast context initialization, IR redefinition............13 | ||||
| 4.6. Feedback option, CV-REQUEST.............................14 | ||||
| 4.7. Periodic context verification...........................14 | ||||
| 4.8. Use of context identifier...............................15 | ||||
| 5. Implementation issues..........................................15 | ||||
| 5.1. Implementation parameters and signals...................15 | ||||
| 5.1.1. Implementation parameters at the compressor....15 | ||||
| 5.1.2. Implementation parameters at the decompressor..17 | ||||
| 5.2. Implementation over various link technologies...........17 | ||||
| 6. IANA considerations............................................18 | ||||
| 7. Security considerations........................................18 | ||||
| 8. Acknowledgements...............................................18 | ||||
| 9. References.....................................................18 | ||||
| 10. Authors' addresses.............................................19 | ||||
| 1. Introduction | ||||
| Header compression is a technique used to compress and transparently | ||||
| decompress the header information of a packet on a per-hop basis, | ||||
| utilizing redundancy within individual packets and between | ||||
| consecutive packets within a packet stream. Over the years, several | ||||
| protocols [VJHC, IPHC] have been developed to compress the network | ||||
| and transport protocol headers [IPv4, IPv6, UDP, TCP], and these | ||||
| schemes have been successful in improving efficiency over many wired | ||||
| bottleneck links, such as modem connections over telephone networks. | ||||
| In addition to IP, UDP and TCP compression, an additional compression | ||||
| scheme called Compressed RTP [CRTP] has been developed to further | ||||
| improve compression efficiency for the case of real-time traffic | ||||
| using the Real-time Transport Protocol [RTP]. | ||||
| The schemes mentioned above have all been designed taking into | ||||
| account normal assumptions about link characteristics, which | ||||
| traditionally have been based on wired links only. However, with an | ||||
| increasing number of wireless links in the Internet paths, these | ||||
| assumptions are no longer generally valid. In wireless environments, | ||||
| especially wide coverage cellular environments, relatively high error | ||||
| rates are tolerated in order to allow efficient usage of the radio | ||||
| resources. For real-time traffic, which is more sensitive to delays | ||||
| than to errors, such operating conditions will be norm over, for | ||||
| example, 3rd generation cellular links, and header compression must | ||||
| therefore tolerate packet loss. However, with the previously | ||||
| mentioned schemes, especially for real-time traffic compressed by | ||||
| CRTP, high error rates have been shown to significantly degrade | ||||
| header compression performance [CRTPC]. This problem was the driving | ||||
| force behind the creation of the RObust Header Compression (ROHC) WG | ||||
| in the IETF. | ||||
| The ROHC WG has developed a header compression framework on top of | ||||
| which profiles can be defined for different protocol sets, or for | ||||
| different compression strategies. Due to the limited packet loss | ||||
| robustness of CRTP, and the demands of the cellular industry for an | ||||
| efficient way of transporting voice over IP over wireless, the main | ||||
| focus of ROHC has so far been on compression of IP/UDP/RTP headers, | ||||
| which are generous in size, especially compared to the payloads often | ||||
| carried by packets with such headers. | ||||
| ROHC RTP has become a very efficient, robust and capable compression | ||||
| scheme, able to compress the headers down to a total size of one | ||||
| octet only. Also, transparency is guaranteed to an extremely great | ||||
| extent even when residual bit errors are present in compressed | ||||
| headers delivered to the decompressor. The requirements for RTP | ||||
| compression [RTP-REQ], defined by the WG before and during the | ||||
| development process, have thus been fulfilled. | ||||
| As mentioned above, the 3rd generation cellular systems, where IP | ||||
| will be used end-to-end, have been one of the driving forces behind | ||||
| ROHC RTP, and the scheme has been designed to also suit new cellular | ||||
| air interfaces, such as WCDMA, making it possible to run even speech | ||||
| services with spectrum efficiency insignificantly lower than for | ||||
| existing one-service circuit switched solutions [VTC2000]. However, | ||||
| other air interfaces such as those based on GSM and IS-95 will also | ||||
| be used in all-IP networks, with further implications for the header | ||||
| compression issue. These older air interfaces are less flexible, with | ||||
| radio bearers optimized for specific payload sizes. This means that | ||||
| not even a single octet of header can be added without using the next | ||||
| higher fixed packet size supported by the link, something which is | ||||
| obviously very costly. For the already deployed speech vocoders, the | ||||
| spectrum efficiency over these links will thus be low compared to | ||||
| existing circuit switched solutions. To achieve high spectrum | ||||
| efficiency overall with any application, more flexible air interfaces | ||||
| must be deployed, and then the ROHC RTP scheme will perform | ||||
| excellently, as shown for WCDMA [MOMUC01]. However, for deployment | ||||
| reasons, it is however important to also provide a suitable header | ||||
| compression strategy for already existing vocoders and air | ||||
| interfaces, such as for GERAN and for CDMA2000, with minimal effects | ||||
| on spectral efficiency. | ||||
| This document defines a new link-layer assisted ROHC RTP profile | ||||
| extending ROHC RTP (profile #1) [ROHC], compliant with the ROHC 0- | ||||
| byte requirements [0B-REQ]. The purpose of this new profile is to | ||||
| provide a header-free packet format that, for a certain application | ||||
| behavior, can replace a majority of the 1-octet header ROHC RTP | ||||
| packets during normal operation, while still being fully transparent | ||||
| and complying with all the requirements of ROHC RTP [RTP-REQ]. For | ||||
| other applications, compression will be carried out as with normal | ||||
| ROHC RTP. | ||||
| To completely eliminate the compressed header, all functionality | ||||
| normally provided by the 1-octet header has to be provided by other | ||||
| means, typically by utilizing functionality provided by the lower | ||||
| layers and sacrificing efficiency for less frequently occurring | ||||
| larger compressed headers. The latter is not a contradiction since | ||||
| the argument for eliminating the last octet for most packets is not | ||||
| overall efficiency in general. It is important to remember that the | ||||
| purpose of this profile is to provide efficient matching of existing | ||||
| applications to existing link technologies, not efficiency in | ||||
| general. The additional complexity introduced by this profile, | ||||
| although minimized by a tight integration with already existing ROHC | ||||
| functionality, implies that it should therefore only be used to | ||||
| optimize performance of specific applications over specific links. | ||||
| When implementing this profile over various link technologies, care | ||||
| must be taken to guarantee that all the functionality needed is | ||||
| provided by ROHC and the lower layers together. Therefore, additional | ||||
| documents should specify how to incorporate this profile on top of | ||||
| various link technologies. | ||||
| 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. | ||||
| CCP Context Check Packet | ||||
| CRC Cyclic Redundancy Check | ||||
| CSP Context Synchronization Packet | ||||
| LLA Link Layer Assisted ROHC RTP Profile | ||||
| NHP No Header Packet | ||||
| ROHC RObust Header Compression | ||||
| RHP ROHC Header Packet (a non-NHP packet, i.e. RRP, CSP or CCP) | ||||
| RRP ROHC RTP Packet as defined in [ROHC, profile 1] | ||||
| Assisting layer | ||||
| "Assisting layer" refers to any entity implementing the | ||||
| interface to ROHC (section 4.2). It may, for example, | ||||
| refer to a sub-layer used to adapt the ROHC implementation | ||||
| and the physical link layer. This layer is assumed to have | ||||
| knowledge of the physical layer synchronization. | ||||
| Compressing side | ||||
| "Compressing side" refers to the combination of the header | ||||
| compressor, operating with the LLA profile, and its associated | ||||
| assisting layer. | ||||
| Lower layers | ||||
| "Lower layers" in this document refers to entities located below | ||||
| ROHC in the protocol stack, including the assisting layer. | ||||
| ROHC RTP | ||||
| "ROHC RTP" in this document refers to the IP/UDP/RTP profile | ||||
| (profile #1) as defined in [ROHC]. | ||||
| 3. Overview of the link-layer assisted profile | ||||
| This ROHC IP/UDP/RTP profile is designed to be used over channels | ||||
| that have been optimized for specific payload sizes and therefore | ||||
| cannot efficiently accommodate header information when transmitted | ||||
| together with payloads corresponding to these optimal sizes. | ||||
| The LLA profile extends, and thus also inherits all functionality | ||||
| from, the ROCH RTP profile by defining some additional functionality | ||||
| and an interface from the ROHC component towards an assisting lower | ||||
| layer. | ||||
| +---------------------------------------+ | ||||
| | | | ||||
| The LLA ROHC | ROHC RTP, | | ||||
| profile | Profile #1 +-----------------+ | ||||
| | | LLA Additions | | ||||
| +---------------------+-----------------+ | ||||
| By imposing additional requirements on the lower layers compared to | ||||
| [ROHC], it is possible to infer the information needed to maintain | ||||
| robust and transparent header compression even though the headers are | ||||
| completely eliminated during most of the operation time. | ||||
| Basically, what this profile does is to replace the smallest and most | ||||
| frequent ROHC headers (PT0, 1 octet) with a no-header format by | ||||
| providing the header functionality by other means. | ||||
| Smallest header in Smallest header in | ||||
| ROHC RTP (profile #1) LLA ROHC RTP profile | ||||
| +--+--+--+--+--+--+--+--+ ++ | ||||
| : 1 octet : -----> || No Header | ||||
| +--+--+--+--+--+--+--+--+ ++ | ||||
| | | ||||
| | Header field functionality | ||||
| +-------------------> provided by other means | ||||
| The fields present in the ROHC RTP headers for PT0 are the packet | ||||
| type identifier, the sequence number and the CRC (not present in PT | ||||
| R-0). The subsequent sections elaborate more on the replacement of | ||||
| the functionality of these fields. | ||||
| 3.1. Providing packet type identification | ||||
| All ROHC headers carry a packet type identifier, indicating to the | ||||
| decompressor how the header should be interpreted. This is a function | ||||
| that must be provided by some means in 0-byte header compression. | ||||
| ROHC RTP packets with compressed headers will be possible to | ||||
| distinguish thanks to the packet type identifier, but a mechanism is | ||||
| needed to separate packets with a header from packets without a | ||||
| header. This function MUST therefore be provided by the assisting | ||||
| layer in one way or another. | ||||
| 3.2. Replacing the sequence number | ||||
| From the sending application, the RTP sequence number is increased by | ||||
| one for each packet sent. The purpose of the sequence number is to | ||||
| cope with packet reordering and packet loss. If reordering or loss | ||||
| has occurred before the compression point, if needed the compressing | ||||
| side can easily avoid problems by not allowing the use of a header- | ||||
| free packet. | ||||
| However, the compressor cannot anticipate loss or reordering that may | ||||
| occur between compressor and decompressor. Therefore, the assisting | ||||
| layer MUST guarantee in-order delivery (already assumed by [ROHC]) | ||||
| and it MUST provide an indication for each packet loss over the link. | ||||
| This is basically the same principle as VJ header compression [VJHC] | ||||
| relies on. | ||||
| Note that guaranteeing in-order delivery and packet loss indication | ||||
| between compressor and decompressor not only makes it possible to | ||||
| infer the sequence number information, but also supersedes the main | ||||
| function of the CRC, which normally takes care of errors due to long | ||||
| losses and bit errors in the compressed sequence number. | ||||
| 3.3. CRC replacement | ||||
| All context updating RRP packets carry a CRC calculated over the | ||||
| uncompressed header. The CRC is used by the decompressor to verify | ||||
| that the updated context is correct. This verification serves three | ||||
| purposes: | ||||
| 1) Detection of longer losses than can be covered by the sequence | ||||
| number LSBs (this applies to U/O-mode only) | ||||
| 2) Protection against failures caused by residual bit errors in | ||||
| compressed headers | ||||
| 3) Protection against faulty implementations and other causes of | ||||
| error | ||||
| Since this profile defines an NHP packet without this CRC, care must | ||||
| be taken to fulfill these purposes by other means, when an NHP is | ||||
| used as a replacement for a context updating packet. Detection of | ||||
| long losses (1) is already covered since the assisting layer MUST | ||||
| provide indication of all packet losses. Furthermore, the NHP packet | ||||
| has one important advantage over RHP packets in that residual bit | ||||
| errors (2) cannot damage a header that is not even sent. | ||||
| It is thus reasonable to assume that compression and decompression | ||||
| transparency can be assured with high confidence even without a CRC | ||||
| in header-free packets. However, to provide additional protection | ||||
| against damage propagation due to undetected residual bit errors in | ||||
| context updating packets (2) or other unexpected errors (3), | ||||
| periodic context verifications SHOULD be performed (see section 4.7). | ||||
| 3.4. Applicability of this profile | ||||
| The LLA profile can be used with any link technology capable of | ||||
| providing the required functionality described in previous sections. | ||||
| Whether LLA ROHC RTP or ROHC RTP should be implemented thus depends | ||||
| on the characteristics of the link itself. For most RTP packet | ||||
| streams, LLA will work exactly as ROHC RTP, while it will be more | ||||
| efficient for packet streams with certain characteristics. LLA will | ||||
| never be less efficient than ROHC RTP. | ||||
| Note as well that LLA, like all other ROHC profiles, is fully | ||||
| transparent to any packet stream reaching the compressor. LLA does | ||||
| not make any assumptions about the packet stream but will perform | ||||
| optimally for packet streams with certain characteristics, e.g. | ||||
| synchronized streams exactly timed with the assisting link over which | ||||
| the LLA profile is implemented. | ||||
| The LLA profile is obviously not applicable if the UDP checksum (2 | ||||
| bytes) is enabled, which is always the case for UDP/IPv6. For | ||||
| UDP/IPv4, the sender may choose to disable the UDP checksum. | ||||
| 4. Additions and exceptions compared to ROHC RTP | ||||
| 4.1. Additional packet types | ||||
| The LLA profile defines three new packet types to be used in addition | ||||
| to the RRP packet types defined by [ROHC]. The following sections | ||||
| describe these packet types and their purpose in detail. | ||||
| 4.1.1. No-Header Packet (NHP) | ||||
| A No-Header Packet (NHP), i.e. a packet consisting only of a payload, | ||||
| is defined and MAY be used instead of ROHC RTP packet type 0 (PT0) | ||||
| with one-octet header. Note that the requirement for using PT0 in the | ||||
| first place is basically that all header fields must be unchanged or | ||||
| follow the currently established change pattern. In addition, there | ||||
| are some considerations for the use of the NHP (see 4.3, 4.4, 4.6 and | ||||
| 4.7). The context updating properties of NHP packets are the same as | ||||
| for corresponding PT0 packets and depend on the mode of operation. | ||||
| The assisting layer MAY send the NHP for RTP SN = X only if an NHP | ||||
| was delivered by the LLA compressor AND the assisting layer can | ||||
| guarantee that the decompressor will infer the proper sequencing for | ||||
| this NHP. This guarantee is based on the confidence that the | ||||
| decompressor | ||||
| a) has the means to infer proper sequencing for the packet | ||||
| corresponding to SN = X-1, AND | ||||
| b) has either received a loss indication or the packet itself for the | ||||
| packet corresponding to SN = X-1. | ||||
| 4.1.2. Context Synchronization Packet (CSP) | ||||
| The case where the packet stream overruns the channel bandwidth may | ||||
| lead to data being discarded, which may result in decompressor | ||||
| context invalidation. It might therefore be beneficial to send a | ||||
| packet with only the header information and discard the payload. This | ||||
| would be helpful to maintain synchronization of the decompressor | ||||
| context, while efficiently using the available bandwidth. | ||||
| This case can be handled with the Context Synchronization Packet | ||||
| (CSP), which has the following format: | ||||
| 0 1 2 3 4 5 6 7 | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| | 1 1 1 1 1 0 1 0 | Packet type identifier | ||||
| +===+===+===+===+===+===+===+===+ | ||||
| : ROHC header without padding : | ||||
| : see [ROHC, section 5.7] : | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| The CSP is defined by one of the unused packet type identifiers from | ||||
| ROHC RTP, carried in the one-octet base header. As for any ROHC | ||||
| packet, except the NHP, the packet may begin with ROHC padding and/or | ||||
| feedback. It may also carry context identification after the packet | ||||
| type identifier. It is possible to have two CID fields present, one | ||||
| after the packet type ID and one within the encapsulated ROHC header. | ||||
| If a decompressor receives a CSP with two non-equal CID values | ||||
| included, the packet MUST be discarded. ROHC segmentation may also be | ||||
| applied to the CSP. | ||||
| Note that when the decompressor has received and processed a CSP, the | ||||
| packet (including any possible data following the CSP encapsulated | ||||
| compressed header) MUST be discarded. | ||||
| 4.1.3. Context Check Packet (CCP) | ||||
| A Context Check Packet (CCP), which does not carry any payload but | ||||
| only an optional CRC value in addition to the packet type identifier, | ||||
| is defined. | ||||
| The purpose of the CCP is to provide a useful packet that MAY be sent | ||||
| by a synchronized physical link layer in the case where data must be | ||||
| sent at fixed intervals, even if no compressed packet is available. | ||||
| Whether the CCP is sent over the link and delivered to the | ||||
| decompressor is decided by the assisting layer. The CCP has the | ||||
| following format: | ||||
| 0 1 2 3 4 5 6 7 | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| | 1 1 1 1 1 0 1 1 | Packet type identifier | ||||
| +===+===+===+===+===+===+===+===+ | ||||
| | C | CRC | | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| C: C = 0 indicates that the CRC field is not used; | ||||
| C = 1 indicates that a valid CRC is present. | ||||
| The CCP is defined by one of the unused packet type identifiers from | ||||
| ROHC RTP, carried in the first octet of the base header. The first | ||||
| bit of the second octet, the C bit, indicates whether the CRC field | ||||
| is used or not. If C=1, the CRC field MUST be set to the 7-bits CRC | ||||
| calculated over the original uncompressed header defined in [ROHC | ||||
| section 5.9.2]. As for any ROHC packet, except NHP, the packet MAY | ||||
| begin with ROHC padding and/or carry context identification. | ||||
| The use of the CRC field to perform decompressor context verification | ||||
| is optional and is therefore a compressor implementation issue. | ||||
| However, a CCP MUST always be made available to the assisting layer. | ||||
| If the assisting layer receives CCPs with the C-bit set (C=1) from | ||||
| the compressor, it MUST use the last CCP received if a CCP is to be | ||||
| sent, i.e. the CCP corresponding to the last non-CCP packet sent | ||||
| (NHP, RRP or CSP). An assisting layer MAY use the CCP for other | ||||
| purposes, such as signaling a packet loss before the link. | ||||
| The decompressor is REQUIRED to handle a CCP received with the C bit | ||||
| set (C=1), indicating a valid CRC field, and perform context | ||||
| verification. The received CRC MUST then be applied to the last | ||||
| decompressed packet, unless a packet loss indication was previously | ||||
| received. Upon CRC failure, actions MUST be taken as specified in | ||||
| [ROHC, section 5.3.2.2.3]. A CCP received with C=0 MUST be ignored by | ||||
| the decompressor. The decompressor is not allowed to make any further | ||||
| interpretation of the CCP. | ||||
| The use of CCP by an assisting layer is optional and depends on the | ||||
| characteristics of the actual link. Whether it is used or not MUST | ||||
| therefore be specified in link layer implementation specifications | ||||
| for this profile. | ||||
| 4.2. Interfaces towards the assisting layer | ||||
| This profile relies on the lower layers to provide the necessary | ||||
| functionality to allow NHP packets to be sent. This interaction | ||||
| between LLA and the assisting layer is defined as interfaces between | ||||
| the ROHC LLA compressor/decompressor and the LLA applicable link | ||||
| technology. | ||||
| | | | ||||
| + + | ||||
| +-------------------------+ +-------------------------+ | ||||
| | ROHC RTP HC | | ROHC RTP HD | | ||||
| +-------------------------+ +-------------------------+ | ||||
| | LLA profile | | LLA profile | | ||||
| +=========================+ +=========================+ | ||||
| | Interface | | Interface | | ||||
| | ROHC to assisting layer | | Assisting layer to ROHC | | ||||
| +=========================+ +=========================+ | ||||
| | Applicable | | Applicable | | ||||
| | link technology | | link technology | | ||||
| +=========================+ +=========================+ | ||||
| | | | ||||
| +------>---- CHANNEL ---->-----+ | ||||
| The figure above shows the various levels, as defined in [ROHC] and | ||||
| this document, constituting a complete implementation of the LLA | ||||
| profile. The figure also underlines the need for additional documents | ||||
| to specify how to implement these interfaces for a link technology | ||||
| for which this profile is relevant. | ||||
| This section defines the information to be exchanged between the LLA | ||||
| compressor and the assisting layer for this profile to operate | ||||
| properly. While it does define semantics, it does not specify how | ||||
| these interfaces are to be implemented. | ||||
| 4.2.1. Interface, compressor to assisting layer | ||||
| This section defines the interface semantics between the compressor | ||||
| and the assisting layer, providing rules for packet delivery from the | ||||
| compressor. | ||||
| The interface defines the following parameters: RRP, RRP segmentation | ||||
| flag, CSP, CSP segmentation flag, NHP and RTP Sequence Number. All | ||||
| parameters, except the NHP, MUST always be delivered to the assisting | ||||
| layer. This leads to two possible delivery scenarios: | ||||
| a. RRP, CSP, CCP, NHP and RTP Sequence Number are delivered, along | ||||
| with the corresponding segmentation flags set accordingly. | ||||
| This corresponds to the case when the compressor allows sending of | ||||
| an NHP packet, with or without segmentation being applied to the | ||||
| corresponding RRP/CSP packets. | ||||
| Recall that delivery of an NHP packet occurs when the ROHC RTP | ||||
| compressor would have used a ROHC PT0. | ||||
| b. RRP, CSP, CCP and RTP Sequence Number are delivered, along with | ||||
| the corresponding segmentation flags set accordingly. | ||||
| This corresponds to the case when the compressor does not allow | ||||
| sending of an NHP packet. Segmentation might be applied to the | ||||
| corresponding RRP and CSP packets. | ||||
| Segmentation may be applied independently to an RRP or a CSP packet | ||||
| if its size exceeds the largest value provided in the PREFERRED | ||||
| PACKET_SIZES list and if the LARGE_PACKET_ALLOWED parameter is set to | ||||
| false. The segmentation flags are explicitly stated in the interface | ||||
| definition to emphasize that the RRP and the CSP may be delivered by | ||||
| the compressor as segmented packets. | ||||
| The RTP SN MUST be delivered for each packet by the compressor to | ||||
| allow the assisting layer to maintain the necessary sequencing | ||||
| information. | ||||
| 4.2.2. Interface, assisting layer to decompressor | ||||
| Here the interface semantics between the assisting layer and the | ||||
| decompressor are defined, providing simple rules for the delivery of | ||||
| received packets to the decompressor. The decompressor needs a way to | ||||
| distinguish NHP packets from RHP packets. Also, when receiving | ||||
| packets without a header, the decompressor needs a way to infer the | ||||
| sequencing information to keep synchronization between the received | ||||
| payload and the sequence information of the decompressed headers. To | ||||
| achieve this, the assisting layer MUST provide the following to the | ||||
| decompressor: | ||||
| - an indication for each packet loss between compressor and | ||||
| decompressor for CID=0 | ||||
| - the received packet together with an indication whether the packet | ||||
| received is an NHP or not | ||||
| Note that in U/O-mode the context is updated from a packet loss | ||||
| indication. | ||||
| 4.3. Optimistic approach agreement (U/O-mode) | ||||
| ROHC defines an optimistic approach for updates to reduce the header | ||||
| overhead. This approach is fully exploited in the Optimistic and | ||||
| Unidirectional modes of operation. Due to the presence of a CRC in | ||||
| all compressed headers, the optimistic approach is defined as a | ||||
| compressor issue only because the decompressor will always be able to | ||||
| detect an invalid context through the CRC verification. | ||||
| However, no CRC is present in the NHP packet defined by the LLA | ||||
| profile. Therefore the loss of an RHP packet updating the context may | ||||
| not always be detected. To avoid this problem, the compressing and | ||||
| decompressing sides must agree on the principles for the optimistic | ||||
| approach. If, for example, three consecutive updates are sent to | ||||
| convey a header field change, the decompressor must know this and | ||||
| invalidate the context in case of three or more consecutive physical | ||||
| packet losses. | ||||
| When operating in U/O-mode, an LLA decompressor MUST use the | ||||
| optimistic approach knowledge to detect possible context loss events. | ||||
| If context loss is suspected it MUST invalidate the context and not | ||||
| forward any packets before the context has been synchronized. | ||||
| It is REQUIRED that all documents describing how the LLA profile is | ||||
| implemented over a certain link technology define how the optimistic | ||||
| approach is agreed between compressor and decompressor. It could be | ||||
| handled with a fixed principle, negotiation at startup, or by other | ||||
| means, but the method must be unambiguously defined. | ||||
| 4.4. Specific notes on reliable mode | ||||
| For the R-mode, this profile extends ROHC RTP by performing a mapping | ||||
| of the R-0 packet to the NHP packet. | ||||
| R-mode relies on the secure reference principle [ROHC, section 5.5] | ||||
| which states that only packets carrying a 7- or 8-bit CRC can update | ||||
| the context and be used for decompression of subsequent packets. As | ||||
| no CRC field is present in the one-octet packet for R-mode (i.e. R- | ||||
| 0), only the function related to the RTP SN needs to be replaced. | ||||
| Consequently, the secure reference principle is not affected in any | ||||
| way by this mapping, and there is no loss of robustness in the LLA | ||||
| profile compared to [ROHC]. | ||||
| As opposed to U/O-mode, NHP packets in R-mode do not update either | ||||
| the compressor or the decompressor context. Specifically, RTP SN | ||||
| reference values in the compressor context are not updated by NHP | ||||
| packets. This follows naturally from the updating properties of R-0 | ||||
| packets [ROHC, section 5.7]. | ||||
| It cannot be assumed that packets will necessarily be transmitted in | ||||
| sequence (following the RTP sequencing) over the link, due to loss | ||||
| and/or reordering before the link. As a consequence, the compressor | ||||
| delivers an NHP if the use of R-0 would normally be allowed. When | ||||
| using R-0-CRC, the compressing side is not allowed to start sending | ||||
| NHP packets before an acknowledgement of the R-0-CRC has been | ||||
| received from the decompressor, with an exception for the case when | ||||
| an R-0-CRC is sent instead of an NHP during a monotonic sequence. | ||||
| An NHP packet is decompressed in the same way as the R-0, with the | ||||
| exception that the RTP SN field is decompressed using the NHP | ||||
| sequencing information derived from the interface and maintained as | ||||
| sequencing state. This state is defined as the sum of the number of | ||||
| packets indicated as lost by the assisting layer and the number of | ||||
| non-context-updating packets received by the decompressor since the | ||||
| last context update. | ||||
| 4.5. Fast context initialization, IR redefinition | ||||
| As initial IR packets might overrun the channel bandwidth and | ||||
| significantly delay decompressor context establishment, it might be | ||||
| beneficial to initially discard the payload. This allows state | ||||
| transitions and higher compression efficiency to be achieved with | ||||
| minimal delay. | ||||
| To serve this purpose, the D-bit from the basic structure of the ROHC | ||||
| RTP IR packet [ROHC section 5.7.7.1] is redefined for the LLA | ||||
| profile. For D=0 (no dynamic chain), the meaning of the D-bit is | ||||
| extended to indicate that the payload has been discarded when | ||||
| assembling the IR packet. All other fields keep their meanings as | ||||
| defined for ROHC RTP. | ||||
| The resulting structure, using small CIDs and CID=0, becomes: | ||||
| 0 1 2 3 4 5 6 7 | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| | 1 | 1 | 1 | 1 | 1 | 1 | 0 | D | | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| | Profile | 1 octet | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| | CRC | 1 octet | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| | Static | variable length | ||||
| | chain | | ||||
| - - - - - - - - - - - - - - - - | ||||
| | Dynamic | not present if D = 0 | ||||
| | chain | present if D = 1, variable length | ||||
| - - - - - - - - - - - - - - - - | ||||
| | Payload | not present if D = 0 | ||||
| | | present if D = 1, variable length | ||||
| - - - - - - - - - - - - - - - - | ||||
| D: D = 0 indicates that the dynamic chain is not present | ||||
| and the payload has been discarded. | ||||
| After an IR packet with D=0 has been processed by the decompressor, | ||||
| the packet MUST be discarded. | ||||
| 4.6. Feedback option, CV-REQUEST | ||||
| The CV-REQUEST option MAY be used by the decompressor to request an | ||||
| RRP or CSP for context verification. This option should be used if | ||||
| only NHP have been received for a long time and the context therefore | ||||
| has not been verified recently. If the compressor receives a feedback | ||||
| packet with this option, the next packet compressed SHOULD NOT be | ||||
| delivered to the assisting layer as an NHP. | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| | Opt Type = 8 | Opt Len = 0 | | ||||
| +---+---+---+---+---+---+---+---+ | ||||
| 4.7. Periodic context verification | ||||
| As described in section 3.3, transparency is expected to be | ||||
| guaranteed by the functionality provided by the lower layers. This | ||||
| ROHC profile would therefore be at least as reliable as the older | ||||
| header compression schemes [VJHC, IPHC, CRTP], which do not make use | ||||
| of a header compression CRC. However, since ROHC RTP normally is | ||||
| extremely safe to use from a transparency point of view, it would be | ||||
| desirable to be able to achieve this with LLA also. | ||||
| To provide an additional guarantee for transparency and also catch | ||||
| unexpected errors, such as errors due to faulty implementations, it | ||||
| is RECOMMENDED to periodically send context updating packets, even | ||||
| when the compressor logic allows NHP packets to be used. | ||||
| 4.8. Use of context identifier | ||||
| Since an NHP cannot carry a context identifier (CID), there is a | ||||
| restriction on how this profile may be used, related to context | ||||
| identification. Independent of which CID size has been negotiated, | ||||
| NHP packets can only be used for CID=0. If the decompressor receives | ||||
| an NHP packet, it can only belong to CID=0. | ||||
| Note that if multiple packet streams are handled by a compressor | ||||
| operating using LLA, the assisting layer must in case of packet loss | ||||
| be able to tell for which CID the loss occurred, or at least it MUST | ||||
| be able to tell if packets with CID=0 (packet stream with NHPs) have | ||||
| been lost. | ||||
| 5. Implementation Issues | ||||
| This document specifies mechanisms for the protocol and leaves | ||||
| details on the use of these mechanisms to the implementers. The | ||||
| present chapter aims to provide guidelines, ideas and suggestions for | ||||
| implementation of LLA. | ||||
| 5.1. Implementation parameters and signals | ||||
| As described in [ROHC, section 6.3], implementations use parameters | ||||
| to set up configuration information and to stipulate how a ROHC | ||||
| implementation is to operate. The following parameters are additions, | ||||
| required by LLA, to the parameter set defined for ROHC RTP | ||||
| implementations. Note that if the PREFERRED_PACKET_SIZES parameters | ||||
| defined here are used, they obsolete all PACKET_SIZE and PAYLOAD_SIZE | ||||
| parameters of ROHC RTP. | ||||
| 5.1.1. Implementation parameters at the compressor | ||||
| ALWAYS_PAD -- value: boolean | ||||
| This parameter may be set by an external entity to specify to the | ||||
| compressor that every RHP packet MUST be padded with a minimum of | ||||
| one octet ROHC padding. | ||||
| The assisting layer MUST provide a packet type identification. If | ||||
| no field is available for this purpose from the protocol at the | ||||
| link layer, then a leading sequence may be used to distinguish | ||||
| RHP packets from NHP packets. Although the use of a leading | ||||
| sequence is obviously not efficient, since it sacrifices | ||||
| efficiency for RHP packets, the efficiency loss should be | ||||
| insignificant because the leading sequence applies only to | ||||
| packets with headers in order to favor the use of packets without | ||||
| headers. If a leading sequence is desired for RHP identification, | ||||
| the lower layer MAY use ROHC padding for the leading sequence by | ||||
| setting the ALWAYS_PAD parameter. | ||||
| By default, this parameter is set to FALSE. | ||||
| PREFERRED PACKET SIZES -- list of: SIZE -- value: integer (octets) | ||||
| ONLY_NHP -- value: boolean | ||||
| This parameter set governs which packet sizes are preferred by | ||||
| the assisting layer. If this parameter set is used, all RHP | ||||
| packets MUST be padded to fit the smallest possible preferred | ||||
| size. If the size of the unpadded packet (or, in the case of | ||||
| ALWAYS_PAD being set, the packet with minimal one octet padding) | ||||
| is larger than the maximal preferred packet size, the compressor | ||||
| has two options. Either, it may deliver this larger packet with | ||||
| an arbitrary size, or it may split the packet into several | ||||
| segments using ROHC segmentation and pad each segment to one of | ||||
| the preferred sizes. Which method to use depends on the value of | ||||
| the LARGE_PACKETS_ALLOWED parameter below. | ||||
| NHP packets can be delivered to the lower layer only if the | ||||
| payload size is part of the preferred packet size set. | ||||
| Furthermore, if ONLY_NHP is set to TRUE for any of the preferred | ||||
| packet sizes, that size is allowed only for NHP packets. | ||||
| By default, no preferred packet sizes are specified. When sizes | ||||
| are specified, the default value for ONLY_NHP is FALSE. | ||||
| LARGE_PACKETS_ALLOWED -- value: boolean | ||||
| This parameter may be set by an external entity to specify how to | ||||
| handle packets that do not fit any of the preferred packet sizes | ||||
| specified. If it is set to TRUE, the compressor MUST deliver the | ||||
| larger packet as-is and MUST NOT use segmentation. If it is set | ||||
| to FALSE, the ROHC segmentation scheme MUST be used to split the | ||||
| packet into two or more segments, and each segment MUST further | ||||
| be padded to fit one of the preferred packet sizes. | ||||
| By default, this parameter is set to TRUE, which means that | ||||
| segmentation is disabled. | ||||
| VERIFICATION_PERIOD -- value: integer (octets) | ||||
| This parameter may be set by an external entity to specify to the | ||||
| compressor the minimum frequency with which a packet validating | ||||
| the context must be sent. This tells the compressor that a packet | ||||
| containing a CRC field MUST be sent at least once every N | ||||
| packets, where N=VERIFICATION_PERIOD (see section 4.7). | ||||
| By default, this parameter is set to 0, which indicates that | ||||
| periodical verifications are disabled. | ||||
| 5.1.2. Implementation parameters at the decompressor | ||||
| NHP_PACKET -- value: boolean | ||||
| This parameter informs the decompressor that the packet being | ||||
| delivered is an NHP packet. The decompressor MUST accept this | ||||
| packet type indicator from the lower layer. An assisting layer | ||||
| MUST set this indicator to true for every NHP packet delivered, | ||||
| and to false for any other packet. | ||||
| PHYSICAL_PACKET_LOSS -- signal | ||||
| This signal indicates to the decompressor that a packet has been | ||||
| lost on the link between the compressor and the decompressor, due | ||||
| to a physical link error. The signal is given once for each | ||||
| packet that was lost, and a decompressor must increase the | ||||
| sequence number accordingly when this signal is received. | ||||
| PRE_HC_PACKET_LOSS -- signal | ||||
| This signal tells the decompressor to increase the sequence | ||||
| number due to a gap in the sequencing, not related to a physical | ||||
| link error. A receiving assisting layer may for example use this | ||||
| signal to indicate to the decompressor that a packet was lost | ||||
| before the compressor, or that a packet was discarded by the | ||||
| transmitting assisting layer. | ||||
| 5.2. Implementation over various link technologies | ||||
| This document provides the semantics and requirements of the | ||||
| interface needed from the ROHC compressor and decompressor towards | ||||
| the assisting layer to perform link-layer assisted header | ||||
| compression. | ||||
| However, the document does not provide any link layer specific | ||||
| operational information, except for some implementation suggestions. | ||||
| Further details about how this profile is to be implemented over | ||||
| various link technologies must be described in other documents, where | ||||
| specific characteristics of each link layer can be taken into account | ||||
| to provide optimal usage of this profile. | ||||
| These specifications MAY use a packet type bit pattern unused by this | ||||
| profile to implement signaling on the lower layer. The pattern | ||||
| available to lower layer implementations is [11111001]. | ||||
| 6. IANA considerations | ||||
| A ROHC profile identifier must be reserved by the IANA for the | ||||
| IP/UDP/RTP profile defined in this document. Since this additional | ||||
| profile will be used concurrently with the ROHC IP/UDP/RTP profile in | ||||
| [ROHC] and is part of the IETF standards track, an ordinary | ||||
| identifier in the range from 4 to 127 should be reserved. | ||||
| 7. Security considerations | ||||
| The security considerations of ROHC RTP [ROHC section 7] apply also | ||||
| to this document with one addition: in the case of a denial-of- | ||||
| service attack scenario where an intruder injects bogus CCP packets | ||||
| onto the link using random CRC values, the CRC check will fail for | ||||
| incorrect reasons at the decompressor side. This would obviously | ||||
| greatly reduce the advantages of ROHC and any extra efficiency | ||||
| provided by this profile due to unnecessary context invalidation, | ||||
| feedback messages and refresh packets. However, the same remarks | ||||
| related to the presence of such an intruder apply. | ||||
| 8. Acknowledgements | ||||
| The authors would like to thank Ulises Olvera-Hernandez and Francis | ||||
| Lupien for inputs about the typical links that LLA can be applied to. | ||||
| Thanks also to Mikael Degermark for fruitful discussions that led to | ||||
| improvements of this profile, and to Zhigang Liu for valuable inputs | ||||
| especially regarding R-mode operation. | ||||
| 9. References | ||||
| [ROHC] Bormann, C., et. al., "Robust Header Compression | ||||
| (ROHC)", RFC 3095, July 2001. | ||||
| [IPv4] Postel, J., "Internet Protocol", STD 5, RFC 791, | ||||
| September 1981. | ||||
| [IPv6] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | ||||
| (IPv6) Specification", RFC 2460, December 1998. | ||||
| [UDP] Postel, J., "User Datagram Protocol", STD 6, RFC 768, | ||||
| August 1980. | ||||
| [RTP] Schulzrinne, H., Casner S., Frederick R. and V. | ||||
| Jacobson, "RTP: A Transport Protocol for Real-Time | ||||
| Applications", RFC 1889, January 1996. | ||||
| [TCP] Postel, P., "Transmission Control Protocol", RFC 793, | ||||
| September 1981. | ||||
| [RTP-REQ] Degermark, M., "Requirements for IP/UDP/RTP Header | ||||
| Compression", RFC 3096, July 2001. | ||||
| [0B-REQ] Jonsson, L-E., "Requirements and Assumptions for ROHC 0- | ||||
| byte Header Compression", Internet Draft, work in | ||||
| progress, August 2001. | ||||
| <draft-ietf-rohc-rtp-0-byte-requirements-01.txt | ||||
| [VJHC] Jacobson, V., "Compressing TCP/IP Headers for Low-Speed | ||||
| Serial Links", RFC 1144, February 1990. | ||||
| [IPHC] Degermark, M., Nordgren, B. and S. Pink, "IP Header | ||||
| Compression", RFC 2507, February 1999. | ||||
| [CRTP] Casner, S. and V. Jacobson, "Compressing IP/UDP/RTP | ||||
| Headers for Low-Speed Serial Links", RFC 2508, February | ||||
| 1999. | ||||
| [CRTPC] Degermark, M., Hannu, H., Jonsson, L-E. and K. Svanbro, | Title: RObust Header Compression (ROHC): | |||
| "Evaluation of CRTP Performance over Cellular Radio | A Link-Layer Assisted Profile for IP/UDP/RTP | |||
| Networks", IEEE Personal Communications Magazine, Volume | Author(s): L-E. Jonsson, G. Pelletier | |||
| 7, number 4, pp. 20-25, August 2000. | Status: Standards Track | |||
| Date: April 2002 | ||||
| Mailbox: lars-erik.jonsson@ericsson.com, | ||||
| ghyslain.pelletier@epl.ericsson.se | ||||
| Pages: 21 | ||||
| Characters: 49007 | ||||
| Updates/Obsoletes/SeeAlso: None | ||||
| [VTC2000] Svanbro, K., Hannu, H., Jonsson, L-E. and M. Degermark, | I-D Tag: draft-ietf-rohc-rtp-lla-03.txt | |||
| "Wireless real time IP-services enabled by header | ||||
| compression", proceedings of IEEE VTC2000, May 2000. | ||||
| [MOMUC01] Liu, G., et al., "Experimental field trials results of | URL: ftp://ftp.rfc-editor.org/in-notes/rfc3242.txt | |||
| Voice-over IP over WCDMA links", MoMuC'01 - The | ||||
| International Workshop on Mobile Multimedia | ||||
| Communications, Conference proceedings, February 2001. | ||||
| 10. Authors' addresses | This document defines a ROHC (Robust Header Compression) profile for | |||
| compression of IP/UDP/RTP (Internet Protocol/User Datagram | ||||
| Protocol/Real-Time Transport Protocol) packets, utilizing | ||||
| functionality provided by the lower layers to increase compression | ||||
| efficiency by completely eliminating the header for most packets | ||||
| during optimal operation. The profile is built as an extension to the | ||||
| ROHC RTP profile. It defines additional mechanisms needed in ROHC, | ||||
| states requirements on the assisting layer to guarantee transparency, | ||||
| and specifies general logic for compression and decompression making | ||||
| use of this header-free packet. | ||||
| Lars-Erik Jonsson Tel: +46 920 20 21 07 | This document is a product of the Robust Header Compression Working | |||
| Ericsson Erisoft AB Fax: +46 920 20 20 99 | Group of the IETF. | |||
| Box 920 | ||||
| SE-971 28 Lulea | ||||
| Sweden E-mail: lars-erik.jonsson@ericsson.com | ||||
| Ghyslain Pelletier Tel: +46 920 20 24 32 | This is now a Proposed Standard Protocol. | |||
| Ericsson Erisoft AB Fax: +46 920 20 20 99 | ||||
| Box 920 | ||||
| SE-971 28 Lulea | ||||
| Sweden E-mail: ghyslain.pelletier@epl.ericsson.se | ||||
| Full copyright statement | This document specifies an Internet standards track protocol for the | |||
| Internet community, and requests discussion and suggestions for | ||||
| improvements. Please refer to the current edition of the "Internet | ||||
| Official Protocol Standards" (STD 1) for the standardization state | ||||
| and status of this protocol. Distribution of this memo is unlimited. | ||||
| Copyright (C) The Internet Society (2001). All Rights Reserved. | This announcement is sent to the IETF list and the RFC-DIST list. | |||
| Requests to be added to or deleted from the IETF distribution list | ||||
| should be sent to IETF-REQUEST@IETF.ORG. Requests to be | ||||
| added to or deleted from the RFC-DIST distribution list should | ||||
| be sent to RFC-DIST-REQUEST@RFC-EDITOR.ORG. | ||||
| This document and translations of it may be copied and furnished to | Details on obtaining RFCs via FTP or EMAIL may be obtained by sending | |||
| others, and derivative works that comment on or otherwise explain it | an EMAIL message to rfc-info@RFC-EDITOR.ORG with the message body | |||
| or assist in its implementation may be prepared, copied, published | help: ways_to_get_rfcs. For example: | |||
| and distributed, in whole or in part, without restriction of any | ||||
| kind, provided that the above copyright notice and this paragraph are | ||||
| included on all such copies and derivative works. However, this | ||||
| document itself may not be modified in any way, such as by removing | ||||
| the copyright notice or references to the Internet Society or other | ||||
| Internet organizations, except as needed for the purpose of | ||||
| developing Internet standards in which case the procedures for | ||||
| copyrights defined in the Internet Standards process must be | ||||
| followed, or as required to translate it into languages other than | ||||
| English. | ||||
| The limited permissions granted above are perpetual and will not be | To: rfc-info@RFC-EDITOR.ORG | |||
| revoked by the Internet Society or its successors or assigns. | Subject: getting rfcs | |||
| This document and the information contained herein is provided on an | help: ways_to_get_rfcs | |||
| "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | ||||
| TASK FORCE DISCLAIMS 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. | ||||
| This Internet-Draft expires March 12, 2002. | Requests for special distribution should be addressed to either the | |||
| author of the RFC in question, or to RFC-Manager@RFC-EDITOR.ORG. Unless | ||||
| specifically noted otherwise on the RFC itself, all RFCs are for | ||||
| unlimited distribution.echo | ||||
| Submissions for Requests for Comments should be sent to | ||||
| RFC-EDITOR@RFC-EDITOR.ORG. Please consult RFC 2223, Instructions to RFC | ||||
| Authors, for further information. | ||||
| End of changes. 14 change blocks. | ||||
| 953 lines changed or deleted | 43 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/ | ||||