Routing Multicast Traffic with PIM-SM and Auto-RP
Problem
You want to allow routing of multicasts by using Sparse Mode, and use Auto-RP for distributing RP information.
Solution
This recipe accomplishes the same basic tasks as Recipe 23.2, but using a different method. If you are unfamiliar with PIM-SM, please read that recipe first. There are two different types of router configurations for Auto-RP configuration, just as there are for BSR. Router1 represents a regular multicast-enabled router anywhere in the network. This router supports end devices as group members or servers, as well as routing multicast traffic for other routers:
Router1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router1(config)#ip multicast-routing Router1(config)#ip pim rp-address 192.168.15.5 Router1(config)#interface FastEthernet0/0 Router1(config-if)#ip address 192.168.1.1 255.255.255.0 Router1(config-if)#ip pim sparse-dense-mode Router1(config-if)#exit Router1(config)#interface Serial1/0 Router1(config-if)#ip address 192.168.2.5 255.255.255.252 Router1(config-if)#ip pim sparse-dense-mode Router1(config-if)#end Router1#
The second type of configuration is for a candidate RP router, called Router RP1. This router may also support group members or servers. As in the previous recipe, it is a good idea to configure two or more routers in each multicast domain like this to provide redundancy:
Router-RP1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router-RP1(config)#ip multicast-routing Router-RP1(config)#interface Loopback0 Router-RP1(config-if)#ip address 192.168.12.1 255.255.255.255 Router-RP1(config-if)#ip pim sparse-dense-mode Router-RP1(config-if)#exit Router-RP1(config)#interface FastEthernet0/0 Router-RP1(config-if)#ip address 192.168.1.1 255.255.255.0 Router-RP1(config-if)#ip pim sparse-dense-mode Router-RP1(config-if)#exit Router-RP1(config)#interface Serial1/0 Router-RP1(config-if)#ip address 192.168.2.5 255.255.255.252 Router-RP1(config-if)#ip pim sparse-dense-mode Router-RP1(config-if)#exit Router-RP1(config)#ip pim send-rp-announce loopback0 scope 16 group-list 15 Router-RP1(config)#ip pim send-rp-discovery scope 16 Router-RP1(config)#access-list 15 permit 239.5.5.0 0.0.0.255 Router-RP1(config)#access-list 15 deny any Router-RP1(config)#end Router-RP1#
Discussion
Recipe 23.2 discussed one way of discovering the RPs in a PIM-SM network using the Bootstrap Router (BSR) method. This recipe shows an alternative method. The BSR method requires Version 2 of the PIM-SM protocol. Cisco started supporting this in IOS 11.3T. So if you have earlier IOS versions in your multicast network, you will need Auto-RP, perhaps used in parallel with BSR. As long as both systems select the same RPs, there should be no problems with running both methods simultaneously. If you do run into interoperability problems, however, you can disable the Version 2 functionality on newer routers using the following command:
Router1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router1(config)#ip pim version 1 Router1(config)#end Router1#
Auto-RP distributes information about the multicast Rendezvous Points using the globally registered multicast group addresses 224.0.1.39 and 224.0.1.40. This is an elegant solution to the problem of how to tell the network where the RPs are. But it presents a bit of a paradox to the routers: how can they distribute multicast information using PIM-SM if they don't yet have an RP? Cisco solved this problem by creating a new hybrid PIM mode called sparse-dense mode. This means that the routers should use sparse mode if there is a known RP, and dense mode if there isn't. So the only difference in Router1's configuration between this recipe and the previous one is that all of the interfaces are configured with the command: ip pim sparse-dense-mode:
Router1(config-if)#ip pim sparse-dense-mode
There are two important differences between Router RP1's configuration in this recipe and Recipe 23.2. To advertise its willingness to become an RP using Auto-RP, this router includes the global configuration command ip pim send-rp-announce:
Router-RP1(config)#ip pim send-rp-announce loopback0 scope 16 group-list 15
The interface specified in this command, loopback0, has the address that other routers will use for all of their interactions with the RP. We have used a loopback interface to ensure as long as there is an active path to this router, it can continue to act as the RP.
As mentioned in the Recipe 23.2, however, this may not always be desirable. For example, if this router has a LAN interface and a WAN interface, you certainly don't want all of your multicast traffic to have to loop through the WAN if the LAN interface goes down. In such failure modes, you would probably want to stop using this RP and switch to a different candidate RP. You can do this by simply specifying the LAN interface in the send-rp-announce command.
The second difference in Router RP1's configuration is the command ip pim send-rp-discovery:
Router-RP1(config)#ip pim send-rp-discovery scope 16
This instructs the router to act not only as a candidate RP, but also as an RP Mapping Agent. The mapping agent function is similar to the BSR function that we discussed in Recipe 23.2. This is the router that is responsible for distributing information about all of the RPs throughout the network. Although you could make the mapping agent a different router, we have combined the functions on the candidate RP router for the same reasons as in the BSR case.
Note that for both the send-rp-announce and send-rp-discovery commands there is a scope keyword that sets the TTL scope for these functions to 16. Because Auto-RP uses multicasts to distribute its information, you can specify a particular initial TTL value. This controls the network area that will be able to use this particular RP. Recipe 23.14 includes a detailed discussion of how to use TTL for controlling multicast scope.
Finally, in the send-rp-announce command we have specified a group-list keyword. This is identical to the group-list in the BSR configuration of Recipe 23.2. It defines which groups this particular router is willing to act as RP for. As we mentioned in Recipe 23.2, most networks can easily support all of their multicast traffic on a single active RP. Having different RP's for different multicast groups is primarily useful for administrative reasons, and for rare networks that have too many multicast groups for one RP to support.
If you want one RP for all groups, simply leave out the group-list keyword and its arguments:
Router-RP1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router-RP1(config)#ip pim send-rp-announce loopback0 scope 16 Router-RP1(config)#ip pim send-rp-discovery scope 16 Router-RP1(config)#end Router-RP1#
See Also
Recipe 23.2; Recipe 23.14