Title

BGPv4特性探究-5@Additional Paths-RFC7911

个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。

自动换行

其他相关资料

......

Border Gateway Protocol自1989年定义以来已经历过4个版本:1989年RFC1105的Version1,1990年RFC1163的Version2,1991年RFC1267的Version3,1994年RFC1654的Version4。而V4又历经了几次迭代,到目前比较全面完整的是2006年发布的RFC4271。
本文档旨在介绍相关原理,对于不同设备及厂家的实现上不做深究。有意者建议阅读相关资料。个人能力有限,如有疑问欢迎留言指导~

目录

1.相关术语和概念

BGP(Border Gateway Protocol,边界网关协议) 是一个 AS(Autonomous System,自治系统) 间的路由协议。BGP 的主要功能是与其他 BGP 系统交换网络可达性信息。

为便于介绍,在此先介绍一些关于BGP的相关术语
Autonomous System自治系统
单个路由协议管理下的一组路由器,使用内部网关协议(IGP)和通用度量来确定如何在AS内路由数据包。如果一个AS内运行了多个IGP协议,对于其他AS来说也认为其执行了内部一致的路由规则。

三张处理表/库
1@--Adj-RIB-In:邻居入方向的路由信息表/库。用于描述对等体向自己传输的完整路由信息。该路由表未进行入方向的路由策略。
2@--Adj-RIB-Out:邻居出方向的路由信息表/库。用于描述自己向对等体描述的路由信息,或者放置于Update消息报文中的路由信息。该路由表已进行出方向的路由策略。
3@--Loc-RIB:放置已被本地BGP以便进行选择的路由。该路由表已进行入方向的路由策略。

因此有如下的路由处理过程:
简单来说Adj-RIB-In和Adj-RIB-Out是放置于Update报文中的路由信息。

NLRI
Network Layer Reachability Information,网络层可达信息。放置于Update报文中,主要描述了路由信息或路由的相关属性。

IBGP/EBGP
Internal和External BGP,简单来说为相同AS的对等体关系为IBGP邻居,相反为EBGP。

相关概念
1@:BGP 使用 TCP 的 179 端口进行相关协议报文的发送和监听。
2@:在建立了完整的 BGP 对等体关系后,BGP 只发送增量更新。而非周期性泛洪或刷新路由表。
因此 BGP 为了使路由有正确的结果需要 TCP 周期保活或使用Route-Refrsh路由刷新

BGP 提供了如下三种机制进行路由更改:
1@:发送withdraw类型的Update报文,将该路由进行撤销
2@:发送具有相同NLRI的Update报文,进行更新。通过此种方式可以更改路由的属性。
3@:中断BGP连接。

关于 BGP 基本原理的相关内容,可参考博客-BGPv4-原理介绍+报文分析+配置示例

点击此处回到目录

2.Additional Paths-RFC7911

2.1.Additional Path基本原理

《RFC7911-Advertisement of Multiple Paths in BGP》中介绍了一种 Additional Path 机制,通过 BGP peer 之间协商新的 Capability Codes 69 = ADD-PATH Capability 该功能将允许 BGP 向邻居发送或接收多条 BGP 最优路由。

通常 BGP Speaker 仅为特定地址前缀通告一条路径,为了完成传递给同一地址前缀通告多个路径,需要引入新的标识符。每个路径都由 Path Identifier 标识,并提供潜在的备用或备份路径来帮助实现网络中的最佳路由和路由收敛。

1@:BGP Speaker 为路径分配 Path Identifier 纯粹是本地行为。但是,使用的具体分配方式必须保证标记应当是唯一标识。

2.2.Additional Path编码格式

为了实现上述功能,《RFC7911-Advertisement of Multiple Paths in BGP》中定义了 Capability Codes 69 = ADD-PATH Capability 和新的 BGP NLRI encoding。

Capability Codes 69 = ADD-PATH Capability

1@AFI和SAFI:AFI 占 2 字节,SAFI 占 1 字节。AFI 和 SAFI 共同决定了使能 ADD-PATH Capability 能力的地址族类型。
2@Send/Receive:1 字节,用于决定自己使能 ADD-PATH Capability 能力的方向。

  • 取值为 1 时表示能够从该邻居接收多路径。
  • 取值为 2 时表示能够从该邻居发送多路径。
  • 取值为 3 时表示能够同时能从该邻居接收和发送多路径。

如果收到其他值的 Send/Receive 字段,则该 capability 应当被视为不可理解并被丢弃。

图片
bestroute add-path 用来使能设备 BGP ADD-PATH 特性,并指定优选出的路由的数量。
图片peer capability-advertise add-path 用来使能针对邻居的 BGP ADD-PATH 路由功能。
图片peer advertise add-path 用来配置向指定邻居发布优选路由的数量。
自动换行
zh-cn_im6BGP Open 消息中的 Capability Codes 69 = ADD-PATH Capability 示例。

自动换行
BGP NLRI encoding

1@Path Identifier:4 字节,用于区分同一路由前缀的不同 Path。
2@Length:1 字节,用于决定 Prefix 长。
3@Prefix:不定长,用于表示具体的路由前缀信息。

BGP Update 消息中的新 BGP NLRI encoding 示例。
自动换行
《RFC4271-A Border Gateway Protocol 4》中定义了原始的 Network Layer Reachability Information 字段。其中提到 NLRI 并不严格编码,NLRI 长度 = UPDATE message Length - 23(fixed-BGP header) - Total Path Attributes Length - Withdrawn Routes Length。
此时,NLRI 可以由上述二元组 <length, prefix> 组成。对于 MP-BGP 协议而言,此时应将 BGP Path Attributes Code 14 = MP_REACH_NLRI(Multiprotocol Reachable NLRI,多协议可达 NLRI) 中的 NLRI 信息也按上述内容进行调整。
自动换行

自动换行
Additional Path Operation
1@:Path Identifier 可以用于为同一前缀通告多个路径。仅当新路由具有与旧路由相同前缀及 Path Identifier 时 ,可以替换旧路由。
2@:当收到一条具有未曾见过 Path Identifier 的 withdraw 消息时,应将其静默丢弃。
3@:Additional Path 的收发应满足对应的 <AFI,SAFI> 及 Send/Receive 要求。
4@:向邻居通告多路径时,必须包含最优路由。除非最优路由从该路由收到,则可不通告。

2.3.Additional Path配置示例

bgp 100
 router-id 1.1.1.1
 peer 10.1.1.2 as-number 100
 #
 ipv4-family unicast
  undo synchronization
  import-route direct
  import-route static
  bestroute add-path path-number 2
  peer 10.1.1.2 enable
  peer 10.1.1.2 capability-advertise add-path both
  peer 10.1.1.2 advertise add-path path-number 2
#

需要说明的是 maximum load-balancing 用于决定本地转发表的负载行为。如果即使本地没有形成 BGP 的负载路由而仅使能 ADD-PATH 功能,也可以向邻居针对同一前缀通告多路径。
此外,ADD-PATH 功能仅针对 BGP 路由生效,重分布等方式引入的路由无法通告多路径。

点击此处回到目录

更新

posted @ 2025-06-29 17:16  m风行者  阅读(42)  评论(0)    收藏  举报