Some progress is made, this is my latest config, employing OSPF instead of static routes:
Router1:
/interface ethernet
set [ find default-name=ether2 ] mtu=1584
/interface bridge
add name=bridge-loopback
/interface vpls
add advertised-l2mtu=1508 name=R1toR3 disabled=no\
remote-peer=9.9.9.3 vpls-id=10:0
/ip pool
add name=PPPoE-pool ranges=192.168.1.100-192.168.1.199
/ppp profile
add local-address=192.168.1.1 name=PPPoE-profile remote-address=PPPoE-pool
/interface pppoe-server server
add default-profile=PPPoE-profile interface=R1toR3 max-mru=1500 \
max-mtu=1500 service-name=PPPoE-server1 disabled=no
/ip address
add address=9.9.9.1/32 interface=bridge-loopback
add address=10.0.0.1/24 interface=ether2
/routing ospf instance
set [ find default=yes ] router-id=9.9.9.1
/routing ospf network
add area=backbone network=9.9.9.0/24
add area=backbone network=10.0.0.0/24
/mpls interface
set [ find default=yes ] mpls-mtu=1550
/mpls ldp
set enabled=yes lsr-id=9.9.9.1 transport-address=9.9.9.1
/mpls ldp interface
add interface=ether2
/ppp secret
add name=test password=test profile=PPPoE-profile service=pppoe
/system identity
set name=Router1
Router2:
/interface ethernet
set [ find default-name=ether2 ] mtu=1584
set [ find default-name=ether3 ] mtu=1584
/interface bridge
add name=bridge-loopback
/ip address
add address=9.9.9.2/32 interface=bridge-loopback
add address=10.0.0.2/24 interface=ether2
add address=10.0.1.1/24 interface=ether3
/routing ospf instance
set [ find default=yes ] router-id=9.9.9.2
/routing ospf network
add area=backbone network=9.9.9.0/24
add area=backbone network=10.0.0.0/24
add area=backbone network=10.0.1.0/24
/mpls interface
set [ find default=yes ] mpls-mtu=1550
/mpls ldp
set enabled=yes lsr-id=9.9.9.2 transport-address=9.9.9.2
/mpls ldp interface
add interface=ether2
add interface=ether3
/system identity
set name=Router2
Router3:
/interface ethernet
set [ find default-name=ether3 ] mtu=1584
/interface bridge
add name=bridge-loopback
/interface vpls
add advertised-l2mtu=1508 name=R3toR1 disabled=no \
remote-peer=9.9.9.1 vpls-id=10:0
/interface pppoe-client
add add-default-route=yes disabled=no\
interface=R3toR1 \
max-mru=1500 max-mtu=1500 name=pppoe-out1 \
password=test use-peer-dns=yes user=test
/ip address
add address=9.9.9.3/32 interface=bridge-loopback
add address=10.0.1.2/24 interface=ether3
/routing ospf instance
set [ find default=yes ] router-id=9.9.9.3
/routing ospf network
add area=backbone network=9.9.9.0/24
add area=backbone network=10.0.1.0/24
/mpls interface
set [ find default=yes ] mpls-mtu=1550
/mpls ldp
set enabled=yes lsr-id=9.9.9.3 transport-address=9.9.9.3
/mpls ldp interface
add interface=ether3
/system identity
set name=Router3
I have set Ethernet interface MTUs to 1584 just to be sure. This has to be 14 bytes below L2MTU, right?
With MPLS interface MTU of 1550 everything seems fine.
I can see by sniffing that with MPLS interface MTU below 1534 the packets were fragged on the ethernet interface, so I set it to 1534. Then on router 3 packets go unfragged at tx 1548 bytes and rx 1544 on the Ethernet interface (why not same size?).
When sniffing on the VPLS interface I see that traffic goes unfragged at a packet size of 1522.
Sniffing on the PPPoE interface packets are 1500 bytes.
I probably also want to run VLANs on my VPLS tunnels,so for a test (not included in code above) I raised MPLS interface MTU to 1538, VPLS L2MTU/MTU to 1512/1504 and set VLAN MTU to 1500. This seems to work, as packets then goes unfragged on Ethernet at 1552/1548.
Does it seem that I finally found a formula, or do I miss any important considerations?
In Kirnak’s presentation there is a drawing on page 19 showing all the headers adding up, and the required MTU sizes.
However, I am unable to see where my numbers fit in. in this sketch MPLS interface MTU is 1530, how can that work, as I need 1534 (without VLANS)?