Configuring IPv6 on Cisco IOS Software Technology
The Cisco IOS Software technology available on routers supports most features of the IPv6 protocol required to deploy and manage IPv6 networks. This part of the chapter examines IPv6 features implemented on Cisco IOS Software technology. These features are necessary to enable IPv6, activate IPv6 on network interfaces, and configure mechanisms within NDP (Neighbor Discovery Protocol) such as the replacement of ARP, stateless autoconfiguration, prefix advertisement, DAD (Duplicate Address Detection), and prefix renumbering. NDP, stateless autoconfiguration, prefix advertisement, DAD, and prefix renumbering are saved for Chapter 3.
This section focuses on the configuration and operation of the IPv6 addresses in Cisco IOS Software technology. It also assumes that you have successfully installed Cisco IOS software, including IPv6 support, on your router. You can download the Cisco IOS Software with IPv6 support from Cisco.com. Basic information about IPv6 for Cisco technology is available at http://www.cisco.com/ipv6/.
NOTE
To learn how to install the Cisco IOS Software with IPv6 support on your router, refer to Task 1 of the case study near the end of this chapter.
Enabling IPv6 on Cisco IOS Software Technology
The first step of enabling IPv6 on a Cisco router is the activation of IPv6 traffic forwarding to forward unicast IPv6 packets between network interfaces. By default, IPv6 traffic forwarding is disabled on Cisco routers.
The ipv6 unicast-routing command is used to enable the forwarding of IPv6 packets between interfaces on the router. The syntax for this command is as follows:
Router(config)#ipv6 unicast-routing
The ipv6 unicast-routing command is enabled on a global basis.
The next step after the completion of this command is the activation of IPv6 on network interfaces.
Enabling CEFv6 on Cisco
Cisco Express Forwarding (CEF) is also available for IPv6 on Cisco. The behavior of CEFv6 is the same as CEF for IPv4. However, there are new configuration commands for CEFv6 and common commands for both CEFv6 and CEF for IPv4.
The ipv6 cef command enables the central CEFv6 mode. IPv4 CEF must be enabled using the ip cef command. Similarly, IPv4 dCEF must be enabled before dCEFv6. The ipv6 cef command is enabled on a global basis.
Chapter 4, "Routing on IPv6," presents in detail current and new commands used to configure and manage CEF for IPv6.
IPv6 Over Data-Link Technologies
IPv6 is defined to run on almost all data-link technologies such as Ethernet, FDDI, Token Ring, ATM, PPP, Frame Relay, nonbroadcast multiaccess (NBMA), and ARCnet. The following RFCs describe the behavior of the IPv6 protocol on each of these data-link technologies:
EthernetRFC 2464, Transmission of IPv6 Packets over Ethernet Networks
FDDIRFC 2467, Transmission of IPv6 Packets over FDDI Networks
Token RingRFC 2470, Transmission of IPv6 Packets over Token Ring Networks
ATMRFC 2492, IPv6 over ATM Networks
PPPRFC 2472, IP Version 6 over PPP
Frame RelayRFC 2590, Transmission of IPv6 Packets over Frame Relay Networks
NBMARFC 2491, IPv6 over Non-Broadcast Multiple Access (NBMA) networks
ARCnetRFC 2497, Transmission of IPv6 Packets over ARCnet Networks
Generic packet tunnelingRFC 2473, Generic Packet Tunneling in IPv6 Specification
IEEE-1394RFC 3146, Transmission of IPv6 Packets over IEEE 1394 Networks
Cisco IOS Software technology with IPv6 supports several interface types such as Ethernet, Fast Ethernet, Gigabit Ethernet, Cisco HDLC, PPP, Frame Relay PVC, ATM PVC, tunnels, and loopback. Configuration examples presented in this book are mostly focused on Ethernet technology because this is the most popular data-link technology used in networks.
IPv6 Over Ethernet
Similar to IPv4, IPv6 runs over any Ethernet technology. However, the protocol ID value specified in Ethernet frames that carry IPv6 packets is different from the protocol ID in IPv4. The protocol ID value within Ethernet frames identifies the Layer 3 protocol used such as IPv4, IPv6, or even other protocols such as IPX, DECnet, AppleTalk, and so on.
As shown in Table 2-27, the protocol ID is 0x0800 with IPv4 and 0x86DD with IPv6.
Table 2-27 Protocol ID Values for IPv4 and IPv6
Protocol |
Protocol ID in Ethernet Frames |
IPv4 |
0x0800 |
IPv6 |
0x86DD |
Thus, routers, servers, and nodes can differentiate protocols circulating simultaneously on networks with the protocol ID value of Ethernet frames.
IPv6 Over Popular Data Link Layers Used on Cisco
For the PPP link, one IPv6 Control Protocol (IPv6CP) packet is encapsulated in the Information field of the PPP data link layer. For IPv6 packets over the PPP link, the protocol ID indicates 0x8057 for IPv6CP.
Cisco-High-level Data Link Control (HDLC), the default serial protocol on a Cisco router, is a synchronous data link layer protocol developed by ISO. It specifies a data encapsulation method on synchronous serial links. For IPv6 packets over Cisco-HDLC, the protocol ID is 0x86 | 0xDD.
Finally, for IPv6 on the ATM AAL5 SNAP, the protocol ID is 0x86DD as well as on Ethernet.
Multicast Mapping Over Ethernet
As mentioned earlier, the IPv6 protocol makes heavy use of multicasting in several mechanisms used on a local-link scope such the replacement of ARP, stateless autoconfiguration, prefix advertisement, DAD, and prefix renumbering.
Therefore, IPv6 has a special mapping of multicast addresses to Ethernet link-layer addresses (Ethernet MAC addresses). The mapping is made by appending the low-order 32-bit of a multicast address to the prefix 33:33, which is defined as the multicast Ethernet prefix for IPv6. As shown in Figure 2-18, the low-order 32-bit of the 00:00:00:01 all-nodes multicast address (FF02::1) is appended to the Multicast Ethernet prefix 33:33.
Figure 2-18 Multicast Mapping Over an Ethernet Address Using an All-Nodes Multicast Address
The 48-bit address 33:33:00:00:00:01 represents the Ethernet MAC address (link-layer address) that is used as destination in the Ethernet frame to send a packet to the IPv6 destination FF02::1 (all-nodes multicast address). By default, all nodes that are IPv6-enabled on this local link listen and get any IPv6 packets using 33:33:00:00:00:01 as the destination in the Ethernet MAC address. This is an example of the all-nodes multicast address, but all other multicast assigned addresses presented in the "Multicast Address" section are used in the same way.
EUI-64 Format of an IPv6 Address
Link-local, site-local, and the stateless autoconfiguration mechanism as defined in RFC 2462 use EUI-64 format to make their IPv6 addresses. Stateless autoconfiguration is a mechanism that allows nodes on a network to configure their IPv6 addresses themselves without any intermediary device, such as a DHCP server.
The link-local address and stateless autoconfiguration are functions of IPv6 that automatically expand the Ethernet MAC address based on a 48-bit format into a 64-bit format (EUI-64). The conversion from 48-bit to 64-bit is a two-step operation.
As shown in Figure 2-19, the first step consists of inserting the value FFFE in the middle of the 48-bit link-layer address between the OUI section (vendor code) and the ID section (similar to a serial number). The original Ethernet MAC address presented here based on 48-bit is 00:50:3E:E4:4C:00.
Figure 2-19 First Step of the 48-Bit MAC Address Conversion into EUI-64 Format
As shown in Figure 2-20, the second and last step consists of setting the seventh bit of the 64-bit address. This bit identifies the 48-bit address's uniqueness or lack thereof. An Ethernet address may have two significances. The address can be globally or locally managed. Globally managed means that you use the vendor MAC address, such as 08-00-2B-xx-xx-xx (a DEC example). Locally means that you can rewrite the MAC address with your own value (a Sun example). In this case, the seventh bit indicates 1 for local and 0 for global. However, in EUI-64 format, the value is reversed: 0 for local and 1 for global. In summary, for IPv6 addresses using EUI-64 format, if the seventh bit is set to 1, the address is globally unique. Otherwise, it is local.
Figure 2-20 Second Step of the 48-Bit MAC Address Conversion into EUI-64 Format
Enabling IPv6 on Network Interfaces
After IPv6 forwarding is enabled on the router, the next step is assigning an IPv6 address to an interface. There are different methods to configure IPv6 addresses under a Cisco router. This section teaches you different ways to configure IPv6 addresses on Cisco IOS Software technology.
Static Address Configuration
As shown in Table 2-28, the command ipv6 address may be used to configure the link-local address (FE80::/10), the site-local (FEC0::/10) address, or an aggregatable global unicast address (2000::/3) on network interface. This method is similar to the static address configuration, thus, the entire IPv6 address must be specified and must have a legal representation as presented earlier in this chapter.
Table 2-28 ipv6 address Command
Command |
Description |
Step 1 |
|
Router(config)#interface interface-type interface-number |
Specifies an interface type and interface number. |
Example |
|
RouterA(config)#interface FastEthernet 0/0 |
Interface FastEthernet 0/0 is selected. |
Step 2 |
|
Router(config-if)#ipv6 address ipv6-address/prefix-length [link-local] |
Specifies an IPv6 address and prefix length to be assigned to the network interface. By default, when a site-local or aggregatable global unicast address is specified with this command, the link-local address is automatically configured. The default prefix length is 64-bit. |
Example |
|
RouterA(config-if)#ipv6 address 2001:0410:0:1:0:0:0:1/64 |
The aggregatable global unicast address 2001:0410:0:1:0:0:0:1/64 is configured on the interface. After the completion of this command, the link-local address is automatically configured. |
Example |
|
RouterA(config-if)#ipv6 address FEC0:0:0:1::1/64 |
The site-local address FEC0:0:0:1::1/64 is configured on the interface. After the completion of this command, the link-local address is automatically configured. |
Example |
|
RouterA(config-if)#ipv6 address FE80:0:0:0:0123:0456:0789:0abc link-local |
The link-local address FE80:0:0:0:0123:0456:0789:0abc is configured here. This command with the link-local argument can be used to override the default link-local address assigned by the router. |
NOTE
As soon as you have assigned a site-local or aggregatable global unicast IPv6 address with a prefix length to a network interface on a Cisco router, the result is an advertisement of the specified prefix on the router's local interface. Refer to Chapter 3 for detailed information about prefix advertisement and stateless autoconfiguration.
You can assign multiple site-local and aggregatable global unicast IPv6 addresses to each interface, but only one link-local address is permitted. Moreover, in the current Cisco IOS Software release, a site-local address is treated as an aggregatable global unicast address.
As described in RFC 2373, the recommended length of an IPv6 prefix assigned to a subnet is 64-bit.
Configuring the Loopback Interface
You can configure site-local or aggregatable global unicast addresses on the loopback interface using the ipv6 address command. In the following example, the interface loopback0 is selected:
RouterA(config)#interface loopback0
In the following example, the address fec0:0:0:9::1/128 is assigned to the loopback0 interface:
RouterA(config-if)#ipv6 address fec0:0:0:9::1/128
Static Address Configuration Using EUI-64 Format
With this method, using the ipv6 address command, you can configure addresses on interfaces using EUI-64 format, as discussed earlier in this chapter. It is important to specify the address's high-order 64-bit (IPv6 prefix). Then the router automatically completes the low-order 64-bit using EUI-64 format.
The following example specifies the prefix and prefix length to assign to the interface:
Router(config-if)#ipv6 address ipv6-prefix/prefix-length eui-64
The router completes the low-order 64-bit using EUI-64 format. After this command is completed, the link-local address is automatically configured.
In the following example, the aggregatable global unicast prefix 2001:0410:0:1::/64 is used to configure the address. The aggregatable global unicast and link-local addresses are automatically configured:
RouterA(config-if)#ipv6 address 2001:0410:0:1::/64 eui-64
In the following example, the site-local prefix FEC0:0:0:1::/64 is used to configure the address. The site-local and link-local addresses are automatically configured:
RouterA(config-if)#ipv6 address FEC0:0:0:1::/64 eui-64
NOTE
You can assign multiple site-local and aggregatable global unicast IPv6 addresses using this command.
Enabling Only IPv6 on a Network Interface
You can also enable just IPv6 on an interface without specifying an aggregatable global unicast or site-local address by using the ipv6 enable command, as shown here:
Router(config-if)#ipv6 enable
This command also automatically configures the link-local address on the interface. By default, this command is disabled.
Configuring an Unnumbered Interface
You can use the command ipv6 unnumbered to instruct an interface to use another interface's aggregatable global unicast address as a source address for packets originating from the unnumbered interface, as shown here:
Router(config-if)#ipv6 unnumbered interface
NOTE
The specified interface must have at least one aggregatable global unicast address configured using the ipv6 address command.
Configuring the MTU on an Interface
On Cisco routers, the default MTU value on the Ethernet (10 Mbps) and Fast Ethernet (100 Mbps) interfaces is preset to 1500 octets. However, this value can be modified using the ipv6 mtu command:
Router(config-if)#ipv6 mtu bytes
The following is an example of configuring the MTU value 1492 on the network interface:
RouterA(config-if)#ipv6 mtu 1492
NOTE
As described earlier, the minimum MTU value in IPv6 is 1280 octets and the recommended minimum MTU value is 1500 octets.
Verifying an Interface's IPv6 Configuration
Figure 2-21 shows an example of a basic IPv6 network topology in which Router A with one Fast Ethernet interface is connected to a local link. In this example, the network administrator assigns two prefixes to this local link:
2001:410:0:1::/64 as an aggregatable global unicast prefix
FEC0:0:0:1::/64 as a site-local prefix
Figure 2-21 Router with One Interface Connected to a Link
Before enabling IPv6 on Router A, you can use the show interface command to display the link-layer address (Ethernet MAC address) and MTU value of the FastEthernet 0/0 interface. Example 2-1 shows that the FastEthernet 0/0 interface owns 00:50:3E:E4:4C:00 as the link-layer address and uses 1500 bytes as the MTU value.
Example 2-1 Displaying an Interface's Link-Layer Address and MTU Value Using the show interface Command
RouterA#show interface fastEthernet 0/0 FastEthernet0/0 is up, line protocol is up Hardware is AmdFE, address is 0050.3ee4.4c00 (bia 0050.3ee4.4c00) MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec, <output omitted>
Then you can enable IPv6 on Router A and configure an address on interface FastEthernet 0/0. As shown in Example 2-2, the command ipv6 address 2001:410:0:1::/64 eui-64 forces the router to complete the address's low-order 64-bit by using the interface's link-layer address (Ethernet MAC address). The Ethernet MAC address used in this example is 00:50:3E:E4:4C:00.
Example 2-2 Enabling IPv6 on the Router and Configuring Two Addresses on Interface FastEthernet 0/0 Using the ipv6 address Command
RouterA#configure terminal RouterA(config)#ipv6 unicast-routing RouterA(config)#int fastethernet 0/0 RouterA(config-if)#ipv6 address 2001:410:0:1::/64 eui-64 RouterA(config-if)#ipv6 address FEC0::1:0:0:1:1/64 RouterA(config-if)#exit RouterA(config)#exit
Finally, the show ipv6 interface command allows you to display parameters related to the IPv6 configuration applied to a specific interface.
In Example 2-3, as soon as IPv6 is enabled on this interface, the link-local address FE80::250:3EFF:FEE4:4C00 is automatically enabled. The EUI-64 option specified with the ipv6 address command instructs the router to append the low-order 64-bit 250:3EFF:FEE4:4C00 to the aggregatable prefix 2001:410:0:1::/64. However, the site-local address FEC0::1:0:0:1:1 was statically configured. Note that only one link-local address is enabled, although there are two unicast addresses.
Example 2-3 show ipv6 interface Displays Parameters Related to Interface FastEthernet 0/0
RouterA#show ipv6 interface fastEthernet 0/0 FastEthernet0/0 is up, line protocol is up IPv6 is enabled, link-local address is FE80::250:3EFF:FEE4:4C00 Global unicast address(es): 2001:410:0:1:250:3EFF:FEE4:4C00, subnet is 2001:410:0:1::/64 FEC0::1:0:0:1:1, subnet is FEC0:0:0:1::/64 Joined group address(es): FF02::1 FF02::2 continues FF02::1:FF01:1 FF02::1:FFE4:4C00 MTU is 1500 bytes <output omitted>
As shown in Example 2-3, the interface automatically joins several multicast assigned addresses. Here is the meaning of each multicast assigned address:
FF02::1Represents all nodes and routers on the link-local.
FF02::2Represents all routers on the link-local.
FF02::1:FF01:1Solicited-node multicast address used for the mechanisms that replace ARP. This address is also used by DAD. One solicited-node multicast address is enabled for each unicast address configured on the interface. Therefore, this address is the solicited-node multicast address related to the unicast address FEC0::1:0:0:1:1.
FF02::1:FFE4:4C00Solicited-node multicast address related to the unicast address 2001:410:0:1:250:3EFF:FEE4:4C00.
NOTE
Mechanisms that replace ARP is covered in detail in Chapter 3.