# Connecting IPv6 Islands Across IPv4 Clouds with BGP

If you have not upgraded your core to IPv6, you can still provide IPv6 services to customers by connecting remote IPv6 islands across IPv4 clouds by means of MP-BGP and MPLS. An IPv6 island is a network employing IPv6 addressing, such as a customer site. The IPv4 cloud consists of the PE–P–PE core.

| Note: You must configure an IPv6 interface in the parent VR for this feature to work.

Consider Figure 110. Each customer site is connected by means of a CE router to a PE router. The PE routers in this implementation are referred to as dual-stack BGP (DS-BGP) routers because they run both the IPv6 and IPv4 protocol stack.

Figure 110: IPv6 Tunneled over MPLS-IPv4

The PE routers learn IPv6 routes using MP-BGP over TCPv4 or TCPv6 from the CE devices. Alternatively, you can configure IPv6 static routes on the PE routers to reach the customer IPv6 networks through the CE IPv6 link. You can use any IPv6-enabled routing protocol to access the CE routers.

Use any MPLS signaling protocol to establish an MPLS base tunnel in the IPv4 core network. Each PE router runs MP-BGP over an IPv4 stack (MP-BGP/TCP/IPv4). MP-BGP advertises the customer IPv6 routes by exchanging IPv6 NLRI reachability information across the IPv4 cloud.

Each PE router announces the IPv4 address of its core-facing interface (the tunnel endpoint) to its PE peers as the BGP next hop. Because MP-BGP requires the next hop to be in the same address family as the NLRI, the IPv4 next-hop address must be embedded in an IPv6 format. The PE router advertises the IPv6 routes as labeled routes and an IPv6 next hop.

In the topology shown in Figure 110, OSPF advertises reachability of the loopback (10.1.1.1/32 and 10.2.2.1/32) and core-facing (10.10.10.1/32 and 10.20.20.2/32) interfaces of the PE routers. LDP binds label L1 to 10.1.1.1/32 on the P router.

Router CE 1 establishes an MP-BGP session over TCPv4 to PE 1 and advertises its ability to reach the IPv6 network 2001:0430::/32. The MP-BGP update message specifies an AFI value of 2 (IPv6) and a SAFI value of 1 (unicast). As the next hop in the MP-REACH-NLRI attribute, CE 1 advertises the IPv6 address of the CE 1 interface that links to PE 1.

Both IPv4 and IPv6 addresses must be configured on the PE-CE link. The IPv6 address defaults to an IPv4-compatible address that can be overridden with policy.

PE 1 and PE 2 establish an MP-BGP session using their remote loopback IPv4 addresses as neighbor addresses. Router PE 1 installs in its IPv6 global routing table the route advertised by CE 1. MP-BGP on PE 1 then binds a second-level label, L2, and advertises the route to PE 2 with an AFI value of 2 (IPv6) and a SAFI value of 4 (labeled routes). The next hop that PE 1 advertises in the MP-REACH-NLRI attribute is the IPv4 address of its loopback interface, 10.1.1.1, encoded in IPv6 format as ::10.1.1.1.

When MP-BGP on router PE 2 receives the advertisement, it associates the base tunnel (to 10.1.1.0/24, label L1) with the next hop (::10.1.1.1) that was advertised by PE 1 to reach the customer IPv6 island, 2001:0430::/32. Router PE 2 then uses MP-BGP (AFI = 2, SAFI = 1) to advertise to CE 2 its ability to reach this network.

CE 2 sends native IPv6 packets destined for the 2001:0430::/32 network to PE 2. On receipt, PE 2 performs a lookup in its global IPv6 routing table. PE 2 prepends two labels to the IPv6 header (L1–L2–IPv6) and then forwards the packet out its core-facing interface (10.2.2.2).

The P router does a lookup on L1 and label switches the packet toward PE 1. The P router can either replace L1 with another label or pop L1 if PE 1 requested PHP.

