@(#)multicast routing howto 04 AUG 1997 Rob Thomas robt@cymru.com How to setup a router to route multicast packets Multicast is a UDP-based protocol which literally delivers packets from one host to many. If abused, it can be made to deliver from many hosts to many hosts to many hosts to many hosts... This is why it's important to setup multicasting routing on the routers in a sane manner. 1. First, enable the global multicast routing parameter by: ! ip multicast-routing ! This can be disabled, if you so choose, by doing: ! no ip multicast-routing ! 2. Next, select your style of multicasting. I chose PIM (Protocol- Independent Multicast) for the following reasons: - PIM works with all existing multicast routing protocols. - PIM has two modes (dense & sparse) which gives me some freedom at configuration time. You could also choose from IGMP (Internet Group Management Protocol, which is good for large WANs) or DVMRP (Distance Vector Multicast Routing Protocol, which is slightly unsupported). However, be aware that Cisco only tacitly supports DVMRP. To use DVMRP with a Cisco router, you need to point your Cisco to a router that DOES support DVMRP directly. Of the two PIM choices, I went with dense mode. Here are the differences: - Dense mode: When the router receives a multicast packet, the router sends the packet out of all interfaces except for the interface from whence the packet originated. If the router discovers that a certain interface has no multicast recipients, it sends a "prune" message back to the sender stating that there is no need to send messages to that interface/subnet/link/host. - Sparse mode: In sparse mode, it is assumed that no host wants multi- cast packets unless the host specifically asks for it. So, instead of the shotgun approach of dense mode, one router becomes the central hub. This central hub logs all hosts that wish to receive multicast. Further multicast packets are sent only to those hosts. Seeing as how we only have two routers, I did not want one router to be burdened with the list of multicast hosts (especially since practically ALL of our hosts "want" multicast). Additionally, I did not want to spend time fudging entries in the multicast recipient list. So, to configure for PIM dense mode multicast routing: ! interface ethernet 0 ip pim dense-mode ! interface ethernet 1 ip pim dense-mode ! Obviously, all involved routers should be speaking the same lingo. Thus, routerA is configured the same as routerB. 3. Next, you need to set the multicast threshold. This is the BIG TRICK[tm] to multicast routing. In a nutshell, every multicast packet has a TTL. That's basic to all IP. By setting the multicast threshold on a given router interface, you create a hurdle. If the packet's TTL is higher than the multicast threshold, the packet may pass. If the packet's TTL is LOWER than the multicast threshold, the packet is stopped (actually, it is bounced with an ICMP message, but that's for another "howto" ;-). This is how one prevents multicast packets from careening out into the great 'Net. The range for multicast threshold is 0 to 255, with 0 meaning all packets may pass (well, *almost* all) and 255 meaning virtually no packets may pass. On the routerB router, I set up the multicast threshold at a comfortable 1 (because this is an internal router). The multicast threshold on the interface leading to the Internet on routerA should be set at 255 (if, in fact, multicast is enabled on the interface at all). ! interface ethernet 0 ip multicast-threshold 1 ! interface ethernet 1 ip multicast-threshold 1 ! And you're set! 4. It's probably a VERY good idea at this point to save your config. I choose to save off to tftp (in case my NVRAM gets scrammed), but you can choose your own danger here. At the least, you should copy your running-config to your saved config. router#copy running-config startup-config Enjoy! Questions/comments/bugs to: robt@cymru.com Famous Unix quotes: "You are not expected to understand this." -- From the original comments in the source code for Version 7's process scheduling algorithm. Rob Thomas, robt@cymru.com http://www.enteract.com/~robt