多线分流策略思路讨论及其详解(其一) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nbsn
V2EX    宽带症候群

多线分流策略思路讨论及其详解(其一)

  •  
  •   nbsn 2021-06-16 22:31:09 +08:00 5010 次点击
    这是一个创建于 1578 天前的主题,其中的信息可能已经有所发展或是发生改变。
    宽带症候群节点、路由器节点经常有见大家讨论多线分流的策略,现结合自己的实践经验,谈一下我的实现思路。
    思路:应该是实现“目的”的方式,这里定义为企业级方案,和家用级方案。
    目的:应该是从需要达到的“目的”去讲实现不同“思路”。目的不同,实现的思路也不一样。按照分流方向,可以分为出访和来访方向。

    1. 这里,我尽可能按照大家讨论最多的模式,讨论下:家用方案里面的“出访”方向,需要进行:流量分流和 DNS 分流。

    2. 前提:网络环境下,有两条,或者两条以上的宽带,不同运营商的。(相同运营商谈不上分流,仅仅是带宽叠加而已)

    3. 技能要求:Linux 技能,中级网络知识,虚拟化操作技能。

    4. 需求:流的场景,按照访问目的地 ip 地址归属运营商,选择本地网络的出口。我采用的是动态导入运营商 IP 地址路由表的方式实现的。
    5. 为什么不采用写静态路由的方式?可扩展性,故障倒换

    6. 硬件:多口软路由( x86+虚拟化平台)
    7. 软件:OpenWRT (图形) + Bird 插件(命令行),也可以用 R2s,R4s 等硬件平台。

    8. 在软路由运行多个 OpenWRT ( Bird bgp )虚拟机,每个虚拟机的上行链路分别连接不同的运营商。我们这里假定有两条宽带 CT,CU,则我只需要两个 OpenWRT ( Bird bgp )虚拟机就可以了。

    9. 流量分流预期:
    ( 1 ). CT 宽带做主力,CU 宽带分流。
    ( 2 ). 国内访问:访问 CT ASN 内的 IP 地址,走 CT 宽带;访问 CU ASN 内的 IP 地址,走 CU 宽带,剩下的 IP 段(也可将这部分 IP 段再进行细分),默认走 CT 宽带。
    ( 3 ). 国外访问:OpenWRT 的特殊插件分流国外流量(如果可以,也可分流 nf,hbo 等)

    10. 另外一个重要的分流就是 DNS 分流,推荐一个 DNS 分流工具:mosdns 。本站讨论贴: /t/734637
    mosdns 开发者网站: https://github.com/IrineSistiana/mosdns

    11. 参考我之前写的一篇帖子: /t/781573 请问下 bgp peering 可以收全球 internet 路由表( ipv4 全表)的资源(是一个 Vultr 的 VPS )

    12. 通过折腾,我成功实现了接收 bgp 全表,并按照 ASN 的归属,进行分类。

    13. 其中 ASN 的归属,从 https://whois.ipip.net/countries/CN 找到全国 ASN 列表,并按照三大运营商( CT,CU,CM ),OTT 运营商( AL,TX,BD,JD etc ),加上剩下的,进行 ASN 列表分类。

    14. 分类完成后通过 bgp 策略,给对应 ASN 列表内的 ip 路由打上不同的 community 标记,打上 bgp community 后反射( bgp rr )给连接不同运营商链路 OpenWRT ( Bird bgp )虚拟机,这样,对应链路的虚拟机,就有分流的明细 IP 地址表了。

    15. 有了 ipv4 全表的 vps 和两台连接 CT,CU 运营商链路 OpenWRT,就可以搞事情了。三者之间的连接,通过 Zerotier 完成。当三者连接起来后,vps 把打好 community 标记的表发出来,OpenWRT 虚拟机可以选择性的接收:CT-OpenWRT 只接受 CT 的路由表(如果 CT 是主力宽带,这一步也可省略); CU-OpenWRT 只接受 CU 的路由表。

    16. 最后实现分流,CU-OpenWRT 需要通过 bgp 将 CU 的路由表,发送给做主力的 CT-OPENWRT 虚拟机(通过 bird 导入 kernal ),在 CT-OPENWRT 虚拟机上实现分流。注意,CT-OPENWRT 虚拟机和 CU-OPENWRT 虚拟机在 Bird bgp 进程上需要下一跳可达( bgp 协议限制)。

    17. 在我家里的示例环境中,中间是有一个 L3 交换机的,172.16.11.0 则作为了过渡前置网段,用于调整路由策略等,方便实现试验环境的调试。






    18. 用动态路由条目,我只分流 CU 流量,也只增加了 5K 多条路由条目。如果由于 bgp 邻居关系发生变化,路由消失后,也能及时走到 CT 的链路上实现备份。CT 有 6K 多条目,CM 有 14K 多(不知道为什么 CM 发了这么多前缀)



    19. 综上所述,根据 ASN 确定 IP 地址的归属,进而去调度出口流量,用 BGP 加策略的方法,我认为是最灵活的。



    20. 当然,在 CT-OpenWRT 内网接口上额外的 IP redirect 也会消耗额外流量,在家庭的环境下,也是不能克服的。我也尝试着把 CT 差不多 5K 多的路由注入给家里的 L3 交换机,立马就报 TCAM 满。企业级的解决方案中,核心交换机的 TCAM 足够大,可以通过收部分表的方式实现转发。

    写得太多了,待续。。。
    13 条回复    2023-08-11 09:10:48 +08:00
    lxll
        1
    lxll  
       2021-06-17 00:32:20 +08:00 via Android
    用路由表分流原理都差不多,要么动态引入然后分类,要么手动导入路由列表。op 玩玩还可以,真要稳定还是上 hw h3c 等专业设备,轻轻松松承载 500k 路由表。PBR 也是个好东西。
    lxll
        2
    lxll  
       2021-06-17 00:35:03 +08:00 via Android
    @lxll 另外如果和 VPS 连接断开路由条目消失分流就失效了吧。
    onion83
        3
    onion83  
       2021-06-17 01:03:07 +08:00 via iPhone
    纯 Linux 解决方案:网络层 ipset + iptables + ip 命令 DNS:smartdms
    nbsn
        4
    nbsn  
    OP
       2021-06-17 13:13:57 +08:00
    @lxll #2 是这样的呀,避免断开之后成为黑洞
    Tengwait
        5
    Tengwait  
       2021-06-17 15:19:04 +08:00
    其实可以把学来的路由用脚本记下来,然后当静态写入,降低 LP,当 BGP 死了的时候,还有静态路由在,重点是这个静态要定期更新一下,感觉这样会更好
    tpsxiong
        6
    tpsxiong  
       2021-06-17 16:00:57 +08:00 via Android
    如果 dns 固定为电信的 国内域名解析到 cu 的 ip 基本少之又少 如果部分域名使用联通 dns 那目的是什么 感觉国内目标 ip 分流基本是伪需求 之前我也折腾分 3 线 wan: iptv cm ct 现在只有国外 ip 分下流了 国内就分 iptv 和普通流量
    Laitinlok
        7
    Laitinlok  
       2021-06-17 21:40:09 +08:00 via Android
    @tpsxiong 用 Adguard Home 电信 DNS 、通 DNS 、Google DNS 、Cloudflare DNS 放去, 然後最快的 IP, 然後再分流用那
    nbsn
        8
    nbsn  
    OP
       2021-06-18 09:20:27 +08:00
    @Laitinlok #7 Adguard Home 做不了的,还是要 mosdns 才行,可以带上 ecs 。
    lzyliangzheyu
        9
    lzyliangzheyu  
       2021-06-18 11:36:44 +08:00
    现在的知识水平还看不懂。。。战略性马克下
    carrionlee
        10
    carrionlee  
       2021-06-19 11:30:08 +08:00 via iPhone
    我也觉得国内外分流就够了,国内 ip 分流意义不大
    bclerdx
        11
    bclerdx  
       2021-06-20 21:28:15 +08:00 via Android
    @carrionlee 如果鹏博士宽带和三大运营商之间的国内分流,意义就大了。
    nbsn
        13
    nbsn  
    OP
       2023-08-11 09:10:48 +08:00
    @mowenqing 收了全表之后得交给路由器去做分流啊,我是按照 ASN 过滤,把明细发给路由器走本地,然后默认路由指向国外得隧道
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2217 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 00:58 PVG 08:58 LAX 17:58 JFK 20:58
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86