Linux Networking/IPv6

Just when you thought you were beginning to understand IP networking the rules get changed! IPv6 is the shorthand notation for version 6 of the Internet Protocol. The main driver of the design of IPv6, was the IPv4 address exhaustion. Also the number of devices that require IP addressing has grown, especially mobile devices with the explosion of the "mobile Internet". It is expected that in future there will be much more connected devices (with new trends in home automation and connectivity in cars). IPv6 addresses are 16 bytes long (128 bits). IPv6 incorporates a number of other changes, mostly simplifications, that will make IPv6 networks more manageable than IPv4 networks.

Linux already has a working, but not complete, IPv6 implementation in the 2.2.* series kernels.

The IPv6 addresses are normally written as eight groups of four hexadecimal digits, where each group is separated by a colon.

Syntax: XXXX: XXXX: XXXX: XXXX: XXXX: XXXX: XXXX: XXXX

For example: 2001:0 DB8: 85A3: 08D3: 1319:8 A2E: 0370:7334

Main Features

 * Larger address space
 * Address scopes
 * Stateless address configuration
 * Multicast
 * Mandatory network layer security
 * Simplified processing by routers

DHCPv6
DHCPv6 is a protocol for dynamic host configuration for IPv6. The server is responsible for assigning IP addresses and maintaining the states of the client nodes. It maintains a database of the addresses that were assigned to the hosts, thus the name "statefull," as it maintains the status of allocations.

Operation
The client host sends a request to the IPv6 network, all servers that are connected to the network, receives the request. But only the server assigns an IP to the client host.

Implementations of IPv6 in XO
Three of the main possible implementations of IPv6 in the XO are described below:

Manual Allocation
All the hosts should be awarded an IP within the same network. To do this, the command is:

ip -6 addr add / dev

To run this command on the XO, the user must have root permissions.

Automatic Allocation
To achieve this, a DHCPv6 server must be configured (in any host) and each node of the network must be configured for the DHCPv6 client.

The DHCPv6 server must be configured with the range of IPs that will be available in the pool of address and prefix of the network. On the client, the server that it will “listen” must be configured as well as the network interface that it will use to connect to the DHCPv6 server.

To perform this configuration, both the client and the server, the user must have root permissions.

Local IP Allocation
Two or more XO connected together, set up an ad-hoc network, which is automatically configured. The IP that is assigned in each node is known as: local link.

Validation
To validate these implementations, this command must be executed:

ping6 –I 

A broadcast ping can be done to test the network: ping6 –I ff02::1