As part of my ongoing #IPv6Mission, I felt that it would be helpful to freshen-up on the IPv6 basics and learn all that I can about the protocol and proper IPv6 network design before I jump right in and configure my home network to connect to a tunnel-broker service.
First up, I’ll be reading “Deploying IPv6 Networks” (Cisco Press, 2005). This content is now a few years old and there have been changes in design and best practice recommendations since 2005, but it will serve as a good refresher on the basics which haven’t changed.
Chapter 1 is an introduction, reviewing the case for IPv6; why we need it. It’s pretty straightforward to understand, so I won’t go into depth on this information. From a high level, the reasons include:
- IPv4 address architecture and poor allocation (classful addressing)
- Public versus private addressing
- Exhaustion of public addressing (and private addressing by some ISPs)
- IP renumbering challenges
- Elimination of NAT
- QoS demands
- Increasing demand for multicast services
- Better IP Mobility (with MIPv6)
Some things are still required where IPv6 offers comparable functionality with IPv4 (not necessarily better). These services include routing protocol operation, VPN security services, generic network and application security,
It’s worth noting that IPv6 poses some additional challenges. Chief among those is perhaps the globally-unique addressing which can be tied to a unique host interface when using SLAAC, and the privacy concerns this raises. If a host interface always uses the same unique IPv6 address across the public Internet, then data collection and analysis could reveal very private information about the user.
Chapter 2 tackles the topic of IPv6 addressing:
Performance Impact – A 64-bit CPU requires 4 passes to process both the Source Address (SA) and Destination Address (DA) in a packet, versus 1 pass with IPv4. This can impact routing processes through longer lookups, significantly larger routing tables, and larger routing updates. Some of these issues are reduced through the strict use of address hierarchy and aggregation with IPv6 (which will be discussed in a subsequent post).
Format – 128 bits in length, represented as a string of 32 hexadecimal characters, segmented into 8 groups of 4 hex values each separated by colons (:). The format alone of IPv6 addresses marks a departure from the comparatively “easy” dotted-decimal representation used for IPv4.
The format can be optimized by using two address-shortening rules:
- Eliminate leading 0’s – within each group of 4
hex values the leading 0’s can be eliminated. For example, :00C0: can be
shortened to :C0:
- Eliminate consecutive 0’s –multiple groups between colons that contain consecutive all-0 groups can be collapsed and notated with a double-colon (::). For example, 2001:0000:0000:A1:0000:0000:0000:1E2A could be shortened to 2001:0:0:A1::1E2A. This rule can only be applied once to an address to remove ambiguity as to how many groups are represented by a double-colon.
|IPv6 Address Representation|
There are three types of IPv6 addresses:
- Unicast – traffic destined to a single node
- Multicast – traffic destined to an entire group of nodes
- Anycast – traffic destined to the nearest node of a group of nodes
Notice something missing? There is no concept of “broadcast” addressing in IPv6. Since it was resource intensive and created some problems on IPv4 networks, IPv6 abandoned broadcast addressing like a fair-weather Dodger fan ditches the ballpark in the 5th inning! So IPv6 relies on multicast addressing instead.
In the next post, I’ll continue the IPv6 refresher with a review of IPv6 unicast addressing.
P.S. – Please follow or get involved in the discussion on IPv6 architecture, design, and implementation on Twitter with the #IPv6Mission hashtag.