The good news is that IPv6 principles are very similar to those of IPv4.
Moreover, networks and client applications can make the transition to IPv6 easily.
One stumbling block is that we humans struggle to see patterns within
these new large hexadecimal numbers. It is my objective to give meaning to IP addresses such as: 2001:0618:71A3:0801:1319:0211:FEC2:82DC,
and thus explain the difference between IPv4 and IPv6 addresses.
Before we get to know the new IPv6 hexadecimal numbers, I would like to say a
few words about why you need a working knowledge of IPv6 address schemes. What made me
suddenly sit up and take notice was when I read that the USA government has decreed that all federal agencies must be IPv6 compliant by June 2008.
Previously, I pigeon-holed IPv6 in the category of having more false dawns than
teams like the Arizona Cardinals (NFL), or Newcastle United (Soccer).
China and India will want a lot more IP addresses to become a presence on the
internet. Moreover, developed countries need additional IP addresses for cell phones and other mobile devices.
Cisco have analysed the data, and conclude that IANA's allocation pool of IPv4
addresses will probably run out in between 3 and 10 years.
This assessment of the available IPv4 pool takes into account American
universities such as Stanford and MIT who have handed over their Class A
addresses so that the rest of the world can benefit. Although techniques such as NAT and Supernetting (CIDR)
have extended the useful life of IPv4 on the internet; in 2008 they are seen as limited, and
are now only helping to choke internet communication.
At their heart, both IPv4 and IPv6 are level 3 routing protocols.
However IPv6 is just that bit quicker, smarter and lot more scaleable.
Nevertheless, it
is the realization that the 32bit IPv4 just cannot deliver sufficient unique
address, which has been the driving force to upgrade to a 128bit IPng (new
generation), or IPv6 as it's better known.
Here are five keywords that will aid your understanding should you read IPv6
RFC (Request for comments) articles: Stateful and Stateless; Link-Local and
Site-Local addresses, also ND (Neighbor Discovery)
A stateful IP address is one given by a DHCP server. Usually DHCP gives more information than just the IP address, for example
the IP address of the DNS server and also the default gateway.
A stateless IP address is one that is automatically configured by router
discovery. The host assigns itself an IPv6 address automatically rather like the
IPv4 APIPA.
Link-Local IPv6 addresses only allow connections with neighbors on that
subnet (link), these address beginning with FEC0 are not forwarded by routers. End of story.
Site-Local address are routable, but not to the internet, thus hosts with
Site-Local IPv6 addresses can use private (not ICANN) IP addresses, AND can connect to
any other Site-Local address within the organization. All Site-local
address begin with FE80.
ND (Neighbor Discovery) Replaces IPv4's ARP and ICMP
Router Discovery. The idea is for machines to discover information
about their nearest router. In addition, if an IPv6 stack can obtain
information about other hosts, then it won't duplicate their IP addresses
should it need to use Autoconfiguration.
It is well known that there are lies,
damn lies and statistics. In the case of IP numbers, your three best
friends are estimation, approximation and the big picture. My point is
mathematicians told us that IPv4, with its 32bit
number, would generate 4,294,967,296 possible IP addresses, in practice it turned out
there were only about 17 million useful addresses. What springs to mind is Oscar Wilde's adage 'A
cynic (mathematician) is a man who knows the
price of everything but the value of nothing'.
With the 128bit IPv6
address, the
same mathematicians say there should be
340,300,000,000,000,000,000,000,000,000,000,000,000,000 IP addresses. Guy
guestimates that there may be as few as: 18,000,000,000,000 useful IPv6 address.
This shortfall is partly due to reserved and unassigned bits in the 128bit address. The other reason for this reduced number of usable IP addresses is a design feature
whereby 64bits are taken up with the Interface ID (Mac Number), I will explain
more of this later.
Even with my
extremely low estimate, no worries, it means that everybody on the planet could be given 3,000 IP addresses.
In my mind's eye I see: one for
their computer, one for their phone, car, fridge, cooker and every other appliance - then some.
IPv6 Address - Making Sense of the Actual Hex Numbers
Do these four numbers mean anything to you: 192.168.0.1? If you see an IP address of
10.0.0.1 do you think hmm... private network? Could 169.254.x.y indicate no
DHCP server available? If any of the foregoing numbers ring a bell then
clearly you
have a working knowledge of IP4. What I would like to do is give you a
similar basic understanding of IPv6.
IPv6 numbers are in
hexadecimal (base 16 instead of base 10). Therefore you will see IP addresses containing not only numbers, but
also the letters ABCDEF, for example: 2001:0618:71A3:08D3:1319:8A2E:0370:7017. As you can see, 128bit numbers are split into 8 groups
of 16bit. Observe how each group is separated by a colon rather than a dot.
It is readily apparent that this scheme dramatically expands on IPv4s 4 groups of 8bit numbers.
Surprisingly, the hex letters are not case sensitive.
Private networks won't need to
assign the full range of IPv6 numbers; hence many of the address values will be zero. In
this circumstance, thanks to compressing the zeros, you will see simpler notation, for example, instead of
FD01:0000:0000:0000:0000:0000:0000:0002, you will see FD01::2. Note the double colon :: indicating
compression of the intervening zeros. Thus the term 'compression' in IPv6 refers to the notation
and not to the protocol packets themselves. Incidentally, you can only use
the double colon once in each IP address.
The biggest reason that there will be fewer IPv6 addresses than the theoretical
maximum is that each 64bit number will include the MAC address of the host.
While incorporating the hardware address cuts down the available numbers, it
makes this protocol more efficient, secure and useful than IPv4.
Here are 3 or 4 different ways of describing the IPv6 address format.
Global Routing Prefix | Subnet ID | Interface ID
Subscriber ID
|
(Top Level Routing ID) | (Organise Sites) | (MAC Address)
Slightly more information about the first 4 bytes:
3 | 13 |
32 | 16
| (64-bit Interface ID)
001 | Top Level Aggregate Identifier | Next-level Aggregate
ID | Site-level Aggregate Identifier
001 | TLA ID | NLA ID | SLA ID
Each IP address can be divided into sections. The first part contains
routing information, while in the middle holds the site identifier and
subnetting information. The last part of the hex address has the interface
ID which is the 48-bit link-layer (MAC) address plus a 16-bit global identifier.
When it comes to describing IPv6 ranges, subnets or even routing prefixes
there is are new conventions.
FD01::/8 is an address range
2001:0618:71A3:08D3::/64 is a subnet prefix
2001:0618::/32 is a route prefix
N.B. There is no hexadecimal equivalent of an IPv4 subnet mask.
If you want to know the bit-by-bit significance of each number in IPv6, the
ultimate fountain of knowledge is held in 'Refer For Comments' documents such as
RFC 3587 and RFC 2374, also 3315 for DHCP. These articles are freely
available on the internet.
To have a working knowledge of IPv6 you need to make sense of the first four numbers of
the address. As with IPv4, it's the
first section of the address that has the most meaning, 192.x.y.z, 10.x.y.z, or even 169. I would like to focus in IPv6 addresses beginning with FE, for example, FE80,
FECO. Again, as with IPv4, studying the binary numbers helps to explain why
we get particular hexadecimal number.
Link-local address FE80 = 1111 1110 1000
Site-local address FEC0 = 1111 1110 11
Examples of an IPv6 Address
0:0:0:0:0:0:0:1 The classic loopback address. Compressed format ::1
FF01:0:0:0:0:0:0:42 A multicast address. Compressed to FF01::42
0:0:0:0:0:0:10.0.0.20 An IPv4 address. Note triple colon in the
compressed form :::10.0.0.20
FE80::23A1:B131 A Local-link address. An address for use in the
internal organisation, but not on the internet.
FEC0::F282:204:76FF:FE36:8163 Site-link address.
0:0:0:0:0:0:10.0.0.20 An IPv4 to IPv6 address. Note triple colon in the compressed form
:::10.0.0.20
Thus if you see a number beginning with 2001 or 3001 then it's a number
that ICANN/IANA have allocated, probably to an ISP.
Guy Recommends: The Orion Network Performance Monitor (NPM) 9.5
Orion's performance monitor is designed for detecting network outages.
This NPM will guide you
through troubleshooting by indicating whether the root cause is a broken link,
faulty equipment or resource overload. Because it produces
network-centric views, it is intuitive to navigate, and as result you can
see easily what's working and what's not.
Perhaps Orion's best feature is the way it suggests solutions. Moreover, if
problems arise out of the blue, then you can configure Orion NPM 9.5 to notify
members of your team what's changed and how to fix it.
Let us now decipher the very last part of the following Link-local IP address, fe80::211:5bff:fec2:82dc%4.
The %4 caused me some head-scratching until I made a few vital
deductions. Embarrassingly, until I understood the significance of the % number, I could not
get ping to work. This percentage number has the following names: the Zone ID (most common), %
Scope ID, NIC adapter number, Interface ID, or if you 'ask'
Netsh, the Idx number.
Thank goodness that this command still works: Ipconfig /all. Moreover, it
helps us by displaying the elusive
number after the % sign. Here are the results for two machines where I
wanted to ping.
Preliminary step, use IPCONFIG /all to get the IPv6 addresses of two machines. Then
substitute your hex numbers for mine.
Experiment 1: At Machine A, launch a cmd prompt
1) Type PING
2) Type Machine B's IPv6 address
3) Append YOUR (Machine A) % number, for example:
Ping fe80::ec84:1634:d659:2aba%4
- Correct you should get a reply.
Experiment 2: At Machine A type Machine B's IPv6 address
omitting the % number
Ping fe80::ec84:1634:d659:2aba
- Wrong no Zone ID number. Also, we assume that interface number we
need (%4) is not the default Zone ID.
Experiment 3: At Machine A type Machine B's IPv6 address with
the wrong % number
Ping fe80::ec84:1634:d659:2aba%10
- Wrong we need the Zone ID number of the sending machine = %4; the Zone ID
of the target machine %10, is irrelevant. My rational is that we always
learn more when things go wrong, it's just that most text books leave out the
mistakes! If you get stuck, do remember the following Netsh commands.
Troubleshooting IPv6 Addresses - Netsh is your friend
I assume that you are at the cmd prompt, now type these five words:
netsh interface ipv6 show interface
Note: Be careful, the command really does need two words called 'interface'.
Additionally you need to specify ipv6 - as shown above. Incidentally, as an ex-biologist I was amazed to see the word 'Teredo' in the
netsh print-out. Previously I associated Teredo with the dreaded
ship-boring mollusc. This animal probably destroyed more of Drake's ships than the
entire Spanish Armada. Back to IPv6, I soon made the connection, Teredo is
tunnelling interface so that IPv4 packets can move smoothly through IPv6
networks.
Incidentally, Netsh is well worth learning, not only will it help you
troubleshoot IPv6, but also it will be handy for configuring Core (GUI-Less)
Windows Server 2008 machines.
̃
Configuring IPv6 addresses with Netsh
Firstly an assumption, if you have XP you have installed IPv6 (Network
connection, properties, Install). The key to configuring a manual IPv6 address is preparation,
it also helps if you
tuning-in to the terminology. As XP and Windows Server 2003 don't have a
box to type the IPv6 address, you need to employ the built-in command line tool
Netsh.
With Vista and Server 2008, you can also configure IPv6, in much the same way
as you did with
IPv4, namely type numbers in a dialog box. Again you go to the Network
Connections, but this time, IPv6 has a live properties button, (greyed out in XP).
The first question is, 'What is the name of your Adapter Interface?' To
check your answer type ipconfig /all and read what comes after 'Ethernet
Adapter'. This usually begins with 'Default..' For more information,
check your Network Connections, you could even take the opportunity of renaming
the connection, e.g 'lab', and see the new name appear when you re-type ipconfig
/all.
What IPv6 address could you add? Use an existing IP address as your
starting point; it should begin with FE80. Also note the double colon
meaning
'compression'.
Suppose IPv6 reveals a Link-local address = fe80::211:5bff:fec2:82dc. You could
add a new unique number by changing the last four digits thus:
fe80::211:5bff:fec2:111a. Here is the syntax of Netsh.
The pattern is this: Add address interface = name address =hex number
If you get an 'Element not found' error message, then it's because your
interface = NAME is wrong. The solution is to check the NAME in the Network Connections.
Finally, if you want get rid of your IPv6 command substitute delete for add,
hence:
DELETE address interface = lab address =fe80::211:5bff:fec2:111a
It is going to take for ever for the world to migrate from IPv4 to IPv6.
Fortunately the IPv6 committees took this into account when they designed
IPv6. Specifically they included Teredo for tunnelling IPv4 inside IPv6. Here are the main tasks you can undertake to prepare for IPv6.
Whereas you should not attempt to upgrade an old XP machine to Vista*; upgrading
an XP client from IPv4 to IPv6 will be the proverbial piece of cake. Vista
machines don't need to be upgraded because they have the IPv6 protocol
pre-installed. Thus all the IPv6 migration falls to the servers and the
routers.
Upgrade your applications to work with both IPv6 and IPv4. In the
case of the operating systems, they have a built-in IPv6 stack.
Question: is IPv6 a killer reason to migrate to Vista. No. XP
SP2 has a perfectly good IPv6 stack. Network connection, properties,
Install. Alternatively, call for help about Install IPv6.
Focus on DNS and make sure it supports IPv6 address and PTR records.
In truth, if you have a true DNS expert, it will be straightforward for them
to configure the AAAA records and the appropriate in-arpa reverse lookup
zone.
Before we consider IPv6 and DHCP, a few words about other simple
auto-configuration methods. The IPv6 host can use Router Discovery to
obtain vital
information such as router IP address. What happens is that routers
send multicast Router Advertisement (RA) messages periodically. From
such RA messages a host can assign itself a Link-local address.
As far as I can see, you will need Windows Server 2008 (Longhorn) for
IPv6 DHCP. There may be plans to add IPv6 scopes in Windows Server 2003,
but I cannot find any reference to them. What did find was this
statement from Microsoft, 'The IPv6 protocol for the Windows Server 2003
family does not currently support DHCPv6.'
IPv6 will be faster in several ways. Physically, because IPv6 does not
fragment the packets as IPv4 does. Logically, because IPv6 will be
hierarchical, thus internet routers won't need such large routing tables.
In addition, IPv6 headers have been redesigned to speed their path through a
router and to create true 'end to end' capability, the result is more efficient
network traffic on the internet backbone
Another difference between IPv4 and IPv6 is in the smarter allocation of IPv6 addresses.
Rather than first come first served basis as seen with IPv4, IPv6 addresses will
be leased on geographic region. Take Europe for example,
RIPE (Réseaux IP Européens) has allocated the UK-BT IPv6 addresses beginning with 2001:0618
IPv6 has better scalability and an improved ability to prioritise packets. As with many of
the benefits of IPv6, Quality of Service builds on features that IPv4 only partially delivers.
I don't want to get bogged down with technical details,
but I do want to emphasis is that
IPv6's support for mobile devices illustrates the thought that has gone into designing the new protocol,
for example, the 'Mobile Node' (MN) is identified by its home address (HoA) and its care of address (CoA), which
is the mobile's current location.
IPv6 Public Root
ICANN/IANA distribute network blocks to Regional Internet Registries (RIR)
One option is to temporarily disable IPv6. Perhaps you are
finding that IPv6 is more of a hindrance than a help. Naturally,
you can reverse this registry hack should you need to enable IPv6.
How to disable IPv6 in the Registry
Launch Regedit and navigate to the HKEY_LOCAL_MACHINE hive.
The full path is:
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\ Note: Tcpip6 (not plain Tcpip)
Create a DWORD called DisabledComponents (Check the
spelling e.g. plural)
Set the Hex Value Data to ffffffff This displays as
0xffffffff (4294967295)
Reboot and IPv6 will be disabled.
Summary of the Differences Between IPv4 and IPv6
Migration from IPv4 to IPv6 requires very little work on the XP client, and
none at all for Vista. On the server side, you need a DNS expert to look
at the AAAA records and the Reverse Lookup zone.
For the network manager, perhaps the biggest practical difference between
IPv4 and IPv6 addresses is the need for a new DHCPv6 server such as Windows
Server 2008. However you could start by seeing if your clients can manage
with just the automatic Link-local address.
Train Signal has
now released their
Windows Server 2008 Training Course. As an MCT
trainer, I am a huge advocate of Train Signal’s products. What particularly
impresses is me is the demonstrations. If
you are looking for a complete DETAILED coverage of Windows Server 2008, then I highly recommend that you give this course a try. I have reviewed their
6 hours plus of videos myself, and I guarantee that you will
not be disappointed!