[Live-devel] Multicast streams, SSM and Bidir
John M. Zwiebel
jzwiebel at cruzio.com
Thu Feb 12 09:04:25 PST 2004
This is 2 cents from a router vendor...
It has nothing to do with streaming other than how those streams
are delivered via multicast. You should care if you are developing
on an OS that does not support IGMPv3 or if you are planning on
doing IPv6 streaming.
If you are doing multicast, over the past 10 years we've moved away
from dense-mode to sparse-mode and 3 years ago, we recognized that
ASM (any source multicast) which can roughly be thought of as the
same thing as PIM-SM (sparse mode) was just not going to work in
high-end routers because of the huge resource requirements to handle
all the data-driven events. (Actually, for at least 9 years every
IETF has bemoaned the fact that there is no RTS/CTS mechanism for
alerting the network that a multicast stream is about to be sent.)
RFC1112 suggests that the network "just handle it" when it sees a
multicast packet. In turn this means that source discovery has had
to be accomplished in the network, which is what the PIM register
mechanism is all about. I'm starting a Don Quixote campaign to tell
you,
the users, that even though ASM works and appears to work well, if
we really want to achieve a multicast deployment where we can handle
100,000+ routes (sources) of HDTV quality streams, no router vendor
is going to be able to support this without throwing lots of expensive
processing power into their systems (For example Juniper currently
requires an extra PIC, or line card, to specifically handle PIM source
registration -- Note that this card is also used for other things
so I'm not trying to say that the PIC itself is a bad thing, just
that ASM requires this card and so ASM is a "bad thing".)
To reach its full potential Multicast must remove the data-driven
events from the protocols and must determine ways of nailing up
routes -before- the source starts sending any data. (The alternative
will be to require sources to send a series of "preamble" packets that
install the routes before the "real" data is sent. I should note that
if we are talking about a video stream, the loss of 5 seconds at the
start of the stream may not matter, but I'm not in a position to
judge that loss. I am sure that it will matter for other applications
meaning multicast protocols will dump ASM so you need to be aware of
the alternatives.)
There are two alternatives to ASM: SSM and Bidir. Both of these use
the basics of the current PIM-SM protocol and make subtle, fairly
easy to implement, changes to the protocol.
SSM, source specific multicast (sometimes referred to as single-source
multicast) can be realized by making changes only on the last-hop router
and the receiving host. Many streaming applications I'm aware of
already
download sdp files to the application which specifies both the source
and
the multicast group that the source is going to send to. This source
group combination or (S,G) is referred to as a channel. The beauty of
SSM
is that source discovery is removed from the network and put into a
service
that can be easily defined by the application developer. Now all that
remains
is for the receiver to signal the router the channel desired.
Unfortunately, this signal is accomplished through IGMPv3. Although
every
major router vendor has implemented IGMPv3, there are many OSs which do
not
support it. (MacOS, for example, perhaps because the FreeBSD community
has been
unable to get past their nicene squabbles about which implementation is
better or
maybe its because the folks who put a lot of effort into IGMPv3 haven't
seen
it take off.) Windows does support IGMPv3. Linux sometimes supports
IGMPv3.
Once the receiver has passed the channel request to the last-hop
router, a
PIM JOIN message is sent on the shortest-path tree and nailed up --
before any
packets are sourced. This is the same data path that ASM would have
built, but
it is without having to deliver data to the PIM-RP for source
discovery, without
having to establish a shared-tree, without having to switch from the
shared-tree
to the shortest-path, without the routers having to deal with data
driven events.
You, as an application developer, get a data path up more quickly and
reliably.
Your network provider doesn't have to worry about data traveling around
places
it doesn't need to go. Your customer has a happy experience. You get
to have
the network replicate the data rather than having to have a huge server
farm
to unicast to every customer that wants a tcp connection. Its a huge
win
all around.
Bidir, or Bi-directional PIM, builds shared-trees rather than shortest
path trees.
This deployment requires upgrading the OS in all the routers so they
support
PIM-DF (designated forwarder) election. DF election is fairly simple
to implement
and the three major router vendors have had it available for a while
now. Bidir
does not require any changes in the host receiver. I can not imagine
Bidir being
used for a streaming media application, therefore I will not bore you
with too
many details. However, if you have a many to many application --
perhaps distance-
learning -- Bidir may be the way to go. Again, like SSM, the routes
can be
nailed up -before- any data is sent. Unlike ASM the Bidir RP does not
do
anything except provide a point in the "internet space" that is the
root of the
distribution tree. Data travels up and down that tree. There is no
reason
that the Bidir RP couldn't be your application running on a primary
server
somewhere. (However, if you go this way, then some way of
communicating this to
the network will have to be developed. Router folks are probably going
to leave
this up to the application folks since we don't know the direction your
app
is going to take. Although IPv6 has a proposal called "embed-RP" which
may make
this useful.)
So, after all of this, what do you guys need to know.
-- ASM is not going to scale to really huge numbers of sources or
large BW, you need
to move to SSM and/or Bidir
-- SSM requires IGMPv3, you need to be pressuring your OS vendor for
it
-- Source discovery needs some kind of a standard directory. Getting
the sdp
file off of a web page seems "good enough" to me, but I've heard lots
of
complaints especially from those who have been using ASM for a while.
-- Think of opening up a channel rather than joining a group. Design
your app
so you can "channel surf".
-- Layer2 switches are going to be a problem. I should have
mentioned them.
Layer2 switches. Bridges are dumb. They only use the MAC address.
Multicast
destinations are never sources so they can't figure out which port the
multicast
packet is suppose to be sent out of so they send it out all ports.
This is good
in that all the systems connected to the switch see the mpackets. This
is bad
in that all the systems connected to the switch see the mpackets. Some
switches
limit the ports the mpackets are forwarded out of by doing IGMP
snooping. Sadly
this is just limited to the destination or group address. There is no
such thing
as IGMPv3 snooping. There are lots of protocols which are suppose to
limit the
ports out which the mpackets are forwarded. But they don't do a very
good job
of it. The only layer2 solution is called GARP. It is roughly IGMP at
layer 2.
Any system connected to the switch is suppose to send a GARP message
instructing
the switch to forward multicast packets for a specific multicast MAC
address to
this port. Some router vendors have implemented this. I do not know
of any
host Operating Systems which have.
So, until there is a solution, make sure your switch will forward the
mpackets.
And demand your switch vendor provide you with a solution.
Thanks for taking the time to read this.
John Zwiebel
More information about the live-devel
mailing list