BGP-LS协议学习(协议文档:RFC9514 Border Gateway Protocol - Link State (BGP-LS)Extensions for Segment Routing)

1. 引言

Segment Routing over IPv6 (SRv6) 是一种利用 IPv6 数据平面的源路由机制。SRv6 通过在 IPv6 首部中的扩展头部携带一系列 Segment 标识符(SID)来实现。这些 SIDs 可以指定流量需要经过的网络路径中的节点或执行特定操作的节点。SRv6 为网络提供了一种灵活且可编程的方式来管理流量工程、服务编排和网络功能虚拟化。

BGP-LS(Border Gateway Protocol - Link State)协议扩展了 BGP 的功能,允许通过 BGP 广播链路状态信息和拓扑信息。这些信息包括节点、链路和网络前缀的详细描述。BGP-LS 使得控制器可以通过 BGP 收集整个网络的拓扑视图,从而进行优化的路径计算和流量工程。

本文档介绍了 BGP-LS 如何扩展以支持 SRv6 的链路状态信息广播。这些扩展包括广播 SRv6 节点的能力、链路的 SRv6 特性以及前缀的 SRv6 属性。这些信息对于 SRv6 网络的路径计算和流量工程优化至关重要。

2.BGP-LS 对 SRv6 的扩展

BGP-LS(边界网关协议-链路状态)定义了节点、链路和前缀链路状态NLRI(网络层可达性信息)类型,并通过BGP广播其属性。当BGP-LS路由器从底层链路状态路由协议中获取拓扑信息并进行广播时,它会根据 IS-IS(中间系统到中间系统)或OSPFv3(开放最短路径优先版本 3)的SRv6扩展来派生相应的SRv6信息。这种派生过程包括简单地将IS-IS或OSPFv3 TLV/sub-TLV中的相关字段复制到相应的BGP-LS TLV/sub-TLV中。

当BGP-LS路由器从BGP路由协议(例如,用于EPE,即出口对等工程)中广播拓扑信息或使用Direct作为协议ID广播与节点关联的SRv6 SID(段标识符)时,它会从本地节点派生 SRv6 信息。此类信息仅代表本地路由器进行广播,与通过链路状态路由协议源自IGP域中所有节点的信息广播不同。

节点相关的 SRv6 信息通过 BGP-LS Node NLRI 使用 BGP-LS Attribute TLV 进行广播,如下所示:

  1. 节点的SRv6能力通过SRv6 Capabilities TLV进行广播。
  2. 为SRv6引入的最大SID深度(MSD)类型通过Node MSD TLV进行广播。
  3. SRv6 的算法支持通过 SR-Algorithm TLV 进行广播。

链路相关的SRv6信息通过BGP-LS Link NLRI使用BGP-LS Attribute TLV进行广播,如下所示:

  1. IGP邻接SID(IGP Adjacency SID)或BGP EPE Peer Adjacendy SID的SRv6 SID通过SRv6 End.X SID TLV进行广播。
  2. 到非指定路由器(DR)或非指定中间系统(DIS)的IGP邻接SID的SRv6 SID通过SRv6 LAN End.X SID TLV进行广播。
  3. 为SRv6引入的MSD类型通过Link MSD TLV进行广播。

前缀相关的 SRv6 信息通过BGP-LS Prefix NLRI使用BGP-LS Attribute TLV进行广播,如下所示:

  1. SRv6定位器通过SRv6 Locator TLV进行广播。
  2. SRv6定位器的属性通过Prefix Attribute Flags TLV进行广播。

与节点关联的SRv6 SID通过本文档中引入的BGP-LS SRv6 SID NLRI进行广播。这使BGP-LS编码能够扩展,以覆盖节点上实例化的潜在大量SRv6 SID,具有单个SID的粒度,并且不会影响BGP-LS更新的大小和可扩展性。如果SRv6 SID在现有节点NLRI关联的BGP-LS链路属性中进行了广播,随着节点上SRv6 SID的增加,BGP-LS更新将变得相当大,并且即使是单个 SRv6 SID的更改也需要生成大型更新消息。本文档中为SRv6 SID NLRI引入的BGP-LS属性TLV如下所示:

  1. SRv6 SID 的端点行为通过SRv6端点行为TLV(SRv6 Endpoint Behavior TLV)进行广播。
  2. BGP EPE 对等节点上下文的 PeerNode SID 和 PeerSet SID 的对等集上下文通过 SRv6 BGP PeerNode SID TLV 进行广播。

