While working towards my JNCIE-ENT, I decided it would be a good idea to do a quick blog post on multicast. After thinking it through, I actually decided to split it up into five shorter posts:
- Part 1: Initial Lab Setup
- Part 2: Static RP
- Part 3: BSR
- Part 4: Anycast-RP
- Part 5: IPv6
So without further adieu, we’ll begin by setting up our topology.
We’ll be using the following diagram (click to enlarge):
Note the use of both IPv4 and IPv6 addressing. I won’t be covering IPv6 multicast in the first four sections, mainly because I’m unable to do verification without real senders and receivers at this time. IPv6 will be touched on in part 5.
Also note that we are using virtual-routers with logical-tunnels to build this entire topology on one router. I’m using an SRX210H, but any Juniper router should suffice. I’ve attempted to keep the addressing scheme sane by using the format 10.42.<routerx><routery>.<router#>/24. For example, the link between routers 3 and 4 would be 10.42.34.0/24 with R3 being .3 and R4 being .4. Those who have used INE workbooks for the CCIE exams should be familiar with this concept. IPv6 is similar, and again the R3 to R4 link would be 2001:db8:34::/64
We’re using 192.168.255.0/24 for the sender, and 192.168.1.0/24 for the receiver.
Setting up a lab using virtual-routers is covered in an earlier blog post, so I won’t repeat those details here. Simply click here to view the configuration you’ll need. Please note that PIM-SM is already enabled on all VR interfaces, minus the loopbacks. We’re also running single-area OSPF.
Let’s make sure our simulated hosts can reach each other:
cjones@R7> traceroute 192.168.1.100 routing-instance SNDR1 traceroute to 192.168.1.100 (192.168.1.100), 30 hops max, 40 byte packets 1 192.168.255.1 (192.168.255.1) 12.040 ms 11.852 ms 10.490 ms 2 10.42.13.3 (10.42.13.3) 12.498 ms 11.387 ms 11.175 ms 3 10.42.34.4 (10.42.34.4) 12.232 ms 10.052 ms 11.816 ms 4 10.42.45.5 (10.42.45.5) 16.665 ms 17.614 ms 10.518 ms 5 192.168.1.100 (192.168.1.100) 6.527 ms 5.594 ms 12.724 ms
Great! Let’s also take a look at our PIM neighborships:
cjones@R7> show pim neighbors instance R1 inet | except = Instance: PIM.R1 Interface IP V Mode Option Uptime Neighbor addr lt-0/0/0.12 4 2 HPLGT 02:10:34 10.42.12.2 lt-0/0/0.13 4 2 HPLGT 02:10:06 10.42.13.3 cjones@R7> show pim neighbors instance R2 inet | except = Instance: PIM.R2 Interface IP V Mode Option Uptime Neighbor addr lt-0/0/0.21 4 2 HPLGT 02:10:37 10.42.12.1 lt-0/0/0.23 4 2 HPLGT 02:10:09 10.42.23.3 lt-0/0/0.24 4 2 HPLGT 02:10:10 10.42.24.4 cjones@R7> show pim neighbors instance R3 inet | except = Instance: PIM.R3 Interface IP V Mode Option Uptime Neighbor addr lt-0/0/0.31 4 2 HPLGT 02:10:13 10.42.13.1 lt-0/0/0.32 4 2 HPLGT 02:10:13 10.42.23.2 lt-0/0/0.34 4 2 HPLGT 02:10:40 10.42.34.4 cjones@R7> show pim neighbors instance R4 inet | except = Instance: PIM.R4 Interface IP V Mode Option Uptime Neighbor addr lt-0/0/0.42 4 2 HPLGT 02:10:17 10.42.24.2 lt-0/0/0.43 4 2 HPLGT 02:10:43 10.42.34.3 lt-0/0/0.45 4 2 HPLGT 02:10:43 10.42.45.5 cjones@R7> show pim neighbors instance R5 inet | except = Instance: PIM.R5 Interface IP V Mode Option Uptime Neighbor addr lt-0/0/0.54 4 2 HPLGT 02:10:46 10.42.45.4
Looks like everything is up!
Let’s take a quick look at the PIM join status on R5 before we go any further:
cjones@R7> show pim join instance R5 Instance: PIM.R5 Family: INET R = Rendezvous Point Tree, S = Sparse, W = Wildcard Instance: PIM.R5 Family: INET6 R = Rendezvous Point Tree, S = Sparse, W = Wildcard
Exactly as expected… nothing.
In order for us to test our multicast, we need to set up a static IGMP (for IPv4) and MLD (for IPv6) join on the receivers first-hop gateway. Again those with an IOS background should be familiar with this concept, however in Junos there is an additional step required, as a join does not equal a listening process. (Those familiar with the mgen utility know that it requires both a join and a listen on a receiver as well). We’ll utilize the SAP protocol to listen on our chosen IPv4 multicast address of 188.8.131.52, and IPv6 multicast address of FF1E::1.
set protocols igmp interface lt-0/0/0.2 static group 184.108.40.206 set protocols mld interface lt-0/0/0.2 static group FF1E::1 set protocols sap listen 220.127.116.11 port 5000 commit and-quit
Here is where our inability to test IPv6 multicast comes to light – SAP doesn’t allow an IPv6 address. (If anyone knows of a workaround or an alternate protocol, please leave a comment!)
Everything looks good with our topology at this point, so on to part 2!