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 brief 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#Looks 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.
R3#traceroute ipv6 2002:2222::2 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#OK, I am sold that we have connectivity. Lets verify that PIM, MLD and Multicast-Routing is not currently enabled yet.
R3#show ipv6 pim interface 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#Lets enable ipv6 multicast routing, and see the difference on R3.
R3(config)#ipv6 multicast-routing 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#Just 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.
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 brief 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#Looks 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).
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::2 %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#On 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.
R2#show ipv6 pim tunnel 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#Lets 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.
R3#show ipv6 pim group-map ff00::/8 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#Sweet! 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.
R3(config)#int lo 0 R3(config-if)#ipv6 mld join-group FF08:AAAA::1Lets 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#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: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#Looks 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.
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 pim IPv6 PIM debugging is onNow a ping from R6.
R6#ping ff08:aaaa::1 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.Cool. Lets look at the debug output on the RP.
IPv6 PIM: Received J/P on FastEthernet0/0 from FE80::211:11FF:FE11:1111 target: FE80::222:22FF:FE22:2222 (to us) 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 secondsLets also investigate R5, in the path between R6 (the mcast server) and the R3 (who joined the group)
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: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#Another command that provides additional information is the show ipv6 pim topology command.
R5#show ipv6 pim topology 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#That’s a great little jumpstart into IPv6 multicast.
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