RFC 962 UNKNOWN TRANSPORT · TCP

TCP-4 prime

Ideas for faster transaction-oriented TCP variants.

On rfc-editor.org ↗
PUBLISHED
November 1985
AUTHORS
M.A. Padlipsky
STREAM
Legacy
PROPOSED COMMAND BITS
NYS (no-way handshake), NIF (graceless close)
DOI
10.17487/RFC0962

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                    M. A. Padlipsky
Request for Comments: 962                                  Mitre-Bedford
                                                           November 1985

                              TCP-4 Prime


STATUS OF THIS MEMO

   This memo continues the discussion of a possible transaction oriented
   transport protocol.  This memo does not propose a standard.
   Distribution of this memo is unlimited.

DISCUSSION

In response to Bob Braden's call for a transaction oriented
protocol (RFC-955), the following thoughts come to mind:

   o   The perceived problem is that connection set-up and tear-down
       take too long.

   o   Other aspects of TCP's reliability/robustness approach are
       presumably still desirable.

   o   We have some spare command bits in the TCP header, and I trust
       that there's still a version number field.

   o   So why not add NYS (no-way handshake) and NIF (graceless close)
       commands to TCP and leave everything else as was (except for the
       version, of course)?

Philosophically, that might be somewhat at variance with "the spirit of
TCP," but pragmatically it ought to do the trick. Some careful crafting
might be required for ISN handling with NYS, but my guess is that if you
have to resend the first/possibly only segment you just pretend you're
all of a sudden in the middle of SN space (initially you start at the
bottom of it) and when it sees the funny ISN the NYS handler knows it
should dequeue anything it might have had pending for (re)transmission
and start fresh, assuming that if anything gets through to the starting
side belatedly it'll get chucked because of being well outside the left
edge of the window, if I'm remembering that part right--and please be
aware that I'm not bothering to confirm recollections because I don't
want to pretend that this is the spec: it's just meant to be the
concept, in TV talk.  (On the NYS emitting side, presumably you just
drop right into ack_expected state--or whatever the right name is--after
setting an appropriate bit that'll get you to fiddle the ISN if you take
a timeout.)   Maybe you even fiddle the ISNs more elaborately, to allow
for several false starts rather than "two strikes and you're out," and
maybe we take some spurious segment hits if SNs get suitably balled up,
but if you really think handshaking is too expensive then that's the way
the premise crumbles.

TCP-4 Prime


Speaking of graceless closes

AI ELI5

On this page
PROBLEMTCP's connection setup and teardown sequences are too slow for transaction-oriented workloads that send a single request and get a single response.
MECHANISMRFC 962 sketches adding two new optional command bits to TCP: NYS (no-way handshake) to skip the three-way handshake, and NIF (graceless close) to skip the connection teardown sequence.
STATUS TODAYThis is a theoretical discussion of potential optimizations, not a formal proposal. The RFC does not standardize TCP-4 or recommend implementation.

§1The Transaction Problem in TCP

RFC 962 is a response to RFC 955, which called for a transaction-oriented transport protocol. The author observes that the problem with TCP for transactions is that the standard three-way handshake (SYN, SYN-ACK, ACK) and the four-way close sequence consume time even for workloads that exchange only one request and one response. The RFC does not propose a standard but rather sketches ideas to stimulate discussion.

When you use TCP to ask a quick question and get a quick answer, you have to shake hands before and after. Someone suggests skipping those handshakes.

§2NYS and NIF: Faster Connections

The RFC proposes adding two command bits to TCP: NYS (no-way handshake) to begin a connection without the standard three-way handshake, and NIF (graceless close) to end a connection without the normal four-way teardown. Both would be optional flags in the TCP header. The author notes that spare command bits already exist in the TCP header, and version numbers could be incremented to signal support.

For NYS, the sender must handle the possibility of the receiver not supporting it; the rough idea is to treat a failed NYS as if you are starting in the middle of the TCP sequence number space and adjust accordingly if retransmission is needed.

NYS skips the greeting. NIF skips the goodbye. If one side doesn't get it, you reset and try again with the old way.

§3Caveats and Questions

The author acknowledges that this approach diverges from "the spirit of TCP" and notes that careful design would be needed, especially for handling Initial Sequence Numbers (ISN) in a connection without a handshake. The RFC mentions that sequence number management could be elaborate to avoid spurious segment rejection. The author is explicit that this is conceptual thinking, not a specification, and invites further discussion from the community.

The idea might work, but it's complicated. Sequence numbers need careful handling, and this is just thinking out loud, not a real design.

§4References