if_pppoe: Is PPPoE MRU/MTU auto-negotiation not supported?
-
pfSense does not set MTU correctly when "if_pppoe" is enabled.(2.8.0-RELEASE)
My ISP's PPPoE specification is MRU/MTU=1454.
The MTU setting for pfSense is blank.if_pppoe enabled:
The interface status shows MTU as 1492.
The ppp status log shows nothing.if_pppoe disabled(mpd5):
The interface status shows the MTU as 1454.
The ppp status log shows that during MRU/MTU auto-negotiation, pfSense received "Configure Request MRU=1454" from the ISP and that pfSense sent "ConfigAck MRU=1454" to the ISP. It also shows that pfSense sent "ConfigReq MRU=1492" to the ISP and that pfSense received "Configure Ack MRU=1492" from the ISP. -
Hmm, interesting question! I don't think I've ever seen an ISP that supported/required that.
I assume it works as expected if you set the MTU manually?
-
I assume it works as expected if you set the MTU manually?
When I manually set the MTU, the interface status shows MTU=1454.
I think this is a useful workaround.I don't think I've ever seen an ISP that supported/required that.
I think that many ISPs set MRU to the default (1492), so they don't include MRU in the LCP negotiation options.
(If MRU is not included in the options, the MRU will be assumed to be the default (1492).)
My ISP sets the MRU to 1454, so they include MRU in the LCP negotiation options.There is no record in the ppp status log, so the following is a guess.
The PPPoE connection was finally completed, which means that pfSense accepted the ISP's "MRU=1454" in the LCP negotiation.
(My ISP will not set the MRU option to anything other than 1454. If pfSense does not accept "MRU=1454", the PPPoE connection will not complete.)
Even though pfSense accepted the ISP's "MRU=1454", pfSense set the MTU to 1492 instead of 1454.If this is correct, I think it is inappropriate processing that does not follow the results of negotiations with the ISP.
-
Indeed, if that is the case we should resolve it. The next version of the module will have far better granular logging.
Let me see if I can find anything...
-
Ok one thing you can do to get more info here is run at the CLI:
ifconfig pppoe0 down ifconfig pppoe0 debug ifconfig pppoe0 up
Then check the system or ppp logs. You will want to disable debbugging again with
ifconfig pppoe0 -debug
once it's reconnected though because it creates a lot of logs.I don't see MTU/MRU negotiated on my test connection here but it uses 1492 so it may simply not send that.
-
I tried to get ppp status log in debug mode.
The conf-req received from the ISP contains a few options.
(Because len=19)
But it's unclear what the options and values are.
(Because "opts:" and "opt values:" are empty)I hope that "next version of the module" will show the opts and opt values.
Below is a part of the LCP negotiation log:
if_pppoe: pppoe0: lcp up(starting)
if_pppoe: pppoe0: lcp starting->req-sent
if_pppoe: pppoe0: lcp output <conf-req id=0x11 len=14
if_pppoe: pppoe0 (8864) state=3, session=0x4aba output -> 00:12:e2:70:89:43, len=22
if_pppoe: pppoe0: lcp input(req-sent): <conf-req id=0x1 len=19
if_pppoe: pppoe0: lcp parse opts:
if_pppoe: pppoe0: lcp parse opt values:
if_pppoe: pppoe0: lcp output <conf-ack id=0x1 len=19
if_pppoe: pppoe0 (8864) state=3, session=0x4aba output -> 00:12:e2:70:89:43, len=27
if_pppoe: pppoe0: lcp req-sent->ack-sent
if_pppoe: pppoe0: lcp input(ack-sent): <conf-ack id=0x11 len=14
if_pppoe: pppoe0: lcp ack-sent->opened
if_pppoe: pppoe0: lcp tlu -
Yup more and better logging is coming. However it also looks like there is an issue with the negotiated MRU/MTU value so a fix for that is in the works.