Network Working Group Deepinder P. Sidhu
Request for Comments: 964 Thomas P. Blumer
SDC - A Burroughs Company
November 1985
SOME PROBLEMS WITH THE SPECIFICATION OF THE MILITARY STANDARD TRANSMISSION CONTROL PROTOCOL
1. Introduction
In recent years, much progress has been made in creating an integrated set of tools for developing reliable communication protocols. These tools provide assistance in the specification, verification, implementation and testing of protocols. Several protocols have been analyzed and developed using such tools.
Sidhu & Blumer [Page 1]
RFC 964 November 1985
Some Problems with MIL-STD TCP
The authors are currently working on the verification of connection management of the Military Standard Transmission Control Protocol (TCP). This analysis will be based on the published specification [MILS83] of TCP dated 12 August 1983.
2. Transmission Control Protocol
The Transmission Control Protocol (TCP) is a transport level connection-oriented protocol in the DoD protocol hierarchy for use in packet-switched and other networks. Its most important services are reliable transfer and ordered delivery of data over full-duplex and flow-controlled virtual connections. TCP is designed to operate successfully over channels that are inherently unreliable, i.e., they can lose, damage, duplicate, and reorder packets.
Sidhu & Blumer [Page 2]
RFC 964 November 1985 Some Problems with MIL-STD TCP 3. Problems with MIL Standard TCPOne basic feature of TCP is the three-way handshake which is used to set up a properly synchronized connection between two remote TCP entities. This mechanism is incorrectly specified in the current specification of TCP. One problem is that data associated with the SYN packet can not be delivered. This results from an incorrect specification of the interaction between the accept_policy action procedure and the record_syn action procedure. Neither of the 2 possible strategies suggested in accept_policy will give the correct result when called from the record_syn procedure, because the recv_next variable is updated in record_syn before the accept_policy procedure is called.
Sidhu & Blumer [Page 3]
RFC 964 November 1985 Some Problems with MIL-STD TCP 4. Detailed Discussion of the ProblemProblem 1: Problem with Receiving Data Accompanying SYN
TCP entity A TCP entity B
------------ ------------
state segment segment state
transition recvd or sent recvd or sent transition
by A by B
Sidhu & Blumer [Page 4]
RFC 964 November 1985
Some Problems with MIL-STD TCP
Actions: (see p. 104)
Sidhu & Blumer [Page 5]
RFC 964 November 1985
Some Problems with MIL-STD TCP
Transition 3 (Entity B goes from state LISTEN to state SYN_RECVD). Entity B receives the SYN segment accompanying data sent by entity A.
seg.ack_flag := TRUE; [seg.ack_flag = TRUE]
seg.ack_num := recv_isn + 1; [seg.ack_num = 102]
new state := SYN_RECVD;
Sidhu & Blumer [Page 6]
RFC 964 November 1985
Some Problems with MIL-STD TCP
Transition 4 (entity A goes from state SYN_SENT to ESTAB) Entity A receives the SYN ACK sent by entity B.
Sidhu & Blumer [Page 7]
RFC 964 November 1985
Some Problems with MIL-STD TCP
Problem 3: Problem with Receiving Data in TCP ESTAB State
TCP entity A TCP entity B
------------ ------------
state segment segment state
transition recvd or sent recvd or sent transition
by A by B
Sidhu & Blumer [Page 8]
RFC 964 November 1985 Some Problems with MIL-STD TCP 5. Solutions to ProblemsThe problem with record_syn and accept_policy can be solved by having record_syn call accept_policy before the variable recv_next is updated.
6. Implementation of MIL Standard TCP
In the discussion above, we pointed out several serious errors in the specification of the Military Standard Transmission Control Protocol [MILS83]. These errors imply that a TCP implementation that faithfully conforms to the Military TCP standard will not be able to
Sidhu & Blumer [Page 9]
RFC 964 November 1985
Some Problems with MIL-STD TCP
REFERENCES