Chris Bryant, CCIE #12933 www.thebryantadvantage.com
Back To Index
IP Version 6
Why Do We Need A Version 6 Of IP, Anyway? The main reason - we're running out of IPv4 addresses! That isn't the only drawback to IPv4 addresses as compared to IPv6, but frankly, it's the main one. The good news with IPv6 is that the 128-bit addresses give us a tremendous number of addresses, and is designed to make route summarization easier and more efficient. The bad news: IPv6 uses 128-bit addresses. If this is the first time you've really looked at IPv6 - and you're not alone if it is -- that's the major shock factor. Once you get used to the address format, though, it's really not that bad. Why Do We Need Version 6? The Header Fields The IPv6 Address Format Zero and Leading Zero Compression The Interface Identifier The IPv6 Address Types IPV6's Reserved Addresses IPv4 - IPv6 Compatible Addresses The Autoconfiguration Process OSPFv3 Theory OSPFv3 Lab IPv4 - IPv6 Transition Methods Before we start comparing the version, let's look at some additional improvements brought to us by IPv6: Those dreaded broadcasts we're always trying to limit are a thing of the past - IPv6 doesn't use them. NAT was developed to help with the IPv4 address shortage, and since that will also be a thing of the past, so will NAT. (NAT is not a thing of the past when it comes to your CCNP ROUTE exam.) IPv6 was specifically designed with route aggregation in mind, making that aggregation easier and more effective, which in turn keeps our routing tables - say it with me - complete and concise. The security capabilities of IPv6 are much greater than that of IPv4. That's particularly true when it comes to Mobile IP. IPv4 can run that with additional config (boo!), but IPv6 doesn't need any extra config (yay!) DHCP is still available, but IPv6 nodes can assign themselves an address without the help of a DHCP server via autoconfiguration. Quality of Service (QoS) capabilities are greater with the IPv6 header values than with IPv4 - more about that in just a moment. Of course, moving your entire network from IPv4 to IPv6 might be a little tricky - any migration is. Knowing the fundamentals of IPv6 makes that migration a lot easier, and we'll jump into that right now with a comparison of the actual IPv4 and v6 headers.
IPv6 Header Fields You're familiar with the IPv4 headers, but there are quite a few changes in the move to IPv6. Here's a link to an illustration on Cisco's website comparing the v4 and v6 headers: http://www.cisco.com/web/about/ac123/ac147/images/ipj/ipj_9-3/93_ipv6_fig1_lg.jpg There are eight header fields in IPv6: version - This is set to "6" in IPv6. But you knew that. :) traffic class - In IPv4, this was the Type Of Service (TOS) field. The "traffic class" name comes from this field's ability to allow us to assign levels of importance to a packet via QoS. flow label - No equivalent in IPv4, this field allows a packet to be labeled as part of a particular flow. This also helps with QoS, allowing us to prioritize traffic flows rather than individual packets. payload length - IPv4's equivalent is the Total Length field hop limit - Roughly equivalent to IPv4's Time To Live (TTL) field. Every hop decrements this counter by one, and when that counter hits zero -- the "time to live" becomes the time to be discarded. next header - Equivalent to IPv4's Protocol field source address, destination address - they're now 128 bits! There are some IPv4 fields that are not represented in IPv6: Header Length Identification Flags Fragment Offset Header Checksum The IPv6 Address Format Typical IPv4 address: 129.14.12.200 Typical IPv6 address: 1029:9183:81AE:0000:0000:0AC1:2143:019B IPv6 isn't exactly just tacking two more octets onto an IPv4 address! With IPv6, our non-compressed address has eight sections of four hex values, separated by a total of seven colons. Luckily for us, there are easy ways to compress these addresses so we don't have to enter so many numbers -- and I have a feeling your ability to perform these compressions will be a highly valuable skill on your way to passing the CCNP ROUTE exam. You remember from your CCNA studies that there's no difference between an upper-case letter or lower-case letter in hexadecimal. That's the first rule. The other rules deal with all the zeroes you'll run into in IPv6 addresses. If you're not comfortable and/or rusty with your hexadecimal conversions, I strongly recommend you work with the hex conversions workbook included with this course before proceeding. Hex is easy when you know how, and once you work with that material just a bit, you'll know how. Please take my word for this: Even if you think you're comfortable with hex, spend a little time practicing your conversions anyway. Zero Compression And Leading Zero Compression If you have consecutive fields of zeroes, they can be expressed with two colons. It doesn't matter if you have two fields or eight, you can simply type two colons and that represents all of them. The key rule: you can only do this zero compression once in an IPv6 address. Here's an example: Original format: 1234:1234:0000:0000:0000:0000:3456:3434 Using zero compression: 1234:1234::3456:3434 Leading zeroes in any 16-bit field can be dropped, but each block you do this with must have at least one number remaining. If the block is all zeroes, you have to leave one zero. This is leading zero compression. Zero compression: Allowed only once per address. Leading zero compression: Perform as often as you like in an address. Let's look at an example of leading zero compression with this address: 1234:0000:1234:0000:1234:0000:1234:0123 We have four different fields with leading zeroes, making this address a prime candidate for leading zero compression. Original format: 1234:0000:1234:0000:1234:0000:0123:1234 With leading zero compression: 1234:0:1234:0:1234:0:123:1234 We're allowed to use both zero compression and leading zero compression in a single address, and the frequency rules discussed earlier apply. Using both methods, we can take this address.... 1111:0000:0000:1234:0011:0022:0033:0044 .. and compress it to this: 1111::1234:11:22:33:44 Zero compression uses the double-colon to replace the second and third block of numbers, which were all zeroes; leading zero compression replaced the "00" at the beginning of each of the last four blocks. Just be careful and take your time with both zero compression and leading zero compression and you'll do well on the exam and in the real world. The key to success here is remembering that you can only use zero compression once in a single address. Tipoffs that you're looking at an invalid IPv6 address include seeing four colons in a row... 1111::::2222:3333:4444:5555 ... or spotting consecutive colons at multiple points in that same address. 1111::2222::4444:5555 The key to success with IPv6 compression: practice. Identifying An Interface In IPv6 Every interface on a given IPv6 link has to have a unique identifier, and once again the name is the recipe with these interface identifiers. This value will always be 64 bits in length, and in the case of an Ethernet interface, the identifier is dynamically created from the MAC address of the interface. The 48-bit MAC address. Hmm. Sounds like we need to add something there... and that's just what IPv6 does. The hex value "FFFE" is inserted directly in the middle of the MAC address, right between the OUI and the vendor code. (Confess: Never thought you'd hear the term "OUI" again, right?) In the MAC address 00-01-02-aa-bb-cc, the OUI is 00-01-02 and the vendor code is aa-bb-cc. It's simple enough, then, to come up with the interface identifier here... 00-01-02-FF-FE-aa-bb-cc. This is networking, though, so you know there's got to be one more detail here. That detail is the seventh bit of the first octet, and right now that first octet is... 00000000 The 7th bit is the Universal/Local bit, and that's just what this bit does - it tells us whether this address is universally unique or just locally unique (unique only to this link). It's assumed a MAC address is universally unique, so that U/L bit is set to 1... 00000010 ... giving us a final interface identifier of 02-01-02-FF-FE-AA-BB-CC. The 8th bit is generally called the g bit, "g" standing for "group, but you'll occasionally see it called the i/g bit for "individual/group". If this bit is set to zero, it's a unicast address; if set to one, it's a multicast address. IPv6 Address Types You know the drill with IPv4 address types: Unicast - represents a single host Multicast - represents a group of hosts Broadcasts - represents all hosts We still have unicasts and multicasts with IPv6, but broadcasts are gone and now we have anycasts - an address that represents multiple interfaces. Additionally, we have different types of unicast addresses. The official name of the first IPv6 unicast address we'll discuss is aggregateable global unicast address. Quite a bit of documentation on IPv6 leaves the "aggregateable" off, so we'll refer to these addresses simply as global unicast addresses. This address is equivalent to the public IPv4 address classes. These addresses are fully routable and can be used for Internet access. The word "aggregateable" refers to the ability to aggregate, or summarize, these addresses to make routing more efficient. Unlike IPv4, IPv6 is specifically designed to be fully hierarchical, allowing for easier and more efficient route aggregation. The range of IPv6 global unicast addresses is 2000::/3 (any address that begins with 001). The IPv6 link-local address is our "the name is the recipe" address of the day - it's an address that is kept on the local link. They'll have an prefix of Fe80::/10, followed by that interface identifier we spoke of earlier. Much more on these later. Site-local addresses were originally created as IPv6's equivalent to IPv4's private address classes. You're likely reading that and thinking "If we don't need NAT any more and we have sooooo many addresses with IPv6, why do we need private address classes?" Great question! It's such a great question that site-local addresses are no longer used by IPv6. I'm mentioning it here just in case you've read some of my older IPv6 materials (or someone else's!) that mentioned them. You can identify several classes of IPv6 addresses by their initial bits: 001 - Global address 1111 1111 - Multicast (FF) 1111 1110 10 - Link Local (FE80) ::x.x.x.x or 0:0:0:0:0:0:x.x.x.x - IPv4-compatible address. Any IPv6 address with the first 96 bits set to zero is an IPv4-compatible address. I used zero compression in the first representation of that range, and leading zero compression for the second. Reserved IPv6 Addresses IPv4 has the reserved address 127.0.0.1 to allow for testing; IPv6 has a loopback address reserved for the same purpose. IP v6 Loopback: 0000:0000:0000:0000:0000:0000:0000:0001 Using Leading Zero Compression Only: 0:0:0:0:0:0:0:1 Combining Leading Zero and Zero Compression: ::1 Zero compression looks pretty good now, doesn't it? Unique to IPv6 is the unspecified address. You may be thinking "if it's unspecified, how do we know what it is?" Another great question! This address is used to represent an unknown address. IPv6 Unspecified Address: 0000:0000:0000:0000:0000:0000:0000:0000 Using Zero Compression: 0:0:0:0:0:0:0:0, or just ::/128. Since the unspecified address is ::/128, it follows that the default route for IPv6 is ::/0.
IPv4 - IPv6 Compatible Addresses If you see an address with a great many zeroes -- 96 of them, to be exact -- at the beginning, it may well be an IPv4-compatible IPv6 address. Such an address is going to have zeroes for the first 96 bits, which makes zero compression even better! The rest of the bits are simply a hexadecimal expression of the IPv4 address. For example.... IPv6 Address To Convert: ::D190:4E71 The double-colon is zero compression in action, so now we need to convert the lower 32 bits into decimal. Hex D1 = Decimal 209 Hex 90 = Decimal 144 Hex 4E = Decimal 78 Hex 71 = Decimal 113 The IPv4 address that was embedded into the IPv6 address is 209.144.78.113. Just another good reason to know your hex conversions! Multicasts And Anycasts You know what a multicast is, and that IPv4 multicast addresses are Class D addresses with a first octet value of 224 - 239. The IPv6 multicast range is much larger, but just as easy to remember. Any address that begins with "1111 1111", or "FF" in hex, is a multicast address -- the full prefix being FF00::/8. There are some local-link-only addresses in that range worth noting: FF02::1 -- All nodes on the local link FF02::2 -- All routers "" FF02::9 -- All RIP routers "" FF02::A -- All EIGRP routers "" FF02::1:FFzz:zzzz/104 -- Solicited-node address. These are used in Neighbor Solicitation messages - more about these very soon. The "z"s are the rightmost 24 bits of the unicast/address of the node. Here's a link to a regularly-updated IANA document with plenty of additional reserved addresses and links to related RFCs. It's not required reading for the CCNP ROUTE, but an excellent document for present and future reference. http://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xml
The Anycast Address IPv6 introduces the anycast address, an interesting combination of unicast and multicast An anycast address is a unicast address assigned to multiple interfaces. (Something we really couldn't get away with in v4.) A sender transmits an anycast packet in the same manner it would a unicast packet...
... and when the router receives the anycast packet, the router then sends that packet to the closest device with that anycast address. Sounds simple, right? It is - but we also know the word "closest" is a big red flag. "You said I'm closest. How am I closest? What is so closest about me?" Sorry. But we really do need to know how IPv6 defines "closest" here... It's the first learned directly connected neighbor - if there are directly connected neighbors. If that's not the case, it's simply the closest neighbor as determined by the routing protocol metric. That's how I'm closest, Henry. The IPv6 Autoconfiguration Process IPv4 has DHCP; IPv6's equivalent is autoconfiguration. There are two main types of autoconfiguration - stateless and stateful. Stateful autoconfiguration is used when the host obtains an IPv6 address and other information from a server. If that sounds kinda like DHCP, that's because it is - DHCPv6, actually! You hear the term stateful autoconfiguration more often than "DHCPv6", though, but you should know they're one and the same. The key phrase there is "from a server". If the DHCPv6 server goes down, we're out of luck. With stateless autoconfiguration, there's no such dependency, and the entire process starts with the IPv6 host configuring its own link-local address. An IPv6 address is 128 bits, and here's where they come from in this instance: The first 64 bits of this self-generated address will be 1111 1110 10 (FE80) followed by 54 zeroes. The last 64 bits are the interface identifier. Technically, that address is tentative at this point. It's been successfully calculated, but now we must make sure that no other host is using the same address. That's a remote possibility, but still a possibility, and that's where DAD comes in - the Duplicate Address Detection feature. At this point, the host will send a Neighbor Solicitation (NS) message to see if any other host on the link is using that same link-local address. Basically, the host is asking all other hosts on the link, "Is anyone else using the address I just generated for myself?"
If another host on the link is using that address, that host will respond with a Neighbor Advertisement (NA). When the host that sent the NS receives the NA, it will disable its link-local address. If no response to the NS is received, the local host is satisfied that it has a unique link-local address. At this point, that host will send a Router Solicitation (RS) onto the segment. The destination for the RS will be FF02::2, the "all-routers" multicast address. What's the host soliciting? It needs additional configuration information from a router in the form of a Router Advertisement (RA). Routers generally send these RAs periodically without an express request from a host, but even though the host would only have to wait 10 seconds or so, polling the router now with an RS does speed up the overall process. (If the router is running the usual ipv6 unicast-routing command, you'll see those RAs. If the router is running the ipv6 address auto-config command but not unicast-routing, those RAs are not sent.) Information in the RA includes... Flags indicating whether the host should use DHCP for addressing information If DHCP is in use, the RA tells the host where the DHCP serer is If not, the RA contains the prefix and prefix lifetime information If DHCP is not in use, the router attaches the network prefix to the host's link-local address, which results in the host's full IPv6 address complete with network prefix.
IPv6 Routing On Cisco Routers To go along with the new address types, we have new variations of RIP for IPv6 - the actual name is RIPng (new generation) EIGRP for IPv6 ISIS for IPv6 OSPF v3 (Version 3, defined in RFC 2740.) Static routes are still available with IPv6 Multiprotocol BGP V4 (MPBGPVer4 or simply MPBGP) Before we start with any of these, we need to enable a Cisco router's IPv6 routing capabilities with ipv6 unicast-routing. R1(config)#ipv6 unicast-routing OSPF For IPv6 (OSPF Version 3) Of the IPv6-compatible protocols listed earlier, OSPF v3 is probably the one in the most widespread use today. Let's take a look at some basic OSPFv3 commands and compare OSPF v3 to IPv4's OSPF v2. During your migration between the two, you may run both v2 and v3 on the same router. There's no rule against that, and the two instances are kept as separate as they would be if you ran two v2 instances on the same router. In IPv6, you're not going to start an OSPF configuration with router ospf. One major difference between v2 and v3 is that v2 is enabled in router config mode and v3 is enabled on a per-interface basis. This will automatically create a routing process. R1(config-if)#ipv6 ospf 1 area 0 One similarity between the two versions is their use of the OSPF RID. v3 is going to use the exact same set of rules to determine the local router's RID - and v3 is going to use an IPv4 address as the RID! If there is no IPv4 address configured on the router, you'll need to use our old friend router-id to create the RID. The RID must be entered in IPv4 format, even if you're only running IPv6 on the router. R1(config-router)#router-id 12.1.1.1 Other similarities and differences between v2 and v3: The basic operational theory of v3 is very similar to that of v2. The Hello packet is still around, as are the LSAs and LSAcks. Stub, total stub, and NSSAs are still around, and the Area 0 rule still exists (as do virtual links). The general rules for neighbor discovery and adjacencies are the same. And speaking of discovery... v3 NBMA configurations require neighbor statements, just like v2. One major difference between the two is that v3 allows a link to be part of multiple OSPF instances, where v2 would allow a link to be part of only one. v3 point-to-point and point-to-multipoint configurations do not elect DRs and BDRs, just like v2. v3 headers are smaller than v2, since v3 headers have no authentication fields. The v2 reserved address 224.0.0.5 is represented in v3 by FF02::5. The v2 reserved address 224.0.0.6 is represented in v3 by FF02::6. We can still use the area range command, and IPv6 does make summarization more effective - but when you use the area range command in v3, the OSPF cost of that summary is simply the highest of the individual route costs. So while we have new addresses and commands to get used to, the theory remains much the same.
A Sample OSPFv3 Configuration Before we begin the configuration, we need to enable IPv6 packet forwarding with ipv6 unicast-routing, the IPv6 version of Cisco Express Forwarding (CEF) with ipv6 cef, and the OSPF v3 process with ipv6 router ospf. R1(config)#ipv6 unicast-routing R1(config)#ipv6 cef R1(config)#ipv6 router ospf 1 R1(config-rtr)# R2(config)#ipv6 unicast-routing R2(config)#ipv6 cef R2(config)#ipv6 router ospf 1 R2(config-rtr)# If you don't have any IPv4 addresses configured on the router, you must configure an OSPF RID with the router-id command. R1(config)#ipv6 router ospf 1 R1(config-rtr)#router-id 1.1.1.1 R2(config)#ipv6 router ospf 1 R2(config-rtr)#router-id 2.2.2.2 OSPF v3 interfaces are placed into areas at the interface level. R1(config-rtr)#int fast 0/1 R1(config-if)#ipv6 ospf 1 ? area Set the OSPF area ID R1(config-if)#ipv6 ospf 1 area 0 R2(config-rtr)#int fast 0/1 R2(config-if)#ipv6 ospf 1 area 0 Here, IOS Help shows us that quite a few OSPF v3 options look just like their v2 counterparts! R2(config-if)#ipv6 ospf ? <1-65535> Process ID authentication Enable authentication cost Interface cost database-filter Filter OSPF LSA during synchronization and flooding dead-interval Interval after which a neighbor is declared dead demand-circuit OSPF demand circuit flood-reduction OSPF Flood Reduction hello-interval Time between HELLO packets mtu-ignore Ignores the MTU in DBD packets neighbor OSPF neighbor network Network type priority Router priority retransmit-interval Time between retransmitting lost link state advertisements transmit-delay Link state transmit delay
One thing we still like to see in OSPF v3 are adjacencies! Here, the router console lets us know that an adjacency has just been formed. Note the message indicates that OSPF v3 is in use. *Mar 4 16:13:48.623: %OSPFv3-5-ADJCHG: Process 1, Nbr 1.1.1.1 on FastEthernet0/ 1 from LOADING to FULL, Loading Done Verify OSPF v3 adjacencies with show ipv6 ospf neighbor. R2#show ipv6 ospf neighbor Neighbor ID Pri State Dead Time Interface ID Interface 1.1.1.1 1 FULL/BDR 00:00:30 10 FastEthernet0/1 To see more details about the neighbor, run show ipv6 ospf neighbor detail. The output is just a little different than OSPF v2. R2#show ipv6 ospf neighbor detail Neighbor 1.1.1.1 In the area 0 via interface FastEthernet0/1 Neighbor: interface-id 10, link-local address FE80::20A:41FF:FE64:31C2 Neighbor priority is 1, State is FULL, 6 state changes DR is 2.2.2.2 BDR is 1.1.1.1 Options is 0x84EFB26D Dead timer due in 00:00:34 Neighbor is up for 00:06:52 Index 1/1/1, retransmission queue length 0, number of retransmission 0 First 0x0(0)/0x0(0)/0x0(0) Next 0x0(0)/0x0(0)/0x0(0) Last retransmission scan length is 0, maximum is 0 Last retransmission scan time is 0 msec, maximum is 0 msec
Here are two other important OSPF v3 commands, show ipv6 ospf interface and show ipv6 ospf database. The first command shows the link-local address of both the local router and the BDR (R1). The second command indicates the use of OSPF v3 in the output almost immediately. R2#show ipv6 ospf interface fast 0/1 FastEthernet0/1 is up, line protocol is up Link Local Address FE80::20F:F7FF:FE69:8D21, Interface ID 5 Area 0, Process ID 1, Instance ID 0, Router ID 2.2.2.2 Network Type BROADCAST, Cost: 1 Transmit Delay is 1 sec, State DR, Priority 1 Designated Router (ID) 2.2.2.2, local address FE80::20F:F7FF:FE69:8D21 Backup Designated router (ID) 1.1.1.1, local address FE80::20A:41FF:FE64:31C2 Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 Hello due in 00:00:08 Index 1/1/1, flood queue length 0 Next 0x0(0)/0x0(0)/0x0(0) Last flood scan length is 1, maximum is 4 Last flood scan time is 0 msec, maximum is 0 msec Neighbor Count is 1, Adjacent neighbor count is 1 Adjacent with neighbor 1.1.1.1 (Backup Designated Router) Suppress hello for 0 neighbor(s) R2#show ipv6 ospf database OSPFv3 Router with ID (2.2.2.2) (Process ID 1) Router Link States (Area 0) ADV Router Age Seq# Fragment ID Link count Bits 1.1.1.1 415 0x80000003 0 1 None 2.2.2.2 408 0x80000003 0 1 None
The IPv6 equivalent of OSPF IPv4's show ip ospf is show ipv6 ospf. This command also indicates the use of OSPF v3. R2#show ipv6 ospf Routing Process "ospfv3 1" with ID 2.2.2.2 SPF schedule delay 5 secs, Hold time between two SPFs 10 secs Minimum LSA interval 5 secs. Minimum LSA arrival 1 secs LSA group pacing timer 240 secs Interface flood pacing timer 33 msecs Retransmission pacing timer 66 msecs Number of external LSA 0. Checksum Sum 0x000000 Number of areas in this router is 1. 1 normal 0 stub 0 nssa Reference bandwidth unit is 100 mbps Area BACKBONE(0) Number of interfaces in this area is 1 SPF algorithm executed 3 times Number of LSA 6. Checksum Sum 0x0293F7 Number of DCbitless LSA 0 Number of indication LSA 0 Number of DoNotAge LSA 0 Flood list length 0 The IPv6 equivalent of OSPF IPv4's clear ip ospf process is clear ipv6 ospf process. Just as with OSPF v2, the OSPF database is cleared out and then rebuilt with this command. Note that first I tried to use the OSPF v2 command clear ip ospf process, but that did nothing since we're not running OSPF v2. OSPF v3 still asks us if we're really sure we want to do this - the prompted answer to the question "Reset ALL OSPF processes?" is "no"! R1#clear ip ospf process R1# R1# R1#clear ipv6 ospf process Reset ALL OSPF processes? [no]: y R1# *Jan 22 02:46:33.535: %OSPFv3-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/1 from FULL to DOWN, Neighbor Down: Interface down or detached R1# *Jan 22 02:46:41.879: %OSPFv3-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/1 from LOADING to FULL, Loading Done
Here are some general IPv6 commands and their output you should be familiar with: R2#show ipv6 route IPv6 Routing Table - 5 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2 ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2 O 4DDE:EEEE:1::/64 [110/1] via ::, FastEthernet0/1 C 5DDE:EEEE:1::/64 [0/0] via ::, FastEthernet0/1 L 5DDE:EEEE:1::1/128 [0/0] via ::, FastEthernet0/1 L FE80::/10 [0/0] via ::, Null0 L FF00::/8 [0/0] via ::, Null0 R2#show ipv6 interface FastEthernet0/1 is up, line protocol is up IPv6 is enabled, link-local address is FE80::20F:F7FF:FE69:8D21 Global unicast address(es): 5DDE:EEEE:1::1, subnet is 5DDE:EEEE:1::/64 R2#show ipv6 interface brief FastEthernet0/0 [administratively down/down] unassigned Serial0/0 [administratively down/down] unassigned FastEthernet0/1 [up/up] FE80::20F:F7FF:FE69:8D21 5DDE:EEEE:1::1 Serial0/1 [administratively down/down] unassigned
Transitioning From IPv4 To IPv6 This is the part that's going to be really interesting for all of us in the years ahead. Any migration is challenging, and migrating a network from IPv4 to IPv6 is no exception. Theory holds that to roll out IPv6, you start at the network edge and work your way toward the core. This means we have to think of some ways for IPv6 and IPv4 to work together while we make the transition to an all-IPv6 network. To get this job done, you're either translating or encapsulating. There are three primary methods of accomplishing this. The first is the dual stack. A host runs dual stack when it runs both IPv4 and IPv6. Dual stack helps meet the migration challenge we face when end users want to keep using their favorite IPv4-based apps while the network moves forward to IPv6-based apps. Another solution is the 6-to-4 tunnel. Cisco documentation states that setting up a 6-to-4 tunnel is very simple on the host ends of the tunnel. A 6-to-4 tunnel is also automatic, is torn down when the session ends, and is a scalable solution. 6-to-4 tunneling is accomplished by taking an IPv6 packet and encapsulating it into an IPv4 packet (protocol type 41) for transport across the IPv4 section of the network, then de-encapsulating it when the remote edge router is ready to route it across the IPv6 network. The IPv6 networks shown in this method are sometimes referred to as IPv6 islands. 6to4 tunnels also have a reserved IPv6 address prefix for edge routers such as the ones shown below. These prefixes begin with 2002 and are followed by the router's IPv4 address expressed in hex. These prefixes carry a /48 prefix, such as 2002:1234:83cd::/48.
The IPv4 address of the interface involved in the tunneling is vital in determining the correct IPv6 address for the tunnel. Let's say the IPv4 address of the router on the left is 220.200.18.42. We know the address for the corresponding tunnel interface begins with 2002 - but what's the rest of it? Breaking down each octet into hex, we get: 220 = 13 units of 16, 12 units of 1 = hex value is DC 200 = 12 units of 16, 8 units of 1 = hex value is C8 18 = 1 unit of 16, 2 units of 1 = hex value is 12 42 = 2 units of 16, 10 units of 1 = hex value is 2A The IPv6 address for the tunnel interface is 2002:DCC8:122A::/48. R1(config)#int fast 0/1 R1(config-if)#ip address 220.200.18.42 255.255.255.0 R1(config-if)#int tunnel0 R1(config-if)#ipv6 address 2002:DCC8:122A::/48 Another method of cutting over from one version to the other is Network Address Translation - Protocol Translation. NAT-PT works much like plain old NAT. If you have IPv6 hosts that need to intercommunicate with IPv4 hosts on another segment, NAT-PT may be the perfect solution. NAT routers translate private IPv4 addresses to public IPv4 addresses, and back again; NAT-PT routers translate IPv6 addresses to IPv4 addresses, and back again. A Final Word On IPv6 As I mentioned earlier, I admit my first reaction to IPv6 was "what do we need that for?" The key is not why it's here, but that it is here. We can either resist it or embrace it, and we might as well start embracing it - because it is here! What you must not do is take the approach of "well, we use IPv4 at my job, so I don't need to know IPv6." I heard the same thing when Windows 2000 Server came along - "We use NT4 and we'll use that forever." That didn't work out for too many people. My point here is that you don't want to fall into that trap. Few of us are going to work in one place forever in this field, and to get ahead, we have to know things that other people don't. Like IPv6. Those who know IPv6 are going to have a huge advantage over those who don't. I've only given you an introduction to IPv6 here. There is a lot of solid information available readily through your favorite search engine, some of it from Cisco and some not. Take the incentive now and learn IPv6. You'll be glad you did! Copyright 2011 The Bryant Advantage.. All Rights Reserved.