Every computer system and device connected to the Internet
is located by an IP address. The current system of distributing IP addresses is called IPv4. This system assigns each computer a 32-bit numeric address, such as 120.121.123.124. However, with the growth of computers connected to the Internet, the number of available IP addresses are predicted to run out in only a few years. This is why IPv6 was introduced. IPv6, also called IPng (or IP Next Generation), is the next planned version of the IP address system. (IPv5 was an experimental version used primarily for streaming data.) While IPv4 uses 32-bit addresses, IPv6 uses 128-bit addresses, which increases the number of possible addresses by an exponential amount. For example, IPv4 allows 4,294,967,296 addresses to be used (2^32). IPv6 allows for over 340,000,000,000,000,000,000,000,000,000,000,000,000 IP addresses. That should be enough to last awhile. Because IPv6 allows for substantially more IP addresses than IPv4, the addresses themselves are more complex. They are typically written in this format: hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh Each "hhhh" section consists of a four- digit hexadecimal number, which means each digit can be from 0 to 9 and from A to F. An example IPv6 address may look like this: F704:0000:0000:0000:3458:79A2:D08B:4320 IPV6 ADDRESS NOTATION IPv6 addresses are denoted by eight groups of hexadecimal quartets separated by colons in between them. Following is an example of a valid IPv6 address: 2001:cdba:0000:0000:0000:0000:3257:9652 Any four-digit group of zeroes within an IPv6 address may be reduced to a single zero or altogether omitted. Therefore, the following IPv6 addresses are similar and equally valid: 2001:cdba:0000:0000:0000:0000:3257:9652 2001:cdba:0:0:0:0:3257:9652 2001:cdba::3257:9652 Address Structure An IPv6 address is made of 128 bits divided into eight 16- bits blocks. Each block is then converted into 4-digit Hexadecimal numbers separated by colon symbol. For example, the below is 128 bit IPv6 address represented in binary format and divided into eight 16-bits blocks: 0010000000000001 0000000000000000 0011001000110100 1101111111100001 0000000001100011 0000000000000000 0000000000000000 1111111011111011 Each block is then converted into Hexadecimal and separated by ‘:’ symbol: 2001:0000:3238:DFE1:0063:0000:0000:FEFB Even after converting into Hexadecimal format, IPv6 address remains long. IPv6 provides some rules to shorten the address. These rules are: Rule:1 Discard leading Zero(es): In Block 5, 0063, the leading two 0s can be omitted, such as (5th block) 2001:0000:3238:DFE1:63:0000:0000:FEFB Rule:2 If two of more blocks contains consecutive zeroes, omit them all and replace with double colon sign :: such as (6th and 7th block) 2001:0000:3238:DFE1:63::FEFB Consecutive blocks of zeroes can be replaced only once by :: so if there are still blocks of zeroes in the address they can be shrink down to single zero, such as (2nd block): 2001:0:3238:DFE1:63::FEFB IPv6 Header The wonder of IPv6 lies in its header. An IPv6 address is 4 times larger than IPv4, but surprisingly, the header of an IPv6 address is only 2 times larger than that of IPv4. IPv6 headers have one Fixed Header and zero or more Optional (Extension) Headers. All the necessary information that is essential for a router is kept in the Fixed Header. The Extension Header contains optional information that helps routers to understand how to handle a packet/flow. Fixed Header IPv6 fixed header is 40 bytes long and contains the following information. Version (4-bits): It represents the version of Internet Protocol, i.e. 0110. Traffic Class (8-bits) : The Traffic Class field indicates class or priority of IPv6 packet which is similar to Service Field in IPv4 packet. It helps routers to handle the traffic based on priority of the packet. If congestion occurs on router then packets with least priority will be discarded. As of now only 4-bits are being used (and remaining bits are under research), in which 0 to 7 are assigned to Congestion controlled traffic and 8 to 15 are assigned to Uncontrolled traffic. Priority assignment of Congestion controlled traffic.
Uncontrolled data traffic is mainly used for Audio/Video
data. So we give higher priority to Uncontrolled data traffic. Source node is allowed to set the priorities but on the way routers can change it. Therefore, destination should not expect same priority which was set by source node. Flow Label (20-bits): This label is used to maintain the sequential flow of the packets belonging to a communication. The source labels the sequence to help the router identify that a particular packet belongs to a specific flow of information. This field helps avoid re-ordering of data packets. It is designed for streaming/real-time media. Payload Length (16-bits): This field is used to tell the routers how much information a particular packet contains in its payload. Payload is composed of Extension Headers and Upper Layer data. With 16 bits, up to 65535 bytes can be indicated; but if the Extension Headers contain Hop-by-Hop Extension Header, then the payload may exceed 65535 bytes and this field is set to 0. Next Header (8-bits): This field is used to indicate either the type of Extension Header, or if the Extension Header is not present then it indicates the Upper Layer PDU. The values for the type of Upper Layer PDU(Protocol Data Unit) are same as IPv4’s. Hop Limit (8-bits): This field is used to stop packet to loop in the network infinitely. This is same as TTL in IPv4. The value of Hop Limit field is decremented by 1 as it passes a link (router/hop). When the field reaches 0 the packet is discarded. Source Address (128-bits): This field indicates the address of originator of the packet. Destination Address (128-bits): This field provides the address of intended recipient of the packet. Extension Headers In IPv6, the Fixed Header contains only that much information which is necessary, avoiding those information which is either not required or is rarely used. All such information is put between the Fixed Header and the Upper layer header in the form of Extension Headers. Each Extension Header is identified by a distinct value In order to rectify the limitations of IPv4 Option Field, Extension Headers are introduced in IPversion 6. The extension header mechanism is very important part of the IPv6 architecture. Next Header field of IPv6 fixed header points to the first Extension Header and this first extension header points to the second extension header and so on.. TYPES OF IPV6 ADDRESSES IPv6 addresses are broadly classified into three categories: 1) Unicast addresses: A Unicast address acts as an identifier for a single interface. An IPv6 packet sent to a Unicast address is delivered to the interface identified by that address. 2) Multicast addresses: A Multicast address acts as an identifier for a group/set of interfaces that may belong to the different nodes. An IPv6 packet delivered to a Multicast address is delivered to the multiple interfaces. 3) Anycast addresses: Anycast addresses act as identifiers for a set of interfaces that may belong to the different nodes. An IPv6 packet destined for an Anycast address is delivered to one of the interfaces identified by the address