The inter-AS IPv6 NG MVPN Option C solution is implemented by establishing a multi-hop MP-EBGP peer relationship between PEs in different ASs.
As shown in Figure 1, CE1 and CE2 belong to the same VPN. CE1 accesses the backbone network by means of PE1 in AS100, and CE2 accesses the backbone network by means of PE2 in AS200.
The configuration roadmap is as follows:
Establish an MP-EBGP peer relationship between the PEs in different ASs and configure the maximum number of hops between the PEs.
Configure a routing policy on each ASBR. Assign an MPLS label to the loopback interface route received from the PE within the local AS and advertised to the remote ASBR. Assign new MPLS labels to the labeled IPv4 routes advertised to the PE within the local AS.
Configure the PE and ASBR in the same AS to exchange labeled IPv4 routes.
Configure ASBR1 and ASBR2 to exchange labeled IPv4 routes.
Configure IPv6 NG MVPN.
To complete the configuration, you need the following data:
MPLS LSR IDs of the PEs and ASBRs (1.1.1.2, 1.1.1.3, 1.1.1.4, and 1.1.1.5)
Name (ngv6), RD (1:3 and 1:5), and export and import VPN targets (1:1) of the VPN instance on each PE
Routing policies used by ASBRs
This example uses IS-IS. For configuration details, see Configuration Files in this example.
# Configure PE1.
[~PE1] mpls ldp [~PE1-mpls-ldp] mldp p2mp [*PE1-mpls-ldp] commit [~PE1-mpls-ldp] quit
# Configure PE2.
[~PE2] mpls ldp [~PE2-mpls-ldp] mldp p2mp [*PE2-mpls-ldp] mldp recursive-fec [*PE2-mpls-ldp] commit [~PE2-mpls-ldp] quit
# Configure ASBR1.
[~ASBR1] mpls ldp [~ASBR1-mpls-ldp] mldp p2mp [*ASBR1-mpls-ldp] mldp recursive-fec [*ASBR1-mpls-ldp] commit [~ASBR1-mpls-ldp] quit
The procedure for configuring ASBR2 is similar to the procedure for configuring ASBR1. For configuration details, see Configuration Files in this example.
 
 The import VPN target of the VPN instance on PE1 must match the export VPN target of the VPN instance on PE2. The import VPN target of the VPN instance on PE2 must match the export VPN target of the VPN instance on PE1.
