有什么路由器/协议/方案能做到基于链路质量的故障切换

6 小时 6 分钟前
 hxdyxd

假如有两条 VPN 线路:

R1 ===== R3 ===== R4  
       PRIMARY (成本可接受,低延迟,大宽带,假设 100Mbps ) 

R1 ----- R2 ----- R4  
       BACKUP (成本超高按流量计费,更稳定,主要做备份)  

我希望能保障 R1-R4 的链路高可用

故障

假如今天:
R1 ───────── R3
      100M

未来某天:
R1 ───────── R3
       ↓
      20M
       ↓
      丢包/延迟暴涨

根据链路质量快速切换

     正常
R1 ─────── R3 ────── R4
    100M

   ↓ 质量恶化

R1 ─────── R2 ────── R4
    BACKUP

目标

R1-R3 正常
    ↓
所有业务走 R3

R1-R3 拥塞,丢包 > 5%| RTT 大于 50ms (只是举例,可能有其他判断办法)
    ↓
优先走 R1-R2

R1-R3 恢复
    ↓
再切回 R1-R3

我发现普通的多 wan 路由器做的很差
大多只能负载均衡(类似 ECMP )
或者主备(类似 ospf ),主链路“断线”才切,丢包很高也不认为是异常

我在几个节点之间做了 ospf ,确实能做到切换
不过因为“断线”才切换,实际体验很差

感觉这个需求非常常见,一直不到合理而且主流的方案

720 次点击
所在节点    宽带症候群
14 条回复
r6cb
5 小时 49 分钟前
跑个脚本监控丢包率然后做切换不就行了?想要更智能的可以参考 clash 的 smart 内核那样用机器学习判断什么时候切换
cyaki
5 小时 45 分钟前
用这个 https://frrouting.org/; 能做到断开时自动切换
isbase
5 小时 44 分钟前
surge 的 Smart Group 最好用 只要有一个线路正常就不会感知到挂了
anyplace
5 小时 42 分钟前
IP 层方案,有偿
kome
4 小时 50 分钟前
写个脚本,如果两个 VPN 链路均 UP ,当前路由的这一条路由条目,如果不满足要求,则将当前路由条目的优先级降低。
应用层去做监控,调整网络层的路由优先级。没玩过软件定义网络 SDN ,可能 SDN 能做到,
lsylsy2
4 小时 30 分钟前
mptcp 算一个,但是我实测公网并不是特别好用,你可以调研一下
Yien
4 小时 22 分钟前
fortigate vm 试试?看起来 SDWAN 可以满足。
titanium98118
3 小时 13 分钟前
fortigate 的 sd-wan 可以满足你的需求
yayoi
2 小时 57 分钟前
这不是路由的基本功能吗,关键词 路由 选路 开销,慢慢玩去吧。
ixiaoyui
2 小时 55 分钟前
华为 nqa 与静态路由联动,设置 icmp 探测,连续失败 X 次触发联动切换静态路由,可以达到秒级切换,但几乎无法避免断线,切换路由后 nat 表大概率也需要重建。
JiangT
2 小时 25 分钟前
华为路由器的智能路由策略 Smart Policy Routing ,其他网络厂商肯定也有类似的功能或者解决方案,我这就抛个砖
https://support.huawei.com/hedex/hdx.do?docid=EDOC1100408788&id=ZH-CN_TASK_0177871837
vopsoft
2 小时 9 分钟前
Babel 可以看下这个动态路由协议

对于非专业用户 easytier 其实做的也错了,它是自己实现的类 ospf 更轻
someonesnone
1 小时 37 分钟前
装 openwrt 搓一个脚本定时检查, 然后用不同口的 metric 来调节优先级就行了, 我甚至写了个脚本让 openclash 自动检查然后帮我选不需要 cf 人工校验的节点
SAGAN
1 小时 6 分钟前
我试过 bgp (Linux bird) over wireguard 。能用。但是本质上也是断线才切,做不到根据链路质量自动切换线路。

可以自己用脚本动态改变各个线路的路由 priority / metric ,其实都不用上动态路由协议。但是难点在于 vpn 链路质量很难准确检测:

- 简单的主动 ping / tcp ping 测试的延迟和丢包无法真实反映线路质量。特别是如果测试的线路现在是闲置状态,你把流量负载切过去后的真实质量可能完全是另一回事。
- 被动检测 vpn 里跑的 tcp 连接的延迟、重传等指标判断链路状态:理论上可行,但是找到的几个开源项目都比较老,都没有用 eBPF 。而且最关键的是这种方式不 future proof ,因为未来的趋势是 quic 这种全加密,网络层根本拿不到可以检测的元信息。
- 用脚本定期跑 iperf 测试:这个我觉得甚至可能是实际效果最准确的链路质量检测方式。但是不优雅。而且会占用较多网络带宽。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1234583

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX