Segment Routing MPLS基本原理
基本概念
SR域(Segment Routing Domain):SR节点的集合。
SID:即Segment ID,用来标识唯一的段。在转发层面,可以映射为MPLS标签。
SRGB(Segment Routing Global Block):用户指定的为Segment Routing预留的本地标签集合。
Segment分类
标签 |
生成方式 |
作用 |
---|---|---|
Prefix Segment(前缀段) |
手工配置。 |
Prefix Segment用于标识网络中的某个目的地址前缀(Prefix)。 Prefix Segment通过IGP协议扩散到其他网元,全局可见,全局有效。 Prefix Segment通过Prefix Segment ID(SID)标识。Prefix SID是源端发布的SRGB范围内的偏移值,接收端会根据自己的SRGB计算实际标签值用于生成MPLS转发表项。 |
Adjacency Segment(邻接段) |
源节点通过协议动态分配。也可以手工配置。 |
Adjacency Segment用于标识网络中的某个邻接。 Adjacency Segment通过IGP协议扩散到其他网元,全局可见,本地有效。 Adjacency Segment通过Adjacency Segment ID(SID)标识。Adjacency SID为SRGB范围外的本地SID。 |
Node Segment(节点段) |
手工配置。 |
Node Segment是特殊的Prefix Segment,用于标识特定的节点(Node)。在节点的Loopback接口下配置IP地址作为前缀,这个节点的Prefix SID实际就是Node SID。 |
通俗的理解,Prefix SID代表目的地址,Adjacency SID代表数据包的外发链路,可以分别类似于传统IP转发中的目的IP地址和出接口。在IGP区域内,网元设备使用扩展IGP消息将自身的Node SID以及Adjacency SID进行泛洪,这样任意一个网元都可以获得其他网元的信息。
通过按序组合前缀(节点)SID和邻接SID,可以构建出网络内的任何路径。在路径中的每一跳,使用栈顶段信息区分下一跳。段信息按照顺序堆叠在数据头的顶部。当栈顶段信息包含另一个节点的标识时,接收节点使用等价多路径(ECMP)将数据包转发到下一跳。当栈顶段信息是本节点的标识时,接收节点弹出顶部段并执行下一个段所需的任务。
实际应用中Prefix SID、Adjacency SID、Node SID可以单独使用,也可以结合使用。主要有如下三种情况。
Prefix SID
如果网络中存在等价路径,则可以实现负载分担(ECMP);如果存在不等价路径,则可以形成链路备份。由此可见,基于Prefix SID的转发路径并不是一条固定路径,头节点也无法控制报文的整条转发路径。
Adjacency SID
Adjacency SID + Node SID
SR转发机制
SR可以直接应用在MPLS架构,转发机制没有变化。代表段的SID被编码为MPLS标签。段序列被编码为标签栈。要处理的段位于栈顶。一个段处理完成后,相关标签从标签栈中弹出。
基于MPLS转发机制的SR,通常也称为SR-MPLS。
SR标签冲突处理原则
由于Prefix SID通过手工配置生成,不同设备上的配置可能发生标签冲突。标签冲突分为前缀冲突和SID冲突,前缀冲突是指相同的前缀关联了两个不同的SID,SID冲突是指相同的SID关联到不同的前缀。
- 前缀掩码更大者优选;
- 前缀更小者优选;
- SID更小者优选。
- a. 1.1.1.1/32 1
- b. 1.1.1.1/32 2
- c. 2.2.2.2/32 3
- d. 3.3.3.3/32 1
- 先进行前缀冲突处理,a和b为前缀冲突,根据标签冲突处理原则,a的SID比b的SID小,优选a,则处理后:
- a. 1.1.1.1/32 1
- c. 2.2.2.2/32 3
- d. 3.3.3.3/32 1
- 再根据上一步处理结果进行SID冲突处理,a和d为SID冲突,根据标签冲突处理原则,a的前缀比d的前缀小,优选a。冲突解决后,最终优选出两条路由:
- a. 1.1.1.1/32 1
- c. 2.2.2.2/32 3