[ih] UDP Length Field?

Jack Haverty jack at 3kitty.org
Sat Nov 28 18:16:57 PST 2020


It's been a long time (40 years), but I remember the meetings circa 1980
where we split the original TCP header into the separate TCP and IP
headers.   I can't recall most of the discussion, but I remember the
motivation for defining UDP was driven by the desire to experiment with
things like voice, using quick but unguaranteed delivery, as well as
actions that could be carried out with a single command/response
interaction.   That also motivated inclusion of functionality such as
TOS, so that different kinds of use of IP could get different types of
service most suitable for reliable-stream versus voice.

The definition of UDP was done in a few hours, and intended for
experimental use.  On the ARPANET, there was a "datagram mode" which
provided similar unsequenced, non-guaranteed service as did UDP.  But
ARPANET management rarely permitted datagram mode to be used, fearing
that it might bring down the network.  So a backlog of desired
experimentation with datagrams had built up, and UDP was the vehicle for
exploring such ideas in the Internet context.

I don't recall exactly which experimental usage scenarios drove the
specifics of UDP, in particular why there is a length field.   That was
very much a time of "rough consensus and running code", so as a header
format appeared on the board at the front of the room, and there were no
strong objections, it became UDP.   We were expecting that it would
change as experimental results made the needs more clear, and didn't
really expect that the suite of protocols would set in concrete so
quickly and last so long.

I do recall that one plausible usage scenario was to send multiple UDP
payloads within one IP datagram.   The Length field made that possible. 
I don't remember the exact details, but it may have been an early idea
associated with doing multi-casting.   Perhaps the MBONE used it -- I
don't remember...?

/Jack Haverty


On 11/28/20 3:42 PM, Timothy J. Salo via Internet-history wrote:
> Hi,
>
> Can anyone provide some [historical] insight into why the UDP header
> contains a length field?  TCP manages to ascertain the length of data in
> a packet just fine without a length field, so why couldn't UDP?
>
> Several people have noted that the UDP length field is redundant,
> including for example, the current Internet Draft "Transport Options for
> UDP",
> <https://www.ietf.org/archive/id/draft-ietf-tsvwg-udp-options-09.txt>.
>
> There are some other opinions, some of which sound to me like
> after-the-fact reasoning:
>
> - So that UDP can run over network protocols other than IP (although
>   presumably TCP could do this just fine without a length field).  But,
>   the UDP spec says that an IP-like pseudo header needs to be created,
>   in any case.
>
> - Layering and encapsulation reasons, (although, again, TCP seems like
>   a counter example).
>
> - Word alignment, (there were 16-bits left over, so why not use it for
>   the length?).  Personally, this sounds the most likely to me.
>
> Thanks,
>
> -tjs




More information about the Internet-history mailing list