# Configure PE1 to exchange labeled IPv4 routes with ASBR1.
[~PE1] bgp 100 [~PE1-bgp] ipv4-family unicast [~PE1-bgp-af-ipv4] peer 1.1.1.3 enable [*PE1-bgp-af-ipv4] peer 1.1.1.3 label-route-capability [*PE1-bgp-af-ipv4] undo synchronization [*PE1-bgp-af-ipv4] commit [~PE1-bgp-af-ipv4] quit
# Enable MPLS on GigabitEthernet0/1/2 connecting ASBR1 to ASBR2.
[~ASBR1] interface ethernet 0/1/2 [~ASBR1-GigabitEthernet0/1/2] ip address 10.0.7.5 24 [*ASBR1-GigabitEthernet0/1/2] mpls [*ASBR1-GigabitEthernet0/1/2] mpls ldp [*ASBR1-GigabitEthernet0/1/2] quit [*ASBR1] commit
# Create a routing policy on ASBR1.
[~ASBR1] route-policy policy1 permit node 1 [*ASBR1-route-policy] apply mpls-label [*ASBR1-route-policy] quit [*ASBR1] route-policy policy2 permit node 1 [*ASBR1-route-policy] if-match mpls-label [*ASBR1-route-policy] apply mpls-label [*ASBR1-route-policy] quit [*ASBR1] commit
# Apply the routing policy to the routes advertised by ASBR1 to PE1 and enable ASBR1 to exchange labeled IPv4 routes with PE1.
[~ASBR1] bgp 100 [~ASBR1-bgp] ipv4-family unicast [~ASBR1-bgp-af-ipv4] peer 1.1.1.2 enable [*ASBR1-bgp-af-ipv4] peer 1.1.1.2 route-policy policy2 export [*ASBR1-bgp-af-ipv4] peer 1.1.1.2 label-route-capability [*ASBR1-bgp-af-ipv4] quit
# Apply the routing policy to the routes advertised by ASBR1 to ASBR2 and enable ASBR1 to exchange labeled IPv4 routes with ASBR2.
[*ASBR1-bgp] peer 10.0.7.7 as-number 200 [*ASBR1-bgp] ipv4-family unicast [*ASBR1-bgp-af-ipv4] peer 10.0.7.7 enable [*ASBR1-bgp-af-ipv4] peer 10.0.7.7 route-policy policy1 export [*ASBR1-bgp-af-ipv4] peer 10.0.7.7 label-route-capability [*ASBR1-bgp-af-ipv4] quit
# Configure ASBR1 to advertise PE1's loopback route to ASBR2 and then to PE2.
[*ASBR1-bgp] ipv4-family unicast [*ASBR1-bgp-af-ipv4] network 1.1.1.2 255.255.255.255 [*ASBR1-bgp-af-ipv4] quit [*ASBR1-bgp] quit [*ASBR1] commit
The configurations on PE2 and ASBR2 are similar to those on PE1 and ASBR1. For configuration details, see Configuration Files in this example.
# Configure PE1.
[~PE1] bgp 100 [*PE1-bgp] peer 1.1.1.5 as-number 200 [*PE1-bgp] peer 1.1.1.5 connect-interface LoopBack0 [*PE1-bgp] peer 1.1.1.5 ebgp-max-hop 10 [*PE1-bgp] ipv6-family vpnv6 [*PE1-bgp-af-vpnv6] peer 1.1.1.5 enable [*PE1-bgp-af-vpnv6] policy vpn-target [*PE1-bgp-af-vpnv6] quit [*PE1-bgp] quit [*PE1] commit
# Configure PE2.
[~PE2] bgp 200 [*PE2-bgp] peer 1.1.1.2 as-number 100 [*PE2-bgp] peer 1.1.1.2 connect-interface LoopBack0 [*PE2-bgp] peer 1.1.1.2 ebgp-max-hop 10 [*PE2-bgp] ipv6-family vpnv6 [*PE2-bgp-af-vpnv6] peer 1.1.1.2 enable [*PE2-bgp-af-vpnv6] policy vpn-target [*PE2-bgp-af-vpnv6] quit [*PE2-bgp] quit [*PE2] commit
# Configure PE1.
[~PE1] bgp 100 [~PE1-bgp] ipv4-family unicast [~PE1-bgp-af-ipv4] undo synchronization [*PE1-bgp-af-ipv4] peer 1.1.1.5 enable [*PE1-bgp-af-ipv4] commit [~PE1-bgp-af-ipv4] quit [~PE1-bgp] ipv6-family vpn-instance ngv6 [~PE1-bgp-af-vpn-ngv6] import-route isis 2 [*PE1-bgp-af-vpn-ngv6] commit [~PE1-bgp-af-vpn-ngv6] quit [~PE1-bgp] ipv6-family mvpn [~PE1-bgp-af-mvpnv6] policy vpn-target [*PE1-bgp-af-mvpnv6] peer 1.1.1.5 enable [*PE1-bgp-af-mvpnv6] commit [~PE1-bgp-af-mvpnv6] quit [~PE1-bgp] quit
The configuration on PE2 is similar to the configuration on PE1. For configuration details, see Configuration Files in this example.
# Configure PE1 as the sender PE.
[~PE1] multicast ipv6 mvpn 1.1.1.2 [~PE1] ip vpn-instance ngv6 [~PE1-vpn-instance-ngv6] ipv6-family [~PE1-vpn-instance-ngv6-af-ipv6] multicast ipv6 routing-enable [*PE1-vpn-instance-ngv6-af-ipv6] mvpn [*PE1-vpn-instance-ngv6-af-ipv6-mvpn] sender-enable [*PE1-vpn-instance-ngv6-af-ipv6-mvpn] c-multicast signaling bgp [*PE1-vpn-instance-ngv6-af-ipv6-mvpn] auto-discovery inter-as [*PE1-vpn-instance-ngv6-af-ipv6-mvpn] ipmsi-tunnel [*PE1-vpn-instance-ngv6-af-ipv6-mvpn-ipmsi] mldp [*PE1-vpn-instance-ngv6-af-ipv6-mvpn-ipmsi] commit [~PE1-vpn-instance-ngv6-af-ipv6-mvpn-ipmsi] quit [~PE1-vpn-instance-ngv6-af-ipv6-mvpn] quit [~PE1-vpn-instance-ngv6-af-ipv6] quit [~PE1-vpn-instance-ngv6] quit
# Configure PE2 as the receiver PE.
[~PE2] multicast ipv6 mvpn 1.1.1.5 [~PE2] ip vpn-instance ngv6 [~PE2-vpn-instance-ngv6] ipv6-family [~PE2-vpn-instance-ngv6-af-ipv6] multicast ipv6 routing-enable [~PE2-vpn-instance-ngv6-af-ipv6] mvpn [*PE2-vpn-instance-ngv6-af-ipv6-mvpn] c-multicast signaling bgp [*PE2-vpn-instance-ngv6-af-ipv6-mvpn] auto-discovery inter-as [*PE2-vpn-instance-ngv6-af-ipv6-mvpn-ipmsi] commit [~PE2-vpn-instance-ngv6-af-ipv6-mvpn-ipmsi] quit [~PE2-vpn-instance-ngv6-af-ipv6-mvpn] quit [~PE2-vpn-instance-ngv6-af-ipv6] quit [~PE2-vpn-instance-ngv6] quit
# Configure CE1.
[~CE1] pim-ipv6 [~CE1-pim6] static-rp 2001:db8:6::3 [*CE1-pim6] commit [~CE1-pim6] quit [~CE1] multicast ipv6 routing-enable [*CE1] interface GigabitEthernet 0/1/0 [*CE1-GigabitEthernet0/1/0] pim ipv6 sm [*CE1-GigabitEthernet0/1/0] commit [~CE1-GigabitEthernet0/1/0] quit [~CE1] interface GigabitEthernet 0/1/3 [~CE1-GigabitEthernet0/1/3] pim ipv6 sm [*CE1-GigabitEthernet0/1/3] commit [~CE1-GigabitEthernet0/1/3] quit
# Configure CE2.
[~CE2] pim-ipv6 [~CE2-pim6] static-rp 2001:db8:6::3 [*CE2-pim6] commit [~CE2-pim6] quit [~CE2] multicast ipv6 routing-enable [*CE2] interface GigabitEthernet 0/1/0 [*CE2-GigabitEthernet0/1/0] pim ipv6 sm [*CE2-GigabitEthernet0/1/0] mld enable [*CE2-GigabitEthernet0/1/1] mld static-group FF3E::1 source 2001:DB8:5::2 [*CE2-GigabitEthernet0/1/0] commit [~CE2-GigabitEthernet0/1/0] quit [~CE2] interface GigabitEthernet 0/1/4 [~CE1-GigabitEthernet0/1/4] pim ipv6 sm [*CE1-GigabitEthernet0/1/4] commit [~CE1-GigabitEthernet0/1/4] quit
# Configure PE1.
[~PE1] pim-ipv6 vpn-instance ngv6 [*PE1-pim6-ngv6] static-rp 2001:db8:6::3 [*PE1-pim6-ngv6] source-lifetime 60 [*PE1-pim6-ngv6] commit [~PE1-pim6-ngv6] quit [~PE1] interface GigabitEthernet 0/1/3 [~PE1-GigabitEthernet0/1/3] pim ipv6 sm [*PE1-GigabitEthernet0/1/3] commit [~PE1-GigabitEthernet0/1/3] quit
The configuration on PE2 is similar to the configuration on PE1. For configuration details, see Configuration Files in this example.
After the configuration is complete, CEs can learn the routes to each other's interfaces and ping each other.
The following example uses the command output on CE1.
[~CE1] ping ipv6 2001:db8:14::1
  PING 2001:DB8:14::1: 56  data bytes, press CTRL_C to break
    Reply from 2001:DB8:14::1: bytes=56 Sequence=1 ttl=252 time=102 ms
    Reply from 2001:DB8:14::1: bytes=56 Sequence=2 ttl=252 time=89 ms
    Reply from 2001:DB8:14::1: bytes=56 Sequence=3 ttl=252 time=106 ms
    Reply from 2001:DB8:14::1: bytes=56 Sequence=4 ttl=252 time=104 ms
    Reply from 2001:DB8:14::1: bytes=56 Sequence=5 ttl=252 time=56 ms
  --- 2001:DB8:14::1 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 56/91/106 ms
