The 1990s
witnessed an explosion in the growth of the Internet. The number of
connected networks and users has increased dramatically, posing the
threat of address space exhaustion. Meanwhile, a new sort of
application appeared, characterized by real-time constraints and
driven by the emergence of cheap digital multimedia technology,
which puts significant new communication demands on the underlying
networks. This has set a considerable challenge for the Internet,
which was designed to support non-time-critical applications.
Besides requiring an increase in network capacity (i.e., the
communications bandwidth), some significant architectural
enhancements were prompted as well.
Figure 1 - The
IPv6 header format
This has
triggered the birth of new protocols such as multicast (leading to
the creation of the MBone), Classless Interdomain Routing (CIDR),
RSVP, and Real-Time Transport Protocol (RTP). The features of the
current version of the IP layer, IPv4, have been able to underpin
these protocols for the past few years. However, it became evident
that a more uniform and fundamentally better adapted solution to the
new requirements was needed to provide a smooth evolution of the
network.
IPv6 was then
designed and adopted as the successor to IPv4, to occupy, of course,
the central place in the entire Internet protocol architecture. As
with IPv4, IPv6 is still based on the key concept of a datagram. On
the other hand, IPv6 exhibits the following changes from its
predecessor:
·
Expanded address capabilities:
IPv6 uses 16-byte-long addresses; these extend the CIDR addressing
hierarchy strategy and definitively overcome the scaling problem of
IPv4 (which uses 4-byte-long addresses).
·
New packet format:
The packets are based on a simple header (Fig.1). Also, the way
header options are encoded has been totally rethought.
·
Multicast support:
IPv6 supports multicast as a native communication mode. Moreover,
the addition of a scope field to multicast addresses improves the
scalability of multicast routing.
·
Flow labeling capability:
This allows a sender to identify packets as being related to one
another (i.e., belonging to the same traffic flow).
·
Anycast support:
Anycast is used to send a packet to any one member of a group of
receivers (supposedly the "closest" in terms of the routing
algorithm's unit of measurement).
·
Authentication and privacy capabilities.
It is interesting
to note how optional Internet-layer information is encoded in IPv6.
Indeed, those options are encoded in separate headers that may be
placed between the IPv6 header and the upper-layer header in the
packet. Such headers are called extension headers, each identified
by a distinct "next header" value Fig. 1). As a consequence, the
"complete" header of an IPv6 packet can actually be seen as a
"chain" of headers starting with the basic IPv6 header Fig. 1) and
followed by some (i.e., zero or more) extension headers.
So far, six
extension headers have been defined:
·
Hop-by-hop options header:
Carries information that has to be examined and processed by each
node on the packet's path, with the source and destination included.
·
Routing header:
Used by a source to list one or more routers to be visited by the
packet en route to its destination. This is very similar to IPv4's
source route option.
·
Fragment header:
Used when fragmentation is required. In IPv6, fragmentation can only
be done at the source.
·
Destination header:
Used to carry information that needs to be examined and processed by
the destination of the packet.
·
Authentication header and encapsulation security payload header.
New extension
headers can be defined if required.
Finally, we note
that the traffic class field in Fig. 1 is labeled the Differentiated
Services (DS) field in the DiffServ work.
The experience
gained during the years of operating and evolving IPv4 is reflected
in IPv6 through the incorporation of some very interesting design
features.
By supporting
multicast as a native communication mode, IPv6 takes a decisive step
toward avoiding the problems of bandwidth consumption exhibited by
the MBone. Indeed, due to its implementation using tunnels between
multicast routers (i.e., encapsulation of multicast packets in IPv4
packets), the MBone tends to replicate, several times, the same
packet on its links. This is because a packet is replicated a number
of times equal to the number of tunnels using the link. By avoiding
the use of tunnels for multicasting (because multicast is
"integrated" in the protocol), IPv6 will improve the support of
multicast in the Internet. This will only happen when most of the
routers in the Internet are based on IPv6, avoiding the need for
tunneling IPv6 through IPv4 routes.
Besides better
multicast routing, IPv6 also offers a very useful feature to improve
control of multicast traffic: the scope field added to the multicast
addresses. This allows precise control of where multicast packets
are sent, and is very useful to avoid "leaks" of multicast packets
on the Internet as well as ensure some security (e.g., making sure
that a remote site cannot eavesdrop on a local teleconference). The
same functionality can be obtained on the MBone today, but at the
price of a difficult tuning of the IPv4 time to live (TTL) field.
Also, the native support for anycast makes resource discovery a lot
easier.
The IPv6 (basic)
header format is simpler than that in IPv4. Indeed, some of the IPv4
header fields have been dropped (e.g., the header checksum) or made
optional (e.g., fragmentation). This can only be beneficial to the
performance achieved by IPv6, since the common-case processing cost
(i.e., CPU instructions) of packet handling is reduced. In other
words, packet forwarding is more efficient with IPv6.
Because of the
simplification of the IPv6 header, a new way to deal with options
had to be devised. This resulted in the extension headers already
described. The good point about extension headers is that they allow
less stringent limits on options than those imposed by IPv4 due to a
lack of space in the IPv4 header. This is the case, for instance,
with the source routing option which, in IPv4, limits the
specification of the route to a maximum of nine hops. In IPv6 the
limitation is 24 hops.
Fragmentation is
a costly operation. Not only does it increase the overhead
associated with the fragmented packet (because of the "replication"
of the header in each fragment), but it also requires significant
processing time at the fragmenting/reassembling nodes. By
restricting fragmentation to being performed by source nodes only,
IPv6 thus offloads the burden of fragmenting from potentially
heavily loaded routers. It is worth noting that, given the
widespread use of Ethernet LANs, this can lead to a network where it
is unlikely to encounter packets bigger than 1500 bytes.
The flow labeling
capability allows flow identification without layer violation (i.e.,
without combining fields from different protocol headers, e.g., IP
and UDP headers). This not only enables fine-grained flow
identification, but also simplifies the treatment of flows where
security issues may require payload encryption at the network (i.e.,
IP) layer. Flow labeling also has an important role in QoS support
since QoS in a network should be closely linked to the concept of
flow (at least at the edge of the network). This is because QoS as
required by multimedia communications cannot be defined on a
datagram basis.
Although we
acknowledge that extension headers were introduced for flexibility
when dealing with options as well as getting rid of most of IPv4's
limitations, the whole idea of extension headers nonetheless
introduces concerns. Since new extension headers as well as new
options for each of the existing headers can be specified at any
time, it seems almost impossible to design routers that will process
all the extensions efficiently. Indeed, when a new extension or
option is introduced, the only reasonable way to make an existing
router understand it is by means of a software update. This,
however, contradicts the trend to build high-speed routers using
specialized hardware.
Furthermore,
since each new extension or option will impose updates on routers'
and end systems' software, we may find there is disparity from one
node to another, since some will be updated and others not. Such
disparity in the functions supported in the nodes may well render
some of those extensions or options totally unusable (because the
nodes will either discard or misprocess packets containing options
or extensions they do not understand). At best, we may evolve toward
a situation where most of the nodes in the Internet will only
support the core extension headers and options specified in today's
version of the IPv6 specification.
A summary of the
two previous paragraphs is perhaps to say that extended systems are
probably better than extensible ones, especially when considering
large-scale networks.
The IPv6
specification says that "with one exception (the hop-by-hop option
header), extension headers are not examined or processed by any node
along a packet's delivery path, until the packet reaches the node
identified in the destination address field of the IPv6 header." We
would like to mention that when routing options are used (i.e.,
source routing), the destination of a packet changes several times
on the way to the final destination, which will trigger the
processing of the extension headers in the "intermediate"
destination (i.e., routers). This may cause the corresponding packet
to experience very long transmission delays.
It is worth
noting that the concept of flow seems to somewhat contradict the
concept of datagrams, and that simultaneous support for flows and
datagrams by the same packet type inevitably leads to unnecessary
overhead. When forwarding a packet in "datagram mode," the routers
ignore the flow label. When forwarding a packet in "flow mode" (by
ensuring that the different packets of a flow receive the same
treatment from the network), a router should ignore the destination
and source addresses of the packet. This is illustrated by the
example of a telephone-quality audio flow (64 kb/s) where one packet
is sent every 20 ms. Assuming now the typical use of RTP/UDP/IP for
media transfer in the Internet, the header "information" would
comprise 60 bytes (40 bytes of IPv6 header, 8 bytes of UDP header,
and 12 bytes of RTP header); the packet payload would be 160 bytes.
We would therefore have a per-packet overhead of about 27 percent,
of which 53 percent is IPv6 addresses and 5 percent is the flow
label.
With regard to
the treatment packets of a given flow should receive, the IPv6
specification is rather elusive, stating that routers may (and thus
may not) use flow labels to treat packets. It therefore appears that
a source using a flow label will have no guarantee that the
corresponding packets will receive special attention from the
network. In other words, it cannot be assumed that IPv6 provides a
communication scheme where the concept of flow has significance
throughout the network (i.e., for nodes other than the source and
destination).
The features of
IPv6 (address size, packet format, etc.) render it incompatible with
IPv4. In other words, in spite of the similarities in their name,
IPv6 and IPv4 are two different protocols unable to interoperate.
Therefore, a transition mechanism has had to be devised to
facilitate and encourage the deployment of IPv6. This transition
mechanism roughly specifies that:
·
Each IPv6 router or end system has to provide a complete
implementation of both versions (IPv4 and IPv6). This leads to a
dual-stack architecture in every IPv6 node.
·
IPv6 traffic will, when necessary, be carried over the IPv4 routing
infrastructure using a tunneling technique (i.e., encapsulation of
the IPv6 packets into IPv4 ones). This is likely to ruin the
advantages of native support for multicast communication.
Finally, current
Internet transport protocols (i.e., TCP and UDP) include the
addresses from the IP header in their checksum computation. Since
the size of IPv6 addresses is different from those of IPv4, these
transport protocols have to be modified.
|