RFC 3828 PROPOSED STANDARD TRANSPORT · DATAGRAMS · CHECKSUMS

The Lightweight User Datagram Protocol (UDP-Lite)

UDP with a flexible checksum, so damaged audio or video can still reach the application.

On rfc-editor.org ↗
PUBLISHED
July 2004
AUTHORS
L-A. Larzon, M. Degermark, S. Pink, L-E. Jonsson, G. Fairhurst
STREAM
IETF
UPDATED BY
RFC 6335 — Service Name/Port Registry
IP PROTOCOL NUMBER
136 (UDPLite)
HEADER FIELDS
4, each 16 bits
VALID CHECKSUM COVERAGE
0 (whole packet) or at least 8
COVERAGE 1 TO 7
Packet MUST be discarded
COVERAGE FOR NO PAYLOAD PROTECTION
8
DOI
10.17487/RFC3828

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                        L-A. Larzon
Request for Comments: 3828                Lulea University of Technology
Category: Standards Track                                   M. Degermark
                                                                 S. Pink
                                               The University of Arizona
                                                       L-E. Jonsson, Ed.
                                                                Ericsson
                                                       G. Fairhurst, Ed.
                                                  University of Aberdeen
                                                               July 2004


           The Lightweight User Datagram Protocol (UDP-Lite)

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 (2004).

Abstract

   This document describes the Lightweight User Datagram Protocol (UDP-
   Lite), which is similar to the User Datagram Protocol (UDP) (RFC
   768), but can also serve applications in error-prone network
   environments that prefer to have partially damaged payloads delivered
   rather than discarded.  If this feature is not used, UDP-Lite is
   semantically identical to UDP.

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
   2.  Terminology. . . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.  Protocol Description . . . . . . . . . . . . . . . . . . . . .  3
       3.1.  Fields . . . . . . . . . . . . . . . . . . . . . . . . .  4
       3.2.  Pseudo Header. . . . . . . . . . . . . . . . . . . . . .  5
       3.3.  Application Interface. . . . . . . . . . . . . . . . . .  5
       3.4.  IP Interface . . . . . . . . . . . . . . . . . . . . . .  6
       3.5.  Jumbograms . . . . . . . . . . . . . . . . . . . . . . .  6
   4.  Lower Layer Considerations . . . . . . . . . . . . . . . . . .  6
   5.  Compatibility with UDP . . . . . . . . . . . . . . . . . . . .  7
   6.  Security Considerations. . . . . . . . . . . . . . . . . . . .  8
   7.  IANA Considerations. . . . . . . . . . . . . . . . . . . . . .  8
   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . .  9
       8.1.  Normative References . . . . . . . . . . . . . . . . . .  9
       8.2.  Informative References . . . . . . . . . . . . . . . . .  9
   9.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 10
   10. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 11
   11. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 12

