BOOTP & ARP history
gnu at toad.com
Sat Mar 19 10:30:05 UTC 2022
Michael Thomas <mike at mtcc.com> wrote:
> There were tons of things that were slapped onto IP that were basically
> experimental like ARP and bootp. CIDR didn't even exist back then.
Speaking as one of the co-designers of BOOTP (RFC 951): yes, it was
experimental. So why was it "slapped onto" IP? Well, in those days
the IP protocol itself (now known as IPv4) was an experiment.
The previous method of configuring each computer that was plugged into
an IP network, was to have a human-to-human conversation with your
network administrator, who would manually write down your new IP address
on the local network, and also tell you the IP address of a local
gateway. You would type this into a file in /etc and save it on your
new computer's local hard drive, and your experimental network would all
Then it became 1985, disk drives were small and expensive, flash memory
nonexistent. As a cost-reduction measure, Sun built some of the
first end-user computers that could operate without any nonvolatile
local storage: diskless workstations. They needed a way to boot without
having a system administrator (or end user) type in the machine's IP
address and the address of their gateway every time it booted. We
had a network, why didn't we communicate this over the network?
Sun designed and implemented a way of doing this, called RARP (RFC 903).
This did not use IP packets; it required accessing the local Ethernet
using packets with a unique Ethertype. And it only worked on Ethernet,
not on any other possible LAN technology. I was the maintainer of the
bootstrap ROMs in Sun workstations. Bill Croft and I thought we could
do better. We put our heads together and said, "why can't we use IP
broadcast packets for this?" (IP support for broadcast packets was also
an experiment at around that time. IP multicast was barely a cloud on
the horizon.) You could even write a portable UNIX program to be the
BOOTP server or client (unlike for RARP).
We got the BOOTP protocol working in prototype. Bill understood the RFC
submission process, and we got it published as an experimental RFC.
Sun didn't care. Their products shipped using RARP. Bill and I had
lots of other things to do, so we ignored BOOTP for years.
But Sun had a run of good luck at supporting and creating industry
standards like TCP/IP and NFS. 3000 miles away, some competitors hated
Sun's success, so they decided to standardize their products on
"anything that doesn't work like Sun's". This was the UNIX wars, which
distracted all the UNIX vendors. They should've been watching
Microsoft, which proceeded to steamroller the computing market and make
almost all of them irrelevant. I think it might have been DEC that
first adopted BOOTP for actually bootstrapping their products, and
others followed suit. I don't actually know why they picked it --
especially because I was co-author and I worked at Sun. But they
started using it, and it caught on among that consortium of non-Sun UNIX
vendors. And eventually, Mitch Bradley, a hardware designer at Sun with
a penchant for FORTH programming, built the boot code for the first
SPARC machines, and implemented BOOTP in it, so even Sun started using
By 1993, others had built DHCP (RFC 1541) on top of BOOTP, and that went
onto the standards track at IETF. Everybody who liked the old way was
free to continue manually typing human-assigned IP addresses into every
new computer on their network and keeping them in local nonvolatile
storage. Plugging into an Ethernet used to require inserting an
electric drill into a fat yellow coaxial cable in your ceiling (see
https://en.wikipedia.org/wiki/10BASE5), and then cleaning out the copper
detritis that would short the cable and bring down the whole network,
and attaching in a separate transceiver box with a "sting tap" that
would touch the center conductor of the coax, then running a separate
transceiver cable to your computer. The manual IP address configuration
was only a small portion of the pain. But 3Com migrated Ethernet to
twist-on BNC connectors (https://en.wikipedia.org/wiki/10BASE2), and
users started migrating toward products that worked without bringing in
a technician. BOOTP and DHCP offered a "plug and play" experience that
those users craved. So what started as experiments eventually became
expected parts of the IP standards.
ARP was "slapped on" in 1982, long before RARP or BOOTP. The original
IP specs required that the LAN address must fit into the low order bits
of your IP netblock. This wasn't well thought through, but IP was an
experiment and there were very few other experiments for its designers
to learn from. It worked ok when ARPANET was your LAN (see the original
use of 10/8), and when everybody else had Class A addresses, like the
packet radio network or 3-megabit Experimental Ethernet users. But it
didn't scale up, and it didn't work at all for 10-megabit industry
standard Ethernet, with 48-bit addresses much longer than IP addresses.
And Ethernet was cheap -- only hundreds of dollars per node. So when
somebody slapped together a protocol that made IP-over-Ethernet work,
which was ARP, suddenly it became much cheaper and easier to build an IP
network. This created a much bigger market for IP, which led in fits and
starts to the creation of NANOG. The rest is history.
More information about the NANOG