本文档的后续部分指定了这些扩展的编码和使用。引入的所有 TLV 均遵循参考 RFC 中提供的格式和通用字段定义。

3. SRv6 节点属性

节点的SRv6属性通过BGP-LS节点NLRI关联的BGP-LS属性TLV进行广播。

3.1 SRv6 Capabilities TLV

此BGP-LS属性TLV用于与BGP-LS节点NLRI一起声明节点的SRv6能力,并指示节点对SRv6的支持。每个SRv6-capable节点的BGP-LS属性中只能包含一个该TLV实例。映射到此BGP-LS TLV的IS-IS SRv6 Capabilities sub-TLV和OSPFv3 SRv6 Capabilities TLV能够携带可选的sub-sub-TLV和sub-TLV。然而,目前没有定义任何此类扩展。此外,下面定义的SRv6 Capabilities TLV不是可扩展的。因此,预计任何扩展将作为BGP-LS属性中的顶级TLV引入。SRv6 Capabilities TLV的格式如下:

类型:1038

长度:4

标志:2 字节字段。这些标志从 IS-IS SRv6 Capabilities sub-TLV 或 OSPFv3 SRv6 Capabilities sub-TLV 中复制。

保留:2 字节字段。应在生成时设置为 0,接收时忽略。

3.2 SRv6 Node MSD 类型

节点 NLRI 的 BGP-LS 属性中的节点 MSD TLV 也用于广播由 SRv6 节点支持的限制和 SRH (Segment Routing Header,分段路由报头)操作。用于 SRv6 的 MSD 类型在 BGP-LS 节点 MSD TLV 中使用,这些代码点在 IS-IS、OSPF 和 BGP-LS 协议之间共享。这些新 MSD 类型在 BGP-LS 中的描述和语义与在 IS-IS 或 OSPFv3 节点 MSD 广播中指定的相同。

每个 MSD 类型在 BGP-LS 节点 MSD TLV 中编码为一个一字节的类型,后跟一个一字节的值,如 IS-IS 或 OSPFv3 节点 MSD 广播中所规定的那样。

4. SRv6 链路属性

与链路或邻接关联的 SRv6 属性和 SID 通过 BGP-LS Link NLRI 使用 BGP-LS Attribute TLV 进行广播。

4.1 SRv6 End.X SID TLV

SRv6 End.X SID TLV 用于广播与 IGP Adjacency SID 行为关联的 SRv6 SID,该行为对应于运行 IS-IS 或 OSPFv3 协议的节点的点对点或点对多点链路或邻接。通过该 TLV 广播的信息来源于 IS-IS SRv6 End.X SID sub-TLV 或 OSPFv3 SRv6 End.X SID sub-TLV。这种 TLV 还可以用作 L2 捆绑成员属性 TLV 的sub-TLV,以广播基础层 2 成员链路的 SRv6 SID。

此TLV也用于BGP-LS广播SRv6的BGP EPE对等邻接SID,与 SR-MPLS 中的指定方式类似。用于 BGP 对等邻接的 SRv6 SID 使用 End.X 行为(如 End.X、End.X 带 PSP、End.X 带 USP 和 End.X 带 PSP & USP)表示到特定 BGP 会话对等(邻居)的特定 Layer 3 链路的交叉连接。

可以在 BGP-LS 属性中包含该 TLV 的多个实例(每个 SRv6 End.X SID 一个)。

TLV 的格式如下:

类型:1106

长度:可变

端点行为:2 字节字段。此 SRv6 SID 的端点行为代码点。

标志:1 字节的标志。标志从 IS-IS SRv6 End.X SID sub-TLV 或 OSPFv3 SRv6 End.X SID sub-TLV 复制,分别用于 IS-IS 或 OSPFv3。在 BGP EPE 对等邻接 SID 的情况下,标志如第 7.2 节所定义。

算法:1 字节字段。与 SID 关联的算法。

权重:1 字节字段。值表示 SID 的负载均衡权重。

保留:1 字节字段。应在生成时设置为 0,接收时忽略。

SID:16 字节字段。该字段将广播的 SRv6 SID 编码为 128 位值。

sub-TLV:用于广播特定 SRv6 SID 的附加属性。

4.2 SRv6 LAN End.X SID TLV

