Michael Thomas <mike@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 start working. 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 it. 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. John