APNIC (the Asia Pacific Network Information Centre) hosts a number of training events each year. With over 50 tutorials, workshops, and online labs and courses, APNIC Academy is an incredible resource to the networking community. The online course that caught our attention was an overview of the IPv6 protocol, so we decided to give it a go and share what we learned!
Hosted by Jessica Wei, Senior Technical Trainer at APNIC, the webinar covered global IPv6 end-user readiness, IPv6 packet header format, an introduction of IPv6 extension headers and more. Let’s get into it!
Global IPv6 End-User Readiness
Jessica kicked off the course by sharing a color-coded map of the IPv6 capable rate by country. The map provides a fascinating overview of end-user readiness in countries around the world that are IPv6 capable and IPv6 preferred.
Data can be broken out into regions, subregions, and countries and percentages are available for IPv6 capable, IPv6 preferred, and samples.
If you want to dig deeper into specific areas, graphs with adjustable metrics are provided for every listed area of interest.
IPv6 Packet Header Format
In 1995, IPv6 was designed to replace IPv4, and with that design came a new and improved packet structure. Though some parts were kept the same, the packet headers are totally different. IPv4 and IPv6 packet headers cannot communicate with each other directly.
Source addresses and destination addresses were kept mostly the same, but require more space in IPv6 to accommodate the longer address. The version part of the header remains the same as well.
Traffic length, payload length, next header and hop limit in IPv6 have similar functions to type of service, total length, time to live and protocol in IPv4 respectively, but flow label is a brand new function. Flow label identifies a packet’s place in the traffic flow and can be used for load balance calculation, but it’s not often used in the current IPv6 network as people are still looking into the functions of flow label.
Introduction of IPv6 Extension Headers
When IPv6 was designed, they wanted to make the packets more flexible. To do this, extension headers were added. Extension headers are optional internet-layer information such as fragmentation and encryption.
Multiple extension headers in the same packet can be used, but order is important as the next header defines the order of extension headers.
There are 6 types of extension headers listed in RFC 8200: hop-by-hop options, destination options, routing, fragment, encapsulating security payload, and authentication. It is recommended that headers appear in this order when more than one extension header is used in the same packet. When devices are analyzing the packet, they will analyze from the IPv6 header to the extension, then to the TCP header.
To help attendees better understand the concepts, Jessica walked us through some helpful working examples.
IPv6 Address Representation
IPv6 addresses are represented in hexadecimal using numbers and letters a through f. There are 8 fields consisting of 4 hexadecimal digits, totaling 32 digits. Each hexadecimal digit represents 4 bits which total 128 bits for the entire IPv6 address.
To compress IPv6 addresses when writing, leading zeros can be omitted. Leading zeros are the first zeros in each field. For example, the address 2001:0db8:85a3:0000:0000:8a2e:0370:7334 can also be written as 2001:db8:85a3:0:0:8a2e:370:7334. Be sure not to omit trailing zeros (the zeros at the end of the 4 hexadecimal digit fields).
It is common to see long strings of zero bits in IPv6 addresses. For groups of 16 bits of zeros, the use of “::” can be used to indicate one or more groups of 16-bits of zeros. However, “::” can only be used once in an address. For example, 2001:db8:0:0:0:0:0:1 can be compressed to 2001:db8::1.
When there are placement alternatives present, the longest run of consecutive 16-bits zero fields must be shortened. For example, 2001:db8:0:0:1234:0:0:0 has two separate strings of zero bits, but the string of three 16-bit fields must be the shortened string. The correct compressed format is 2001:db8:0:0:1234::.
When the length of the consecutive 16-bit fields are equal, the first sequence of bits must be shortened. For example, the correct compressed format of 2001:db8:0:0:1234:0:0:1 is 2001:db8::1234:0:0:1.
An IPv6 address prefix is represented by ipv6-address/prefix-length. An example of this is 2001:db8::/32.
Overview of IPv6 Address Types
All IPv6 addresses are divided into three parts: Unicast, Anycast and Multicast. Unicast addresses include Unspecified Addresses (::/128), Loopback (1::/128), Embedded IPv4 (::/80), Global Unicast (2000::/3), Link-Local (fe80::/10) and Unique-Local (fc::/7). Unique Local addresses are not typically recommended because IPv6 has enough addresses that it is preferred to set up end-to-end communication from IPv6.
Link-Local addresses are for use on a single link and start with “fe80”. It is only used between the host and the router. IPv6 is more complicated than IPv4 because it is not possible to memorize all of the Link-Local addresses, but the protocols are designed to use Link-Local addresses to talk to each other.
Link-Local addresses are configured automatically and can cross a layer 2 bridge, but not a layer 3 bridge. Link-Local addresses have at “%en0” at the end which is called the zone index. Zone index “helps uniquely distinguish which link/subnet an interface is connected to. The zoned indexes are strictly local to the device.”
Anycast is similar to IPv4 and is from past Unicast.
There is no Broadcast in IPv6 because in IPv4 Broadcast can generate a broadcast storm in the layer 2 network. When IPv6 was designed, some people were concerned about how to send a package to everyone, but that can be done through Multicast. Multicast addresses include Assigned and Solicited Nodes and all begin with “ff”.
APNIC Academy provided a very informative and easy to understand course and the IPv6 overview was one of many that they offer. We look forward to taking advantage of more of their educational content in the future.