Why?

As we said in the global introduction, the actual Internet Protocol (v4) cannot handle a sufficient number of devices connected to the internet. That is why we need IPv6; "The optimistic estimate would allow for 3,911,873,538,269,506,102 addresses per square meter of the surface of the planet Earth".

World Regional Internet Registries (RIR)

Furthermore experts note a lack of stability on the network caused by the important size of routing tables provided by IPv4. The interconnecting network equipment, directing packets to their final destination, are routers. To make their decisions, they consult a table called routing table. The numbers of networks in the Internet growing at breakneck speed, the routing tables are becoming increasingly large and difficult to maintain.

Properties

IPv6 provides more flexibility, more efficiency than IPv4 and avoid getting another addresses crisis.

It reduces the size of routing table and datagram routing is faster thanks to this simpler protocol.

Protocol IPv6 does not work with IPv4 but it does with several protocols like TCP, UDP, ICMP, IGMP, OSPF, BGP, DNS.

Format

IPv6 datagrams headers get 8 fields while those of IPv4 get 14; this difference makes routing process faster.

IPv6 Header

According to the RFC 2460 and Juniper “Learn About IPv6”, here are definitions of headers fields.

Version: A 4-bit field for the IP version number (0x06 for IPv6).
Traffic Class: An 8-bit field that identifies the major class of the packet content (for example, voice or video packets). The default value is 0, meaning it is ordinary bulk data (such as FTP) and requires no special handling.
Flow Label: A 20-bit field used to label packets belonging to the same flow (those with the same values in several TCP/IP header parameters). The flow label is normally 0 (flows are detected in other ways).
Payload Length: A 16-bit field containing the length of the packet in bytes; this does not include the IPv6 header.
Next Header: An 8-bit field that replaces Protocol field in IPv4 and gives the type of the next header coming after the IPv6 header.
Hop Limit: An 8-bit field which is like the IPv4 TTL field; it is set by the source host and decremented by 1 at each router. As for the TTL field, when Hop Limit reaches zero packets are discarded. The default value is 8.

How to read IPv6 addresses?

Ifconfig result showing IPv4 and IPv6 addresses

Ex: fe80::8c79:7ab:73ea:9943

Should be understood as: fe80:0000:0000:0000:8c79:07ab:73ea:9943
8 16-bit hexadecimal blocks separated by colons
Addresses have to be concise
Double colons (::) replaces consecutive blocks of zeros, but only once in a single address because of the risk of confusion.

IPv6 does not allow broadcast anymore, it is completely replaced by multicast groups.

As defined in the RFC 4291, we can identify different types of addresses (xx : : xxx / Y meaning that the Y first bits must keep the same value as the address before “/Y”).
::1/128 is the loopback address
::/128 is the unspecified address
::ffff:0:0/96 are the IPv4 mapped addresses
fe80::/10 are the link-local unicast addresses
ff00::/8 are multicast addresses

IPv6 also provides anycast addressing which is a networking technique where the same IP prefix is advertised from multiple locations. The network will decide which location to route a user request to. The main advantage is that the node will be always connected to the closest DNS server, from a routing protocol perspective based on costs.

The last point about IPv6 is that this protocol does not provide packet fragmentation to the routers. If a datagram is bigger than the MTU(Maximum Transmission Unit), it is dropped by the router. The minimum MTU that IPv6 requires is 1280 bytes.