2.6.1. Example: IP Multicast Addressing And Routing

The IP multicast uses special IP addresses. In IP protocol version 4, these are class D addresses that begin with an address prefix of 1110b. In IP protocol version 6, these are addresses that begin with an address prefix of 11111111b. Each multicast IP address denotes a group of nodes.

In IPv4, the membership of nodes in groups is managed by IGMP (Internet Group Management Protocol), which allows routers to keep track of which groups are represented on which network segments. IGMP relies on a combination of querying by routers and reporting by nodes.

On each network segment, the router with the numerically smallest IP address periodically multicasts a General Membership Query, which is a variant of the Membership Query with Group Address set to 0. A node that is a member of a group responds to the query by multicasting a Membership Report. To avoid flooding the network segment, the report is only sent after a random delay during which no other node sent a report for the same group.

A node that joins or leaves a group multicasts a State Change Report, which is a variant of the Membership Report. To find out whether a group is still represented on a network segment, the router with the numerically smallest IP address responds to the report by multicasting a Group Specific Membership Query for each group that the node left. The Group Specific Membership Query is a variant of the Membership Query and nodes that are members of the group respond to the query similarly as to the General Membership Query.

Figure 2.4. IGMP Membership Query

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Type = 0x11  | Max Resp Code |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Group Address                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Resv  |S| QRV |     QQIC      |     Number of Sources (N)     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Source Address [1]                      |
+-                                                             -+
|                       Source Address [2]                      |
+-                              .                              -+
.                               .                               .
.                               .                               .
+-                                                             -+
|                       Source Address [N]                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 2.5. IGMP Membership Report

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Type = 0x22  |    Reserved   |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Reserved            |  Number of Group Records (M)  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Group Record [1]                       .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Group Record [2]                       .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               .                               |
.                               .                               .
|                               .                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                        Group Record [M]                       .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 2.6. IGMP Group Record

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Record Type  |  Aux Data Len |     Number of Sources (N)     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Multicast Address                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Source Address [1]                      |
+-                                                             -+
|                       Source Address [2]                      |
+-                                                             -+
.                               .                               .
.                               .                               .
.                               .                               .
+-                                                             -+
|                       Source Address [N]                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
.                                                               .
.                         Auxiliary Data                        .
.                                                               .
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

In IPv6, IGMP is replaced by technically similar MLD (Multicast Listener Discovery).

Additional protocols are used to configure multicast routing. Examples include DVMRP (Distance Vector Multicast Routing Protocol), MOSPF (Multicast Open Shortest Path First), CBT (Core Based Trees), PIM (Protocol Independent Multicast).

Multicast addresses are either assigned administratively or allocated using MADCAP (Multicast Address Dynamic Client Allocation Protocol) and announced using SAP (Session Announcement Protocol).

References. 

  1. Deering S. E.: RFC 988 - Host Extensions for IP Multicasting

  2. Waitzman D., Partridge C., Deering S.: RFC 1075 - Distance Vector Multicast Routing Protocol

  3. Moy J.: RFC 1584 - Multicast Extensions to OSPF

  4. Ballardie A.: RFC 2189 - Core Based Trees Version 2 Multicast Routing Protocol Specification

  5. Estrin D., Farinacci D., Helmy A., Thaler D., Deering S., Handley M., Jacobson V., Liu C., Sharma P., Wei L.: RFC 2362 - Protocol Independent Multicast Sparse Mode Specification

  6. Meyer D.: RFC 2365 - Administratively Scoped IP Multicast

  7. Hanna S., Patel B., Shah M.: RFC 2730 - Multicast Address Dynamic Client Allocation Protocol

  8. Handley M., Perkins C., Whelan E.: RFC 2974 - Session Announcement Protocol

  9. Cain B., Deering S., Kouvelas I., Fenner B., Thyagarajan A.: RFC 3376 - Internet Group Management Protocol Version 3

  10. Adams A., Nicholas J., Siadak W.: RFC 3973 - Protocol Independent Multicast Dense Mode Specification