Thu, 3 April 2008
Intro: Two weeks ago we gave an overview of IPv6. This week we take a look at some of the technical details for this protocol.
Mike: Gordon, a couple of weeks ago we discussed Ipv6 - can you give us a quick review - what's the difference between IPv4 and IPv6?
The most obvious distinguishing feature of IPv6 is its use of much larger addresses. The size of an address in IPv6 is 128 bits, which is four times the larger than an IPv4 address. A 32-bit address space allows for 232 or 4,294,967,296 possible addresses. A 128-bit address space allows for 2 28 or 340,282,366,920,938,463,463,374,607,431,768,211,456 (or 3.4x1038) possible addresses.
In the late 1970s when the IPv4 address space was designed, it was unimaginable that it could be exhausted. However, due to changes in technology and an allocation practice that did not anticipate the recent explosion of hosts on the Internet, the IPv4 address space was consumed to the point that by 1992 it was clear a replacement would be necessary.
With IPv6, it is even harder to conceive that the IPv6 address space will be consumed.
Mike: It's not just to have more addresses though, is it?
It is important to remember that the decision to make the IPv6 address 128 bits in length was not so that every square inch of the Earth could have 4.3x1020 addresses. Rather, the relatively large size of the IPv6 address is designed to be subdivided into hierarchical routing domains that reflect the topology of the modern-day Internet. The use of 128 bits allows for multiple levels of hierarchy and flexibility in designing hierarchical addressing and routing that is currently lacking on the IPv4-based Internet.
Mike: Is there a specific RFC for IPv6?
The IPv6 addressing architecture is described in RFC 2373.
Mike: I know there is some basic terminology associated with IPv6. Can you describe Nodes and Interfaces as they apply to IPv6?
A node is any device that implements IPv6. It can be a router, which is a device that forwards packets that aren't directed specifically to it, or a host, which is a node that doesn't forward packets.
An interface is the connection to a transmission medium through which IPv6 packets are sent.
Mike: How about some more IPv6 terminology - can you discuss Links, Neighbors, Link MTUs, and Link Layer Addresses?
A link is the medium over which IPv6 is carried. Neighbors are nodes that are connected to the same link.
A link maximum transmission unit (MTU) is the maximum packet size that can be carried over a given link medium, and is expressed in octets.
A Link Layer address is the "physical" address of an interface, such as media access control (MAC) addresses for Ethernet links.
Mike: Can you give a brief ouline in address syntax?
IPv4 addresses are represented in dotted-decimal format. This 32-bit address is divided along 8-bit boundaries. Each set of 8 bits is converted to its decimal equivalent and separated by periods.
For IPv6, the 128-bit address is divided along 16-bit boundaries, and each 16-bit block is converted to a 4-digit hexadecimal number and separated by colons. The resulting representation is called colon-hexadecimal.
The following is an IPv6 address in binary form:
The 128-bit address is divided along 16-bit boundaries:
0010000111011010 0000000011010011 0000000000000000 0010111100111011 0000001010101010 0000000011111111 1111111000101000 1001110001011010
Each 16-bit block is converted to hexadecimal and delimited with colons. The result is:
IPv6 representation can be further simplified by removing the leading zeros within each 16-bit block. However, each block must have at least a single digit. With leading zero suppression, the address representation becomes:
Mike: I know there are lost of zeros in IPv6 addresses - can you discribe zero compression notation?
Some types of addresses contain long sequences of zeros. To further simplify the representation of IPv6 addresses, a contiguous sequence of 16-bit blocks set to 0 in the colon hexadecimal format can be compressed to “::?, known as double-colon.
For example, the link-local address of FE80:0:0:0:2AA:FF:FE9A:4CA2 can be compressed to FE80::2AA:FF:FE9A:4CA2. The multicast address FF02:0:0:0:0:0:0:2 can be compressed to FF02::2.
Zero compression can only be used to compress a single contiguous series of 16-bit blocks expressed in colon hexadecimal notation. You cannot use zero compression to include part of a 16-bit block. For example, you cannot express FF02:30:0:0:0:0:0:5 as FF02:3::5. The correct representation is FF02:30::5.
To determine how many 0 bits are represented by the “::?, you can count the number of blocks in the compressed address, subtract this number from 8, and then multiply the result by 16. For example, in the address FF02::2, there are two blocks (the “FF02? block and the “2? block.) The number of bits expressed by the “::? is 96 (96 = (8 – 2)(16).
Zero compression can only be used once in a given address. Otherwise, you could not determine the number of 0 bits represented by each instance of “::?.
Mike: IPv4 addresses use subnet masks - do IPv6 addresses?
No - a subnet mask is not used for IPv6. Something called prefix length notation is supported.
The prefix is the part of the address that indicates the bits that have fixed values or are the bits of the network identifier. Prefixes for IPv6 subnet identifiers, routes, and address ranges are expressed in the same way as Classless Inter-Domain Routing (CIDR) notation for IPv4. An IPv6 prefix is written in address/prefix-length notation. For example, 21DA:D3::/48 is a route prefix and 21DA:D3:0:2F3B::/64 is a subnet prefix.
Mike: I know there are three basic types of IPv6 addresses - can you give a brief description of each?
1. Unicast – packet sent to a particular interface
A unicast address identifies a single interface within the scope of the type of unicast address. With the appropriate unicast routing topology, packets addressed to a unicast address are delivered to a single interface. To accommodate load-balancing systems, RFC 2373 allows for multiple interfaces to use the same address as long as they appear as a single interface to the IPv6 implementation on the host.
2. Multicast - packet sent to a set of interfaces, typically encompassing multiple nodes
A multicast address identifies multiple interfaces. With the appropriate multicast routing topology, packets addressed to a multicast address are delivered to all interfaces that are identified by the address.3. Anycast – while identifying multiple interfaces (and typically multiple nodes) is sent only to the interface that is determined to be “nearest? to the sender.
An anycast address identifies multiple interfaces. With the appropriate routing topology, packets addressed to an anycast address are delivered to a single interface, the nearest interface that is identified by the address. The “nearest? interface is defined as being closest in terms of routing distance. A multicast address is used for one-to-many communication, with delivery to multiple interfaces. An anycast address is used for one-to-one-of-many communication, with delivery to a single interface.
In all cases, IPv6 addresses identify interfaces, not nodes. A node is identified by any unicast address assigned to one of its interfaces.
Mike: What about broadcasting?
RFC 2373 does not define a broadcast address. All types of IPv4 broadcast addressing are performed in IPv6 using multicast addresses. For example, the subnet and limited broadcast addresses from IPv4 are replaced with the link-local scope all-nodes multicast address of FF02::1.
Mike: What about special addresses?
The following are special IPv6 addresses:
The unspecified address (0:0:0:0:0:0:0:0 or ::) is only used to indicate the absence of an address. It is equivalent to the IPv4 unspecified address of 0.0.0.0. The unspecified address is typically used as a source address for packets attempting to verify the uniqueness of a tentative address. The unspecified address is never assigned to an interface or used as a destination address.Loopback Address
The loopback address (0:0:0:0:0:0:0:1 or ::1) is used to identify a loopback interface, enabling a node to send packets to itself. It is equivalent to the IPv4 loopback address of 127.0.0.1. Packets addressed to the loopback address must never be sent on a link or forwarded by an IPv6 router.
Mike: How is DNS handled?
Enhancements to the Domain Name System (DNS) for IPv6 are described in RFC 1886 and consist of the following new elements:
Host address (AAAA) resource record
IP6.ARPA domain for reverse queries
Note: According to RFC 3152, Internet Engineering Task Force (IETF) consensus has been reached that the IP6.ARPA domain be used, instead of IP6.INT as defined in RFC 1886. The IP6.ARPA domain is the domain used by IPv6 for Windows Server 2003.
The Host Address (AAAA) Resource Record:
A new DNS resource record type, AAAA (called “quad A?), is used for resolving a fully qualified domain name to an IPv6 address. It is comparable to the host address (A) resource record used with IPv4. The resource record type is named AAAA (Type value of 28) because 128-bit IPv6 addresses are four times as large as 32-bit IPv4 addresses. The following is an example of a AAAA resource record:
host1.microsoft.com IN AAAA FEC0::2AA:FF:FE3F:2A1C
A host must specify either a AAAA query or a general query for a specific host name in order to receive IPv6 address resolution data in the DNS query answer sections.
The IP6.ARPA Domain
The IP6.ARPA domain has been created for IPv6 reverse queries. Also called pointer queries, reverse queries determine a host name based on the IP address. To create the namespace for reverse queries, each hexadecimal digit in the fully expressed 32-digit IPv6 address becomes a separate level in inverse order in the reverse domain hierarchy.
For example, the reverse lookup domain name for the address FEC0::2AA:FF:FE3F:2A1C (fully expressed as FEC0:0000:0000:0000:02AA: 00FF:FE3F:2A1C) is:
The DNS support described in RFC 1886 represents a simple way to both map host names to IPv6 addresses and provide reverse name resolution.
Mike: Can you discuss transition from IPv4 to IPv6?
Mechanisms for transitioning from IPv4 to IPv6 are defined in RFC 1933. The primary goal in the transition process is a successful coexistence of the two protocol versions until such time as IPv4 can be retired if, indeed, it's ever completely decommissioned. Transition plans fall into two primary categories: dual-stack implementation, and IPv6 over IPv4 tunneling.
More Info Mechanisms for transitioning from IPv4 to IPv6 are defined in RFC 1933. There are two primary methods.
Dual Stack Implementation
The simplest method for providing IPv6 functionality allows the two IP versions to be implemented as a dual stack on each node. Nodes using the dual stack can communicate via either stack. While dual-stack nodes can use IPv6 and IPv4 addresses that are related to each other, this isn't a requirement of the implementation, so the two addresses can be totally disparate. These nodes also can perform tunneling of IPv6 over IPv4. Because each stack is fully functional, the nodes can configure their IPv6 addresses via stateless autoconfiguration or DHCP for IPv6, while configuring their IPv4 addresses via any of the current configuration methods.
IPv6 Over IPv4 Tunneling
The second method for implementing IPv6 in an IPv4 environment is by tunneling IPv6 packets within IPv4 packets. These nodes can map an IPv4 address into an IPv4-compatible IPv6 address, preceding the IPv4 address with a 96-bit "0:0:0:0:0:0" prefix. Routers on a network don't need to immediately be IPv6-enabled if this approach is used, but Domain Name System (DNS) servers on a mixed-version network must be capable of supporting both versions of the protocol. To help achieve this goal, a new record type, "AAAA," has been defined for IPv6 addresses. Because Windows 2000 DNS servers implement this record type as well as the IPv4 "A" record, IPv6 can be easily implemented in a Windows 2000 environment.
Mike: we've only touched on some of the IPv6 details - where can people get more information?
I'm hoping to run a session at our summer conference July 28 - 31 in Austin, TX - we've currently got faculty fellowships available to cover the cost of the conference. See www.nctt.org for details.
References - Content for this academic podcast from Microsoft sources:
All Linked Documents at Microsoft Internet Protocol Version 6 (note: excellent and free online resources): http://technet.microsoft.com/en-us/network/bb530961.aspx
Understanding IPv6, Joseph Davies, Microsoft Press, 2002
Sample Chapter at: http://www.microsoft.com/mspress/books/sampchap/4883.asp#SampleChapter