Background: I’ve setup a lab to test transmission of non-fragmented 1500 byte IP packets over PPPoE over VPLS. I have this working well. I then progressed to test the maximum packet size I could transmit through VPLS given the L2MTU of the PE’s ethernet interface is 1600.
I’m now successfully passing 1570 byte IP packets in a VPLS tunnel which results in a 1614 byte ethernet frame on the wire (verified with Wireshark) - perfect. (1570 IP + 14 ETH + 4 VPLS + 8 MPLS + 14 ETH + 4 VLAN = 1614).
I wanted to verify my VPLS L2MTU values as I wasn’t too sure of their calculation. Through experimentation I found this setup continues to work (non-fragmented) with VPLS L2MTU values as low as 1556. Below that I get packet loss.
So now I’m confused. How is the VPLS L2MTU calculated. By all accounts I can bridge non-fragmented 1570 byte IP packets (1584 ethernet frames) over a VPLS interface with L2MTU of 1556.
FWIW, my setup is:
Ether L2MTU = 1600
Ether.VLAN L2MTU = 1596
MPLS MTU = 1596
VPLS L2MTU = Anything from 1556 upwards!
The packet is transparently fragmented and re-constructed by the VPLS interface driver in RouterOS.
If you set a do-not-fragment flag in ICMP, that only applies to routing (L3) logic.
MPLS and VPLS are L2.5, they do NOT care about a ICMP do-not-fragment flag, and will happily fragment the frame anyway.
Also, if using PPPoE, be careful of the MRRU value, which can transmit bigger packets then MTU/MRU allow as well.
Disable MRRU completly when testing MTU with PPPoE.
That’s what I thought but the wireahark trace says otherwise. I see 1614 bytes on the wire and no fragmentation. Even with the transparent fragmentation I can’t see how the calculation for 1556 l2mtu works out for my setup.
Now if I decrease the mpls MTU below 1596 then yes i do see the vpls “transparent” fragmentation.
BTW thanks for the fantastic presentation on the same topic. Was very helpful.
I’ll post the diagram and exports tomorrow as not by a PC. But the capture taken from a rb acting as an Ethernet bridge between the two pe’s (no mpls just bridging two Ethernet ports).
POP BACKHAUL is just an ethernet bridge and used to capture packets
Orange line is the VPLS. Blue line is PPPoE between CPE RADIO and CORE-PPPoE
The config from POP-AP is below. In this config I’ve left VPLS pw-mtu as 1556.
To test, I added IP addresses 5.5.5.1 and 5.5.5.2 to CPE-RADIO and CORE-PPPoE devices and ran a 1570 byte ping. Packets were captured on wlan1 interface of the POP-BACKHAUL device and output pcap is attached. You can see the 1614 byte ethernet frames being transmitted as a whole.