Welcome to 









I have my head around IPv4. I can subnet, work out hosts and can even take it back down to 1's and 0's and calculate using Binary, the correct addresses. I understand all the IP settings I need to know and I can use Ping and ipconfig to solve issues.


Now enters IPv6. Native in Vista and Windows Server 2008. Added onto Windows XP.


I understand the XXX.XXX.XXX.XXX format of an IP address with it's associated netmask but what madness is IPv6?


First lets sort out why this had to happen.


We needed a solution to the problem to our dwindling supply of IP addresses. Almost everyone has "always on" broadband and lots of devices are now also using IP addresses. Rfids, Fridges, cars and lots more. We are chewing through IPv4 addresses faster than ever and we are at a point where there are not many free ones left. Yes, NAT can reduce the numbers of IP addresses on the public network, that are required, but there are now more networks and devices so NAT will not stop this avalanche of IP use.


Now comes IPv6


Internet Protocol version 6 (IPv6) greatly improves on IPv4 by vastly increasing the number of available addresses and by enabling more efficient routing, simpler configuration, built-in IP security, better support for real-time data delivery, and other essential enhancements.


  • It has a huge address space

  • It has address re numbering, hierarchy and mobility.

  • It has multicast and anycast.

  • Heightened security

  • flow labels

  • high performance

  • jumbograms (packets larger than 64 kb)

Take a look at this PowerPoint slide deck.


So why do I hate IPv6?


While IPv6 is designed to work with the 128-bit IPv6 addresses of the source and the destination hosts, computer users are likely to experience difficulty in using and remembering the IPv6 addresses of the computers with which they want to communicate.


The good news ...


Unique names, which are easier to remember, can be used instead.


This is much the same way DNS works today.


So how are IP addresses calculated?

IPv4 addresses are represented in dotted-decimal format. This 32-bit address is divided along 8-bit boundaries. Each set of 8 bits is converted to its decimal equivalent and separated by periods.

Hence the familiar xxx.xxx.xxx.xxx

For IPv6, the 128-bit address is divided along 16-bit boundaries, and each 16-bit block is converted to a 4-digit hexadecimal number and separated by colons. The resulting representation is called colon-hexadecimal.

The following is an IPv6 address in binary form:


The 128-bit address is divided along 16-bit boundaries, as follows:

0010000111011010  0000000011010011  0000000000000000  0010111100111011
0000001010101010  0000000011111111  1111111000101000  1001110001011010

Each 16-bit block is converted to hexadecimal and delimited with colons. The result is:

(now you can see why I hate this)

IPv6 representation can be further simplified by removing the leading zeros within each 16-bit block. However, each block must have at least a single digit. With leading zero suppression, the address representation becomes:

Not so easy to work out or remember!

Some types of addresses contain long sequences of zeros. To further simplify the representation of IPv6 addresses, a contiguous sequence of 16-bit blocks set to 0 in the colon-hexadecimal format can be compressed to :: (known as double-colon).


(Until you get a grasp on this, this starts to make the address harder to understand. Stick with it and you will eventually understand).

As an example, the link-local address of FE80:0:0:0:2AA:FF:FE9A:4CA2 can be compressed to FE80::2AA:FF:FE9A:4CA2. The multicast address of FF02:0:0:0:0:0:0:2 can be compressed to FF02::2.


Zero compression can only be used to compress a single contiguous series of 16-bit blocks expressed in colon-hexadecimal notation. You cannot use zero compression to include part of a 16-bit block.


For example, you cannot express FF02:30:0:0:0:0:0:5 as FF02:3::5.

To determine how many 0 bits are represented by the ::, you can count the number of blocks in the compressed address, subtract this number from 8, and then multiply the result by 16. For example, in the address FF02::2, there are two blocks (the FF02 block and the 2 block). The number of bits expressed by the :: is 96 (96 = (8 - 2) × 16).

Zero compression can only be used once in a given address. Otherwise, you could not determine the number of 0 bits represented by each instance of a double-colon (::).



The prefix is the part of the address that indicates the bits that have fixed values or are the bits of the network identifier. Prefixes for IPv6 routes and subnet identifiers are expressed in the same way as Classless Inter-Domain Routing notation for IPv4. (Cisco uses this notation a lot)

An IPv6 prefix is written in address/prefix-length notation. For example, 21DA:D3::/48 is a route prefix and 21DA:D3:0:2F3B::/64 is a subnet prefix.

