3.6 之前的 Linux 内核使用路由缓存来进行 IPv4 多路径路由,这意味着在两个单独的线路/ISP 之间路由非常容易。从 3.6 开始,算法改为按数据包,这意味着需要一些路由表/规则/iptables 标记技巧来实现两条线路/ISP。
但是,如果您有两条线路与同一个 ISP 可以以平衡/故障转移方式在每个数据包的基础上沿着两条线路路由一个 IP,那么从 3.6 开始,您可以轻松实现线路绑定(在 IP 级别),因为每个数据包在两个方向上的路由。
从 4.4 开始,内核再次更改为基于源地址和目标地址散列的基于流的负载平衡。
我目前正在运行内核 4.4.36,并且正在通过 PPPoE 连接使用多路径路由。我的来自 ISP 的下行流量基于每个数据包通过两条单独的线路进行路由(一个 IP 沿两条线路路由)。这使我的下载速度比单个线路的速度更快。几乎两条线的速度加在一起。它运行良好,Skype 视频、VoIP (UDP)、YouTube 等都运行良好。
由于拥有如此良好的下游体验,我想尝试上游,但我的上游流量是根据较新的基于流的算法在两个 ppp 设备(具有相同的 IP 地址)之间路由的。这意味着我无法达到比单行速度更快的上传速度。
有没有办法将当前内核配置为使用 per-packet 算法?或者其他一些方法来实现每包多路径路由?我是否需要恢复到较旧的内核(由于其他各种原因我不想这样做)?
我的 ISP 不支持多链路 ppp。
如果相关,我目前正在 Raspberry Pi 3 上运行 Arch Linux ARMv7。