Fragmentation at Network Layer - GeeksforGeeks

26 Oct, 2021
Prerequisite – IPv4 Datagram Fragmentation and Delays 
Fragmentation is done by the network layer when the maximum size of datagram is greater than maximum size of data that can be held in a frame i.e., its Maximum Transmission Unit (MTU). The network layer divides the datagram received from the transport layer into fragments so that data flow is not disrupted.  
Since there are 16 bits for total length in IP header so, the maximum size of IP datagram = 216 – 1 = 65, 535 bytes.  
It is done by the network layer at the destination side and is usually done at routers.
Source side does not require fragmentation due to wise (good) segmentation by transport layer i.e. instead of doing segmentation at the transport layer and fragmentation at the network layer, the transport layer looks at datagram data limit and frame data limit and does segmentation in such a way that resulting data can easily fit in a frame without the need of fragmentation.
Receiver identifies the frame with the identification (16 bits) field in the IP header. Each fragment of a frame has the same identification number.
Receiver identifies the sequence of frames using the fragment offset(13 bits) field in the IP header
Overhead at the network layer is present due to the extra header introduced due to fragmentation.
Identification (16 bits) – use to identify fragments of the same frame.
Fragment offset (13 bits) – use to identify the sequence of fragments in the frame. It generally indicates a number of data bytes preceding or ahead of the fragment. Maximum fragment offset possible = (65535 – 20)  = 65515 {where 65535 is the maximum size of datagram and 20 is the minimum size of IP header} So, we need ceil(log265515) = 16 bits for a fragment offset but the fragment offset field has only 13 bits. So, to represent efficiently we need to scale down the fragment offset field by 216/213 = 8 which acts as a scaling factor. Hence, all fragments except the last fragment should have data in multiples of 8 so that fragment offset ∈ N.
More fragments (MF = 1 bit) – tells if more fragments are ahead of this fragment i.e. if MF = 1, more fragments are ahead of this fragment and if MF = 0, it is the last fragment.
Don’t fragment (DF = 1 bit) – if we don’t want the packet to be fragmented then DF is set i.e. DF = 1.
It takes place only at the destination and not at routers since packets take an independent path(datagram packet switching), so all may not meet at a router and hence a need of fragmentation may arise again. The fragments may arrive out of order also. 
 
 
Destination should identify that datagram is fragmented from MF, Fragment offset field.Destination should identify all fragments belonging to same datagram from Identification field.Identify the 1st fragment(offset = 0).Identify subsequent fragments using header length, fragment offset.Repeat until MF = 0.
Destination should identify that datagram is fragmented from MF, Fragment offset field.
Destination should identify all fragments belonging to same datagram from Identification field.
Identify the 1st fragment(offset = 0).
Identify subsequent fragments using header length, fragment offset.
Repeat until MF = 0.
Efficiency (e) = useful/total = (Data without header)/(Data with header) 

Throughput = e * B { where B is bottleneck bandwidth } 
  Example – An IP router with a Maximum Transmission Unit (MTU) of 200 bytes has received an IP packet of size 520 bytes with an IP header of length 20 bytes. The values of the relevant fields in the IP header. 
Explanation – Since MTU is 200 bytes and 20 bytes is header size so, the maximum length of data = 180 bytes but it can’t be represented in fragment offset since it is not divisible by 8 so, the maximum length of data feasible = 176 bytes. Number of fragments = (520/200) = 3. Header length = 5 (since scaling factor is 4 therefore, 20/4 = 5) Efficiency, e = (Data without header)/(Data with header) = 500/560 = 89.2 % 
 
  
GATE Practice question – 
GATE CS 2013 | Question 65GATE-CS-2014-(Set-3) | Question 38GATE-CS-2015 (Set 2) | Question 65GATE-CS-2016 (Set 1) | Question 63GATE CS 2018 | Question 37  
GATE CS 2013 | Question 65
GATE-CS-2014-(Set-3) | Question 38
GATE-CS-2015 (Set 2) | Question 65
GATE-CS-2016 (Set 1) | Question 63
GATE CS 2018 | Question 37  
coder45g
pavanpal25878543
anurag219tiwari
Pushpender007
Computer Networks
GATE CS
Technical Scripter
Computer Networks
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Caesar Cipher in Cryptography
Socket Programming in Python
UDP Server-Client implementation in C
Socket Programming in Java
Differences between IPv4 and IPv6
ACID Properties in DBMS
Types of Operating Systems
Page Replacement Algorithms in Operating Systems
Normal Forms in DBMS
Difference between Process and Thread