对于 LAN 接口,IGP 节点通常仅宣布其到 IS-IS 伪节点(或等效的 OSPF DR)的邻接。通过该 TLV 广播的信息来源于 IS-IS SRv6 LAN End.X SID sub-TLV 或 OSPFv3 SRv6 LAN End.X SID sub-TLV。SRv6 LAN End.X SID TLV 允许节点在单个 BGP-LS 链路 NLRI 实例中宣布其到所有其他(即非 DIS 或非 DR)连接到 LAN 的节点的邻接 SRv6 SID。如果没有这个 TLV,则需要生成多个 BGP-LS 链路 NLRI,每个邻居一个,以广播这些非 DIS/非 DR 邻居的 SRv6 End.X SID TLV。用于这些 IGP 邻接的 SRv6 SID 使用 End.X 行为(如 End.X、End.X 带 PSP、End.X 带 USP 和 End.X 带 PSP & USP)进行广播。

可以在 BGP-LS 属性中包含该 TLV 的多个实例(每个 SRv6 LAN End.X SID 一个)。

BGP-LS IS-IS SRv6 LAN End.X SID 和 BGP-LS OSPFv3 SRv6 LAN End.X SID TLV 的格式如下:

类型:1107(用于 IS-IS)和 1108(用于 OSPFv3)

长度:可变

端点行为:2 字节字段。此 SRv6 SID 的端点行为代码点。

标志:1 字节的标志。标志从 IS-IS SRv6 LAN End.X SID sub-TLV 或 OSPFv3 SRv6 LAN End.X SID sub-TLV 复制。

算法:1 字节字段。与 SID 关联的算法。

权重:1 字节字段。值表示 SID 的负载均衡权重。

保留:1 字节字段。应在生成时设置为 0,接收时忽略。

邻居 ID:6 字节的 IS-IS 系统 ID 或 4 字节的 OSPFv3 路由器 ID。

SID:16 字节字段。该字段将广播的 SRv6 SID 编码为 128 位值。

sub-TLV:用于广播特定 SRv6 SID 的附加属性。

4.3 SRv6 Link MSD 类型

BGP-LS 链路 NLRI 的 BGP-LS 属性中的链路 MSD TLV 也用于广播 SRv6 节点在特定链路上支持的限制和 SRH 操作。用于 SRv6 的 MSD 类型在 BGP-LS 链路 MSD TLV 中使用,这些代码点在 IS-IS、OSPF 和 BGP-LS 协议之间共享。这些新 MSD 类型在 BGP-LS 中的描述和语义与在 IS-IS 或 OSPFv3 链路 MSD 广播中指定的相同。

每个 MSD 类型在 BGP-LS 链路 MSD TLV 中编码为一个一字节的类型,后跟一个一字节的值,如 IS-IS 或 OSPFv3 链路 MSD 广播中所规定的那样。

5. SRv6 Prefix Attributes

具有 IPv6 前缀的 SRv6 属性通过 BGP-LS 前缀 NLRI 使用 BGP-LS 属性 TLV 进行广播。

5.1 SRv6 Locator TLV

SRv6 SID 由定位器(locator)、功能(function)和参数(argument)部分组成。

一个节点被配置了一个或多个该节点支持的定位器。定位器是节点上配置的一组 SID 的覆盖前缀。每个定位器作为 BGP-LS 前缀 NLRI 对象进行广播,并在其 BGP-LS 属性中包含 SRv6 定位器 TLV。

通过该 TLV 广播的信息来源于 IS-IS SRv6 定位器 TLV 或 OSPFv3 SRv6 定位器 TLV。

与定位器匹配的 IPv6 前缀也可以由底层路由协议作为前缀可达性进行广播。在这种情况下,前缀 NLRI 还将与携带该前缀路由度量的前缀度量TLV(Prefix Metric TLV)相关联。已通过 SRv6 定位器 TLV 广播的前缀 NLRI 也被视为正常的路由前缀(即前缀可达性),只有当其还有 IGP 度量 TLV(TLV 1095)与之关联时,否则只被视为 SRv6 定位器广播。

SRv6 定位器 TLV 的格式如下:

类型:1162

长度:可变

标志:1 字节的标志。标志从 IS-IS SRv6 定位器 TLV 或 OSPFv3 SRv6 定位器 TLV 复制。

算法:1 字节字段。与 SID 关联的算法。

保留:2 字节字段。应在生成时设置为 0,接收时忽略。

度量:4 字节字段。定位器的度量值从 IS-IS SRv6 定位器 TLV 或 OSPFv3 SRv6 定位器 TLV 中复制,分别用于 IS-IS 或 OSPFv3。

sub-TLV:用于广播给定 SRv6 定位器的附加属性。目前尚未定义任何sub-TLV。

