文章目录
前言
在当今复杂且庞大的网络架构中,运营商骨干网的高效稳定运行至关重要。BGP(Border Gateway Protocol,边界网关协议)作为骨干网路由控制的核心协议,其配置与优化直接影响着网络的性能和可靠性。本文将深入探讨 BGP 在运营商网络中的部署情况,分析传统解决方案的利弊,并重点介绍 BGP ADD-PATH 特性及其在骨干网中的应用优势。
一、BGP 在运营商网络中的重要地位与部署基础
BGP 凭借其强大的基于策略的路由选路能力、高度的协议扩展性以及对海量路由条目的良好支持,在运营商的生产环境中得到了广泛应用。在运营商的生产网络架构里,通常会先利用 ISIS(Intermediate System to Intermediate System,中间系统到中间系统协议)或者 OSPF(Open Shortest Path First,开放最短路径优先协议)作为域内 IGP(Interior Gateway Protocol,内部网关协议)。这一举措的关键作用在于确保域内所有业务汇聚设备和核心设备的环回、互联地址相互可达,为后续 BGP 的部署搭建好基础网络环境。在此稳固的基础之上,再部署 BGP 来承担业务路由的承载重任 。
然而,BGP 自身的路由选路原则 ——“始终只优选一条最优 BGP 路由”,在运营商生产网络存在冗余节点的情况下,会引发一些棘手的问题,进而产生非预期的网络流量模型,影响网络资源的合理利用和整体性能。
二、BGP 选路原则引发的问题 —— 以某 ISP 网络为例
为了更直观地理解 BGP 选路原则带来的麻烦,我们以某 ISP(Internet Service Provider,互联网服务提供商)的网络部署场景为例进行分析。
在该网络架构中,数据中心 CR、接入网 CR、省 RR(Route Reflector,路由反射器)、省 BR(Border Router,边界路由器)兼 RR 设备均运行在同一管理域的 ISIS level 2 中。具体的网络拓扑结构为,接入网 CR 采用口字型拓扑与省 BR 实现互联,数据中心 CR 则使用双 V 字型拓扑与省 BR 兼 RR 设备进行连接。
由于网络处于不断演进的阶段,现阶段数据中心 CR 仅与省 RR 建立 IBGP(Internal Border Gateway Protocol,内部边界网关协议)邻居关系,并且在这个关系中,数据中心 CR 扮演 BGP RR client 的角色。接入网 CR 与省 BR 兼 RR 设备形成 IBGP 邻居关系,同样作为 BGP RR client。省 RR 与省 BR 兼 RR 设备之间也建立了 IBGP 邻居关系,但这里不存在 BGP RR client 角色。省 BR 则承担出口角色,负责向全网发布 ISIS 默认路由。
假设数据中心 CR 需要通过 BGP 向全网宣告其下挂的接入业务网段,并且要确保业务网段具备备份路径以保障网络的可靠性。此时,数据中心 CR1、CR2 通常会同时配置指向 NULL0 的静态业务路由,并通过 BGP 进程下的 network 方式将业务网段宣告到全网。但由于在宣告业务路由时,未对 BGP 选路属性进行任何修改,这就导致省 RR1、RR2 在 BGP 选路原则的作用下,只会优选 router - id 较小的 BGP 邻居所宣告的业务网段作为最优路由1。例如,若数据中心 CR - 1 的 router - id 比 CR - 2 小,那么省 BR01、BR02、接入网 CR1、CR2 到达数据中心的业务流量将全部由数据中心 CR1 承载。这种情况不仅造成了数据中心 CR2 链路带宽的极大浪费,而且实际的流量模型与客户的预期大相径庭,严重影响了网络的使用体验和资源分配效率。
三、传统解决方案 —— 虚拟下一跳及其局限性
面对 BGP 选路原则带来的上述问题,富有智慧的网络工程师们提出了通过虚拟下一跳的方式来解决。
结合前文所述的网络拓扑,在数据中心 CR1、CR2 与省 RR 配置 BGP 邻居时,借助 route - map 将数据中心 CR1、CR2 所宣告业务网段路由的下一跳修改为同一个 “虚拟 IP”。同时,这个 “虚拟 IP” 会在数据中心 CR1、CR2 上进行配置,并通过 IGP 协议宣告到全网。如此一来,省 BR1、BR2 在学习到数据中心业务路由时,其最优下一跳均为该 “虚拟 IP”。然后,通过路由表递归查找,确定 “虚拟 IP” 的下一跳出接口为省 BR 与数据中心 CR1、CR2 的互联端口,从而成功形成等价回程路由。以下是实现虚拟下一跳的大致步骤与配置示例:
数据配置如下(示例):
! 数据中心CR1、CR2配置虚拟下一跳IP
ip route 172.16.1.1 255.255.255.255 null 0
! 数据中心CR1、CR2配置修改路由宣告下一跳策略
route-map set_vnh permit 10
set next-hop 172.16.1.1
! 数据中心CR1、CR2通过IGP将虚拟IP宣告到全网
ip prefix-list s2i seq 5 permit 172.16.1.1/32
!
route-map red_s2i permit 10
match ip address prefix-list s2i
!
router isis
...
redistribute static route-map red_s2i
! 数据中心CR1、CR2针对省RR配置修改业务路由下一跳route-map
router bgp 100
...
address-family ipv4
network 9.9.9.9 mask 255.255.255.255
neighbor 192.168.12.1 route-map set_vnh out
从表面上看,虚拟下一跳似乎 “完美” 地解决了 BGP 选路问题,但实际上它带来了新的困扰。这种方法破坏了 BGP 原本强大的路由控制能力。在这种场景下,数据中心 CR1、CR2 无法再依据 BGP 选路属性对路由进行灵活控制,因为业务路由的下一跳 IP 始终固定为 “虚拟 IP”,使得 BGP 丰富的路由策略无法得到有效应用。
四、ADD - PATH 特性解决方案 —— 开启骨干网路由优化新篇章
随着技术的不断发展,RFC7911 的出现为解决 BGP 路由问题带来了新的曙光。RFC7911 定义了 BGP 一种全新的 capability,使得 BGP 同时宣告同一前缀的多条路径成为可能。通过在 BGP 邻居之间协商 add - path capability,在路由宣告时,BGP 能够将路由表中的最优及次优 BGP 路由同时发送到支持 add - path capability 的 BGP 邻居。这一特性为实现等价路由提供了更优的解决方案,有效避免了网络资源的浪费,显著增强了网络的可靠性。
以下是根据客户现网情况,修改为 add - path 方式实现 BGP 等价路由的关键配置示例:
数据配置如下(示例):
! 省RR配置启用add-path特性
router bgp 100
...
!
address-family ipv4
bgp additional-paths select all best 2
...
neighbor 7.7.7.7 additional-paths send
neighbor 7.7.7.7 advertise additional-paths best 2
neighbor 8.8.8.8 additional-paths send
neighbor 8.8.8.8 advertise additional-paths best 2
! 省BR配置启用add-path特性,并配置IBGP多路径负载均衡功能
router bgp 100
...
!
address-family ipv4
...
neighbor 5.5.5.5 additional-paths receive
neighbor 6.6.6.6 additional-paths receive
maximum-paths ibgp 2
需要特别注意的是,“add - path” 作为 BGP 的一种 capability,如果在实际生产网络中,BGP 已经形成稳定的邻居关系并且承载着业务路由,此时启用该特性将会导致 BGP 会话重建,BGP 邻居之间需要重新协商双方的 BGP capability。这一过程可能会对网络业务产生短暂的影响,在实际操作中需要谨慎评估和规划。
此外,可能会有部分工程师认为在省 RR 使用 “maximum - paths”,就可以使省 RR 形成等价的业务路由,进而让省 RR 向省 BR 宣告两个不同下一跳的数据中心业务路由。但实际上,“maximum - paths” 仅仅影响 BGP 路由加载到路由表的数量,并不能改变 BGP 的路由选路原则。BGP 向邻居宣告的是其 BGP 路由表中的最优 BGP 路由,而并非设备路由表中的最优路由。add - path 实现机制仅将 BGP 路由表中的最优及次优路由同时发送到 BGP 邻居,它本身并未破坏 BGP 路由选路原则。若要在路由表中生成多条等价 BGP 路由,除了启用 add - path 特性外,还需要充分考虑 BGP 选路原则,并合理增加 “maximum - paths” 配置。
综上所述,BGP ADD - PATH 特性为运营商骨干网的路由优化提供了更先进、更灵活的解决方案。在实际网络部署和优化过程中,网络工程师们应根据网络的具体情况,合理选择和配置相关技术,以确保骨干网的高效稳定运行。
某些小伙伴会想到在省RR使用“maximum-paths”,使省RR形成等价的业务路由,从而省RR会先向省BR宣告两个不同下一跳数据中心业务路由。但“maximum-paths”只是影响BGP路由加载到路由表数量,并未能影响BGP路由选路原则。BGP向邻居宣告其BGP路由表中最优BGP路由,并非设备路由表中最优路由。 ↩︎