[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ih] Origin of the loopback interface

IIRC, loopback was a term used in modems at least as early as the late
60s.  Maybe before.  When a line was put "in loopback" all the data
going out onto the line was reflected directly back to the sender.

Looping was used as a primary operations tool in the ARPANET.  By
"looping a line" the NOC operator could determine what was likely to
have failed - the modem at either end, the line itself (backhoe attack),
or the interface card in the IMPs at either end of the line.    The IMPs
could trigger the "looping" capability of the modems to cause loops to
be established at the various points.  That was important to determine
whose Field Service to call to get a failure fixed.

When we implemented TCPs at BBN for various hardware choices, we
unabashedly adopted ideas and techniques from the ARPANET operational
experience.  So the notion of having a means to "loop" the network
interface was a natural feature to include.  The TCP spec itself didn't
contain such "fault isolation" tools, so things like ICMP echo were
defined to add such functionality in ICMP.

I wrote the first TCP (version 2) for Unix circa 1977-8 on a PDP-11/40.
It did not have a "loopback interface".  There simply wasn't room in
kernel memory for such niceties.  That Unix implementation was based on
Jim Mathis' earlier implementation for the LSI-11 and used in the Packet
Radio project.  It didn't have a loopback facility either.

Shortly thereafter, several other Unix TCP implementations were done: a
PDP-11/70 version (Wingfield/Nemeth) under DCEC sponsorship, an HP-3000
implementation (Sax/Edmond) under ARPA sponsorship, and a Vax
implementation (Gurwitz) under ARPA sponsorship.   Getting an
implementation to talk to itself by cobbling together some way to get
packets reflected back was a common early step in the test/debug of a
TCP implementation.

One of those Unix implementations may have introduced loopback
functionality.  I can't remember...  There is a lot of historical detail
at The Unix History Society (tuhs.org), including ancient listings,
which may be a good place to look.

So, the specific term "loopback interface" probably depends on the
context.  It may have been first used in Unix, but the concept of
"looping an interface" was much older.  It existed in modems, and in the
ARPANET, and in the Internet, and was used primarily for debugging and
fault isolation during operations.  When something works, you just keep
using it.....

I probably wrote that BBN QTR (or more accurately, badgered people into
writing their sections and then put it all together).  Bob (Bressler)
was officially the PI on the contracts, but he assigned all of the
Internet-related projects to me.  Eventually we changed the name so I
was author of later QTRs.  So if there's any other questions about BBN's
Internet work in that timeframe I might be able to answer.

/Jack Haverty

On 10/20/2017 05:12 PM, Jeremy C. Reed wrote:
> On Sat, 21 Oct 2017, Brian E Carpenter wrote:
>> So the question came up of when and where the term 'loopback 
>> interface' arose. Does anybody here have an answer for that?
> In my BSD history research, the earliest reference (for BSD) I have is:
> BBN had successful tests with establishing connections and transmitting
> data between processes using the loopback 
> mode.\cite{{bressler-bbn-198102}
> % http://www.dtic.mil/dtic/tr/fulltext/u2/a096114.pdf
> % R. D. Bressler
> % for nov 1, 1980 to jan 31, 1981
> % date stamped March 9, 1981
> @BOOK{bressler-bbn-198102,
>  editor = "Robert D. Bressler",
>  title = "{Combined Quarterly Technical Report No. 20}",
>  publisher = "Bolt, Beranek, and Newman Inc.",
>  address = "Cambridge, Mass.",
>  year = 1981,
>  month = feb
> }
> Document page 82, PDF page 89
> Now looking at it again  I see that term used multiple times. I now
> see earlier references for loopback for IMP and 1822 interfaces and in 
> early BBN reports but this is not about the "internet" interface as far 
> as I can tell.
> The ARPANET Interface Message Processor (IMP) Port Expander (PE)
> Technical Report 1080-140-1
> November, 1980
> http://www.dtic.mil/dtic/tr/fulltext/u2/a155753.pdf
> recreated at 
> http://www.warthman.com/images/SRI%20ARPANET-IMP.book.pdf
> talks about loopback mode.
> (Also at same time it is mentioned in BBN Report No. 4526.)
> The oldest Unix code reference I find is University of Illinois 'Network 
> Unix' ncpk/drivers/net_ill.h
> /* defines for accessing bits in the imp interface */
> ...
> #define imloop          0000400 /* loop back */
> but I don't see anything using it. I don't know date of that but the 
> system was from 1974-1975 and the file stamp is May 17  1979. This code 
> is not about internet loopback though.
> As for the earliest Unix "internet" style loopback interface I find 
> 4.1c.1 BSD's /sys/netinet/if_loop.c. Maybe from Joy or Eric Cooper (even 
> if Joy committed it).
> D 4.1 81/11/29 22:18:03 wnj 1 0 00059/00000/00000
> MRs:
> date and time created 81/11/29 22:18:03 by wnj
> 4.1     /*      if_loop.c       4.1     81/11/29        */
> 4.1     
> 4.1     /*
> 4.1      * Loopback interface driver for protocol testing and timing.
> This was after the initial BBN code being added to CSRG's SCCS and I 
> don't see reference to it earlier in that code so I assume was not in 
> the BBN deliverables. I think the BBN reference in regards to the VAX 
> UNIX is using a loopback mode not in the Unix networking implementation 
> itself, so may be the earliest implementation of internet driver for 
> loopback interface. (It was originally hardcoded to be on 254 network, 
> but on Dec 22, 1981 changed to be 127 (hardcoded). In March 1982, 
> converted to use sockets and AF_INET. In May 1983, changed from 
> (broadcast) to The hardcoded address was removed in 
> March 1985. This is the same code that ended up in the "greatest 
> software ever written" :)
> Jeremy C. Reed
> echo Fybjyl jevgvat zl OFQ uvfgbel obbx. Cyrnfr xrrc nfxvat zr. | \
>  tr "OQCFnortuvxyzabcefgjl" "BDPSabeghiklmnoprstwy"
> _______
> internet-history mailing list
> internet-history at postel.org
> http://mailman.postel.org/mailman/listinfo/internet-history
> Contact list-owner at postel.org for assistance.