Articles‎ > ‎Computing‎ > ‎

Introduction to IPv6

In 1981 a Request for Comments (RFC) 791 was published defining the current version of IP (known as IPv4) which is currently still used today.  It used 32-bit addressing, and supported 4.3 billion addresses.  Over time IPv4 had to be modified to keep up with the changing technological needs of the Internet, including space (e.g. NAT), routing, prioritized (e.g. TOS), configuration (e.g. DHCP), and security (e.g. IPSec).

IP address blocks are assigned to regional Internet registrars by IANA (the Internet Assigned Numbers Authority). Those registrars then assign address blocks to Internet Service Providers (ISPs) and large organizations. ISPs assign their allocated addresses to their customers - companies and individuals - either on a permanent (static) basis or as dynamic addresses that can change if you disconnect from and reconnect to the Internet.

It's important to note, that the last top level blocks (/8) of available IPv4 addresses was assigned in February 2011.  Which officially means that after those addresses are distributed, no new IPv4 addresses can be assigned to Regional Internet registries.

IPv4 address exhaustion from 1995 to 2011.

In 1996 an alpha implementation of the IPv6 protocol released. The Internet Engineering Task Force (IETF) created IPv6 (see RFC 2460) to over come the limitations of the current IPv4 protocol, and eventually replace it.  Some of the new features include 128-bit addressing (2^128 possible addresses), hierarchical routing (global, regional, and local), automatic configuration, security (e.g. IPsec), prioritized delivery (e.g. TOS) and support for mobile technologies.

IPv6 allows for approximately 340 undecillion addresses It's 10 to the 36th power (one followed by 36 zeros). That's more than 4.8 nonillion (4,857,142,857,142,857,142,857,142,857,142.9) addresses for every man, woman and child on earth

IPv6 Address Format