6. SRv6 SID NLRI

在RFC 7752中定义的链路状态 NLRI(Link-State NLRI)扩展为携带 SRv6 SID 信息。

本文档定义了以下新的链路状态 NLRI 类型用于 SRv6 SID 信息:SRv6 SID NLRI(类型 6)。

与节点关联的 SRv6 SID 使用 BGP-LS SRv6 SID NLRI 进行广播。

这种新的 NLRI 类型的格式如下:

协议 ID:1 字节字段,指定信息来源协议。

标识符:8 字节值,如 RFC 7752 中定义。

本地节点描述符 TLV:本地节点的一组节点描述符 TLV,如 RFC 7752 中为 IGP、直接协议 ID 和静态配置协议 ID 定义的那样,或如 RFC 9086 中为 BGP 定义的那样。

SRv6 SID 描述符:一组 SRv6 SID 描述符 TLV。此字段可以包含单个 SRv6 SID 信息 TLV(第 6.1 节)和多拓扑标识符 TLV。

本文档中定义的新 TLV,用于在 BGP-LS 属性中广播 SRv6 SID 的属性,如第 7 节所述。

6.1 SRv6 SID Information TLV

使用SRv6 SID Information TLV编码一个与节点相关联并使用SRv6 SID NLRI发布的SRv6 SID。

在广播来自 IGP 的 SRv6 SID 时,SID 信息来源于 IS-IS SRv6 End SID sub-TLV 或 OSPFv3 SRv6 End SID sub-TLV。

当启用 SRv6 BGP EPE 功能时,TLV 携带与 BGP PeerNode 和 PeerSet SID 对应的 SRv6 SID。

TLV 的格式如下:

类型:518

长度:16

SID:16 字节字段。此字段将广播的 SRv6 SID 编码为 128 位值。

7. SRv6 SID 属性

本章节指定了与 BGP-LS SRv6 SID NLRI 关联的 BGP 链路状态属性中承载的 TLV。

7.1 SRv6 端点行为 TLV(Rv6 Endpoint Behavior TLV)

每个在 SRv6 支持的节点上实例化的 SRv6 SID 都绑定了特定的指令(称为“行为”)。RFC 8986 描述了如何将行为绑定到 SID,并定义了一组初始的众所周知的行为。

SRv6 端点行为 TLV 是一个强制性的 TLV,必须包含在与 BGP-LS SRv6 SID NLRI 关联的 BGP-LS 属性中。

在广播来自 IGP 的 SRv6 SID 时,端点行为Endpoint behavior、标志Flags,和算法Algorithm来源于 IS-IS SRv6 End SID sub-TLV 或 OSPFv3 SRv6 End SID sub-TLV。

在广播与 BGP EPE 功能对应的 SRv6 SID 时,端点行为对应于 End.X 及类似行为。当使用Direct作为协议ID在节点上发布本地实例化的SRv6 SID时,Endpoint行为对应于与该节点相关的任何SRv6 Endpoint行为。目前未定义任何flags。除非算法与分配SID的SRv6 Locator本地关联,否则算法值为0。

TLV 的格式如下:

类型:1250

长度:4

端点行为:2 字节字段。此 SRv6 SID 的端点行为代码点。值来自 "SRv6 端点行为" IANA 注册表。

标志:1 字节的标志。广播与 IGP 关联的 SRv6 SID 时,标志映射到 IS-IS 或 OSPFv3 编码。对于 BGP EPE 或使用 Direct 作为协议 ID 的 SRv6 SID 广播,当前未定义标志。未定义的标志应在生成时设置为 0,接收时忽略。

算法:1 字节字段。与 SID 关联的算法。

7.2 SRv6 BGP 对等节点 SID TLV

SR-MPLS 的 BGP PeerNode 和 PeerSet SID 如 RFC 9086 中所指定。使用带有 END.X 行为的 SID 可以实现类似的 Peer Node 和 Peer Set 功能。附录 A 提供了 SR-MPLS 和 SRv6 中这些 SID 信令之间的一些差异。SRv6 BGP PeerNode SID TLV 是一个强制性的 TLV,用于 BGP 为 EPE 功能广播的 SRv6 SID NLRI 中的 BGP-LS 属性。该 TLV 必须与关联 BGP PeerNode 或 PeerSet 功能的 SRv6 SID 一起包含。

TLV 的格式如下:

类型:1251

长度:12

标志:1 字节的标志,定义如下:

