Multicast: From Theory to Practice

Broadcasting over the Internet—a look at developing applications for this new technology.

As the Internet grows up, new
communication needs arise. First, e-mail and FTP were enough for
most people. Then the WWW arrived and people wanted to see
graphics, not just plaintext. Now, even static graphics are not
enough; real-time video and audio are demanded.

As communication needs evolve, communication paradigms
originally designed to deal with e-mail and FTP need to evolve too.
A new one that has developed is “multicast”.

The Problem

Imagine transmitting an event over the Internet (perhaps a
Linus Torvalds conference), and multicast is not available. A
single source of information, which could be a computer connected
to both the Internet and the video cameras and microphones Linus is
talking to, is transmitting multimedia streams to several hosts
dispersed over the Internet. Of course, traffic should be sent as
efficiently as possible—the less bandwidth used, the
better.

With pre-multicast technology, two communication paradigms
are available, both of which are inadequate.

The first one is Unicast. TELNET, FTP,
SMTP and HTTP are unicast-based protocols with
one source and one
destination. To send to multiple destinations, different
communication paths are needed between the source and each of the
destinations (see Figure 1.a). Therefore, a copy of each audio and
video stream would need to be made and sent separately to each
receiver. Clearly, this is not affordable. Even if you are quick
enough in copying real-time audio and video streams, both your
network and the Internet would collapse. Audio and video are
extremely bandwidth expensive. Obviously, TCP cannot be used in
multicast applications, as it is clearly unicast-oriented.

The second choice is Broadcast. The
broadcast paradigm (see Figure 1.b) saves a lot of bandwidth
compared to unicast. If you want to send something to all computers
on your LAN, you don't need a separate copy for each. On the
contrary, only one copy is sent to the wire, and all computers
connected to it receive the copy. This solution is better for our
problem but is still insufficient, as we probably need to broadcast
to only some of our computers, not all. Even worse, it is almost
certain that many hosts interested in your conference will be
outside your LAN. While broadcast performs well inside a LAN,
problems arise when broadcast packets are routed across different
LANs. Thus, broadcast is good for applications and protocols that
don't need to cross LAN limits (such as ARP, BOOTP, DHCP and even
routed), but it is not good enough for our problem. Finally, it is
very likely people want to have more than one video conference at a
time, when only one broadcast address is available.

The Solution: Multicast

After having looked at the problem, it is apparent we need a
solution that provides the following:

Allows data to be sent to multiple receivers in an
efficient way, avoiding per-receiver copies.

Is not constrained by arbitrary network limits, so
it can reach anyone, anywhere on the Internet.

Differentiates between multiple and unrelated
transmissions, so that a computer may know which ones are of
interest for applications.

The third point relates well to radio or TV channels (not
cable TV). If you are interested in a particular channel, you tune
your receiver to listen to a particular range of frequencies and
discard the rest.

The solution that meets all three requirements is
multicast. Figure 1.c shows that host 1 sends
data only once (i.e., no per-receiver copies
are made) and only hosts interested in this data (hosts 3, 5 and 6)
receive it.

Multicast Addresses

The radio/TV example will remain a good starting point for
the rest of the article. In the same way that multiple frequencies
ease the process of recognizing and isolating different TV
channels, multiple multicast addresses ease the process of
recognizing the multicast traffic of interest.

The range of IP addresses is divided into classes, based on
the higher order bits of the IP address. Multicast addresses are
class D addresses: those starting with the first three bits set to
1 and the fourth set to 0. This means multicast addresses range
from 224.0.0.0 to 239.255.255.255. This is the range of
“frequencies” in which you can transmit or listen for traffic.
Each “frequency” identifies a different and specific multicast
group.

Some of these multicast addresses are well-known, reserved
for a specific purpose. For instance, 224.0.0.1 is the
all-hosts group. Just “ping” this address,
and all multicast-capable hosts on the network should answer. Any
multicast-capable host must join this group at start-up on all its
multicast capable interfaces. 224.0.0.2 is the
all-routers group, and so on. In any case,
your multicast applications should never send datagrams to
addresses 224.0.0.0 through 224.0.0.255, as they won't be forwarded
across multicast routers. Similarly, you should avoid groups
239.0.0.0 through 239.255.255.255 as they are reserved for
administrative scoping. See the “Multicast
over TCP/IP HOWTO” (included in the Linux Documentation Project)
for further details.

Trending Topics

Webinar: 8 Signs You’re Beyond Cron

Scheduling Crontabs With an Enterprise Scheduler
11am CDT, April 29th

Join Linux Journal and Pat Cameron, Director of Automation Technology at HelpSystems, as they discuss the eight primary advantages of moving beyond cron job scheduling. In this webinar, you’ll learn about integrating cron with an enterprise scheduler.