Summary

  • The Fuzzball PING described by Dave Mills in 1983 was already a years-old, multi-probe measurement package; Mike Muuss’s BSD ping was a related but distinct Unix implementation.
  • Muuss’s retrospective places the BSD program in December 1983 and describes the kernel support, repeated Echo replies and readable round-trip report that made it useful at a host.

A machine answers. A person wants to know whether the network is behaving. Between those two events sits a measurement choice: which packet to send, what to time, and what counts as a reply. In the early Internet, the name ping came to cover more than one answer to that problem. The best-documented origin story is not a single invention but a meeting between a Fuzzball research instrument and a BSD utility.

The protocol primitive came first. In September 1981, RFC 792 specified ICMP Echo and Echo Reply. A sender could include data, an identifier and a sequence number; the responding host returned the data and matching fields. The standard described those fields as aids to matching requests and replies. It did not invent repeated measurements, a terminal display or a general test for whether an application was working. Nor did ICMP promise reliable delivery: it reported aspects of the IP communication environment, with no guarantee that a message or its answer would arrive.

A different kind of ping was already in use on David Mills’s Fuzzball systems. His December 1983 RFC 889 calls it the original PING—expanded there as “Packet InterNet Groper”—and says it had been used for numerous Internet and client-network measurements over the preceding six years. Mills describes it as one package among many on an instrumented LSI-11 host. It could send several kinds of probes, including ICMP Echo, process their replies, save elapsed times and other observations, and produce live histograms and traces. That account places the program in a research apparatus, not merely at a command prompt.

RFC 889 also shows what such an apparatus was for. In experiments conducted during October and November 1983, Fuzzballs sent Echo messages with selected lengths and timestamps, waited for each corresponding reply, and recorded elapsed time. A run comprised 512 cycles. The resulting records helped Mills study how packet length, network paths and lost replies affected measured delay and TCP retransmission behavior. He explicitly separated network delay from potentially substantial queueing inside the hosts. A measurement was useful because its method and limits were visible, not because one number summarized every property of the path.

Mike Muuss’s account describes a second implementation. He recalls that Mills spoke about timed ICMP Echo measurements on Fuzzball LSI-11 systems during a DARPA meeting in Norway in July 1983. In December, unusual behavior on the IP network at the Ballistic Research Laboratory prompted Muuss to write PING for 4.2a BSD UNIX. The chronology and dialogue come from Muuss’s later first-person recollection, so they should be read as his account rather than as a surviving meeting transcript. His recollection says the initial program compiled but could not use the raw ICMP socket it needed: the kernel did not yet support that socket path.

He added the kernel support overnight. Before his first probe went out, colleague Chuck Kennedy had already found and fixed the local hardware fault.

This is a telling distinction. The Fuzzball PING belonged to a measurement host and an experimental toolset. Muuss’s program put a repeatable Echo probe within reach of a BSD operator facing a local connectivity question. Its familiar output made each returned packet legible: sequence number, elapsed time, then a summary of transmitted and received packets, loss, and minimum, average and maximum round-trip time. The protocol supplied the request and reply; the utility supplied a loop, a clock, a way to match results, and a human-readable account.

Muuss says Berkeley took both his source and kernel modifications, after which the program became part of Berkeley UNIX. That claim supports adoption into Berkeley UNIX, but does not date every release or establish identical behavior in every later system.

Even the name has two histories. Muuss says he chose “ping” for the sound of sonar and the idea of echo-location. Mills’s RFC 889 expands the earlier Fuzzball name as “Packet InterNet Groper.” Muuss says he had heard second-hand that Mills proposed that expansion. The records therefore support an association between Mills’s Fuzzball program and the phrase, alongside Muuss’s own sonar explanation; they do not establish one uncontested naming event. The same word can describe a research package and a Unix command without making them one program.

That difference matters when reading a result. An Echo Reply says that a responder returned a particular probe, with the expected data and matching fields, to the sending system. A timed sequence can reveal delays, missing responses or variation for those probes, from that vantage point and during that interval. It cannot by itself prove that a web service, mail server or other application is ready; identify the responder cryptographically; show every possible route; or rule out filtering when no answer arrives. In RFC 889, the measurement becomes informative through repeated trials and careful interpretation.

In the BSD command, the same discipline is compressed into a tool people could run quickly. Ping became memorable because it made a narrow observation easy to repeat. Its authority remained narrow.

The historical shift, then, was not from “no ping” to Ping. ICMP Echo existed before Muuss’s program, and Mills describes an earlier Fuzzball package with broader experimental functions. The 1983 BSD contribution joined an existing measurement idea to a missing operating-system capability and turned it into a small, visible diagnostic. That interface traveled widely; the distinction between “a probe answered” and “the service works” still has to travel with it.

Sources