手册下载
SRv6 OAM技术白皮书-6W100-整本手册.pdf (318.54 KB)
SRv6 OAM技术白皮书
Copyright © 2022 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。
SRv6和SRv6 TE Policy作为一种承载业务流量的隧道技术,只有控制器或者源节点才能感知到转发的路径,中间节点既不维护也不感知转发路径。当数据通过SRv6 BE或者SRv6 TE Policy转发时,一旦某个中间节点异常导致数据转发失败,控制器或者源节点无法检测和定位到故障,因此,我们需要一种发现和定位转发路径上故障的运维手段。SRv6 OAM(Operations, Administration, and Maintenance,操作、管理和维护)可以满足这种需求。
SRv6 OAM通过SRv6 SID和SRv6 TE Policy的Ping/Tracert来实现。
· SRv6 SID Ping和SRv6 TE Policy Ping用于检查网络连接及主机是否可达。
· SRv6 SID Tracert和SRv6 TE Policy Tracert在检查网络连接是否可达的同时,还可以分析网络什么地方发生了故障。
图1 SRH的Flags字段格式
如图1所示,O-bit位于SRH的Flags字段,用于指示SRv6节点执行OAM处理。若报文中的O-bit置位,则SRv6网络中每一个Endpoint节点都需要复制该报文,为报文打上时间戳,并将携带时间戳的报文交给控制平面处理。在SRv6 OAM中,如果需要报文传输路径上的每一个Endpoint节点都对源节点发送的OAM检测报文进行应答,则需要源节点在发送的报文中将O-bit置位。
基于O-bit置位,可以实现逐段OAM检测。例如,通过O-bit置位实现逐段SRv6 SID Ping检测和SRv6 SID Tracert的Overlay检测。
在SRv6 SID和SRv6 TE Policy的Ping/Tracert场景中,报文中不论是否携带End.OP SID,均可通过该报文来检测SRv6路径的连通性。
End.OP SID是一个OAM类型的SRv6 SID,用于SRv6 SID和SRv6 TE Policy的Ping/Tracert场景。
End.OP SID用来标识OAM检测报文,以便目的节点识别该报文,并进行处理。基于End.OP SID,可以实现端到端(End-to-End)的OAM检测。例如,通过End.OP SID实现端到端SRv6 SID Ping检测和SRv6 SID Tracert的非Overlay检测。
End.OP SID对应的转发动作为:如果设备收到的报文的目的地址为End.OP SID,则对下一个SRv6 SID进行检查。如果下一个SRv6 SID是本地SRv6 SID,则回复应答报文;否则丢弃该报文。如图1所示,以SRv6 SID Ping为例,源节点Device A Ping目的节点Device C。Device A在构造ICMPv6请求报文时在SRH头中插入节点Device C的End.OP SID。Device C收到ICMPv6请求报文后,发现报文目的地址是自己的End.OP SID,检查SRv6 SID c是不是自己的本地SRv6 SID。如果是,则向Device A发送ICMPv6应答报文;否则丢弃ICMPv6请求报文。
图1 End.OP SID应用示意图
SRv6 SID Ping支持逐段检测和非逐段检测两种检测方式。
逐段检测是指在SRv6转发路径中,检测源节点和所有SRv6节点之间的连通性。SRv6转发路径中所有SRv6节点均会向源节点回复ICMPv6响应报文。
图2 SRv6 SID Ping逐段检测方式示意图
如图2所示,逐段检测工作过程为:
(1) Device A向Decive D发起Ping,依次指定Device B的SRv6 SID和Device D的SRv6 SID。Device A构造ICMPv6请求报文,封装SRH扩展头并进行转发。
(2) 中间节点收到ICMPv6请求报文后:
¡ 如果中间节点为SRv6节点(如Device B),且报文的IPv6目的地址为本地的SRv6 SID,同时报文SRH的Flags字段中O标记位置位,则向Device A发送ICMPv6应答报文,并且基于SRH转发ICMPv6请求报文。
¡ 如果中间节点不是SRv6节点(如Device C),则不向Device A发送ICMPv6应答报文,直接根据目的IPv6地址查找IPv6路由表转发ICMPv6请求报文。
(3) Device D收到ICMPv6请求报文后,报文SRH的Flags字段中O标记位置位且SL=0,需要查找Local SID表,确认报文目的IPv6地址是否为本地的SRv6 SID:
¡ 如果报文目的IPv6地址是Device D的SRv6 SID,则校验通过,向Device A发送ICMPv6应答报文。
¡ 如果报文目的IPv6地址不是Device D的SRv6 SID,则校验不通过,丢弃ICMPv6请求报文。
(4) 如果Device A在超时时间内收到目的节点的ICMPv6应答报文,则目的节点可达;否则,目的节点不可达。
端到端检测是指仅检测源节点和目的节点之间的连通性。仅目的节点向源节点回复ICMPv6响应报文。
进行端到端检测时,不论是否指定End.OP SID,均可以进行SRv6 SID Ping操作,下文以未指定End.OP SID为例进行介绍。
图3 SRv6 SID Ping端到端检测方式示意图
如图3所示,端到端检测工作过程为:
(1) Device A向Decive D发起Ping,依次指定Device B的SRv6 SID和Device D的SRv6 SID。Device A构造ICMPv6请求报文,封装SRH扩展头并进行发送。
(2) 中间节点收到ICMPv6请求报文后:
¡ 如果中间节点为SRv6节点(如Device B),且报文的IPv6目的地址为本地的SRv6 SID,则基于SRH转发ICMPv6请求报文。
¡ 如果中间节点不是SRv6节点(如Device C),则根据目的IPv6地址查找IPv6路由表转发ICMPv6请求报文。
(3) Device D收到ICMPv6请求报文后,报文SRH中SL=0,需要查找Local SID表,确认报文目的IPv6地址是否为本地的SRv6 SID:
¡ 如果报文目的IPv6地址是Device D的SRv6 SID,则校验通过,向Device A发送ICMPv6应答报文。
¡ 如果报文目的IPv6地址不是Device D的SRv6 SID,则校验不通过,丢弃ICMPv6请求报文。
(4) 如果Device A在超时时间内收到目的节点的ICMPv6应答报文,则目的节点可达;否则,目的节点不可达。
SRv6 SID Tracert支持Overlay检测和非Overlay检测两种方式。
通过Overlay方式查看SRv6转发路径时,仅显示转发路径上所有SRv6节点的信息。
图4 SRv6 SID Tracert Overlay检测方式示意图
如图4所示,Overlay检测工作过程为:
(1) Device A向Decive D发起Tracert,依次指定Device B的SRv6 SID和Device D的SRv6 SID。Device A构造UDP报文(该报文的目的UDP端口号是目的端的任何一个应用程序都不可能使用的端口号),封装SRH扩展头并进行转发。此时IPv6报文首部的Hop limit字段的取值设置为64。
(2) 中间节点收到UDP报文后:
¡ 如果中间节点为SRv6节点(如Device B),且报文的IPv6目的地址为本地的SRv6 SID,同时报文SRH的Flags字段中O标记位置位,则向Device A发送ICMPv6端口不可达报文,并且基于SRH转发UDP报文。
¡ 如果中间节点不是SRv6节点(如Device C),则不向Device A发送ICMPv6端口不可达报文,直接根据目的IPv6地址查找IPv6路由表转发UDP报文。
(3) Device D收到UDP报文后,报文SRH的Flags字段中O标记位置位且SL=0,需要查找Local SID表,确认报文目的IPv6地址是否为本地的SRv6 SID:
¡ 如果报文目的IPv6地址是Device D的SRv6 SID,则校验通过,向Device A发送ICMPv6端口不可达报文。
¡ 如果报文目的IPv6地址不是Device D的SRv6 SID,则校验不通过,并丢弃UDP报文。
(4) 如果Device A收到目的节点的ICMPv6端口不可达报文,则目的节点可达,且可以根据Tracert结果得到数据报文从源节点到目的节点所经历的路径;否则,目的节点不可达,且可以根据Tracert结果定位故障节点。
通过非Overlay方式查看SRv6转发路径时,会显示转发路径上所有节点(包括支持SRv6的节点和不支持SRv6的节点)的信息。
进行非Overlay检测时,不论是否指定End.OP SID,均可以进行SRv6 SID Tracert操作,下文以未指定End.OP SID为例进行介绍。
图5 SRv6 SID Tracert非Overlay检测方式示意图
如图5所示,非Overlay检测工作过程为:
(1) Device A向Decive D发起Tracert,依次指定Device B的SRv6 SID、Device D的SRv6 SID。Device A构造UDP报文(该报文的目的UDP端口号是目的端的任何一个应用程序都不可能使用的端口号),封装SRH扩展头并进行发送。此时IPv6报文首部的Hop limit字段的取值设置为1。
(2) 中间节点收到UDP报文后,如果Hop limit字段的值变成0,则向Device A发送ICMPv6超时报文。
(3) Device A收到中间节点发送的ICMPv6超时报文后,将Hop limit字段的取值加1,继续发送UDP报文。
(4) 中间节点收到UDP报文后,如果Hop limit字段的值未变成0,则向下一节点转发UDP报文。
¡ 如果中间节点为SRv6节点(如Device B),且报文的IPv6目的地址为本地的SRv6 SID,则基于SRH转发UDP报文。
¡ 如果中间节点不是SRv6节点(如Device C),则根据目的IPv6地址查找IPv6路由表转发UDP报文。
(5) Device D收到UDP报文后,Hop limit字段的值变成0,报文SRH中SL=0,需要查找Local SID表,确认报文目的IPv6地址是否为本地的SRv6 SID:
¡ 如果报文目的IPv6地址是Device D的SRv6 SID,则校验通过,向Device A发送ICMPv6端口不可达报文。
¡ 如果报文目的IPv6地址不是Device D的SRv6 SID,则校验不通过,并丢弃UDP报文。
(6) 如果Device A在超时时间内收到目的节点的ICMPv6端口不可达报文,则目的节点可达,且可以根据Tracert结果得到数据报文从源节点到目的节点所经历的路径;否则,目的节点不可达,且可以根据Tracert结果定位故障节点。
SRv6 TE Policy Ping主要用于检查SRv6 TE Policy中各个节点是否可达。
如图6所示,SRv6 TE Policy中的SID列表为{b, d}。SRv6 TE Policy Ping工作过程为:
(1) Device A向Decive D发起Ping,构造ICMPv6请求报文,将SRv6 TE Policy的SID列表封装到SRH中并进行发送。
(2) 中间节点收到ICMPv6请求报文后:
¡ 如果中间节点为SRv6节点(如Device B),则基于SRH向Device C转发ICMPv6请求报文。
¡ 如果中间节点不是SRv6节点(如Device C),则直接根据目的IPv6地址查找IPv6路由表转发ICMPv6请求报文。
(3) Device D收到ICMPv6请求报文后,报文SRH的SL=0,需要查找Local SID表,确认报文目的IPv6地址是否本地的SRv6 SID:
¡ 如果报文目的IPv6地址是Device D的SRv6 SID,则校验通过,向Device A发送ICMPv6应答报文。
¡ 如果报文目的IPv6地址不是Device D的SRv6 SID,则校验不通过,丢弃ICMPv6请求报文。
(4) 如果Device A在超时时间内收到Device D的ICMPv6应答报文,则SRv6 TE Policy中各个节点可达;否则,SRv6 TE Policy中存在不可达节点。
SRv6 TE Policy Tracert在检查SRv6 TE Policy中各个节点是否可达的同时,还可以定位网络中发生故障的节点。
如图7所示,SRv6 TE Policy中的SID列表为{b, d}。SRv6 TE Policy Tracert工作过程为:
(1) Device A向Decive C发起Tracert,构造UDP报文(该报文的目的UDP端口号是目的端的任何一个应用程序都不可能使用的端口号),将SRv6 TE Policy的SID列表封装到SRH中并进行发送。此时IPv6报文首部的Hop limit字段的取值设置为1。
(2) 中间节点收到UDP报文后,如果Hop limit字段的值变成0,则向Device A发送ICMPv6超时报文。
(3) Device A收到Device B发送的ICMPv6超时报文后,将Hop limit字段的取值加1继续发送UDP报文。
(4) 中间节点收到UDP报文后,如果Hop limit字段的值未变成0,则向下一节点转发UDP报文。
¡ 如果中间节点为SRv6节点(如Device B),且报文的IPv6目的地址为本地的SRv6 SID,则基于SRH转发UDP报文。
¡ 如果中间节点不是SRv6节点(如Device C),则根据目的IPv6地址查找IPv6路由表转发UDP报文。
(5) Device D收到UDP报文后,Hop limit字段的值变成0,报文SRH中SL=0,需要查找Local SID表,确认报文目的IPv6地址是否本地的SRv6 SID:
¡ 如果目的IPv6地址是Device D的SRv6 SID,则校验通过,向Device A发送ICMPv6端口不可达报文。
¡ 如果目的IPv6地址不是Device D的SRv6 SID,则校验不通过,并丢弃UDP报文。
(6) 如果Device A在超时时间内收到目的节点的ICMPv6端口不可达报文,则SRv6 TE Policy中各个节点可达,无故障节点;否则,SRv6 TE Policy中存在不可达节点,且可以根据Tracert结果定位故障节点。
· draft-ietf-6man-spring-srv6-oam-05