Title

BGPv4特性探究-2@ORF-RFC5291/RFC5292

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

自动换行

其他相关资料

......

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.Outbound Route Filtering

2.1.基本原理

《RFC5291-Outbound Route Filtering Capability for BGP-4》中新定义了一种 Capability Codes 3 = Outbound Route Filtering Capability。同时,在《RFC5292-Address-Prefix-Based Outbound Route Filter for BGP-4》中定义与之对应的 BGP 编码规则。这种方式允许 BGP 可以将自己要求的路由前缀发送给 BGP Peer 提前进行过滤而防止 BGP peer 将路由发送给自己。

通常一个 Outbound Route Filter 条目由 AFI/SAFI、ORF-Type、Action、Match 和 ORF-value 五部分组成,并由 AFI/SAFI 和 ORF-Type 唯一标识在 BGP ROUTE-REFRESH 消息中传递
1@ -- AFI/SAFI:地址族用于将路由前缀限制为特定的 NLRI。
2@ -- ORF-Type:用于确定 ORF-value 字段的内容类型。
3@ -- Action:用于确定对路由前缀所执行的动作。主要行为有 ADD,REMOVE,REMOVE-ALL。

ADD 用于将新的 ORF 条目添加给 BGP peer;REMOVE 用于通知 BGP peer 将先前安装的 ORF 条目;REMOVE-ALL用于通知 BGP peer 将先前自己要求安装的 ORF 条目删除。

4@ -- Match:用于定义 ORF 条目的颗粒度为 PERMIT 或 DENY。

PERMIT 要求 BGP peer 可以传递与 ORF 条目匹配的路由集的 BGP Update 更新。DENY 要求 BGP peer 不得传递与 ORF 条目匹配的路由集的 BGP Update 更新。

5@ -- ORF-value:用于携带 ORF 条目信息。定义 ORF 时,必须指定其匹配规则以避免歧义。

当 BGP ROUTE-REFRESH 消息中不包含 ORF 条目时,BGP Speaker 向其 peer 发送与 Adj-RIB-Out 关联的所有路由。

2.2.编码格式

Capability Codes 3 = Outbound Route Filtering Capability

Number of ORFs:1 字节,设备所能支持的 ORF Type 类型数量,并随后携带具体的 ORF Type 类型及其处理能力。
ORF Type:1 字节,包含具体的 ORF 类型。

目前 IANA 标准化了如下几种类型 ORF Type:

此处重点介绍 ORF Type 64。

Send/Receive:1 字节,用于指示发送者的 ORF 需求。
值 1 表示发送者愿意从 BGP peer 接收 ORF 条目,值 2 表示发送者愿意向 BGP peer 发送 ORF 条目,值 2 表示两者都有。只有当 BGP 邻居之间具有相匹配的 ORF 需求是,BGP Speaker 才能向其 BGP peer 发送包含一个或多个 ORF 条目的 BGP ROUTE-REFRESH 消息。


BGP Open 消息携带 Outbound Route Filtering Capability 示例。

自动换行
Capability Codes 3 = Outbound Route Filtering Capability

When-to-refresh:1 字节,置 1 时表示 IMMEDIATE,置 2 时表示 DEFER。

IMMEDIATE 时,BGP Speaker 必须重新通告与 AFI/SAFI 对应的路由。
DEFER 时,BGP Speaker 可以延迟通告与 AFI/SAFI 对应的路由,直到 BGP Speaker 收到同一 AFI/SAFI 的但不包含 ORF 条目的 ROUTE-REFRESH 消息或者包含 ORF 条目但 When-to-refresh 设置为 IMMEDIATE 的 ROUTE-REFRESH 消息。

当存在除 ORF 以外的策略需要更新路由时,必须使用 DEFER 方式的 ORF 条目。

ORF Type:1 字节,,包含具体的 ORF 类型。

目前 IANA 标准化了如下几种类型:

此处重点介绍 ORF Type 64。

Length of ORF entries:1 字节,除 ORF Type 和 Length 以外的 ORF 条目的长度。

N * ORF entries:不定长,携带具体的 ORF 条目信息。


《RFC5291-Outbound Route Filtering Capability for BGP-4》中定义
Action = 0 表示前文定义的 ADD;Action = 1 表示前文定义的 REMOVE;Action = 2 表示前文定义的 REMOVE-ALL。
Match = 0 表示前文定义的 PERMIT;Match = 1 表示前文定义的 DENY。
《RFC5292-Address-Prefix-Based Outbound Route Filter for BGP-4》中定义了如上所示的 ORF Type 64 = Address-Prefix-Based ORF 编码格式。

2.3.配置示例

Address-Prefix-Based ORF 配置示例

#
ip ip-prefix test index 10 permit 111.0.0.0 24
ip ip-prefix test index 20 deny 222.0.0.0 24 greater-equal 28 less-equal 32
#
bgp 100
 router-id 2.2.2.2
 peer 10.1.2.1 as-number 100 
 #
 ipv4-family unicast
  undo synchronization
  peer 10.1.2.1 enable
  peer 10.1.2.1 ip-prefix test import
  peer 10.1.2.1 capability-advertise orf ip-prefix both
#

需要注意的是
1@:ORF 作为一种新的 BGP capability 需要在 Open 阶段进行协商,因此需要 BGP 之间都支持针对 AFI/SAFI 的能力。如果会话已经建立,将重新触发 BGP 建链。
2@:ORF capability 通常需要在 BGP peer 侧控制发送给 BGP Speaker 自己的路由,因此应在 import 出向进行。


发送 Route-Refresh 报文携带 ORF 信息示例。ORF Type 128 为厂商私有封装格式,此处与 ORF Type 64 = Address-Prefix-Based ORF 相同而作为示例展示。

点击此处回到目录

更新

posted @ 2025-05-05 11:28  m风行者  阅读(50)  评论(0)    收藏  举报