Multicast Routing.

  • Unicast - one sender one receiver.
  • Multicast - one or more senders and a group of receivers.

    Several ways to organize multicasting:

    Note: Internet multicast is NOT a connectionless service - state information for a multicast connection must be established and maintained in routers that handle multicast packets sent among hosts in a so-called multicast group.

    Q: Does it make sense for each multicast datagram to carry the IP addresses of all of the multiple recipients?
    A: No. In the case of many recipients (thousands) the list of these addresses may be bigger than the message itself.
    Q: How to address these recipients?
    A: Use a multicast address. In the Internet, a single identifier that represents a group of receivers is a class D multicast address (224.0.0.0 - 239.255.255.255). The group of receivers associated with with a class D address is referred to as a multicast group.

    A list of questions:

    For the Internet, the answers to most of these questions involve the IGMP.

    Internet Group Management Protocol.

    The IGMP operates between a host and its directly attached router. It provides the means for a host to inform its attached router that an application running on the hosts wants to join a specific multicast group.
    Note: another protocol is needed to coordinate the multicast routers through the Internet, so that multicast datagram are routed to their final destinations. This functionality is accomplished by the network-layer multicast routing algorithms, such as PIM, DVRMP, and MOSPF.

    According to RFC 2236 IGMP header has the following structure:
     
    Type Max. response time Checksum
    Multicast group address
    There are three types of IGMP messages of concern to the host-router interaction:
    Type Description Sent by Purpose
    0x11 Membership Query router There are two sub-types of Membership Query messages:
    • General Query, used to learn which groups have members on an attached network.
    • Group-Specific Query, used to learn if a particular group has any members on an attached network.
    0x16 Membership Report host Report host wants to join or is joined to given multicast group
    0x17 Leave Group host Report leaving given multicast group
    The Max Response Time field is meaningful only in Membership Query messages, and specifies the maximum allowed time before sending a responding report in units of 1/10 second. When a host receives a Membership Query message it should answer only:

  • it wants to join a/the multicast group
  • it is joined to a/the multicast group
    So, upon receiving such a message, a host waits for a random amount of time between zero and Max Response Time and sends a message only if no other hosts have replied to this message. In all other messages but Membership Query, this field is set to zero by the sender and ignored by receivers.

    Please also read "Host Extensions for IP Multicasting" by S.Deering for more information about multicast addresses.

    General case of multicast routing.

    On this picture only routers A, B, E, and F has hosts joined to a multicast group. That is, only these routers need to receive the multicast traffic. The goal of multicast routing is to find a tree of links that connects all of the routers that have attached hosts belonging to the multicast group.Multicast packets will then be routed along this tree from sender to all of the hosts from the group.

    In practice, two approaches have been adopted for determining the multicast routing tree. The two approaches differ according to whether a single group-shared tree is used to distribute the traffic to all senders in the group,

    or whether a source-specific tree is constructed for each individual sender.
    A is the senderB is the sender
  • group-shared tree - center-based approach
  • source-specific tree - Reverse Path Forwarding

    Reverse Path Forwarding

    The idea behind the RPF is simple, but elegant:
    When a router receives a multicast packet with a given source address, it transmits the packet on all of its outgoing links (except the one on which it was received) only if the packet arrived on the link that is on its shortest path back to the sender.
    Example:

    There is a small problem, though. Assume that router D has one more attached router G, which has no attached hosts that belong to the multicast group. It may be not so bad if router G gets unneeded multicast segment, but what if G has thousands of routers downstream of D (and none of them has hosts belong to this multicast group).

    The solution to the problem of receiving unwanted multicast packets under RPF is known as pruning. A multicast router that receives multicast packets and has no attached hosts joined to that group will send a prune message to its upstream router. If a router receives a prune message from each of its downstream routers, then it can forward a prune message upstream.

    Protocol Independent Multicast.

    RFC 2362

    Distance Vector Multicast Routing Protocol.

    RFC 1075

    Multicast Open Shortest Path First.

    RFC 1584

    References

  • Multicast FAQ