IP fragmentation
From Wikipedia, the free encyclopedia
The Internet Protocol allows IP fragmentation so that datagrams can be fragmented into pieces small enough to pass over a link with a smaller MTU than the original datagram size.
RFC 791 describes the procedure for IP fragmentation, transmission and reassembly of datagrams. RFC 815 describes a simplified reassembly algorithm which can easily be implemented in hosts.
The Identification field, and Fragment offset field along with Don't Fragment and More Fragment Flags are used for Fragmentation and Reassembly of IP datagrams.
There are two approaches that can be followed for deciding the size of IP datagrams to be sent over the network. The sending host can send a IP datagram of size equal to the MTU of the first hop of the source destination pair. The second is to run the "Path MTU discovery" algorithm to decide what is the IP datagram size to send to a destination.
RFC 1191 describes "Path MTU discovery", a technique for determining the path MTU between two IP hosts, so that IP fragmentation can be avoided.
In case where a router in the network receives a PDU larger than the next hop's MTU, it has two options. Drop the PDU and send an ICMP message which says "Packet too Big", or to Fragment the IP packet and send over the link with a smaller MTU.
If a receiving host receives an IP packet which is fragmented, it has to reassemble the IP packet and hand it over to the higher layer. Reassembly always happens only in the receiving host. RFC 815 gives a simplified algorithm for reassembly of received IP datagrams.
The details of the fragmentation mechanism, as well as the overall architectural approach to fragmentation, are different in IPv4, the current version of the Internet Protocol, and IPv6, the newer version.
In IPv4 routers do the fragmentation, where as in IPv6, routers do not fragment, but drop the packets that are larger than the MTU size. Though the header formats are different for IPv4 and IPv6, similar fields are used for fragmentation, so the algorithm can be reused for Fragmentation and reassembly.