Community discussions

 
pe1chl
Forum Guru
Forum Guru
Topic Author
Posts: 4845
Joined: Mon Jun 08, 2015 12:09 pm

How is the Actual MTU field in a GRE tunnel calculated?

Thu May 12, 2016 11:32 am

An interface of type GRE Tunnel has a read-only field mentioning the Actual MTU.
How is this field calculated? Is it a static calculation made from the header overhead?
(e.g. when IPsec is defined it decreases, so this could be true)
If so, what is the base value of the MTU it starts from? Is this a static value of 1500 or the actual MTU of
the interface the packets are being routed to? Setting a lower MTU on the port the GRE traffic is routed to
does NOT change the Actual MTU field... is that to be expected?

Is this field somehow adjusted when ICMP "fragmentation needed" packets are received after transmitting
a too-large datagram?

I am debugging issues that arise when using a GRE tunnel over an internet connection with a 1492-byte MTU
(PPPoE link and no RFC4638). Packets with maximum size, equal to "Actual MTU" are just silently dropped.
It could well be that the internet router does not return the correct ICMP or it is dropped somewhere, I could
not yet debug that. Setting a static MTU to a lower value fixes the issue, but I am curious what the
functionality of the Actual MTU field is and if it should be able to resolve this issue when everything is
correctly configured.
 
User avatar
mrz
MikroTik Support
MikroTik Support
Posts: 5689
Joined: Wed Feb 07, 2007 12:45 pm
Location: Latvia
Contact:

Re: How is the Actual MTU field in a GRE tunnel calculated?

Thu May 12, 2016 12:13 pm

Actual MTU = configured MTU on physical interface - protocols overhead.
This value is not adjusted when ICMP fragmentation required packet is received.
 
pe1chl
Forum Guru
Forum Guru
Topic Author
Posts: 4845
Joined: Mon Jun 08, 2015 12:09 pm

Re: How is the Actual MTU field in a GRE tunnel calculated?

Thu May 12, 2016 4:29 pm

Actual MTU = configured MTU on physical interface - protocols overhead.
This value is not adjusted when ICMP fragmentation required packet is received.
Ok... that is what I guessed, but the admin of that router (remote from my side) claims that the Actual MTU does
not decrease when he decreases the MTU on the ether1 port.

Of course "physical interface" is tricky with GRE (and other tunnels) because it depends on the routing of the remote IP.
In this case this routing is not via the default route but via a single-address route to the other end of the tunnel via another
router that does the PPPoE, so at first the MTU as far as known to MikroTik was 1500 but actually it was 1492 one
hop further. I would think that when ether1 MTU is set to 1492 too everything would be fine, but he needed to set
the MTU on the GRE tunnel to fix it.

Those 1492-byte MTU PPPoE links are always causing problems :-(
Fortunately on my own Internet access RFC4638 is implemented and I have 1500-byte MTU there.
Of course it would be best when the GRE tunnel re-calculates the Actual MTU when it receives the ICMP fragmentation
needed reply (usually with the actual MTU in it).
 
ChrisCCC
just joined
Posts: 3
Joined: Thu Apr 07, 2016 7:28 pm

Re: How is the Actual MTU field in a GRE tunnel calculated?

Fri Sep 23, 2016 9:30 pm

Sorry to resurrect an old thread, but I have a followup question.

I have a router, which uses a GRE tunnel over a PPPoE dialler. The PPPoE MTU is set to 1492 and, with a GRE overhead of 24 bytes, I would expect the GRE tunnel's actual MTU to set itself to 1468. What I don't understand is that the Actual MTU is actually getting set to 1456. Any idea where this 12 bytes is going?

I have other routers, with almost identical configuration, which have the correct Actual MTU, so I'm finding this very confusing.

Thanks.

Who is online

Users browsing this forum: llag, PhoeKhwar, rualark, salahspirit and 47 guests