1

I was going through this Cisco Documentation - Resolve IP Fragmentation, MTU, MSS, and PMTUD Issues with GRE and IPSEC

I have a confusion with example 3. Screenshot below.

enter image description here

As I understand, with the total of the header size would be 44 (New IP Header (20) + GRE Header (4) + Original IP Header (20)). As the example 3 mentions, a router in between the path has an MTU of 1400 bytes. So that leaves 1400 - 44 = 1356 bytes for the TCP Payload.

However, the example shows "1352 bytes", that is 4 short of a minimum MTU along the path of 1400 bytes. The remaining data of 104 bytes has been carried over to the next fragment.

Why is the first packet not a complete 1400 bytes rather 1396 bytes (1352 + 44) and have 100 bytes of the TCP payload added on to the next fragment?

Thanks.

0

You are forgetting the fact that the data must be fragmented on an eight-octet (64-bit) boundary. If you take the 1400-octet MTU and subtract the 44-octet header, that leaves 1356 octets for the data, but 1356 is not evenly divisible by eight: 1356 / 8 = 169.5, but 169 x 8 = 1352.

See RFC 791, INTERNET PROTOCOL:

To fragment a long internet datagram, an internet protocol module (for example, in a gateway), creates two new internet datagrams and copies the contents of the internet header fields from the long datagram into both new internet headers. The data of the long datagram is divided into two portions on a 8 octet (64 bit) boundary (the second portion might not be an integral multiple of 8 octets, but the first must be). Call the number of 8 octet blocks in the first portion NFB (for Number of Fragment Blocks). The first portion of the data is placed in the first new internet datagram, and the total length field is set to the length of the first datagram. The more-fragments flag is set to one. The second portion of the data is placed in the second new internet datagram, and the total length field is set to the length of the second datagram. The more-fragments flag carries the same value as the long datagram. The fragment offset field of the second new internet datagram is set to the value of that field in the long datagram plus NFB.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.