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