8-4. Configuring a Router for IPv6
Not every piece of networking equipment is IPv6-capable, and this must be verified before implementing IPv6. IPv6-capable equipment can operate in the IPv4 and IPv6 environment. IPv6 relies heavily on multicast messages for enabling a lot of functions; therefore, the network switches must be able to support IPv6 multicast functions as well. In IPv4, IGMP (Internet Group Management Protocol) is used for determining which computers should join a multicast group. However, IGMP is no longer used in IPv6. For multicast group management, IPv6 uses Multicast Listener Discovery (MLD) instead. Similar to IGMP in IPv6, MLD snooping enables the switches to listen to MLD packets to determine how to efficiently forward multicast packets to specific listeners on specific ports.
Today, most routers are IPv6-capable. Those that are not might just require a software upgrade. On Cisco routers, IPv6 is not enabled automatically. To enable IPv6 unicast packet forwarding on Cisco routers, the global command ipv6 unicast-routing is entered. The following is the sequence of commands required to enable IPv6 unicast-routing:
Router# conf t Router(config)# Router(config)# ipv6 unicast-routing
The ipv6 unicast-routing command only activates the IPv6 forwarding mechanism on the routers. However, IPv6 is still not yet enabled on a specific interface. To enable IPv6 on a specific interface, you must enter the ipv6 enable command. The following example shows how to enable IPv6 on a gigabitethernet 3/1 interface. This step requires that the interface must first be selected. In this case, the command int Gig3/1 is entered from the (config)# prompt. The prompt changes to (config-if)# and the command ipv6 enable is entered:
int Gig3/1 Router(config)# int Gig3/1 Router(config-if)# ipv6 enable
For Cisco routers, enabling IPv6 on the interface automatically configures the link-local address for that interface. The link-local address can only communicate with the IPv6 devices on the same network link.
The command show running-config is used to verify the IPv6 configuration. The use of this command is next demonstrated and a portion of the running configuration for interface GigabitEthernet 3/1 is provided:
Router#show running-config . . ! interface GigabitEthernet3/1 no ip address ipv6 enable !
Also, the command show ipv6 interface can be used to show the state of the IPv6 configuration on the interface. This command shows the IPv6 of the interface. In the following example, it shows that IPv6 is enabled on the interface gigabitEtheret3/1. It shows the interface has a link-local address, but not the global address. Along with that the IPv6 network discovery protocol information is shown:
Router#show ipv6 interface gigabitEthernet 3/1 GigabitEthernet3/1 is up, line protocol is up IPv6 is enabled, link-local address is FE80::217:DFFF:FEF5:1000 No global unicast address is configured Joined group address(es): FF02::1 FF02::2 FF02::1:FFF5:1000 MTU is 1500 bytes ICMP error messages limited to one every 100 milliseconds ICMP redirects are enabled Output features: HW Shortcut Installation ND DAD is enabled, number of DAD attempts: 1 ND reachable time is 30000 milliseconds ND advertised reachable time is 0 milliseconds ND advertised retransmit interval is 0 milliseconds ND router advertisements are sent every 200 seconds ND router advertisements live for 1800 seconds ND advertised default router preference is Medium Hosts use stateless autoconfig for addresses.
The IPv6 global address can be configured on the interface by using the command ipv6 address ipv6 interface address issued from the (config-if)# prompt. There are two ways to program the IPv6 interface address. One is to specify the entire 128-bit IPv6 address followed by the prefix length. Another way is to specify a 64-bit prefix and to use the eui-64 option. Using the option eui-64 allows the router to choose its own host identifier (right most 64-bits) from the EUI-64 (Extended Universal Identifier-64) of the interface. The following example uses the IPv6 address of 2001:DB88:FEED:BEEF::1 on the router interface. This has a 64-bit network prefix of 2001:DB88:FEED:BEEF.
Router(config)# int Gig3/1 Router(config-if)# ipv6 address 2001:DB88:FEED:BEEF::1/64
Next, the command show ipv6 interface gigabitEthernet 3/1 is used to display the configuration of the Gig3/1 interface. This time the command shows that the interface gigabitEthernet 3/1 now has an IPv6 global address assigned to it, which is 2001:DB8:FEED:BEEF::1:
Router#show ipv6 interface gigabitEthernet 3/1 GigabitEthernet3/1 is up, line protocol is up IPv6 is enabled, link-local address is FE80::217:DFFF:FEF5:1000 Global unicast address(es): 2001:DB8:FEED:BEEF::1, subnet is 2001:DB8:FEED:BEEF::/64 Joined group address(es): FF02::1 FF02::2 FF02::1:FF00:1 FF02::1:FFF5:1000 MTU is 1500 bytes ICMP error messages limited to one every 100 milliseconds ICMP redirects are enabled Output features: HW Shortcut Installation ND DAD is enabled, number of DAD attempts: 1 ND reachable time is 30000 milliseconds ND advertised reachable time is 0 milliseconds ND advertised retransmit interval is 0 milliseconds ND router advertisements are sent every 200 seconds ND router advertisements live for 1800 seconds ND advertised default router preference is Medium Hosts use stateless autoconfig for addresses.
Now that IPv6 is enabled on the router, the router can begin to participate in the IPv6 functions. The router plays a key role in the stateless autoconfiguration of an IPv6 network. An IPv6 router uses the neighbor discovery (ND) protocol to periodically advertise information messages on the links to which they are connected. These are ICMPv6 messages of the type Router Advertisement (RA). One parameter of the router advertisements is the IPv6 network prefix for the link that can be used for host autoconfiguration. Upon receiving RA messages, an unconfigured host can build its global unicast address by prepending the advertised network prefix to its generated unique identifier just like in the link-local address case.
Another way for a host to autoconfigure itself is by sending router solicitation messages to the connected routers. These messages are sent to ask routers to send an immediate RA message on the local link, so the host can receive the autoconfiguration information without having to wait for the next schedule RA. Note: The time interval between RA messages is configurable. By default, router advertisements are sent every 200 seconds in Cisco routers.
As a result, the global unicast address of every machine on this network is the combination of the network prefix of 2001:DB8:FEED:BEEF and the self-generated interface identifier for that machine. Both Figure 8-11 and Figure 8-12 show two IPv6 addresses with the 2001:DB8:FEED:BEEF prefix. There are two IPv6 addresses. One is a global unicast address and another is a random generated identifier as part of the privacy identifier. This was discussed earlier in this section (see Privacy Extensions for Stateless Autoconfiguration). Microsoft calls this random identifier IPv6 a “temporary IPv6 address.” This is shown to be a temporary address in Windows 7.
Figure 8-11. Windows XP—ipconfig result with an IPv6 global unicast address
Figure 8-12. Windows 7—ipconfig result with an IPv6 global unicast address
In Windows XP, both of these are presented as IP addresses. Of course, we can tell that one is a modified EUI-64 format, and the other one is randomly generated. An IPv6 address with ff:fe in the middle indicates the EUI-48 to EUI-64 transform. On Mac OS X, no random identifier is used. The global unicast address is the product of the modified EUI-64 format, as shown in Figure 8-13.
Figure 8-13. Mac OS X—ipconfig result with an IPv6 global unicast address
Throughout this chapter, the IPv6 prefix used is 2001:DB8::/32. This is a special range designated by the IANA to be used for any testing or documentation. This IPv6 prefix cannot be used nor can it be routed on the Internet.
With the global unicast address, the machine is now reachable from anywhere on the IPv6 network. However, it is a daunting task to remember the IPv6 global unicast address. It is not practical to use the long 128-bits address. This required a DNS server that can translate a host name to an IPv6 address. The DNS record for IPv6 is called AAAA (Quad A) record.