hxdyxd

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

  •  
  •   hxdyxd · 5h 44m ago · 693 views

    假如有两条 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 ,确实能做到切换
    不过因为“断线”才切换,实际体验很差

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

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

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

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

    - 简单的主动 ping / tcp ping 测试的延迟和丢包无法真实反映线路质量。特别是如果测试的线路现在是闲置状态,你把流量负载切过去后的真实质量可能完全是另一回事。
    - 被动检测 vpn 里跑的 tcp 连接的延迟、重传等指标判断链路状态:理论上可行,但是找到的几个开源项目都比较老,都没有用 eBPF 。而且最关键的是这种方式不 future proof ,因为未来的趋势是 quic 这种全加密,网络层根本拿不到可以检测的元信息。
    - 用脚本定期跑 iperf 测试:这个我觉得甚至可能是实际效果最准确的链路质量检测方式。但是不优雅。而且会占用较多网络带宽。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2672 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 11:21 · PVG 19:21 · LAX 04:21 · JFK 07:21
    ♥ Do have faith in what you're doing.