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

[ih] Origin of the loopback interface

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 

% 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
 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
recreated at 
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
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      * 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"