Just to confuse you, IPv4 implementations commonly use a dotted decimal representation of the network prefix known as the subnet mask (e.g.

A subnet mask is not used in IPv6. Only prefix-length notation is supported.


     How many hosts?


     With IPv6, it is hard to conceive that the IPv6 address space will be consumed. To

     help put this number in perspective, a 128-bit address space provides

     655,570,793,348,866,943,898,599 (6.5 × 1023) addresses for every square meter

     of the Earth's surface.


     It is this huge amount of IP spaces available that has lead us into such a complicated

     IP addresses scheme.


Current allocation

Similar to the way in which the IPv4 address space is divided, the IPv6 address space is divided based on the value of high order bits in the address. The high order bits and their fixed values are known as a Format Prefix (FP).

The following table shows the allocation of the IPv6 address space by FPs.

Allocation Format Prefix (FP) Fraction of the
address space
Reserved by IETF 0000 0000 (0000::/8) 1/256
Reserved for NSAP allocation 0000 001 1/128
Aggregatable global unicast addresses 001 1/8
Link-local unicast addresses 1111 1110 10(FE80::/10) 1/1024
Site-local unicast addresses 1111 1110 11 1/1024
Multicast addresses 1111 1111

2000::/3       Global Unicast
FC00::/7       Unique Local Unicast
The remainder of the IPv6 address space is unassigned.


For more in-depth information on IPv6 and allocations look here


How do I give myself an IP?


If you have IPv6 turned on, your network interface cards should be getting IPv6 link-local addresses by default, so they're ready to go. This means you can bring a group of people together for a meeting and have instant connectivity without needing a router, or servers, or any kind of outside tools. Whether that connectivity will do you any good is a separate issue as it depends on what applications you want to use, and if they support IPv6.


This magic is performed by using the network cards MAC address. The MAC is used as the low-order 64 bits of a unicast network address. MAC addresses are 48 bits long. The EUI-64 standard explains how to stretch IEEE 802 addresses from 48 to 64 bits, by inserting the 16 bits 0xFFFE at the 24th bit of the IEEE 802.

Because the prefix length is fixed and well-known, during the initialization phase of IPv6 NICs, the system builds automatically a link-local address. After a uniqueness verification, this system can communicate with other IPv6 hosts on that link without any other manual operation.

With IPv4 it was possible to skip over understanding the binary math behind IPv4 addresses by memorizing the various classes and their address ranges. That will not work for IPv6. Get yourself an IP address calculator and learn how work out the conversions and calculations, or IPv6 will forever be a pain in your side.



What is IPv6 Unicast?

This is similar to the unicast address in IPv4. A single address identifying a single interface. There are four types of unicast addresses:
  • Global unicast addresses, which are conventional, publicly routable address, just like conventional IPv4 publicly routable addresses.
  • Link-local addresses are akin to the private, non-routable addresses in IPv4 (,, They are not meant to be routed, but confined to a single network segment. Link-local addresses mean you can easily throw together a temporary LAN, such as for conferences or meetings, or set up a permanent small LAN the easy way.
  • Unique local addresses are also meant for private addressing, with the addition of being unique, so that joining two subnets does not cause address collisions.
  • Special addresses are loopback addresses, IPv4-address mapped spaces, and 6-to-4 addresses for crossing from an IPv4 network to an IPv6 network.



Multicast in IPv6 is similar to the old IPv4 broadcast address   a packet sent to a multicast address is delivered to every interface in a group. The IPv6 difference is it's targeted.




An anycast address is a single address assigned to multiple nodes. A packet sent to an anycast address is then delivered to the first available node. This provides a form of both load-balancing and automatic failover.


Just like in IPv4, addresses are assigned to interfaces, and a single network host or node can have multiple interfaces, or a single interface with multiple addresses. Every interface is required to have at least one unicast address, and beyond that you can load it up with addresses however you like.


Lets break down the IPv6 IP address


Take this IPv6 Example

global prefix      subnet  Interface ID


The prefix identifies it as a global unicast address (Look at the allocation table above and you will see the global routing prefix)

The address has three parts: the network identifier (ID), the subnet, and the interface identifier (ID).


It looks simpler already !

The global routing prefix comes from a pool assigned to your connection, either by direct assignment from a Regional Internet Registry like APNIC, ARIN, or RIPE NCC, or from your Internet service provider. This is allocated. You have no control over this, much like being assigned Static IPv4 IP's today.


The subnet and interface IDs are controlled by you/your machine.

Note: IPv6 addresses must always total 128 bits.

IPv4 addresses are represented like:

Eight blocks of 16 bits each are required in an IPv6 address. The IPv4 address occupies 32 bits, so that leaves seven colon-delimited blocks left.


The localhost address is 0000:0000:0000:0000:0000:0000:0000:0001.

Referring back to the previous discussion on shortening IP blocks we have the same addresses above simplified to:








As the machine's IPv6 address is made up of a network portion and a machine portion (network identifier, the subnet, and the interface). The machine portion should be the 64 bit MAC address which is fixed. (This is explained earlier). This leaves less for you to actually work out.


When you think about it, as the network portion (Network identifier) is made up of the site's internal network number, the ISP number, the ISP's ISP number and so on up to the local backbone number. If a site changes its ISP then their IPv6 addresses change, they must renumber everything.


This sounds painful.


As all these addresses will be easily referenced via DNS and as you will mainly be working with the hostnames, maybe IPv6 will become something that is just there. Something you can leave set to automatically address itself. The only static device would be the servers and routers. Everything else links by name and for your older applications, by IPv4. Now the headache seems to be gone. If everything is happy to negotiate and work out it's own address and just work, it would be a wonderful world. If however you need to fault find or subnet, you will need to know this information back to front.


IPv6 is here to stay. Don't try and remember all this. Get a good IPv6 Calculator and work with what you are given. Eventually it will all make sense.







     ( )





                                                             This page was written and designed by Michael Jenkin 2011 ©