Legacy multicast (now called ASM or Any Source Multicast) has evolved to SSM or Source Specific Multicast for better scalability, security and performance.
In source specific multicast (SSM), there are multiple sources for the same group. Receivers can subscribe to a specific source and multicast group. The multiple sources for a group can be sending the same content or different sources for the same group can send different content depending upon the application and deployment.
Receivers subscribe to a specific source for a group popularly called (S, G) as opposed to (*, G) for any-source-multicast.
In the above diagram, the network under test can be a LAN or WAN.
When used within a LAN the receivers will use IGMPv3 and MLDv2 to join and leave the multicast group, L2 switches will use IGMP-snooping (or MLD-snooping) to learn the multicast group membership to efficiently forward the multicast traffic and a designated IGMP querier will help maintain the membership information.
When SSM extends across the WAN, PIM-SSM is used on the WAN routers to build and maintain the multicast trees.
In this blog post, we will restrict ourselves to the multicast receivers and senders and see how Ostinato can be used to play those roles. The Multicast Network under test can be a LAN or WAN - as multicast senders and receivers we are agnostic to that.
Multicast Sender
Let’s start with the multicast sender(s).
Multicast senders actually don’t know or care about SSM or ASM. They just send multicast traffic to the multicast group with their own source IP address.
See How to generate and verify multicast traffic with Ostinato for more details.
The IANA designated multicast group address range for SSM is 232.0.0.0/8
for IPv4 and ff3x::/32
for IPv6 where x
indicates scope (1
:node, 2
:link, 3
:site, 4-f
:global). So you should use group addresses in this range for SSM.
Please note that IGMP and MLD do not know or care about this SSM range and will work with any multicast group address.
You can use multiple Ostinato instances or a single Ostinato instance (and even single port) to generate multicast traffic for multiple sources. It is recommend to configure the source IP addresses as emulated devices in Ostinato so that Ostinato will respond to any ARP/NDP requests for these addresses.
For SSM testing, make sure you have two or more unique (S, G)
traffic flows.
Multicast Receiver
Multicast receivers in a SSM deployment use IGMPv3 (for IPv4 hosts) or MLDv2 (for IPv6 hosts) to join and leave the multicast group.
If you are new to IGMP/MLD, please review Verify IGMP with Ostinato to understand the basics of IGMP and verification using Ostinato. In this blog post, we will focus only on the IGMPv3 specific messages viz. IGMPv3 Report and Query.
IGMPv3 Report
IGMPv3 (and MLDv2) report introduces a concept of group records.
A group record is a collection of sources (S) for a multicast group (G) along with a record type. The record type indicates an operation to be performed on the group or its current state.
There are different types of group records defined in IGMPv3 that are used to reflect current state of a (S, G) or an operation to perform on a (S, G).
- MODE_IS_INCLUDE: Current state is INCLUDE mode
- MODE_IS_EXCLUDE: Current state is EXCLUDE mode
- CHANGE_TO_INCLUDE_MODE: State change to INCLUDE mode
- CHANGE_TO_EXCLUDE_MODE: State change to EXCLUDE mode
- ALLOW_NEW_SOURCES: Allow additional sources
- BLOCK_OLD_SOURCES: Block existing sources
For SSM join and leave, we use the following record types
- CHANGE_TO_INCLUDE_MODE: Used to join specific (S,G) pairs
- CHANGE_TO_EXCLUDE_MODE: Used to leave specific (S,G) pairs
You can use ALLOW_NEW_SOURCES and BLOCK_OLD_SOURCES to add or remove sources from an existing group.
When a querier sends an IGMPv3 Query, receivers must respond with their current membership state. The response should be an IGMPv3 Report with type MODE_IS_INCLUDE.
MLDv2 Report
MLDv2 is very similar to IGMPv3 with similar concepts of group records and query/response - just the IP addresses used are IPv6 instead of IPv4.
Multicast Querier
A multicast querier in a source specific multicast deployment is a host that periodically sends IGMPv3 Query or MLDv2 Query to all members of the multicast group and expects IGMPv3 Report or MLDv2 Report in response. The responses are used to prune and maintain the multicast membership lists.
Unlike IGMPv3 report, a IGMPv3 Query (and MLDv2 Query) is for a single group address not multiple.
Reach out to us if you have any questions!