书籍来源:《SRv6网络编程:开启IP网络新时代》
这本书已经出了很多年了,但多年之后因为工作需要再来读一遍,除了温习之外,发现自己学到了更多的知识。一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:SRv6网络编程自学系列 | 汇总_COCOgsta的博客-CSDN博客
在进行SRv6网络编程的时候,需要定义网络指令:SRv6 Segment。标识SRv6 Segment的ID被称为SRv6 SID ,SRv6 SID是一个128 bit的值,它通常由3个部分组成,如图2-2所示。
图2-2 SRv6 SID的格式
这3个部分的详细解释如下。
Locator是网络拓扑中一个网络节点的标识,用于路由和转发报文到该节点。Locator对应的路由会由节点通过IGP发布到网络中,用于帮助其他设备将报文转发到发布该Locator的节点。
在SRv6 SID中,Locator的长度可变,用于适配不同规模的网络。
以下是一个Locator的配置样例。
<HUAWEI> system-view
[~HUAWEI] segment-routing ipv6
[~HUAWEI-segment-routing-ipv6] locator test1 ipv6-prefix 2001:db8:100:: 64
这个Locator的前缀为2001:db8:100::,前缀长度是64 bit。
Function用来表达该指令要执行的转发动作。在SRv6网络编程中,不同的转发行为由不同的Function来表达。
以下是一个End.X类型的Function的配置样例。
[~HUAWEI-segment-routing-ipv6-locator] opcode ::1 end-x interfaceGigabitEthernet3/0/0 next-hop 2001:db8:200::1
这个Function是End.X类型,对应的Opcode是::1。Locator的前缀2001:db8:100::和Function的Opcode(::1)组成一个手工配置的SRv6 SID,其取值是2001:db8:100::1。上述Function就是指示本机将报文从接口GigabitEthernet3/0/0转发到下一跳为2001:db8:200::1的邻居节点。
Arguments(Args)字段是一个可选字段。它是指令在执行时对应的参数,这些参数可能包含流、服务或任何其他相关的信息。
目前的Segment Routing技术就是通过在源节点封装一个有序的Segment List,指示网络在指定节点上执行对应的指令来实现网络的可编程。