Hi forum!
I come to you 'cause I’m trying to figure out what the mtu on a super-tunnelized setup should be. MTU between brackets:
RouterBoard1 -------------------- RouterBoard2
Ethernet (1500) ------------------- Ethernet (1500)
PPP (1460) ------------------------ PPP (1460)
EoIP (1500) ------------------------ EoIP (1500)
PPPoE (1480) ---------------------- PPPoE (1480)
With those MTUs, we get very slow bandwidth over two PCs connected to both PPPoE tunnel extremes, so apparently fragmentation appears. If we drop MTU on PPPoE tunnel to 1400 everything seems to work fine. The question is: if we build up each tunnel inside the previuos one, does the MTU should be decreasing according to the size of each header? and if so, why the solution above works if EoIP MTU is still 1500 (40 bytes larger then the PPP one?
By the way, I post this on Wireless 'cause some parts of the link between both PCs is wireless (all interfaces with MTU=1500)
Thanks a lot!!
Nando.
You don’t state what kind of PPP you are running on the outer layer? Is it a PPP-over-IP protocol, such as either PPTP or L2TP?
I believe that EoIP will in fact fragment packets if the MTU of the EoIP tunnel is greater than the learned PMTU between the EoIP endpoints. So your slowness could be for 1 of 2 reasons: 1) PMTU discovery of the opposite end of the PPPoIP tunnel is being hampered somehow (you aren’t blocking any ICMP are you?), or 2) the fragmentation itself is causing a performance hit.
Yes, the sum of the various headers of each tunnel will have to be subtracted from the MTU of the outermost layer in order to discover the highest-possible non-fragmenting MTU on the innermost layer.
The reason you incur no performance hit when you reduce the PPPoE MTU to 1400 but leave the EoIP MTU at 1500 is because MTU is the [M]aximum [T]ransmission [U]nit, not a fixed transmission unit. So if you send a datagram over the EoIP tunnel that is smaller than 1500 bytes, EoIP is not going to pad nulls onto the end of that datagram to make it 1500 bytes before it sends it. So even if EoIP MTU is set to 1500, if every frame you send over the EoIP tunnel is 1408 bytes (1400 + PPPoE 8-byte header), then those datagrams will never fragment.
And if you do the math, 1500 (ethernet) - 40? (PPPoIP) - 42 (EoIP) - 8 (PPPoE) = 1410 as an MTU for the innermost tunnel, which is 10 bytes greater than 1400. So you can probably go as high as 1410 on the PPPoE MTU without running into problems.
Because only the innermost MTU matters (since all data will be constrained by it in your scenario), it’s not strictly necessary, but you may find it helpful just for your own sake (in keeping track / doing the math as you configure your routers) to set the MTU of each layer of tunneling to the maximum you would expect it to be able to send, given the next layer up. So leave ethernet at 1500, PPPoIP at 1460, then set EoIP interface MTU to 1418, and finally PPPoE MTU to 1410.
Hope this helps,
– Nathan