Introduction to and History of IPv6

Olli Arnberg
Postipuuntie 3B30
02600 Espoo
Finland
oar@leka.hut.fi

Abstract

When the addressing capability of IP4 was not big enough, a new and much more improved version was introduced. That same time was very good for introducing "other" new things to IP. The new version was called IPng for a long time; but in this paper I talk about it as IP6 (as it is!).


Table of Contents

1. Introduction
2. IP4
2.1 Why these are no good?
3. IP6
3.1 Technical considerations in IP6
3.2 The actual IP6
3.3 The process of making IP6
4. Conclusions
References


1. Introduction

The following lectures (and papers) deal with some of the interesting features of IP6; this lecture (and paper) is meant to give a "glimpse" of everything.

2. IP4

The IP4 explanations are from the book by Comer [2]. Refer to it if you have any questions, I try to explain every field in an extremely short way...

The basic structure of all packets (in IP4, but not in IP6) is the same - obviously a very good one at that time. Now the problem is in RISC-processors: an "if" might totally empty the pipeline. One could argue that the IP6 extension structure is very similar:

The "Header" and "Data" are quite clear, but "Optional fields" contains arguments that are really optional: not every host has any use for those! Most options are used for maintenance purposes.

The header structure is the following:

The VERS field is quite clear: it contains 4. Every other number is considered as an indication of a maltuned packet and thus those packets are discarded.

Field LEN contains the length of the header measured in 32-bit words.

Then there is the field TYPE OF SERVICE. It contains the following things:

PREC contains the presendence for the packet (0=normal packet, 7=network control). Bits D, T, and R contain some information on how the packet should be handled (D=low delay, T=high throughput, R=high reliability). (And NOP=No OPeration, as in assembler.)

The field TOTAL LENGTH gives the total length of the packet in octets. The problem in IP4 seems to be the multitude of different measuring systems (octets and 32-bit words).

The fields IDENT, FLAGS, and FRAGMENT OFFSET control fragmentation. The field IDENT contains a unique integer (it is used for collecting all the separate parts of a fragmented packet). Then the FLAGS-field:

N = Do not fragment and M = More fragments. The field FRAGMENT OFFSET contains just that - it is quite hard to explain such an obvious thing.

TIME (or very often it is called TIME TO LIVE) contains the packet lifetime in seconds (or hops).

Field PROTO contains information of the upper-level protocol, i.e. what the packet contains.

HEADER CHECKSUM is a way to ensure the correctness of the header. All header fields (or, in fact, their 16-bit equivalents) are added together (the field HEADER CHECKSUM contains 0 in this phase) with 1 complement arithmetic. And then one's complement of the results is taken. When this operation has to be done in every router, it means quite an operation!

SOURCE IP ADDRESS and DESTINATION IP ADDRESS. Both addresses are 32-bit units.

The fields OPTIONS and PADDING are used mostly for network configuration.

Depending on the OPTION NUMBER the length might vary.

DATA. Finally, that is the real packet!

2.1 Why these are no good?

The biggest problem in IP4 is clearly the lack of a big enough address field. Ok, 2^32 is 4.294.967.296, a number that is extremely big. But the addressing capability wasn't used very efficiently.

Address class Bits Number of nets Bits Addresses
A 7 128 24 16 777 216
B 14 16 384 16 65 536
C 22 4 194 304 8 256

The class B is going to be "empty". One solution is very easy: one B class net is replaced by three C class nets. Pretty good help in a desperate situation.

But another problem aroused from that solution. When one address is replaced by three , the routers have quite a problem. The router's memory becomes quite "full" in this way.

3. IP6

3.1 Technical considerations in IP6

The technical considerations are from [2]. In case of any - just any - misunderstandings, it has the truth. Very often the IP6 is called IPng.

