Multicast Configuration

This page contains some configuration guidelines that may be useful when setting up multicast peering on Cisco routers. Note that this is not necessarily an ideal and/or optimal configuration, and is certainly not intended to be followed as best common practice(!), however it should give you an idea of where to start. Also note that only multicast configuration is covered, and that Cisco IOS 12.0S is assumed.

First, enable multicast routing:

ip multicast-routing [distributed]

If you want to cache multicast RTP headers so that they can be viewed with "show ip mpacket" command, enter:
ip multicast cache-headers rtp

Listen for session announcements; view with "show ip sdr". You can set this on all interfaces that will receive SDP packets, however you should only have to enable it on one interface and the router will join the relevant announcement groups.
interface Loopback0
 ip sdr listen

Enable PIM sparse mode on all interfaces:
interface FastEthernet0
 description Connection to internal network
 ip pim sparse-mode

Configure interface on public exchange switch. Because this is at the boundary of our network, we use an ACL to stop internal traffic from leaking out to neighbours. If PIMv2 is used, and BSR is configured, we similarly bound that traffic. For added safety, we use sparse-mode instead of sparse-dense-mode, in case we lose our RPs and start flooding.
interface FastEthernet1
 description Connection to Exchange Multicast Switch
 ip pim sparse-mode
 ip multicast boundary 1
 ip pim bsr-border

Now configure MBGP. In this example, we are announcing one multicast prefix via the "nlri multicast" argument - no unicast announcements are made. Use "show ip mbgp sum" to view MBGP status.
router bgp 5466
 network mask nlri multicast

Bring up peering with iBGP neighbour. This is an internal link, so we are using a loopback interface. We must also use next-hop-self, so that MBGP and MSDP agree on where the next hop for multicast packets is, otherwise RPF checks will fail.
 neighbor remote-as 5466 nlri multicast
 neighbor description
 neighbor update-source Loopback0
 neighbor next-hop-self

Bring up peering with an exchange neighbour. Simple filter-lists are used to control what we announce, and what we see. Alternatively use route-maps for more complex scenarios.
 neighbor remote-as 5459 nlri multicast
 neighbor description Exchange peer
 neighbor filter-list 1 out
 neighbor filter-list 2 in

If you have not fully enable your network for native multicast, you may want to experiment with configuring administrative distances so that iMBGP routes are preferred over IGP routes.
 distance mbgp 20 80 80

The filter lists to match our MBGP peerings.
ip as-path access-list 1 permit ^$
ip as-path access-list 1 permit ^5466$
ip as-path access-list 1 permit ^5494$
ip as-path access-list 2 permit .*

If you are using Cisco Auto-RP and want to set this router up as an RP, use this:
ip pim send-rp-announce Loopback0 scope 16
ip pim send-rp-discovery scope 16

Otherwise, if you have an RP elsewhere in your network, configure it:
ip pim rp-address override

Bring up external MSDP peer. Set filters for valid announcements. Use "show ip msdp sum" to view peer status.
ip msdp peer remote-as 5459
ip msdp description Exchange peer
ip msdp sa-filter in list mcast-msdpsa
ip msdp sa-filter out list mcast-msdpsa
ip msdp sa-limit 100

Bring up internal MSDP peer. Note that we do not filter internal peers. Do not use "ip msdp redistribute" command if you have internal peers as this will break internal peering. Also note that we use the loopback interface for peering. This matches our iMBGP config.
ip msdp peer connect-source Loopback0 remote-as 8914
ip msdp description

Cache session announcements, to reduce join latency. Use "show ip msdp sa-cache" to view cache announcements.
ip msdp cache-sa-state

This is our basic boundary list. .39 and .40 are Cisco Auto-RP addresses, while 239.x are administratively scoped local addresses. These should not leave our network.
access-list 1 deny
access-list 1 deny
access-list 1 deny
access-list 1 permit any

Stop advertisements from a variety of internal protocols in addition to internal session announcements, and multicast traffic from hosts with private addresses.
ip access-list extended mcast-msdpsa
 deny   ip any host
 deny   ip any host
 deny   ip any host
 deny   ip any host
 deny   ip any host
 deny   ip any host
 deny   ip any host
 deny   ip any host
 deny   ip any host
 deny   ip any host
 deny   ip any host
 deny   ip any host
 deny   ip any
 deny   ip any
 deny   ip any
 deny   ip any
 deny   ip any
 deny   ip any
 permit ip any any

See the Cisco IP Multicast Groups external Homepage for detailed information on configuring IOS for multicast.

Comments to: Karl Jeacle