[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Automatic Tunneling for Rapid Multicast Deployment
Steve Deering is right about the separation between protocols. We were not
involved in the creation of IGMP, only read the IGMP RFC itself. So we
probably misunderstood this point.
By the "dense-mode" we meant that the query mechanism used by IGMP is
efficient in the case that several hosts on the same LAN listen to the same
multicast group at the same time. Our claim is that this will not be the
typical case for SSM. Maybe part of the IGMP complexity is to provide this
ability, which is not needed for the SSM.
Our purpose in this document is to promote something in which we all share a
common interest, i.e. quick multicast deployment. For this we propose to
design a generic multicast tunnel protocol, sending IGMPv3-in-UDP packets,
etc. We are ready to implement the host side of the protocol, and make it
available as an open-source. This protocol will meet both goals: separation
and quick deployment. This is the important thing in our comments. The
remarks on IGMP are not a necessary important part of that, and so in order
to avoid dis-focusing on the goal we re-submit the document without the IGMP
part.
Any comment will be appreciated.
Doron Rajwan.
====================================================
Automatic Tunneling for Rapid Multicast Deployment
====================================================
Introduction:
=============
The intent of this document is to promote rapid multicast deployment.
A recent consensus in the multicast community is that source specific
multicast [SSM] will be easier to deploy and so it can accelerate
multicast acceptance.
In order to have rapid SSM deployment throughout the network, we
suggest a protocol that will enable multicast even if the routers near
the receivers do not support multicast protocols. Further more, this
protocol will work from any host, running any operating system, using
UDP only. It will discover the nearest SSM-enabled router in the path
to a specific source, and create a tunnel between the joining host and
that router. This tunnel will be used in order to transfer multicast
data for (S,G), from the router to the joining host.
Hardware support in routers:
============================
Each SSM-enabled router will have the hardware capability to create a
tunnel to arbitrary number of hosts. When a multicast UDP packet is
received, it will be duplicated and sent to each entry in the olist of
(S,G), which may contain both neighboring SSM-enabled routers and
tunnels. In the later case, the destination class-D address of the UDP
packet will be replaced with the tunnel exit address (A), and the
destination port will be replaced with the tunnel exit port (P). There
is no need to encapsulate the packet inside another UDP packet.
The host can de-multiplex the group (G) from the port (P) by
remembering each of the tunnels it created, and assigning different
port number (P) for each tunnel coming from a specific source.
The original destination port number is gone forever, and cannot be
used by the transmitter in order to implement de-multiplexing of any
kind at the receivers. This limitation seems to be reasonable, and we
do not think that packets should be encapsulated just because of it.
Software support in routers:
============================
In order to create tunnels, SSM-enabled routers will be able to
receive UDP packets, containing join and leave commands, sent directly
to them (using their IP address and a specific port number). These
packets will contain the source (S), the group (G), the tunnel exit
address (A) and port (P). Upon receiving it, the router will
acknowledge the reception, by sending UDP packet to the joining host
(A), and add this host to the olist for (S,G).
Currently, we do not specify the suggested packet format. It can be
[IGMPv3] in UDP, with additional port number. Also, the tunnel should
be refreshed from time to time.
** Assuming there is interest in this protocol, we will write an
Internet draft specifying the exact details of this tunneling process,
and the exact requirements from routers.
Detecting the optimal router:
=============================
How can the joining host decide which is the optimal router to create
a tunnel to? There can be many possible methods, e.g., use manual
configuration, use hashing from a pre-defined set of routers, and so
on. These methods while not optimal, will work at least as good as the
methods for setting the Rendezvous Points (RP) in PIM-SM.
Another method is to use directory services, that will be asked to map
(client IP, source IP) to (router IP). The result will be a list of
entries containing these fields:
1. Client IP, mask: The group of clients which this entry is applied
to. The mask is needed because clients can have temporary IP addresses
from the same subnet.
2. Source IP, mask: The source of the multicast packet. This will
usually be entire AS.
3. Router IP, mask: A group of routers that the host can round-robin.
4. Expiration: Time of expiration of this entry.
** Assuming there is an interest in this protocol, we will write an
Internet draft specifying the exact details of this DNS process. We
can also implement this DNS service world-wide.
Detecting the optimal router using trace-route:
===============================================
We now suggest an automatic router discovery method, using
trace-route. The joining host will use standard trace-route algorithm
in order to locate the first router towards the source. Then, it will
send a UDP join massage to this router, as defined above. If the
router does not acknowledge, the host will check the next router, and
so on, until it finds a router that is SSM-enabled. This router will
be used for tunneling.
The application needs the ability to send UDP packets with small TTL,
and the ability to receive ICMP error messages. If the current socket
implementation on the host computer cannot support it, the application
can spawn the trace-route program itself, and process it's output.
This can be done by any host!
Optimally, this protocol should be executed for every multicast
source. For some applications there is only a single multicast source
with a lot of groups, so, this problem doesn't exist. Also, in some
cases, access ISPs are connected to the backbone using a single point.
Assuming the backbone is SSM-enabled, the output of this process is
independent of the source address.
The routers can help in this process. When locating an optimal router
for a given source, that router can include (in the tunnel
acknowledgment message) a list of subnets that it supports. Then, if
the host needs to locate a router for each of the subnets, it can use
the same router. There is no need to execute this protocol again. In
this case the routes might not be optimal, but they are still much
better than the routes created using RP in PIM-SM.
This protocol is only needed in cases that there is no other option.
If there is a multicast enabled router on the host's LAN, it can be
detected using limited broadcast of UDP packet to the LAN. This is
needed if the operating system is old. If both the routers and the
operating system is up-to-date, standard [IGMPv3] can be used.
Changes to the applications:
============================
Each application should be linked with a library for multicast join
and leave. This library will check whether the operating system
supports [IGMPv3]. If it is supported, it will be used.
If [IGMPv3] is not supported, the library will do limited broadcast of
UDP packet in order to see if there is a SSM-enabled router on the
LAN. If such a router exists, it will use it to join the multicast
group.
In all other cases, the optimal router will be detected, and a tunnel
will be crated to that router.
** Assuming there is interest in this protocol, we will implement this
library, as an open-source code. It will utilize the OS [IGMPv3], LAN
limited broadcast, or create a tunnel. It will locate the router for
the tunnel by using directory services or by the trace-route
algorithm.
Benefits:
=========