In last post, we have seen all basics of IPv6 headers. As we know the IPv6 header is very efficient as compared to IPv4 header due to less fields in IPv6 header and extension header approach in Next header field.
These extension headers are added only if needed. Extension headers are appended after the basic datagram header as per requirements.
The extension headers numbers may be more in a single datagram, so in this case how to identify, how many extension headers are placed ? For this Header chaining mechanism is introduced.
It helps to identify next headers and upper layer protocol information.
In IPv6 the Next Header field has below responsibilities
- If there is an extension header present, the Next Header field determines its type and value. Every extension header also contains its own Next Header field identifying the next following data.
- It finds next extension header with particular value. Any extension headers will be chained with other header by simply announcing who is next header.
- The last extension header in Next header fields identifies the upper-layer protocol (TCP/UDP) to which the datagram content should be passed.
Below you can find the details about extension headers identification numbers/values and protocol identification numbers.
As the IPV6 is having this approach of extension headers, When the number of Extension headers increases, It is arranged sequentially , most important header for all node (router/device) will be placed first and header important for destination will be placed at last. That means no need to look into each Extension header field for processing. The first extension header will tell what next action needs to be taken.
This process improves the processing performance significantly.
Below diagram process shows some examples of Header chaining process for better understanding. The first datagram is plain IPv6 and TCP, the second one contains a single extension header (Routing) and the chain in third datagram includes two extension headers (Routing and Fragment).
IPv6 header Next = 6 (TCP)
Above a plain datagram without any extension headers.
IPv6 Header Next =43 (Routing)
Routing Header Next =6 (TCP)
Datagram containing Routing extension header in Next header.
IPv6 Header Next =43 (Routing)
Routing Header Next =44 (Fragment)
Fragment Header Next =6 (TCP)
Datagram containing Routing and fragment extension headers.
Let’s see some important extension headers in details -
The Routing extension header is responsible for route information of the datagram/packet. It allows user to define some sequence of nodes/devices of (IPv6 addresses) from which the datagram/packet should must pass/travel to reach destination.
Two types of options are defined in Routing extension header for efficient processing –
Type 0 - is a normal, allows all router addresses in sequence to reach to destination.
Type 2 - is a used for mobility purposes (source and destination)
Type -0 in Details,
In this case the Routing header contains two pieces of information:
1. Sequence(path) of nodes/routers with IPv6 addresses to reach destination.
2. Identifies how many routers are passed and how many are remaining to reach destination.
Working of Type-0 (Routing headers) headers in action –
- The sender use this feature and adds routing header to datagram/packet.
- In this header next hop/node address is placed as address of first checkpoint which is in between router in path to reach Destination address.
- It also adds the Routing header containing the sequence of remaining routers/nodes information.
- The final destination (its real target) is the last member of this sequence.
- When delivered to the Destination Address (actually the first node/Router) the router finds the Routing header and realizes that i am just a path router.
- So it swaps the address in the Destination Address and the next address from behind of the Routing header and remaining sequence left is decreased by 1 and datagram/packet is sent to the next node/router.
This process is executed on every Router.As the remaining sequence number is left 0, that means it reached to destination.
Type 2 in Details –
It just contains destination address. That means it is directly delivered to destination address using source as any temp address also known as home address. When the packet delivered to destination with home address, it present the data to destination with upper layer protocols details with home address.
Fragmentation Extension header-
Every lower-layer technology will use IPv6 to transport data in future over network. To transport datagrams over IPv6 , The lower layer devices have to consider packet size for IPv6 also known as MTU (Maximum Transmission Unit).
If the IPv6 datagram is longer than specified MTU 1500 bytes, the data must be divided/fragmented/chopped up and divided into set of smaller IPv6 datagrams, called fragments.
Fragments are transported over IPv6 network from source to destination and assembled by the receiver/destination to create the original packet/datagram. This is known as fragmentation.
Let’s see how the fragment extension headers works in IPv6 next header. The fragment extension header containing three important fields to perform fragmentation proces –
- Identification field - It helps to identify same datagram/packet from all, Which is originally fragmented from source. It is identified with unique values.
- Offset - It helps to identify the sequence numbers of fragments and re-assemble the fragmented data/fragments properly using sequence numbers.
- More fragments – This flag announces if this fragment is the last one or if another fragment is still there.
The helps to destination to identify the full datagram is arrived or not from source.
Process - The destination router collects all packets having Fragmentation Next header, using the inside fields. It identifies the fragments, using offset it reassembles properly. Using more fragments it confirms that all fragments for particular packet is received.
But fragmentation affects router packet processing, So IPv6 came with new guidelines about MTU-
- Minimum allowed MTU on IPv6 supporting links is 1280 Bytes (1500 Bytes is recommended). It decreases the need for fragmentation every time.
- Only the sender is allowed to fragment a datagram/packet. If some in between Router needs to forward it through a link with insufficient MTU, It must drop the datagram and send an ICMP message to the sender informing datagram drop and the MTU mismatch information.
- Every router has to know the Path MTU for all its neighbors to keep the communication efficient.
- Path MTU is the supported MTU size with route between the sender and destination. This is the largest datagram size deliverable with particular route. Source should try to send datagrams/packets of this size ,since they are the most efficient.
Path MTU is calculated based on ICMP messages. The packet is sent out on link with MTU value of our device, Then if the ICMP fail message is received due to different MTU size in path, Then sender decreases MTU size and send the ICMP message again, This process will continue till the packet is reached to destination.
The MTU value is noted when the ICMP message is reached at destination and shared to neighbours as Path MTU.
Options Extension header-
IPv6 header is of 40 bytes fixed. The options is a extension header in IPv6. Options Header provides some additional information related to the datagram for processing packets same like IPV4. It is very important field in IPv4 for special packet processing requirements,
Here IPv6 options header are having two groups:
Hop-by-Hop options - Options dedicated to every node forwarding the datagram,
Destination options - Options intended for the destination host only.
If Hop-by-hop options is used then it is placed at the start of all extension headers, since they are important for every router for forwarding the datagram. This option inform router that some important message is for you with Router alert - like jumbo frame and RSVP messages.
Destination options is mostly placed at last of extension headers. It is used in IPv6 Mobility supported applications
In this post, I tried to explain details about IPv6 Extension headers simply with key points. I know this post is lengthy, But every topic was related to each other. So I tried to complete this all in same post itself.
Hope you didn’t get bored while reading. I tried to put in points so that it can be easily understandable.
Hope you like this post..
For any likes and feedback, Plz comment with your Name and mail Id. For new users you can use Name/URL option in account.
Thanks for reading…