宽带症候群节点、路由器节点经常有见大家讨论多线分流的策略,现结合自己的实践经验,谈一下我的实现思路。
思路:应该是实现“目的”的方式,这里定义为企业级方案,和家用级方案。
目的:应该是从需要达到的“目的”去讲实现不同“思路”。目的不同,实现的思路也不一样。按照分流方向,可以分为出访和来访方向。
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/734637mosdns 开发者网站:
https://github.com/IrineSistiana/mosdns11. 参考我之前写的一篇帖子:
/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 足够大,可以通过收部分表的方式实现转发。
写得太多了,待续。。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/783828
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.