The Future of IPv6

by rift

The number of free Internet Protocol (IP) 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 assigns you an IP address.

IPv4 uses 32-bit addressing, which provides about 4 million valid addresses to 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).

Unlike IPv4, IPv6 uses 128-bit addressing, and uses hexadecimal 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 IPv4 address:

209.213.155.79

Then, we have IPv6 (not converted):

DCAB:FE61:3829:DAB3:DCBB:FE41:3849:DAB4

If the address contains :0:, then we can use : as a replacement.  Example:

2138:A9C7:0:0:0:231:302:193 = 2138:A9C7::231:302:193

IPv4 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 IPv4 addresses, we can only go from 0.0.0.0 to 255.255.255.255, whereas with IPv6, 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 the IPv6 header.
  • Payload Length  - What the packet size after the header will be.

The standard IPv6 address structure:

struct inng_addr {                                                                                                                                                        
  u_long sng_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 header, 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 confidentially.  This will prevent many DoS attacks that use random source addresses to send their packets.

Return to $2600 Index