Internet Protocol version 6 (IPv6) Basics The Transmission Control Protocol/Internet Protocol (TCP/IP) is a widely used networking protocol, currently version 4. Its use on the Internet has broadened its popularity since it is the only protocol used on the Internet. Since the original use of the protocol was for military purposes there was no thought of growth. TCP/IP uses IP Addresses to manage delivery of information from one host to another. Internet Protocol version 4 (IPv4) has a limited number of available addresses specifically 4,294,967,296 addresses. With the division of addresses to the whole world, some countries have depleted their addresses. A new version of the Internet Protocol (IP version 6), the limited number of addresses has been rectified. IPv4 used 32-bits to represent the address while IPv6 uses a 128-bit address. NOTE: For more information on IPv4 see the articles: TCP/IP Internet Layer Protocols, Netmasking Transmission Control/Internet Protocol (TCP/IP) and TCP/IP: Classless Inter-Domain Routing (CIDR). With IPv4 four octets were used for the address, each separated by a period. An IPv4 address example is: 10.1.57.199. Each octet, or number, is represented by eight bits. An octet is eight bits making the total of four octets or 32-bits. On the other hand, IPv6 uses 128-bits making a total number of addresses 3.4x10 to the 38th power. An IPv6 Address is made up of eight groups of four hexadecimal digits. Each hexadecimal digit converts to four binary numbers. All of this makes the IPv6 Address a total of (8 groups) x (4 hex digits) x (4 bits) = 128 bits. Let’s look at an example: 1234:5678:9ABCEF0:1234:5678:9ABCEF0. Let’s quickly try to break down hexadecimal (hex) values. Hex values range from 0 to F or basically 0 through 9 and then A through F. The values are as follows: Code: Decimal Hex Binary 0 0 0000 1 1 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001 10 A 1010 11 B 1011 12 C 1100 13 D 1101 14 E 1110 15 F 1111 Binary values are found by using the place values of 8 4 2 1. An example would be 10 which using the numbers 8, 4, 2 and 1 we would add 8 and 2. The place values for 8 and 2 would be ones while the others were zeroes making a binary value of 1010. Looking at one group in the IPv6 Address, specifically 1234, we would produce the following binary number for the group: 0001001000110100. One group is 16 bits and 8 groups make a total of 128 bits (just in case you still aren’t sure). Let’s do the above IPv6 Address as binary as follows: 1234:5678:9ABCEF0:1234:5678:9ABCEF0 0001001000110100:0101011001111000:1001101010111100:1101111011110000: 0001001000110100:0101011001111000:1001101010111100:1101111011110000 The series repeats since the first four groups repeat again in the last four groups, but this shows how it works. IPv6 has address abbreviation. Address abbreviation is made up of two different methods which can be combined. The first method is that in a group, leading zeroes can be dropped. For example, if one group was made up of 0025 the group could be written as 25. Let’s look at a full example: 0025:5470:000A:4875:9500:0574:0ABD:000F could be written as follows: 25:5470:A:4875:9500:574:ABD:F The second method is when a group is made up of all zeroes. The method can only be used once within an address and is used in the place of the most consecutive groups of zeroes. What occurs is that the groups of zeroes are dropped and two colons are used to represent where the groups were dropped as shown: 0025:0000:0000:0000:9500:0574:0ABD:000F would become: 0025::9500:0574:0ABD:00F Now, if we include method one as well, we get the following: 25::9500:574:ABD:F The reason that method two can only be used once is that there are only eight groups. When one set of consecutive groups are dropped you can tell how many groups were dropped and where. If two groups were dropped you can only tell how many groups go where when one group was dropped from two different places (but still not allowed): 0025:0000:4859:0000:9500:0574:0ABD:000F could be, but is not allowed: 0025::4859::9500:0574:0ABD:000F Now, if we had a case such as the following, it is easier to see the problem: 0025:0000:0000:4580:0000:0000:0ABD:000F becomes 0025::4580::0ABD:000F. Here, we have a problem since there are two groups abbreviated. There are four groups remaining and four groups need to be added. Do we add 1, 2, or 3 groups of zeroes to the first abbreviated group or the second? This is why the second method can only be used once. The last example should become: 0025::4580:0000:0000:0ABD:000F and then abbreviated with method one to be 25::4580:0:0:ABD:F. It is possible to nearly abbreviate the whole address such as the Loopback Address for IPv6: 0000:0000:0000:0000: 0000:0000:0000:0001 becomes ::1. Now that we have addressing covered we can discuss compatibility. IPv4 and IPv6 systems cannot communicate with one under normal situations. For example, if a host is running IPv4 and a web server is only running IPv6, the two hosts cannot communicate. If the web server is running both IPv4 and IPv6 it can communicate with the IPv4 host. The two protocols can be installed and enabled on the same system so communications can occur with all TCP/IP systems. It is also required that all devices on the Internet be IPv6 compatible. Once all devices are IPv6 compatible, then IPv4 can be dropped. The reason for the incompatibility is that the IPv6 header has been changed. The change is to minimize processing by routers to increase throughput. Each IPv6 header contains 320 bits while an IPv4 header is 160 bits in size. Since the main change has really been the IP Addressing, all protocols dealing with IP Addressing were also changed, such as FTP. Any protocols not dealing with addressing are the same as IPv4. Other changes were made with IPv6, such as the payload size. The payload size is the amount of data included within the frame. For a comparison, IPv4 has a payload of 65,535 octets or 65 KB. IPv6 has a maximum payload of 4,294,967,295 octets or 4 GB. A payload of 4 GB is referred to as a Jumbo-gram. A term used in IPv4 is Time To Live (TTL). TTL is a counter, maximum of 255, which is decremented by one every time the frame passes through a router. When the TTL reaches zero the frame is deleted and an ICMP message is sent back to the sender to notify the system the frame is undeliverable. With IPv6, the term is now called Hop Limit. A Hop is when the frame reaches a router and the count is decremented. If, for example, there were 21 routers between a system and a webserver, each frame would travel 21 hops.