We will explain what IPv6 is and the reason for its efficiency since the partial migration from IPv4 to IPv6.
On November 11, 2023, the monitoring that Google carries out on the use of IPv6 demonstrated that we were already with 44.43% IPv6 usage worldwide.
In other words, IPv6 is already being widely used and we will increasingly have IPv6 replacing IPv4.
IPv6 Trajectory
This increase in the use of IPv6 will increasingly require professionals who understand how IPv6 works, which consequently presents several differences from IPv4.
Another interesting point is that the shortage of IPv4 has produced a parallel market with people hoarding IPv4 addresses to create demand and then sell at a higher price.
This behavior of speculation in the value of IPv4 has led to greater interest among people in adopting IPv6.
With the increase in the use of IPv6 we can see a decrease in the value of IPv4.
The figure below shows a significant drop in the selling price of IPv4. Furthermore, we can see that although IPv4 is reducing its sales price, IPv6 is gaining more market share. This may suggest a hypothesis that interest in IPv4 is increasingly decreasing.
In the figure above we can see a reduction in the price of IPv4 since June 2022. The graph in the figure was created based on data collected on the website “auctions.ipv4.global”.
It is important to know that one of the driving reasons for the creation of IPv6 was the scarcity of IPv4. And as time went by, the problem of IPv4 shortages became worse.
It is worth mentioning that the problem of IPv4 shortages already existed in the 90s. At that time we had an IPv4 shortage which can be reflected in the table below.
IPv4 Allocation | |
Class A | 100% allocated |
Class B | 62 % allocated |
Class C | 37% allocated |
When did IPv6 start?
By the end of the 1980s, the Internet Engineering Task Force (IETF) I was looking at the future of the internet and thinking about the growing shortage of IPv4.
So they get together and start brainstorming solutions to extend the life of IPv4 and create its successor. After that, they created collective actions during the 1990s, with numerous discussions and guidelines in the IETF to face the challenge of scarcity.
In 1998, a standard emerged from the IETF draft that was under analysis for a long time and after that we began to get a glimpse of the fundamental IPv6 protocols. And then bingo, at that time the seed of IPv6 was created and would begin to blossom in mid-1999.
This is because in 1999 Internet Assigned Numbers Authority (IANA) makes a big move in this game and begins the first allocations of IPv6 address blocks to entities like ARIN and other Regional Internet Registries (RIRs).
Soon after, ARIN begins to allocate IPv6 addresses.
Consequently ARIN becomes a steady force in the IPv6 landscape as exhaustion of the IPv4 address pool approaches.
For those who are interested, the ARIN website presents the main statistics on the allocation of IPv4 and IPv6 during the evolution of the Internet.
What does IPv6 look like?
To understand IPv6 we must analyze its header and see the main differences that exist with its precursor IPv4.
It is worth highlighting that the IPv6 header already offers an evolution when compared to IPv4. This is because the IPv6 header has 7 fields and IPv4 has 13.
We must remember that the simpler the header, the lower the processing delay in intermediate equipment such as routers.
So come on, let’s start describing the header fields and explain to them.
128 bits | ||||
Version | Differentiated Services | Flow Label | ||
Payload Length | Prox. Header | Hop Limit | ||
Source Addresses | ||||
Destination Address |
Field IPv6 Version (4 bits)
This field indicates the IP protocol version. In this case, if it is IPv4 it will have the value 4 and if it is IPv6 it will have the value 6.
There is criticism about the use of this field since the link layer already informs the type of protocol that is being encapsulated in the frame data field. In this case, the Ethernet Type field would already be informing whether it is carrying IPv6 or IPv4.
Field IPv6 Differentiated Services
Used to separate packages based on class of service and consequently differentiate package delivery. It also uses the differentiated service model in quality of service like our beloved IPv4.
In this case, we could have a higher priority for packets containing Telnet or SSH data. Then, we would have these packets marked with a higher priority in our network compared to other packets on the network.
Consequently, in case of congestion, those marked with priority could be less likely to be delayed or discarded.
Field IPv6 Flow Label
A flow is defined as a sequence of packets sent from a specific source to a specific destination (which can be unicast or multicast). In this case, when we use the flow label, we want to ensure special treatment by the routers between the source and destination.
This priority in the packet flow can be interesting when we have a specific bandwidth need for an application that is running on the source host and the destination host.
This way, we could have a flow of packets with specific requirements being treated differently when compared to other packets that are transmitted between that origin and destination.
According to this IBM document, the uses and controls involving flow labels have not yet been defined or standardized and are still in an experimental phase.
Field IPv6 Payload Length:
Indicates the size of the data being loaded into the packet. Remember that the payload does not include the packet header.
Field Next IPv6 Header:
Similar to the Protocol field in IPv4, it will indicate the protocol being loaded within IPv6, such as: TCP, UDP and others.
The next header field can use header extension and consequently use additional information that will be used in the packet.
Examples of extension headers are, for example, containing information about the partial list of routers through which the packet will pass, verification of the sender’s identity, information about encryption and others.
IPv6 Hop Limit Field:
This 8-bit field is used in the same way as the IPv4 TTL. This way, routers decrement the hop limit field by 1 every time they forward a packet.
When it reaches 0 the packet is destroyed and an ICMPv6 “Time Exceeded” response is sent
Addressing in IPv6:
128-bit or 16-byte addresses were created. These IPv6 are represented with 8 groups of 4 hexadecimal digits separated by “:”.
We can see below an example of IPv6 used for a local network (Link-local Unicast).
fe80::99d:554d:d28e:e84d
It is already expected that in IPv6 there are many zeros in each group belonging to the addressing. Therefore, there are some ways to simplify the address.
- The first is not to show the 0s on the left. This way a group that has “:099d:” could be written as “:99d:”.
- The second way is to replace groups that contain only zeros with a pair of “:”. This way, a complete IP could be simplified as in the example below.
fe80::99d:554d:d28e:e84d
How does the extension header work in IPv6?
To maintain compatibility with fields that existed in IPv4, extension headers were added to IPv6. Let’s go s show 6 fields here and as a rule for IPv6 we have that if a packet has more than 1 extension header field, this field must come right after the IPv6 header.
Fixed header fields can have fixed or variable sizes and are generally organized as follows: First we have the Type, followed by the Size and finally we have the Value.
Type | Size | Value |
Type – It has 1 byte and the first two bits inform the router that if they do not know how to process the information they should: discard the packet, ignore the option or send an ICMPv6.
Size – It has 1 byte and indicates the size used by the Value field.
Value – Can vary from 0 to 255 bytes.
Below we will talk about the values of headers.
Hop-by-hop, presents values that will be seen by all intermediate routers. It has compatibility with datagrams larger than 64KB.
In this way, it allows intermediate routers to handle jumbo packets that are interesting for transferring a large volume of data over high-speed links.
Destination Options, used for information that will only be processed on the destination host. According to Tanembaum, this field is still used experimentally.
Routing, indicates which routers should be visited in the order described. An interesting point is that the field indicates which routers should be visited, but does not prevent additional routers from being visited along the way.
As the packet passes through the routers indicated in the list, the field that counts the number of routers that still need to visit is decremented.
This way, when the field indicating the number of missing routers reaches 0, the packet is free to be routed along any path without using a specific route.
Fragmentation, this field contains the fragment number and indicates whether there are more fragments. However, there is a big difference when compared to IPv4 fragmentation.
This is because IPv6 routers do not perform fragmentation. In this way, the router sends an ICMPv6 message to the source when the router identifies that a packet is larger than the MTU of the link it intends to forward.
The ICMPv6 message that the router sent to the source informs the MTU size of the smallest link.
The source, after receiving ICMPv6 informing the smallest MTU size of the link, will fragment its packets in order to fit on the link that the router informed.
This change of passing the fragmentation work to the origin is a major advance in optimizing routing in IPV6. This is because, in addition to the computational cost of fragmenting packets in routers, this work also caused delays in forwarding packets.
Authentication, this field has the function of ensuring that a receiver knows, based on authentication, who the sender of the packet was.
Payload Encryption, the field allows the data in a packet to be encrypted and consequently increasing security against data interception attacks.
Is there NAT in IPv6?
It is worth mentioning that even with the use of IPv6, NAT is still used as it allows greater isolation of internal networks.Consequently, by using NAT, we can prevent machines on an internal network that have ports associated with services from being exposed directly to the Internet.
Is IPv6 compatible with IPv4?
IPv6 is not compatible with IPv4. To solve the problem of compatibility between IPv6 and IPv4 we use tunneling and translation techniques. However, IPv6 is directly compatible with protocols widely used on the Internet, such as: TCP, UDP, OSPF, BGP and DNS.
IPv6 has no checksum.
One of the changes introduced in IPv6 was the removal of the checksum field. The checksum field in IPv4 caused a large consumption of resources on intermediate routers.
This is because, at each hop, the checksum should be recalculated. Furthermore, the creators of IPv6 argued that if someone wanted to have error control like checksum, they should do it at the transport layer. This is because the transport layer protocols (TCP and UDP) already have checksum fields that can be used.
Why did the checksum field need to be recalculated at each hop on the routers?
This happened because at each hop, routers have to decrement the TTL field and consequently this changes the IP header values. Once the IP header values have been changed, we have to recalculate a new checksum so that our checksum is compatible with the calculation of the new IP header.
What is the hop limit, TTL, for IPv6?
Another point that generated confusion in the creation of IPv6 was the size of the TTL field. This is because an 8-bit field provides 255 jumps. Therefore, some scientists argued that a field with 255 hops may be small for a network that tends to be gigantic and encompass IoT with the use of IPv6 for each device connected to the Internet.
The argument that 255 hops is not enough was refuted by IPv6 developers using the argument that even by increasing networks we should not have many hops between a source and destination as this would affect performance.
Furthermore, IPv6 developers argued that a TTL of 255 is a natural brake on packets that have looped around the Internet and are destroyed when the TTL reaches 0.
Consequently, if we increased the TTL field too much, we would have to deal with packets lost in loops lasting longer and consuming more resources.
What is the maximum IPv6 packet size?
The maximum IPv6 packet size has been designated to be 64KB. However, we can use the Hop-by-Hop field to allow us to increase the packet size and create jumboframes.
Is it worth using encryption in IPv6?
This is a point that generates discussion among experts and its use will depend on the need. Some experts argue that the use of encryption in IPv6 makes life easier for programmers who do not need to worry about the security of their applications’ data.
On the other hand, some experts argue that security should be implemented at higher layers and consequently have more flexibility in the use of encryption algorithms and key sizes.
See more:
HTTP Protocol – How Does It Work?
https://www.arin.net/reference/research /statistics/
Juliana Mascarenhas
Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer
Build Your Own DNS Server: A Step-by-Step Guide using BIND9
In this step-by-step guide, we’ll walk you through the entire process of setting up and…
Tutorial for SSH Public Key Authentication
In this tutorial, we will teach you how to create and configure access to an…
Socket UDP Python Chat
Tutorial for creating a simple chat using UDP sockets in Python 3. The goal is…
Socket TCP Python make a chat
Tutorial for creating a simple chat using TCP sockets in Python 3. The goal is…
apt get behind proxy
Over time, I have often come across the need to configure apt get to work…
Best IDE for Python?
Finding the perfect IDE is a personal journey that depends on various factors such as…