Profile 14 w/ IPv6

Load basic.startup.config.with.cpim.and.bgp.cfg

#IOS-XE
config replace flash:basic.startup.config.with.cpim.and.bgp.vpnv6.cfg
Y

#IOS-XR
configure
load bootflash:basic.startup.config.with.cpim.and.bgp.vpnv6.cfg
commit replace
y

The basic IP addresses, L3VPN (v6), and C-PIM between the PEs and CEs is pre-configured.

  • Configure multicast VPN using mLDP with P2MP.

  • Use a partitioned default MDT tree instead of default MDT tree.

  • Use BGP for auto-discovery of participating PEs.

  • CE1 is configured as the BSR for the C-PIM.

  • Use BGP as the overlay - PEs are not allowed to form C-PIM adjacencies with each other.

See answer below (scroll down).

Answer

#PE1, PE2
vrf definition CUSTOMER
 add ipv6
  mdt partitioned mldp p2mp
  mdt auto-discovery mldp
  mdt overlay use-bgp
!
router bgp 100
 add ipv6 mvpn
  neighbor 10.10.10.10 activate

#P1
mpls ldp mldp add ipv4
!
router bgp 100
 add ipv6 mvpn
 !
 neighbor-group IBGP
  add ipv6 mvpn
   route-reflector-client

#P2
mpls ldp mldp add ipv4

#PE3
mpls ldp mldp add ipv4
!
multicast-routing
 vrf CUSTOMER
  add ipv6
   mdt so lo0
   mdt partitioned mldp ipv4 p2mp
   bgp auto-discovery mldp
!
route-policy USE_MLDP_PARTITIONED
 set core-tree mldp-partitioned-p2mp
end-policy
!
router pim vrf CUSTOMER add ipv6
 mdt c-multicast-routing bgp
 rpf topology route-policy USE_MLDP_PARTITIONED
!
router bgp 100
 mvpn
 add ipv6 mvpn
 !
 nei 10.10.10.10
  add ipv6 mvpn
 !
 vrf CUSTOMER
  add ipv6 mvpn

Explanation

mVPN-NG for IPv6 is extremely similar to IPv4 mVPN. The main difference is the use of the ipv6/mvpn BGP address-family as opposed to ipv4/mvpn.

On C2 and C3, we’ll join an SSM group:

#C2, C3
int gi0/1
 ipv6 mld join-group ff35::1 2001:DB8:10:1:1::10

This triggers a PIM join towards PE2 and PE3:

Both PE2 and PE3 join PE1’s (*, *) P2MP mLDP tree and generate a type 7 (S, G) route. This is no different than the ipv4 type 7 route, expect the NLRI uses a 128 bit source and group address. The extcommunity comes from the VPNv6 route, just as we have seen in IPv4/mvpn.

PE1 receives the best route from the RR. (Interestingly this is PE3’s route due to an origin code of IGP versus PE2’s origin code of incomplete). PE1 adds state for the (S, G) entry and adds the Lspvif to the OIL.

Traffic from C1 reaches both C2 and C3:

ASM with IPv6

ASM works the same with ipv6/mvpn. Instead of encoding the IPv4 RP address in the type 6 route, the IPv6 RP address is encoded. Additionally, PIM BSR information is advertised with a FF02::D S-PMSI route.

We’ll set CE1 to be the BSR:

#CE1
ipv6 pim bsr candidate bsr 2001:DB8:10:1:1::1
ipv6 pim bsr candidate rp 2001:DB8:10:1:1::1

PE1 learns of the RP via PIM messages, and advertises a (*, FF02::D) type 3 route:

All PEs join this data MDT and learn of the BSR through native PIM messages:

Any host can join a ASM group which will now trigger a type 6 route directed towards PE1.

#C3
int gi0/1
 ipv6 mld join-group ff05::1

On PE1 we see the type 6 route:

The RP creates a (*, G) entry:

The PIM Register process works just the same as we’ve seen before. We can send to the group from C2, and CE2 will register with the RP. The RP will subscribe to the (S, G) tree, and then PE2 will send a type 5 S-A BGP route. PE3 will join PE2’s P2MP I-PMSI tree.

Below we see the type 7 (S, G) join from the RP and the type 5 S-A from the ingress PE:

On PE3 we see the type 7 (S, G) Join that was generated in response to the type 5 S-A message:

In summary, IPv6 mVPN works very much the same as IPv4 mVPN.

Last updated