IPv6 multicast routing is a fun topic, and is often either loved or avoided
. Here is a jump-start for all my CCIE candidate friends.
Readers digest version: “Auto-RP is out, Dense-mode is out, IGMP is replaced with Multicast Listener Discovery (MLD). MLDv2 supports SSM. RPs, Bi-directional PIM, SSM, ASM and BSRs are still alive and well, and we can now avoid static RPs and BSR if we choose to use embedded RP within the multicast packets themselves. (Crazy and amazing stuff).
Want a little more? Then read on. In this multi-part blog, we will discuss static RP, BSR, and Embedded RP. This first blog will discuss static RP, with some examples that will assist you in getting started. For those of you who subscribe the open lecture series, I will be including all three RP options in a discussion there as well.
Here is the topology we will use:

Here is some additional info on the topology. There is a loopback 0 interface on each router using 2002:yyyy::y/64, where y = the router number. We also hard coded the MAC addresses to 00yy.yyyy.yyyy so that they would be easy to spot. OSPFv3 is running on each interface shown in the diagram including the loopbacks. Let’s verify some basic addressing and connectivity before we add IPv6 multicast routing to the mix.
Now we can take a look at some additional information such as the tunnel interface that was created and neighborships from a PIM perspective.
Next we will set up hard code an RP for the entire domain to use. R2’s loopback0 will do fine. We will use the following command on R2, as well as all the other 5 routers.
Ok, so now we just need some content. We can use R6 to emulate a mcast server for that group, by doing a ping. First lets do a debug of ipv6 pim on the RP, R2.
One item of note, is that hard coding the RP is not very scalable. The other options include BSR and Embedded RP (where the actual multicast traffic has the RP embedded within the packet itself). I will include those examples in another blog post. Or if you can’t wait, jump right into our RS workbooks for a wealth of information, insight and practice labs to improve your Tier1, Tier2 and Tier3 skills.
Any skills you develop in IPv4 multicasting will greatly assist you with the IPv6 multicasting, and they are both on the blueprint.
Best wishes,

Readers digest version: “Auto-RP is out, Dense-mode is out, IGMP is replaced with Multicast Listener Discovery (MLD). MLDv2 supports SSM. RPs, Bi-directional PIM, SSM, ASM and BSRs are still alive and well, and we can now avoid static RPs and BSR if we choose to use embedded RP within the multicast packets themselves. (Crazy and amazing stuff).
Want a little more? Then read on. In this multi-part blog, we will discuss static RP, BSR, and Embedded RP. This first blog will discuss static RP, with some examples that will assist you in getting started. For those of you who subscribe the open lecture series, I will be including all three RP options in a discussion there as well.
Here is the topology we will use:

