A standard IPv4 address is 4 octets, this makes a 32-bit value. Each of the four sections is called an octet because it is an 8-bit chunk ("oct" is the numerical prefix for 8), 8-bit meaning 2^8, or 2 to the power of 8, or 2*2*2*2*2*2*2*2 = 256. This means that each of the four octets has 256 possible combinations, ranging on a decimal number line from 0-255. With 4 8-bit values multiplied together, we have 256*256*256*256 possible combinations for IPv4 addresses, which is a total of 4,294,967,296.
This number may seem huge, but it is not nearly enough. How many devices do you use the internet for? Cell phone, gaming PC, work computer, tablet, Nintendo Switch, etc. If we assume that the average person has multiple devices, and there are 8 billion people alive today, that means we already don't have nearly enough IPv4 addresses to support all the world's devices. Currently we get around this with a clever loophole called NAT, or Network Address Translation. However, Network Engineers also came up with an arguably better method: instead of IPv4, why not IPv6?
What is IPv6?
IPv4 uses binary to create it's 4 octets, giving it that 32-bit value of about 4 billion possible addresses. IPv6 however uses hexadecimal (because of that, IPv6 uses what is called hextets, not octets). With standard decimal, we have 10 numerical characters before it loops. With hexadecimal, we have 16. 0,1,2...8,9,a,b,c,d,e,f,10,11,12...19,1a,1b,1c,1d,1e,1f,20,21....
The hexadecimal value of ffff is equivalent to 65,535. Compare that to the tiny octect of 256 in an IPv4, and we can already see where this is going. What makes this even better is that IPv6 uses 8 hextets, not just 4. This means our total number of possible IPv6 addresses is (16*16*16*16) ^8 ⋍ 3.4×10^38. To illustrate this number, there are about 10^19 grains of sand on Earth. If you imagine that every single grain of sand on Earth represents an entire planet with the same number of grains of sand as are on Earth, the total number of grains of sand of all of those combined would still only be about 1/4 the number of available IPv6 addresses. In other words, we will not run out for a very, very long time.
An IPv4 address looks like this:
192.168.1.4
And an IPv6 address looks like this:
FE80::2AB:48FF:FE23:DFE0
IPv6 addresses are so long that we use IPv6 Notation to shorten them.
IPv6 Notation
There are two main rules to consider with IPv6 notation.
First, leading 0s can be discarded. If you have a hextet that looks like 002F, you can write it as 2F, and the 00 at the start is assumed. This only works for leading 0s, not trailing. The reason for that is if you wrote "2F", we wouldn't know if it meant "002F", "02F0", or "2F00". Hence, only leading (0s at the start) can be eliminated.
Now we know that the hextet "2AB" actually represents "02AB".
The second rule is that any hextets that are strings of 0s can be represented by "::". In the example above, we have the address FE80::02AB:48FF:FE23:DFE0. We can see 5 hextets, but we know there are supposed to be a total of 8. That means that the "::" after the "FE80" must contain 3 hextets of 0s. If we write it out fully, it looks like FE80:0000:0000:0000:02AB:48FF:FE23:DFE0.
Something to keep in mind though is that if there are multiple strings of 0s that are separated, you can only notate one of them with "::". The reasoning for this is if we shorten multiple strings, we don't know how long they are. For example: FE80::48FF::DFE0
This could mean either FE80:0000:0000:0000:0000:48FF:0000:DFE0 OR FE80:0000:0000:0000:48FF:0000:0000:DFE0 OR FE80:0000:0000:48FF:0000:0000:0000:DFE0 OR FE80:0000:48FF:0000:0000:0000:0000:DFE0
To solve this, we only shorten whichever string of 0s is longer. If they are both the same length, shorten the first one. For the second string of 0s, it would be notated with :0:
So FE80:0000:0000:0000:48FF:0000:0000:DFE0 would be notated as FE80::48FF:0:0:DFE0
Parts of an IPv6 Address
Just like IPv4, an IPv6 address has a Network section and a Host section.
There are many types of IPv6 addresses, the first hextet determines the type of address. The 3 main catagories are:
- Unicast - Used for one-to-one communication
- Multicast - Used for one-to-many communication
- Anycast - These are applied to a group of hosts or devices using the same unicast IP address.
Unicast can be sub-divided into two further catagories:
- Link-Local Unicast - Non-routable, much like an IPv4 private IP.
- Link-Local addresses will always start with FE80
- Global Unicast - Public-facing, basically the routable public IP
- Global Unicast addresses will always start with 001
Prefix Length
Sometimes an IPv6 address will have something like "/56" or "/64" at the end of it. This is basically the equivalent of a subnet mask for IPv4. If you recall, IPv4 has a class A, class B, anc class C subnet mask. A class C subnet mask is represented with 255.255.255.0. This means that the first 3 octets (24 bits) must match, and the last octet (8 bits) can be anything within the acceptable range. This means that an IP address with a class C subnet mask can also be seen as 192.168.1.4 /24. So if an IPv6 address has /56 at the end, that means it has 56 bits for the subnet mask, and the remaining 72 bits for everything else.
Why does Sonic use /56?
A /56 prefix provides 256 /64 subnets to a customer, which is typically more than enough for most households or small businesses. This large number of subnets allows customers to create separate networks for different purposes, such as one for personal devices and another for work devices. Additionally, it provides room for growth in case the customer needs more subnets in the future.
Overall, using a /56 prefix allows ISPs to efficiently allocate IPv6 addresses to their customers while also providing them with the flexibility to create and manage their own networks.
When a /56 prefix is divided into 256 /64 subnets, each one has its own unique network prefix. This means that a customer who is assigned a /56 prefix by their ISP can create up to 256 separate networks, each with its own subnet and its own unique range of IPv6 addresses. This provides a great deal of flexibility for managing devices and networks within a single customer location.
How does Sonic offer IPv6?
IA_NA / IA_PD. IA_NA gets a v6 on the RG WAN interface. PD (Prefix Delegation) gets subnets (the /56) to the router so it can dole out assignments for networks.
DHCPv6 IA_NA is a type of message used in the Dynamic Host Configuration Protocol for IPv6 (DHCPv6) to request or assign an IPv6 address to a network interface. IA_NA stands for "Identity Association for Non-temporary Addresses" and refers to a unique identifier assigned to a device that is requesting or has been assigned a non-temporary (i.e., long-term) IPv6 address.
When a device joins an IPv6 network, it may use DHCPv6 IA_NA messages to request an IPv6 address assignment from a DHCPv6 server on the network. The DHCPv6 server can then assign a unique IPv6 address to the requesting device based on the IA_NA identifier included in the message.
DHCPv6 IA_NA can also be used by a device to renew or release an existing IPv6 address assignment from a DHCPv6 server. This allows for efficient management of IPv6 address assignments in a network environment.
Using IPv6
In order to use IPv6, you need compatibility through all parts of the network connection:
- Website (most websites do not support IPv6, but some like Google do https://google.com/)
- ISP (Sonic provides IPv6 through 6RD using a tunnel)
- Router (Pace 5268AC both have IPv6 support; most residential routers do not)
- Operating System (most modern operating systems support IPv6 - outdated systems like Windows XP and some very MAC OS do not)
- Browser (most current browsers support IPv6)
The Pace 5268 supports IPv6 through our IPv6 Tunnel in Member Tools Labs. Eero supports native IPv6, but does not support IPv6 tunnels.
0 comments
Please sign in to leave a comment.