Vodafone UK VDSL MTU

Hi,

I had a brief power cut last night which restarted OpenWrt as it's not on my UPS ATM.
When it came back up, nothing was working properly (edited to add, that some webpages would partially load, fast.com for example, would load, but wasn't able to do the speedtest), and I initially suspected DNS, but that turned out to be not the case.
The resolution at 5:30am was to connect the ISP router upstream on the WAN port and put OpenWrt in the DMZ.

I suspect it's caused by MTU, but I'm a little confused about where to set that, hence the post.

Vodafone UK VDSL with PPPoE has an MTU requirement of 1492.
Using ping in Windows CMD thus, ping -n 1 -f -l 1492 8.8.8.8
returns Packet needs to be fragmented but DF set
Whereas ping -n 1 -f -l 1464 8.8.8.8
returns no fragmentation warning (both pings through the upstream Vodafone router)

I have the following devices relevant to VDSL on my router which is a HH5a.

pppoe-wan
dsl0
dsl0.101

These all have an MTU of 1500

The wan interface is set to use dsl0.101

So finally a question!
Where do I set the MTU?
I read elsewhere that it should be on the pppoe-wan device, but wan is using dsl0.101 and nowhere can I see a reference in the config to suggest pppoe-wan would be the correct device.

/etc/config/network (partial)

config atm-bridge 'atm'
    option vpi '1'
    option vci '32'
    option encaps 'vc'
    option payload 'bridged'
    option nameprefix 'dsl'

config dsl 'dsl'
    option annex 'b'
    option tone 'av'
    option xfer_mode 'ptm'
    option line_mode 'vdsl'
    option ds_snr_offset '0'

config device
    option name 'dsl0'
    option mtu '1500'
    option macaddr 'D8:D8:**:**:**:**'

config interface 'wan'
    option proto 'pppoe'
    option device 'dsl0.1.1'
    option username 'blah@voda'
    option password '****'
    option ipv6 'auto'

config interface 'wan6'
    option device '@wan'
    option proto 'dhcpv6'
    option auto '0'
    option reqaddress 'try'
    option reqprefix 'auto'

config device
    option name 'pppoe-wan'
    option mtu '1500'

Thanks for any clarification

pppoe-wan should be mtu 1492 to fit in dsl0.1.1 mtu 1500
Then retract .1.1 = 2x 4 bytes
dsl = 1500
pppoe-wan=1484

This sets the ICMP payload size... but on top you will need the ICMP header of 8 bytes, as well as the appropriate IP header and unless you use baby jumbo frames the PPPoE header, so the expected possible payload size is <=:
1500-8-20-8 = 1464...
so your measurements are well within expectation... OpenWrt will default to an MTU of 1492 for PPPoE links if I recall correctly.

I think wan should be pppoe-wan in your case... your config looks correct, pppoe-wan needs a physical interface underneath it, in your case dsl0.101, there is a typo in your post:

that probably needs to be changed to dsl0.101...

Out of curiosity, why subtract an additional 8 byte here?

dsl0 mtu 1500
11q + 11q ....
pppoe

On link you typically only have a single VLAN tag, which is part of the ethernet header and does not eat into the ethernet payload, and even a second QinQ VLAN tag would exist outside of the payload... (nitpick: (both) VLAN tags are accounted against the mpu, so will reduce the true minimal payload size an ethernet frame gets padded to, but that is another story...)

See here:
https://en.wikipedia.org/wiki/IEEE_802.1ad

A transcription error on my behalf, it is dsl0.101 in reality :+1:t2:

Just run ifstatus wan | grep -e device or ifstatus pppoe-wan | grep -e device (away from my computer so not sure which of the two should work) on your router's command line... and post the results...

ifstatus wan | grep -e device returns "device": "dsl0.101"
ifstatus pppoe-wan | grep -e device returns nothing

If I set the MTU on dsl0 to 1492, dsl0.101 inherits that. Perhaps that is the way?

No. dsl0.101 likely needs to stay at 1500... here is the point, the PPPoE header lives inside the ethernet payload, and MTU restricts the maximum payload size, so you need to only reduce the MTU of the ppp interface by 8 bytes, for the higher up interface (dsl0.101) that pppoe header is part of the ethernet payload and the MTU needs to be large enough to allow for this, that is 8 bytes larger than the MTU of the pppoe interface...

So it must be set elsewhere then, because if I set dsl0 to 1492, dsl0.101 automatically inherits that.

There is hardly any mention of "pppoe-wan" in Google, so I'm concerned that's bogus?? Especially as doesn't appear to be used and has no MAC? I can set pppoe-wan to 1492 and try it later when no-one is working.

See below; pppoe-wan not available for selection

Just noticed eth0 has MTU of 1508, but the option is grey when editing. I've been told before eth0 is the internal device for the CPU?

Mmmh, could you post the output of ifconfig run on your router's command line?

BusyBox v1.36.1 (2024-10-23 22:51:01 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 23.05.5, r24106-10cc5fcd00
 -----------------------------------------------------
root@OpenWrt:~# ifconfig
br-lan    Link encap:Ethernet  HWaddr 90:72:**:**:**:**
          inet6 addr: fe80::9272:82ff:fe7f:2054/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2038776 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3581205 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:446249075 (425.5 MiB)  TX bytes:4382354286 (4.0 GiB)

br-lan.1  Link encap:Ethernet  HWaddr 90:72:**:**:**:**
          inet addr:192.168.26.1  Bcast:192.168.26.255  Mask:255.255.255.0
          inet6 addr: fe80::9272:82ff:fe7f:2054/64 Scope:Link
          inet6 addr: fdb3:9ae9:7290::1/60 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:683908 errors:0 dropped:6550 overruns:0 frame:0
          TX packets:822992 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:223899723 (213.5 MiB)  TX bytes:914093385 (871.7 MiB)

br-lan.2  Link encap:Ethernet  HWaddr 90:72:**:**:**:**
          inet addr:192.168.29.1  Bcast:192.168.29.255  Mask:255.255.255.0
          inet6 addr: fe80::9272:82ff:fe7f:2054/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3237 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2950 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:658938 (643.4 KiB)  TX bytes:290059 (283.2 KiB)

br-lan.3  Link encap:Ethernet  HWaddr 90:72:**:**:**:**
          inet addr:192.168.27.1  Bcast:192.168.27.255  Mask:255.255.255.0
          inet6 addr: fe80::9272:82ff:fe7f:2054/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1188325 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2638806 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:191216921 (182.3 MiB)  TX bytes:3434370352 (3.1 GiB)

br-lan.4  Link encap:Ethernet  HWaddr 90:72:**:**:**:**
          inet addr:192.168.28.1  Bcast:192.168.28.255  Mask:255.255.255.0
          inet6 addr: fe80::9272:82ff:fe7f:2054/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:141967 errors:0 dropped:578 overruns:0 frame:0
          TX packets:95751 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:28714830 (27.3 MiB)  TX bytes:25463520 (24.2 MiB)

br-lan.99 Link encap:Ethernet  HWaddr 90:72:**:**:**:**
          inet addr:192.168.99.1  Bcast:192.168.99.255  Mask:255.255.255.0
          inet6 addr: fe80::9272:82ff:fe7f:2054/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21339 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20699 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1758663 (1.6 MiB)  TX bytes:8136224 (7.7 MiB)

br-wifi   Link encap:Ethernet  HWaddr 90:72:**:**:**:**
          inet addr:192.168.226.1  Bcast:192.168.226.255  Mask:255.255.255.0
          inet6 addr: fe80::9272:82ff:fe7f:2054/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12061 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13852 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3613225 (3.4 MiB)  TX bytes:7894468 (7.5 MiB)

dsl0      Link encap:Ethernet  HWaddr D8:D8:**:**:**:**
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:200345 errors:0 dropped:2275 overruns:0 frame:0
          TX packets:129467 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:178831497 (170.5 MiB)  TX bytes:48132873 (45.9 MiB)

dsl0.101  Link encap:Ethernet  HWaddr D8:D8:**:**:**:**
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  HWaddr 5E:97:**:**:**:**
          inet6 addr: fe80::5c97:51ff:fef8:3361/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1508  Metric:1
          RX packets:5427659 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5446278 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:352981566 (336.6 MiB)  TX bytes:550858507 (525.3 MiB)

lan1      Link encap:Ethernet  HWaddr 90:72:**:**:**:**
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:924314 errors:0 dropped:4 overruns:0 frame:0
          TX packets:2046683 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:281332413 (268.2 MiB)  TX bytes:2164367569 (2.0 GiB)

lan2      Link encap:Ethernet  HWaddr 90:72:**:**:**:**
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1115576 errors:0 dropped:1093 overruns:0 frame:0
          TX packets:1752876 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:173253116 (165.2 MiB)  TX bytes:2319846299 (2.1 GiB)

lan3      Link encap:Ethernet  HWaddr 90:72:**:**:**:**
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lan4      Link encap:Ethernet  HWaddr 90:72:**:**:**:**
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:4 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:585 (585.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:37499 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37499 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3016289 (2.8 MiB)  TX bytes:3016289 (2.8 MiB)

phy0-ap0  Link encap:Ethernet  HWaddr 90:72:**:**:**:**
          inet6 addr: fe80::9272:82ff:fe7f:2057/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12902 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14330 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3834267 (3.6 MiB)  TX bytes:8267601 (7.8 MiB)

phy1-ap0  Link encap:Ethernet  HWaddr 90:72:**:**:**:**
          inet6 addr: fe80::9272:82ff:fe7f:2056/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:491 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:97721 (95.4 KiB)

wan       Link encap:Ethernet  HWaddr 5E:97:**:**:**:**
          inet addr:192.168.1.4  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 2a0a:*** Scope:Global
          inet6 addr: fe80::5c97:51ff:fef8:3361/64 Scope:Link
          inet6 addr: 2a0a:*** Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3387739 errors:0 dropped:11598 overruns:0 frame:0
          TX packets:1646702 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4149939421 (3.8 GiB)  TX bytes:339187909 (323.4 MiB)

root@OpenWrt:~#

Here you go, thanks for looking.
I have 5 internal VLANs, a Wireguard site-to-site, a bridge for 2 LAN ports for the VLANs, a bridge for 2 LAN ports and the WiFi

As the DSL connection went awry this morning, I also presently have an ethwan interface using the wan port, connected to the upstream Vodafone router. This was disabled until the problem this morning. (I also had to add a static route for ethwan for 0.0.0.0/0 to 192.168.1.1 which is the upstream Vodafone router)

(I am) confused? How is you wan operating right now and in the screen shots, via dsl0 or via ethernet to the Vodafone router?
This is likely important... OpenWrt only reduces the MTU if it uses PPPoE, if the Vodafone router handles PPPoE then OpenWrt will stick to MTU 12500 without PPPoE and if the Vodafone station fails at path MTU discovery you might run into issues...

Here is what I see in ifconfig (OpenWrt 22 based turriOS):

pppoe-wan Link encap:Point-to-Point Protocol  
          inet addr:77.3XXX.XXX  P-t-P:62.52.19X.XXX  Mask:255.255.255.255
          inet6 addr: 2a02:3100:720f:703c:bdb0:xxxx:xxxx:xxxx/64 Scope:Global
          inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/128 Scope:Link
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:19240274 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10354715 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:25342881667 (23.6 GiB)  TX bytes:1066122502 (1016.7 MiB)

Note, how OpwenWrt automatically set the correct MTU of 1492?

The Vodafone router is a temporary solution since this morning because someone :joy: needs to work.

So currently, OpenWrt is using an interface called ethwan which uses a device called wan (which is a physical port on the router). This port is connected to a LAN port on the upstream Vodafone router.

Usually, OpenWrt is using an interface called wan which uses a device called dsl0.101

Where would OpenWrt change the MTU in the above 2 scenarios?

In your config, do you not have a dsl device? In my config, the only reference to pppoe-wan is in /etc/config/network and the only option for it is the MTU

OpenWrt will do this on pppoe interfaces, so if you run the pppoe client on the openwrt router ifconfig should show an entry similar to mine...

No, my router is connected via ethernet to my bridged dsl modem, but since the PPPoE link is not terminated at the modem, openwrt does the right thing...

I guess that this is a consequence of your current configuration of wan via ethwan... pppoe-wan will only appear after a pppoe link has been successfully negotiated...

But for your current ethwan setup you could try to restrict the MTU to 1492, because path MTU discovery is unfortunatelly pretty hit and miss, if that solves your immediate issue this would implicate the Vodafone router as being "bad at its job". But please keep in mind that this is going to be different once you are back to terminating pppoe on the openwrt router.

OK, thanks.

The problem only arose this morning after a power cut, so once work is done for the day, I can play around with it.

Therefore the use of the upstream Vodafone router is a temporary solution, albeit one that is working properly at the moment.

pppoe-wan will only appear after a pppoe link has been successfully negotiated...

So when pppoe-wan appears, what happens to /etc/network/config? Does it update itself?

I have some other HH5a/PlusNet One routers kicking around, so I'll see if any of them got flashed to OpenWrt and look at a vanilla /etc/config/network.

The docs appear to be outdated and relevant to pre-DSA

Edited to add:
Once the pppoe-wan device appears, should I then assign it to WAN instead of dsl0.101 and give it an MTU of 1492?

As far as I can tell no. But ifconfig will then show pppoe-wan. /etc/config/network already has the

stanza that will instruct OpenWrt so try to built a pppoe tunnel....

So if I understand, the option proto 'pppoe' clause causes OpenWrt to set up pppoe-wan on the fly in response to DSL coming up on dsl0(.101)?
Therefore the wan interface should be assigned to pppoe-wan and pppoe-wan should have the MTU of 1492?