Here is some additional info on the topology. There is a loopback 0 interface on each router using 2002:yyyy::y/64, where y = the router number. We also hard coded the MAC addresses to 00yy.yyyy.yyyy so that they would be easy to spot. OSPFv3 is running on each interface shown in the diagram including the loopbacks. Let’s verify some basic addressing and connectivity before we add IPv6 multicast routing to the mix.
R3#show ipv6 int briefLooks like everything is there. Lets do an IPv6 traceroute to verify. Note the path that begins from R3, then through R4 -> R5 -> R6 -> R1 -> R2. That is the path the OSPFv3 control plane sorted out. It will be important later, when we see what the RPF path is from R3 to R2.
FastEthernet0/0 [up/up]
FE80::233:33FF:FE33:3333
2002:34::3
Serial0/1 [up/up]
Serial0/1.23 [up/up]
FE80::C003:8FF:FECC:0
2002:23::3
Loopback0 [up/up]
FE80::C003:8FF:FECC:0
2002:3333::3
R3#show ipv6 route ospf
IPv6 Routing Table - 17 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
U - Per-user Static route, M - MIPv6
I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
D - EIGRP, EX - EIGRP external
O 2002:12::/64 [110/5]
via FE80::244:44FF:FE44:4444, FastEthernet0/0
O 2002:14::/64 [110/65]
via FE80::244:44FF:FE44:4444, FastEthernet0/0
O 2002:16::/64 [110/4]
via FE80::244:44FF:FE44:4444, FastEthernet0/0
O 2002:45::/64 [110/2]
via FE80::244:44FF:FE44:4444, FastEthernet0/0
O 2002:56::/64 [110/3]
via FE80::244:44FF:FE44:4444, FastEthernet0/0
O 2002:1111::1/128 [110/4]
via FE80::244:44FF:FE44:4444, FastEthernet0/0
O 2002:2222::2/128 [110/5]
via FE80::244:44FF:FE44:4444, FastEthernet0/0
O 2002:4444::4/128 [110/1]
via FE80::244:44FF:FE44:4444, FastEthernet0/0
O 2002:5555::5/128 [110/2]
via FE80::244:44FF:FE44:4444, FastEthernet0/0
O 2002:6666::6/128 [110/3]
via FE80::244:44FF:FE44:4444, FastEthernet0/0
R3#
R3#traceroute ipv6 2002:2222::2OK, I am sold that we have connectivity. Lets verify that PIM, MLD and Multicast-Routing is not currently enabled yet.
Type escape sequence to abort.
Tracing the route to 2002:2222::2
1 2002:34::4 80 msec 28 msec 4 msec
2 2002:45::5 44 msec 40 msec 24 msec
3 2002:56::6 4 msec 32 msec 32 msec
4 2002:16::1 40 msec 28 msec 24 msec
5 2002:2222::2 84 msec 8 msec 20 msec
R3#
R3#show ipv6 pim interfaceLets enable ipv6 multicast routing, and see the difference on R3.
No interfaces found.
R3#show ipv6 mld interface
FastEthernet0/0 is up, line protocol is up
Internet address is FE80::233:33FF:FE33:3333/10
MLD is disabled on interface
Loopback0 is up, line protocol is up
Internet address is FE80::C003:8FF:FECC:0/10
MLD is disabled on interface
Serial0/1.23 is up, line protocol is up
Internet address is FE80::C003:8FF:FECC:0/10
MLD is disabled on interface
R3#
R3(config)#ipv6 multicast-routingJust adding the global command of “ipv6 multicast-routing” enabled MLD on the interfaces, and enabled PIM as well. The tunnel created is used to send register messages to RPs when multicast content is seen. The command was so easy, I added the command to the other 5 routers as well. (Not shown here, but if you want to see it, just revisit the previous command in the previous example 5 more times.
R3#show ipv6 pim interface
Interface PIM Nbr Hello DR
Count Intvl Prior
Tunnel0 off 0 30 1
Address: FE80::C003:8FF:FECC:0
DR : not elected
FastEthernet0/0 on 0 30 1
Address: FE80::233:33FF:FE33:3333
DR : this system
Loopback0 on 0 30 1
Address: FE80::C003:8FF:FECC:0
DR : this system
Serial0/1.23 on 0 30 1
Address: FE80::C003:8FF:FECC:0
DR : this system
R3#show ipv6 mld interface
Tunnel0 is up, line protocol is up
Internet address is FE80::C003:8FF:FECC:0/10
MLD is disabled on interface
FastEthernet0/0 is up, line protocol is up
Internet address is FE80::233:33FF:FE33:3333/10
MLD is enabled on interface
Current MLD version is 2
MLD query interval is 125 seconds
MLD querier timeout is 255 seconds
MLD max query response time is 10 seconds
Last member query response interval is 1 seconds
MLD activity: 9 joins, 0 leaves
MLD querying router is FE80::233:33FF:FE33:3333 (this system)
Loopback0 is up, line protocol is up
Internet address is FE80::C003:8FF:FECC:0/10
MLD is enabled on interface
Current MLD version is 2
MLD query interval is 125 seconds
MLD querier timeout is 255 seconds
MLD max query response time is 10 seconds
Last member query response interval is 1 seconds
MLD activity: 6 joins, 0 leaves
MLD querying router is FE80::C003:8FF:FECC:0 (this system)
Serial0/1.23 is up, line protocol is up
Internet address is FE80::C003:8FF:FECC:0/10
MLD is enabled on interface
Current MLD version is 2
MLD query interval is 125 seconds
MLD querier timeout is 255 seconds
MLD max query response time is 10 seconds
Last member query response interval is 1 seconds
MLD activity: 7 joins, 0 leaves
MLD querying router is FE80::C003:8FF:FECC:0 (this system)
R3#

