The choice of a multicast routing protocol is sometimes difficult to do and even more difficult to argument.
Here a few hints which may help you to define which one of DVMRP, PIM-DM or PIM-SM is the most adapted for your network.
Firstly and before to enter (a little bit more) in details, I would say that DVMRP and PIMDM are based on the same concept (flooding and pruning) and are quite simple compared to PIMSM (Based on explicit Joins). So if you philosophy is to think that simple things are the best, DVMRP and PIMDM will suit better to you. For the ones (and usually it’s the customer themselves) which prefer something more sophisticated and probably sexier then PIMSM is for you.
When to use DVMRP :
DVMRP is well adapted to small and medium size networks (up to 32 hops which for an industrial network is already very large). If the recovery time for the multicast streams isn’t the key point then prefer it to PIMDM which isn’t as well “structured”
When to use PIMDM
Use PIMDM on small and medium sized network where the recovery time is the key point. Indeed PIMDM rely on the unicast routing tables of the routers while DVMRP is fully autonomous, usually the unicast routing protocol in use (or static routing) is faster to reconfigure than DVMRP which gives PIMDM better performances when the network needs to reconfigure. It also has a better scalability than DVMRP (but do you know a lot of networks with more than 32 hops ?)
Before the implementation of the “state refresh” function, PIMDM was absolutely to avoid not to risk overloadings problem. Since this feature was implemented in rel 7 and additional improvements in rel 8, the use of PIMDM may appear interesting. Nevertheless each router is somehow “blind” (PIMDM ignores the topology) and then need to rely on mechanisms based on software and involving more the CPU, it makes also PIMDM more difficult to troubleshoot and maybe more sensitive than DVMRP.
When to use PIMSM
PIMSM is as fast as PIMDM in case of redundancy, is highly scalable and don’t use any flooding mechanism. It’s the most recent of the multicast routing protocols and usually all these arguments make it really sexy to the eyes of the customers which want absolutely PIMSM on their network.
BUT even if all these arguments are true, PIMSM is the most complex and its complexity can makes it very difficult to predict and to troubleshoot (PIMDM looks like a protocol for babies compared to it). This complexity makes the amount of scenarios in case of events really huge. And as surprising as it can be, PIMSM won’t support all scenarios and all topology that DVMRP and PIMDM support.
I would say the use of PIMSM makes sense on big sized networks (usually it’s required when the customer want to interconnect with another network where PIMSM is already deployed), or on networks where there are multiple producers (able to produce high load) and very few consumers requesting the streams only occasionally. If all the multicast streams of a network are all continuously consumed by a consumer (which is sometimes the case with video security networks) then PIMSM doesn’t bring a lot because one of its main advantages is to avoid unwanted flooding.
So just use PIMSM in case of :
- Big sized network
- Interconnection with existing network already using PIMSM (should be most of the cases when PIMSM is really required)
- High amount of multicast streams available but very few consumers and sporadic consuming.