Ads 468x60px

Showing posts with label IPv6. Show all posts
Showing posts with label IPv6. Show all posts

Tuesday, August 30, 2011

Understanding IPv6 Extension Headers in Details

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
  1. 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.
  2.  It finds next extension header with particular value. Any extension headers  will be chained with other header by simply announcing who is next header.
  3. 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)
TCP segment
 Above a plain datagram without any extension headers.

IPv6 Header Next =43 (Routing)
Routing Header Next =6 (TCP)
TCP segment
 Datagram containing Routing extension header in Next header.

IPv6 Header Next =43 (Routing)
Routing Header Next =44 (Fragment)
Fragment Header Next =6 (TCP)
TCP segment
 Datagram containing Routing and fragment extension headers.

Let’s see some important extension headers in details -

Routing Header

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 fragmentsThis 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…

Wednesday, August 24, 2011

IPv6 and IPv4 Headers

As we discussed in last post about IPv6 and IPv4 headers.  In this post we will see in details about it.
IPv6 header  design is focused mainly on simplicity - to keep the datagram as simple as possible and to keep the size of the headers fixed.
The  reason for this was to increase processing performance - simple constant size headers can be processed quickly, at or very close to wire-speed.

  • The IPv4 header format contains a lot of fields including some unpredictable optional ones leading to fluctuating header sizes. 
  • IPv6 shows a different approach - the basic header is minimized and  with constant/fix  size. 
  • Only important fields are included in IPv6 headers. 
  • Everything else has been separated from header and formed extension headers, which are attached on requirements in IPv6 headers.
Check in below diagram, the similarities and differences between IPv4 header format and IPv6 header format.

While designing IPv6 header, Engineers maintained some important IPV4 header fields in IPv6 header format also.

In above diagram, you can check different colours indicating similarities and differences.

Header Fields –

  • Version - Protocol version identification. It helps to identify protocol version as IPv6.
  • Traffic Class - Intended for the Quality of Service (QoS). It may distinguish various classes or priorities of traffic (in combination with other header fields, e.g. source/destination addresses).
  • Flow Label - Identifies a flow which is a “group of related datagrams or flow from same session”.
  • Payload Length – The Total Length is the length of the IPv4 packet including the header.But in IPv6, the Payload Length does not include the 40-byte IPv6 header. It save the host or router receiving a packet from having check whether the packet is large enough to hold the IP header in initial phase. Making for a small efficiency gain. Despite the name, the Payload Length field includes the length of any additional headers, not just the length of the user data.It is in Bytes, so the maximum possible payload size is 64 KB.
  • Next Header -The protocol header which follows, It identifies the type of following data - it may be some extension header or upper layer protocol (TCP, UDP) data.
  • Hop Limit - Time to Live (TTL) is now called Hop Limit in IPv6. The sending node assigns some value to this field defining the reach of given datagram. Every forwarding host decreases the value by 1. If decremented to zero, the datagram is dropped and an ICMP message is sent to the sender. It protects the IPv6 transport system against routing loops - in the case of such loop the datagram circulates around the loop for a limited time only.
  • Source Address - It contains the IPv6 address of the host who sent this datagram.
  • Destination Address - This is the target/destination address  where  the datagram should be delivered to particular IPv6 address.

 Details - 
  • The total length of the datagram header doubled (from 20 bytes to 40 bytes) although the IPv6 addresses are four times as long.
  • In IPv6  just a subset of IPv4 header fields have been adopted.
  • The whole second line of the IPv4 datagram, designed for fragmentation, has been moved to an extension header in IPv6.
  • The CRC (cyclic redundancy check) has been skipped for two good reasons: First, frame consistency is checked in lower layers, so it is largely redundant.
  • Second, CRC decelerates the datagram processing – every forwarding node decreases the datagram lifetime, so it changes the header and must recalculate the CRC.
  • Thanks to the constant header length the corresponding header length field is not necessary anymore.

Due to all these reasons, IPv6 headers are more efficient and less CPU intense to Routers than IPv4 headers. 

Hope this post is informative for you. 

Thanks for reading. For feedback and likes, Plz comment with Name and mail id, New users can use Name/URL option.

IPv6 - Basic Introduction

Hi , As we all know IPv6 is on its way to enter in our life. Why I am saying life ..?
Since in one year it is planned to implement in India and hopefully I know its same situation everywhere.

India's Internet Gateway and all Service provider is all equipped and ready with IPv6 Internet services. 

As right now we are using so many devices, Which are taking us on Internet like Mobile, Laptop, PC, Pads,etc. But we don't have enough IP addresses for usage. 

Right now major IPV4 addresses are allocated to U.S.  So as we need addresses, we don't have any other option than IPv6.

First a brief , Why we want IPv6 address ?
Right now we are facing severe shortage of public IP address, every device wants a public IP address to go on internet. Till now we are using NAT to survive or we can say to extend life of IPv4.  Otherwise IPv4 was suppose to expire years before.

Current Network Limitation with IPv4 Addresses - 
  • Shortage of Public IP addresses.
  • Mobility is limited.
  • New devices are lacking with IP address.
  •  Management issues.
  • IPv4 lacks scalability due to 4.4bn addresses. Major address pools are allocated to US.

Everybody is looking positively for IPv6 deployments. Since it’s our future …

Let’s see some Goals and Benefits of IPv6.

Goals -
  •  Every Network device should have Public IP address to use Internet.
  •  As we have public network, we can have IPSec and secure communication across Networks.
  • Mobility – In IPv6 we have tons of address, That means every Mobile devices will have Public address for communications.
  • IPv6 major target is to eliminate NAT.

Benefits –
  • IPv6 comprises of 128 bit address as compared to IPv4 32 bit address space.
  • It is having 3.4 x 1038 address, which is more than enough.
  • IPv6 is having very simpler header as compared to IPv4 header. If you compare size of header, its more than IPV4. But right now bandwidth is not issue or our concerns.
  • IPv6 has less fields in header, It will help to improve Router CPU performance as compared to IPv4 complex header. Which is CPU intense. 
  • As IPv6 header is simple, with less fields. So, Its very secure as compared to IPv4. 
  • In IPv6 apart from basic header, we have extension headers. Which will be used as per requirements.  For example a mobile node adds mobility related extension headers to its outgoing traffic.
  • IPv6 don’t have broadcast. Now in IPv6 everything will majorly work on Multicast.
  • ARP has been replaced with ICMP ND (Network discovery).
  • IPv6 will improve routing – Aggregated Routing entries are created to reduce Routing table sizes.
I just started making study notes on IPv6, So In upcoming post I will share more about IPv6.

Hope this post is informative for you.

Thanks for reading. For feedback and likes, Plz comment with Name and mail id, New users can use Name/URL option.

Related Posts Plugin for WordPress, Blogger...