Just like IP version 4, IP version 6 has different address types. But before we dive in to a discussion on what IP version 6 has to offer, I want you to see what it doesn't offer. Think about it. Compare what you know from IP version 4 to what you see here with IP version 6 in regards to address types.
- Address is for a single interface
- IPv6 has several types (for example, gloval, reserved, and link-local)
- Enables more efficient use of the network
- Uses a larger address range
- One-to-nearest (allocated from unicast address space)
- Multiple devices share the same address
- All anycast nodes should provide uniform service
- Source devices send packets to anycast address
- Routers decide on closest device to reach that destination
- Suitable for load balancing and content delivery services
Anything missing? Yeah. You should be seeing broadcast right now. IP version 6, no broadcast address type whatsoever. So you might be saying, wooh, okay, we've eliminated broadcast then what happens to all that traffic that relies on broadcast with IP version 4? How does that exist in an IP version 6 environment? Majority of it uses multicast now. Much more efficient use of our network resources by using multicast for the majority of tasks that originally required broadcast with IP version 4. So, let's dive in here deeper now and let's discuss what we have in regards to address type for IP version 6. Some of these you will be very familiar with, but some of these may be a little awkward to us.
Unicast is one to one, nothing new there. Any network suite would have that. Multicast was built in to IPv4 retroactively by a guy named Steve Deering and he was crippled by his boss, who won't be named, and that along with the fact that it was very new conceptually means that multicast is funky in IPv4. It's extraordinarily challenging to work with, at least for me. I'm great with routing. Multicast routing, I can do it, but it is a battle. It is just a battle. It's going to be less of a battle in IPv6 because it's inborn in the protocol natively. Multicast is tremendously powerful. Send out a video stream to the subscribers. How great would it be if we could have that for television? Tune to channel five, you join the multicast group for channel five that tells your Internet service provider to start feeding you down the video stream for channel five so you can watch whatever you like to watch. Fantastic! Does your neighbor get it? Not unless they subscribe too to. That's the idea behind it. Then we have something that is definitely new in terms of talking about it. It really was there. It was just not something anybody talked about. There is this concept called anycast and at this point it's like, really, how many more cast do we have, are we going to talk about podcast, but what's an anycast?
An anycast, address type, well, first of all, it's not some type of special address that's reserved, it's not. Let's get that out of the way. There can be any unicast address. It's how it's is utilized that makes it special. With anycast, we are communicating on a one to nearest type of scenario. When might that be useful? Well we offer let's say a service, a Network Transfer Protocol, or NTP, service in our organization and we have routers set up as NTP servers, but we want to make sure that those devices that are contacted at NTP server contact the closest NTP server to them, one to nearest. So instead of our device going out on the network, sending out its packet and some device over yonder responds, no, the nearest device responds that's offering that particular service. So we'll be sending our packets to that anycast address, but then our routers along the way, along that path are going to find that closest device based on that address and makes sure that our traffic gets routed towards that nearest device so we can get the quickest, most efficient service possible for whatever we are trying to reach.
IPv6 unicast addresses
The shortage of IPv4 addresses is handled by the Internet Assigned Numbers Authority, the IANA. They also manage IPv6 addresses and the first that were handed out, started getting handed out in the year 2001 and that sheds some light on why our first four hexadecimal characters for the first block of global IPv6 addresses starts with 2001 and those go to registries, and when we say registry, there are very few of these. They are kind of continental wide and they are responsible for disseminating prefixes to Internet Service Providers, or ISPs.
Now when we say, a prefix, what we mean by that is a portion of the IPv6 spaces specified and then you get to work with whatever is to the right of it. Very much like borrowing bits when you are subnetting. So if you get something like a /32, you get to borrow a large number of bits and how many bits you borrow, well you should borrow up to the /64, so you shouldn't subnet beyond that, at least that's the convention, it can't be broken. So ISPs, we're talking about major ISPs, not the individual ISPs that might spawn in a day and provide wireless access for a small area. We're talking about the big players. Then organizations. They need to connect up to the 6 bone. There are a lot of these bones. There is the IPv6 backbone. There is the 6bone. The IPv6 backbone. There is the Mbone, which is the multicast backbone. But if you want to play with global IP addresses, you need global IP addresses and you'd get a site prefix. Now that site prefix is what you'd have for a branch office or a headquarters. So it's a really big address base, so it can handle it for that site. If you had multiple sites, well they'd get different site prefixes. At least that's how it should be because we have a lot of these to handout and it makes it easier to work on the IPv6 internet if they're handed out and been mindful of the geographic location of that. But the key for us is we are going to get a /48 and we're going to borrow 16 bits, so we chop this address right in half. We're taking our cleaver and we're chopping it in half. We're borrowing 16 bits to get us there. We are assigned 48, we get 65,536 subnets, 2 to the power of 16. Every time we get a site prefix that's how many we get. Boom! That's a lot. One large organization and even the largest organization right now isn't running that many, so this should be enough. Great! And then everything to the right uniquely identifies my interface. It is equivalent to the host portion and I still call it the host portion. But the technical name for it is the interface ID, interface ID. So left-hand side is my network portion, right-hand side is my host portion. That's how to think about it.
So, that is the host portion, that interface ID, 2 to the power of 64. All right, that's a lot of hosts we can have in each of those subnets we've created. So if you're still sceptical about IP version 6 and the possibility of running out of IP version 6 addresses, I think we've just shown you, there's a lot, there's a lot and you'll have a lot as well for your own organization.
If we're too theoretical to, you know, thinking this is the future, well this is the right now. This is the important stuff, if you're starting to try to get some certifications under your belt. You need to recognize loopback IP address, that's ::1, so that's the same as pinging 127.0.0.1. So if you want to talk to yourself ::1. Looks weird, doesn't it. That is 31 zeros and then a 1. Your routing table for default route would be ::0, ::/0, that would be the default route. There is also something called a link local and this is key. This is really important. Link local is a kind of a private IP address, but it's not the same kind of private IP address like we think it is. Think about the 10 or 172.16 192.168, yeah, those are private, but they are not link local. They are routable. They are not routable on the internet, but they are routable. That's fundamentally different than these link-local addresses, which start with FE80. That is a self-assigned value that you automatically get when you have working interface for IPv6. Up/up you have a link local and link local is about communicating with things on your local subnet. In fact, link is equivalent to subnet in this case. It's a subnet local address. So if I'm communicating remotely I'm not going to use link local, but if I'm forming an Open Shortest Path First, or OSPFv3 neighborship, I will, because I don't need to communicate past a router, I need to communicate with other OSPF speakers on my link, on my subnet. You need to be able to pick these out of a lineup. So if we start with 2000, 2001, global IP, FE80, link local, ::1, loopback, key values you should remember.
EUI-64 Address Format
I'm thinking right now about the size of that interface, that host portion of our IP version 6 address. It's large. It's large, 2 to the power of 64. How do we come up with the addresses that we'll use for the interface portion, that host portion of this IP version 6 address? Well we could sit down and have a spreadsheet and figure out all the different possible values we could have and assign them that way, but we could also allow our devices to automatically provide themselves with this interface identifier. This is known as EUI-64. It utilizes something that is already unique on our devices. Let's think about what might be unique that nobody else would have. I'm specifically thinking about layer two here, layer two. We have Media Access Control, or MAC addresses, burned in MAC addresses that are unique. Nobody should have the same one that I have. Imagine what EUI-64 does. It will take our MAC address and use that as the interface identifier. Well wait a second. I'm seeing a dilemma here and other people must be seeing the same dilemma as well. How big is a Mac address?
Well it's 48 bits.
How big is that interface portion?
I'm short. I'm short of 16 bits here. So how does EUI-64 modify our MAC address then to make this work?
We jam some stuff in the middle and call it a day. That's really what happens. Okay. What we do is we jam in FF:FE right after the 24th bit of the MAC address.
After the 24th bit, before the 25th bit, so we take the 48-bit MAC address and go little bit in the middle and then we say FF:FE in between those two 24-bit portions and that helps us use the MAC address, but fully populate the interface portion of the IPv6 address and this is a really great feature. This is used a lot and the idea is, let's not get caught up in uniquely identifying ourselves, let the system do that for us. Let's just make sure we're plugged into the right subnet and we got that right and then let's validate that this is unique because there is some validation that occurs when you're trying to self-assign using this EUI-64, so we don't just jam it in there. We think we're unique if we use the MAC address, but it is not even that confident. It is going to test and that is useful because if you misconfigure some virtual servers you might clone them, you might keep the same MAC address and that probably is the place where we're going to be assisted by the validation and test that these are truly unique MAC addresses.