When PE 1 receives the packet on its core-facing interface, it pops all the labels and does a lookup in the global IPv6 routing table using the destination address in the IPv6 header. PE 1 then forwards the native IPv6 packet out to CE 1 on the IPv6 link.

## Connecting IPv6 Islands Across Multiple IPv4 Domains

When the IPv6 islands are separated by multiple IPv4 domains, the autonomous system boundary routers between the IPv4 domains must be DS-BGP routers (Figure 111).

Figure 111: IPv6 Tunneled Across IPv4 Domains

Each of these AS boundary routers establishes a peer relationship with the DS-BGP routers in its own domain, creating a separate mesh of tunnels among the DS-BGP routers of each domain. Routing between PE 1–ASBR 1 in AS 1 and between PE 2–ASBR 2 in AS 2 is accomplished by means of label-switched paths.

IPv6 unlabeled routes are exchanged through the external MP-BGP session between ASBR 1 and ASBR 2. Interdomain MPLS tunnels spanning multiple ASs are not supported.

## Configuring IPv6 Tunneling over IPv4 MPLS

To configure IPv6 tunneling over MPLS:

1. On PE 1, configure both an IPv4 and an IPv6 interface toward the CE router. Use an IPv4-compatible IPv6 address.
   host1(config)#interface atm2/0.1 host1(config)#atm pvc 1 0 1 aal5snap host1(config)#ip address 11.19.1.1 255.255.255.0 host1(config)#ipv6 address ::11.19.1.1/126
2. On PE 1, configure an IPv4 interface facing the core.

   | Note: For forwarding to work, you must configure at least one IPv6 interface on each line module where MPLS-encapsulated IPv6 traffic is expected. You can easily accomplish this by also configuring an IPv6 address on the core-facing interface.

   host1(config)#interface atm3/0.1 host1(config)#atm pvc 30 0 30 aal5snap host1(config)#ip address 10.10.10.1 255.255.255.0 host1(config)#ip address ::10.10.10.1/120
3. On PE 1, configure a loopback interface.
   host1(config)#interface loopback 1 host1(config)#ip address 1.1.1.1 255.255.255.0
4. On PE 1, configure an IPv4 IGP and an MPLS signaling protocol in the core.
5. On PE 1, set up a base tunnel, or verify that one exists between the loopback addresses on the PE routers.
6. On PE 1, configure MP-BGP.
   1. Enable BGP.
      host1(config)#router bgp 100
   2. Configure the MP-BGP CE and PE neighbors.
      host1(config-router)#neighbor 11.19.1.2 remote-as 65000 host1(config-router)#neighbor 2.2.2.2 remote-as 100
   3. Activate the neighbors in the IPv6 address-family.
      host1(config-router)#address-family ipv6 unicast host1(config-router-af)#neighbor 11.19.1.2 activate host1(config-router-af)#neighbor 2.2.2.2 activate
   4. Configure the MP-BGP PE neighbor to send labeled IPv6 prefixes.
      host1(config-router-af)#neighbor 2.2.2.2 send-label host1(config-router-af)#neighbor 2.2.2.2 update-source loopback 1 host1(config-router-af)#neighbor 2.2.2.2 next-hop-self host1(config-router-af)#exit-address-family
7. Configure the P router with an IPv4 IGP and an MPLS signaling protocol.
8. Configure the PE 2 router as you did PE 1 in Steps 1–6.
9. Configure the CE 1 and CE 2 routers.
   1. Configure both an IPv4 and an IPv6 interface toward the PE router. Use an IPv4-compatible IPv6 address.
   2. Configure an MP-BGP session to the PE router over TCPv4, and activate the IPv6 unicast address family.

neighbor send-label

- Use to cause an MP-BGP neighbor to distribute an MPLS label with its IPv6 prefix advertisements.
- If you specify a BGP peer group by using the peer-group-name argument, all the members of the peer group inherit the characteristic configured with this command. You cannot override the characteristic for a specific member of the peer group.
- Example
  host1(config-router-af)#neighbor 192.168.5.1 send-label
- Use the no version to halt distribution of the MPLS label with route advertisements.
- See neighbor send-label.