MTU for PPPoE over VLAN

It's "wrong" because the MTU you set on the interface (let's say ether1 for the simplest case where pppoe-out1 is put on ether1) is a setting that caps the size of IP (Internet Protocol) packets that will be sent on ether1, those with EtherType 0x0800 and 0x86dd. That is not the limit that the router will use for all the other kind of EtherType, of which PPPoE has its own values. ether1 can have an MTU of 1500 and you can slap a VLAN interface on it, which add one layer with EtherType 0x8100 for example, and you can be sure that packets sent on that VLAN will not have the MTU reduced to 1496. That MTU setting on ether1 has no effect on the 0x8100 frames

In the same way that MTU 1500 on ether1 has no effects on the PPPoE frames with EtherType 0x8863 or 0x8864.

I never claimed or implied that it did any of that.
I have only proven, which your own examples also confirmed, that the RouterOS PPPoE client explicitly looks at the parent interface MTU to calculate its limits when max-mtu=auto and max-mru=auto (default). That's it.
Any other stories about raw EtherType mechanics are completely out of the scope of my initial argument and don't change how the software actually behaves.
So it's not wrong to bump the parent interface MTU and leave everything else as it is in order to achieve the same goal, it's just "wrong".

My own experience: my router is configured as "router on a stick", which means that physical WAN interface (connecting ONT) is on a managed switch. Whatever I was trying to set up on router itself, I was ending up with MTU of 1492 (or more generally 1480) bytes.

Until I remembered to enable jumbo frames on my managed switch ... at that point PPPoE started to work with MTU of 1500.

