blog
    Static RP, BSR RP, Embedd ...
    24 March 10

    Static RP, BSR RP, Embedded RP, oh My! IPv6 Multicasting

    Posted byINE
    facebooktwitterlinkedin
    news-featured

    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:

    IPV6 Multicasting

    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::1

    Lets 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: SCLJ Incoming 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: S Incoming interface: FastEthernet0/1 RPF nbr: FE80::255:55FF:FE55:5555 Immediate Outgoing interface list: FastEthernet0/0, Forward, 00:02:40/00:02:47 R4#

    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:25 R2#

    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 on

    Now 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 seconds

    Lets 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.

    Hey! Don’t miss anything - subscribe to our newsletter!

    © 2022 INE. All Rights Reserved. All logos, trademarks and registered trademarks are the property of their respective owners.
    instagram Logofacebook Logotwitter Logolinkedin Logoyoutube Logo