Run the display pim ipv6 routing-table command on a PE to check the PIM routing table.
The following example uses the command output on PE2.
<PE2> display pim ipv6 vpn-instance ngv6 routing-table
 VPN-Instance: ngv6
 Total 1 (S, G) entry
 (2001:DB8:5::2, FF3E::1)
     Protocol: pim-ssm, Flag:
     UpTime: 00:24:09
     Upstream interface: through-BGP, Refresh time: 00:24:09
         Upstream neighbor: ::FFFF:1.1.1.2
         RPF prime neighbor: ::FFFF:1.1.1.2
     Downstream interface(s) information:
     Total number of downstreams: 1
        1: GigabitEthernet0/1/3
             Protocol: pim-ssm, UpTime: 00:24:09, Expires: 00:02:35
CE1 configuration file
# sysname CE1 # multicast ipv6 routing-enable # isis 2 is-level level-2 ipv6 enable topology ipv6 network-entity 10.0000.0000.0004.00 # interface GigabitEthernet0/1/0 undo shutdown ipv6 enable ipv6 address 2001:DB8:5::6 64 isis ipv6 enable 2 pim ipv6 sm # interface GigabitEthernet0/1/3 undo shutdown ipv6 enable ipv6 address 2001:DB8:6::6 64 isis ipv6 enable 2 pim ipv6 sm # pim-ipv6 static-rp 2001:DB8:6::3 # return
PE1 configuration file
#
sysname PE1
#
multicast ipv6 mvpn 1.1.1.2
#
ip vpn-instance ngv6
 ipv6-family
  route-distinguisher 1:3
  apply-label per-instance
  vpn-target 1:1 export-extcommunity
  vpn-target 1:1 import-extcommunity
  multicast ipv6 routing-enable
  mvpn
   sender-enable
   c-multicast signaling bgp
   auto-discovery inter-as
   ipmsi-tunnel
    mldp
