首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何增加PPPoE MTU?

如何增加PPPoE MTU?
EN

Ask Ubuntu用户
提问于 2016-09-18 12:45:00
回答 2查看 2.5K关注 0票数 2

我有一个UbuntuServer14.04安装,它是连接到互联网使用PPPoE。目前,我的ppp0接口有一个1492年的MTU,它主要工作。

我想把MTU提高到1500,这是我的ISP支持的。

到目前为止,我已经将底层以太网接口的MTU增加到1508,并尝试在/etc/ppp/peers/dsl-provider中添加以下行

代码语言:javascript
复制
mtu 1500
mru 1500

但是我的ppp0接口仍然有一个1492年的MTU。我相信我添加的行的语法是正确的,因为使用低于1492的值确实像预期的那样工作。

手动将ppp0接口的MTU更改为1500个,但它只影响一个方向的数据包。这样,我就可以通过互联网发送1500个字节的数据包,它们将到达目的地,而不会被分割。但是传入的通信量仍然以1492字节碎片的形式发送给我。

通过在PPPoE连接中捕获以太网接口上的通信量,我可以看到,在我的UbuntuServer14.04机器发送给提供者的配置请求中,MRU被指定为1492。所以我知道问题就在我的连接上。

当配置文件显示1500时,为什么UbuntuServer14.04在配置请求中使用1492作为MRU?我怎么才能把它改成1500呢?

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2016-09-18 14:59:26

我通过输入以下两个命令下载了ppp源代码:

代码语言:javascript
复制
sudo apt-get build-dep ppp
apt-get source ppp

在头文件pppd/plugins/rp-pppoe/pppoe.h中,我发现了以下内容:

代码语言:javascript
复制
/* Header size of a PPPoE packet */
#define PPPOE_OVERHEAD 6  /* type, code, session, length */
#define HDR_SIZE (sizeof(struct ethhdr) + PPPOE_OVERHEAD)
#define MAX_PPPOE_PAYLOAD (ETH_DATA_LEN - PPPOE_OVERHEAD)
#define MAX_PPPOE_MTU (MAX_PPPOE_PAYLOAD - 2)

ETH_DATA_LEN/usr/include/linux/if_ether.h中定义

代码语言:javascript
复制
#define ETH_DATA_LEN      1500            /* Max. octets in payload        */

pppd/plugins/rp-pppoe/plugin.c中,我发现了这个:

代码语言:javascript
复制
    if (lcp_allowoptions[0].mru > MAX_PPPOE_MTU)
        lcp_allowoptions[0].mru = MAX_PPPOE_MTU;
    if (lcp_wantoptions[0].mru > MAX_PPPOE_MTU)
        lcp_wantoptions[0].mru = MAX_PPPOE_MTU;

所有这些都意味着rp-pppoe插件的硬编码限制为1492字节。而增加它的唯一途径是修改源代码,并以更高的限制重新构建插件。

通过从plugin.c删除上述四行并重新构建模块,我能够将MTU从1492年增加到1500个。这只有在已知的底层行支持更大的大小时才能工作,这恰好是我的连接上的情况。

为了检测底层行的能力,需要使用支持RFC 4638的较新的pppd版本。Ubuntu16.04有一个更新的pppd版本,因此应该能够为PPPoE使用更大的MTU大小,而无需重新编译任何代码。

票数 2
EN

Ask Ubuntu用户

发布于 2016-09-18 12:55:58

您可以通过strace和filter运行pppd,以显示“打开”请求,查看打开的文件从哪些文件获取其配置。

代码语言:javascript
复制
sudo strace -f -e open pppd

在我的经验(英国宽带)所有的连接都是1492年,如果他们通过BT,有一个具体的原因,你需要另外8个八位数?

我的理解是,如果您与MRU不匹配,那么您的数据包最终会变成多个数据包,特别是如果您不允许8八进制开销进行封装的话。

票数 -1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/826525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档