B-标志:备份标志。如果设置,则 SID 有资格使用快速重路由(FRR)进行保护。备份转发路径的计算及其与对等 BGP 标识符的转发条目的关联是特定于实现的。

S-标志:集标志。设置 S-标志表示 SID 指代一组 BGP 对等会话(即 BGP Peer Set SID 功能),因此必须分配给与 BGP 对等会话关联的一个或多个 End.X SID。

P-标志:持久标志。设置 P-标志表示 SID 是持久分配的,即值在路由器重启和/或会话波动期间保持一致。

其他位保留供将来使用,应在生成时设置为 0,接收时忽略。上述定义的标志也用于广播 SRv6 BGP 对等邻接 SID(第 4.1 节)。

权重:1 字节字段。值表示 SID 的负载均衡权重。权重的使用在 RFC 8402 中定义。

保留:2 字节字段。应在生成时设置为 0,接收时忽略。

对等 AS 编号:对等路由器的 4 字节 BGP AS 编号。

对等 BGP 标识符:对等路由器的 4 字节 BGP 标识符(BGP 路由器 ID)。

对于 SRv6 BGP EPE PeerNode SID,该 TLV 的一个实例与 SRv6 SID 关联。对于 SRv6 BGP EPE PeerSet SID,该 TLV 的多个实例(每个对等一个)与 SRv6 SID 关联,并设置 S-标志。

8. SRv6 SID 结构 TLV

SRv6 SID 结构 TLV 用于广播 SRv6 SID 每个部分的长度,如 RFC 8986 中定义的那样。它是 BGP-LS 属性中用于 SRv6 SID NLRI 的可选 TLV,也是 SRv6 End.X SID、IS-IS SRv6 LAN End.X SID 和 OSPFv3 SRv6 LAN End.X SID TLV 的sub-TLV。

在广播来自 IGP 的 SRv6 SID 时,SRv6 SID 结构信息来源于 IS-IS SRv6 SID 结构sub-sub- TLV 或 OSPFv3 SRv6 SID 结构sub-TLV,分别用于 IS-IS 或 OSPFv3。

在广播与 BGP EPE 功能对应的 SRv6 SID 或使用 Direct 作为协议 ID 的 SRv6 SID 时,SRv6 SID 结构信息来源于本地配置的 SRv6 SID。

TLV 的格式如下:

类型:1252

长度:4

LB 长度:1 字节字段。SRv6 SID 定位块的长度(以位为单位)。

LN 长度:1 字节字段。SRv6 SID 定位节点的长度(以位为单位)。

功能长度:1 字节字段。SRv6 SID 功能的长度(以位为单位)。

参数长度:1 字节字段。SRv6 SID 参数的长度(以位为单位)。

LB 长度、LN 长度、功能长度和参数长度的总和必须小于或等于 128。

9. IANA 考虑事项

根据本文档,IANA 已在“边界网关协议 - 链路状态 (BGP-LS) 参数”注册组中分配了代码点,如下小节所述。

9.1 BGP-LS NLRI 类型

IANA 在“BGP-LS NLRI 类型”注册表中分配了以下代码点:

类型

NLRI 类型

参考文献

6

SRv6 SID NLRI

RFC 9514

9.2 BGP-LS NLRI 和属性 TLV

IANA 在“BGP-LS NLRI 和属性 TLV”注册表中分配了以下 TLV 代码点:

TLV 代码点

描述

参考文献

518

SRv6 SID 信息

RFC 9514

1038

SRv6 能力

RFC 9514

1106

SRv6 End.X SID

RFC 9514

1107

IS-IS SRv6 LAN End.X SID

RFC 9514

1108

OSPFv3 SRv6 LAN End.X SID

RFC 9514

1162

SRv6 定位器

RFC 9514

1250

SRv6 端点行为

RFC 9514

1251

SRv6 BGP 对等节点 SID

RFC 9514

1252

SRv6 SID 结构

RFC 9514

9.3 SRv6 BGP EPE SID 标志

根据本文档,IANA 在“边界网关协议 - 链路状态 (BGP-LS) 参数”注册组下创建了一个新的注册表,名为“SRv6 BGP EPE SID 标志”。该注册表的分配策略根据 RFC 8126 是“标准行动”。注册表初始内容如下:

描述

参考文献

0

备份标志 (B-标志)

RFC 9514

1

集标志 (S-标志)

RFC 9514

2

持久标志 (P-标志)

RFC 9514

3-7

未分配

后续九章十章分别为可管理性考虑以及安全性考虑,在此不过多赘述。

  • 14
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值