SRH
IPv6报文是由IPv6标准头+扩展头(0…n)+负载Payload组成。
为了基于IPv6转发平面实现Segment Routing IPv6(SRv6),新增加一种IPv6扩展头,称作SRH(Segment Routing Header)扩展头,该扩展头指定一个IPv6的显式路径,存储的是IPv6的Segment List信息。
简单来说,SRH就是IPv6多种扩展头中用于支持SRv6技术的扩展头。
SRH中包含多个Segment List[x]字段,则是该数据依次经过的转发节点路径。
SID
SRv6 Segment是IPv6地址形式,通常称为SRv6 SID(Segment Identifier)。SRv6 SID由Locator、Function和Arguments三部分组成,格式为Locator:Function:Arguments。
在SR域中,Locator是网络拓扑中的一个网络节点的标识,用于路由和转发报文到该节点,实现网络指令的可寻址,即可以通过Locator定位到某一网络节点。
Function用来标识该指令要执行的转发动作。在SRv6网络编程中,不同的转发行为由不同的Function来标识。即网络数据包到达某一Locator网络节点后,该网络节点通过读取Function内容来确定对此数据包执行什么操作。
Arguments作为参数可选字段,在需要时存在于Function的低比特位,用于定义一些报文额外的操作(如流和服务信息等信息)。
听不懂?举个例子:假如你自驾从北京去往上海迪士尼游玩,通过查阅上海公告可知,去上海给车辆加油标识为1、游玩标识为2;根据已有的信息,你明确了自己的目的地为上海(即Locator字段为上海),在上海的动作是去迪士尼游玩(即Function字段为::2),因此,你的目的SID设置为“上海::2”,此处无需Arguments字段,因此可不写。当你给车辆贴上SID自驾到上海高速出口,工作人员看到你的目的地(Locator)是上海后,根据你的Function为::2可知你的目的是游玩,从而放行到相应的高速出口。如果有需要,你也可以将“去迪士尼”这一参数附加在Function后面,让工作人员更加了解你的需求。
SRv6节点
SR有三种类型节点:
源节点(SR Source Node):生成SRv6报文的源节点。(如上例中的北京)
中转节点(Transit Node):转发SRv6报文但不进行SRv6处理的IPv6节点。(如上例中北京去往上海途中经过的城市)
Endpoint节点(SR Segment Endpoint Node):接收并处理SRv6报文的任何节点,其中该报文的IPv6目标地址必须是本地配置的SID或者本地接口地址。(如上例中的上海)