Intro to IPv6
By ABorgert CNT-2453-01 Summer Class
This tutorial is aimed at developing a basic understanding of IPv6 for the new user. The reason IPv6 was created was because of an explosive increase in the number of devices requiring an IP address to communicate on a network and the depleting resources of IPv4 address space. Current estimates suggest that by the end of 2011 all of the left over addresses will be used up, meaning anyone not already connected to the Internet risks being left behind. Born out of necessity, IPv6 is a solution to this problem. Made up of a suite of protocols and standards that where developed by the Internet Engineering Task Force (IETF), not only does IPv6 increase address space; it also solves problems discovered with IPv4 that has become evident over the years. Deploying IPv6 on a global scale is vital to the Internet industry.
IPv6 addresses consist of eight blocks of 4 hexadecimal digits each. Four hexadecimal digits are equivalent to 16 bits, so an IPv6 address has 8 x 16 = 128 bits.
- An example of an IPv6 address looks like this: 2001:4CEA:8D8C:0000:0000:0000:00D2:7A4B
From this example it is apparent to anyone that IPv6 addresses are more complex to remember than IPv4 addresses. Therefore two rules have been developed to shorten addresses to something more manageable.
Address Structure Rules
1. Any leading digit of Zero can be dropped from any group.
- The example above will look like this: 2001:4CEA:8D8C:0:0:0:D2:7A4B
2. Two or more groups of zeros can be replaced by two colons, But only once per address.
- Now it looks like this: 2001:4CEA:8D8C::D2:7A4B
IPv4 vs IPv6
The most beneficial difference between IPv4 and IPv6 is the vast increase in numerical addresses. The original 4.3 billion addresses that IPv4 provides have neared exhaustion in early 2011 and are expected to be completely depleted before the start of 2012. Ipv6 provides 2*128 (approximately 340 undecillion or 3.4 × 10*38) IP addresses. Perhaps this will be a sufficient amount of addresses to last another few years…
IPv4 consists of four separate blocks of one octet, or 32 digits (bits) of binary values (0 or 1).
- Represented in binary form IPv4 addresses look like this: 11000000.10111000.00000000.00000001
- Represented in dotted decimal Ipv4 addresses look like this: 192.168.0.1
As noted previously, IPv6 addressing is constructed of 128 digits (bits) of hexadecimal values (0-9 & A-F). Each hexadecimal represents four binary bits. Respectively, you can see how much larger IPv6 is just by looking at it in binary (128 bits compared to IPv4’s 32 bits).
- IPv6 looks like this: 2001:4CEA:8D8C:0:0:0:D2:7A4B
- IPv6 is not protected by a checksum.
- IPSec was optional in IPv4, it is now required for IPv6.
- IPv6 does not require manual configuration of addresses, or Dynamic Host Configuration Protocol (DHCP) to configure its address.
- The mobile version of IPv4 uses Triangular routing (where the packet is transmitted through a proxy system before going to the actual network), whereas the mobile version of IPv6 does not do this so it can be as efficient as native IPv6.
- There is a new address called Anycast address where it defines a node and the node can define where the packet goes. For example, a node can be used to make a secure connection for video conferencing.
- There are some ipv4 headers that have been dropped or made optional to reduce the processing cost to send the packet and to save bandwidth to compensate for the increased addressing size.
- Time-to-Live field has been remained to hop limit, which is discussed further in the ‘Ipv6 Packet Header’ section.
- Extensions to support authentication, data integrity, and (optional) data confidentiality are specified for IPv6.
- Routers must now support a 1280 byte packet size without fragmenting the packet.
- ICMPv6 Router Solicitation and Router Advertisement messages are used in place of ICMP Router Discovery to find the best default gateway. This is required for IPv6.
- IPv6 features some new protocols such as: ICMPv6 and DHCPv6 to deal with routing and assigning IPv6 addresses, respectively.
Types of IPv6 addresses
There are three main types of IPv4 addresses: APIPA, Private, and Public. The same is true for IPv6, only they have different names:
- Global Address (GA): This is the equivalent of IPv4’s (public address). These addresses start with a first block in the 2000-3FFF range.
- Link-Local Address (LLA): This is the equivalent of the IPv4 (APIPA address). These addresses always start with "fe80".
- Unique Local Address (ULA): Also known as a Site-Local address, this is the equivalent of IPv4’s ‘private address’. Where IPv4 private addresses fall within three ranges, Unique Local Addresses always start with "FD".
There are two more types of addresses that have more specific uses:
- Multicast Address: Allows communication between one host and many receivers. These packets are sent out to all the interfaces that are identified by that address. Multicast addresses always begin with "FF".
- Special Addresses: There are two special addresses, one is called the Loopback Address and it looks like this, 0:0:0:0:0:0:0:1 (or ::1). The IPv6 loopback address is the same as the IPv4 address 127.0.0.1 and used for the same purpose, to identify a loopback interface. The other special address is called the Unspecified Address and it looks like this, 0:0:0:0:0:0:0:0 (or simply written ::). It is equivalent to the IPv4 address 0.0.0.0 and is also used for the same purpose; it is commonly used as the source address that packets use to confirm if a tentative address is unique.
Features Only Available in IPv6
- Stateless Address Autoconfiguration - Lets hosts configure themselves automatically.
- Multicast - Allows single packets to be sent to multiple destinations.
- Mandatory Network Layer Security - Integrated Internet Protocol Security (IPsec).
- Simpler Router Processing - Routing in IPv6 is almost identical to IPv4 routing under CIDR except that the addresses are 128- bit IPv6 addresses instead of 32-bit IPv4 addresses. With very straightforward extensions, IPv4's dynamic routing protocols (OSPF, RIP, IDRP, ISIS, etc.) can be used to route IPv6.
- Mobility – This means that a mobile device is not constrained by location and has an ‘always on’ IP connectivity to its home agent via a bidirectional tunnel. In other words, if there is a network that the mobile device can connect. Then it can communicate on its own home network with its own IP address, as if it was directly connected.
- Extension Header Mechanism - The extension header mechanism makes it easy to 'extend' the packet header to support future services for QoS, IPsec, Mobile IP, etc. without a redesign of the basic protocol. Extension headers do this by carrying options that are used for special packet treatment along its route or at its destination, routing, fragmenting, and for security using the IPsec framework.
- Jumbo Payload Option header – Also known as a Jumbogram, allows an IPv6 packet to carry a payload larger than the standard mode size of one byte less than 64 Kilobytes, or 65,535 (2*16 - 1) octets of payload. A jumbo payload can be almost 4GB, or 4,294,967,295 (2*32 - 1) octets of payload.
IPv6 Packet Format
The IPv6 packet has three main parts:
- Fixed Header: The first 40 octets (320 bits) of an IPv6 data packet makes up the fixed header. The format of the fixed header is presented in the table above.
- Extension Headers (Optional): The extension headers encode the optional Internet-layer information between the fixed header and the upper-layer protocol header in a packet. The headers form a chain using the Next Header fields.
- Payload (Optional): The payload can have a size of up to 64 KB in standard mode, or with the Hop-By-Hop Options extension header it can carry the larger "jumbo payload" option.
The fixed and optional IPv6 extension headers are followed with the upper-layer payload and the data provided by the transport layer. The Next Header field of the last IPv6 header is what indicates the type of payload that is in this packet.
IPv6 Packet Header
- Version (4 bits): This Indicates the IP version.
- Traffic Class (8 bits): The traffic class field defines the priority of the packet. There are two values held by the bits of this field. The 6 most-significant bits are used to classify packets. The two bits left are used for congestion control.
- Flow Label (20 bits): The flow label identifies all packets belonging to a specific Class of Service, or “flow”. These packets can be Identified by routers and handle them all according to their class of service.
- Payload Length (16 bits): The payload length field shows the size of the payload. The payload length includes the size of any extension headers. The field length is set to zero whenever an extension header carries a Jumbo Payload option.
- Next Header (8 bits): The next header field shows the Transport Layer Protocol that is used by the payload. When there are extension headers in the packet, this field shows which extension header will follow.
- Hop Limit (8 bits): Similar to the 'Time-To-Live' field in IPv4, the hop limit shows the maximum number of hops allowed. This value is decreased by one at every hop in the packets route. The packet is discarded when the counter reaches 0.
- Source Address (128 bits): This identifies the IPv6 address of the source sending the packet. The source is also known as the ‘The Sending Node’.
- Destination Address (128 bits): This identifies IPv6 address of the destination receiving the packet or ‘The Destination Node’.
Routing Information Protocol Next Generation (RIPng)
RIPng is defined in RFC 2080 and is an extension of RIPv2 which includes support for IPv6. RIPng is is an interior gateway protocol (IGP) that uses the distance vector algorithm to determine best route to a destination, using the hop count as the metric, just like its predecessors (RIPv1 & RIPv2). RIPng is a dynamic routing protocol that exchanges routing information used to determine routes through a network, and has been designed exclusively for the new generation of internet protocol, IPv6. RIPng uses User Datagram Protocol (UDP) and functions via UDP port 521.
- Support for IPv6.
- RIPng does not need to implement authentication on packets.
- There is no support for multiple instances of RIPng.
- RIPv2 encodes next hop into each route entry, but RIPng requires specific encoding of the next hop for a set of route entries.
- Hop count cannot exceed 15, like its predecessors.
- Still restricted to a fixed metric of hop count, does not make use of additional parameters such as delay, and load, like IGRP and EIGRP.
RIPng packet header contains the following fields:
- A Command field: Indicates whether packet is a request or response message. Request messages seek information for the router's routing table while response messages are sent periodically or when a request message is received. Periodic response messages are called update messages. The update messages contain the command and version fields and a set of destinations and metrics.
- Version Number: Specifies the version of RIPng that the originating router is using.
- Destination Prefix: 128 bit IPv6 address prefix for the destination.
- Prefix Length: Number of significant bits in the prefix.
- Metric: Value of the metric advertised for the address.
- Route Tag: A route value that must be advertised and redistributed with the route. The route tag distinguishes external RIPng routes from internal RIPng routes in cases where routes must be redistributed across an Exterior Gateway Protocol (EGP).
Implementation of IPv6
As of February 3, 2011, the last batch of 5 (/8) address blocks was allocated to the Regional Internet Registries. Each of the address blocks represents approximately 16.7 million possible addresses, over 80 million combined potential addresses. According to APNIC, these addresses could be fully consumed within three to six months at current rates of allocation.
IPv6 has been implemented on all major operating systems in use in commercial, business, and home consumer environments; however, it does not implement interoperability features with IPv4, in other words, IPv6 creates essentially a parallel, independent network altogether separate from IPv4. Because the two Internet Protocol versions function separately from one another, a few of the largest internet companies (including: Google, Facebook, Akamai, and Yahoo!) have teamed up and are participating in what is called ‘World IPv6 Day’. On this day, June 8th of 2011, these major web companies will enable IPv6 on their servers for 24 hours. The main objective of World IPv6 Day is to entice other web companies to prepare their services for the transition. Also, it will allow users to experience IPv6 firsthand, allowing them a taste of their inevitable future using the new and improved internet protocol, IPv6.
Revised and updated by Clay Wilson & Duc Doan | CNT 2520 01 Spring 2011
References and Readings
- RFC 2460 Internet Protocol, Version 6 (IPv6) Specification
- Internet Protocol Version 6 Address Space - IANA
- 6Net IPv6 Deployment Guide
- Roesen IPv6 Cheat Sheet
- Packetlife IPv6 Cheat Sheet
- IPv6 At-A-Glance
- RFC 2373 IP Version 6 Addressing Architecture
- RFC 2374 An IPv6 Aggregatable Global Unicast Address Format
- RFC 3513 Internet Protocol Version 6 (IPv6) Addressing Architecture
- RFC 3587 IPv6 Global Unicast Address Format
- RFC 3879 Deprecating Site Local Addresses
- IPv6 Addressing Guide
- IPv6 Addressing At-A-Glance
- RFC 3056 Connection of IPv6 Domains via IPv4 Clouds
- RFC 2766 Network Address Translation - Protocol Translation (NAT-PT)
- RFC 2740 OSPF for IPv6
- RFC 5308 Routing IPv6 with IS-IS
- RFC 2080 RIPng for IPv6
- RFC 2545 Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing
- Cisco IOS IPv6 Introduction
- Cisco IPv6 Solutions
- Cisco IOS IPv6 Configuration Guide
- Cisco IOS IPv6 Command Reference
Services, Protocols and Features
- RFC 2463 ICMPv6
- RFC 2874 DNS Extensions to Support IPv6 Address Aggregation and Renumbering
- RFC 3315 Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
- RFC 1981 Path MTU Discovery for IP version 6
- RFC 2461 Neighbor Discovery for IP Version 6 (IPv6)
- RFC 1886 DNS Extensions to support IP version 6
- IPv6 Headers At-A-Glance
- IPv6 Multicast At-A-Glance
- IPv6 Mobility At-A-Glance