IPv6 addresses have two logical parts: a 64-bit network prefix, and a 64-bit host address part (the host address is often automatically generated from the interface's MAC address).

128-bit IPv6 Address
Network Address
(Describes network location)
 Interface ID
(Provides unique identifying number)
 XXXX: XXXX: XXXX: XXXX  XXXX: XXXX: XXXX: XXXX


An IPv6 address is represented by 8 groups of 16-bit hexadecimal values (the hexadecimal digits are case-insensitive) separated by colons (:) shown as follows:

    fe80:0000:0000:0000:0301:ffab:3fb2:3457

The IPv6 address can be abbreviated using the following rules:
  • Rule one: Leading zeroes within a 16-bit value can be omitted.
    • For example, fe80:0000:0000:0000:098a:aa9e:9211:afb4 can be written as fe80:0:0:0:98a:aa9e:9211:afb4
  • Rule two: A single consecutive occurrence of a groups of zeroes within an address can be replaced by a double colon.
    • For example, fe80:0:0:0:301:ffab:3fb2:3457 is abbreviated as fe80::301:ffab:3fb2:3457
Note: IPv6 address that start with “fe80” are automatically-assigned link-local address.  

There are three major classifications of IPv6 addresses:
  • Unicast: identifies each network interface.  Below is a list of the types of unicast addresses.
    • Global Unicast: An address that is globally routed over the IPv6-enabled portion of the Internet. Uses the 2000::/3 address prefix.  The first 48-bits of the address are the global routing prefix which specify the public topology portion of the address. These addresses are assigned to Internet service providers (ISPs) by IANA (Internet Assigned Numbers Authority).  The next 16 bits are the subnet ID known as the site topology portion, which can be used to specify up to 65,536 unique subnets for routing purposes inside an organization's site. The last 64 bits are the interface ID and specify a unique interface within each subnet.
    • Link-Local: A unicast address that is used by a node for communicating with neighboring nodes on the same link.  These addresses are never forwarded past the local link by the IPv6 router.  Link-local addresses are assigned to interfaces using IPv6 address auto-configuration, which is similar to Automatic Private IP Addressing (APIPA) addresses used by IPv4 (e.g. 169.254.0.0/16). The address prefix for link-local addresses is FE80::/64 (e.g. FE80:0:0:0 or FE80::), the last 64 bits are the interface ID on the local link.
    • Unique Local: is a a site-local unicast address prefix that can represent multiple sites within an organization.  The scope of this address is global to all sites within an organization, using this type of address simplifies the internal IPv6 routing infrastructure configuration of an organization. This type of address has a prefix that starts FD00::/8, the next 40 bits represent the global ID, which is a randomly generated value that identifies a specific site within an organization, the next 16 bits represent the subnet ID which can be used for further subdividing an internal network for routing purposes. The last 64 bits are the interface ID and specify a unique interface within each subnet.
  • Anycast: identify a group of interfaces, usually at different locations of which the nearest one is automatically selected (measured by the routing distance) specified by the address.
    • Anycast addresses are currently only assigned to routers and only represent destination addresses.
  • Multicast: Used to deliver one packet to several interfaces.
    • IPv6 multicasting works in the same way as IPv4.
Some IPv6 addresses are reserved for special purposes, such as the loop-back address. Also, some address ranges are considered special, such as link-local addresses for use in the local network, and solicited-node multicast addresses used in the Neighbor Discovery Protocol.

IPv6 Address Types
 Address Type Address Prefix
Loopback address::1
Global unicast2000::/3
Link-local unicastFE80::/64
Unique local unicastFD00::/8
MulticastFF00::/8

IPv6 Multicast Addresses
Scope
Representation
Interface-localFF01::1
Link-localFF02::1
Interface-local 
FF01::2
Link-localFF02::2
Site-localFF05::2


Interface Identifiers

For all types of unicast IPv6 addresses the last 64 bits of the address represent the interface ID which is used to identify a unique interface on a local link or subnet.  The interface ID for Link-local addressed is generated from the unique 48-bit MAC (Media Access Control) address or the EUI (Extended Unique Identifier)-64 address of the interface.  The interface ID for global addresses which is used to create a public IPv6 address, will either be generated from a temporary random identifier (which is used for privacy reasons) or the EIU-64 as the interface ID.


IPv6 Packet Format

The IPv6 packet is composed of two parts: the packet header and the payload. The header consists of a fixed portion with minimal functionality required for all packets and may contain optional extension to implement special features.

The fixed header occupies the first 40 octets (320 bits) of the IPv6 packet. It contains the source and destination addresses, traffic classification options, a hop counter, and a pointer for extension headers if any. The Next Header field, present in each extension as well, points to the next element in the chain of extensions. The last field points to the upper-layer protocol that is carried in the packet's payload.

Extension headers carry options that are used for special treatment of a packet in the network, e.g., for routing, fragmentation, and for security using the IPsec framework.

The payload can have a size of up to 64KB without special options, or larger with a jumbo payload option.


IPv6 Automatic Tunneling Transition Mechanisms

The Internet engineering community have developed several transition mechanisms that will allow network operators to send IPv6 packets over IPv4 networks to allow for a gradual migration to new protocol.  One of these mechanisms is known as "Tunneling" which includes the following technologies: 6to4, Teredo and ISATAP.
  • 6to4: A method of connecting IPv6 hosts or networks to each other over an IPv4 backbone. It doesn't require explicit tunnel set-up, and instead uses relay routers to forward encapsulated IPv6 packets over IPv4 links.
  • Teredo: A tunneling protocol that provides IPv6 connectivity to users that are behind network-address translation (NAT) devices that support only IPv4. Teredo encapsulates IPv6 packets inside IPv4 packets for transmission across these IPv4-based NAT devices and the IPv4 backbone.
  • ISATAP (Intra-Site Automatic Tunnel Addressing Protocol): Encapsulate and transmit IPv6 packets over IPv4 networks or IPv4 packets over IPv4 networks. It is targeted at IPv6 deployment in enterprise networks. ISATAP provides automatic encapsulation by using a virtual IPv6 overlay on top of an IPv4 network using IPv4 routers.
IPv6 tunneling techniques create a security concerns, because these tunneling technologies allow malicious IPv6 traffic to be disguised as IPv4 traffic. This will force network operators need upgrade their firewalls, intrusion-detection systems and network management tools to be IPv6-aware in order to have visibility into encapsulated IPv6 packets.



IPv6 readiness

Compatibility with IPv6 networking is mainly going to be software or firmware issue.  Older hardware in principle can be upgraded, but it will likely have to be replaced instead.  The recent versions of most operating system (e.g.: Windows, Linux, and OS X) are IPv6-ready. Also most network aware applications will have to be upgraded to support IPv6 from the developers.

To find out the IPv6 readiness of your computer and network, go to the following site http://test-ipv6.com. After the site loads it will run a series of IPv4 and IPv6 browser, connectivity, and DNS tests against your computer and connection.



IPv6 Checklist

Below is a checklist of items that you must have in order to use IPv6 on your computer and network.

  • An operating System that supports IPv6 
    • Windows Vista and above, or most current versions of Linux and Mac OS X.
  • A router appliance (commercial or consumer) that supports IPv6.
    • Most modern routers support IPv6, older models may require firmware update if available (check the hardware manufacture's web site for more information).
  • An ISP with IPv6 protocol and DNS support.
    • IPv6 readiness will vary between companies.  Contact your ISP to find out the type of IPv6 support they offer.
    • If your ISP doesn't support IPv6 you can use an IPv6 Tunnel Broker like Hurricane Electric to allow your computer to access the IPv6 Internet.
      • Note: If you're router appliance, it needs to support Protocol 41 pass-through, otherwise the computer might require direct Internet access to utilize an IPv6 Tunnel Broker.


Examples

Notable IPv6 Historical Events
  • In 1998 an alpha version of IPv6 was implemented in to 2.1.8 version of the Linux kernel .
  • In March 2000, Microsoft releases an IPv6 technology preview version for Windows 2000.
  • in 2007, Microsoft releases Windows Vista which has IPv6 enabled by default.
  • February 4, 2008, IANA adds the AAAA DNS record support for the IPv6 addresses to six root name servers, which makes it possible to resolve domain names using only IPv6
  • March 12, 2008, Google launches a public IPv6 web interface to its search engine at the URL http://ipv6.google.com
  • The 2008 Summer Olympic Games was the first major world event had a presence on the IPv6 Internet.
  • As of March 2010, only 1% of Internet traffic was based on IPv6, according to Geoff Huston, Chief Scientist at APNIC.
  • On June 8, 2011 the Internet Society together with several other big companies and organizations will hold World IPv6 Day, a global 24 hour test of IPv6.

For more information, check out the following Wikipedia article.

Related Articles
As networking technologies have been upgraded to deal with larger resources, so have other computing technologies evolved to handle new advancements:
Subpages (1): Command Examples
Comments