draft-ietf-tsvwg-udp-lite-00.txt | draft-ietf-tsvwg-udp-lite-01.txt | |||
---|---|---|---|---|
INTERNET-DRAFT Lars-Ake Larzon | Network Working Group L-A. Larzon | |||
TSV WG Lulea University of Technology, Sweden | INTERNET-DRAFT Lulea University of Technology | |||
January 24, 2002 Mikael Degermark | Expires: June 2003 M. Degermark | |||
Expires: July 24, 2002 Stephen Pink | S. Pink | |||
The University of Arizona, USA | The University of Arizona | |||
L-E. Jonsson (editor) | ||||
Ericsson | ||||
G. Fairhurst (editor) | ||||
University of Aberdeen | ||||
December 5, 2002 | ||||
The UDP Lite Protocol | The UDP-Lite Protocol | |||
<draft-ietf-tsvwg-udp-lite-00.txt> | <draft-ietf-tsvwg-udp-lite-01.txt> | |||
Status of this Memo | Status of this memo | |||
This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
all provisions of Section 10 of [RFC-2026]. | all provisions of Section 10 of RFC2026. | |||
This document is an Internet-Draft. Internet-Drafts are working | Internet-Drafts are working documents of the Internet Engineering | |||
documents of the Internet Engineering Task Force (IETF), its areas, | Task Force (IETF), its areas, and its working groups. Note that other | |||
and its working groups. Note that other groups may also distribute | groups may also distribute working documents as Internet-Drafts. | |||
working documents as Internet-Drafts. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as ``work in progress.'' | material or cite them other than as "work in progress". | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt | http://www.ietf.org/ietf/lid-abstracts.txt | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html | |||
Please direct comments to the TSV WG mailing list: tsvwg@ietf.org | Please direct comments to the TSV WG mailing list: tsvwg@ietf.org | |||
Abstract | Abstract | |||
This document describes the UDP Lite protocol, which is similar to | This document describes the UDP-Lite protocol, which is similar to | |||
classic UDP [RFC-768], but can also serve applications which in lossy | UDP [RFC-768], but can also serve applications that in error-prone | |||
network environments prefer to have partially damaged payloads | network environments prefer to have partially damaged payloads | |||
delivered rather than discarded. If this feature is not used, UDP | delivered rather than discarded. If this feature is not used, UDP- | |||
Lite is semantically identical to classic UDP. | Lite is semantically identical to UDP. | |||
Conventions | Table of Contents | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | 1. Introduction...................................................2 | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | 2. Terminology....................................................3 | |||
document are to be interpreted as described in [RFC-2119]. | 3. Protocol Description...........................................3 | |||
3.1. Fields....................................................3 | ||||
3.2. Pseudo Header.............................................4 | ||||
3.3. Application Interface.....................................4 | ||||
3.4. IP Interface..............................................5 | ||||
3.5. Jumbograms................................................5 | ||||
4. Lower Layer Considerations.....................................5 | ||||
5. Compatibility with UDP.........................................6 | ||||
6. Security Considerations........................................7 | ||||
7. IANA Considerations............................................7 | ||||
8. References.....................................................8 | ||||
8.1. Normative References......................................8 | ||||
8.2. Informative References....................................8 | ||||
9. Acknowledgements...............................................8 | ||||
10. Authors' Addresses............................................9 | ||||
Introduction | 1. Introduction | |||
Why another transport protocol? | Why another transport protocol? | |||
First, there is a class of applications which prefer to have damaged | First, there is a class of applications that prefer to have damaged | |||
data delivered rather than discarded by the network. A number of | data delivered rather than discarded by the network. A number of | |||
codecs for voice and video fall into this class. These codecs are | codecs for voice and video fall into this class. These codecs are | |||
designed to cope better with errors in the payload than with loss of | designed to cope better with errors in the payload than with loss of | |||
entire packets. | entire packets. | |||
Second, there are a number of link technologies where data can be | Second, there are a number of link technologies where data can be | |||
partially damaged. Several radio technologies exhibit this behavior | partially damaged. Several radio technologies exhibit this behavior | |||
when operating at a point where cost and delay is sufficiently low. | when operating at a point where cost and delay are sufficiently low. | |||
Third, intermediate layers should not prevent such applications to | Third, intermediate layers should not prevent error-tolerant | |||
run well over such links. The intermediate layers are IP and the | applications to run well in the presence of such links. The | |||
transport layer. IP is not a problem in this regard since the IP | intermediate layers are IP and the transport layer. IP is not a | |||
header has no checksum which covers the IP payload. The generally | problem in this regard since the IP header has no checksum that | |||
available transport protocol best suited for these applications is | covers the IP payload. The generally available transport protocol | |||
UDP, since it has no overhead for retransmission of erroneous | best suited for these applications is UDP, since it has no overhead | |||
packets, in-order delivery or error correction. However, the UDP | for retransmission of erroneous packets, in-order delivery, or error | |||
checksum either covers the entire datagram or nothing at all. | correction. In IPv4 [RFC-791], the UDP checksum covers either the | |||
Moreover, in the next version of IP, IPv6 [RFC-2460], the UDP | entire packet or nothing at all. In IPv6 [RFC-2460], the UDP checksum | |||
checksum is mandatory and must not be disabled. The IPv6 header does | is mandatory and must not be disabled. The IPv6 header does not have | |||
not have a header checksum and it was deemed necessary to always | a header checksum and it was deemed necessary to always protect the | |||
protect the IP addressing information by making the UDP checksum | IP addressing information by making the UDP checksum mandatory. | |||
mandatory. | ||||
A transport protocol is needed that conforms with the properties of | A transport protocol is needed that conforms to the properties of | |||
link layers and applications described above. The error-detection | link layers and applications described above [UDP-LITE]. The error- | |||
mechanism of the transport layer must be able to protect vital | detection mechanism of the transport layer must be able to protect | |||
information such as headers, but also to optionally ignore errors | vital information such as headers, but also to optionally ignore | |||
best dealt with by the application. What should be verified by the | errors best dealt with by the application. What should be verified by | |||
checksum is best specified by the sending application. | the checksum is best specified by the sending application. | |||
UDP Lite provides a checksum with optionally partial coverage. When | UDP-Lite provides a checksum with an optional partial coverage. When | |||
using this option, a datagram is divided into a sensitive part | using this option, a packet is divided into a sensitive part (covered | |||
(covered by checksum) and an insensitive part (not covered by | by the checksum) and an insensitive part (not covered by the | |||
checksum). Errors in the insensitive part will not cause the | checksum). Errors in the insensitive part will not cause the packet | |||
datagram to be discarded. When the checksum covers the entire | to be discarded by the transport layer at the receiving end host. | |||
datagram, which SHOULD be the default, UDP Lite is semantically | When the checksum covers the entire packet, which should be the | |||
identical to UDP. | default, UDP-Lite is semantically identical to UDP. | |||
Compared to UDP (hereafter referred to as "classic UDP"), the partial | Compared to UDP, the UDP-Lite partial checksum provides extra | |||
checksum provides extra flexibility for applications with partially | flexibility for applications that want to define the payload as | |||
insensitive data. | partially insensitive to bit errors. | |||
Protocol description | 2. Terminology | |||
The UDP Lite header is shown in figure 1. Its format differs from | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
classic UDP in that the Length field has been replaced with a | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
Checksum Coverage field. This can be done since information about UDP | document are to be interpreted as described in [RFC-2119]. | |||
packet length can be provided by the IP module in the same manner as | ||||
for TCP [rfc-793]. | 3. Protocol Description | |||
The UDP-Lite header is shown in figure 1. Its format differs from | ||||
UDP in that the Length field has been replaced with a Checksum | ||||
Coverage field. This can be done since information about UDP packet | ||||
length can be provided by the IP module in the same manner as for TCP | ||||
[RFC-793]. | ||||
0 15 16 31 | 0 15 16 31 | |||
+--------+--------+--------+--------+ | +--------+--------+--------+--------+ | |||
| Source | Destination | | | Source | Destination | | |||
| Port | Port | | | Port | Port | | |||
+--------+--------+--------+--------+ | +--------+--------+--------+--------+ | |||
| Checksum | | | | Checksum | | | |||
| Coverage | Checksum | | | Coverage | Checksum | | |||
+--------+--------+--------+--------+ | +--------+--------+--------+--------+ | |||
| | | | | | |||
| data bytes ... | | : Payload : | |||
+---------------- ...---------------+ | | | | |||
+-----------------------------------+ | ||||
Figure 1: New UDP Header Format | Figure 1: UDP-Lite Header Format | |||
Fields | 3.1. Fields | |||
The fields ``Source Port'' and ``Destination port'' are defined as in | The fields Source Port and Destination Port are defined as in the UDP | |||
the UDP specification [RFC-768]. | specification [RFC-768]. UDP-Lite uses the same set of port number | |||
values as those assigned by the IANA for use by UDP. | ||||
Checksum Coverage is the number of bytes, counting from the first | Checksum Coverage is the number of octets, counting from the first | |||
byte of the new UDP header, that are covered by the checksum. The UDP | octet of the UDP-Lite header, that are covered by the checksum. The | |||
Lite header MUST always be included in the checksum. Despite this | UDP-Lite header MUST always be covered by the checksum. Despite this | |||
requirement, the Checksum Coverage is expressed in bytes from the | requirement, the Checksum Coverage is expressed in octets from the | |||
beginning of the UDP Lite header in order to preserve compatibility | beginning of the UDP-Lite header, in the same way as for UDP. A | |||
with classic UDP. A Checksum Coverage of zero indicates that the | Checksum Coverage of zero indicates that the entire UDP-Lite packet | |||
entire new UDP packet is included in the checksum. This means that | is covered by the checksum. This means that the value of the Checksum | |||
the value of the Checksum Coverage field MUST be either zero or at | Coverage field MUST be either 0 or at least 8. A UDP-Lite packet with | |||
least eight. | a Checksum Coverage value of 1 to 7 MUST be discarded by the | |||
receiver. UDP-Lite packets with a Checksum Coverage greater than the | ||||
IP length MUST also be discarded. | ||||
Checksum is the 16-bit one's complement of the one's complement sum | Checksum is the 16-bit one's complement of the one's complement sum | |||
of a pseudo-header of information from the IP header, the number of | of a pseudo-header of information from the IP header, the number of | |||
bytes specified by the Checksum Coverage (starting at the first byte | octets specified by the Checksum Coverage (starting at the first | |||
in the new UDP header), virtually padded with zero bytes at the end | octet in the UDP-Lite header), virtually padded with a zero octet at | |||
(if necessary) to make a multiple of two bytes. If the computed | the end (if necessary) to make a multiple of two octets [RFC-1071]. | |||
checksum is zero, it is transmitted as all ones (the equivalent in | If the computed checksum is 0, it is transmitted as all ones (the | |||
one's complement arithmetic). The transmitted checksum MUST NOT be | equivalent in one's complement arithmetic). | |||
all zeroes. | ||||
Pseudo header | The transmitted checksum MUST NOT be all zeroes. If an application | |||
using UDP-Lite wishes to have no protection of the packet payload, it | ||||
should use a Checksum Coverage value of 8. This differs from the use | ||||
of UDP over IPv4, in that the minimal UDP-Lite checksum always covers | ||||
the UDP-Lite protocol header, which includes the Checksum Coverage | ||||
field. | ||||
Similar to classic UDP, UDP Lite uses a conceptually prefixed pseudo | 3.2. Pseudo Header | |||
header from the IP layer for checksumming purposes. The format of | ||||
the pseudo header is the same as for classic UDP, and differs for | ||||
different versions of IP. The pseudo header of UDP Lite is different | ||||
from the pseudo header of classic UDP in one way: The value of the | ||||
length field of the pseudo header is not taken from the UDP Lite | ||||
header, but rather from information provided by the IP module. This | ||||
computation is done in the same manner as for TCP [RFC-793], and | ||||
implies that the length field of the pseudo header includes the UDP | ||||
Lite header and all subsequent bytes in the IP payload. | ||||
User Interface | UDP and UDP-Lite use the same conceptually prefixed pseudo header | |||
from the IP layer for the checksum. This pseudo header is different | ||||
for IPv4 and IPv6. The pseudo header of UDP-Lite is different from | ||||
the pseudo header of UDP in one way: The value of the Length field of | ||||
the pseudo header is not taken from the UDP-Lite header, but rather | ||||
from information provided by the IP module. This computation is done | ||||
in the same manner as for TCP [RFC-793], and implies that the Length | ||||
field of the pseudo header includes the UDP-Lite header and all | ||||
subsequent octets in the IP payload. | ||||
A user interface should allow the same operations as for classic UDP. | 3.3. Application Interface | |||
In addition to this, it SHOULD provide a way for the sending | ||||
application to pass the checksum coverage value to the UDP Lite | An application interface should allow the same operations as for | |||
module. There SHOULD also be a way to pass the checksum coverage | UDP. In addition to this, it should provide a way for the sending | |||
application to pass the checksum coverage value to the UDP-Lite | ||||
module. There should also be a way to pass the checksum coverage | ||||
value to the receiving application, or at least let the receiving | value to the receiving application, or at least let the receiving | |||
application block delivery of packets with coverage values less than | application block delivery of packets with coverage values less than | |||
a value provided by the application. | a value provided by the application. | |||
We RECOMMEND that the default behaviour of UDP Lite is to mimic | It is RECOMMENDED that the default behavior of UDP-Lite be to mimic | |||
classic UDP by having the coverage field match the length of the UDP | UDP by having the Checksum Coverage field match the length of the | |||
Lite datagram and verifying the entire packet. Applications that want | UDP-Lite packet, and verify the entire packet. Applications that want | |||
to define the payload as partially insensitive to bit errors SHOULD | to define the payload as partially insensitive to bit errors (e.g. | |||
do that by a separate system call on the sender side. Applications | error tolerant codecs using RTP [RFC-1889]) should do that by an | |||
that wish to receive payloads which were only partially covered by a | explicit system call on the sender side. Applications that wish to | |||
checksum SHOULD inform the system by a separate system call. | receive payloads that were only partially covered by a checksum | |||
should inform the receiving system by an explicit system call. | ||||
IP Interface | The characteristics of the links forming an Internet path may vary | |||
greatly. It is therefore difficult to make assumptions about the | ||||
level or patterns of errors that may occur in the insensitive part of | ||||
the UDP-Lite payload. Applications that use UDP-Lite should not make | ||||
any assumptions regarding the correctness of the received data beyond | ||||
the indicated checksum coverage, and should if necessary introduce | ||||
their own appropriate validity checks. | ||||
As for classic UDP, the UDP Lite module must pass the pseudo header | 3.4. IP Interface | |||
to the UDP Lite module. The UDP Lite pseudo header contains the IP | ||||
addresses and protocol fields of the IP header, and also the length | ||||
of the IP payload which is derived from the length field of the IP | ||||
header. | ||||
The IP module MUST NOT pad the IP payload with extra bytes since the | As for UDP, the IP module must provide the pseudo header to the UDP- | |||
length of the UDP Lite payload delivered to the receiver depends on | Lite module. The UDP-Lite pseudo header contains the IP addresses and | |||
the length of the IP payload. | protocol fields of the IP header, and also the length of the IP | |||
payload, which is derived from the Length field of the IP header. | ||||
Lower layer considerations | The sender IP module MUST NOT pad the IP payload with extra octets | |||
since the length of the UDP-Lite payload delivered to the receiver | ||||
depends on the length of the IP payload. | ||||
Since UDP Lite can deliver packets with damaged payloads to an | 3.5. Jumbograms | |||
application that wants them, frames carrying UDP Lite packets need | ||||
not be discarded by lower layers when there are errors only in the | ||||
insensitive part. For a link layer that supports partial error | ||||
detection, the Coverage field in the UDP Lite header MAY be used as a | ||||
hint of where errors should be detected. Link layers that do not | ||||
support partial checksums SHOULD detect errors in the entire frame. | ||||
In general, lower layers SHOULD detect errors at least in the | ||||
sensitive part of the frame using strong error detection mechanisms, | ||||
but need not do so for the insensitive part. | ||||
Note that it is usually only over links where errors are frequent | The Checksum Coverage field is 16 bits and can represent a checksum | |||
that the partial checksum feature of UDP Lite can make a difference | coverage of up to 65535 octets. This allows arbitrary checksum | |||
to the application. On links where errors are infrequent it is | coverage for IP packets, unless they are Jumbograms. For Jumbograms, | |||
RECOMMENDED that lower layeers detect errors in the entire packet. | the checksum can cover either the entire payload (when the Checksum | |||
Coverage field has the value zero), or else at most the initial 65535 | ||||
octets of the UDP-Lite packet. | ||||
Jumbograms | 4. Lower Layer Considerations | |||
The Checksum Coverage field is 16 bits and can represent checksum | Since UDP-Lite can deliver packets with damaged payloads to an | |||
coverage up to 65535 octets. This allows arbitrary checksum coverage | application that wants them, frames carrying UDP-Lite packets need | |||
for IP datagrams, unless they are Jumbograms. For Jumbograms, the | not be discarded by lower layers when there are errors only in the | |||
Checksum can cover either the entire payload (when the Checksum | insensitive part. For a link that supports partial error detection, | |||
Coverage field has the value zero), or else at most the initial 65535 | the Checksum Coverage field in the UDP-Lite header MAY be used as a | |||
octets of the UDP Lite datagram. | hint of where errors do not need to be detected. Lower layers MUST | |||
use a strong error detection mechanism to detect at least errors that | ||||
occur in the sensitive part of the packet, and discard damaged | ||||
packets. The sensitive part consists of the octets between the first | ||||
octet of the IP header and the last octet identified by the Checksum | ||||
Coverage field. At least the sensitive part would thus be treated in | ||||
exactly the same way as UDP packets. | ||||
Backwards compatibility | Link layers that do not support partial error detection suitable for | |||
UDP-Lite, as described above, MUST detect errors in the entire UDP- | ||||
Lite packet, and discard damaged packets. The whole UDP-Lite packet | ||||
is thus treated in exactly the same way as a UDP packet. | ||||
The syntactic and semantic similarity between UDP Lite and classic | It should be noted that UDP-Lite would only make a difference to the | |||
UDP suggests that they might share the same protocol identifier. | application if partial error detection, based on the partial checksum | |||
This section explores some consequences of doing so. | feature of UDP-Lite, is implemented also by link layers, as discussed | |||
above. Obviously, partial error detection at the link layer would | ||||
only make a difference when implemented over error-prone links. | ||||
There are no known interoperability problems between classic UDP and | 5. Compatibility with UDP | |||
UDP Lite if they were to share the protocol identifier of classic | ||||
UDP. To be more precise: there is no case where a potentially | ||||
problematic packet is delivered to an unsuspecting application; a UDP | ||||
Lite payload with partial checksum coverage cannot be delivered to | ||||
UDP applications, and UDP datagrams which only partially fills the IP | ||||
payload cannot be delivered to UDP Lite applications. | ||||
If the protocol identifier was shared between UDP and UDP Lite and a | UDP and UDP-Lite have similar syntax and semantics. Applications | |||
UDP Lite implementation sends UDP Lite packets with partial checksums | designed for UDP may therefore use UDP-Lite instead, and will by | |||
to a classic UDP implementation, the classic UDP implementation would | default receive the same full packet coverage. The similarities also | |||
silently discard them because a mismatching pseudo header would cause | ease implementation of UDP-Lite, since only minor modifications are | |||
the UDP checksum to mismatch. Neither the sending nor the receiving | needed to an existing UDP implementation. | |||
application would be notified. The obvious solutions to this include | ||||
1) explicit application in-band signaling (not using the partial | UDP-Lite has been allocated a separate IP protocol identifier, XXXX | |||
checksum coverage option) to enable the sender to learn whether the | [INSERT IANA NUMBER BEFORE PUBLICATION], that allows a receiver to | |||
receiver is UDP Lite enabled or not, or | identify whether UDP or UDP-Lite is used. A system unaware of UDP- | |||
Lite will in general return an ICMP Protocol Unreachable error | ||||
message to the sender. This simple method of detecting UDP-Lite | ||||
unaware systems is the primary benefit of having separate protocol | ||||
identifiers. | ||||
2) use of out-of-band signaling such as H.323, SIP, or RTCP to convey | The remainder of this section provides the rationale for allocating a | |||
whether the receiver is UDP Lite enabled. | separate IP protocol identifier for UDP-Lite, rather than sharing the | |||
IP protocol identifier with UDP. | ||||
If UDP Lite has its own separate protocol identifier, on the other | There are no known interoperability problems between UDP and UDP-Lite | |||
hand, a system unaware of UDP Lite would return ICMP Protocol | if they were to share the protocol identifier with UDP. Specifically, | |||
Unreachable error messages to the sender. This simple method of | there is no case where a potentially problematic packet is delivered | |||
detecting UDP Lite unaware systems is the primary benefit of having | to an unsuspecting application; a UDP-Lite payload with partial | |||
separate protocol identifiers. | checksum coverage cannot be delivered to UDP applications, and UDP | |||
packets that only partially fill the IP payload cannot be delivered | ||||
to applications using UDP-Lite. | ||||
Therefore, this draft proposes to allocate a new protocol identifier | However, if the protocol identifier were to be shared between UDP and | |||
for UDP Lite. | UDP-Lite, and a UDP-Lite implementation was to send a UDP-Lite packet | |||
using a partial checksum to a UDP implementation, the UDP | ||||
implementation would silently discard the packet, because a | ||||
mismatching pseudo header would cause the UDP checksum to fail. | ||||
Neither the sending nor the receiving application would be notified. | ||||
Potential solutions to this could have been: | ||||
Security considerations | 1) explicit application in-band signaling (while not using the | |||
partial checksum coverage option) to enable the sender to learn | ||||
whether the receiver is UDP-Lite enabled or not, or | ||||
2) use of out-of-band signaling such as H.323, SIP, or RTCP to | ||||
convey whether the receiver is UDP-Lite enabled. | ||||
The security impact of UDP Lite is twofold. First, applications who | Anyway, since UDP-Lite has now been assigned its own protocol | |||
do not expect damaged payloads are bound to malfunction if damaged | identifier, there is no need to consider the possibility of delivery | |||
payloads are delivered to them. To avoid this, we RECOMMEND that the | of a UDP-Lite packet to an unsuspecting UDP port. | |||
sending and the receiving side application both explicitly enable the | ||||
partial checksum option. Packets with partial checksums SHOULD NOT | ||||
be delivered to applications that have not enabled the partial | ||||
checksum option. | ||||
Second, there is the question of how UDP Lite interacts with | 6. Security Considerations | |||
The security impact of UDP-Lite is related to its interaction with | ||||
authentication and encryption mechanisms. When the partial checksum | authentication and encryption mechanisms. When the partial checksum | |||
option of UDP Lite is enabled, it is fine with the application if the | option of UDP-Lite is enabled, the insensitive portion of a packet | |||
insensitive part of a packet changes in transit. This is contrary to | may change in transit. This is contrary to the idea behind most | |||
the idea behind most authentication mechanisms; authentication | authentication mechanisms: authentication succeeds if the packet has | |||
succeeds when the packet has not changed in transit. Unless | not changed in transit. Unless authentication mechanisms that operate | |||
authentication mechanisms that operate only on the sensitive part of | only on the sensitive part of packets are developed and used, | |||
packets are developed, authentication will always fail on UDP Lite | authentication will always fail on UDP-Lite packets where the | |||
packets where the insensitive part has been damaged. | insensitive part has been damaged. | |||
Encryption is also an issue when using UDP Lite. If a few bits of an | The IPSec integrity check (Encapsulation Security Protocol, ESP, or | |||
Authentication Header, AH) is applied (at least) to the entire IP | ||||
packet payload. Corruption of any bit within the protected area will | ||||
then result in the discarding of the UDP-Lite packet by the IP | ||||
receiver. | ||||
Encryption is also an issue when using UDP-Lite. If a few bits of an | ||||
encrypted packet are damaged, the decryption transform will typically | encrypted packet are damaged, the decryption transform will typically | |||
spread this error so that the packet becomes too damaged to be of | spread errors so that the packet becomes too damaged to be of use. | |||
use. Most strong encryption transforms today exhibit this behaviour, | Many strong encryption transforms today exhibit this behavior, for | |||
for good reason. It might be possible to develop encryption | reasons obvious from a security point of view. There exist encryption | |||
transforms which would not spread damage in this way when the damage | transforms, stream ciphers, which do not spread errors in this way | |||
occurs in the insensitive part of the packet. A class of such | when the damage occurs in the insensitive part of the packet. | |||
transforms would be transforms where the sensitive part is encrypted | ||||
using a strong transform as usual, and the insensitive part is | ||||
encrypted by XORing it with a cryptographic hash computed over the | ||||
cleartext of the sensitive part. However, it is clear that with most | ||||
transforms in use today, encryption eliminates the benefits that the | ||||
partial checksum coverage option of the UDP Lite might bring. | ||||
IANA considerations | 7. IANA Considerations | |||
We request that a new ip protocol identifier is allocated for UDP | A new IP protocol number, XXXX [INSERT NUMBER BEFORE PUBLICATION], | |||
Lite. | has been assigned for UDP-Lite. | |||
Conclusions | [NOTE, REMOVE BEFORE PUBLICATION] | |||
We have presented the UDP Lite protocol. The main motivation for this | IANA assignment instruction: | |||
new variant of the classic UDP transport protocol is decreased packet | - The IANA must reserve an IP protocol number for UDP-Lite. | |||
error rates for damage-tolerant applications today using classic UDP | ||||
in harsh network environments. UDP Lite provides optionally partial | ||||
checksum coverage which increases the flexibility of classic UDP by | ||||
making it possible to define a packet as partially insensitive to bit | ||||
errors on a per-packet basis. If no part of a packet is defined as | ||||
insensitive, UDP Lite is semantically identical to classic UDP. | ||||
Contact info | [END OF NOTE] | |||
8. References | ||||
8.1. Normative References | ||||
[RFC-768] Postel, J., "User Datagram Protocol", RFC 768 (STD6), | ||||
August 1980. | ||||
[RFC-791] Postel, J., "Internet Protocol", RFC 791 (STD5), | ||||
September 1981. | ||||
[RFC-793] Postel, J., "Transmission Control Protocol", RFC 793 | ||||
(STD7), September 1981. | ||||
[RFC-1071] Braden, R., Borman, D., and C. Partridge, "Computing the | ||||
Internet Checksum", RFC 1071, September 1988. | ||||
[RFC-2119] Bradner, S., "Key words for use in RFCs to Indicate | ||||
Requirement Levels", RFC 2119 (BCP15), March 1997. | ||||
[RFC-2460] Deering, S., and R. Hinden, "Internet Protocol, Version 6 | ||||
(IPv6) Specification", RFC 2460, December 1998. | ||||
8.2. Informative References | ||||
[RFC-1889] Schulzrinne, H., Casner, S., Frederick, R., and | ||||
V. Jacobson, "RTP: A Transport Protocol for Real-Time | ||||
Applications", RFC 1889, January 1996. | ||||
[RFC-2026] Bradner, S., "The Internet Standards Process", RFC 2026, | ||||
October 1996. | ||||
[RFC-2402] Kent, S., and R. Atkinson, "IP Authentication Header", | ||||
RFC 2402, November 1998. | ||||
[RFC-2406] Kent, S., and R. Atkinson, "IP Encapsulating Security | ||||
Payload (ESP)", RFC 206, November 1998. | ||||
[UDP-LITE] Larzon, L-A., Degermark, M., and S. Pink, "UDP Lite for | ||||
Real-Time Multimedia Applications", Proceedings of the | ||||
IEEE International Conference of Communications (ICC), | ||||
1999. | ||||
9. Acknowledgements | ||||
Thanks to Ghyslain Pelletier for significant technical and editorial | ||||
comments. Thanks also to Elisabetta Carrara and Mats Naslund for | ||||
reviewing the security considerations chapter, and to Peter Eriksson | ||||
for doing a language review and thereby improving the clarity of this | ||||
document. | ||||
10. Authors' Addresses | ||||
Lars-Ake Larzon | Lars-Ake Larzon | |||
Department of CS & EE | Department of CS & EE | |||
Lulea University of Technology | Lulea University of Technology | |||
S-971 87 Lulea, Sweden | S-971 87 Lulea, Sweden | |||
Email: lln@cdt.luth.se | Email: lln@cdt.luth.se | |||
Mikael Degermark | Mikael Degermark | |||
Department of Computer Science | Department of Computer Science | |||
The University of Arizona | The University of Arizona | |||
P.O. Box 210077 | P.O. Box 210077 | |||
Tucson, AZ 85721-0077 | Tucson, AZ 85721-0077, USA | |||
Email: micke@cs.arizona.edu | Email: micke@cs.arizona.edu | |||
Stephen Pink | Stephen Pink | |||
The University of Arizona | The University of Arizona | |||
P.O. Box 210077 | P.O. Box 210077 | |||
Tucson, AZ 85721-0077 | Tucson, AZ 85721-0077, USA | |||
Email: steve@cs.arizona.edu | Email: steve@cs.arizona.edu | |||
Normative References | Lars-Erik Jonsson | |||
Ericsson AB | ||||
Box 920 | ||||
S-971 28 Lulea, Sweden | ||||
Email: lars-erik.jonsson@ericsson.com | ||||
[RFC-768] Postel, J., "User Datagram Protocol," RFC 768, | Godred Fairhurst | |||
Information Sciences Institute, August 1980. | Department of Engineering | |||
University of Aberdeen | ||||
Aberdeen, AB24 3UE, UK | ||||
Email: gorry@erg.abdn.ac.uk | ||||
[RFC-793] Postel, J., "Transmission Control Protocol," RFC 793, | Full Copyright Statement | |||
Information Sciences Institute, September 1981. | ||||
[RFC-2460] Deering, S., Hinden, R., "Internet Protocol, Version 6 | Copyright (C) The Internet Society (2002). All Rights Reserved. | |||
(IPv6) Specification," RFC 2460, IETF, December 1998. | ||||
Informative References | 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. | ||||
[RFC-2026] Bradner, S., "The Internet Standards Process," RFC 2026, | The limited permissions granted above are perpetual and will not be | |||
Harvard University, October 1996. | revoked by the Internet Society or its successors or assigns. | |||
[RFC-2119] Bradner, S., "Key words for use in RFCs to Indicate | This document and the information contained herein is provided on an | |||
Requirement Levels," Harvard University, March 1997. | "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 draft expires July 24, 2002 | This Internet-Draft expires June 5, 2003. | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |