IPv6

IPv6

IPv6 (Internet Protocol version 6) is the sixth version of IP (Internet Protocol), an Internet based network interconnection protocol, and was developed as an update to the protocol IPv4, designed to solve the problem of address exhaustion

Before IPv6, there was IPv5, which was called IPng (IP Next Generation), but it was not the successor of IPv4, as it was used as an experimental streaming oriented protocol that attempted to support voice, video, and audio

Defined in the RFC 2460, IPv6 uses 128 bit (16 byte) addresses, limited to 2^{128}\approx 3.4 \cdot 10^{38} unique addresses

It can also be represented as 16^{32}, with 32 hexadecimal digits, each of which can take 16 values

IPv6 addresses are defined in the RFC 2373 and RFC 2374, but was redefined in April 2003 in the RFC 3513

According to the publication RFC 5952, IPv6 addresses, 128 bits long

Where the hexadecimal value of each of the four digits follows the following format:
XXXX . XXXX . XXXX . XXXX . XXXX . XXXX . XXXX . XXXX, which is composed of values in the range 0000-FFFF

Valid address example: 2001:0db8:85a3:08d3:1319:8a2e:0370:7334

A group of four digits can be compressed if it is null (that is, it takes the value “0000”)

Valid address example: 2001:0db8:85a3:0000:1319:8a2e:0370:7344
Valid compressed address example: 2001:0db8:85a3::1319:8a2e:0370:7344

The addresses in the example are equivalent and for that reason, for efficiency reasons, it is recommended to use the compressed one

Following this rule, if more than two consecutive groups are null, they can also be compressed as “::”

Si la dirección tiene más de una serie de grupos nulos consecutivos la compresión solamente se permite en uno de ellos, para evitar la ambigüedad

Example of compression of a valid address with many consecutive nulls: 2001:0DB8:0000:0000:0000:0000:1428:57ab
Examples of valid compressed addresses:
2001:0DB8:0000:0000:0000::1428:57ab
2001:0DB8:0:0:0:0:1428:57ab
2001:0DB8:0::0:1428:57ab
2001:0DB8::1428:57ab

Leading zeros in a group can also be omitted

Valid address example: 2001:0DB8:02de::0e13
Valid compressed address example: 2001:DB8:2de::e13

When what you want is to identify a range of addresses by means of the first bits, this number of bits goes after the slash character “/”

Examples of valid addresses in bit range:
2001:0DB8::1428:57AB/96 sería equivalente a 2001:0DB8::
2001:0DB8::874B:2B34/96 would be equivalent to 2001:0DB8:: and of course also to 2001:0DB8::1428:57AB/96

IPv4 addresses compatible with IPv6

The addresses IPv4 IPv6 compatible addresses constitute a special class of IPv6 address

The first 96 bits are zeros, while the last 32 bits represent an address IPv4

IPv6 conversion methods no longer use addresses IPv4 compatibles

This type of addresses is used when we have an addressing table IPv4 fixed and we need to store addresses those addresses as IPv6

It should be noted that the undefined IPv6 address :: and the loopback IPv6 address ::1 are not really addresses IPv4 compatible, despite being included in the IPv6 address space ::/96

You can use a compatible IPv4 address (uses the format ::1.2.3.4) or a mapped IPv4 address (uses the format ::ffff:1.2.3.4)

Example of IPv4 to convert:
192.168.89.9
Example of compatible IPv4:
::c0a8:5909
Example of mapped IPv4:
::ffff:c0a8:5909

Reserved addresses

  • ::/128

    address with all zeros is used to indicate the absence of an address, it is used exclusively for the Internet, because it represents any network

  • ::1/128

    is reserved for testing, loopback

    The Routers or local machines can use this address to send packets back to themselves

    Therefore, it cannot be assigned to any network

  • ::1.2.3.4/96

    compatible IPv4 address is used as a transition mechanism in dual IPv4/IPv6 networks

    It is used very little

  • ::ffff:0:0/96

    mapped IPv4 address is used as transition mechanism on dual terminals

  • fe80::/10

    link local prefix specifies that the address is only valid on the local physical link

  • fec0::

    site-local prefix specifies that the address is only valid within a local network

    The RFC 3879 declared it obsolete, stating that future systems should not implement any support for this special address type

    Instead they should be replaced by Local IPv6 Unicast addresses

  • fc00::/7

    unique local address prefix

    Declared in the RFC 4193

    Used in place of site-local addresses

  • ff00::/8

    multicast prefix

    It is used for multicast addresses

It should be noted that there are no broadcast addresses in IPv6, although the functionality they provide can be emulated using the multicast address FF01::1/128, called "all nodes".

Transition mechanisms to IPv6

Faced with exhaustion of addresses IPv4, and the problems that this is already causing, especially in emerging Asian countries such as India or China, the change to IPv6 has already begun

There are a series of mechanisms that will allow coexistence and progressive migration of both networks and user equipment

In general, transition mechanisms can be classified into three groups:

Double stack

Dual stack refers to a “dual-stack IP level solution” (RFC 4213), which implements the stacks of both protocols, IPv4 and IPv6, in each node of the network

Each dual stack node on the network will have two network addresses, one IPv4 and one IPv6

In favor: easy to deploy and widely supported

In against: the network topology requires two routing tables and two routing processes

Each node in the network needs to have both stacks up to date

Tunnels

Tunnels allow you to connect to IPv6 networks by "jumping" over IPv4 networks

These tunnels work by encapsulating IPv6 packets into IPv4 packets, having protocol number 41 as the next IP layer, hence the name proto-41

In this way, IPv6 packets can be sent over an IPv4 infrastructure

There are many tunnel technologies available

The main difference is in the method that the encapsulating nodes use to determine the address at the exit of the tunnel

Translation

The translation is necessary when a node that only supports IPv4 tries to communicate with a node that only supports IPv6

The translation mechanisms can be divided into two groups based on whether the state information is saved or not: