[e2e] TCP Framing

Constantine Sapuntzakis csapuntz at stanford.edu
Fri Mar 30 22:33:41 PST 2001


Hi Mike,

I hope this e-mail can respond to a couple of your very good and
thought-provoking points.

I'll use the term upper-layer protocol (ULP) to talk about the protocol
riding on top of TCP. Some examples of ULPs include iSCSI, SSL, NFS, and
RDMA.

There are two properties we were looking to get from TCP:

1) finding NLP message boundaries in segments received out-of-order

This involves having some signalling discipline for message boundaries.

There are several ways other than the one we proposed of providing this
property (including techniques that do not modify the TCP sender). These
include having  a header periodically in the TCP stream (say every 1000
bytes) or a byte-stuffing technique like COBS.

2) application messages not spanning segments

This simplifies the receiver as it does not have to deal with cases where
ULP headers span segments or
where ULP datagrams are broken across TCP segments.

I don't believe that property #2 can be had without modifying the TCP sender
a la the proposal presented.

-----------

One could question how critical property #2 is. After all, if stuff arrives
mostly in order except for the occasional drop, you can keep a bit of
application state from packet to packet. I would still argue that property
#2 makes life on the fast path a good deal easier for the receiver.

-Costa





More information about the end2end-interest mailing list