From 4bfd864f10b68b71482b35c818559068ef8d5797 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 27 Nov 2024 20:54:24 +0100 Subject: doc: Add RFC documents --- doc/rfc/rfc3545.txt | 1235 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1235 insertions(+) create mode 100644 doc/rfc/rfc3545.txt (limited to 'doc/rfc/rfc3545.txt') diff --git a/doc/rfc/rfc3545.txt b/doc/rfc/rfc3545.txt new file mode 100644 index 0000000..91df50b --- /dev/null +++ b/doc/rfc/rfc3545.txt @@ -0,0 +1,1235 @@ + + + + + + +Network Working Group T. Koren +Request for Comments: 3545 Cisco Systems +Category: Standards Track S. Casner + Packet Design + J. Geevarghese + Motorola India Electronics Ltd. + B. Thompson + P. Ruddy + Cisco Systems + July 2003 + + + Enhanced Compressed RTP (CRTP) for Links with High Delay, + Packet Loss and Reordering + +Status of this Memo + + 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 Notice + + Copyright (C) The Internet Society (2003). All Rights Reserved. + +Abstract + + This document describes a header compression scheme for point to + point links with packet loss and long delays. It is based on + Compressed Real-time Transport Protocol (CRTP), the IP/UDP/RTP header + compression described in RFC 2508. CRTP does not perform well on + such links: packet loss results in context corruption and due to the + long delay, many more packets are discarded before the context is + repaired. To correct the behavior of CRTP over such links, a few + extensions to the protocol are specified here. The extensions aim to + reduce context corruption by changing the way the compressor updates + the context at the decompressor: updates are repeated and include + updates to full and differential context parameters. With these + extensions, CRTP performs well over links with packet loss, packet + reordering and long delays. + + + + + + + + + +Koren, et al. Standards Track [Page 1] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + +Table of Contents + + 1. Introduction ................................................. 2 + 1.1. CRTP Operation ......................................... 4 + 1.2. How do contexts get corrupted? ......................... 4 + 1.3. Preventing context corruption .......................... 5 + 1.4. Specification of Requirements .......................... 5 + 2. Enhanced CRTP ................................................ 5 + 2.1. Extended COMPRESSED_UDP packet ......................... 6 + 2.2. CRTP Headers Checksum .................................. 11 + 2.3. Achieving robust operation ............................. 13 + 2.3.1. Examples ....................................... 15 + 3. Negotiating usage of enhanced-CRTP ........................... 18 + 4. Security Considerations ...................................... 18 + 5. Acknowledgements ............................................. 19 + 6. References ................................................... 19 + 6.1. Normative References ................................... 19 + 6.2. Informative References ................................. 20 + 7. Intellectual Property Rights Notice .......................... 20 + 8. Authors' Addresses ........................................... 21 + 9. Full Copyright Statement ..................................... 22 + +1. Introduction + + RTP header compression (CRTP) as described in RFC 2508 was designed + to reduce the header overhead of IP/UDP/RTP datagrams by compressing + the three headers. The IP/UDP/RTP headers are compressed to 2-4 + bytes most of the time. + + CRTP was designed for reliable point to point links with short + delays. It does not perform well over links with high rate of packet + loss, packet reordering and long delays. + + An example of such a link is a PPP session that is tunneled using an + IP level tunneling protocol such as L2TP. Packets within the tunnel + are carried by an IP network and hence may get lost and reordered. + The longer the tunnel, the longer the round trip time. + + Another example is an IP network that uses layer 2 technologies such + as ATM and Frame Relay for the access portion of the network. Layer + 2 transport networks such as ATM and Frame Relay behave like point to + point serial links in that they do not reorder packets. In addition, + Frame Relay and ATM virtual circuits used as IP access technologies + often have a low bit rate associated with them. These virtual + circuits differ from low speed serial links in that they may span a + larger physical distance than a point to point serial link. Speed of + light delays within the layer 2 transport network will result in + higher round trip delays between the endpoints of the circuit. In + + + +Koren, et al. Standards Track [Page 2] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + addition, congestion within the layer 2 transport network may result + in an effective drop rate for the virtual circuit which is + significantly higher than error rates typically experienced on point + to point serial links. + + It may be desirable to extend existing CRTP implementations for use + also over IP tunnels and other virtual circuits, where packet losses, + reordering, and long delays are common characteristics. To address + these scenarios, this document defines modifications and extensions + to CRTP to increase robustness to both packet loss and misordering + between the compressor and the decompressor. This is achieved by + repeating updates and allowing the sending of absolute (uncompressed) + values in addition to delta values for selected context parameters. + Although these new mechanisms impose some additional overhead, the + overall compression is still substantial. The enhanced CRTP, as + defined in this document, is thus suitable for many applications in + the scenarios discussed above, e.g., tunneling and other virtual + circuits. + + RFC 3095 defines another RTP header compression scheme called Robust + Header Compression [ROHC]. ROHC was developed with wireless links as + the main target, and introduced new compression mechanisms with the + primary objective to achieve the combination of robustness against + packet loss and maximal compression efficiency. ROHC is expected to + be the preferred compression mechanism over links where compression + efficiency is important. However, ROHC was designed with the same + link assumptions as CRTP, e.g., that the compression scheme should + not have to tolerate misordering of compressed packets between the + compressor and decompressor, which may occur when packets are carried + in an IP tunnel across multiple hops. + + At some time in the future, enhancements may be defined for ROHC to + allow it to perform well in the presence of misordering of compressed + packets. The result might be more efficient than the compression + protocol specified in this document. However, there are many + environments for which the enhanced CRTP defined here may be the + preferred choice. In particular, for those environments where CRTP + is already implemented, the additional effort required to implement + the extensions defined here is expected to be small. There are also + cases where the implementation simplicity of this enhanced CRTP + relative to ROHC is more important than the performance advantages of + ROHC. + + + + + + + + + +Koren, et al. Standards Track [Page 3] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + +1.1. CRTP Operation + + During compression of an RTP stream, a session context is defined. + For each context, the session state is established and shared between + the compressor and the decompressor. Once the context state is + established, compressed packets may be sent. + + The context state consists of the full IP/UDP/RTP headers, a few + first order differential values, a link sequence number, a generation + number and a delta encoding table. + + The headers part of the context is set by the FULL_HEADER packet that + always starts a compression session. The first order differential + values (delta values) are set by sending COMPRESSED_RTP packets that + include updates to the delta values. + + The context state must be synchronized between compressor and + decompressor for successful decompression to take place. If the + context gets out of sync, the decompressor is not able to restore the + compressed headers accurately. The decompressor invalidates the + context and sends a CONTEXT_STATE packet to the compressor indicating + that the context has been corrupted. To resume compression, the + compressor must re-establish the context. + + During the time the context is corrupted, the decompressor discards + all the packets received for that context. Since the context repair + mechanism in CRTP involves feedback from the decompressor, context + repair takes at least as much time as the round trip time of the + link. If the round trip time of the link is long, and especially if + the link bandwidth is high, many packets will be discarded before the + context is repaired. On such links it is desirable to minimize + context invalidation. + +1.2. How do contexts get corrupted? + + As long as the fields in the combined IP/UDP/RTP headers change as + expected for the sequence of packets in a session, those headers can + be compressed, and the decompressor can fully restore the compressed + headers using the context state. When the headers don't change as + expected it's necessary to update some of the full or the delta + values of the context. For example, the RTP timestamp is expected to + increment by delta RTP timestamp (dT). If silence suppression is + used, packets are not sent during silence periods. Then when voice + activity resumes, packets are sent again, but the RTP timestamp is + incremented by a large value and not by dT. In this case an update + must be sent. + + + + + +Koren, et al. Standards Track [Page 4] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + If a packet that includes an update to some context state values is + lost, the state at the decompressor is not updated. The shared state + is now different at the compressor and decompressor. When the next + packet arrives at the decompressor, the decompressor will fail to + restore the compressed headers accurately since the context state at + the decompressor is different than the state at the compressor. + +1.3. Preventing context corruption + + Note that the decompressor fails not when a packet is lost, but when + the next compressed packet arrives. If the next packet happens to + include the same context update as in the lost packet, the context at + the decompressor may be updated successfully and decompression may + continue uninterrupted. If the lost packet included an update to a + delta field such as the delta RTP timestamp (dT), the next packet + can't compensate for the loss since the update of a delta value is + relative to the previous packet which was lost. But if the update is + for an absolute value such as the full RTP timestamp or the RTP + payload type, this update can be repeated in the next packet + independently of the lost packet. Hence it is useful to be able to + update the absolute values of the context. + + The next chapter describes several extensions to CRTP that add the + capability to selectively update absolute values of the context, + rather than sending a FULL_HEADER packet, in addition to the existing + updates of the delta values. This enhanced version of CRTP is + intended to minimize context invalidation and thus improve the + performance over lossy links with a long round trip time. + +1.4. Specification of Requirements + + 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 [RFC2119]. + +2. Enhanced CRTP + + This chapter specifies the changes in this enhanced version of CRTP. + They are: + + - Extensions to the COMPRESSED_UDP packet to allow updating the + differential RTP values in the decompressor context and to + selectively update the absolute IPv4 ID and the following RTP + values: sequence number, timestamp, payload type, CSRC count and + CSRC list. This allows context sync to be maintained even with + some packet loss. + + + + + +Koren, et al. Standards Track [Page 5] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + - A "headers checksum" to be inserted by the compressor and removed + by the decompressor when the UDP checksum is not present so that + validation of the decompressed headers is still possible. This + allows the decompressor to verify that context sync has not been + lost after a packet loss. + + An algorithm is then described to use these changes with repeated + updates to achieve robust operation over links with packet loss and + long delay. + +2.1. Extended COMPRESSED_UDP packet + + It is possible to accommodate some packet loss between the compressor + and decompressor using the "twice" algorithm in RFC 2508 so long as + the context remains in sync. In that algorithm, the delta values are + added to the previous context twice (or more) to effect the change + that would have occurred if the missing packets had arrived. The + result is verified with the UDP checksum. Keeping the context in + sync requires reliably communicating both the absolute value and the + delta value whenever the delta value changes. For many environments, + sufficient reliability can be achieved by repeating the update with + each of several successive packets. + + The COMPRESSED_UDP packet satisfies the need to communicate the + absolute values of the differential RTP fields, but it is specified + in RFC 2508 to reset the delta RTP timestamp. That limitation can be + removed with the following simple change: RFC 2508 describes the + format of COMPRESSED_UDP as being the same as COMPRESSED_RTP except + that the M, S and T bits are always 0 and the corresponding delta + fields are never included. This enhanced version of CRTP changes + that specification to say that the T bit MAY be nonzero to indicate + that the delta RTP timestamp is included explicitly rather than being + reset to zero. + + A second change adds another byte of flag bits to the COMPRESSED_UDP + packet to allow only selected individual uncompressed fields of the + RTP header to be included in the packet rather than carrying the full + RTP header as part of the UDP data. The additional flags do increase + computational complexity somewhat, but the corresponding increase in + bit efficiency is important when the differential field updates are + communicated multiple times in successive COMPRESSED_UDP packets. + With this change, there are flag bits to indicate inclusion of both + delta values and absolute values, so the flag nomenclature is + changed. The original S, T, I bits which indicate the inclusion of + deltas are renamed dS, dT, dI, and the inclusion of absolute values + is indicated by S, T, I. The M bit is absolute as before. A new + + + + + +Koren, et al. Standards Track [Page 6] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + flag P indicates inclusion of the absolute RTP payload type value and + another flag C indicates the inclusion of the CSRC count. When C=1, + an additional byte is added following the two flag bytes to include + the absolute value of the four-bit CC field in the RTP header. + + The last of the three changes to the COMPRESSED_UDP packet deals with + updating the IPv4 ID field. For this field, the COMPRESSED_UDP + packet as specified in RFC 2508 can already convey a new value for + the delta IPv4 ID, but not the absolute value which is only conveyed + by the FULL_HEADER packet. Therefore, a new flag I is added to the + COMPRESSED_UDP packet to indicate inclusion of the absolute IPv4 ID + value. The I flag replaces the dS flag which is not needed in the + COMPRESSED_UDP packet since the delta RTP sequence number always + remains 1 in the decompressor context and hence does not need to be + updated. Note that IPv6 does not have an IP ID field, so when + compressing IPv6 packets both the I and the dI flags are always set + to 0. + + The format of the flags/sequence byte for the original COMPRESSED_UDP + packet is shown here for reference: + + +---+---+---+---+---+---+---+---+ + | 0 | 0 | 0 |dI | link sequence | + +---+---+---+---+---+---+---+---+ + + The new definition of the flags/sequence byte plus an extension flags + byte for the COMPRESSED_UDP packet is as follows, where the new F + flag indicates the inclusion of the extension flags byte: + + +---+---+---+---+---+---+---+---+ + | F | I |dT |dI | link sequence | + +---+---+---+---+---+---+---+---+ + : M : S : T : P : C : 0 : 0 : 0 : (if F = 1) + +...+...+...+...+...+...+...+...+ + + dI = delta IPv4 ID + dT = delta RTP timestamp + I = absolute IPv4 ID + F = additional flags byte + M = marker bit + S = absolute RTP sequence number + T = absolute RTP timestamp + P = RTP payload type + C = CSRC count + CID = Context ID + + + + + + +Koren, et al. Standards Track [Page 7] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + When F=0, there is only one flags byte, and the only available flags + are: dI, dT and I. In this case the packet includes the full RTP + header. As in RFC 2508, if dI=0, the decompressor does not change + deltaI. If dT=0, the decompressor sets deltaT to 0. + + When C=1, an additional byte is added following the two flag bytes. + This byte includes the CC, the count of CSRC identifiers, in its + lower 4 bits: + + +---+---+---+---+---+---+---+---+ + | F | I |dT |dI | link sequence | + +---+---+---+---+---+---+---+---+ + : M : S : T : P : C : 0 : 0 : 0 : (if F = 1) + +...+...+...+...+...+...+...+...+ + : 0 : 0 : 0 : 0 : CC : (if C = 1) + +...+...+...+...+...............+ + + The bits marked "0" in the second flag byte and the CC byte SHOULD be + set to zero by the sender and SHOULD be ignored by the receiver. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Koren, et al. Standards Track [Page 8] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + Some example packet formats will illustrate the use of the new flags. + First, when F=0, the "traditional" COMPRESSED_UDP packet which + carries the full RTP header as part of the UDP data: + + 0 1 2 3 4 5 6 7 + +...............................+ + : msb of session context ID : (if 16-bit CID) + +-------------------------------+ + | lsb of session context ID | + +---+---+---+---+---+---+---+---+ + |F=0| I |dT |dI | link sequence | + +---+---+---+---+---+---+---+---+ + : : + + UDP checksum + (if nonzero in context) + : : + +...............................+ + : : + + "RANDOM" fields + (if encapsulated) + : : + +...............................+ + : delta IPv4 ID : (if dI = 1) + +...............................+ + : delta RTP timestamp : (if dT = 1) + +...............................+ + : : + + IPv4 ID + (if I = 1) + : : + +...............................+ + | UDP data | + : (uncompressed RTP header) : + + When F=1, there is an additional flags byte and the available flags + are: dI, dT, I, M, S, T, P, C. If C=1, there is an additional byte + that includes the number of CSRC identifiers. When F=1, the packet + does not include the full RTP header, but includes selected fields + from the RTP header as specified by the flags. As in RFC 2508, if + dI=0 the decompressor does not change deltaI. However, in contrast + to RFC 2508, if dT=0 the decompressor KEEPS THE CURRENT deltaT in the + context (DOES NOT set deltaT to 0). + + An enhanced COMPRESSED_UDP packet is similar in contents and behavior + to a COMPRESSED_RTP packet, but it has more flag bits, some of which + correspond to absolute values for RTP header fields. + + + + + + + + +Koren, et al. Standards Track [Page 9] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + COMPRESSED_UDP with individual RTP fields, when F=1: + + 0 1 2 3 4 5 6 7 + +...............................+ + : msb of session context ID : (if 16-bit CID) + +-------------------------------+ + | lsb of session context ID | + +---+---+---+---+---+---+---+---+ + |F=1| I |dT |dI | link sequence | + +---+---+---+---+---+---+---+---+ + | M | S | T | P | C | 0 | 0 | 0 | + +---+---+---+---+---+---+---+---+ + : 0 : 0 : 0 : 0 : CC : (if C = 1) + +...+...+...+...+...............+ + : : + + UDP checksum + (if nonzero in context) + : : + +...............................+ + : : + : "RANDOM" fields : (if encapsulated) + : : + +...............................+ + : delta IPv4 ID : (if dI = 1) + +...............................+ + : delta RTP timestamp : (if dT = 1) + +...............................+ + : : + + IPv4 ID + (if I = 1) + : : + +...............................+ + : : + + RTP sequence number + (if S = 1) + : : + +...............................+ + : : + + + + : : + + RTP timestamp + (if T = 1) + : : + + + + : : + +...............................+ + : RTP payload type : (if P = 1) + +...............................+ + : : + : CSRC list : (if CC > 0) + : : + +...............................+ + + + +Koren, et al. Standards Track [Page 10] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + : : + : RTP header extension : (if X set in context) + : : + +-------------------------------+ + | | + / RTP data / + / / + | | + +-------------------------------+ + : padding : (if P set in context) + +...............................+ + + Usage for the enhanced COMPRESSED_UDP packet: + + It is useful for the compressor to periodically refresh the state of + the decompressor to avoid having the decompressor send CONTEXT_STATE + messages in the case of unrecoverable packet loss. Using the flags + F=0 and I=1, dI=1, dT=1, the COMPRESSED_UDP packet refreshes all the + context parameters. + + When compression is done over a lossy link with a long round trip + delay, we want to minimize context invalidation. If the delta values + are changing frequently, the context might get invalidated often. In + such cases the compressor MAY choose to always send absolute values + and never delta values, using COMPRESSED_UDP packets with the flags + F=1, and any of S, T, I as necessary. + +2.2. CRTP Headers Checksum + + RFC 2508, in Section 3.3.5, describes how the UDP checksum may be + used to validate header reconstruction periodically or when the + "twice" algorithm is used. When a UDP checksum is not present (has + value zero) in a stream, such validation would not be possible. To + cover that case, this enhanced CRTP provides an option whereby the + compressor MAY replace the null UDP checksum with a 16-bit headers + checksum (HDRCKSUM) which is subsequently removed by the decompressor + after validation. Note that this option is never used with IPv6 + since a null UDP checksum is not allowed. + + A new flag C in the FULL_HEADER packet, as specified below, indicates + when set that all COMPRESSED_UDP and COMPRESSED_RTP packets sent in + that context will have HDRCKSUM inserted. The compressor MAY set the + C flag when UDP packet carried in the FULL_HEADER packet originally + contained a checksum value of zero. If the C flag is set, the + FULL_HEADER packet itself MUST also have the HDRCKSUM inserted. If a + packet in the same stream subsequently arrives at the compressor with + a UDP checksum present, then a new FULL_HEADER packet MUST be sent + with the flag cleared to re-establish the context. + + + +Koren, et al. Standards Track [Page 11] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + The HDRCKSUM is calculated in the same way as a UDP checksum except + that it does not cover all of the UDP data. That is, the HDRCKSUM is + the 16-bit one's complement of the one's complement sum of the + pseudo-IP header (as defined for UDP), the UDP header, the first 12 + bytes of the UDP data which are assumed to hold the fixed part of an + RTP header, and the CSRC list. The extended part of the RTP header + beyond the CSRC list and the RTP data will not be included in the + HDRCKSUM. The HDRCKSUM is placed in the COMPRESSED_UDP or + COMPRESSED_RTP packet where a UDP checksum would have been. The + decompressor MUST zero out the UDP checksum field in the + reconstructed packets. + + For a non-RTP context, there may be fewer than 12 UDP data bytes + present. The IP and UDP headers can still be compressed into a + COMPRESSED_UDP packet. For this case, the HDRCKSUM is calculated + over the pseudo-IP header, the UDP header, and the UDP data bytes + that are present. If the number of data bytes is odd, then a zero + padding byte is appended for the purpose of calculating the checksum, + but not transmitted. + + The HDRCKSUM does not validate the RTP data. If the link layer is + configured to deliver packets without checking for errors, then + errors in the RTP data will not be detected. Over such links, the + compressor SHOULD add the HDRCKSUM if a UDP checksum is not present, + and the decompressor SHOULD validate each reconstructed packet to + make sure that at least the headers are correct. This ensures that + the packet will be delivered to the right destination. If only + HDRCKSUM is available, the RTP data will be delivered even if it + includes errors. This might be a desirable feature for applications + that can tolerate errors in the RTP data. The same holds for the + extended part of the RTP header beyond the CSRC list. + + Here is the format of the FULL_HEADER length fields with the new flag + C to indicate that a header checksum will be added in COMPRESSED_UDP + and COMPRESSED_RTP packets: + + For 8-bit context ID: + + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |0|1| Generation| CID | First length field + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | 0 |C| seq | Second length field + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ C=1: HDRCKSUM will be added + + + + + + +Koren, et al. Standards Track [Page 12] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + For 16-bit context ID: + + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |1|1| Generation| 0 |C| seq | First length field + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ C=1: HDRCKSUM will be added + + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | CID | Second length field + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +2.3. Achieving robust operation + + Enhanced CRTP achieves robust operation by sending changes multiple + times to keep the compressor and decompressor in sync. This method + is characterized by a number "N" that represents the quality of the + link between the hosts. What it means is that the probability of + more than N adjacent packets getting lost on this link is small. For + every change in a full value or a delta value, if the compressor + includes the change in N+1 consecutive packets, then the decompressor + can keep its context state in sync with the compressor using the + "twice" algorithm so long as no more than N adjacent packets are + lost. + + Since updates are repeated in N+1 packets, if at least one of these + N+1 update packets is received by the decompressor, both the full and + delta values in the context at the decompressor will get updated and + its context will stay synchronized with the context at the + compressor. We can conclude that as long as less than N+1 adjacent + packets are lost, the context at the decompressor is guaranteed to be + synchronized with the context at the compressor, and use of the + "twice" algorithm to recover from packet loss will successfully + update the context and restore the compressed packets. + + The link sequence number cycles in 16 packets, so it's not always + clear how many packets were lost. For example, if the previous link + sequence number was 5 and the current number is 4, one possibility is + that 15 packets were lost, but another possibility is that due to + misordering packet 5 arrived before packet 4 and they are really + adjacent. If there is an interpretation of the link sequence numbers + that could be a gap of less than N+1, the "twice" algorithm may be + applied that many times and verified with the UDP checksum (or the + HDRCKSUM). + + When more than N packets are lost, all of the repetitions of an + update might have been lost. The context state may then be different + at the compressor and decompressor. The decompressor can still try + to recover by making one or more guesses for how many packets were + lost and then applying the "twice" algorithm that many times. + + + +Koren, et al. Standards Track [Page 13] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + However, since the IPv4 ID field is not included in the checksum, + this does not validate the IPv4 ID. + + The conclusion is that for IPv4 if more than N packets were lost, the + decompressor SHOULD NOT try to recover using the "twice" algorithm + and instead SHOULD invalidate the context and send a CONTEXT_STATE + packet. In IPv6 the decompressor MAY always try to recover from + packet loss by using the "twice" algorithm and verifying the result + with the UDP checksum. + + It is up to the implementation to derive an appropriate N for a link. + The value is maintained independently for each context and is not + required to be the same for all contexts. When compressing a new + stream, the compressor sets a value of N for that context and sends + N+1 FULL_HEADER packets. The compressor MUST also repeat each + subsequent COMPRESSED_UDP update N+1 times. The value of N may be + changed for an existing context by sending a new sequence of + FULL_HEADER packets. + + The decompressor learns the value of N by counting the number of + times the FULL_HEADER packet is repeated and storing the resulting + value in the corresponding context. If some of the FULL_HEADER + packets are lost, the decompressor may still be able to determine the + correct value of N by observing the change in the 4-bit sequence + number carried in the FULL_HEADER packets. Any inaccuracy in the + counting will lead the decompressor to assume a smaller value of N + than the compressor is sending. This is safe in that the only + negative consequence is that the decompressor might send a + CONTEXT_STATE packet when it was not really necessary to do so. In + response, the compressor will send FULL_HEADER packets again, + providing another opportunity for the decompressor to count the + correct N. + + The sending of FULL_HEADER packets is also triggered by a change in + one of the fields held constant in the context, such as the IP TOS. + If such a change should occur while the compressor is in the middle + of sending the N+1 FULL_HEADER packets, then the compressor MUST send + N+1 FULL_HEADER packets after making the change. This could cause + the decompressor to receive more than N+1 FULL_HEADER packets in a + row with the result that it assumes a larger value for N than is + correct. That could lead to an undetected loss of context + synchronization. Therefore, the compressor MUST change the + "generation" number in the context and in the FULL_HEADER packet when + it begins sending the sequence of N+1 FULL_HEADER packets so the + decompressor can detect the new sequence. For IPv4, this is a change + in behavior relative to RFC 2508. + + + + + +Koren, et al. Standards Track [Page 14] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + CONTEXT_STATE packets SHOULD also be repeated N+1 times (using the + same sequence number for each context) to provide a similar measure + of robustness against packet loss. Here N can be the largest N of + all contexts included in the CONTEXT_STATE packet, or any number the + decompressor finds necessary in order to ensure robustness. + +2.3.1. Examples + + Here are some examples to demonstrate the robust operation of + enhanced CRTP using N+1 repetitions of updates. In this stream the + audio codec sends a sample every 10 milliseconds. The first + talkspurt is 1 second long. Then there are 2 seconds of silence, + then another talkspurt. We also assume in this first example that + the IPv4 ID field does not increment at a constant rate because the + host is generating other uncorrelated traffic streams at the same + time and therefore the delta IPv4 ID changes for each packet. + + In these examples, we will use some short notations: + + FH FULL_HEADER + CR COMPRESSED_RTP + CU COMPRESSED_UDP + + When operating on a link with low loss, we can just use + COMPRESSED_RTP packets in the basic CRTP method specified in RFC + 2508. We might have the following packet sequence: + + seq Time pkt updates and comments + # type + 1 10 FH + 2 20 CR dI dT=10 + 3 30 CR dI + 4 40 CR dI + ... + 100 1000 CR dI + + 101 3010 CR dI dT=2010 + 102 3020 CR dI dT=10 + 103 3030 CR dI + 104 3040 CR dI + ... + + In the above sequence, if a packet is lost we cannot recover ("twice" + will not work due to the unpredictable IPv4 ID) and the context must + be invalidated. + + + + + + +Koren, et al. Standards Track [Page 15] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + Here is the same example using the enhanced CRTP method specified in + this document, when N=2. Note that the compressor only sends the + absolute IPv4 ID (I) and not the delta IPv4 ID (dI). + + seq Time pkt CU flags updates and comments + # type F I dT dI M S T P + 1 10 FH + 2 20 FH repeat constant fields + 3 30 FH repeat constant fields + 4 40 CU 1 1 1 0 M 0 1 0 I T=40 dT=10 + 5 50 CU 1 1 1 0 M 0 1 0 I T=50 dT=10 repeat update T & dT + 6 60 CU 1 1 1 0 M 0 1 0 I T=60 dT=10 repeat update T & dT + 7 70 CU 1 1 0 0 M 0 0 0 I + 8 80 CU 1 1 0 0 M 0 0 0 I + ... + 100 1000 CU 1 1 0 0 M 0 0 0 I + + 101 3010 CU 1 1 0 0 M 0 1 0 I T=3010 T changed, keep deltas + 102 3020 CU 1 1 0 0 M 0 1 0 I T=3020 repeat updated T + 103 3030 CU 1 1 0 0 M 0 1 0 I T=3030 repeat updated T + 104 3040 CU 1 1 0 0 M 0 0 0 I + 105 3050 CU 1 1 0 0 M 0 0 0 I + ... + + This second example is the same sequence, but assuming the delta IP + ID is constant. First the basic CRTP for a lossless link: + + seq Time pkt updates and comments + # type + 1 10 FH + 2 20 CR dI dT=10 + 3 30 CR + 4 40 CR + ... + 100 1000 CR + + 101 3010 CR dT=2010 + 102 3020 CR dT=10 + 103 3030 CR + 104 3040 CR + ... + + + + + + + + + + +Koren, et al. Standards Track [Page 16] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + For the equivalent sequence in enhanced CRTP, the more efficient + COMPRESSED_RTP packet can still be used once the deltas are all + established: + + seq Time pkt CU flags updates and comments + # type F I dT dI M S T P + 1 10 FH + 2 20 FH repeat constant fields + 3 30 FH repeat constant fields + 4 40 CU 1 1 1 1 M 0 1 0 I dI T=40 dT=10 + 5 50 CU 1 1 1 1 M 0 1 0 I dI T=50 dT=10 repeat updates + 6 60 CU 1 1 1 1 M 0 1 0 I dI T=60 dT=10 repeat updates + 7 70 CR + 8 80 CR + ... + 100 1000 CR + + 101 3010 CU 1 0 0 0 M 0 1 0 T=3010 T changed, keep deltas + 102 3020 CU 1 0 0 0 M 0 1 0 T=3020 repeat updated T + 103 3030 CU 1 0 0 0 M 0 1 0 T=3030 repeat updated T + 104 3040 CR + 105 3050 CR + ... + + Here is the second example when using IPv6. First the basic CRTP for + a lossless link: + + seq Time pkt updates and comments + # type + 1 10 FH + 2 20 CR dT=10 + 3 30 CR + 4 40 CR + ... + 100 1000 CR + + 101 3010 CR dT=2010 + 102 3020 CR dT=10 + 103 3030 CR + 104 3040 CR + ... + + + + + + + + + + +Koren, et al. Standards Track [Page 17] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + For the equivalent sequence in enhanced CRTP, the more efficient + COMPRESSED_RTP packet can still be used once the deltas are all + established: + + seq Time pkt CU flags updates and comments + # type F I dT dI M S T P + 1 10 FH + 2 20 FH repeat constant fields + 3 30 FH repeat constant fields + 4 40 CU 1 0 1 0 M 0 1 0 T=40 dT=10 + 5 50 CU 1 0 1 0 M 0 1 0 T=50 dT=10 repeat updates + 6 60 CU 1 0 1 0 M 0 1 0 T=60 dT=10 repeat updates + 7 70 CR + 8 80 CR + ... + 100 1000 CR + + 101 3010 CU 1 0 0 0 M 0 1 0 T=3010 T changed, keep deltas + 102 3020 CU 1 0 0 0 M 0 1 0 T=3020 repeat updated T + 103 3030 CU 1 0 0 0 M 0 1 0 T=3030 repeat updated T + 104 3040 CR + 105 3050 CR + ... + +3. Negotiating usage of enhanced-CRTP + + The use of IP/UDP/RTP compression (CRTP) over a particular link is a + function of the link-layer protocol. It is expected that negotiation + of the use of CRTP will be defined separately for each link layer. + + For link layers that already have defined a negotiation for the use + of CRTP as specified in RFC 2508, an extension to that negotiation + will be required to indicate use of the enhanced CRTP defined in this + document since the syntax of the existing packet formats has been + extended. + +4. Security Considerations + + Because encryption eliminates the redundancy that this compression + scheme tries to exploit, there is some inducement to forego + encryption in order to achieve operation over a low-bandwidth link. + However, for those cases where encryption of data and not headers is + satisfactory, RTP does specify an alternative encryption method in + which only the RTP payload is encrypted and the headers are left in + the clear [SRTP]. That would allow compression to still be applied. + + + + + + +Koren, et al. Standards Track [Page 18] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + A malfunctioning or malicious compressor could cause the decompressor + to reconstitute packets that do not match the original packets but + still have valid IP, UDP and RTP headers and possibly even valid UDP + check-sums. Such corruption may be detected with end-to-end + authentication and integrity mechanisms which will not be affected by + the compression. Constant portions of authentication headers will be + compressed as described in [IPHCOMP]. + + No authentication is performed on the CONTEXT_STATE control packet + sent by this protocol. An attacker with access to the link between + the decompressor and compressor could inject false CONTEXT_STATE + packets and cause compression efficiency to be reduced, probably + resulting in congestion on the link. However, an attacker with + access to the link could also disrupt the traffic in many other ways. + + A potential denial-of-service threat exists when using compression + techniques that have non-uniform receiver-end computational load. The + attacker can inject pathological datagrams into the stream which are + complex to decompress and cause the receiver to be overloaded and + degrading processing of other streams. However, this compression + does not exhibit any significant non-uniformity. + +5. Acknowledgements + + The authors would like to thank Van Jacobson, co-author of RFC 2508, + and the authors of RFC 2507, Mikael Degermark, Bjorn Nordgren, and + Stephen Pink. The authors would also like to thank Dana Blair, + Francois Le Faucheur, Tim Gleeson, Matt Madison, Hussein Salama, + Mallik Tatipamula, Mike Thomas, Alex Tweedly, Herb Wildfeuer, + Andrew Johnson, and Dan Wing. + +6. References + +6.1. Normative References + + [CRTP] Casner, S. and V. Jacobson, "Compressing IP/UDP/RTP Headers + for Low-Speed Serial Links", RFC 2508, February 1999. + + [IPHCOMP] Degermark, M., Nordgren, B. and S. Pink, "IP Header + Compression", RFC 2507, February 1999. + + [IPCPHC] Koren, T., Casner, S. and C. Bormann, "IP Header + Compression over PPP", RFC 3544, July 2003. + + [KEYW] Bradner, S. "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + + + + +Koren, et al. Standards Track [Page 19] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + + [RTP] Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson, + "RTP: A Transport Protocol for Real-Time Applications", RFC + 3550, July 2003. + +6.2. Informative References + + [ROHC] Bormann, C., Burmeister, C., Degermark, M., Fukushima, H., + Hannu, H., Jonsson, L., 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): Framework and four profiles: RTP, UDP, ESP, and + uncompressed", RFC 3095, July 2001. + + [SRTP] Baugher, M., McGrew, D., Carrara, E., Naslund, M. and K. + Norrman, "The Secure Real-time Transport Protocol", Work in + Progress. + +7. Intellectual Property Rights Notice + + The IETF takes no position regarding the validity or scope of any + intellectual property 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; neither does it represent that it + has made any effort to identify any such rights. Information on the + IETF's procedures with respect to rights in standards-track and + standards-related documentation can be found in BCP-11. Copies of + claims of rights made available for publication and any assurances of + licenses to be made available, or the result of an attempt made to + obtain a general license or permission for the use of such + proprietary rights by implementors or users of this specification can + be obtained from the IETF Secretariat. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights which may cover technology that may be required to practice + this standard. Please address the information to the IETF Executive + Director. + + + + + + + + + + + + + +Koren, et al. Standards Track [Page 20] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + +8. Authors' Addresses + + Tmima Koren + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + USA + + EMail: tmima@cisco.com + + + Stephen L. Casner + Packet Design + 3400 Hillview Avenue, Building 3 + Palo Alto, CA 94304 + USA + + EMail: casner@acm.org + + + John Geevarghese + Motorola India Electronics Ltd. + No. 33 A Ulsoor Road + Bangalore, India + + EMail: geevjohn@hotmail.com + + + Bruce Thompson + Cisco Systems, Inc. + 170 West Tasman Drive + San Jose, CA 95134-1706 + USA + + EMail: brucet@cisco.com + + + Patrick Ruddy + Cisco Systems, Inc. + 3rd Floor + 96 Commercial Street + Leith, Edinburgh EH6 6LX + Scotland + + EMail: pruddy@cisco.com + + + + + + +Koren, et al. Standards Track [Page 21] + +RFC 3545 Enhanced Compressed RTP (CRTP) July 2003 + + +9. Full Copyright Statement + + Copyright (C) The Internet Society (2003). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + 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 + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "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. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Koren, et al. Standards Track [Page 22] + -- cgit v1.2.3