书籍来源:《SRv6网络编程:开启IP网络新时代》
这本书已经出了很多年了,但多年之后因为工作需要再来读一遍,除了温习之外,发现自己学到了更多的知识。一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:SRv6网络编程自学系列 | 汇总_COCOgsta的博客-CSDN博客
SRv6 Policy可以通过BGP发布,需要扩展BGP的SAFI以及对应的NLRI和Path Attribute等部分,具体的扩展如表4-20所示。
表4-20 BGP针对SRv6 Policy的扩展
这种新的SAFI用于标识SR Policy,支持IPv4和IPv6两种AF。
在该地址族的Update消息中,用NLRI标识SR Policy的Candidate Path,用Path Attribute来携带SR Policy Candidate Path的具体信息,包括对应的Binding SID、Preference和Segment List,等等。
头节点收到多条相同的Candidate Path时会进行BGP路由优选,BGP将选择的结果下发给SRv6 Policy的管理模块,并由管理模块安装到数据平面。
下面详细介绍BGP SRv6 Policy的协议扩展。
- SRv6 Policy SAFI and NLRI
BGP新增了对SR Policy SAFI的定义,SAFI的编码为73,它只能与IPv4或IPv6的AFI一起出现。当发布SRv6 Policy时,AFI取值为IPv6,SAFI取值为SR Policy。
SRv6 Policy SAFI使用新的NLRI格式描述SRv6 Policy的一条Candidate Path。
- SR Policy和隧道封装属性
BGP为SR Policy定义了一种新的隧道类型,编码是15,其对应的隧道封装属性为23,SR Policy就编码在隧道封装属性中。SR Policy的封装格式如下。
SR Policy SAFI NLRI: <Distinguisher, Policy-Color, EndPoint>
Attributes:
Tunnel Encaps Attribute(23)
Tunnel Type: SR Policy(15)
Binding SID
Preference
Priority
Policy Name
Explicit NULL Label Policy(ENLP)
Segment List
Weight
Segment
Segment
…
…
复制代码
其中,SR Policy SAFI NLRI在前面已介绍过。SR Policy里包含Binding SID、Preference、Priority和Segment List等Sub-TLV。
- Binding SID Sub-TLV
Binding SID Sub-TLV 指 定 了 Candidate Path 关 联 的 Binding SID。
- Preference Sub-TLV
Preference Sub-TLV用来指定SRv6 Policy中Candidate Path的优先级。Preference Sub-TLV是可选的,未被携带时,Candidate Path的默认优先级是100。
- Segment List Sub-TLV
Segment List Sub-TLV指定了到SRv6 Policy的Endpoint节点的显式路径。Segment List Sub-TLV中包含了路径信息和一个可选的Weight SubTLV。
- Weight Sub-TLV
Weight Sub-TLV用来指定一个Segment List在Candidate Path中的权重。多个Segment List权重不同时,按照Weight指定的权重进行非等价负载分担。未指定时,Segment List的权重是1。
- Segment Sub-TLV
Segment Sub-TLV用来定义Segment List中的Segment,一个Segment List可以包含多个Segment Sub-TLV。Segment Sub-TLV有多种不同的类型,对于SRv6 Policy,最常用的Segment类型是SRv6 SID类型。
- Policy Priority Sub-TLV
Policy Priority Sub-TLV用来指定拓扑变化时SRv6 Policy重算路的优先级。
- Policy Name Sub-TLV
Policy Name Sub-TLV用来给Policy的Candidate Path关联一个名字。