Advertisment

IPv6: Under the Hood

author-image
PCQ Bureau
New Update

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.

Advertisment

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).

Advertisment

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

Advertisment

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

Advertisment

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

Advertisment
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.

Advertisment

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

Advertisment

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 

Authentication

Next Header= Security

Security

Next Header=



UDP

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

Advertisment