ipv6_header

Above, is seen an IPv6 packet Header, which contains 8 fields:

  • Version: Equivalent to IPv4 Version field – Set to 6 obviously 🙂
  • Traffic Class: Equivalent to IPv4 Headers ToS (Type of Service) field, used to assign priority levels to packets (QoS)
  • Flow Label: Has no IPv4 equivalence, Labels a packet to be in a certain traffic flow (data, voice, etc), helps to set QoS for an entire traffic flow rather than packet by packet
  • Payload Length: Equivalent to IPv4’s Total Length field, defines the entire packet size including the header and data
  • Next Header: Equivalent to IPv4’s Protocol field (IP protocol type)
  • Hop Limit: Equivalent to IPv4 TTL (Time to Live), decrements each “hop” until it hits zero, at which point the packet quits hopping (gets discarded)
  • Source and Destination = Equivalent to IPv4’s Src & Dst address fields, however has an IPv6 128-bit source and destination address

Which in contrast to an IPv4 Header is amazingly simpler to look at and quickly understand what is what for the most part, here is the IPv4 Header:

ipv4_header

Unbelievable really how much simpler it is, shaving off the really unnecessary fields, and adding a bit more QoS flexibility along with the curious Hop Count field that seems pretty odd for the next evolution in IP Addressing.

As I’ve already mapped what fields are equivalent from IPv6 to IPv4, here is what got dropped completely moving from IPv4 to IPv6 headers:

  • Header Length
  • Identifier
  • Flags
  • Fragment Offset
  • Header Checksum
  • Options & Padding

Above is a good, straight forward description of the Header differences, and is stinking of some kind of exam question so make sure to review these.

Speaking of IPv6, here are a few things worth mentioning before we get into formatting and playing with zero’s:

  • IPv6 does NOT use broadcasts
  • IPv6 addresses are 128-bit addresses, made up of 8 sections of 4 hex values
  • IPv6 is phasing out the need for NAT, but is used for 4-to-6 IP address migration
  • IPv6 was designed for easy (bleh) Route Summarization
  • IPv6 still has DHCP, but hosts can use “Auto-configuration” to give themselves an IP address without needing a DHCP server
  • IPv6 Header allows for better control of QoS than IPv4

Still not convinced you love IPv6? Me either. Let’s get into why it’s said to have been designed with Summarization in mind.

As stated above in the bullet points, the address format is 8 section of 4 hex values, making up the 128-bit IPv6 address in this format:

1029:9183:81AE:0000:0000:0AC1:2143:019B

The first method of shortening the length of this address, called “Zero Compression”, is simply taking any consecutive sections of all zeroes and representing them with 2 colons:

1029:9183:81AE::0AC1:2143:019B

You can condense one more five consecutive sections of zero’s, but “zero-compression” can only be done once per IPv6 address, that is a very key rule.

On the other hand “Leading Zero-Compression” which drops the 0’s off the front of any section in the address, however it does have a couple of rules to it:

  • Some value has to be left between the colons, even if you compressed all 0’s
  • You can use it as many times as you want

So for example, the top address is a valid IPv6 address before leading zero-compression, and the bottom number will be after (assuming you don’t use zero-compression itself here):

1234:0000:1234:0000:1234:0000:1234:0123

1234:0:1234:0:1234:0:1234:123

So given this wealth of new found information, lets take the address above, and use both zero-compression and leading zero-compression to make it look less gross:

1029:9183:81AE:0000:0000:0AC1:2143:019B

1029:9183:81AE::0AC1:2143:019B

1029:9183:81AE::AC1:2143:19B

Above will be your final address, using zero-compression only once and leading zero-compression multiple times, and they can be used together in the same address!

Now a couple of gotcha’s that may come up on exam day:

  • Hex can be upper or lower case in an ipv6 address
  • Letters only span A-F, any letter beyond F in an address means it’s an invalid address
  • If you see more than two colons anywhere in the address, or two colons used twice in the address, it is an invalid IPv6 address

That concludes the introductory portion of IPv6 which is basically CCNA refresher at it’s most basic, next up, more IPv6!