My ISP uses a PPPoE line with separate PPPoE sessions for IPv4 and IPv6. Since the username for IPv4 and the username for IPv6 are different, IPv4 and IPv6 cannot be shared in a single PPPoE session.
Configuration for IPv4 is standard "IPv4 over PPPoE", and configuration for IPv6 is "DHCPv6-PD over PPPoE". Both IPv4 and IPv6 work fine.
MRU of PPPoE server is
1454. PPPoE server performs "LCP negotiation" with MRU=1454 option, and OPNsense accepts MRU=1454. However, OPNsense sets MTU to 1492 instead of 1454. Normally, if OPNsense accepts MRU=1454 of PPPoE server in LCP negotiation, OPNsense should set MTU to 1454 or less, but this is not actually the case.
I checked the MTU with the following combinations (a) to (f).
The former value is the MTU after Bootup, and the latter value is the MTU after reload. Reload means clicking the "Reload icon" in the Commands column of the Interfaces Overview.
[One PPPoE session]
After bootup, both IPv4 and IPv6 have MTU=1492. After reload, IPv4 has MTU=1492.
(a) WAN - pppoe0 - IPv4: 1492 / 1492
(b) WAN - pppoe0 - IPv6: 1492 / N/A
[Two PPPoE sessions]
After bootup, both IPv4 and IPv6 have MTU=1492. After reload, IPv4 has MTU=1492 and IPv6 has MTU=1454.
For IPv4 and IPv6 combinations, when I check the logs, the PPPoE process always occurs in the order IPv4 first and IPv6 second.
(c) WAN - pppoe0 - IPv4: 1492 / 1492
OPT1 - pppoe1 - IPv6: 1492 / 1454
(d) WAN - pppoe1 - IPv6: 1492 / 1454
OPT1 - pppoe0 - IPv4: 1492 / 1492
(e) WAN - pppoe1 - IPv4: 1492 / 1492
OPT1 - pppoe0 - IPv6: 1492 / 1454
(f) WAN - pppoe0 - IPv6: 1492 / 1454
OPT1 - pppoe1 - IPv4: 1492 / 1492
From the results of (a) to (f), it appears that after reload, the first PPPoE process will result in MTU=1492, and the second PPPoE process will result in MTU=1454.
I check MTU on OPNsense with:
- ifconfig output
- Interface Overview Details
- Routes Status
I set MTU to blank in Generic configuration of Interfaces for OPNsense.
Below is the LCP negotiation log:
[wan_link0] MAGICNUM 0x5848d693
[wan_link0] AUTHPROTO CHAP MD5
[wan_link0] MRU 1454
[wan_link0] LCP: SendConfigAck #1
[wan_link0] MAGICNUM 0x5848d693
[wan_link0] AUTHPROTO CHAP MD5
[wan_link0] MRU 1454
[wan_link0] LCP: rec'd Configure Request #1 (Req-Sent)
[opt1_link0] MAGICNUM 0x43d4f057
[opt1_link0] AUTHPROTO CHAP MD5
[opt1_link0] MRU 1454
[opt1_link0] LCP: SendConfigAck #1
[opt1_link0] MAGICNUM 0x43d4f057
[opt1_link0] AUTHPROTO CHAP MD5
[opt1_link0] MRU 1454
[opt1_link0] LCP: rec'd Configure Request #1 (Req-Sent)
QuoteToday introduces a change in MTU handling for parent interfaces mostly noticed by PPPoE use where the respective MTU values need to fit the parent plus the additional header of the VLAN or PPPoE. Should the MTU already be misconfigured to a smaller value it will be used as configured so check your configuration and clear the MTU value if you want the system to decide about the effective parent MTU size.
I found the above description of the parent interfaces MTU handling changes related to PPPoE in the OPNsense 23.7.5 release announcement.
Is the reason why the MTU is set to 1492 because the manual MTU setting in the Generic configuration takes precedence over the automatic MTU setting by LCP negotiation? (When the MTU setting is blank, "Calculated PPP MTU: 1492" will be displayed.)