1. Introduction
This post is about multicast state and why PIM-SM scales poorly when using a certain type of application. Bidirectional PIM is then introduced as a solution to this problem.
2. Multicast vs. Unicast State
An important difference between multicast and unicast is how the size of the control plane scales when the number of destinations in unicast and the number of groups in multicast, increase. Consider for example adding a single new entry to a unicast routing table. Each new entry would require some insignificant amount of additional memory in the RIB, and use 1 of the available entries in the FIB’s TCAM memory. Full routing protocol updates would also grow slightly larger. The important point here is that we have a fairly linear relationship between the number of routes and the size of the control plane in unicast routing.
Multicast routing with PIM-SM, the multicast routing protocol that I’ve covered up to this point, does not have this linear scaling. A router will not only maintain state for each group address, but also for each source that is sending to this destination. The source address is important because we typically want to create a multicast distribution tree directly between receiver and source (the shortest path tree switchover). For example, if we have 10 sources for a group, the last hop router will install 11 entries in the multicast RIB when a receiver is listening for that group (10 (s,g) entries and the (*,g)). Additionally, PIM will periodically want to refresh the state for all the entries by sending PIM join messages. The amount of state in the downstream portion of the network can be somewhat mitigated by not doing the SPT switchover, but the delivery from source to RP would still rely on source specific state. Continue reading