Well that depends who you ask - the answer could be "nothing" or "lots"...
IPv4 was designed in the 1970's and deployed in the early 1980's. At the time the 32 bit address space seemed to be huge, however the classful based assignment has rapidly led to address space exhaustion.
Classful based address allocation and Name Address Translation (NAT) have both helped to ease this problem, however neither is a complete solution. Classful allocation has slowed down the problem, however it is still eminent. NAT on the other hand has created other problems, especially when two devices want to communicate directly with each other from behind NAT gateways.
Additionally, there have been significant changes in the number of Internet hosts, the number and type of applications used over IP and the way in which the Internet is used (eg. Internet access from a mobile phone) - none of this existed when IPv4 was designed and we tend to need to work around issues that crop up (eg. change IP address when changing location).
In 1998 the IETF released RFC2460 detailing the specification for Internet Protocol version 6 (IPv6). IPv6 is the planned successor to IPv4.
Key features of IPv6 include:
The last 10 years have seen a very minimal uptake of IPv6. There are a number of factors involved:
Deployment has significantly increased in the last year and the next couple of years will most likely see this trend continue. Notably:
Preliminary observations:
In detail:
Every IPv6 datagram has a base IPv6 header - any additional information is provided via additional extension headers, if required. The Next Header field is used to indicate the type of header that follows the base header. This can be an IPv6 extension header, or that of the encapsulated payload (eg. TCP). Headers are simply chained together, for example:
A key feature of this design is that parsing (processing) an IPv6 datagram containing only a base header is more efficient than parsing an IPv4 datagram. Most extension headers do not need to be processed by intermediate routers, further improving routing efficiency.
IP extension headers include:
Another interesting aspect of IPv6 is its built in ability to support Quality of Service (QoS). If used, the 20-bit flow label will uniquely identify a flow of packets (for example, those belonging to a single TCP connection) between two nodes. As a result, the flow label must be unique for the current source/destination IP addresses. If packets are not identified as being part of a "flow", the flow label value must be zero.
The actual QoS must however be setup outside of IPv6 and negotiated with the intermediate routers using a protocol like Resource-Reservation Protocl (RSVP). The source address/destination address/flow label triplet however allows routers to identify specific flows in order to provide them with a level of service that differs from the default service.
The 16 byte (128 bit) IPv6 address space is almost unimaginably huge - IPv6 theoretically has 340,282,366,920,938,463,463,374,607,431,768,211,456 addresses. That's enough to to give every square meter of the earth's surface 667 * 1021 addresses. Or we could give every person on earth 5.1 * 1028 or 51,557,934,381,960,373,252,026,455,671 addresses. Given that IPv4 has a total of 4,294,967,296 addresses, this would result in each person having address space equivalent to 1.2 * 1019 times the size of the current Internet!
The "traditional" dotted-decimal notation is not easily used with IPv6 addresses. For example:
120.30.8.240.101.17.67.0.0.0.0.0.10.19.4.202
The notation to be used in IPv6 is called colon hexadecimal (or colon hex), where 16-bit sections of the address are written in hex, and colon separated, thus:
781e:08f0:6511:4300:0000:0000:0a13:04ca
Colon hex notation allows zero suppression, so that the above address could be written:
781e:08f0:6511:4300::0a13:04ca
Or even:
781e:8f0:6511:4300::a13:4ca
IPv6 allows for three types of address classes:
The type of an IPv6 address is determined by the high-order bits of the address, otherwise known as the binary prefix:
| Binary Prefix | Hexadecimal Prefix | Type Of Address |
00...0 |
::/128 |
Unspecified |
00...1 |
::1/128 |
Loopback |
1111 1111 |
ff00::/8 |
Multicast |
1111111010 |
f380::/10 |
Link-Local Unicast Addresses |
(everything else) |
Global Unicast |
All other addresses are reserved for future allocation (with some exceptions).
Like IPv4, IPv6 has a number of addresses that have a special meaning. Furthermore certain prefixes are reserved for specific purposes.
| Address/Prefix | Purpose |
::/128 |
Unspecified address (equivalent to 0.0.0.0 for IPv4) |
::1/128 |
Loopback address (equivalent to 127.0.0.1 for IPv4) |
::ffff:0:0/96 |
Prefix for IPv4 addresses that are mapped to IPv6 address space. |
2002::/16 |
Prefix used for 6to4 tunnelling (see next lecture) |
fe80::/10 |
Link-local addresses - only valid on the local network segment (equivalent to the IPv4 autoconfiguration address range of 169.254.0.0/16) |
ff00::/8 |
Multicast addresses (equivalent to IPv4 class D) |
Modifications have also been needed to DNS so that it can support queries and responses for IPv6 addresses. IPv6 support has been added via the addition of a new Resource Record (RR) type known as "AAAA" (or just quad-A).
DNS queries proceed as per normal, with the difference being that an IPv6 capable name server can be queried for AAAA records, which will result in it returning an AAAA record instead of the normal A record.
For example:
ironbark:~ joel$ dig ipv6.google.com AAAA ; <<>> DiG 9.3.4 <<>> ipv6.google.com AAAA ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39907 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 7, ADDITIONAL: 7 ;; QUESTION SECTION: ;ipv6.google.com. IN AAAA ;; ANSWER SECTION: ipv6.google.com. 10752 IN CNAME ipv6.l.google.com. ipv6.l.google.com. 252 IN AAAA 2001:4860:0:2001::68
RFC2460 - Internet Protocol Version 6.
RFC3596 - DNS Extensions to Support IP Version 6.
RFC4291 - IPv6 Addressing Architecture.
The IPv6 Information Page - ipv6.org.
The Australian Government's IPv6 Transition Plan.