Even though IPv6 incorporates a lot of changes from IPv4,
the basic underlying principles are the same-for
instance, support for connectionless delivery, allowing the sender to choose the
size of the datagram, facilities for fragmentation, source routing, etc.
Datagram structure
The IPv6 datagram has a fixed size (40-byte) base header, with optional
extension headers and data together occupying a maximum of 64 kB.
Base header | Extension header-1 | Extension header-N | Data |
40-byte (fixed length) | Optional | Optional | Optional |
Addressing scheme
IPv6 provides for 128-bit addressing, as against 32-bit
addressing used by IPv4. So, those of you who find entering a 12-digit IPv4
address into your browser a headache won't be happy, because if the same
scheme is preserved, it'll mean entering 48 digits. According to the new
scheme, addresses are entered in eight groups of 4 Hex digits separated by
colons, so that you enter a 32-digit sequence, such as
BD23:0000:0000:0000:1567:0234:9887:0991 (known as colon hex notation).
Considering that this notation isn't exactly short, a few
optimizations can be used:
a) Leading 0's within a group can be omitted, that is, 0234
can be written as 234
b) One or more groups of 0's can be replaced by a
double-colon, that is, 0000:0000:0000 can be replaced by a :: (this technique is
called zero-compression). However, zero-compression can be applied to only one
set of 0's in a particular IP address
Incorporating these optimizations, the above address can be
written as BD23::1567:234:9887:991
Addresses beginning with 80 zero's are reserved for IPv4
addresses. Since IPv6 addresses are 128-bit and IPv4 addresses are 32-bit,
during the transition from IPv4 to IPv6, both addresses will have to co-exist.
In order that the transition is transparent to end users, we have to device a
scheme that lets a person enter an IPv4 address that's interpreted as an IPv6
address. For this purpose, if the first 80 bits of the IPv6 address are 0, it
will be interpreted that the IPv6 address entered is actually an IPv4 address.
That leaves us with 48 bits. Out of these, 32 are for the IPv4 address, the rest
16 specify how this IPv6 packet will be tunneled over the IPv4 infrastructure
and network.
An IPv4 address can, in IPv6 notation, be written as a
double-colon followed by the IPv4 address in dotted decimal notation. For
example, the address 202.54.15.30 would be written as ::202.54.15.30
IPv6 also supports the Anycast addressing scheme, where a
packet may be sent to any one of the group of hosts for which it is destined.
Header structure
The IPv6 header is a big improvement over the IPv4 header,
with six of the 13 fields in the IPv4 header being removed. This allows routers
to process packets faster, improving throughput.
The header structure of IPv6
Version | Tclass | Flow Identifier |
Data Length | Next Header | Hop Limit |
Source Address | ||
Destination Address |
-
The Version field (4-bit) indicates the current version
of the Internet Protocol being used, in this case it is 6. - The TClass field (4-bit) specifies the Traffic Class of the datagram.
Being a 4-bit field, the maximum values it can accommodate are 16 (0-15).
Values 0-7 are for transmissions that are capable of slowing down. For
example, a value of 1 is reserved for News, 4 for FTP and 6 for Telnet, and
a service with a lower value is more likely to be delayed. Values 8-15 are
for real-time traffic, whose sending rate is to be maintained constant in
the case of congestion (even in the case of data loss). -
The (24-bit) Flow Identifier is a randomly chosen number
between 000000 and FFFFFF, which is used to set up a pseudo-connection
between source and destination with particular requirements and properties.
This field is still under experimentation. -
The Data Length (16-bit) specifies the size of data in
the packet. Being a 16-bit field, the maximum amount of data that can be
sent in a packet is 216 bits, that is, 64 kB. Note that the Base header is
not considered part of the data in IPv6-unlike IPv4-while the optional
extension headers are considered part of the payload. -
The Hop Limit (8-bit) is exactly like the Time-To-Live
field in the IPv4 Header. It specifies the maximum number of hops a packet
is allowed before being discarded. -
The (128-bit) Source Address and Destination Address
fields are used to specify the Source and Destination Address of the packet. -
The Next Header (8-bit) field can be considered like a
"next-node" pointer in a linked list, with each optional field
considered as the information part of the linked list. The end of options is
indicated by the protocol number (TCP or UDP) that the particular datagram
is using.
Since the optional headers are considered part of the
payload, any intermediate node must not process them.
The optional headers that are available are:
a) A Hop-by-Hop options header containing information for
routers
b) A Routing header that can specify a particular path to
follow. Both Strict Routing (the exact path to follow) and Loose Routing
(intermediate nodes to visit) are allowed
c) Fragmentation options: In IPv6, unlike IPv4, only the
source can fragment data packets. To determine the smallest packet size the
source can transmit, it sends a path MTU discovery datagram that obtains the
smallest packet size along the route which packets will be transmitted, and
fragments packets suitably. This simplifies the router's task and increases
throughput
d) Support for authentication
e) Header containing encryption information.
f) Destination options, that are interpreted only at the
destination host
For example, a packet may have the following structure:
Base Header
Next Header=Routing Info |
Routing Info
Next Header=TCP |
TCP Segment |
While another might look like:
Base Header Next Header= |
Authentication
Next Header= Security |
Security
Next Header= |
UDP Segment |
Security enhancements
A very important and much-needed improvement in IPv6 is the
support for authentication and security. Two optional header fields can be used
for this purpose-one for authentication and the other for encryption.
Kapil Nagpal