Hi, Eric,
For what it's worth, none of the slow-start/congestion avoidance stuff in
TCP was documented in an RFC until RFC 2001 in 1997, which said
Modern implementations of TCP contain four intertwined algorithms
that have never been fully documented as Internet standards: slow
start, congestion avoidance, fast retransmit, and fast recovery. [2]
and [3] provide some details on these algorithms, [4] provides
examples of the algorithms in action, and [5] provides the source
code for the 4.4BSD implementation. RFC 1122 requires that a TCP
must implement slow start and congestion avoidance (Section 4.2.2.15
of [1]), citing [2] as the reference, but fast retransmit and fast
recovery were implemented after RFC 1122. The purpose of this
document is to document these four algorithms for the Internet.
and the references were to ACM articles and end-to-end mailing list postings
from 1988-1990.
It's a darned good thing RFC 793 wasn't "normative" in the 1990s, because
even the Arpanet was collapsing without these mechanisms in the late 1980s.
RFC 1122 (1989) had this to say:
4.2.2.15 Retransmission Timeout: RFC-793 Section 3.7, page 41
The algorithm suggested in RFC-793 for calculating the
retransmission timeout is now known to be inadequate; see
Section 4.2.3.1 below.
Recent work by Jacobson [TCP:7] on Internet congestion and
TCP retransmission stability has produced a transmission
algorithm combining "slow start" with "congestion
avoidance". A TCP MUST implement this algorithm.
with [TCP:7] being "Congestion Avoidance and Control," V. Jacobson, ACM
SIGCOMM-88, August 1988.
So you are definitely remembering what I am remembering on at least one
protocol.
Spencer
p.s. <obligatory newtrk rant> Oh, wait. STANDARD TCP is defined in STD 7/RFC
793, and all of this newfangled stuff is Proposed Standard, so we're not
supposed to deploy it anyway. "How many standards levels do you want today?"
</obligatory newtrk rant>
From: "Fleischman, Eric" <eric.fleischman@xxxxxxxxxx>
I resonate with your points except that the earliest IETF standards
(i.e., IP itself, TCP itself, others) were incompletely specified by
RFCs. Therefore, interoperable implementations could only occur with
reference to the reference implementations.
_______________________________________________
Ietf@xxxxxxxx
https://www1.ietf.org/mailman/listinfo/ietf