#
mpls lsr-id 1.1.1.2
#
mpls
#
mpls ldp
 mldp p2mp
#
isis 1
 is-level level-2
 cost-style wide
 network-entity 10.0000.0000.000b.00
#
isis 2 vpn-instance ngv6
 is-level level-2
 network-entity 10.0000.0000.0006.00
 ipv6 enable topology ipv6
 ipv6 import-route bgp
#
interface GigabitEthernet0/1/3
 undo shutdown
 ip binding vpn-instance ngv6
 ipv6 enable
 ipv6 address 2001:DB8:6::3 64
 isis ipv6 enable 2
 pim ipv6 sm
#
interface GigabitEthernet0/1/4
 undo shutdown
 ip address 10.0.2.3 255.255.255.0
 isis enable 1
 mpls
 mpls ldp
#
interface LoopBack0
 ip address 1.1.1.2 255.255.255.255
 isis enable 1
#
bgp 100
 peer 1.1.1.3 as-number 100
 peer 1.1.1.3 connect-interface LoopBack0
 peer 1.1.1.5 as-number 200
 peer 1.1.1.5 ebgp-max-hop 10 
 peer 1.1.1.5 connect-interface LoopBack0
 #
 ipv4-family unicast
  undo synchronization
  peer 1.1.1.3 enable
  peer 1.1.1.3 label-route-capability
  peer 1.1.1.5 enable
 #
 ipv6-family mvpn
  policy vpn-target
  peer 1.1.1.5 enable
 #
 ipv6-family vpnv6
  policy vpn-target
  peer 1.1.1.5 enable
 #
 ipv6-family vpn-instance ngv6  
  import-route isis 2
#
pim-ipv6 vpn-instance ngv6
 static-rp 2001:DB8:6::3
 source-lifetime 60
