4/9/2001 -- Cisco has been playing with IP version 6 for a while now and it appears they're ready to have it join other IOS features in prime time. IOS version 12.2(1)T is supposed to be available for download on April 16th with IP version 6 support. I've been playing with a November 2000 beta release and here's some information in case you were planning on trying it out.
Unlike IP version 4, IP version 6 is disabled by default on your router. In order to turn it on, you treat it like any other non-IP protocol, use the command:
ipv6 unicast-routing from global configuration mode. From the output below, you can see that there are several things you can configure for IPv6:
R2(config)#ipv6 ?
access-list Configure access lists
hop-limit Configure hop count limit
host Configure static hostnames
icmp Configure ICMP parameters
prefix-list Build a prefix list
route Configure static routes
router Enable an IPV6 routing process
unicast-routing Enable unicast routing
In order to apply an address to an interface in IPv6, you need to remember that version 6 doesn't use decimal addressing like version 4 does; it uses hexidecimal. To make things even more confusing, while the first 96 bits need to be in hex, the last 32 bits may be in decimal. In other words, we're working with two different numeric representations within a single address.
IPv6 addressing is covered in RFC 2373 but the part you need to know here is that in addition to using hex, we separate every 16 bits with a colon. If all 16 bits are zero, then a single 0 may be used, rather than the hex values of 0000. Cisco allows for other addressing methods that the RFC doesn't strictly define.
Below you'll see example help and a sample configuration of IPv6. The big string of numbers is the address--all 128 bits of it--while the "70" is the subnet mask. Most of us wanted the ability to use "/##" for subnet masks; now we have it. Unfortunately, we get it only for v6.
R2(config)#int e0
R2(config-if)#ipv6 ?
IPv6 interface subcommands:
address Configure IPv6 address on interface
enable Enable IPv6 on interface
mtu Set IPv6 Maximum Transmission Unit
nd IPv6 interface Neighbor Discovery
subcommands
rip Configure RIP routing protocol
traffic-filter Access control list for packets
unnumbered Configure IPv6 interface as unnumbered
R2(config-if)#ipv6 address 1111:2222:3333:0:5555:6666:7777:8888 70
As you can see here, IP and IPv6 can coexist on the same interface:
interface Ethernet0
ip address 192.168.1.51 255.255.255.0
ipv6 address 1111:2222:3333:0:5555:6666:7777:8888/70
Routing with IPv6 is going to be something many people will wonder about. You can set up an IPv6 version of RIP, and BGPv4 will support IPv6. But while OSPF for IPv6 is specified in RFC 2740, I haven't seen configuration options on Cisco devices. Just as with IPv4, you can set static routes with IPv6:
R2(config)#ipv6 route 4444::9999/128 e0
You can see from the table below that there are currently only two dynamic routing protocols supported. I expect OSPF to come online shortly.
R2#sh ipv6 route
IPv6 Routing Table - 4 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
Timers: Uptime/Expires
L 1111:2222:3333:0:5555:6666:7777:8888/128 [0/0]
via ::, Ethernet0, 00:21:30/never
C 1111:2222:3333:0:5555:6666:7777:8888/70 [0/0]
via ::, Ethernet0, 00:21:30/never
S 4444::9999/128 [1/0]
via ::, Ethernet0, 00:08:50/never
L FE80::/64 [0/0]
via ::, Null0, 00:21:30/never
Configuring BGP for IPv6 is way outside the scope of my column but RIP is easy. You need to set up RIP routing, which we do below. You can also see the commands that you can configure inside, such as split horizon:
R2(config)#ipv6 router rip test
R2(config-rtr-rip)#?
default Set a command to its defaults
distance Administrative distance
distribute-list Filter networks in routing updates
exit Exit from IPv6 RIP configuration mode
no Negate a command or set its defaults
poison-reverse Poison reverse updates
port Port and multicast address
redistribute Routing information redistribution
split-horizon Split horizon updates
timers Basic routing protocol update timers
Notice that there's no network statement? That's because we need to tell an interface to participate in IPv6 RIP. Notice we're using the same word "test" in both places. You can have multiple RIP routing processes running on the router:
R2(config)#int e0
R2(config-if)#ipv6 rip test enable
Once we've configured RIP, we can see its characteristics. If you're familiar with regular RIP, you know that it uses UDP port 520. You can see here that IPv6 RIP uses port 521:
R2#sh ipv6 rip
RIP process "test", port 521, multicast-group FF02::9, pid 49
Administrative distance is 120. Routing table is 0
Updates every 30 seconds, expire after 180
Holddown lasts 180 seconds, garbage collect after 120
Split horizon is on; poison reverse is off
Default routes are not generated
Periodic updates 38, trigger updates 0
IPv6 has lots of things to configure, and the primary thing is to be able to talk to other devices. Not all service providers are connected to the 6Bone. If you want to gain access, your first stop should be www.6bone.net. IPv6 isn't just about new addressing rules; it's also about eliminating security holes and that's going to involve IPSecv6 and IKEv6. Now is a good time to be a network engineer.
Originally published on TCPMag.com, April 2001. Reprinted with permission.
Questions or comments about this article? Post them below!
|