MLPPP over single and multiple links
MLPPP 通过在多个逻辑或物理链路上拆分并重组数据来增强 PPP 链路,无需升级硬件即可提高带宽。它同时支持单链路(使用 MRRU)和多链路配置,并提供了 PPPoE 服务器/客户端设置的示例。
MLPPP over single and multiple links
标准: RFC 1990
Multi-Link Point to Point Protocol (MP, Multi-Link PPP, MultiPPP 或 MLPPP) 是一种在多个逻辑数据链路上拆分、重组和排序数据的方法。
在一对设备之间存在多条 DSL 链路的情况下,可以通过使用 Multi-Link PPP 来“拓宽管道”,从而提高两台设备之间的性能,而无需采用更新、更昂贵的技术。
大数据包实际上会被拆分为分片,并均匀地通过所有逻辑数据链路发送。这一过程即时完成,不会损失带宽。需要理解的重要一点是,链路的另一端必须使用相同协议来重组你的数据。
Multilink 基于 LCP 选项协商,该协商允许向其 peer 表明自己能够合并多条物理链路。
单链路 MLPPP
通常,由于开销的原因,通过 PPP 链路发送的数据包大小会减小。MP 可以用于在单条 ppp 链路上发送和接收完整帧。为此,Multilink Protocol 使用额外的 LCP 配置选项 Multilink Maximum Received Reconstructed Unit (MRRU)
要在单条链路上启用 Multi-link PPP,你必须指定 MRRU (Maximum Receive Reconstructed Unit) 选项。如果双方都支持此功能,则无需进行 MSS 调整(在防火墙 mangle 中)。研究表明,MRRU 的 CPU 开销低于每个客户端 2 条 mangle 规则。MRRU 允许你将数据包划分到多个通道,从而提高可能的 MTU 和 MRU(最高 65535 字节)
在 Windows 下,可以在 Networking 选项卡、Settings 按钮中的 "Negotiate multi-link for single link connections" 启用。其 MRRU 硬编码为 1614。
警告
启用 MPPE 加密时,MTU 将减少 4 字节才能正常工作
配置示例
让我们配置一个与 Windows 客户端兼容并启用了 MRRU 的 pppoe 服务器。
[admin@RB800] /interface/pppoe-server/server> add service-name=myPPP interface=ether1 mrru=1614
[admin@RB800] /interface/pppoe-server/server> print
Flags: X - disabled
0 service-name="myPPP" interface=ether1 max-mtu=1480 max-mru=1480 mrru=1614
authentication=pap,chap,mschap1,mschap2 keepalive-timeout=10 one-session-per-host=no
max-sessions=0 default-profile=default
简而言之——对于标准 PPP 链路——只需在双方都指定 MRRU。
多链路 MLPPP
多链路 MLPPP 允许在多条物理连接上创建一条单一的 PPP 链路。所有 PPP 链路都必须来自同一台服务器(服务器必须支持多链路 MLPPP),并且所有 PPP 链路必须使用相同的用户名和密码。
要启用 MLPPP,你只需创建一个 PPP 客户端,并指定多个接口而非单个接口。RouterOS 仅支持 MLPPP 客户端。目前没有可用的 MLPPP 服务器支持。
配置示例

ISP 向其客户端提供两条物理链路(DSL 线路),每条 1Mbps。要获得聚合的 2Mbps 管道,我们必须设置 MLPPP。假设 ISP 路由器已预先配置为支持 MLPPP。
路由器 (R1) 上的配置为:
/interface/pppoe-client
add service-name=ISP interface=ether1,ether2 user=xxx password=yyy disabled=no \
add-default-route=yes use-peer-dns=yes
[admin@RB800] /interface/pppoe-client> print
Flags: X - disabled, R - running
0 name="pppoe-out1" max-mtu=1480 max-mru=1480 mrru=disabled interface=ether1,ether2
user="xxx" password="yyy" profile=default service-name="ISP" ac-name="" add-default-route=yes
dial-on-demand=no use-peer-dns=yes allow=pap,chap,mschap1,mschap2
现在当 PPPoE 客户端连接后,我们可以设置其余配置:本地网络地址、启用 DNS 请求、设置 masquerade 和防火墙
/ip/address/add address=192.168.88.1/24 interface=local
/ip/dns/set allow-remote-request=yes
/ip/firewall/nat
add chain=srcnat action=masquerade out-interface=pppoe-out1
/ip/firewall/filter
add chain=input connection-state=invalid action=drop \
comment="Drop Invalid connections"
add chain=input connection-state=established action=accept \
comment="Allow Established connections"
add chain=input protocol=icmp action=accept \
comment="Allow ICMP"
add chain=input src-address=192.168.88.0/24 action=accept \
in-interface=!pppoe-out1
add chain=input action=drop comment="Drop everything else"
如需更高级的路由器和客户保护,请查看防火墙示例。