Internet Protocol Version 6

To send data from one computer to another through the Web, a data packet must be transferred across the network containing the IP addresses of both devices. Without IP addresses, computers would not be able to communicate and send data to each other. IPv4 (Internet Protocol version 4) uses 32 bits (e.g. 99.48.227.227) for its Internet addresses.

No More Ipv4?

Why? What happened to IPv4? We are running out of IPv4 addresses. The allocation of IPv4 addresses has already ended in Asia/Pacific (April 2011) and Europe/Middle East (September 2012). As technologies changes from time to time (i.e. 2G to 4G) the legacy IPv4 cannot be used. So the long term solution for this problem is Internet Protocol Version 6 (IPv6).

What is IPv6?

Internet Protocol version 6 (IPv6) is a generational updating of the IPv4 protocol. IPv6 was originally specified in RFC 1883, “Internet Protocol, Version 6 (IPv6) Specification”, December 1995. It is similar to IPv4, using many of the same concepts and similar data structures, but it is not backward compatible with IPv4. It can be deployed in parallel to IPv4, on a given node, and on the same network connections, with no interference between the two protocols (this is called “dual stack”).

The major difference from IPv4 is the increase in the IP address size (in bits) and number of available public addresses. A related another major difference is the absence of Network Address Translation (NAT), which is made possible by the larger address space. IPv4 addresses are 32 bits, with a theoretical maximum of 4.3 billion addresses. IPv6 addresses are 128 bits, with a theoretical maximum of 340 trillion, trillion, trillion addresses.  If you represent the size of the IPv4 address space with a billiard ball, the IPv6 address space would be 63 times the size of the sun.

External data representation notation:

IPv4 uses “dotted decimal” notation for addresses. It has 4 groups of 8 bits, each represented by a decimal (base 10) value from 0 to 255. The decimal values are separated with “.” characters (called “dot” in this case). Leading zeros can be removed in each field, but all four fields must be present. An example representation is 172.20.2.1.

IPv6 uses “coloned hex” notation for addresses. It has 8 groups of 16 bits, each represented by a hexadecimal (base 16) value from 0 to 0xffff. The hexadecimal values are separated with colons (“:”). Leading zeros can be removed in each group. At most one sequence of all-zero groups can be removed (leaving a pair of adjacent colons). An example without compression is 2001:0db8:0001:0002:0000:0000:0000:0013 and with compression 2001:db8:1:2::13.

In IPv6 the prefix for node addresses is always 64 bits in length while the suffix (Interface Identifier) is always 64 bits in length (the sole exception is in certain PPP links which use a 127 bit prefix). In IPv6, subnetting is trivial: “all subnets are /64”. Subnets must be at least /64 in size, to accommodate Stateless Address Autoconfiguration (SLAAC). But that is already 4.3 billion times as large as the entire IPv4 address space, which is more than sufficient for any conceivable subnet. Therefore, there is no reason to use any other subnet size.