TCP ancestry (was re: is IETF is being shunned...)
Craig Partridge <craig@tereschau.net> Mon, 19 January 2026 16:53 UTC
Return-Path: <craig@tereschau.net>
X-Original-To: ietf@mail2.ietf.org
Delivered-To: ietf@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 2B957A9F9A73 for <ietf@mail2.ietf.org>; Mon, 19 Jan 2026 08:53:14 -0800 (PST)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: 0.601
X-Spam-Level:
X-Spam-Status: No, score=0.601 tagged_above=-999 required=5 tests=[BAYES_50=0.8, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=tereschau.net
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Om8ZJg7RfmdH for <ietf@mail2.ietf.org>; Mon, 19 Jan 2026 08:53:13 -0800 (PST)
Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 99011A9F9A6C for <ietf@ietf.org>; Mon, 19 Jan 2026 08:53:13 -0800 (PST)
Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-59b6df3d6b4so5449775e87.0 for <ietf@ietf.org>; Mon, 19 Jan 2026 08:53:13 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tereschau.net; s=google; t=1768841592; x=1769446392; darn=ietf.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=ep/4azGhk6fES6ZdLZ92dXoPgkNt37qTHXB/EqDxarA=; b=jQ7mmP1+vKEyOAzU+L/FTGJxfBtMy0GZ+mL7PKBUM++R+j3GMjc5YbThrLbGcpBOLx mt8Eg335c1dITNdzzNGzBmr1/8BqW6K54ba1v4Xl20KLXmmsgPaBNCfG6jbLov3V1d0s SyV2IizyiE6y16twB6rwjEqhBrlxUkDnR+rZ378qYRrONaGYu+AZ8WWuT5UZE3frHzGy yHoWyYc0Zde9R9Z/1aywbOWbE4n51u+hzPfvc5VUkbfyR3GaUMt4UImjOfFqTMHfQnAJ WAVUutvD6HXVuqyGCyYlvnG4E3RFrlEz4ACzWF4gxtfbStkFBorh2OA9BuSUlhR4ddVP fvPA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768841592; x=1769446392; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ep/4azGhk6fES6ZdLZ92dXoPgkNt37qTHXB/EqDxarA=; b=o24dbdEaDAOJ6RGOnyvT8sSSw7Zp/0R7LrAB2Ugl0fn3TQCiFGgvwkqZ0T+lFY+Q3s +kO9zsApRZYobP++UD564JHe0bBXE9OLpDpWLkiOmuHkTHB2a9zv58Enxs2GtvYg2f06 wc9XGnQfOLP1vxsmY1yXuuZQBj063uvf/yLAIreA/Z3NOwkN8fbJv9My4pMkzkQXBpJ6 N6Our8s2gKE3A+EueKegi0IWYK9XPtqTNAtsdBQpgtptAUhogDrVm1WeetI0KPxJBiDt wnNK+5xneBMNJyoSZ391IR/3wYb240N3l31XzqMvgZyoP0+/mYl9r48AajQCmj1Amrum zQbw==
X-Gm-Message-State: AOJu0Yz7dJxVc/DAc0q/t+cgNhtCWXRp49O2MXISANdJcQNGTxEqxUdB Oq5jjqBGhOCqthp9l7v6rTjqyJ75X1E2I4fhu/6EDE1ZfVG7rLPj0ctxy9PYW5KZc0BKYZOV4ta 1z7Rxnohph1mYMNlnGyla0g1/90DJ7FCU3n2Z62kzKZoNzBwI4fmKDf+tGA==
X-Gm-Gg: AY/fxX6zDGnSsSIq3thwFRDM4bb8YeZ7C6D7eNy6y6dIaMx3pvpofxrs2vBVA0Isfg3 xphz5xHwGBsaNP+UyS4I271jlqy5txLY4bsPTOZNrKZy3hkwJugw/zG1kS8i+hyuq4kOhwEJp3T VJvQkoLfyiNWsWGNOkyZorWE+i0AURE3Vg2KUTazMlvAM7rk9K8F5J3mrZGk1j7CNVio7Zv7OqM oXZljN1kZ/9fBZak6cxeE54znfB65HDA4WmKXgsLxYzJUw9WQXt32Jcb/6e/lbxMT2GtpDvPVfI PfP26X1eJT46Gs3ZQ0wHLVo33m2k
X-Received: by 2002:a05:6512:234f:b0:59b:717b:c152 with SMTP id 2adb3069b0e04-59baef01aafmr4110005e87.45.1768841591612; Mon, 19 Jan 2026 08:53:11 -0800 (PST)
MIME-Version: 1.0
From: Craig Partridge <craig@tereschau.net>
Date: Mon, 19 Jan 2026 09:53:00 -0700
X-Gm-Features: AZwV_QhEXd5D76ojiTkdZqTPgxuBY4KElX4KFaf1biOgqM-ckX4-bnjqucgJ4CI
Message-ID: <CAHQj4Cf1YRYdd5WXdXZX8+OhsUX13q3BFiygr_ocd5DO5f9Y8g@mail.gmail.com>
Subject: TCP ancestry (was re: is IETF is being shunned...)
To: ietf@ietf.org
Content-Type: multipart/alternative; boundary="000000000000bb77c80648c08629"
Message-ID-Hash: I6OOH7TKFXL7Z5F7FSYWBATS4DQF2JH4
X-Message-ID-Hash: I6OOH7TKFXL7Z5F7FSYWBATS4DQF2JH4
X-MailFrom: craig@tereschau.net
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-ietf.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
List-Id: "IETF-Discussion. This is the most general IETF mailing list, intended for discussion of technical, procedural, operational, and other topics for which no dedicated mailing lists exist." <ietf.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf/rbWOYPjlCs2HwT4x66Hsuu7bCpI>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Owner: <mailto:ietf-owner@ietf.org>
List-Post: <mailto:ietf@ietf.org>
List-Subscribe: <mailto:ietf-join@ietf.org>
List-Unsubscribe: <mailto:ietf-leave@ietf.org>
> I wonder what percentage of TCP/IP stacks are still based on the BBN reference implementation Rob Gurwitz wrote for BSD. I would say "few or none". On the other hand, if you'd asked how many modern TCP/IP stacks were "influenced by" Rob's implementation, I'd say most. For those who are curious, a quick history. Much is by memory as searching the web I see partial histories -- much of the messy aspects are politely ignored -- but I probably also get some bits wrong here. And this conversation, if it persists, should migrate to the internet-history list (I'm replying here because some newer TCP experts in IETF may be interested in the background): In the 1970s, there were several TCP implementations and they were debugged together in TCP bakeoffs that helped shape the TCP spec. (Infamously, implementing the checksum proved hard and the TCP spec contains the description used by the team deemed to have implemented it best). The UNIX implementation was done at BBN, if I remember correctly, by Jack Haverty. (D)ARPA was hunting for a research operating system to succeed TENEX. Unix was the obvious choice except it (a) lacked virtual memory and (b) lacked networking. So ARPA funded Berkeley to put VM into Unix and funded BBN to enhance Haverty's Unix TCP for virtual memory and integrate it with the Berkeley UNIX. Rob Gurwitz did the BBN TCP work -- which required substantial effort (e.g. Rob had to invent a way to create packet buffers in a VM system and developed mbufs -- and much of how we think about network buffering is influenced by Rob's decisions; Rob also redid the code to work with software interrupts). The resulting BSD updated Unix with virtual memory and Rob's TCP code became 4.1BSD. Bill Joy did not like the BBN TCP implementation. I've heard many stories about Bill's motivation but never seen/heard anything from Bill, so I'll stick to two obvious dislikes you can infer from his code: (1) the BBN TCP used /dev/tcp and ioctls and Bill felt the API was ugly and so he created sockets; and (2) the BBN TCP used a state table on the inbound side (packet type x socket state -> routine to give packet to) while Bill preferred a flat (large) IP input routine. So Bill rewrote the BBN TCP into his preferred form -- having read the two versions, my sense is Bill wrote his own code for much of it, but sought to stay bug-for-bug compatible with the BBN 4.1 TCP. He also retained mbufs and the basic software interrupt architecture. (I still remember c. 1989 when a TCP bug appeared in BSD, the BSD folks made a point of saying it was in the BBN 4.1 code). This was released as 4.1c and then 4.2BSD. Bill's rewrite caused pain. The BBN TCP had been improved for the expected 4.2BSD release (the BSD release tape left out the improved BBN TCP) and Bill's rewrite of 4.1's TCP effectively was a step backwards in TCP maturity. ARPA was not happy that BSD had spent money duplicating (superceded) BBN work. There were moments when it appeared ARPA might try to force BSD back to using BBN code. That did not happen (my personal sense -- sockets was so clearly an API win, that it carried the day) and the result is that the reference TCP/IP in the 1980s, from which many TCPs are derived, was descended from Bill's BSD implementation. So Rob's code influenced the reference BSD implementation in the 1980s, but the BSD implementation was (sorta) distinct and that's the one that carried down to today. Craig (who worked with the BBN code briefly c. 1985 and ran the BBN BSD networking code project for DARPA from 1986 to 1991 or so) -- ***** Craig Partridge's email account for professional society activities and mailing lists.
- TCP ancestry (was re: is IETF is being shunned...) Craig Partridge