书籍来源:《SRv6网络编程:开启IP网络新时代》
这本书已经出了很多年了,但多年之后因为工作需要再来读一遍,除了温习之外,发现自己学到了更多的知识。一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:SRv6网络编程自学系列 | 汇总_COCOgsta的博客-CSDN博客
IETF引入了BGP-LS,控制器可以通过BGP-LS收集网络拓扑的信息。
4.2.1 BGP-LS概述
BGP-LS的典型应用场景和架构如图4-3所示,其中Consumer(消费者)相当于控制器。在每个IGP域中,只需其中一台路由设备运行BGP-LS,直接和Consumer建立BGP-LS邻居关系。采用这种集中式的BGP Speaker机制后,Consumer只需对外建立一个BGP-LS连接,就可以实现对全网拓扑信息的收集,从而简化了网络的运维和部署。
图4-3 BGP-LS的典型应用场景和架构
BGP-LS采用MP_REACH_NLRI(多协议可达NLRI)和MP_UNREACH_NLRI(多协议不可达NLRI)属性作为链路状态NLRI的容器,即链路状态NLRI是作为BGP的Update消息中的一种MP_REACH_NLRI或MP_UNREACH_NLRI属性。
在支持SR之前,BGP-LS主要定义了4种链路状态NLRI。
- Node NLRI(节点NLRI)。
- Link NLRI(链路NLRI)。
- IPv4 Topology Prefix NLRI(IPv4拓扑前缀NLRI)。
- IPv6 Topology Prefix NLRI(IPv6拓扑前缀NLRI)。
BGP-LS属性主要包括以下3个属性:Node Attribute(节点属性);Link Attribute (链路属性);Prefix Attribute(前缀属性)。
BGP-LS链路状态NLRI和属性的摘要信息如表4-1所示 [4]。
表4-1 链路状态NLRI和属性的摘要信息
4.2.2 BGP-LS SRv6扩展
BGP-LS新定义了一个SRv6 SID NLRI,用于通告SRv6 SID的网络层可达信息,其内容包括以下部分。
- Protocol-ID:协议标识符。
- Local Node Descriptors:本地节点描述符。
- SRv6 SID Descriptors:SRv6 SID描述符,用于描述一个SRv6 SID的信息。目前定义为一个TLV,即SRv6 SID Information TLV。
BGP-LS针对SRv6 SID NLRI,定义了SRv6 SID NLRI属性,用于携带与SRv6 SID可达性相关的属性。目前定义了以下3个相关属性(以TLV的形式)。
- SRv6 Endpoint Function:用于携带和某个SID NLRI相关联的Endpoint Function信息(如End.DT4等)。
- SRv6 BGP Peer Node SID:用于携带和某个SID NLRI相关联的BGP Peer(对等体)信息。
- SRv6 SID Structure:用于描述一个SRv6 SID的各部分的长度信息。
BGP-LS还对既有属性进行了扩展,定义了一系列的属性TLV。
- Node Attribute扩展,新增了2个属性:SRv6 Capabilities属性用于通告节点支持的SRv6能力;SRv6 Node MSD Types属性用于通告一个SRv6节点处理SID栈的能力。
- Link Attribute扩展:SRv6 End.X SID属性用于通告P2P/P2MP的END.X SID;SRv6 LAN End.X SID属性用于通告广播网的END.X SID。
- Prefix Attribute扩展:SRv6 Locator属性用于通告节点的SRv6 Locator的网段地址。
以下详细介绍相关NLRI和各种属性TLV的定义与功能。
- SRv6 SID NLRI
SRv6 SID NLRI用于描述SRv6 SID的网络层可达信息
- SRv6 SID Information TLV
SRv6 SID Information TLV是SRv6 SID NLRI的一个Sub-TLV,用于通告SID相关信息
- SRv6 Endpoint Function TLV
SRv6 Endpoint Function TLV是一种SRv6 SID NLRI属性。每个SRv6 SID都对应一个网络功能的指令,SRv6 Endpoint Function TLV就是用来携带每种SID类型的指令的
- SRv6 BGP Peer Node SID TLV
SRv6 BGP Peer Node SID TLV是一种SRv6 SID NLRI属性,用于携带和某个SID NLRI相关的BGP Peer信息。
- SRv6 SID Structure TLV
SRv6 SID Structure TLV是一种SRv6 SID NLRI属性,用于描述一个SRv6 SID的各部分的长度信息。
- SRv6 Capabilities TLV
SRv6 Capabilities TLV是一种SRv6 Node属性,用于通告某个网络节点支持的SRv6能力。
- SRv6 Node MSD Types
Node MSD TLV是一种Node属性TLV,描述节点最大SID栈深;Link MSD TLV是一种Link属性TLV,描述链路最大SID栈深。
- SRv6 End.X SID TLV
SRv6 End.X SID TLV是一种SRv6链路属性TLV,用于通告SRv6 End.X SID。另外,对于运行了BGP的节点,这个TLV还可以用于通告BGP EPE(Egress Peer Engineering,出口对等体工程)Peer 的 END.X SID。
- SRv6 LAN End.X SID TLV
SRv6 LAN End.X SID TLV也是一种SRv6链路属性TLV,用于发布一个广播网邻居类型的SRv6 End.X SID。
相比P2P的SRv6 End.X SID TLV,SRv6 LAN End.X SID TLV增加了“IS-IS System-ID or OSPFv3 Router-ID of the neighbor”字段。
- SRv6 Locator TLV
SRv6 Locator TLV是一种SRv6前缀属性TLV,BGP-LS利用SRv6 Locator TLV和SRv6前缀NLRI结合,可以收集SRv6节点的Locator信息。