#
return
ASBR1 configuration file
# sysname ASBR1 # mpls lsr-id 1.1.1.3 # mpls # mpls ldp mldp p2mp mldp recursive-fec # isis 1 is-level level-2 cost-style wide network-entity 10.0000.0000.000c.00 # interface GigabitEthernet0/1/2 undo shutdown ip address 10.0.7.5 255.255.255.0 mpls mpls ldp # interface GigabitEthernet0/1/4 undo shutdown ip address 10.0.2.5 255.255.255.0 isis enable 1 mpls mpls ldp # interface LoopBack0 ip address 1.1.1.3 255.255.255.255 isis enable 1 # bgp 100 peer 10.0.7.7 as-number 200 peer 1.1.1.2 as-number 100 peer 1.1.1.2 connect-interface LoopBack0 # ipv4-family unicast undo synchronization network 1.1.1.2 255.255.255.255 peer 10.0.7.7 enable peer 10.0.7.7 route-policy policy1 export peer 10.0.7.7 label-route-capability peer 1.1.1.2 enable peer 1.1.1.2 route-policy policy2 export peer 1.1.1.2 label-route-capability # route-policy policy1 permit node 1 apply mpls-label route-policy policy2 permit node 1 if-match mpls-label apply mpls-label # ip route-static 1.1.1.4 255.255.255.255 10.0.7.7 # return
ASBR2 configuration file
# sysname ASBR2 # mpls lsr-id 1.1.1.4 # mpls # mpls ldp mldp p2mp mldp recursive-fec # isis 1 is-level level-2 cost-style wide network-entity 10.0000.0000.000d.00 # interface GigabitEthernet0/1/3 undo shutdown ip address 10.0.7.7 255.255.255.0 mpls mpls ldp # interface GigabitEthernet0/1/4 undo shutdown ip address 10.0.16.1 255.255.255.0 isis enable 1 mpls mpls ldp # interface LoopBack0 ip address 1.1.1.4 255.255.255.255 isis enable 1 # bgp 200 peer 10.0.7.5 as-number 100 peer 1.1.1.5 as-number 200 peer 1.1.1.5 connect-interface LoopBack0 # ipv4-family unicast undo synchronization network 1.1.1.5 255.255.255.255 peer 10.0.7.5 enable peer 10.0.7.5 route-policy policy1 export peer 10.0.7.5 label-route-capability peer 1.1.1.5 enable peer 1.1.1.5 route-policy policy2 export peer 1.1.1.5 label-route-capability # route-policy policy1 permit node 1 apply mpls-label route-policy policy2 permit node 1 if-match mpls-label apply mpls-label # ip route-static 1.1.1.3 255.255.255.255 10.0.7.5 # return
PE2 configuration file
#
sysname PE2
#
multicast ipv6 mvpn 1.1.1.5
#
ip vpn-instance ngv6
 ipv6-family
  route-distinguisher 1:5
  apply-label per-instance
  vpn-target 1:1 export-extcommunity
  vpn-target 1:1 import-extcommunity
  multicast ipv6 routing-enable
  mvpn
   c-multicast signaling bgp
   auto-discovery inter-as
   ipmsi-tunnel
    mldp
#
mpls lsr-id 1.1.1.5
#
mpls
#
mpls ldp
 mldp p2mp
 mldp recursive-fec
#
isis 1
 is-level level-2
 cost-style wide
 network-entity 10.0000.0000.000e.00
#
isis 2 vpn-instance ngv6
 is-level level-2
 network-entity 10.0000.0000.0007.00
 ipv6 enable topology ipv6
 ipv6 import-route bgp
#
interface GigabitEthernet0/1/3
 undo shutdown
 ip address 10.0.16.2 255.255.255.0
 isis enable 1
 mpls
 mpls ldp
#
interface GigabitEthernet0/1/4
 undo shutdown
 ip binding vpn-instance ngv6
 ipv6 enable
 ipv6 address 2001:DB8:14::4 64
 isis ipv6 enable 2
 pim ipv6 sm
#
interface LoopBack0
 ip address 1.1.1.5 255.255.255.255
 isis enable 1
#
bgp 200
 peer 1.1.1.2 as-number 100
 peer 1.1.1.2 ebgp-max-hop 10
 peer 1.1.1.2 connect-interface LoopBack0
 peer 1.1.1.4 as-number 200
 peer 1.1.1.4 connect-interface LoopBack0
 #
 ipv4-family unicast
  undo synchronization
  peer 1.1.1.2 enable
  peer 1.1.1.4 enable
  peer 1.1.1.4 label-route-capability
 #
 ipv6-family mvpn
  policy vpn-target
  peer 1.1.1.2 enable
 #
 ipv6-family vpnv6
  policy vpn-target
  peer 1.1.1.2 enable
 #
 ipv6-family vpn-instance ngv6
  import-route isis 2
 #
pim-ipv6 vpn-instance ngv6
 static-rp 2001:DB8:6::3
 source-lifetime 60
#
return
CE2 configuration file
# sysname CE2 # multicast ipv6 routing-enable # isis 2 is-level level-2 ipv6 enable topology ipv6 network-entity 10.0000.0000.0004.00 # interface GigabitEthernet0/1/0 undo shutdown ipv6 enable ipv6 address 2001:DB8:3::1 64 isis ipv6 enable 2 pim ipv6 sm mld enable mld static-group FF3E::1 source 2001:DB8:5::2 # interface GigabitEthernet0/1/4 undo shutdown ipv6 enable ipv6 address 2001:DB8:14::1 64 isis ipv6 enable 2 pim ipv6 sm # pim-ipv6 static-rp 2001:DB8:6::3 # return