There are a few more methods with IP version 6 for address allocation than what we had with IP version 4. With IP version 6, we will have manual assignment, just like IP version 4. But we will also have the ability to use that EUI-64 method that we just discussed. So we are still manually assigning a portion of that address, but we are allowing the interface portion to be automatically figured out utilizing the Media Access Control, or MAC, address with the stuff we jammed in the middle there. We also have something that is known as stateless autoconfiguration. This is an automatic configuration whereby we discover, we discover what address we could utilize by communicating with our router and then automatically creating an IP version 6 address based on what we learned from our router. We'll see that later. And then, our stateful autoconfiguration. We said that DHCP was stateful. So whenever you hear the term stateful autoconfiguration with IP version 6, you want to think of DHCP Version 6. For IP version 6 will be handing out IP version 6 addresses, utilizing a DHCP server.
Basic IPv6 connectivity
With IP version 4, do we have to turn on IP version 4 before we do anything else on our devices?
Let's think about that. We can go to an interface, we can give it an IP address and not really do anything before that. That is because, the protocol suite is enabled. We could, in fact, disable the protocol suite, maybe we'll be doing this in 15 years. We'll be typing in the no IP routing command. No IP routing would turn off Internet Protocol version 4, or IPv4, but Internet Protocol version 6, or IPv6, is a new thing out and as a result it is still not enabled by default. And it's a good thing that it isn't, okay. But if we want to do anything with IPv6, you better do the first command here.
IPv6 unicast routing and, viola, lots of stuff is available to us now that wasn't before, IPv6 unicast, routing protocols, the ability to assign, interfaces with v6 address, and that's how we would. That would be the next step. We'd go to an interface, we'd say IPv6 address.
router(config-if)#ipv6 address ipv6-address/ipv6-length [eui-64]
So this is a little different. Our v4 command is IP address, now it's IPv6 address and then we put in, probably a shortened address. I say, probably, because you could put in leading zeros and the syntax takes it. But you put in the shortened address that you want to provide and you have a choice here and this is a tricky choice. Do you or do you not want to use EUI-64? If you do choose to use EUI-64 then you better only specify the first 64 bits. This is a mistake that I made, personally. I'm like, I want to use EUI-64, but I specified the entirety of the 128-bit address. That does not work, okay. So put in 64 bits, then your prefix notation mask, that's all we use here, only kind of mask we use. And we would want to say /64 and then if you wanted to use EUI-64 and you only specified 64 bits, you say EUI-64 and then we validate this. We can look at the running configuration, but you could also look at interface output, show IPv6 interface.
R4#show ipv6 interface ethernet 0/1Ethernet0/1 is up, line protocol is upIPv6 is enabled, link-local address is FE80::A8BB:CCFF:FE01:3A10Global unicast address(es):2001:DB8:C18:1:A8BB:CCFF:FE01:3A10, subnet is 2001:DB8:C18:1::/64 [EUI]Joined group address(es):FF02::1FF02::2FF02::1:FF01:3A10MTU is 1500 bytes
I in fact, liked show IPv6 interface brief. But in this case, we can see our address and we put in EUI-64. So what that means is we should be looking for a MAC address with FF:FE jammed in and we can see that. So what would this have done? We would've given a layer three address to the interface. This would be the first step in setting up a routing domain, set up a bunch of interfaces with IPv6 addresses. The second logical step would be to enable IPv6 routing. May be we will set up Open Shortest Path First, or OSPFv3 to advertise these subnets that we're assigning to interfaces.
IPv6 configuration example
Here is a great example of manually assigning IPv6, addresses to our branch and Headquarters, or HQ, routers. Notice those addresses, they have been truncated. The host portion of branch is 1, the host portion of HQ is 2, but those network identifiers, the first 64 bits are the exact same. So we're in the same subnet here with /64. But we can't forget about the all-important command that we mentioned. IPv6 is not turned on by default on the routers. What is the command to do that? We see it here, IPv6 unicast routing. Don't forget that or nothing else will happen in regards to IP version 6 for you.
ipv6 unicast-routing!interface GigabitEthernet0/1ipv6 address 2001:DB8:D1A5:C900::1/64
ipv6 unicast-routing!interface GigabitEthernet0/1ipv6 address 2001:DB8:D1A5:C900::2/64
Let's examine this output, show ipv6 interface GigabitEthernet 0/1. You see an up/up interface. We see our link-local address FE80 something, something, something.
Branch#show ipv6 interface GigabitEthernet 0/1
GigabitEthernet0/1 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::FE90:47FF:FEE5:2599
No Virtual link-local address(es):
Description: Link to HQ
Global unicast address(es):
2001:DB8:D1A5:C900::1, subnet is 2001:DB8:D1A5:C900::/64
And by the way, that something has FF:FE in it, so it's link local and using EUI-64 to self-assign. Great! Step down to where they want us to talk about. We see our global unicast address, 2001, you can see the shortening ::1, says our subnet ID and I want you to think that even though this is a very foreign protocol, we've learnt all this stuff just for a different protocol suite we talked about, subnet IDs, classless interdomain routing, or CIDR notation masks. So the beauty of networking is, very few things are truly unique. You learn about one thing that helps you learn another and then another and then another.
Let's say we want to validate and we would, because even though we see up/up interfaces, we see our IPv6 addresses, still the first time we do this, we're going to go, is this really right, is this going to work? We ping it and we go, wooh, really, I can't believe it, I can't believe it. It works, you get a response, and so the ping command naturally will take not only just an IPv4 address, but it will take an IPv6 address as well. You see responses, still uses Internet Control Message Protocol, or ICMP, echoes and we move on to addressing other interfaces and other challenges with the v6 deployment.
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:D1A5:C900::2, timeout is 2 seconds:
Success rate is 100 percent (5/%), round-trip min/avg/max = 0/0/4 ms
If that ping command looks strange to anybody, we feel your pain. We were there once. Using IP version 4 addresses for so long and then pinging with hexadecimal values, it definitely looks strange, but you'll get used to it over time.
Let's not forget about traceroute or telnet either. Traceroute, great verification command, for determining the router hops, that a packet is taking from source to destination, same command for IP version 6, traceroute, you're just specifying the IP version 6 address. And then telnet, we can telnet using the same command, specifying the IP version 6 address, no difference there at all.