Now we can take a look at some additional information such as the tunnel interface that was created and neighborships from a PIM perspective.
R3#show ipv6 int briefLooks like R4 won the DR election on the FA0/0 segment. All is fair in love and multicast. (Earlier, before R4 was enabled for multicast routing, R3 was the DR, and R4 is now the DR for the segment due to a higher IP address on R4).
FastEthernet0/0 [up/up]
FE80::233:33FF:FE33:3333
2002:34::3
Serial0/1 [up/up]
Serial0/1.23 [up/up]
FE80::C003:8FF:FECC:0
2002:23::3
Loopback0 [up/up]
FE80::C003:8FF:FECC:0
2002:3333::3
Tunnel0 [up/up]
FE80::C003:8FF:FECC:0
unnumbered (FastEthernet0/0)
R3#show ipv6 pim neighbor
Neighbor Address Interface Uptime Expires DR pri Bidir
FE80::244:44FF:FE44:4444 FastEthernet0/0 00:00:55 00:01:21 1 (DR) B
FE80::C002:8FF:FECC:0 Serial0/1.23 00:00:57 00:01:18 1 B
R3#
Next we will set up hard code an RP for the entire domain to use. R2’s loopback0 will do fine. We will use the following command on R2, as well as all the other 5 routers.
R2(config)#ipv6 pim rp-address 2002:2222::2On R2, PIM tunnels are automagically created. These are used for initial register messages. In sparse mode, the RP will build a shortest path tree (by default), in the direction of the multicast source.
%SYS-5-CONFIG_I: Configured from console by console
%LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel1, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel2, changed state to up
R2#
R2#show ipv6 pim tunnelLets see if everyone agrees that R2 should be the RP. They should, since we hard coded it on all 6 routers. We will do a quick check on R3. All the others should be similar.
Tunnel0*
Type : PIM Encap
RP : Embedded RP Tunnel
Source: 2002:12::2
Tunnel1*
Type : PIM Encap
RP : 2002:2222::2*
Source: 2002:12::2
Tunnel2*
Type : PIM Decap
RP : 2002:2222::2*
Source: -
R2#
R3#show ipv6 pim group-map ff00::/8Sweet! Since we are on R3, let’s have R3’s loopback 0 interface join a multicast group. IGMP has been replaced in IPv6 multicast with Multicast Listener Discovery (MLD), which uses IPv6 ICMP for communications. Lets use the group of FF08:AAAA::1.
IP PIM Group Mapping Table
(* indicates group mappings being used)
FF00::/8*
SM, RP: 2002:2222::2
RPF: Fa0/0,FE80::244:44FF:FE44:4444
Info source: Static
Uptime: 00:04:44, Groups: 0
FF00::/8
SM
Info source: Default
Uptime: 00:17:22, Groups: 0
R3#
R3(config)#int lo 0Lets look at the mroute table. It appears that R3 is ready willing and able to get that stream of traffic. We should follow the path upstream, and see if the join went all the way to R2, (the RP).
R3(config-if)#ipv6 mld join-group FF08:AAAA::1
R3#show ipv6 mrouteLooks like the join for that group went all the way back to the RP. (One of the reasons I did the traceroute earlier, was to show the unicast routing path for IPv6). Notice that the RPF path back to the RP of 2002:2222::2, follows the same path the traceroute did. Convenient, isn’t it.
Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group,
C - Connected, L - Local, I - Received Source Specific Host Report,
P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set,
J - Join SPT
Timers: Uptime/Expires
Interface state: Interface, State
(*, FF08:AAAA::1), 00:00:32/never, RP 2002:2222::2, flags: SCLJIncoming interface: FastEthernet0/0
RPF nbr: FE80::244:44FF:FE44:4444
Immediate Outgoing interface list:Loopback0, Forward, 00:00:32/never
R3#
R4#show ipv6 mroute
Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group,
C - Connected, L - Local, I - Received Source Specific Host Report,
P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set,
J - Join SPT
Timers: Uptime/Expires
Interface state: Interface, State
(*, FF08:AAAA::1), 00:02:40/00:02:47, RP 2002:2222::2, flags: SIncoming interface: FastEthernet0/1
RPF nbr: FE80::255:55FF:FE55:5555
Immediate Outgoing interface list:FastEthernet0/0, Forward, 00:02:40/00:02:47R4#
R5#show ipv6 mroute
Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group,
C - Connected, L - Local, I - Received Source Specific Host Report,
P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set,
J - Join SPT
Timers: Uptime/Expires
Interface state: Interface, State
(*, FF08:AAAA::1), 00:02:57/00:03:27, RP 2002:2222::2, flags: S
Incoming interface: FastEthernet0/0
RPF nbr: FE80::266:66FF:FE66:6666
Immediate Outgoing interface list:
FastEthernet0/1, Forward, 00:02:57/00:03:27
R5#
R6#show ipv6 mroute
Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group,
C - Connected, L - Local, I - Received Source Specific Host Report,
P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set,
J - Join SPT
Timers: Uptime/Expires
Interface state: Interface, State
(*, FF08:AAAA::1), 00:03:17/00:03:08, RP 2002:2222::2, flags: S
Incoming interface: FastEthernet0/1
RPF nbr: FE80::211:11FF:FE11:1111
Immediate Outgoing interface list:
FastEthernet0/0, Forward, 00:03:17/00:03:08
R6#
R1#show ipv6 mroute
Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group,
C - Connected, L - Local, I - Received Source Specific Host Report,
P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set,
J - Join SPT
Timers: Uptime/Expires
Interface state: Interface, State
(*, FF08:AAAA::1), 00:03:39/00:02:47, RP 2002:2222::2, flags: S
Incoming interface: FastEthernet0/0
RPF nbr: FE80::222:22FF:FE22:2222
Immediate Outgoing interface list:
FastEthernet0/1, Forward, 00:03:39/00:02:47
R1#
R2#show ipv6 mroute
Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group,
C - Connected, L - Local, I - Received Source Specific Host Report,
P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set,
J - Join SPT
Timers: Uptime/Expires
Interface state: Interface, State
(*, FF08:AAAA::1), 00:04:05/00:03:25, RP 2002:2222::2, flags: S
Incoming interface: Tunnel2
RPF nbr: 2002:2222::2
Immediate Outgoing interface list:
FastEthernet0/0, Forward, 00:04:05/00:03:25R2#
Ok, so now we just need some content. We can use R6 to emulate a mcast server for that group, by doing a ping. First lets do a debug of ipv6 pim on the RP, R2.
R2#debug ipv6 pimNow a ping from R6.
IPv6 PIM debugging is on
R6#ping ff08:aaaa::1Cool. Lets look at the debug output on the RP.
Output Interface: Fastethernet0/0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FF08:AAAA::1, timeout is 2 seconds:
Packet sent with a source address of 2002:56::6
Reply to request 0 received from 2002:3333::3, 248 ms
Reply to request 1 received from 2002:3333::3, 64 ms
Reply to request 2 received from 2002:3333::3, 80 ms
Reply to request 3 received from 2002:3333::3, 72 ms
Reply to request 4 received from 2002:3333::3, 84 ms
Success rate is 100 percent (5/5), round-trip min/avg/max = 64/109/248 ms
5 multicast replies and 0 errors.
IPv6 PIM: Received J/P on FastEthernet0/0 from FE80::211:11FF:FE11:1111 target: FE80::222:22FF:FE22:2222 (to us)Lets also investigate R5, in the path between R6 (the mcast server) and the R3 (who joined the group)
IPv6 PIM: J/P entry: Join root: 2002:2222::2 group: FF08:AAAA::1 flags: RPT WC S
IPv6 PIM: (*,FF08:AAAA::1) FastEthernet0/0 Raise J/P expiration timer to 210 seconds
R5#show ipv6 mrouteAnother command that provides additional information is the show ipv6 pim topology command.
Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group,
C - Connected, L - Local, I - Received Source Specific Host Report,
P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set,
J - Join SPT
Timers: Uptime/Expires
Interface state: Interface, State
(*, FF08:AAAA::1), 00:11:18/00:03:06, RP 2002:2222::2, flags: S
Incoming interface: FastEthernet0/0
RPF nbr: FE80::266:66FF:FE66:6666
Immediate Outgoing interface list:
FastEthernet0/1, Forward, 00:11:18/00:03:06
(2002:56::6, FF08:AAAA::1), 00:03:09/00:00:20, flags: ST
Incoming interface: FastEthernet0/0
RPF nbr: FE80::266:66FF:FE66:6666
Immediate Outgoing interface list:
FastEthernet0/1, Forward, 00:03:08/00:03:16
R5#
R5#show ipv6 pim topologyThat’s a great little jumpstart into IPv6 multicast.
IP PIM Multicast Topology Table
Entry state: (*/S,G)[RPT/SPT] Protocol Uptime Info
Entry flags: KAT - Keep Alive Timer, AA - Assume Alive, PA - Probe Alive,
RA - Really Alive, LH - Last Hop, DSS - Don't Signal Sources,
RR - Register Received, SR - Sending Registers, E - MSDP External,
DCC - Don't Check Connected
Interface state: Name, Uptime, Fwd, Info
Interface flags: LI - Local Interest, LD - Local Disinterest,
II - Internal Interest, ID - Internal Disinterest,
LH - Last Hop, AS - Assert, AB - Admin Boundary
(*,FF08:AAAA::1)
SM UP: 00:11:53 JP: Join(now) Flags:
RP: 2002:2222::2
RPF: FastEthernet0/0,FE80::266:66FF:FE66:6666
FastEthernet0/1 00:11:53 fwd Join(00:02:31)
(2002:56::6,FF08:AAAA::1)
SM SPT UP: 00:03:44 JP: Join(never) Flags: KAT(00:00:50) AA PA RA
RPF: FastEthernet0/0,FE80::266:66FF:FE66:6666*
FastEthernet0/1 00:03:44 fwd Join(00:02:41)
R5#
One item of note, is that hard coding the RP is not very scalable. The other options include BSR and Embedded RP (where the actual multicast traffic has the RP embedded within the packet itself). I will include those examples in another blog post. Or if you can’t wait, jump right into our RS workbooks for a wealth of information, insight and practice labs to improve your Tier1, Tier2 and Tier3 skills.
Any skills you develop in IPv4 multicasting will greatly assist you with the IPv6 multicasting, and they are both on the blueprint.
Best wishes,
0 comments:
Post a Comment