2

I’ve been struggling with the MTU topic for a while and I still can’t get how it really works. The majority of books that I read and the courses that I attended all seem to treat this subject in a superficial way.

I tried sending pings between a Mac Os host and a Windows host by simulating different mtu scenarios. Both hosts are in the same Lan and are connected to a Wifi router.

Scenario A

Mac Os host , mtu 1500

Windows host, mtu 1300

I sent a 1500 bytes ip packet with icmp echo request out of the Mac Os interface to the Windows 1300 mtu interface. The Windows machine accepts the packet normally and then sends back the echo reply by fragmenting the ip packet into two parts .

Scenario B

Mac Os host , mtu 1300

Windows host, mtu 1500

This scenario is the opposite of the first one. Hower when I send a 1500 bytes ip packet with ping request to the Mac Os host I don’t get any answer ( shouldn’t the Mac Os host have sent icmp error fragmentation needed ? ).

This behaviour it’s a little confusing. Is the mtu concerned with ingoing, outgoing or both directions traffic ?

How could be explained the different behaviour of the Mac Os and Windows hosts ?

A lot of books and resources talk about “next hop mtu” when referring to icmp error fragmentation needed. This statement seems appropriate if we have a scenario like this :

enter image description here

In this case when we send a packet bigger than 1492 destined to host B the router is going to send an ICMP error fragmentation needed ( provided that it hasn’t a firewall that prevents that from occurring ). This is because the “mtu interface to the next hop” is only 1492 bytes.

However consider this other scenario :

enter image description here

Let’s say I send a 1500 bytes ip packet with icmp echo request to R1 ( address 10.0.0.2 ). What is R1 going to do in this case ? Accept the packet as the Windows host did ? Simply drop the packet as the Mac Os host did ? Drop the packet and send an icmp error fragmentation needed ?

Is there some mtu wizard who could explain how things really work when it comes to mtu and try to make some order by explaining and putting together the scenarios I just showed ? What is this mtu at its core ? Is it a hardware limitation ( NIC )? Is it a software limitation ?

Big thank you to whoever is going to clarify this topic !

1 Answer 1

2

Simply put, all nodes within a network (=L2 segment) need to use the same MTU. If a node receives a packet larger than its interface MTU the packet is simply dropped.

Multi-homed nodes may use a different MTU on each interface, depending on the network they're connected to.

Routers/gateways are multi-homed nodes. For IPv4, they may need to fragment IP packets that are larger than the network allows that they are forwarded to. For IPv6, packets are not fragmented within the path. Rather, the sender host is obligated to perform path MTU discovery and intermediate routers simply return an ICMPv6 Packet too big error to the source.

In your scenario, if a host uses a different MTU than its gateway then that's never going to work.

7
  • Zac67# , thank you for the answer. You said "If a node receives a packet larger than its interface MTU the packet is simply dropped". However this is not true when I tried to send a 1500 bytes packet to a Windows host with 1300 MTU. It has been accepted by the Windows Host. What's going on in this case ?
    – Kode1000
    Aug 6, 2022 at 12:23
  • 1
    Dropping oversized packets is the standard. If a host is implemented otherwise, that's out of spec and may be regarded as a bug.
    – Zac67
    Aug 6, 2022 at 12:56
  • 1
    On the same layer-2 network, MTU mismatches cause packets to be dropped. A layer-3 MTU is different from a layer-2 MTU. ('tho they shouldn't be) If the frame exceeds the layer-2 MTU, it will be silently dropped. If the hardware is set to a larger MTU (9k jumbo), but the IPv4 MTU is 1500, the OS network stack may not check that a received packet has not exceeded the MTU; it just won't reply with a larger packet.
    – Ricky
    Aug 6, 2022 at 19:40
  • 1
    @ricky The "layer-2 MTU" is really the maximum frame size. There's no "MTU" on layer 2. ;-) But you're absolutely correct, layers 2 and 3 may handle that situation very differently and the (L3) MTU may just be used when sending packets.
    – Zac67
    Aug 6, 2022 at 19:59
  • @Zac67,@rick How could you explain the fact that my Windows host accepts Packet ( 1500 Bytes ) bigger than the current configured 1300 mtu ? Is it something having to do with MRU ?
    – Kode1000
    Aug 8, 2022 at 8:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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