Example: Configuring Source-Specific Multicast
Understanding PIM Source-Specific Mode
PIM source-specific multicast (SSM) uses a subset of PIM sparse mode and IGMP version 3 (IGMPv3) to allow a client to receive multicast traffic directly from the source. PIM SSM uses the PIM sparse-mode functionality to create an SPT between the receiver and the source, but builds the SPT without the help of an RP.
- Any Source Multicast (ASM) was the Original Multicast
- Source Discovery in Sparse Mode vs Dense Mode
- PIM SSM is a Subset of PIM Sparse Mode
- Why Use PIM SSM
- PIM Terminology
- How PIM SSM Works
- Using PIM SSM
Any Source Multicast (ASM) was the Original Multicast
RFC 1112, the original multicast RFC, supported both many-to-many and one-to-many models. These came to be known collectively as any-source multicast (ASM) because ASM allowed one or many sources for a multicast group's traffic. However, an ASM network must be able to determine the locations of all sources for a particular multicast group whenever there are interested listeners, no matter where the sources might be located in the network. In ASM, the key function of source discovery is a required function of the network itself.
Source Discovery in Sparse Mode vs Dense Mode
Multicast source discovery appears to be an easy process, but in sparse mode it is not. In dense mode, it is simple enough to flood traffic to every router in the whole network so that every router learns the source address of the content for that multicast group. However, the flooding presents scalability and network resource use issues and is not a viable option in sparse mode.
PIM sparse mode (like any sparse mode protocol) achieves the required source discovery functionality without flooding at the cost of a considerable amount of complexity. RP routers must be added and must know all multicast sources, and complicated shared distribution trees must be built to the RPs.
PIM SSM is a Subset of PIM Sparse Mode
PIM SSM is simpler than PIM sparse mode because only the one-to-many model is supported. Initial commercial multicast Internet applications are likely to be available to subscribers (that is, receivers that issue join messages) from only a single source (a special case of SSM covers the need for a backup source). PIM SSM therefore forms a subset of PIM sparse mode. PIM SSM builds shortest-path trees (SPTs) rooted at the source immediately because in SSM, the router closest to the interested receiver host is informed of the unicast IP address of the source for the multicast traffic. That is, PIM SSM bypasses the RP connection stage through shared distribution trees, as in PIM sparse mode, and goes directly to the source-based distribution tree.
Why Use PIM SSM
In an environment where many sources come and go, such as for a videoconferencing service, ASM is appropriate. However, by ignoring the many-to-many model and focusing attention on the one-to-many source-specific multicast (SSM) model, several commercially promising multicast applications, such as television channel distribution over the Internet, might be brought to the Internet much more quickly and efficiently than if full ASM functionality were required of the network.
An SSM-configured network has distinct advantages over a traditionally configured PIM sparse-mode network. There is no need for shared trees or RP mapping (no RP is required), or for RP-to-RP source discovery through MSDP.
PIM SSM is simpler than PIM sparse mode because only the one-to-many model is supported. Initial commercial multicast Internet applications are likely to be available to subscribers (that is, receivers that issue join messages) from only a single source (a special case of SSM covers the need for a backup source). PIM SSM therefore forms a subset of PIM sparse mode. PIM SSM builds shortest-path trees (SPTs) rooted at the source immediately because in SSM, the router closest to the interested receiver host is informed of the unicast IP address of the source for the multicast traffic. That is, PIM SSM bypasses the RP connection stage through shared distribution trees, as in PIM sparse mode, and goes directly to the source-based distribution tree.
PIM Terminology
PIM SSM introduces new terms for many of the concepts in PIM sparse mode. PIM SSM can technically be used in the entire 224/4 multicast address range, although PIM SSM operation is guaranteed only in the 232/8 range (232.0.0/24 is reserved). The new SSM terms are appropriate for Internet video applications and are summarized in Table 1.
Term |
Any-Source Multicast |
Source-Specific Multicast |
---|---|---|
Address identifier |
G |
S,G |
Address designation |
group |
channel |
Receiver operations |
join, leave |
subscribe, unsubscribe |
Group address range |
224/4 excluding 232/8 |
224/4 (guaranteed only for 232/8) |
Although PIM SSM describes receiver operations as subscribe and subscriber, the same PIM sparse mode join and leave messages are used by both forms of the protocol. The terminology change distinguishes ASM from SSM even though the receiver messages are identical.
How PIM SSM Works
PIM source-specific multicast (SSM) uses a subset of PIM sparse mode and IGMP version 3 (IGMPv3) to allow a client to receive multicast traffic directly from the source. PIM SSM uses the PIM sparse-mode functionality to create an SPT between the receiver and the source, but builds the SPT without the help of an RP.
By default, the SSM group multicast address is limited to the IP address range from 232.0.0.0 through 232.255.255.255. However, you can extend SSM operations into another Class D range by including the ssm-groups statement at the [edit routing-options multicast] hierarchy level. The default SSM address range from 232.0.0.0 through 232.255.255.255 cannot be used in the ssm-groups statement. This statement is for adding other multicast addresses to the default SSM group addresses. This statement does not override the default SSM group address range.
In a PIM SSM-configured network, a host subscribes to an SSM channel (by means of IGMPv3), announcing a desire to join group G and source S (see Figure 1). The directly connected PIM sparse-mode router, the receiver's DR, sends an (S,G) join message to its RPF neighbor for the source. Notice in Figure 1 that the RP is not contacted in this process by the receiver, as would be the case in normal PIM sparse-mode operations.
The (S,G) join message initiates the source tree and then builds it out hop by hop until it reaches the source. In Figure 2, the source tree is built across the network to Router 3, the last-hop router connected to the source.
Using the source tree, multicast traffic is delivered to the subscribing host (see Figure 3).
Using PIM SSM
You can configure Junos OS to accept any-source multicast (ASM) join messages (*,G) for group addresses that are within the default or configured range of source-specific multicast (SSM) groups. This allows you to support a mix of any-source and source-specific multicast groups simultaneously.
Deploying SSM is easy. You need to configure PIM sparse mode on all router interfaces and issue the necessary SSM commands, including specifying IGMPv3 on the receiver's LAN. If PIM sparse mode is not explicitly configured on both the source and group member interfaces, multicast packets are not forwarded. Source lists, supported in IGMPv3, are used in PIM SSM. As sources become active and start sending multicast packets, interested receivers in the SSM group receive the multicast packets.
To configure additional SSM groups, include the ssm-groups statement at the [edit routing-options multicast] hierarchy level.
See Also
Source-Specific Multicast Groups Overview
Source-specific multicast (SSM) is a service model that identifies session traffic by both source and group address. SSM implemented in Junos OS has the efficient explicit join procedures of Protocol Independent Multicast (PIM) sparse mode but eliminates the immediate shared tree and rendezvous point (RP) procedures using (*,G) pairs. The (*) is a wildcard referring to any source sending to group G, and “G” refers to the IP multicast group. SSM builds shortest-path trees (SPTs) directly represented by (S,G) pairs. The “S” refers to the source's unicast IP address, and the “G” refers to the specific multicast group address. The SSM (S,G) pairs are called channels to differentiate them from any-source multicast (ASM) groups. Although ASM supports both one-to-many and many-to-many communications, ASM's complexity is in its method of source discovery. For example, if you click a link in a browser, the receiver is notified about the group information, but not the source information. With SSM, the client receives both source and group information.
SSM is ideal for one-to-many multicast services such as network entertainment channels. However, many-to-many multicast services might require ASM.
To deploy SSM successfully, you need an end-to-end multicast-enabled network and applications that use an Internet Group Management Protocol version 3 (IGMPv3) or Multicast Listener Discovery version 2 (MLDv2) stack, or you need to configure SSM mapping from IGMPv1 or IGMPv2 to IGMPv3.
SSM mapping allows operators to support an SSM network without requiring all hosts to support IGMPv3. This support exists in static (S,G) configurations, but SSM mapping also supports dynamic per-source group state information, which changes as hosts join and leave the group using IGMP.
SSM is typically supported with a subset of IGMPv3 and PIM sparse mode known as PIM SSM. Using SSM, a client can receive multicast traffic directly from the source. PIM SSM uses the PIM sparse-mode functionality to create an SPT between the client and the source, but builds the SPT without the help of an RP.
An SSM-configured network has distinct advantages over a traditionally configured PIM sparse-mode network. There is no need for shared trees or RP mapping (no RP is required), or for RP-to-RP source discovery through the Multicast Source Discovery Protocol (MSDP).
Example: Configuring Source-Specific Multicast Groups with Any-Source Override
This example shows how to extend source-specific multicast (SSM) group operations beyond the default IP address range of 232.0.0.0 through 232.255.255.255. This example also shows how to accept any-source multicast (ASM) join messages (*,G) for group addresses that are within the default or configured range of SSM groups. This allows you to support a mix of any-source and source-specific multicast groups simultaneously.
Requirements
Before you begin, configure the router interfaces.
Overview
To deploy SSM, configure PIM sparse mode on all routing device interfaces and issue the necessary SSM commands, including specifying IGMPv3 or MLDv2 on the receiver's LAN. If PIM sparse mode is not explicitly configured on both the source and group members interfaces, multicast packets are not forwarded. Source lists, supported in IGMPv3 and MLDv2, are used in PIM SSM. Only sources that are specified send traffic to the SSM group.
In a PIM SSM-configured network, a host subscribes to an SSM channel (by means of IGMPv3 or MLDv2) to join group G and source S (see Figure 4). The directly connected PIM sparse-mode router, the receiver's designated router (DR), sends an (S,G) join message to its reverse-path forwarding (RPF) neighbor for the source. Notice in Figure 4 that the RP is not contacted in this process by the receiver, as would be the case in normal PIM sparse-mode operations.
The (S,G) join message initiates the source tree and then builds it out hop by hop until it reaches the source. In Figure 5, the source tree is built across the network to Router 3, the last-hop router connected to the source.
Using the source tree, multicast traffic is delivered to the subscribing host (see Figure 6).
SSM can operate in include mode or in exclude mode. In exclude mode the receiver specifies a list of sources that it does not want to receive the multicast group traffic from. The routing device forwards traffic to the receiver from any source except the sources specified in the exclusion list. The receiver accepts traffic from any sources except the sources specified in the exclusion list.
Topology
This example works with the simple RPF topology shown in Figure 7.
Configuration
Procedure
CLI Quick Configuration
To quickly configure this example, copy the
following commands, paste them into a text file, remove any line breaks,
change any details necessary to match your network configuration,
copy and paste the commands into the CLI at the [edit]
hierarchy
level, and then enter commit
from configuration mode.
set protocols ospf area 0.0.0.0 interface fxp0.0 disable set protocols ospf area 0.0.0.0 interface all set protocols pim rp local address 10.255.72.46 set protocols pim rp local group-ranges 239.0.0.0/24 set protocols pim interface fe-1/0/0.0 mode sparse set protocols pim interface lo0.0 mode sparse set routing-options multicast ssm-groups 232.0.0.0/8 set routing-options multicast ssm-groups 239.0.0.0/8 set routing-options multicast asm-override-ssm
Step-by-Step Procedure
The following example requires that you navigate various levels in the configuration hierarchy. For information about navigating the CLI, see Using the CLI Editor in Configuration Mode in the Junos OS CLI User Guide.
To configure an RPF policy:
Configure OSPF.
[edit protocols ospf] user@host# set area 0.0.0.0 interface fxp0.0 disable user@host# set area 0.0.0.0 interface all
Configure PIM sparse mode.
[edit protocols pim] user@host# set rp local address 10.255.72.46 user@host# set rp local group-ranges 239.0.0.0/24 user@host# set interface fe-1/0/0.0 mode sparse user@host# set interface lo0.0 mode sparse
Configure additional SSM groups.
[edit routing-options] user@host# set ssm-groups [ 232.0.0.0/8 239.0.0.0/8 ]
Configure the RP to accept ASM join messages for groups within the SSM address range.
[edit routing-options] user@host# set multicast asm-override-ssm
If you are done configuring the device, commit the configuration.
user@host# commit
Results
Confirm your configuration by entering the show
protocols
and show routing-options
commands.
user@host# show protocols ospf { area 0.0.0.0 { interface fxp0.0 { disable; } interface all; } } pim { rp { local { address 10.255.72.46; group-ranges { 239.0.0.0/24; } } } interface fe-1/0/0.0 { mode sparse; } interface lo0.0 { mode sparse; } }
user@host# show routing-options multicast { ssm-groups [ 232.0.0.0/8 239.0.0.0/8 ]; asm-override-ssm; }
Verification
To verify the configuration, run the following commands:
show igmp group
show igmp statistics
show pim join
Example: Configuring an SSM-Only Domain
Deploying an SSM-only domain is much simpler than deploying an ASM domain because it only requires a few configuration steps. Enable PIM sparse mode on all interfaces by adding the mode statement at the [edit protocols pim interface all] hierarchy level. When configuring all interfaces, exclude the fxp0.0 management interface by adding the disable statement for that interface. Then configure IGMPv3 on all host-facing interfaces by adding the version statement at the [edit protocols igmp interface interface-name] hierarchy level.
In the following example, the host-facing interface is fe-0/1/2:
[edit] protocols { pim { interface all { mode sparse; version 2; } interface fxp0.0 { disable; } } igmp { interface fe-0/1/2 { version 3; } } }
Example: Configuring PIM SSM on a Network
The following example shows how PIM SSM is configured between a receiver and a source in the network illustrated in Figure 8.
This example shows how to configure the IGMP version to IGMPv3 on all receiving host interfaces.
Enable IGMPv3 on all host-facing interfaces, and disable IGMP on the fxp0.0 interface on Router 1.
user@router1# set protocols igmp interface all version 3 user@router1# set protocols igmp interface fxp0.0 disable
Note:When you configure IGMPv3 on a router, hosts on interfaces configured with IGMPv2 cannot join the source tree.
After the configuration is committed, use the
show configuration protocol igmp
command to verify the IGMP protocol configuration.user@router1> show configuration protocol igmp
[edit protocols igmp] interface all { version 3; } interface fxp0.0 { disable; }
Use the
show igmp interface
command to verify that IGMP interfaces are configured.user@router1> show igmp interface Interface State Querier Timeout Version Groups fe-0/0/0.0 Up 198.51.100.245 213 3 0 fe-0/0/1.0 Up 198.51.100.241 220 3 0 fe-0/0/2.0 Up 198.51.100.237 218 3 0 Configured Parameters: IGMP Query Interval (1/10 secs): 1250 IGMP Query Response Interval (1/10 secs): 100 IGMP Last Member Query Interval (1/10 secs): 10 IGMP Robustness Count: 2 Derived Parameters: IGMP Membership Timeout (1/10 secs): 2600 IGMP Other Querier Present Timeout (1/10 secs): 2550
Use the
show pim join extensive
command to verify the PIM join state on Router 2 and Router 3 (the upstream routers).user@router2> show pim join extensive 232.1.1.1 10.4.1.2 sparse Upstream interface: fe-1/1/3.0 Upstream State: Local Source Keepalive timeout: 209 Downstream Neighbors: Interface: so-1/0/2.0 10.10.71.1 State: Join Flags: S Timeout: 209
Use the
show pim join extensive
command to verify the PIM join state on Router 1 (the router connected to the receiver).user@router1> show pim join extensive 232.1.1.1 10.4.1.2 sparse Upstream interface: so-1/0/2.0 Upstream State: Join to Source Keepalive timeout: 209 Downstream Neighbors: Interface: fe-0/2/3.0 10.3.1.1 State: Join Flags: S Timeout: Infinity
IP version 6 (IPv6) multicast routers use the Multicast Listener Discovery (MLD) Protocol to manage the membership of hosts and routers in multicast groups and to learn which groups have interested listeners for each attached physical networks. Each routing device maintains a list of host multicast addresses that have listeners for each subnetwork, as well as a timer for each address. However, the routing device does not need to know the address of each listener—just the address of each host. The routing device provides addresses to the multicast routing protocol it uses, which ensures that multicast packets are delivered to all subnetworks where there are interested listeners. In this way, MLD is used as the transport for the Protocol Independent Multicast (PIM) Protocol. MLD is an integral part of IPv6 and must be enabled on all IPv6 routing devices and hosts that need to receive IP multicast traffic. The Junos OS supports MLD versions 1 and 2. Version 2 is supported for source-specific multicast (SSM) include and exclude modes.
See Also
Example: Configuring SSM Mapping
SSM mapping does not require that all hosts support IGMPv3. SSM mapping translates IGMPv1 or IGMPv2 membership reports to an IGMPv3 report. This enables hosts running IGMPv1 or IGMPv2 to participate in SSM until the hosts transition to IGMPv3.
SSM mapping applies to all group addresses that match the policy, not just those that conform to SSM addressing conventions (232/8 for IPv4, ff30::/32 through ff3F::/32 for IPv6).
We recommend separate SSM maps for IPv4 and IPv6 if both address families require SSM support. If you apply an SSM map containing both IPv4 and IPv6 addresses to an interface in an IPv4 context (using IGMP), only the IPv4 addresses in the list are used. If there are no such addresses, no action is taken. Similarly, if you apply an SSM map containing both IPv4 and IPv6 addresses to an interface in an IPv6 context (using MLD), only the IPv6 addresses in the list are used. If there are no such addresses, no action is taken.
In this example, you create a policy to match the group addresses that you want to translate to IGMPv3. Then you define the SSM map that associates the policy with the source addresses where these group addresses are found. Finally, you apply the SSM map to one or more IGMP (for IPv4) or MLD (for IPv6) interfaces.
Create an SSM policy named ssm-policy-example. The policy terms match the IPv4 SSM group address 232.1.1.1/32 and the IPv6 SSM group address ff35::1/128. All other addresses are rejected.
user@router1# set policy-options policy-statement ssm-policy-example term A from route-filter 232.1.1.1/32 exact user@router1# set policy-options policy-statement ssm-policy-example term A then accept user@router1# set policy-options policy-statement ssm-policy-example term B from route-filter ff35::1/128 exact user@router1# set policy-options policy-statement ssm-policy-example term B then accept
After the configuration is committed, use the show configuration policy-options command to verify the policy configuration.
user@host> show configuration policy-options
[edit policy-options] policy-statement ssm-policy-example { term A { from { route-filter 232.1.1.1/32 exact; } then accept; } term B { from { route-filter ff35::1/128 exact; } then accept; } then reject; }
The group addresses must match the configured policy for SSM mapping to occur.
Define two SSM maps, one called ssm-map-ipv6-example and one called ssm-map-ipv4-example, by applying the policy and configuring the source addresses as a multicast routing option.
user@host# set routing-options multicast ssm-map ssm-map-ipv6-example policy ssm-policy-example user@host# set routing-options multicast ssm-map ssm-map-ipv6-example source fec0::1 fec0::12 user@host# set routing-options multicast ssm-map ssm-map-ipv4-example policy ssm-policy-example user@host# set routing-options multicast ssm-map ssm-map-ipv4-example source 10.10.10.4 user@host# set routing-options multicast ssm-map ssm-map-ipv4-example source 192.168.43.66
After the configuration is committed, use the show configuration routing-options command to verify the policy configuration.
user@host> show configuration routing-options
[edit routing-options] multicast { ssm-map ssm-map-ipv6-example { policy ssm-policy-example; source [ fec0::1 fec0::12 ]; } ssm-map ssm-map-ipv4-example { policy ssm-policy-example; source [ 10.10.10.4 192.168.43.66 ]; } }
We recommend separate SSM maps for IPv4 and IPv6.
Apply SSM maps for IPv4-to-IGMP interfaces and SSM maps for IPv6-to-MLD interfaces:
user@host# set protocols igmp interface fe-0/1/0.0 ssm-map ssm-map-ipv4-example user@host# set protocols mld interface fe-0/1/1.0 ssm-map ssm-map-ipv6-example
After the configuration is committed, use the show configuration protocol command to verify the IGMP and MLD protocol configuration.
user@router1> show configuration protocol
[edit protocols] igmp { interface fe-0/1/0.0 { ssm-map ssm-map-ipv4-example; } } mld { interface fe-/0/1/1.0 { ssm-map ssm-map-ipv6-example; } }
Use the show igmp interface and the show mld interface commands to verify that the SSM maps are applied to the interfaces.
user@host> show igmp interface fe-0/1/0.0 Interface: fe-0/1/0.0 Querier: 192.168.224.28 State: Up Timeout: None Version: 2 Groups: 2 SSM Map: ssm-map-ipv4-example
user@host> show mld interface fe-0/1/1.0 Interface: fe-0/1/1.0 Querier: fec0:0:0:0:1::12 State: Up Timeout: None Version: 2 Groups: 2 SSM Map: ssm-map-ipv6-example