技术解析

Linux (OpenWRT)下如何实现 Per-Packet 模式的链路负载均衡?
0
2021-06-18 22:06:45
idczone

背景实现:

  • 使用 SoftEther VPN 通过不同的两条宽带 建立了两个级联隧道
  • 使用虚拟 tap 桥接模式,在两个路由器上分别创建了两个 tap 设备( tap_link1、tap_link2 )
  • 已经确认两端两个 tap 设备都是可以通的(分别配上 IP 可以互相 Ping )

目前我所知道并且已经尝试了的部分方法:

  1. bond 无法用在 tap 设备上(提示 operation not premitted )
  2. teql 不通 不清楚为什么 需要进一步尝试 但是限于能力我没能找到更多的参考资料(我能找到的只有 LARTC 的一篇)
  3. 直接路由负载均衡设置多个 nexthop,3.6 < kernel < 4.4 是 per-packet 模式,大于 4.4 就是 per-flow,目前的内核是 4.14 我需要 per-packet 模式 又听说可以用 equalize 来改变模式,但发现 iproute2 并没有实现 equalize flag (谷歌搜索结果,自己尝试也提示没有这个选项)。
  4. iptables 随机打标 + ip rule 策略路由:无法干预本地进程路由选择,据说可以让他在 lo 走一趟来干预
  5. teamd 因为 openwrt 似乎没有直接能用的包暂未尝试

希望大佬能给出些建议,谢谢。


我的 gentoo 软路由采用 teamd 实现双万兆 聚合成为 20G 和 支持聚合的万兆交换机互联

之前用过一个很 low 但能 work 的方法:写个脚本每 0.1 秒切换一次路由

他工作,感谢!
今天尝试了走 lo+iptables 打标,太坑人了..
直接 0.1s 切换路由 完事...

你好 可以给一个邮箱吗,楼主,想请教一下你一个问题

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服