Profile 1 w/ Redundant Roots
Load basic.startup.config.with.cpim.cfg
The basic IP addresses, L3VPN, and C-PIM between the PEs and CEs is pre-configured.
Configure multicast VPN using MP2MP mLDP in the core.
You cannot use PIM in the core.
C3 should be able to ping 239.1.2.3, with C2 responding.
CE1 is configured as the RP using BSR.
PEs should form C-PIM adjacencies directly between themselves.
Use root rundancy by configuring PEs to use either P1 or P2 as the root (whichever is closer) and failover to the other root upon failure of the primary root.
See answer below (scroll down).
Answer
Explanation
In the previous lab, we statically configured P2 as the root for the default MDT, which uses a MP2MP tree. Just like with PIM-BiDir, the root of a MP2MP tree plays an important role. If P2 fails, the default MDT will be broken, C-PIM adjacencies will time out, and the customer’s Multicast L3VPN will be broken.
To provide redundancy we have two options:
Configure multiple core routers with the same Anycast IP, but use a longer match on the one we want to be primary.
Only one mLDP MP2MP tree is setup at a time. During failover, a new tree is rebuilt.
Define multiple roots for the default MDT. The primary MDT will be the one with the root that has the lowest IGP metric.
Both mLDP MP2MP trees are built, but PEs only send traffic down one tree at a time.
Using the second method produces two default MDTs, but only one will be used at any given time. To configure this, you simply define a second default MDT on each PE:
Note that all PEs must define both default MDTs. This is because different PEs will use different MDTs as the primary MDT, depending on which root is closer. So all PEs must join both MDTs to ensure they can receive all traffic on either default MDT.
On IOS-XE, we can verify which root is used as the primary. Traffic is only sent down this tree as long as the primary root is up. PE1 is closest to 10.10.10.10, and PE2 is closest to 20.20.20.20.
(As a side note, the VPN ID is entered in hex, not decimal. This explains why the opaque value has 100 in it instead of 0x64.)
PE3 is also closest to P2 in terms of IGP metrics:
If the IGP metrics tie, then the MP2MP tree with the highest root IP address is used.
If P2 fails, all PEs will detect this via the RIB and use P1. This can’t be easily demonstrated right now because the loopback we are using for the root is also tied to LDP. Let’s reconfigure the root to use new loopbacks. We can shut this loopback down to observe failover.
Currently we are not using data MDTs, so we can start a multicast ping on one host, shutdown a loopback, and observe how long it takes for the multicast traffic to reconverge. We’ll use C1 as the sender, because PE1 uses P1 as the MP2MP root. C3 as the receiver uses P2 as the MP2MP root.
We’ll shutdown Lo1 on P1. This will force PE1 to detect the change and switchover to using P2 as the root for the active MP2MP MDT.
Only one ping is lost:
The downside to this method is that there are twice as many default MDTs pre-built and signaled in the core. However, the redundancy may be worth the trade off.
Last updated