Note that all interfaces on router (ether1, bridge, vlan interface on bridge, ...) have MTU set to 1500 and L2MTU to whatever defaults are (for ether1 it's 1592 bytes).

So make sure you have L2MTU at least 1512 (overhead: VLAN 4 bytes, PPPoE 8 bytes) on all ports on all the network gear you control. And if PPPoE still doesn't give you MTU of 1500, then it's ISP who interferes with it somehow.

@Virsacer Try to set a value in the keep alive timeout, 10 for example. If your ISP does really support RFC4638, it will negotiate at 1500 automatically, nothing else is required.

Ok, I see the packets now:

2026-06-01T17:45:52.619463+02:00 router1 pppoe,debug,packet vlan7: sent PADI to FF:FF:FF:FF:FF:FF
2026-06-01T17:45:52.619463+02:00 router1 pppoe,debug,packet     session-id=0x0000
2026-06-01T17:45:52.619463+02:00 router1 pppoe,debug,packet     host-uniq=0x3f110008
2026-06-01T17:45:52.619477+02:00 router1 pppoe,debug,packet     service-name=
2026-06-01T17:45:52.619503+02:00 router1 pppoe,debug,packet     ppp-max-payload=1500
2026-06-01T17:45:52.625959+02:00 router1 pppoe,debug,packet vlan7: rcvd PADO from B4:8A:5F:XX:XX:XX
2026-06-01T17:45:52.625959+02:00 router1 pppoe,debug,packet     session-id=0x0000
2026-06-01T17:45:52.625959+02:00 router1 pppoe,debug,packet     ac-name=ju7014-XXXXXX
2026-06-01T17:45:52.625959+02:00 router1 pppoe,debug,packet     host-uniq=0x3f110008
2026-06-01T17:45:52.625959+02:00 router1 pppoe,debug,packet     service-name=
2026-06-01T17:45:52.625959+02:00 router1 pppoe,debug,packet     ac-cookie=59 55 12 XX XX 32 XX XX XX XX XX XX 17 0c 18 be
2026-06-01T17:45:52.625959+02:00 router1 pppoe,debug,packet vlan7: sent PADR to B4:8A:5F:XX:XX:XX
2026-06-01T17:45:52.625959+02:00 router1 pppoe,debug,packet     session-id=0x0000
2026-06-01T17:45:52.626024+02:00 router1 pppoe,debug,packet     host-uniq=0x3f110009
2026-06-01T17:45:52.626024+02:00 router1 pppoe,debug,packet     service-name=
2026-06-01T17:45:52.626057+02:00 router1 pppoe,debug,packet     ppp-max-payload=1500
2026-06-01T17:45:52.626057+02:00 router1 pppoe,debug,packet     ac-cookie=59 55 12 XX XX 32 XX XX XX XX XX XX 17 0c 18 be
2026-06-01T17:45:52.626203+02:00 router1 pppoe,debug,packet vlan7: rcvd PADO from E8:A2:45:XX:XX:XX
2026-06-01T17:45:52.626203+02:00 router1 pppoe,debug,packet     session-id=0x0000
2026-06-01T17:45:52.626246+02:00 router1 pppoe,debug,packet     ac-name=ju7013-XXXX
2026-06-01T17:45:52.626246+02:00 router1 pppoe,debug,packet     host-uniq=0x3f110008
2026-06-01T17:45:52.626283+02:00 router1 pppoe,debug,packet     service-name=
2026-06-01T17:45:52.626307+02:00 router1 pppoe,debug,packet     ac-cookie=59 55 12 XX XX 32 XX XX XX XX XX XX 17 0c 18 be
2026-06-01T17:45:52.631758+02:00 router1 pppoe,debug,packet vlan7: rcvd PADS from B4:8A:5F:XX:XX:XX
2026-06-01T17:45:52.631758+02:00 router1 pppoe,debug,packet     session-id=0x07d1
2026-06-01T17:45:52.631861+02:00 router1 pppoe,debug,packet     service-name=
2026-06-01T17:45:52.631909+02:00 router1 pppoe,debug,packet     host-uniq=0x3f110009
2026-06-01T17:45:52.631937+02:00 router1 pppoe,debug,packet     ppp-max-payload=1500
2026-06-01T17:45:52.631937+02:00 router1 pppoe,debug,packet     ac-name=ju7014-XXXXXX
2026-06-01T17:45:52.631937+02:00 router1 pppoe,debug,packet     ac-cookie=59 55 12 XX XX 32 XX XX XX XX XX XX 17 0c 18 be
2026-06-01T17:45:52.655948+02:00 router1 pppoe,ppp,debug,packet  pppoe1: rcvd LCP ConfReq id=0x48
2026-06-01T17:45:52.655948+02:00 router1 pppoe,ppp,debug,packet    <mru 1496>
2026-06-01T17:45:52.655948+02:00 router1 pppoe,ppp,debug,packet    <magic 0xc41e5306>
2026-06-01T17:45:52.655948+02:00 router1 pppoe,ppp,debug,packet    <auth  chap>
2026-06-01T17:45:52.655948+02:00 router1 pppoe,ppp,debug,packet  pppoe1: sent LCP ConfReq id=0x6
2026-06-01T17:45:52.655948+02:00 router1 pppoe,ppp,debug,packet    <mru 1500>
2026-06-01T17:45:52.655948+02:00 router1 pppoe,ppp,debug,packet    <magic 0x462aa72a>
2026-06-01T17:45:52.655948+02:00 router1 pppoe,ppp,debug,packet  pppoe1: sent LCP ConfAck id=0x48
2026-06-01T17:45:52.655948+02:00 router1 pppoe,ppp,debug,packet    <mru 1496>
2026-06-01T17:45:52.655948+02:00 router1 pppoe,ppp,debug,packet    <magic 0xc41e5306>
2026-06-01T17:45:52.655948+02:00 router1 pppoe,ppp,debug,packet    <auth  chap>
2026-06-01T17:45:52.657402+02:00 router1 pppoe,ppp,debug,packet  pppoe1: rcvd LCP ConfAck id=0x6
2026-06-01T17:45:52.657402+02:00 router1 pppoe,ppp,debug,packet    <mru 1500>
2026-06-01T17:45:52.657402+02:00 router1 pppoe,ppp,debug,packet    <magic 0x462aa72a>
2026-06-01T17:45:52.657807+02:00 router1 pppoe,ppp,debug,packet  pppoe1: rcvd CHAP Challenge id=0xa9
2026-06-01T17:45:52.657807+02:00 router1 pppoe,ppp,debug,packet     <challenge len=31>
2026-06-01T17:45:52.657807+02:00 router1 pppoe,ppp,debug,packet     <name JUNOS>
2026-06-01T17:45:52.657909+02:00 router1 pppoe,ppp,debug,packet  pppoe1: sent CHAP Response id=0xa9
2026-06-01T17:45:52.657909+02:00 router1 pppoe,ppp,debug,packet     <response len=16>
2026-06-01T17:45:52.657909+02:00 router1 pppoe,ppp,debug,packet     <name XXXXXXXXXXXXXX>
2026-06-01T17:45:52.879023+02:00 router1 pppoe,ppp,debug,packet  pppoe1: rcvd CHAP Success id=0xa9
2026-06-01T17:45:52.879023+02:00 router1 pppoe,ppp,debug,packet     SRD=330000#SRU=165000#SRT=L2#LID=XXXXXX.XXX.XXX.230XXXX491#TR069URL=https://acs.XXXXXXXXXXXXXX.XX:7547#TR069PROVC=XX#
2026-06-01T17:45:52.879023+02:00 router1 pppoe,ppp,info pppoe1: authenticated
2026-06-01T17:45:52.879023+02:00 router1 pppoe,ppp,debug,packet  pppoe1: sent IPCP ConfReq id=0x7
2026-06-01T17:45:52.879023+02:00 router1 pppoe,ppp,debug,packet     <addr 0.0.0.0>
2026-06-01T17:45:52.879023+02:00 router1 pppoe,ppp,debug,packet  pppoe1: sent IPV6CP ConfReq id=0x4
2026-06-01T17:45:52.879023+02:00 router1 pppoe,ppp,debug,packet     <interface-identifier 3290:efXX:XX:XX>
2026-06-01T17:45:52.879023+02:00 router1 pppoe,ppp,debug,packet  pppoe1: sent MPLSCP ConfReq id=0x4
2026-06-01T17:45:52.879023+02:00 router1 pppoe,ppp,debug,packet  pppoe1: sent LCP EchoReq id=0x0
2026-06-01T17:45:52.879023+02:00 router1 pppoe,ppp,debug,packet     <magic 0x462aa72a>
2026-06-01T17:45:52.879048+02:00 router1 pppoe,ppp,debug,packet     <data len=1488>
2026-06-01T17:45:52.883000+02:00 router1 pppoe,ppp,debug,packet  pppoe1: rcvd LCP EchoRep id=0x0
2026-06-01T17:45:52.883000+02:00 router1 pppoe,ppp,debug,packet     <magic 0xc41e5306>
2026-06-01T17:45:52.883719+02:00 router1 pppoe,ppp,debug,packet  pppoe1: rcvd LCP ProtRej id=0x49
2026-06-01T17:45:52.883719+02:00 router1 pppoe,ppp,debug,packet      82 81 01 04 00 04
2026-06-01T17:45:52.883719+02:00 router1 pppoe,ppp,debug,packet  pppoe1: rcvd IPV6CP ConfReq id=0xa9
2026-06-01T17:45:52.883719+02:00 router1 pppoe,ppp,debug,packet     <interface-identifier b68a:5fXX:XXXX:XXXX>
2026-06-01T17:45:52.883763+02:00 router1 pppoe,ppp,debug,packet  pppoe1: sent IPV6CP ConfAck id=0xa9
2026-06-01T17:45:52.883763+02:00 router1 pppoe,ppp,debug,packet     <interface-identifier b68a:5fXX:XXXX:XXXX>
2026-06-01T17:45:52.883790+02:00 router1 pppoe,ppp,debug,packet  pppoe1: rcvd IPCP ConfReq id=0xa0
2026-06-01T17:45:52.883790+02:00 router1 pppoe,ppp,debug,packet     <addr XXX.XXX.2.14>
2026-06-01T17:45:52.883831+02:00 router1 pppoe,ppp,debug,packet  pppoe1: sent IPCP ConfAck id=0xa0
2026-06-01T17:45:52.883831+02:00 router1 pppoe,ppp,debug,packet     <addr XXX.XXX.2.14>
2026-06-01T17:45:52.883860+02:00 router1 pppoe,ppp,debug,packet  pppoe1: rcvd IPCP ConfNak id=0x7
2026-06-01T17:45:52.883877+02:00 router1 pppoe,ppp,debug,packet     <addr 100.114.202.83>
2026-06-01T17:45:52.883934+02:00 router1 pppoe,ppp,debug,packet  pppoe1: sent IPCP ConfReq id=0x8
2026-06-01T17:45:52.883934+02:00 router1 pppoe,ppp,debug,packet     <addr 100.114.202.83>
2026-06-01T17:45:52.994223+02:00 router1 pppoe,ppp,debug,packet  pppoe1: rcvd IPCP ConfAck id=0x8
2026-06-01T17:45:52.994223+02:00 router1 pppoe,ppp,debug,packet     <addr 100.114.202.83>
2026-06-01T17:45:52.994223+02:00 router1 pppoe,ppp,info pppoe1: connected
2026-06-01T17:45:52.994223+02:00 router1 pppoe,ppp,debug,packet  pppoe1: rcvd IPV6CP ConfAck id=0x4
2026-06-01T17:45:52.994223+02:00 router1 pppoe,ppp,debug,packet     <interface-identifier 3290:efXX:XX:XX>
2026-06-01T17:45:53.762480+02:00 router1 pppoe,ppp,debug,packet  pppoe1: rcvd LCP EchoReq id=0x0
2026-06-01T17:45:53.762480+02:00 router1 pppoe,ppp,debug,packet     <magic 0xc41e5306>
2026-06-01T17:45:53.762480+02:00 router1 pppoe,ppp,debug,packet  pppoe1: sent LCP EchoRep id=0x0
2026-06-01T17:45:53.762480+02:00 router1 pppoe,ppp,debug,packet     <magic 0x462aa72a>

ISP seems to be using Juniper hardware.
max-ppp-payload 1500 is received in PADS but not PADO !?
Then the received LCP ConfReq shows MRU 1496

If PADO (that the ISP side sends to you) does not contain ppp-max-payload then that means the ISP does not support RFC 4638, because:

  1. PPPoE Discovery Stage

    If a PPPoE client wants to use an MTU/MRU higher than 1492 octets, then it MUST include an optional PPP-Max-Payload Tag in the PADI and PADR packets. If the PPPoE server can support an MTU/MRU higher than 1492 octets, it MUST respond with an echo of the clients tag in the PADO and PADS packets when the PPP-Max-Payload tag is received from the client.

    Tag-name: PPP-Max-Payload
    Tag-value: 0x0120
    Tag-length: 2 octets
    Tag-value: binary encoded value (max PPP payload in octets)

And the server side sends <mru 1496> which means your router won't be able to raise its MTU above that value (server says it can only receive at most 1496 bytes payload per packet).

You can see later after authentication that the router only sends LCP EchoReq message with a payload of 1488 (which is 1496 total payload because the header of the LCP message takes 8 bytes (not the same as the 8 bytes of the PPPoE header)).

Probably not useful in you context but in a other topic I tried solutions suggested by CGGXANNX and Rextended,
for me with PPPoE WAN + VLAN two are the options:

mss=no + MTU/MRU=1500
or
ethernetX and VLAN MTU=1508 with MTU/MRU=auto

be careful with keepalive-timeout , disabling will keep PPPoE active also il connectivity is down, then a Netwatch script is mandatory.