1.  Introduction

   This document describes a new transport protocol, UDP-Lite, (also
   known as UDPLite).  This new protocol is based on three observations:

   First, there is a class of applications that benefit from having
   damaged data delivered rather than discarded by the network.  A
   number of codecs for voice and video fall into this class (e.g., the
   AMR speech codec [RFC-3267], the Internet Low Bit Rate Codec [ILBRC],
   and error resilient H.263+ [ITU-H.263], H.264 [ITU-H.264; H.264], and
   MPEG-4 [ISO-14496] video codecs).  These codecs may be designed to
   cope better with errors in the payload than with loss of entire
   packets.

   Second, all links that support IP transmission should use a strong
   link layer integrity check (e.g., CRC-32 [RFC-3819]), and this MUST
   be used by default for IP traffic.  When the under-lying link
   supports it, certain types of traffic (e.g., UDP-Lite) may benefit
   from a different link behavior that permits partially damaged IP
   packets to be forwarded when requested [RFC-3819].  Several radio
   technologies (e.g., [3GPP]) support this link behavior when operating
   at a point where cost and delay are sufficiently low.  If error-prone
   links are aware of the error sensitive portion of a packet, it is
   also possible for the physical link to provide greater protection to
   reduce the probability of corruption of these error sensitive bytes
   (e.g., the use of unequal Forward Error Correction).

   Third, intermediate layers (i.e., IP and the transport layer
   protocols) should not prevent error-tolerant applications from
   running well in the presence of such links.  IP is not a problem in
   this regard, since the IP header has no checksum that covers the IP
   payload.  The generally available transport protocol best suited for
   these applications is UDP, since it has no overhead for
   retransmission of erroneous packets, in-order delivery, or error
   correction.  In IPv4 [RFC-791], the UDP checksum covers either the
   entire packet or nothing at all.  In IPv6 [RFC-2460], the UDP
   checksum is mandatory and must not be disabled.  The IPv6 header does
   not have a header checksum and it was deemed necessary to always
   protect the IP addressing information by making the UDP checksum
   mandatory.

   A transport protocol is needed that conforms to the properties of
   link layers and applications described above [LDP99].  The error-
   detection mechanism of the transport layer must be able to protect
   vital information such as headers, but also to optionally ignore
   errors best dealt with by the application.  The set of octets to be
   verified by the checksum is best specified by the sending
   application.

   UDP-Lite provides a checksum with an optional partial coverage.  When
   using this option, a packet is divided into a sensitive part (covered
   by the checksum) and an insensitive part (not covered by the
   checksum).  Errors in the insensitive part will not cause the packet
   to be discarded by the transport layer at the receiving end host.
   When the checksum covers the entire packet, which should be the
   default, UDP-Lite is semantically identical to UDP.

   Compared to UDP, the UDP-Lite partial checksum provides extra
   flexibility for applications that want to define the payload as
   partially insensitive to bit errors.

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].

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
      +--------+--------+--------+--------+
      |     Source      |   Destination   |
      |      Port       |      Port       |
      +--------+--------+--------+--------+
      |    Checksum     |                 |
      |    Coverage     |    Checksum     |
      +--------+--------+--------+--------+
      |                                   |
      :              Payload              :
      |                                   |
      +-----------------------------------+

      Figure 1: UDP-Lite Header Format

3.1.  Fields

   The fields Source Port and Destination Port are defined as in the UDP
   specification [RFC-768].  UDP-Lite uses the same set of port number
   values assigned by the IANA for use by UDP.

   Checksum Coverage is the number of octets, counting from the first
   octet of the UDP-Lite header, that are covered by the checksum.  The
   UDP-Lite header MUST always be covered by the checksum.  Despite this
   requirement, the Checksum Coverage is expressed in octets from the
   beginning of the UDP-Lite header in the same way as for UDP.  A
   Checksum Coverage of zero indicates that the entire UDP-Lite packet
   is covered by the checksum.  This means that the value of the
   Checksum Coverage field MUST be either 0 or at least 8.  A UDP-Lite
   packet with a Checksum Coverage value of 1 to 7 MUST be discarded by
   the receiver.  Irrespective of the Checksum Coverage, the computed
   Checksum field MUST include a pseudo-header, based on the IP header
   (see below).  UDP-Lite packets with a Checksum Coverage greater than
   the IP length MUST also be discarded.

   The Checksum field is the 16-bit one's complement of the one's
   complement sum of a pseudo-header of information collected from the
   IP header, the number of octets specified by the Checksum Coverage
   (starting at the first octet in the UDP-Lite header), virtually
   padded with a zero octet at the end (if necessary) to make a multiple
   of two octets [RFC-1071].  Prior to computation, the checksum field
   MUST be set to zero.  If the computed checksum is 0, it is
   transmitted as all ones (the equivalent in one's complement
   arithmetic).

   Since the transmitted checksum MUST NOT be all zeroes, an application
   using UDP-Lite that wishes to have no protection of the packet
   payload 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.

3.2.  Pseudo Header

   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.

3.3.  Application Interface

   An application interface should allow the same operations as for 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
   application block delivery of packets with coverage values less than
   a value provided by the application.

   It is RECOMMENDED that the default behavior of UDP-Lite be set to
   mimic UDP by having the Checksum Coverage field match the length of
   the UDP-Lite packet and verify the entire packet.  Applications that
   wish to define the payload as partially insensitive to bit errors
   (e.g., error tolerant codecs using RTP [RFC-3550]) should do this by
   an explicit system call on the sender side.  Applications that wish
   to receive payloads that were only partially covered by a checksum
   should inform the receiving system by an explicit system call.

   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 corruption
   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 position indicated by the Checksum
   Coverage field, and should, if necessary, introduce their own
   appropriate validity checks.

