3、多市场路由概念:多市场的定义、多网络拓扑与挑战

好,咱们接着聊。上一章我们搞定了单市场路由,说白了就是一个数据中心内部怎么把流量从A送到B。但现实世界哪有这么简单?你想想看,一家公司做大了,业务不可能只窝在一个机房。可能是为了覆盖不同区域的用户,也可能是为了容灾,或者干脆就是收购了几家公司,网络得打通。

这时候,单市场那套玩法就不够用了。我个人习惯把这种场景叫做「多市场路由」。嗯,这里要注意,我说的「市场」不是菜市场,而是指一个独立的网络自治域,比如一个数据中心、一个云Region、或者一个分支机构。

3.1 多市场的定义

什么叫多市场?说白了,就是多个独立的网络域,通过某种方式连接在一起,彼此之间能够交换路由信息,实现跨域通信。

每个市场内部,通常是一个完整的单市场网络,有自己的路由协议(比如OSPF或IS-IS),有自己的网关,有自己的安全策略。但市场与市场之间,不能直接跑内部网关协议(IGP),因为IGP的扩展性太差了。你想想看,如果全球几百个数据中心都跑在一个OSPF区域里,那LSA风暴能把路由器直接干趴下。

所以,多市场之间通常使用外部网关协议(EGP),最典型的就是BGP。我在项目中遇到过一家客户,他们一开始用OSPF把两个数据中心连起来,结果拓扑稍微一变,全网路由震荡,业务断了好几分钟。后来全部改成BGP,世界清净了。

核心定义:多市场路由,就是通过BGP等协议,将多个独立的单市场网络互联,实现跨域、可控、可扩展的路由交换。

3.2 多市场网络拓扑

多市场的拓扑,其实没有标准答案。但根据我这些年摸爬滚打的经验,常见的就那几种。我画了一张图,帮你快速理解。

多市场路由典型拓扑 市场A AS 65001 内部OSPF 市场B AS 65002 内部IS-IS 市场C AS 65003 内部静态 eBGP eBGP 可选备份链路 每个市场内部独立运行IGP,市场之间通过eBGP交换路由 中心市场 路由反射器 分支1 分支2 分支3 中心辐射型(Hub-and-Spoke)

常见的拓扑有这么几种:

  • 全互联(Full Mesh):每个市场都和所有其他市场建立BGP会话。优点是路径最优,缺点是N个市场需要N*(N-1)/2个会话,扩展性极差。超过5个市场就别这么玩了。
  • 中心辐射型(Hub-and-Spoke):所有分支市场都只连到中心市场。中心市场负责路由反射。我比较推荐这种,管理简单,策略集中。缺点是中心压力大,单点故障风险高。
  • 分层互联:比如按地域分核心层和接入层。核心市场之间全互联,接入市场只连到本区域的核心市场。这种适合超大规模场景,比如全球部署。
我的建议:刚开始做多市场互联,别贪心。先搞中心辐射型,把路由策略摸透了,再考虑优化。我曾经有个项目,一上来就搞全互联,结果配了30多个BGP session,一个参数配错,全网震荡,差点被老板开了。

3.3 多市场路由的挑战

多市场路由,听着高大上,实际坑特别多。我总结了几个最常见的挑战,你一个个看。

3.3.1 路由环路问题

单市场里,IGP有SPF算法,天然防环。但多市场用BGP,BGP本身没有防环机制,全靠AS Path属性。如果AS Path配错了,或者路由策略写漏了,环路就来了。

我记得有一次,一个分支市场把默认路由指向了中心,中心又把默认路由回指给了分支。结果两个路由器互相指,流量就在中间打转,直到TTL耗尽。排查了半天,最后发现是路由过滤没做好。

避坑指南:我曾经在配置BGP时,忘了在接收路由时做AS Path过滤。结果一个分支的私有路由被传播到了另一个分支,导致业务地址冲突。记住:永远在入方向和出方向做路由过滤

3.3.2 路由收敛速度

单市场里,OSPF收敛可以做到秒级甚至毫秒级。但多市场之间,BGP的收敛速度就慢多了。尤其是当链路断了,BGP需要等待Hold Timer超时(默认90秒),才能宣告邻居失效。

你想想看,90秒的断网,用户早骂娘了。所以,我一般会启用BGP的快速失效检测,比如BFD(双向转发检测)。BFD可以在毫秒级检测到链路故障,然后通知BGP重新收敛。

# 配置示例:启用BFD for BGP
router bgp 65001
 neighbor 10.0.0.2 fall-over bfd
!
interface GigabitEthernet0/0/0
 bfd interval 100 min_rx 100 multiplier 3

3.3.3 路由策略的复杂性

多市场环境下,你不可能让所有路由都互通。比如,生产环境和测试环境必须隔离,不同客户的路由不能互相泄露。这就需要精细的路由策略。

BGP提供了丰富的工具:Community、Route-map、Prefix-list、AS Path ACL等等。但工具多了,配置就复杂了。我见过一个客户的BGP配置,光route-map就写了200多行,维护起来简直是噩梦。

我的经验:路由策略一定要标准化。比如,用Community来标记路由的用途:100:10表示生产路由,100:20表示测试路由。然后在边界路由器上统一做过滤。这样,策略清晰,也方便排错。

3.3.4 地址重叠与NAT

这是个大坑。两个市场可能用了相同的私有IP段,比如都是10.0.0.0/8。一旦互联,路由就冲突了。

解决方案有两个:一是重新规划IP地址,确保全网唯一。但现实中,很多老系统改不了IP。那就只能用NAT了。在边界路由器上做NAT,把重叠的地址翻译成唯一的地址。

嗯,这里要注意,NAT会引入性能开销,而且对某些协议(比如FTP、SIP)不友好。我建议能改IP就改IP,别偷懒。

3.3.5 安全与隔离

多市场互联,意味着攻击面扩大了。一个市场被攻破,可能通过BGP会话影响到其他市场。比如,恶意注入虚假路由,导致流量被劫持。

我常用的手段包括:

  • 启用BGP的MD5认证,防止伪造BGP报文。
  • 使用TTL Security,限制BGP邻居的跳数。
  • 在边界路由器上部署uRPF(单播反向路径转发),防止源地址欺骗。
一个小技巧:我曾经在边界路由器上配置了最大前缀限制。比如,从某个邻居接收的路由不能超过1000条。一旦超过,自动断开BGP会话。这能有效防止路由表被恶意灌满。

3.4 小结

多市场路由,说白了就是把多个独立的网络域连起来。拓扑上,我推荐中心辐射型起步。挑战方面,路由环路、收敛速度、策略复杂性、地址重叠、安全隔离,每一个都够你喝一壶的。

但别怕,这些坑我都踩过。后面几章,我会手把手教你如何用BGP把这些挑战一一化解。记住,多市场路由的核心不是技术,而是规划。规划做好了,后面就顺了。


公众号:蓝海资料掘金营,微信deep3321