Tag: SRv6技术课堂-SRv6概述 作者 李振斌
-
SRv6技术课堂-SRv6概述 作者 李振斌
作者简介:李振斌 华为首席协议专家/IETF互联网架构委员会(IAB)委员。负责华为的IP协议研究和标准推动工作。自2009年起积极参与IETF标准创新工作,主导和参与了大量IETF RFC/草案。在过去六年内持续推动了SDN演进的BGP/PCEP/Netconf/YANG的协议创新和标准化,当前研究的重点包括SRv6、网络智能、Telemetry、5G承载等。2019年当选IETF互联网架构委员会(IAB)委员,承担2019 – 2021年的互联网架构管理工作。 本文系《SRv6技术课堂系列》的第一讲,后续将陆续更新各个维度的SRv6技术细节,欢迎大家批评指正。 1、SRv6基本概念 由于SR MPLS已经普及,相信大家已经对Segment Routing的基本概念有足够的了解。这里重点介绍SRv6独有的工作原理和相关概念。 1.1 SRv6 Segment 与SR MPLS的Segment不同,SRv6的Segment有128bits,而且分成了三部分: 图1 SRv6 SID 1、Locator(位置标识):网络中分配给一个网络节点的标识,可以用于路由和转发数据包。Locator有两个重要的属性,可路由和聚合。在SRv6 SID中Locator是一个可变长的部分,用于适配不同规模的网络。 2、Function(功能):设备分配给本地转发指令的一个ID值,该值可用于表达需要设备执行的转发动作,相当于计算机指令的操作码。在SRv6网络编程中,不同的转发行为由不同的功能ID来表达。一定程度上功能ID和MPLS标签类似,用于标识VPN转发实例等。 3、Args(变量):转发指令在执行的时候所需要的参数,这些参数可能包含流,服务或任何其他相关的可变信息。 从SRv6 SID的组成来看,SRv6同时具有路由和MPLS两种转发属性,可以融合两种转发技术的优点。 1.2 SRv6扩展头 为了在IPv6报文中实现SRv6转发,引入了一个SRv6扩展头(Routing Type为4),叫Segment Routing Header(SRH),用于进行Segment的编程组合形成SRv6路径。 图2是SRv6的报文封装格式。绿色的是IPv6报文头,棕色部分是SRH,蓝色是报文负荷。 图2 SRv6 SRH IPv6 Next Header字段取值为43,表示后接的是IPv6路由扩展头。Routing Type = 4,表明这是SRH的路由扩展头,这个扩展头里字段解释如下: 1.3 SRv6三层编程空间 SRv6具有比SR-MPLS更强大的网络编程能力。SRv6的网络可编程性体现在SRH扩展头中。SRH中有三层编程空间: 图3 SRv6的三层编程空间 第一部分是Segment序列。如前所述,它可以将多个Segment组合起来,形成SRv6路径。这跟MPLS标签栈比较类似。 第二部分是对SRv6 SID的128比特的运用。众所周知,MPLS标签封装主要是分成四个段,每个段都是固定长度(包括20比特的标签,8比特的TTL,3比特的Traffic Class和1比特的栈底标志)。而SRv6的每个Segment是128比特长,可以灵活分为多段,每段的长度也可以变化,由此具备灵活编程能力。 第三部分是是紧接着Segment序列之后的可选TLV(Type-Length-Value)。报文在网络中传送时,需要在转发面封装一些非规则的信息,它们可以通过SRH中TLV的灵活组合来完成。 SRv6通过三层编程空间,具备了更强大的网络编程能力,可以更好地满足不同的网络路径需求。 1.4 SRv6报文转发流程 图4 SRv6转发流程…