The Future of IPv6 by rift Originally from 2600 magazine summer '99 The number of free IP (Internet Protocol) Addresses will soon start to run out. Luckily, we have IPv6 (or IPng, ng for next-generation), the new replacement for IPv4. IPv4, or Internet Protocol Version 4, is the protocol that we use every time we dial up into our Internet Service Provider, start up our network machine, etc. Each time you log on to a network, the DHCP/PPP/etc. server as- signes you an IP address. IPv4 uses 32-bit addressing, which provides about 4 million valid addresses tp be used on the Internet. However, it only allows 255 addresses to be used for each network (255.255.255.255 is the highest you can go). Unlinke IPv4, IPv6 uses 128-bit addressing, and uses HEX instead of decimal. This creates many more addresses to be used, which will be needed in about 2010 or even 2005. To give you an example of a standard v4 address: 209.213.155.79 Then, we have IPv6 (not converted): DCAB:FE61:3829:DAB3:DCBB:FE41:3849:DAB4 If the address contains :0:'s, then we can use : as a replacement. Example: 2138:A9C7:0:0:0:231:302:193 = 2138:A9C7::231:302:193 V4 addresses can also be put into the form of IPv6: 128.128.128.128 = 0:0:0:0:0:0:128.128.128.128 Using V4's addresses, we can only go from 0.0.0.0 to 255.255.255.255, whereas with IPv6's, we can use numerous combinations of integers/characters. The Internet is, as you know, growing larger every day, so having IPv6 post-planned will make the switch easier than anything. IPv6 packets are in this form: * flow label (label that requests handling through routers) * version (version of the protocol) * hop limit (used to discard packets that are dead, or packets with '0' in this field) * source address (the source address) * destination address (destination address) * next header (the type of header following thie IPv6 header) * payload length (what the packet size after the header will be) The standard IPv6 address structure: struct inng_addr { u_long snd_addr[4]; }; struct ipng { u_long ipng_v:4, /* version */ ipng_fb:28; /* flow label */ short ipng_plen; /* payload length */ u_char ipng_nexth; /* next header */ u_char ipng_hopl; /* hop limit */ struct inng_addr ipng_src, /* source address */ ipng_dst; /* dest address */ }; IP tunneling can be used for the conversion from IPv4 to IPv6. This is nice, because machines that have not updated to IPv6 can still use/detect IPv6 packets. IPv6 security might also decrease the number of script kiddies out there. IPv6 uses something called the IPng encapsulating security hdr, which uses one of the DES encryption algorithms to encode its header. More importantly, the "IPng authentication header" is used to encrypt the header, but not confi- dentially. This will prevent many DoS attacks that use random source addresses to send their packets.