[ih] invention of multicast addressing
jnc at mercury.lcs.mit.edu
Fri May 7 18:25:22 PDT 2010
> From: Craig Partridge <craig at aland.bbn.com>
> I'm trying to nail down when the concept of a "multicast address" came
Wasn't there some ARPANET work which had some concept of group addresses? I
think it was called "logical addressing"? As I recall it was defined, but
never implemented? Does anyone else have anything on this, or do I need to go
search? On a quick search online, I found this:
"ARPANET Routing Algorithm Improvements"
Semiannual Technical Rept. No. 2, 18 Apr-15 Oct 78,
McQuillan, J. M.; Richer, I.; Rosen, E. C.; Bertsekas, D. P.
BBN, Oct 1978
which includes this:
A preliminary design of enhanced message capabilities for the ARPANET
(logical addressing, broadcast addressing, and group addressing) is
"Group addressing" sounds like what we now call multicast, no? Anyway, that
would be my bet for one of the earliest (other than proprietary things like
the IBM thing that Jack turned up).
> In 1978, in their survey of local networks, Clark, Pogran and Reed
> mention in passing that Mockapetris is playing around with bit
> wildcarding that permits multiple addressees using one address.
> ... it appears that Mockapetris, Lyle and Farber may have proposed a
> form of multicasting in 1977 (IFIP Congress paper of August 1977 that I
> don't have).
The UC Irvine stuff wasn't really multi-cast as we now think of it. The
hardware implementation is described at a high level in:
IEN-82, "LCS Net Address Format"
since the MIT V1 Ring was the Irvine ring (MIT actually got that version of
the ring to work, from a desk design that Paul Mockapetris did).
The way it worked was that packets had a 32-bit destination address and a
32-bit destination address mask. Each interface had a loadable table of 8 name
entries, each of which also had the paired 32-bit fields. For each bit in a
packet's destination address, for each of the 8 name entries: if either of the
two mask bits (i.e. the one in the packet and the one in the name entry) was
on, that bit 'matched'; if neither was on, but the two address bits matched,
that bit 'matched'; if all 32 bits of at least one name entry 'matched', the
entire destination address in the packet matched, and the packet was accepted
Obviously, that's very general-purpose, and we could easily have done
something with the semantics of multicasting (as we now think of it) with it.
I think it was originally designed to allow proceses to move invisibly among
hosts on the ring at Irvine, IIRC.
As you can see from the document, we thought of having the interfaces in
routers detect packets destined for off-local-link destinations and
automagically suck them up and forward them - sort of like a bridge. We never
actually implemented that, IIRC. (If anyone cares why, ask...) In general, we
never found a use for the powerful addressing stuff, and it was dropped in
the MIT V2 ring in favour of a simple 8-bit host number.
More information about the internet-history