IPv6 has been 'just around the corner' for many years now but hasn't really surfaced so far. For LTE, Verizon currently plans to make IPv6 mandatory and IPv4 optional, which will probably mean in practice that the first thing most devices will do is to get an IPv4 address. One way or the other, however, IPv6 will show up one day and I've been wanting to have a look at it for many years now. So I decided to picked up "Migrating to IPv6" from Marc Blanchet to do a little crash course.
The book is quite massive and you could probably spend weeks absorbing all the details. For my purposes, however, getting the basics is just enough for now so I know how things work in general compared to IPv4. So I skimmed through the chapters relevant for me and here are the most important details which will be important to remember:
128 Bit Addresses
The first big thing that most people know about IPv6 is that the IP addresses are getting longer to fix the issue with v4 addresses slowly running out these days. While IPv4 had 32 bit addresses (e.g. 10.124.30.2), IPv6 uses 128 bit addresses and uses a different notation (e.g. 3ffe:20e3:4000:abcd:0102:9988:7766:0001) which looks quite different and complicated at first if you are accustomed to IPv4 addresses. Addresses starting with fe80are link local addresses, i.e. they are not routed beyond the local network borders. IP addresses starting with 2000 to 3fff are global unicast addresses that can be used to reach any server worldwide that is connected to the IPv6 Internet.
In IPv4 there's a subnet mask that defines which part of the IP address describes the network part and which part identifies the hosts in a network. This is necessary to have the flexibility to be able to address both small and large local networks despite the limited address range. In IPv6, things are much more static and simple, a luxury of the 128 bit address range. A local network always gets the lower 64 bits assigned to address hosts. Wow, that's twice as much as all of the current IPv4 32 bit address space. The upper 64 bits are used for routing. Out of those, 48 bits are used for global routing and 16 bits are used within ISPs to serve their clients. With 16 bits, each ISP can serve 65535 clients that can then each have 2^64 hosts. That should last for a while. What is known as a subnet mask in IPv4 becomes the network prefix in IPv6 which is (almost) always 64 bits as described above.
The downside of 128 bit addresses is that the IPv6 header is significantly longer than the original IPv4 header. IP header compression will therefore become very important in wireless networks to minimize the waste of bandwidth.
Many IPv4 header fields are not always used today and for IPv6 it was decided to move them into optional extension headers. If there's a need for them, they are appended, otherwise they are left off. ICMP for example (see below) is put into an extension header.
That's it for part 1. More in part 2 which is coming up soon.