Example: Connecting IPv6 Islands over an MPLS Tunnel Configuration
Figure 1: IPv6 over an MPLS Tunnel

Figure 1 shows a standard CE-PE-P-PE-CE MPLS-style network. CE1 and CE2 are the end customer CE routers using IPv6; PE1 and PE2 are the provider edge routers; and P is a provider core router. The IPv4 MPLS tunnel travels between PE1 and PE2, connecting IPv6 sites CE1 and CE2.
Since the CE-to-PE configuration can use a variety of routing protocols, this example requires that you use EBGP between CE1 and PE1 and RIPng between PE2 and CE2. You must establish policies on PE2 to import and export routes between BGP and RIPng.
To start the configuration, set up the IPv6 connection between CE1 and PE1. In your BGP routing policy, you must advertise the IPv6 loopback address of the CE1 router address to the PE1 router.
Router CE1
Once you move to PE1, your tasks become more complex. You must complete the IPv6 EBGP connection to CE1 and build the first part of the MPLS tunnel. You must set the inet, inet6, and mpls families on the core-facing interface, configure an inet6 address for the CE-facing interface attached to CE1, and ensure the IPv4 loopback address is advertised in OSPF, since this is the MPLS LSP target for PE2. You must also add the ipv6-tunneling parameter in MPLS, include the labeled-unicast and explicit-null options at the [edit protocols bgp family inet6] hierarchy level, and create an external BGP group pointing to CE1 and an internal group pointing to PE2.
Router PE1
On Router P, connect the MPLS tunnel between PE1 and PE2. Enable RSVP, MPLS, and IPv4 connectivity on the interfaces and ensure that IP connectivity is available through the routing protocol (in this case, OSPF).
Router P
At PE2, you must complete a mirror image of the MPLS tunnel configuration started at PE1 and configure a RIPng connection to CE2. Set the inet, inet6, and mpls families on the core-facing interface, configure an inet6 address for the CE facing interface attached to CE2, and ensure the IPv4 loopback address is advertised in OSPF, since this is the MPLS LSP target for PE1. You must also add the ipv6-tunneling parameter in MPLS and include the labeled-unicast and explicit-null options at the [edit protocols bgp family inet6] hierarchy level. Finally, create and apply policies that export BGP routes into RIPng and import RIPng routes to BGP.
Router PE2
Finally, on Router CE2, configure IPv6 addresses on the SONET/SDH and loopback interfaces, enable RIPng, and create and apply a policy for RIPng that permits the IPv6 loopback address to be exported to Router PE2. Once these tasks are accomplished, your IPv6 connection to Router CE1 should be ready for use.
Router CE2
Verifying Your Work
To verify that IPv6 traffic is being transported over the IPv4 MPLS tunnel, use the following commands:
- ping
- show bgp summary
- show route protocol
- show route advertising-protocol
- show route receive-protocol
- show route table
- show route table (inet6.0 | inet6.3)
- show interfaces terse
The following sections show the output of these commands used with the configuration example:
Router CE1 Status
user@CE1> show bgp summary Groups: 1 Peers: 1 Down peers: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet6.0 1 1 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Damped...
8001::2 100 58 56 0 0 26:25 Establ
inet6.0: 1/1/0
user@CE1> show route protocol bgp
inet.0: 13 destinations, 13 routes (12 active, 0 holddown, 1 hidden)
iso.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
inet6.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
9001::5/128 *[BGP/170] 00:04:18, localpref 100
AS path: 100 I
> to 8001::2 via ge-7/1/0.0
user@CE1> ping 9001::5 source 9001::1
PING6(56=40+8+8 bytes) 9001::1 --> 9001::5
16 bytes from 9001::5, icmp_seq=0 hlim=62 time=0.945 ms
16 bytes from 9001::5, icmp_seq=1 hlim=62 time=0.831 ms
^C
--- 9001::5 ping6 statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.831/0.887/0.945 ms
Router PE1 Status
user@PE1> show bgp summary Groups: 2 Peers: 2 Down peers: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet6.0 2 2 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn
State|#Active/Received/Damped...
8001::1 200 56 61 0 0 27:18 Establ
inet6.0: 1/1/0
10.255.255.15 100 13 14 0 1 5:28 Establ
inet6.0: 1/1/0
user@PE1> show route advertising-protocol bgp 10.255.255.15 detail
inet6.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)
9001::1/128 (1 entry, 1 announced)
BGP group to_PE2 type Internal
Route Label: 2
Nexthop: Self
Localpref: 100
AS path: 200 I
Communities:
user@PE1> show route 9001::5
inet6.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
9001::5/128 *[BGP/170] 00:05:48, MED 2, localpref 100, from 10.255.255.15
AS path: I
> via so-6/2/0.0, label-switched-path to_PE2
user@PE1> show route table inet6.0
inet6.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
8001::/126 *[Direct/0] 00:29:01
> via ge-6/1/0.0
8001::2/128 *[Local/0] 00:29:01
Local via ge-6/1/0.0
9001::1/128 *[BGP/170] 00:28:46, localpref 100
AS path: 200 I
> to 8001::1 via ge-6/1/0.0
9001::2/128 *[Direct/0] 00:29:01
> via lo0.0
9001::5/128 *[BGP/170] 00:06:56, MED 2, localpref 100, from 10.255.255.15
AS path: I
> via so-6/2/0.0, label-switched-path to_PE2
fe80::/64 *[Direct/0] 00:29:01
> via ge-6/1/0.0
fe80::280:42ff:fe10:d30c/128
*[Direct/0] 00:29:01
> via lo0.0
fe80::290:69ff:fe0f:1633/128
*[Local/0] 00:29:01
Local via ge-6/1/0.0
user@PE1> show route table inet6.3
inet6.3: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
::ffff:10.255.255.15/128 *[RSVP/7] 00:06:37, metric 2, metric2 0
> via so-6/2/0.0, label-switched-path to_PE2
Router PE2 Status
user@PE2> show bgp summaryGroups: 1 Peers: 1 Down peers: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
inet6.0 1 1 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Damped...
10.255.255.16 100 18 20 0 0 8:06 Establ
inet6.0: 1/1/0
user@PE2> show interfaces terse so-4/0/1
Interface Admin Link Proto Local Remote
so-4/0/1 up up
so-4/0/1.0 up up inet 100.1.4.1/24
inet6 8002::1/126
fe80::280:42ff:fe10:d312/64
user@PE2> show route receive-protocol bgp 10.255.255.16 detail
inet.0: 18 destinations, 19 routes (17 active, 0 holddown, 1 hidden)
inet.3: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
iso.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
mpls.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
inet6.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)
9001::1/128 (1 entry, 1 announced)
Route Label: 2
Nexthop: ::ffff:10.255.255.16
Localpref: 100
AS path: 200 I
inet6.3: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
user@PE2> show route advertising-protocol ripng fe80::280:42ff:fe10:d312 detail
inet6.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)
9001::1/128 (1 entry, 1 announced)
*BGP Preference: 170/-101
Source: 10.255.255.16
Next hop: via so-0/0/0.0, weight 1, selected
Label-switched-path to_PE1
Label operation: Push 2, Push 100015(top)
Protocol next hop: ::ffff:10.255.255.16
Push 2
Indirect next hop: 8451440 50
State: <Active Int Ext>
Local AS: 100 Peer AS: 100
Age: 2:27 Metric2: 2
Task: BGP_100.10.255.255.16+179
Announcement bits (3): 0-KRT 1-RIPng 3-Resolve inet6.0
AS path: 200 I
Route Label: 2
Router CE2 Status
user@CE2> show ripng neighbor Source Dest In
Neighbor State Address Address Send Recv Met
-------- ----- ------- ------- ---- ---- ---
so-1/1/0.0 Up fe80::2a0:a5ff:fe12:34d9 ff02::9 yes yes 1
user@CE2> show route protocol ripng
inet.0: 12 destinations, 12 routes (11 active, 0 holddown, 1 hidden)
iso.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
inet6.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
9001::1/128 *[RIPng/100] 00:04:10, metric 2, tag 0
> to fe80::280:42ff:fe10:d312 via so-1/1/0.0
ff02::9/128 *[RIPng/100] 02:42:33, metric 1
MultiRecv
