iFIT技术白皮书
Copyright © 2021 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。
随着网络的普及和通信技术的发展,各种网络业务层出不穷,新业务对网路性能提出了更高的要求。其中,语音和视频业务是众多网络业务中应用最广泛的,它们对网络丢包、时延和时延抖动非常敏感。丢包率高、时延大会导致语音卡顿、视频马赛克,影响用户上网体验,严重时会导致通信异常。当语音和视频业务质量下降时,用户希望能够快速定位并排除网络故障。
目前,IP网络丢包、时延测量方法分为两大类:
· 间接测量:通过模拟真实业务报文发包的情况,计算模拟报文的丢包率、时延,间接得到业务报文的丢包率和时延。
· 直接测量:通过直接检测真实业务报文的收发情况,得到业务报文丢包率和时延。
表1描述了常见的丢包、时延测量技术。这些技术应用于小规模网络环境时,定位丢包、时延问题速度较快,但应用于大规模网络环境时,存在定位速度慢、定位消耗大、定位困难等问题。
测量方法 |
传统测量技术 |
说明 |
间接测量 |
· Ping · NQA · TWAMP Light(Two-Way Active Measurement Protocol,双向主动测量协议) |
· 仅支持三层网络 · 通过不断尝试与可能出现故障的设备建立连接的方式,逐步缩小故障检测范围,定位时间长 · 仅支持点到点场景 · 模拟发包,检测结果不够真实 |
直接测量 |
Y.1731,即CFD(Connectivity Fault Detection,连通错误检测) |
· 仅支持二层网络 · 通过不断尝试与可能出现故障的设备建立连接的方式,逐步缩小故障检测范围,定位时间长 · 支持点到点、点到多点、多点到多点场景 · 对真实报文进行丢包检测,检测结果真实 |
RFC 6374/6375(MPLS网络的丢包和时延测量) |
· 仅支持MPLS网络 · 通过检测每一段的丢包情况,逐步缩小丢包范围,定位时间长 · 仅支持点到点场景 · 对真实报文进行丢包检测,检测结果真实 |
|
INT |
· 支持普通二层和三层以太网、EVPN和VXLAN网络 · 首节点对报文进行匹配、镜像,并对镜像报文添加INT报文头,中间节点和尾节点自动识别INT报文并对报文进行相应的INT处理,尾节点将INT报文头中的采集信息导出到采集器进行分析和呈现 · 检测精度高,采集信息丰富 · 网络开销较大 |
|
iNQA |
· 支持二层网络和三层网络 · 定位速度快,在网络中部署iNQA之后,iNQA会自动在每个测量点按周期测量丢包参数 · 支持点到点、点到多点、多点到多点等多种场景 · 对真实报文进行丢包检测,检测结果真实 |
iFIT(in-situ Flow Information Telemetry)是一种应用于MPLS、SR-MPLS、SRv6网络的,通过直接测量业务报文得到网络的真实丢包率和时延等性能参数的检测方式,其原理主要遵循RFC 8321,具有部署方便、统计精度高等优点。
相较于传统丢包测量技术,iFIT具有以下优势:
· 检测精度高:直接对业务报文进行测量,测量数据可以真实反映网络质量状况。
· 部署简单:中下游设备可以根据iFIT报文生成测量信息。
· 快速定位故障功能:iFIT提供了随流检测功能,可以真正实时地检测用户流的时延,丢包情况。
· 可视化功能:iFIT通过可视化界面展示性能数据,具备快速发现故障点的能力。
· 支持路径自发现功能:iFIT在网络中的入节点对于用户关心的业务流程增加报文头,下游设备可以根据iFIT报文头自动识别该业务流并生成统计测量信息;分析器可以通过该功能感知业务流量在网络中的实时路径。
· 基于硬件实现,对于网络影响较小,可扩展性强。
如图1所示,iFIT网络模型中包含以下重要元素:目标流、目标穿越网络、统计系统、测量点(Measurement Point,MP)。
图1 iFIT网络模型示意图
目标流是iFIT统计的目标对象。在实际网络中,经常需要在同一台设备上测量多条目标流的性能参数。iFIT使用FlowMonID唯一标识一条目标流。根据生成方式不同目标流分为静态目标流和动态目标流两种。
· 静态目标流:入节点上匹配指定规则后添加iFIT报文头的业务流称为静态目标流。设备支持的匹配规则包括五元组(源IP地址/网段、源端口、目的IP地址/网段、目的端口、协议类型)、DSCP、VPN和下一跳参数。
· 动态目标流:由中间节点和出节点通过检测iFIT报文头动态识别出的业务流称为动态目标流。设备如果在指定时间内没有收到相同FlowMonID的报文,则认为该动态目标流已经老化,会将该动态目标流删除。
目标流穿越网络是传输目标流的网络,目标流既不在该网络内产生,也不在该网络内终结。目前支持的目标穿越网络只能是三层网络,网络内的设备必须路由可达。
统计系统是完成iFIT统计的所有设备的集合,它包含了以下角色:
· 入节点(Ingress):目标流进入目标穿越网络的设备,是MPLS隧道、SR-MPLS隧道、SRv6隧道的起点。它负责对目标流进行筛选,为目标流添加iFIT报文头,收集目标流的统计数据并上报给分析器。
· 中间节点(Transmit):根据报文是否包含iFIT报文头来自动识别iFIT目标流,再根据iFIT头中携带的测量类型,决定是否需要收集目标流的统计数据并上报给分析器。
· 出节点(Egress):目标流离开目标穿越网络的设备,是MPLS隧道、SR-MPLS隧道、SRv6隧道的终点。出节点根据报文是否包含iFIT报文头来自动识别iFIT目标流,收集目标流的统计数据并上报给分析器,最后复制剥掉目标流的iFIT报文头。
· 分析器(Analyzer):负责收集入节点、中间节点、出节点上送的统计数据并完成数据的汇总和计算。
测量点(Measurement Point,MP)是实施iFIT测量的接口。按照MP在统计系统中的位置不同,可以分为:
· 入MP:目标流进入目标穿越网络的接口。
· 中间MP:目标穿越网络中目标流流经的接口。
· 出MP:目标流离开目标穿越网络的接口。
不同产品对出MP所处的位置支持情况不同,请以设备的实际情况为准。
· 有些产品要求出MP只能是目标流进入出节点(Egress)的接口。本文以这种情况为例。
· 有些产品要求出MP只能是目标流离开出节点(Egress)的接口。
图2 测量点示意图
iFIT支持端到端性能统计和逐点性能统计两类应用场景。
端到端性能统计场景用于测量流量在进入网络的设备(流量入口)和离开网络的设备(流量出口)之间是否存在丢包以及时延参数。
如图3所示,iFIT可用于直接测量流量从Ingress到达Egress时,是否有丢包和时延并计算得到丢包率和时延值。
逐点丢包统计场景用于测量更小网络单元内的丢包和时延情况。在发现端到端之间存在丢包或者时延后,可以将端到端之间的网络划分为多个更小的测量区段,测量每两个网元之间是否存在丢包和时延,进一步定位影响网络性能的网元位置。
如图4所示,流量从Ingress到达Egress,iFIT可同时测量任意两个测量点之间是否有丢包和时延,并通过计算得到丢包率和时延值。
iFIT通过实例来实现不同目标流丢包、时延参数的独立测量和统计。
实例是一个逻辑概念,是iFIT的最小配置单元。用户需要在入节点上创建实例,实例中可以指定目标流、测量周期等参数,将实例和目标流的入接口绑定,来实现对指定指定接口接收的目标流性能参数的测量和统计。
一个实例下绑定一条目标流。通过配置多个实例,绑定不同的目标流,可以同时测量和统计多种目标流的性能参数。
在设备上开启iFIT实例的测量功能后,iFIT会持续测量该实例绑定的目标流的性能参数。为方便用户随时了解目标流的性能参数,iFIT会以固定的时长(可通过命令行配置)为周期测量目标流的性能参数。入节点、中间节点、出节点统计同一个周期内收到或发送的目标报文总数,分析器计算每个周期内的丢包参数。入节点、中间节点、出节点记录收到或发送每个周期的首个报文的时间戳,分析器计算每个周期内的时延参数。
染色位又叫特征标识位,它能够对目标流进行周期性地标识,以达到对目标流进行周期性采样、统计的目的。
iFIT使用了两个染色位,一个是丢包测量染色位,用于计算丢包参数;一个是时延测量染色位,用于计算时延参数。
为了实现高精度的性能测量,同时使得整个统计系统的部署尽量简单,iFIT引入了iFIT报文头概念。iFIT会在入节点给目标流报文增加iFIT报文头,通过iFIT报文头将FlowMonID、测量周期等信息传递给中间节点和出节点。
在MPLS/SR-MPLS场景中,iFIT报文头封装在MPLS栈底与MPLS净荷之间,具体位置如图5所示。
图5 MPLS/SR-MPLS组网环境下的iFIT报文头封装格式
· Label:20bits,同MPLS Label,使用标签值为固定的保留标签0x0c,用于标识iFIT标签头。
· TC:3bits,同MPLS TC,目前暂未使用。
· S:1bit,同MPLS S标记,置为1,表示栈底标签。
· TTL:8bit,同MPLS TTL。
· FlowMonID:20bits,目标流ID,唯一标识一条目标流。
· L:1 bit,丢包(Loss)测量染色位,用于将相邻两个周期的报文区别开来。取值为1时表示染色报文,该报文属于染色丢包测量周期;取值为0时表示不染色报文,该报文属于不染色丢包测量周期。
· D:1 bit,时延(Delay)测量染色位,用于区分用于时延测量的目标流报文和普通目标流报文。取值为1时表示该报文用于时延测量,需要记录接口收到该报文的时间戳;取值为0时表示该报文为普通目标流报文,不需要为记录时间戳。
· P:2 bits,周期(Period)标记,取值含义如下:
¡ 00:表示测量周期为10s。
¡ 01:表示测量周期为30s。
¡ 10:表示测量周期为60s。
¡ 11:表示测量周期为300s。
· HTI:头类型标识,用于标识逐点统计和端对端统计场景。
¡ 0x00:保留。
¡ 0x01:表示端到端检测。
¡ 0x02:表示逐点检测。
SRv6报文中新增Destination Options Header来封装iFIT的信息,并在其中新增OptionType字段来标识iFIT报文头,具体如图6所示。
图6 SRv6组网环境下的iFIT报文头封装格式
· OptType:8 bits,标识iFIT类型,取值为00010001,不改变路由头。
· OptLen:8 bits,iFIT报文头的长度。
· FlowMonID:20bits,目标流ID,唯一标识一条目标流。
· L:1 bit,丢包(Loss)测量染色位,用于将相邻两个周期的报文区别开来。取值为1时表示染色,染色丢包测量周期的报文均需染色;取值为0时表示不染色,该报文属于不染色丢包测量周期。
· D:1 bit,时延(Delay)测量染色位,用于区分用于时延测量的目标流报文和普通目标流报文。取值为1时表示该报文用于时延测量,需要为该报文添加时间戳;取值为0时表示该报文为普通目标流报文,不需要为该报文添加时间戳。
· P:2 bits,周期(Period)标记,取值含义如下:
¡ 00:表示测量周期为10s。
¡ 01:表示测量周期为30s。
¡ 10:表示测量周期为60s。
¡ 11:表示测量周期为300s。
iFIT以时间同步为基础。在测量开始前,要求所有参与iFIT测量的设备时间已经同步,从而确保各个设备能够基于相同的测量周期进行报文统计和上报。如果时间不同步,会导致iFIT计算结果不准确。分析器和iFIT设备的时间同步与否不影响计算结果,但为了便于管理和维护,建议分析器和所有iFIT设备的时间均保持同步。
iFIT使用PTP(Precision Time Protocol,精确时间协议)协议进行时间同步。
若需要iFIT测量时延,时间同步精度必须高于或等于微秒级。
iFIT丢包计算依据报文守恒原理,即针对同一目标流:
· 每个周期内从入节点进入的报文总数应该等于出节点发送的报文总数。如果不相等,则说明目标穿越网络内存在丢包现象。
· 每个周期内流经任意MP的目标报文的个数应该相等。如果不相等,则说明这两个MP之间存在丢包现象。
为了实现按周期测量以及确保测量的准确性,iFIT会对相邻周期的目标报文进行交替染色,即将iFIT报文头中的L字段按周期交替设置为1和0,在染色周期只统计L字段为1的目标报文的数量;在非染色周期,只统计L字段为0的目标报文的数量。
iFIT报文染色和计数机制为:
· 入MP接收到报文后,会按照配置的iFIT匹配规则,筛选出目标流,对目标流按周期进行交替染色、周期计数,并将每个周期的报文计数上报给Analyzer。
· 中间MP收到报文后,会按照同样的iFIT匹配规则,筛选出目标流,对目标流周期计数并按周期将报文计数上报给分析器,然后转发给下一跳。
· 出MP收到报文后,会和中间MP一样对目标流周期计数并按周期将报文计数上报给分析器,然后对目标流去染色后转发给下一跳。
为了确保计数的准确性,所有测量点会同时用到两个计数器:
· 染色报文计数器:用于统计染色报文的个数。
· 不染色报文计数器:用于统计不染色报文的个数。
图7 iFIT丢包测量原理示意图
丢包测量和延时测量同时进行。为便于您理解丢包测量过程,图7仅标注了丢包测量染色位,此处无需关注延时测量染色位。
如图7所示,iFIT报文丢包测量过程如下:
(1) t0时刻
a. 入MP开始染色,并开始统计染色报文。
b. 中间MP/出MP开启染色报文计数器,开始统计染色报文。
(2) t1时刻
a. 入MP的首个染色报文到达中间MP/出MP。
b. 中间MP/出MP统计到第一个染色报文。
(3) t2时刻
a. 入MP结束一个周期的报文染色,并将统计到的染色报文的个数上报给分析器。同时开始不染色报文的计数。
b. 中间MP/出MP开启不染色报文计数器,开始统计不染色报文。
(4) t3时刻
中间MP/出MP结束对染色报文的统计,并将统计到的染色报文的个数上报给分析器。同时开始统计不染色报文。
由于网络存在延时,为了最大程度地避免网络延时与乱序对统计结果的不良影响,中间MP/出MP结束一个统计周期的时间要比入MP t2晚一点(1/3个测量周期)。t0~t3为染色报文收包统计周期,在该时间段内,中间MP/出MP的染色计数器只统计染色报文,以确保延迟到达的染色报文能被统计。
(5) t4时刻
a. 入MP结束一个周期的报文不染色,并将统计到的不染色报文的个数上报给分析器。同时开始下一轮染色和染色报文的计数。
b. 中间MP/出MP也开启下一轮染色报文计数器,统计染色报文。
(6) t5时刻
中间MP/出MP结束不染色报文的统计,并将统计到的不染色报文的个数上报给分析器。
在中间MP/出MP t2~t5为不染色报文收包统计周期。在该时间段内,中间MP/出MP的不染色计数器只统计不染色报文,不会统计染色报文的数量。
(7) 分析器根据每个周期内各节点上报的报文计数,可计算任意两个MP间的丢包数和丢包率:
¡ 丢包数=MP收到的目标报文总数-下游MP收到的目标报文总数
¡ 丢包率=(MP收到的目标报文总数-下游MP收到的目标报文总数)/MP收到的目标报文总数
iFIT时延测量机制原理为:每个测量点会根据iFIT报文头匹配出目标报文,按周期记录每个周期内收到第一个报文的时间戳。任意两个测量点间时间戳的差值即为目标报文在这两个测量点间的传输时延。
如图8所示,iFIT报文时延计算过程如下:
(1) Ingress节点的入接口记录下收到染色报文发包统计周期第一个报文的时间t1。
(2) Egress节点的出接口记录下收到该报文的时间t2。
(3) Ingress和Egress分别将这两个时间戳上报给分析器,由分析器计算时延,Delay[1]=t2-t1。
(4) Ingress节点的入接口记录下收到不染色报文发包统计周期第一个报文的时间t3。
(5) Egress节点的出接口记录下收到该报文的时间t4。
(6) Ingress和Egress分别将这两个时间戳上报给分析器,由分析器计算时延,Delay[2]=t4-t3。基于t1、t2、t3、t4,分析器可以进一步计算出平均时延:(Delay[1]+Delay[2])/2=[(t2-t1)+(t4-t3)]/2,时延抖动:(Delay[2]-Delay[1])=(t4-t3)-(t2-t1)。
图8 iFIT时延测量原理示意图
iFIT采用gRPC(Google Remote Procedure Call,Google远程过程调用)协议将测量数据从iFIT设备推送给分析器。
iFIT目前仅支持gRPC Dial-out模式,即iFIT设备作为gRPC客户端,iFIT分析器作为gRPC服务器(在gRPC协议中也称为采集器)。设备主动和分析器建立gRPC连接,将设备上订阅的iFIT统计数据推送给分析器。
由于端到端性能统计场景中不需要部署中间节点,入节点和出节点的配置、原理和逐点性能统计相同,下面以逐点性能统计场景为例,说明iFIT的工作流程。
在图9所示的组网中,目标穿越网络中有四台设备,其中三台支持iFIT。在这三台设备上部署iFIT功能后,iFIT的工作流程如下:
(1) 分析器和所有iFIT设备之间通过PTP协议完成时间的同步。
(2) iFIT设备对目标流报文进行iFIT处理。
a. 入节点对流经入接口的报文流进行解析,识别出目标流,并给目标流报文添加iFIT报文头,记录收到每个统计周期第一个报文的时间,同时统计每个周期内收到的目标流报文的个数。然后,按周期将报文计数和时间戳等信息通过gRPC连接上报给分析器。
b. 在目标穿越网络的传输接口(在目标穿越网络中支持iFIT的设备上,目标流的流入接口和流出接口),对于包含iFIT报文头的报文,记录收到每个统计周期第一个报文的时间,同时统计每个周期内收到的目标流报文的个数。然后,按周期将报文计数和时间戳等信息通过gRPC连接上报给分析器。
c. 在目标穿越网络的出接口(目标流离开目标穿越网络的接口),对于包含iFIT报文头的报文,记录收到每个统计周期第一个报文的时间,同时统计每个周期内收到的目标流报文的个数。然后,按周期将报文计数和时间戳等信息通过gRPC连接上报给分析器。最后,去掉目标流报文中的iFIT报文头,继续转发。
(3) 分析器对相同周期、相同目标流进行丢包分析,计算时延。
图9 iFIT工作机制示意图
目标穿越网络的出接口指的是目标流离开目标穿越网络的接口。它可能为出节点上目标流的流入接口,也可能是目标流的流出接口,具体是流入接口还是流出接口与设备的型号有关,请以设备实际情况为准。
在下图所示的MPLS VPN网络中:
· SPE作为省网的PE设备,接入地市的MPLS VPN网络;
· UPE作为下层地市网络的PE设备,接入VPN客户,对UPE的性能要求低于对SPE的性能要求。
· SPE通过路由策略,限制不同站点之间的互相访问权限,使得VPN 1内的CE 1和CE 3可以互相访问,VPN 2内的CE 2和CE 4不能互相访问。
· 在UPE 1和SPE 1上部署iFIT功能,可以测量VPN 1中从CE 1到CE 2的流量在穿越HoVPN网络时是否有丢包,以及时延大小。
图10 使用iFIT测量MPLS L3VPN HoVPN网络组网图
如图11所示,核心网为IPv6网络,私网为IPv4网络,在IPv6网络中PE设备之间部署MPLS L3VPN over SRv6 BE,通过SRv6隧道传递VPNv4数据。
· CE与PE之间配置EBGP交换VPN路由信息。
· 同一自治系统内的PE设备之间运行IS-IS实现IPv6网络互通,配置MP-IBGP交换VPNv4路由信息。
· 在PE 1和PE 2上部署iFIT功能,可以测量流量在经过PE 1和PE 2之间的SRv6隧道时是否有丢包,以及时延大小。
图11 iFIT测量L3VPN over SRv6网络组网图
· RFC 7799:Active and Passive Metrics and Methods
· RFC 8321:Alternate-Marking Method for Passive and Hybrid Performance Monitoring draft-ietf-6man-ipv6-alt-mark-02