Scale
This is a very important thing. It was the foremost reason for the transition from IP4 to IP6. IP6 should support at least 10^12 nodes and 10^9 networks. Even though it has been suggested that somewhere in the distant future every home has a net. Then the networks number would be bigger.
Topological Flexibility
The routing algorithm should have no knowledge, how the network has been made. Extremely large number of hops (now (in IP4) the limit is 256) is possible, too.
Performance
The new IP6 header should be possible to handle in the same time as the "old" IP4. Especially high-speed networks require quite high processing times.
Robust service
Packets might be quite distorted in the network. It's just so and nothing can be done to it. The IP4 is quite robust. IP6 should therefore be at least as robust.
Transition
It's not possible to change every host in the Internet from IP4 to IP6. So, IP6 should accept IP4 packets.
Media Independence
The media of IP6 might vary. Some future networks might work with the speed of 500GBit/s. And then some ELF (=Extra Low Frequency (those are used in submarines)) networks might be as slow as maybe 10 chars/s. ThatŐs quite gap! And IP6 should handle it.
Unreliable Datagram Service
IP4 supports just that. So IP6 should do it, too.
Configuration, Administration, and Operation
IP4 is quite a hard thing to handle. The new IP6 should be easier. That clearly requires some studying, but maybe...
Secure Operation
This is a very important thing! The new IP6 (the old IP4 didn't give such a possibility) should provide a secure layer. Very simply said!
Unique naming
Every IP address should be unique. Quite a clear thing!
Access
The standards that make IP6 should be publicly available.
Multicast
The IP6 should give the possibility to use multicast (unicast is obvious). There was something in IP4, but not good enough.
Extensibility
The "new" IP should be possible to handle even newer versions of IP.
Algorithms
The handling algorithms should be possible to change without changing the protocol.
Headers
The headers should be extensible. The options thing used in IP4 isn't efficient to decode.
Data Structures
Data structures in IP6 should be independent of the actual protocol.
Packets
It should be possible to add new packet types to IP6.
Network Service
The hosts should be able to give packets special "status" i.e. how those packets should be handled.
Support for Mobility
This thing is quite important! More and more nets are "mobile". Somehow those should be supported.
Control Protocol
The IP6 protocol should support some kind of debugging and control protocols.
Private Networks
The IP6 shouldn't require some upper level protocol. Such way "other" protocols could use the Internet (For instance AppleTalk).

3.2 The actual IP6

There were a great amount of requirements. Now, it's very interesting, how they've been realized. One really unbelievable thing is that the number of protocol fields has been decreased! Usually, technical progress means more fields, but not in this case.

One, very big explanation for that is very practical. Every bit of effort has been the usual processor architecture of today. Processors have a pipeline today. It's a very primitive form of parallel processing. And an "if" might flush the pipeline (which gives very poor performance). So, as few ifs as possible.

But the reasons for that are quite straighforward: Packets aren't fragmented, but they are discarded in that case (and of course error message to sender). Three fields gone!

And then no checksums are calculated. Calculating those takes a lot of time. And if there's an error, the packet probably goes to the wrong place. And a new one is sent away (would happen in the checksum case) And (final and) the higher protocol has it's own checksums.

Now every field in IP6 has to be explained.

Field Length of field (in Bits)
Ver 4
Prio 4
Flow label 24
Payload length 16
Next hdr 8
Hop limit 8
Source address 128
Destination address 128

Ver
This is just the same thing as in IP4. Now it contains a "6", though!
Prio
The values are from 0 to 15, with 0 lowest (some "filler" traffic) and 15 highest (maintenance traffic).
Flow label
This field is used (with Prio-field) to give packets some special handling in routers. That field is used for some "special" type of traffic (for instance, video messages). One host negotiates with a router with RSVP-protocol and assigns some amount of capability to that special traffic.
Payload length
The payload length requires: the header to always be the same length. The payload length is given as unsigned integer counting octets.
Next Hdr
The IP aways carries some "other" protocol as payload (usually TCP, but there are other possibilities) and maybe some extensions.
Hop limit
This is a 8-bit field. It is decremented at each router. In IP4 that field contained time-to-live in seconds! Seconds are really "wrong", because the packet is in a new router approximately every millisecond.
Source address and Destination address
The addressing capability is very greatly better. 2 to 128=340,282,366,920,938,463,374,607,431,768,211,456! (Maybe I forgot to write some numbers in that, but maybe it isn't so important.) This means 665,570,793,348,866,943,898,599 addresses for every square meter of earth!

Of course those theoretical figures aren't "true". But one can waste addresses quite much and it's just so possible. There are enough addresses (but "never say never").

Options in IP4 are called extensions in IP6. They are placed in a separate header after the actual header. In fact, just the same thing as in IP4! Ok, every router hasn't to decode every option, but...

Extension name What it does
Routing Extended routing (like IP4 source route)
Fragmentation Fragmentation and reassembly
Authentication Integrity and authentication
Security encapsulation Confidentiality
Hop-by-Hop Option Special options which requires processing at every node
Destination options Optional information to be examined by destination node only

Most extensions have their own presentation (and paper, too).

This is the most simple case. In this case, the "next hdr"-fields say, that a TCP packet follows.

This is a little bit more complicated thing. In the first header the "next hdr"-field says that the routing packet follows. And one must look at that packet (the router should look at routing). If some "don't care"-packet would be here, it could be skipped over easily. And in that header, the "next hdr"-fields say that a TCP packet follows.

3.3 The process of making IP6

(In the checkpoint I said that no-one cares about history as long as thing works well. The history is interesting things aren't working so smoothly (who done it?). And that view was received extremely well (at least everyone laughed - including the professor!).)

The IP4 addressing capability seemed quite big enough: some study said that it was enough to the year 2000 (or so). But when "normal" personal computers were added to the Internet, a real disaster followed!

First the ROAD (ROuting and ADdressing) group was formed. It's main (and nearly only) task was to get some more time. The group was formed in November -91 and it's report was received March -92. Of course the problem had been seen much before! It formed RFC1519, some kind of a "quick and dirty" fix for problems.

Then next group: IAB (subcommittee of Internet Architecture Board). It worked in the late spring of -92. That group made a proposition: IPv7.

In July -93 a meeting was held in Amsterdamm. In that meeting Phil Gross was chosen as the leader of the "new" internet. There were some, very important, things to discuss in that meeting:

A directorate group was formed in that meeting, too.

Some kind of help was RFC1797, which showed how some class "A" nets can be used in smaller chunks.

RFC1719 shoved the demand of IPng. [2] was much more detailed.

The IP6 installation shall start probably in the end of -96. Because the "old" IP is supported, too, it's not so vitally important that every host turns to IP6 simultaneously.

4. Conclusions

The basic problem, addressing in IP, is solved for quite some time now. At the same time, other things have gone in. So, the purpose of this reform has been fulfilled.

References

[1]
Douglas Comer. Internetworking with TCP/IP, Prentice-Hall International, Inc., New Jersey, 1988
[2]
C. Partridge, F. Kastenholz. Technical Criteria for Choosing IP The Next Generation (IPng) (RFC1726), Internet Engineering Task Force, December 1994
[3]
Christian Huitema. IPv6: The New Internet Protocol, Prentice-Hall PTR, New Jersey, 1996
[4]
Scott O. Bradner, Allison Mankin. IPng Internet protocol next generation, Addison-Wesley Publishing Company, Reading, 1995
Olli Arnberg
oar@leka.hut.fi