Internet Protocol version 6

From Citizendium
Revision as of 07:48, 8 August 2008 by imported>TJ Evans (→‎IPv6 addresses)
Jump to navigation Jump to search
This article is developing and not approved.
Main Article
Discussion
Related Articles  [?]
Bibliography  [?]
External Links  [?]
Citable Version  [?]
 
This editable Main Article is under development and subject to a disclaimer.

Internet Protocol version 6 (or as it is more commonly known "IPv6") is a method of addressing hosts or nodes on a computer network, using 128 bit addresses. IPv6 was conceived as a "next generation" upgrade from the older Internet addressing scheme IPv4, which relied on a 32-bit address space and is quickly being exhausted by the continued growth of the Internet. For more information on the "IPv4 address exhaustion" issue, please reference Geoff Huston's IPv4 Address Report.

IPv6, "The Big Picture"

A quick note or two on the design intent(s) of IPv6, aspects that are recurring ideas that will be seen
throughout the underlying protocol operation, and aren't bad things to keep in mind when trying to 
understand what IPv6 does, how it accomplished those things and why those things are done.

# More addresses - obviously IPv6 gives us more addresses, 128bits vs 32bits.
# Flexibility - The ability to readily add "stuff" (capabilities, functions, etc.) to the protocol without
  needing to rewrite the base protocol or necessarily re-architect our environments.
# Scalability - Reduce overhead, distribute workload, smoother/easier processing.


One common topic of conversation is:
  Should IPv6 be viewed as an evolutionary next-stop from IPv4?
     or 
  Should IPv6 be viewed as a disruptive technology, a revolutionary change?

The answer is: It Depends.
  In many regards IPv6 is, in fact, just a few tweaks different.  
  This is the "96 More Bits, No Magic" view.
  From a purely technological perspective, this is (largely) true.

  However, moving forward, the more bits may just enable radical changes.
  Changes in how we use our networks, what we expect (require) them to do, etc.
  From this "bigger picture" view we could be on the precipice of major change.
  ''(I did say "could" ... )''

As the old saying goes, "May you live in interesting times".

IPv6 address types

IPv6 uses some familiar address types - Unicast, Multicast and Anycast.
# Unicast   - traditional one-to-one communication
              analogy - a standard phone call
# Multicast - one-to-many communication (used for efficient delivery of content)
              analogy - teacher in a class says something one time, everyone who is interested receives it
# Anycast   - one-to-one-of-many communication, where the one-of-many is the nearest instance
              analogy - a bit more complicated than Uni- or Multi-cast ... (more later)

Note that IPv6 does not support "broadcast" addresses.  
Everything IPv4 accomplished with broadcast, IPv6 has a form of multicast for.
This includes a very much broadcast-like multicast.
(AKA - The "All Nodes" multicast address, FF02::1).

IPv6 addresses

# A sample (unicast) address:
  2001:0db8:0001:1001:0000:0000:0000:0001
  -- Note the use of Hexadecimal (hex; each character == 4 bits)
  ---- 4 character (16 bits) per "chunk", 8 chunks, colon separated

  We can compress this to make our lives easier:
  -- "Drop leading zeroes" (within each chunk)
  ---- 2001:db8:1:1001:0:0:0:1
  -- "Double-colon" (Replace any number of SEQUENTIAL, ALL ZERO chunks ... one time per address)
  ---- 2001:db8:1:1001::1
  (This double-colon technique is also frequently used when representing a Prefix.  
   For example the above address is taken from the 2001:db8::/32 space - the 2001:0db8 piece 
   (the first 32 bits) is fixed ... the rest (all zeroes) is subject to change)   )
 
  Note that something like this is valid as well:
  2001:0db8:0000:0000:0000:0000:0000:0001 --> 2001:db8::1
  (This IS about making your life easier!)


# special IPv6 unicast addresses / ranges / address formats
  ::                   Unspecified_Address
  ::1                  Loopback  localhost  ipv6-localhost  ipv6-loopback

  ::<v4 address>       IPv4-Compatible Addresses (DEPRECATED)
  ::ffff:<v4 address>  IPv4-Mapped Addresses

  2000::/3             (Currently active) Global Unicast Addresses
  2001:0000::/32       Teredo service prefix
  2002::/16            6to4 service prefix
  
  fc00::/7             Unique-Local Addresses
  fe80::/10            Link-Local Unicast
  fec0::/10            Site-Local Unicast (DEPRECATED)
  

# special IPv6 multicast addresses / address formats
  ff00::/8             ipv6-mcastprefix
  ff02::1              ipv6-allnodes
  ff02::2              ipv6-allrouters

  ff02::1:ffXX:XXXX    Solicited-Node-Multicast (Used for [[Neighbor Discovery]]