3.4.  IP Interface

   As for UDP, the IP module must provide the pseudo header to the UDP-
   Lite protocol module (known as the UDPLite 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 in the IP header.

   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.

3.5.  Jumbograms

   The Checksum Coverage field is 16 bits and can represent a Checksum
   Coverage value of up to 65535 octets.  This allows arbitrary checksum
   coverage for IP packets, unless they are Jumbograms.  For Jumbograms,
   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.

4.  Lower Layer Considerations

   Since UDP-Lite can deliver packets with damaged payloads to an
   application that wishes to receive them, frames carrying UDP-Lite
   packets need not be discarded by lower layer protocols when there are
   errors only in the insensitive part.  For a link that supports
   partial error detection, the Checksum Coverage field in the UDP-Lite
   header MAY be used as a hint of where errors do not need to be
   detected.  Lower layers MUST use a strong error detection mechanism
   [RFC-3819] 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.  The
   sensitive part would thus be treated in exactly the same way as for a
   UDP packet.

   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 MUST discard damaged packets [RFC-3819].  The whole
   UDP-Lite packet is thus treated in exactly the same way as a UDP
   packet.

   It should be noted that UDP-Lite would only make a difference to an
   application if partial error detection, based on the partial checksum
   feature of UDP-Lite, is implemented also by link layers, as discussed
   above.  Partial error detection at the link layer would only make a
   difference when implemented over error-prone links.

5.  Compatibility with UDP

   UDP and UDP-Lite have similar syntax and semantics.  Applications
   designed for UDP may therefore use UDP-Lite instead, and will by
   default receive the same full packet coverage.  The similarities also
   ease implementation of UDP-Lite, since only minor modifications are
   needed to an existing UDP implementation.

   UDP-Lite has been allocated a separate IP protocol identifier, 136
   (UDPLite), that allows a receiver to identify whether UDP or UDP-Lite
   is used.  A destination end host that is unaware of UDP-Lite will, in
   general, return an ICMP "Protocol Unreachable" or an ICMPv6 "Payload
   Type Unknown" error message (depending on the IP protocol type).
   This simple method of detecting UDP-Lite unaware systems is the
   primary benefit of having separate protocol identifiers.

   The remainder of this section provides the rationale for allocating a
   separate IP protocol identifier for UDP-Lite, rather than sharing the
   IP protocol identifier with UDP.

   There are no known interoperability problems between UDP and UDP-Lite
   if they were to share the protocol identifier with UDP.
   Specifically, 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 packets that only partially fill the IP payload cannot be
   delivered to applications using UDP-Lite.

   However, if the protocol identifier were to have been shared between
   UDP and 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:

   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.

   Since UDP-Lite has been assigned its own IP protocol identifier,
   there is no need to consider this possibility of delivery of a UDP-
   Lite packet to an unsuspecting UDP port.

6.  Security Considerations

   The security impact of UDP-Lite is related to its interaction with
   authentication and encryption mechanisms.  When the partial checksum
   option of UDP-Lite is enabled, the insensitive portion of a packet
   may change in transit.  This is contrary to the idea behind most
   authentication mechanisms: authentication succeeds if the packet has
   not changed in transit.  Unless authentication mechanisms that
   operate only on the sensitive part of packets are developed and used,
   authentication will always fail for UDP-Lite packets where the
   insensitive part has been damaged.

   The IPsec integrity check (Encapsulation Security Protocol, ESP
   [RFC-2406], or Authentication Header, AH [RFC-2402]) is applied (at
   least) to the entire IP packet payload. Corruption of any bit within
   the protected area will then result in the IP receiver discarding the
   UDP-Lite packet.

   When IPsec is used with ESP payload encryption, a link can not
   determine the specific transport protocol of a packet being forwarded
   by inspecting the IP packet payload.  In this case, the link MUST
   provide a standard integrity check covering the entire IP packet and
   payload.  UDP-Lite provides no benefit in this case.

   Encryption (e.g., at the transport or application levels) may be
   used.  If a few bits of an encrypted packet are damaged, the
   decryption transform will typically spread errors so that the packet
   becomes too damaged to be of use.  Many encryption transforms today
   exhibit this behavior.  There exist encryption transforms, and stream
   ciphers, which do not cause error propagation.  Note that omitting an
   integrity check can, under certain circumstances, compromise
   confidentiality [Bellovin98].  Proper use of stream ciphers poses its
   own challenges [BB01].  In particular, an attacker can cause
   predictable changes to the ultimate plaintext, even without being
   able to decrypt the ciphertext.

7.  IANA Considerations

   A new IP protocol number, 136 has been assigned for UDP-Lite.  The
   name associated with this protocol number is "UDPLite".  This ensures
   compatibility across a wide range of platforms, since on some
   platforms the "-" character may not form part of a protocol entity
   name.

8.  References

8.1.  Normative References

   [RFC-768]    Postel, J., "User Datagram Protocol", STD 6, RFC 768,
                August 1980.

   [RFC-791]    Postel, J., "Internet Protocol", STD 5, RFC 791,
                September 1981.

   [RFC-793]    Postel, J., "Transmission Control Protocol", STD 7, RFC
                793, 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", BCP 14, RFC 2119, March 1997.

   [RFC-2460]   Deering, S. and R. Hinden, "Internet Protocol, Version 6
                (IPv6) Specification", RFC 2460, December 1998.

8.2.  Informative References

   [Bellovin98] Bellovin, S.M., "Cryptography and the Internet", in
                Proceedings of CRYPTO '98, August 1988.

   [BB01]       Bellovin, S. and M. Blaze, "Cryptographic Modes of
                Operation for the Internet", Second NIST Workshop on
                Modes of Operation, August 2001.

   [3GPP]       "Technical Specification Group Services and System
                Aspects; Quality of Service (QoS) concept and
                architecture", TS 23.107 V5.9.0, Technical Specification
                3rd  Generation Partnership Project, June 2003.

   [H.264]      Hannuksela, M.M., Stockhammer, T., Westerlund, M. and D.
                Singer, "RTP payload Format for H.264 Video", Internet
                Draft, Work in Progress, March 2003.

   [ILBRC]      S.V. Andersen, et. al., "Internet Low Bit Rate Codec",
                Work in Progress, March 2003.

   [ISO-14496]  ISO/IEC International Standard 1446 (MPEG-4),
                "Information Technology Coding of Audio-Visual Objects",
                January 2000.

   [ITU-H.263]  "Video Coding for Low Bit Rate Communication," ITU-T
                Recommendation H.263, January 1998.

   [ITU-H.264]  "Draft ITU-T Recommendation and Final Draft
                International Standard of Joint Video Specification",
                ITU-T Recommendation H.264, May 2003.

   [RFC-3819]   Karn, Ed., P., Bormann, C., Fairhurst, G., Grossman, D.,
                Ludwig, R., Mahdavi, J., Montenegro, G., Touch, J. and
                L. Wood, "Advice for Internet Subnetwork Designers", BCP
                89, RFC 3819, July 2004.

   [RFC-3550]   Schulzrinne, H., Casner, S., Frederick, R. and V.
                Jacobson, "RTP: A Transport Protocol for Real-Time
                Applications", RFC 3550, July 2003.

   [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 2406, November 1998.

   [RFC-3267]   Sjoberg, J., Westerlund, M., Lakeaniemi, A. and Q. Xie,
                "Real-Time Transport Protocol (RTP) Payload Format and
                File Storage Format for the Adaptive Multi-Rate (AMR)
                and Adaptive Multi-Rate Wideband (AMR-WB) Audio Codecs",
                RFC 3267, June 2002.

   [LDP99]      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 Steven Bellovin, Elisabetta Carrara, and
   Mats Naslund for reviewing the security considerations chapter, and
   to Peter Eriksson for a language review, thereby improving the
   clarity of this document.

10.  Authors' Addresses

   Lars-Ake Larzon
   Department of CS & EE
   Lulea University of Technology
   S-971 87 Lulea, Sweden

   EMail: lln@csee.ltu.se


   Mikael Degermark
   Department of Computer Science
   The University of Arizona
   P.O. Box 210077
   Tucson, AZ 85721-0077, USA

   EMail: micke@cs.arizona.edu


   Stephen Pink
   The University of Arizona
   P.O. Box 210077
   Tucson, AZ 85721-0077, USA

   EMail: steve@cs.arizona.edu


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

   EMail: lars-erik.jonsson@ericsson.com


   Godred Fairhurst
   Department of Engineering
   University of Aberdeen
   Aberdeen, AB24 3UE, UK

   EMail: gorry@erg.abdn.ac.uk

11.  Full Copyright Statement

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

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

Intellectual Property

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

   Copies of IPR disclosures made to the IETF Secretariat 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 implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

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

Acknowledgement

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

AI ELI5

On this page
PROBLEMUDP checksums cover the whole packet or nothing at all, so on error-prone links a packet with a few damaged payload bits is discarded even when a voice or video codec could have coped with it.
MECHANISMUDP-Lite replaces the UDP Length field with a Checksum Coverage field. The checksum protects only the first part of the packet (always including the header), and errors after that point do not cause the packet to be discarded.
WHY IT MATTERSApplications that want partial protection get it, while full coverage makes UDP-Lite semantically identical to UDP. It has its own IP protocol number, 136. RFC 3828 is a Proposed Standard and is updated by RFC 6335.

§1Why Damaged Data Can Be Useful

RFC 3828 starts from three observations. First, some applications benefit from receiving damaged data rather than nothing. The RFC names voice and video codecs such as the AMR speech codec, the Internet Low Bit Rate Codec, and error resilient H.263+, H.264 and MPEG-4, which may cope better with errors in the payload than with the loss of whole packets.

Second, all links that carry IP should use a strong link layer integrity check, and that MUST be used by default. When the link supports it, certain traffic such as UDP-Lite may be allowed to forward partially damaged IP packets on request. Several radio technologies support this behavior.

Third, the layers above the link should not get in the way. IP is fine, because the IPv4 header checksum does not cover the payload. UDP is the best available transport, but in IPv4 its checksum covers either the entire packet or nothing, and in IPv6 the UDP checksum is mandatory and must not be disabled.

Imagine a song on a scratched CD. If one tiny scratch makes the player throw the whole song away, that is silly. Some songs sound fine with a small scratch.

§3.1The UDP-Lite Header and Its Fields

The header looks like the UDP header, with one change: the Length field is replaced by Checksum Coverage. This works because the packet length can be obtained from the IP module, the same way TCP does it. The header has four 16-bit fields: Source Port, Destination Port, Checksum Coverage and Checksum, followed by the payload.

Ports are defined as in UDP, and UDP-Lite uses the same port number values assigned by IANA for UDP.

Checksum Coverage is the number of octets, counted from the first octet of the UDP-Lite header, that the checksum covers. The header MUST always be covered. A value of zero means the entire packet is covered. Otherwise the value MUST be at least 8, and a packet with a coverage of 1 to 7 MUST be discarded by the receiver, as MUST a packet whose coverage is greater than the IP length.

The label on the package has a new box that says how much of the package you promise to check for damage. The label itself is always checked.

UDP-LITE HEADER (RFC 3828, FIGURE 1)
UDP-Lite header
FieldNameSizeValueDescription
SRC-PORTSource Port2 bytesDefined as in UDP.
DST-PORTDestination Port2 bytesDefined as in UDP.
COVERAGEChecksum Coverage2 bytesOctets covered by the checksum, from the first header octet. 0 means the whole packet; otherwise at least 8.
CHECKSUMChecksum2 bytesOne's complement checksum over a pseudo-header and the covered octets.

§3.1.1How the Checksum Is Computed

The Checksum field is the 16-bit one's complement of the one's complement sum of three things: a pseudo-header collected from the IP header, the number of octets given by Checksum Coverage (starting at the first octet of the UDP-Lite header), and a virtual zero octet of padding if needed to make a multiple of two octets. Before computing, the checksum field MUST be set to zero. If the result is 0, it is transmitted as all ones.

Because the transmitted checksum MUST NOT be all zeroes, an application that wants no protection for the payload should use a Checksum Coverage of 8. This still differs from UDP over IPv4 with no checksum, because the minimal UDP-Lite checksum always covers the header, including the Checksum Coverage field.

The pseudo-header is the same idea as in UDP, with one difference: its Length value is not taken from the UDP-Lite header. It comes from the IP module, as for TCP, and includes the UDP-Lite header and all following octets of the IP payload.

The checksum is a quick math score of the part you chose to protect. The receiver redoes the math, and if the scores differ, the package is thrown away.

§3.3Application and IP Interfaces

The application interface should allow the same operations as UDP, plus a way for the sender to pass in the Checksum Coverage value. There should also be a way to pass the coverage value to the receiving application, or at least let the receiver block delivery of packets with coverage below a value it chooses.

It is RECOMMENDED that the default mimic UDP: coverage matching the whole packet. Applications that treat part of the payload as insensitive to bit errors, for example error tolerant codecs using RTP, should ask for that with an explicit system call on the sender side, and receivers wanting partly covered payloads should also ask explicitly. Applications should not assume the data beyond the coverage point is correct, and should add their own validity checks if needed.

On the IP side, the IP module must provide the pseudo-header, and the sender IP module MUST NOT pad the IP payload with extra octets, because the UDP-Lite payload length seen by the receiver depends on the IP payload length. For Jumbograms, the checksum can cover either the entire payload (coverage zero) or at most the initial 65535 octets.

By default the program checks everything, like UDP. Only a program that asks can say that the end of the package may be a bit scratched.

§4Lower Layers and Compatibility with UDP

A link that supports partial error detection MAY use the Checksum Coverage field as a hint of where errors need not be detected. Lower layers MUST still use a strong error detection mechanism for the sensitive part, which runs from the first octet of the IP header to the last octet named by the coverage, and discard packets damaged there. Links without suitable partial detection MUST check the whole packet and discard damaged ones, so the packet is treated exactly like UDP. The RFC notes that UDP-Lite only makes a difference to an application if link layers also implement partial error detection over error-prone links.

UDP-Lite has its own IP protocol identifier, 136 (UDPLite). A host that does not know UDP-Lite will generally return an ICMP Protocol Unreachable or an ICMPv6 Payload Type Unknown error, which is the main benefit of a separate identifier. If the identifier were shared with UDP, a UDP receiver would silently discard a partially covered UDP-Lite packet because the pseudo-header would not match and the checksum would fail, with neither application told.

The postal workers only get to skip checking the scratched part if they know how. Otherwise they check everything. UDP-Lite also has its own stamp, so a mailbox that does not understand it can say so.

UDP VS UDP-LITE (FROM RFC 3828)
ProtocolField after portsChecksum scopeIP protocol identifier
UDPLengthEntire packet (or none in IPv4)Its own, shared with UDP only
UDP-Lite THIS RFCChecksum CoverageChosen by the sender; header always covered136 (UDPLite)

§6Security Considerations

The main security impact is how UDP-Lite interacts with authentication and encryption. With partial coverage, the insensitive part may change in transit, which conflicts with authentication that succeeds only if the packet is unchanged. Unless authentication that works only on the sensitive part is developed and used, authentication will fail for UDP-Lite packets with a damaged insensitive part.

The IPsec integrity check (ESP or AH) applies to at least the entire IP payload, so corruption of any protected bit leads to the packet being discarded. With ESP payload encryption, a link cannot see the transport protocol, so it MUST provide a standard integrity check over the whole packet, and UDP-Lite provides no benefit.

Encryption transforms that spread errors usually make a slightly damaged packet useless. Some transforms and stream ciphers do not propagate errors, but omitting an integrity check can in some circumstances compromise confidentiality, and stream ciphers pose their own challenges, such as an attacker causing predictable changes to the plaintext.

A tamper seal breaks if anything changes. If you allow some scratching, the seal cannot tell scratches from tampering, so seals and UDP-Lite do not mix well.

§7References