MTU setting on VLAN interface used by PPPoE using Baby Jumbo Frames (RFC4638)

Started by bolmsted, January 08, 2022, 07:29:17 PM

Previous topic - Next topic

I'm currently in the process of tweaking my internet connection to use Baby Jumbo Frames (RFC4638) to set the MTU to 1508 bytes on the physical/virtual ethernet connections that are the underlying "hardware" for a PPPoE interface (MTU set to 1500 byes so full ethernet frame can be passed without fragmenting).

However, I'm noticing that my VLAN interface to the ISP  (my ISP requires that the PPPoE be on a tagged VLAN) has a MTU setting of 1508 in the OPNsense GUI but at the OS level in FreeBSD (Hardened BSD currently but potatoes / tomatoes) the MTU is showing up as 1500.

I'm wondering if this should be considered a bug?    It seems that my pings with MTU 1472 still get through to sites like 1.1.1.1 / 9.9.9.9  (google is doing something funky at 8.8.8.8 ) but it seems appropriate that I may have to use the syshook for "startup" as as a WORKAROUND to force the ifconfig vtnet2_vlan35 to MTU 1508

https://docs.opnsense.org/development/backend/autorun.html
https://forum.opnsense.org/index.php?topic=16159.0

_______________________________________________
I'm virtualizing the OPNsense environment in QEMU/KVM via Proxmox.

Proxmox

root@proxmox:~# ifconfig enp1s0f0 | grep mtu
enp1s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1508
root@proxmox:~# ifconfig vmbr2 | grep mtu
vmbr2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1508
root@proxmox:~#


OPNsense

root@OPNsense:~ # ifconfig vtnet2 | grep mtu
vtnet2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1508
root@OPNsense:~ # ifconfig vtnet2_vlan35 | grep mtu
vtnet2_vlan35: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500    <------ 1508?
root@OPNsense:~ # ifconfig pppoe0 | grep mtu
pppoe0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1500
root@OPNsense:~ #
root@OPNsense:~ # ping -D -s 1472 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 1472 data bytes
1480 bytes from 1.1.1.1: icmp_seq=0 ttl=56 time=15.369 ms
1480 bytes from 1.1.1.1: icmp_seq=1 ttl=56 time=15.325 ms
1480 bytes from 1.1.1.1: icmp_seq=2 ttl=56 time=15.203 ms
1480 bytes from 1.1.1.1: icmp_seq=3 ttl=56 time=15.326 ms
1480 bytes from 1.1.1.1: icmp_seq=4 ttl=56 time=15.681 ms
1480 bytes from 1.1.1.1: icmp_seq=5 ttl=56 time=15.238 ms
^C
--- 1.1.1.1 ping statistics ---
6 packets transmitted, 6 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 15.203/15.357/15.681/0.156 ms
root@OPNsense:~ #

root@OPNsense:~ # ping -D -s 1472 9.9.9.9
PING 9.9.9.9 (9.9.9.9): 1472 data bytes
1480 bytes from 9.9.9.9: icmp_seq=0 ttl=53 time=47.753 ms
1480 bytes from 9.9.9.9: icmp_seq=1 ttl=53 time=47.782 ms
1480 bytes from 9.9.9.9: icmp_seq=2 ttl=53 time=47.756 ms
1480 bytes from 9.9.9.9: icmp_seq=3 ttl=53 time=47.717 ms
1480 bytes from 9.9.9.9: icmp_seq=4 ttl=53 time=47.807 ms
^C
--- 9.9.9.9 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 47.717/47.763/47.807/0.030 ms
root@OPNsense:~ #

root@OPNsense:~ # ping -D -s 1472 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 1472 data bytes
76 bytes from 8.8.8.8: icmp_seq=0 ttl=116 time=1.770 ms
wrong total length 96 instead of 1500
76 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=1.914 ms
wrong total length 96 instead of 1500
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.770/1.842/1.914/0.072 ms
root@OPNsense:~ #






Also the question came up in another forum while troubleshooting this if setting the MRU/MTU to 1508 is needed if the max-payload is set to 1500 for PPPoE interface but it seems I was getting issues when MRU wasn't being set or perhaps I was being thrown off by the google's 8.8.8.8 which is my go to for testing stuff when I was initially trying to set this up. 

I'm wondering if this max-payload is being set in the PPPoE interface MTU setting where it calculates it from 1508 -> 1500 or 1500 -> 1492.   Looks like the MRU setting is on the vtnet2_vlan35 interface which PPPoE uses in the advanced settings.



set pppoe max-payload 1500 will override mru and mtu
see last part of 5.7 http://mpd.sourceforge.net/doc5/mpd.html


My mpd_want.conf that pppd is using looks like this currently.

startup:
  # configure the console
  set console close
  # configure the web server
  set web close

default:
pppoeclient:
  create bundle static wan
  set bundle enable ipv6cp
  set iface name pppoe0
  set iface route default
  set iface disable on-demand
  set iface idle 0
  set iface enable tcpmssfix
  set iface up-script /usr/local/opnsense/scripts/interfaces/ppp-linkup.sh
  set iface down-script /usr/local/opnsense/scripts/interfaces/ppp-linkdown.sh
  set ipcp ranges 0.0.0.0/0 0.0.0.0/0
  create link static wan_link0 pppoe
  set link action bundle wan
  set link disable multilink
  set link keep-alive 10 60
  set link max-redial 0
  set link disable chap pap
  set link accept chap pap eap
  set link disable incoming
  set pppoe max-payload 1500      <------ is this being set by MTU 1508->1500 on pppoe interface page?
  set link mru 1508                      <------ MRU is being set to 1508 on Link Parameters ( vtnet2_vlan35 ) page
  set auth authname "xxxxxxxx"
  set auth password xxxxxxxx
  set pppoe service ""
  set pppoe iface vtnet2_vlan35
open




Many thanks in advance