What Is IPv6?

IPv6 - is a new (sixth) version of the Internet Protocol, which is going to replace the current fourth version IPv4. Currently IPv6 is being gradually deployed into the work. Many devices and Internet hosts already support IPv6 protocol. For example, our web-site is also available to users who are connected to the Internet using IPv6. Many of our tools are compatible and support this protocol. For example, on our site you can ping or trace IPv6 hosts.

IPv6 addresses

IPv6 addresses are 128 bits long, which gives a total of 2128 ≈ 3.4 × 1038 possible addresses in the address space. This is ≈79 septillions times greater than all the address space defined by IPv4 protocol. If we compare this figure with the number of visible stars in our Universe (which is estimated at about 1024 stars), then to each star can be granted roughly a little more than 340 trillion addresses. It is so large that we can talk that IPv6 once and forever solve the problem of Internet addresses exhausting. In other words, the IPv6 address space is theoretically as big that it is able to meet the needs of IP-addresses for the whole Universe.

In fact, by the rules of allocation of IPv6 addresses it was decided to give to the end user whole subnet address with the prefix 64 bits long. Which in practice means that each of the world's population will be given a huge number of addresses that will connect a myriad of different devices, each of which will be seen to the Internet with their "white" and fair IP-address, and, of course them could be addressed in the network directly! All this in theory will greatly simplify routing and network infrastructure.

Address representation in IPv6

IPv6 addresses in the standard form agreed to write to the eight blocks of four hexadecimal numbers from 0x0000 to 0xFFFF, separated by a colon. For example:

2001:0db8:0000:0000:0000:0000:0000:1

Leading zeros groups can be omitted:

2001:db8:0:0:0:0:0:1

Moreover, if the groups contain only zeros, they can be simplified and replaced by a double colon, thus it can be made ​​in only one place (to avoid any ambiguity). For example, the above address may be reduced to the form:

2001:db8::1

If there are several groups of zeros, for example:

2001:0:0:aa:0:0:0:1

Than the longest group should be compressed:

2001:0:0:aa::1

If the zero groups are equal:

2001:db8:0:0:aa:0:0:1

Than the most left should be compressed:

2001:db8::aa:0:0:1

For example, the address of the local 0000:0000:0000:0000:0000:0000:0000:0001 in IPv6 representation can be written as ::1, and the address of the current network (known as unspecified address) 0000:0000:0000:0000:0000:0000:0000:0000 can be shortened to :: respectively.

Also, when recording IPv6 addresses it is preferred to use lower-case letters in hexadecimal numbers. So it's preferable to write:

2001:db8:dead::beef

Than:

2001:DB8:DEAD::BEEF

Structure of IPv6 addresses. Global and Individual Addresses

IPv6 address 128 bits length:

-------------------------------------------------------
| Prefix Provider | Network |         Interface ID    |
|     48 bits     | 16 bits |            64 bits      |
-------------------------------------------------------
|     Subnet prefix         |
-----------------------------
|  Global prefix  |
-------------------

Methods for allocation of IPv6 addresses from the global address space are determined precisely the address structure. The first 48 bits of the address represent global prefix and these blocks are usually allocated to providers and various organizations. Those, in turn, are able to use the next 16 bits of address for the organization of their subnets. The remaining 64 bits are the interface ID of the user's device. As we can see, in theory, it allows you to connect to the same subnet 264 ≈ 1.8 × 10 19 different devices. That although seems redundant, but it is done so in order to simplify the auto-configuration of the connection for these devices.

Addressing In IPv6

In IPv6, has identified several types of addresses that define the addressing of packets:

  • Unicast. This is the usual unary address. Such addresses are tied to a single network interface, and it is always well known who gets the packet sent to this address.

  • Anycast. This address is essentially a group of network interfaces. When you send a packet to this address, it will be received by an interface closest according to the routing table from the group of interfaces associated with this address. Such addresses can be assigned only to routers. With the help of anycast addresses it is possible to organize the group of computers which externally looks like a single host. As added value it gives an ability to redistribute the load between them, by sending packets to the closest. For example, such scheme could be useful for organization of the DNS Root servers or other similar distributed systems. Nevertheless, at the moment this implementation of the addressing scheme can be somewhat problematic in a real deployment, as it is not a complete description.

  • Multicast. These addresses allow you to organize multicast data transmission. Packets sent to this address will reach all the network interfaces belonging to that address. FOr example, could be used as implementation of IP-TV and radio.

IPv6 over IPv4

There is a transition mechanism to transmit IPv6 packets over existing IPv4 networks. This mechanism is necessary in order to allow some hosts to connect to the IPv6 network, if the provider is not currently able to allocate real IPv6 addresses to that hosts (websites or users).

Special Addresses

According to the standard RFC-6890, the following special IPv6 addresses and subnets are reserved for different needs:

Network (or address) Description Reserved by
protocol
RFC
::/128 Unspecified Address Yes RFC-4291
::1/128 Loopback Address Yes RFC-4291
64:ff9b::/96 IPv4-IPv6 Translation No RFC-6052
::ffff:0:0/96 IPv4-mapped Address Yes RFC-4291
100::/64 Discard-Only Address Block No RFC-6666
2001::/23 IETF Protocol Assignments No RFC-2928
2001::/32 TEREDO No RFC-4380
2001:2::/48 Benchmarking No RFC-5180
2001:db8::/32 Documentation No RFC-3849
2001:10::/28 ORCHID No RFC-4843
2002::/16 6to4 No RFC-3056
fc00::/7 Unique-Local No RFC-4193
fe80::/10 Linked-Scoped Unicast Yes RFC-4291

Main Changes In Comparison To IPv4

  • Significantly increased address space.

  • Simplified routing (no packets breakdown, there is no checksum in the structure of the packets)

  • Despite the fact that the address length is increased 4 times (from 32 to 128 bits), the total elongation of the packet header only increased 2 times - from 20 to 40 bytes.

  • In high-speed networks, there is support for very large packages - jumbograms, up to 4 gigabytes length.

  • Flow labels and traffic classes are introduced, which makes it possible to effectively control the priority of data transmission.

  • Introduced multicast addresses, which, in theory, should give the opportunity to simplify, for example, broadcasting (TV and radio) on IP-networks.

If you want to learn a bit more about the differences of IPv4 and IPv6 addresses, you can read our brief comparison table.

See also: