Internet Protocol version 6 (IPv6) Details Podcast [32:30]

Published: April 3, 2008, 7:57 p.m.

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.
\n
\n
\nMike: Gordon, a couple of weeks ago we discussed Ipv6 - can you give us\na quick review - what's the difference between IPv4 and IPv6?
\n
\nThe most obvious distinguishing feature of IPv6 is its use of much\nlarger addresses. The size of an address in IPv6 is 128 bits, which is\nfour times the larger than an IPv4 address. A 32-bit address space\nallows 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.
\n
\nIn the late 1970s when the IPv4 address space was designed, it was\nunimaginable that it could be exhausted. However, due to changes in\ntechnology and an allocation practice that did not anticipate the\nrecent explosion of hosts on the Internet, the IPv4 address space was\nconsumed to the point that by 1992 it was clear a replacement would be\nnecessary.
\nWith IPv6, it is even harder to conceive that the IPv6 address space will be consumed.
\n

\nMike: It's not just to have more addresses though, is it?
\n
\nIt is important to remember that the decision to make the IPv6 address\n128 bits in length was not so that every square inch of the Earth could\nhave 4.3x1020\naddresses. Rather, the relatively large size of the IPv6 address is\ndesigned to be subdivided into hierarchical routing domains that\nreflect the topology of the modern-day Internet. The use of 128 bits\nallows for multiple levels of hierarchy and flexibility in designing\nhierarchical addressing and routing that is currently lacking on the\nIPv4-based Internet.
\n

\nMike: Is there a specific RFC for IPv6?
\n
\nThe IPv6 addressing architecture is described in RFC 2373.
\n

\nMike: I know there is some basic terminology associated with IPv6. Can you describe Nodes and Interfaces as they apply to IPv6?
\n
\nA node\nis any device that implements IPv6. It can be a router, which is a\ndevice that forwards packets that aren't directed specifically to it,\nor a host, which is a node that doesn't forward packets.
\n
\nAn interface is the connection to a transmission medium through which IPv6 packets are sent.
\n
\n
\nMike: How about some more IPv6 terminology - can you discuss Links, Neighbors, Link MTUs, and Link Layer Addresses?
\n
\nA link is the medium over which IPv6 is carried. Neighbors are nodes that are connected to the same link.
\n
\nA link maximum transmission unit (MTU) is the maximum packet size that can be carried over a given link medium, and is expressed in octets.
\n
\nA Link Layer address is the "physical" address of an interface, such as media access control (MAC) addresses for Ethernet links.
\n
\n
\nMike: Can you give a brief ouline in address syntax?
\n
\nIPv4 addresses are represented in dotted-decimal format. This 32-bit\naddress is divided along 8-bit boundaries. Each set of 8 bits is\nconverted to its decimal equivalent and separated by periods.
\n
\nFor IPv6, the 128-bit address is divided along 16-bit boundaries, and\neach 16-bit block is converted to a 4-digit hexadecimal number and\nseparated by colons. The resulting representation is called\ncolon-hexadecimal.
\n
\nThe following is an IPv6 address in binary form:
\n
\n\n\n 00100001110110100000000011010011000000000000000000101111001110110000001010101010000000001111111111111110001010001001110001011010
\n\n
\nThe 128-bit address is divided along 16-bit boundaries:
\n
\n\n\n 0010000111011010\xa0\n0000000011010011\xa0\xa0 0000000000000000\xa0\xa0 0010111100111011\xa0\n0000001010101010\xa0\xa0 0000000011111111\xa0\xa0 1111111000101000\xa0\n1001110001011010\xa0
\n\n\xa0
\nEach 16-bit block is converted to hexadecimal and delimited with colons. The result is:
\n
\n\n\n 21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A
\n\n
\nIPv6 representation can be further simplified by removing the leading\nzeros within each 16-bit block. However, each block must have at least\na single digit. With leading zero suppression, the address\nrepresentation becomes:
\n
\n\n\n 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A
\n \n\n
\n
\nMike: I know there are lost of zeros in IPv6 addresses - can you discribe zero compression notation?
\n
\nSome types of addresses contain long sequences of zeros. To further\nsimplify the representation of IPv6 addresses, a contiguous sequence of\n16-bit blocks set to 0 in the colon hexadecimal format can be\ncompressed to \u201c::?, known as double-colon.
\n
\nFor example, the link-local address of FE80:0:0:0:2AA:FF:FE9A:4CA2 can\nbe compressed to FE80::2AA:FF:FE9A:4CA2. The multicast address\nFF02:0:0:0:0:0:0:2 can be compressed to FF02::2.
\n
\nZero compression can only be used to compress a single contiguous\nseries of 16-bit blocks expressed in colon hexadecimal notation. You\ncannot use zero compression to include part of a 16-bit block. For\nexample, you cannot express FF02:30:0:0:0:0:0:5 as FF02:3::5. The\ncorrect representation is FF02:30::5.
\n
\nTo determine how many 0 bits are represented by the \u201c::?, you can count\nthe number of blocks in the compressed address, subtract this number\nfrom 8, and then multiply the result by 16. For example, in the address\nFF02::2, there are two blocks (the \u201cFF02? block and the \u201c2? block.) The\nnumber of bits expressed by the \u201c::? is 96 (96 = (8 \u2013 2)(16).
\n
\nZero compression can only be used once in a given address. Otherwise,\nyou could not determine the number of 0 bits represented by each\ninstance of \u201c::?.
\n
\n
\n\n\n Mike: IPv4 addresses use subnet masks - do IPv6 addresses?
\n
\n No - a subnet mask is not used for IPv6. Something called prefix length notation is supported.
\n
\nThe prefix is the part of the address that indicates the bits that have\nfixed values or are the bits of the network identifier. Prefixes for\nIPv6 subnet identifiers, routes, and address ranges are expressed in\nthe same way as Classless Inter-Domain Routing (CIDR) notation for\nIPv4. An IPv6 prefix is written in address/prefix-length notation. For\nexample, 21DA:D3::/48 is a route prefix and 21DA:D3:0:2F3B::/64 is a\nsubnet prefix.
\n
\n
\n Mike: I know there are three basic types of IPv6 addresses - can you give a brief description of each?
\n
\n 1. Unicast \u2013 packet sent to a particular interface
\n \nA unicast address identifies a single interface within the scope of the\ntype of unicast address. With the appropriate unicast routing topology,\npackets addressed to a unicast address are delivered to a single\ninterface. To accommodate load-balancing systems, RFC 2373 allows for\nmultiple interfaces to use the same address as long as they appear as a\nsingle interface to the IPv6 implementation on the host.
\n \n
\n 2. Multicast - packet sent to a set of interfaces, typically encompassing multiple nodes
\n \nA multicast address identifies multiple interfaces. With the\nappropriate multicast routing topology, packets addressed to a\nmulticast address are delivered to all interfaces that are identified\nby the address.
\n
\n \n 3. Anycast\n\u2013 while identifying multiple interfaces (and typically multiple nodes)\nis sent only to the interface that is determined to be \u201cnearest? to the\nsender.
\n \nAn anycast address identifies multiple interfaces. With the appropriate\nrouting topology, packets addressed to an anycast address are delivered\nto a single interface, the nearest interface that is identified by the\naddress. The \u201cnearest? interface is defined as being closest in terms\nof routing distance. A multicast address is used for one-to-many\ncommunication, with delivery to multiple interfaces. An anycast address\nis used for one-to-one-of-many communication, with delivery to a single\ninterface.
\n \n
\nIn all cases, IPv6 addresses identify interfaces, not nodes. A node is\nidentified by any unicast address assigned to one of its interfaces.
\n
\n
\n Mike: What about broadcasting?
\n
\nRFC 2373 does not define a broadcast address. All types of IPv4\nbroadcast addressing are performed in IPv6 using multicast addresses.\nFor example, the subnet and limited broadcast addresses from IPv4 are\nreplaced with the link-local scope all-nodes multicast address of\nFF02::1.
\n
\n
\n Mike: What about special addresses?
\n
\n The following are special IPv6 addresses:
\n
\n \n Unspecified Address
\n \nThe unspecified address (0:0:0:0:0:0:0:0 or ::) is only used to\nindicate the absence of an address. It is equivalent to the IPv4\nunspecified address of 0.0.0.0. The unspecified address is typically\nused as a source address for packets attempting to verify the\nuniqueness of a tentative address. The unspecified address is never\nassigned to an interface or used as a destination address.
\n
\n \n Loopback Address
\n \nThe loopback address (0:0:0:0:0:0:0:1 or ::1) is used to identify a\nloopback interface, enabling a node to send packets to itself. It is\nequivalent to the IPv4 loopback address of 127.0.0.1. Packets addressed\nto the loopback address must never be sent on a link or forwarded by an\nIPv6 router.
\n \n \n\n\n\n
\n
\nMike: How is DNS handled?
\n
\nEnhancements to the Domain Name System (DNS) for IPv6 are described in RFC 1886 and consist of the following new elements:
\n
\n\n Host address (AAAA) resource record
\n IP6.ARPA domain for reverse queries
\n\n
\nNote:\xa0 According to RFC 3152, Internet Engineering Task Force (IETF)\nconsensus has been reached that the IP6.ARPA domain be used, instead of\nIP6.INT as defined in RFC 1886. The IP6.ARPA domain is the domain used\nby IPv6 for Windows Server 2003.
\n
\nThe Host Address (AAAA) Resource Record:
\n
\n A new\nDNS resource record type, AAAA (called \u201cquad A?), is used for resolving\na fully qualified domain name to an IPv6 address. It is comparable to\nthe host address (A) resource record used with IPv4. The resource\nrecord type is named AAAA (Type value of 28) because 128-bit IPv6\naddresses are four times as large as 32-bit IPv4 addresses. The\nfollowing is an example of a AAAA resource record:
\n\n\n \xa0\xa0\xa0 \xa0\xa0\xa0 host1.microsoft.com\xa0\xa0\xa0 IN\xa0\xa0\xa0 AAAA\xa0\xa0 FEC0::2AA:FF:FE3F:2A1C
\n\n A host\nmust specify either a AAAA query or a general query for a specific host\nname in order to receive IPv6 address resolution data in the DNS query\nanswer sections.
\n\n
\nThe IP6.ARPA Domain
\n
\n The\nIP6.ARPA domain has been created for IPv6 reverse queries. Also called\npointer queries, reverse queries determine a host name based on the IP\naddress. To create the namespace for reverse queries, each hexadecimal\ndigit in the fully expressed 32-digit IPv6 address becomes a separate\nlevel in inverse order in the reverse domain hierarchy.

\nFor example, the reverse\nlookup domain name for the address FEC0::2AA:FF:FE3F:2A1C (fully\nexpressed as FEC0:0000:0000:0000:02AA: 00FF:FE3F:2A1C) is:
\n\n\n \n C.1.A.2.F.3.E.F.F.F.0.0.A.A.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.C.E.F.IP6.ARPA.
\n \n\n
The\nDNS support described in RFC 1886 represents a simple way to both map\nhost names to IPv6 addresses and provide reverse name resolution.
\n
\n
\nMike: Can you discuss transition from IPv4 to IPv6?
\n
\nMechanisms for transitioning from IPv4 to IPv6 are defined in RFC 1933.\nThe primary goal in the transition process is a successful coexistence\nof the two protocol versions until such time as IPv4 can be retired if,\nindeed, it's ever completely decommissioned. Transition plans fall into\ntwo primary categories: dual-stack implementation, and IPv6 over IPv4\ntunneling.
\nMore Info Mechanisms for transitioning from IPv4 to IPv6 are defined in RFC 1933. There are two primary methods.
\n
\nDual Stack Implementation
\n The\nsimplest method for providing IPv6 functionality allows the two IP\nversions to be implemented as a dual stack on each node. Nodes using\nthe dual stack can communicate via either stack. While dual-stack nodes\ncan use IPv6 and IPv4 addresses that are related to each other, this\nisn't a requirement of the implementation, so the two addresses can be\ntotally disparate. These nodes also can perform tunneling of IPv6 over\nIPv4. Because each stack is fully functional, the nodes can configure\ntheir IPv6 addresses via stateless autoconfiguration or DHCP for IPv6,\nwhile configuring their IPv4 addresses via any of the current\nconfiguration methods.
\n\n
\nIPv6 Over IPv4 Tunneling
\n
\n\n The\nsecond method for implementing IPv6 in an IPv4 environment is by\ntunneling IPv6 packets within IPv4 packets. These nodes can map an IPv4\naddress into an IPv4-compatible IPv6 address, preceding the IPv4\naddress with a 96-bit "0:0:0:0:0:0" prefix. Routers on a network don't\nneed to immediately be IPv6-enabled if this approach is used, but\nDomain Name System (DNS) servers on a mixed-version network must be\ncapable of supporting both versions of the protocol. To help achieve\nthis goal, a new record type, "AAAA," has been defined for IPv6\naddresses. Because Windows 2000 DNS servers implement this record type\nas well as the IPv4 "A" record, IPv6 can be easily implemented in a\nWindows 2000 environment.
\n\n\n
\n\n
\nMike: we've only touched on some of the IPv6 details - where can people get more information?
\n
\nI'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.
\n
\n
\nReferences - Content for this academic podcast from Microsoft sources:
\n
\nAll Linked Documents at Microsoft Internet Protocol Version 6 (note: excellent and free online resources): http://technet.microsoft.com/en-us/network/bb530961.aspx
\n
\nUnderstanding IPv6, Joseph Davies, Microsoft Press, 2002
\nISBN: 0-7356-1245-5
\nSample Chapter at: http://www.microsoft.com/mspress/books/sampchap/4883.asp#SampleChapter
\n