ICND1 100-105

ICND1 100-105

The IPv6 Address

If you're not aware of this, then you've been living under a rock. We are running out of IP version 4 addresses, they're exhausted. We have done everything possible to extend its life and save it. Everything from classless interdomain routing, or CIDR, and Network Address Translation, or NAT, and subnetting subnets and all that really fun stuff that we've discussed up to this point in our course. But there is just nothing else we can do and at this point in time, we will embrace IP version 6.

Issues with IPv4 addressing workarounds

One of things that helped us so much in IP version 4 is almost completely gone in IPv6 and that is Network Address Translation. You may not have been around for the beginnings of proxy servers and NAT, but let me share with you the nightmare that caused for admins with all of the different applications breaking and eventually, the world got used to working through NAT and the technology has caught up with it. But we're trying to get away from this idea of private and public networks. Instead, we look for global IP addresses, which are equivalent really to public IP addresses and the only local addresses that we have are self-assigned addresses. At least, these are the ones we like to consider private, these local addresses. And so we're moving to much more global network where everybody who connects up to it, is uniquely identifiable and the global network and NAT is extracted here so that we have end-to-end reachability without some intermediary reworking IP addresses on the fly.

What is IPv6? Features

All right, so first and foremost with IP version 6 - we have many, many more addresses. How many? Too many to count, way too many to count. But let's put it in perspective, an IP version 4 was how many bits? Just 32 bits. IP version 6 addresses are 128 bits. That's a significant increase in size.

It's a quadrupling of the bit size, but it grows by 2 to the 96th power, beyond what IPv4 brings to the table. They are 96 bits apart, 2 to the 96, that's a big number, right? And that larger address base affords us a reason to move to this. That scalability. But we don't want to move over to this technology merely because we want a larger address base. That might be the driving factor, but we want some other benefits along with it. It is very flexible. It allows for route summation. It allows us to connect up to networks and have IP addresses in multiple networks. It allows us to be more plug-and-play, self-assigned addresses, renumber for switching service providers, and do that on the fly. Holly molly! A simpler header to make it easier for routers and the core of networks to be able to forward millions, billions, trillions of packets. Security is important. Internet Protocol Security, or IPsec is built into this. If you run IPv6 in some way, you must be capable of working with IPsec.

Transition. We said IPv4 is a thing of the past. Let's elaborate on that. Is it going away tomorrow? No. Is it going away in five years? No. Is it going away in 15 years? Probably not. So we're going to have a hodgepodge. Really it's the best way to think about it. You got the old stuff living with the new and we're going to have to make this work. That means we're going to lean on these transition richness strategies that allows to run both and make that work.

IPv6 addresses

At this point, are you able to pick an IP version address out of a lineup? If we provided you a list, would you know what is valid, what is not valid? That is an important skill to have when it comes to the real world as well as if you are preparing for a certification exam. Let's talk about our IP version 6 format. We already said it is 128 bits long, but we don't break it up in dotted decimal notation, no, not at all.

Examples:

  1. 2031:0000:130F:0000:0000:09C0:876A:130B
  2. FF01:0000:0000:0000:0000:0000:0000:0001
  3. 0000:0000:0000:0000:0000:0000:0000:0001
  4. 0000:0000:0000:0000:0000:0000:0000:0000

You see, our IP version 6 addresses utilize hexadecimals, so we have values from 0 through 9 and then A, B, C, D, E, and F that we can find. And we group together four hexadecimal values and then put a colon, and we will do this eight times. So we have eight fields that contain four hexadecimal digits. Let's think about that. How big is each of these fields? Well each hexadecimal value equates to 4 bits, so four time four would be 16 bits. So we have eight 16-bit fields for a total of 128 bits. Look at the example provided. That's a really long address, really long address. We had enough problems remembering 192.168.1.8. Try remembering these. It is much, much more difficult. But is this how they are always represented? No, they are not. There are mechanisms in place to shrink them down, truncate them, to make them more manageable, to make them easier to read and it is not just for us, our devices do this as well. So let's talk about some of these mechanisms here. The first one being to drop leading zeros, drop leading zeros.

Examples:

  1. 2031:0:130F:0:0:09C0:876A:130B
  2. FF01:0:0:0:0:0:0:1
  3. 0:0:0:0:0:0:0:1
  4. 0:0:0:0:0:0:0:0

Look inside one of those fields. Anytime a field starts with a 0, you can take that 0 off. If the next value within that field is a 0 as well, you can take that one off as well. You can remove the first three hexadecimal values in a field if they are zeros. You can't remove all four. You can't remove all four, we still have to have a value in there. But we can remove up to the first three leading zeros, so that truncates each of these fields now making it smaller. That's option number one, drop leading zeros. But, I also noticed here that we might have successive fields of zeros, might be two fields, three fields, four fields, but there is a whole bunch of zeros just taking up space, can we shrink that down as well?

We absolutely can. And this is one of those things where it's kind of elastic. It's like a little spring and you put it in and then it, boom, springs out and fills out a bunch of zeros. Here is the thing though. We don't want this address to be too wobbly. Two of these springs, it will get all messy. Here is why.

Examples:

  1. 2031:0000:130F:0000:0000:09C0:876A:130B
  2. FF01::0001
  3. ::0001
  4. ::

What people don't immediately realize sometimes when they see this at first, is that this rule, the double colon rule, gives us the means of inserting four zeros or substituting for four zeros bounded by colons, everything has to be bounded by colons, four zeros, eight, twelve, sixteen, twenty, all the way to thirty two zeros, the entirety in fact. So it is a variable spring. It will go, but if you were to put two of these springy double colons in, then you wouldn't know where that middle stuff is, what's in the middle. How far to the right, how far to the left is it? You wouldn't be able to tell. There'd be no mechanism and so, you must have a keen eye for this. What if I were to say, maybe an answer in a multiple choice question where they had two double colons in the same address, what should I do with that value?

Well that would be an invalid IP version 6 address. You would ignore that. It's not valid, so if your goal was to have us pick the correct IP version 6 addresses out of a lineup, anything with more than one double colon would be incorrect. I would immediately say, no, not an option.

So now, we have to think about how we melt the two rules together. Two rules for success. The IOS presents it to us in this form. When we enter it, we should be putting it in this form. Drop leading zeros, you can do that all over the place, but don't drop trailing zeros. You might think that some of these examples are a little bit funky. Well they're actually really good examples. Third example looks a little weird, doesn't it? Example three. Look at both rules applied to example three. It does not look like the loopback IP address, but that is what is it. Example three is the loopback IP address. So ping ::1, boom, pinged our loopback IP and then certainly we will be talking about routing. And the last entry would be the address portion of a default route. So we would have ::/0, ::/0. The :: representing all zeros IP address /0, a 0 mask. Wow! This all comes back full circle, doesn't it? But in any case, this is definitely one of the things that we would want you to take away from this discussion. It's definitely a threshold that you've got to cross.