[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