[AusNOG] "large PPPoE MTU" support

Mark ZZZ Smith markzzzsmith at yahoo.com.au
Wed Jul 23 20:44:25 EST 2014


Hi,

I've been recently looking into "large PPPoE MTU" support, meaning support for a PPPoE/PPP MTU greater than 1492, ideally 1500 bytes, to get rid of fragmentation or PMTUD having to occur over the PPPoE link (a so-called "dumbell MTU" scenario - LAN MTU 1500, PPPoE MTU 1492, Internet MTU of 1500). The 'special' thing it requires is the support of 'baby' jumbo Ethernet frames i.e., an ethernet payload MTU of 1508 rather than the traditional 1500.

A PPPoE client requests support by attaching a PPP-Max-Payload option to it's PADI, asking for support from the PPPoE server for the requested MTU. If the PPPoE server supports it, then it returns the PPP-Max-Payload option in the PADO. The client then attaches it to the PPPoE PADR, and if the PPPoE server accepts PADR, returns the option again. After that, PPP can negotiate the supported MTU (if not the default of PPP MTU 1500, as it is below) e.g.,

20:14:32.176605 PPPoE PADI [Service-Name] [Host-Uniq 0x000020A7] ***[PPP-Max-Payload 0x05DC]***
20:14:32.184804 PPPoE PADO [Service-Name] [Host-Uniq 0x000020A7] ***[PPP-Max-Payload 0x05DC]*** [AC-Name "lns20.mel6"] [AC-Cookie 0xB5C51927599BA0BDA14E1203CA7693C2]
20:14:32.184885 PPPoE PADR [Service-Name] [Host-Uniq 0x000020A7] ***[PPP-Max-Payload 0x05DC]*** [AC-Cookie 0xB5C51927599BA0BDA14E1203CA7693C2]
20:14:32.191830 PPPoE PADS [ses 0xb882] [Service-Name] [Host-Uniq 0x000020A7] ***[PPP-Max-Payload 0x05DC]*** [AC-Cookie 0xB5C51927599BA0BDA14E1203CA7693C2]
20:14:32.205350 PPPoE  [ses 0xb882] LCP, Conf-Request (0x01), id 1, length 12
 encoded length 10 (=Option(s) length 6)
   Magic-Num Option (0x05), length 6: 0x5afba3ce
20:14:32.210789 PPPoE  [ses 0xb882] LCP, Conf-Request (0x01), id 1, length 17
 encoded length 15 (=Option(s) length 11)
   Auth-Prot Option (0x03), length 5: CHAP, MD5
   Magic-Num Option (0x05), length 6: 0x15fa3801
20:14:32.210943 PPPoE  [ses 0xb882] LCP, Conf-Ack (0x02), id 1, length 17
 encoded length 15 (=Option(s) length 11)
   Auth-Prot Option (0x03), length 5: CHAP, MD5
   Magic-Num Option (0x05), length 6: 0x15fa3801
20:14:32.211035 PPPoE  [ses 0xb882] LCP, Conf-Ack (0x02), id 1, length 12
 encoded length 10 (=Option(s) length 6)
   Magic-Num Option (0x05), length 6: 0x5afba3ce
20:14:32.211110 PPPoE  [ses 0xb882] LCP, Echo-Request (0x09), id 0, length 10
 encoded length 8 (=Option(s) length 4)
   Magic-Num 0x5afba3ce
20:14:32.217176 PPPoE  [ses 0xb882] LCP, Echo-Reply (0x0a), id 0, length 10
 encoded length 8 (=Option(s) length 4)
   Magic-Num 0x15fa3801

RFC4638, "Accommodating a Maximum Transit Unit/Maximum Receive Unit (MTU/MRU) Greater Than 1492 in the Point-to-Point Protocol over Ethernet (PPPoE)" specifies how it works.

The above is against Internode's BRASes here in Melbourne, using the 14.07 RC1 beta release of OpenWRT. All I needed to do was to set the WAN interface MTU to 1508 in the 'luci web gui' under 'Interfaces - WAN, Advanced Settings, Override MTU, 1508'. Apparently Cisco have supported this for quite a while in their IOS pppoe client, with the 'pppoe-client ppp-max-payload' command.

From what I've read, it seems both Cisco and Juniper's BRASes automatically support the PPP-Max-Payload option as long as the underlying Ethernet interface payload MTU is > 1500. Alternatively with a Cisco, it might be necessary to add the 'tag ppp-max-payload <min> <max>' command under the 'bba group, virtual template' section of the config.


The above 1500 byte MTU isn't actually working for me (it negotiates 1500, but I get 100% loss for 1500 byte packets), possibly because my ADSL modem (a Netcomm NBPlus4W bridging) doesn't support 1508 payload Ethernet frames, however 1496 is, so I set the OpenWRT Override MTU to 1504 instead.

I'm curious if anybody else has experimented with this and perhaps knows if Telstra and other carriers support it (whether they know it or not!)

Thanks,
Mark.


More information about the AusNOG mailing list