首页> 中国专利> 基于服务的以节点为中心的ECMP健康

基于服务的以节点为中心的ECMP健康

摘要

本文提出了用于确定网络中的等价多路径(ECMP)性能健康的技术。根据示例实施例,提供了一种方法,涉及获得指示网络中的ECMP路径的信息,该网络包括多个节点,所述多个节点包括至少一个分支节点。该方法包括配置分支节点以获得ECMP性能指标,以及从分支节点获得ECMP性能指标。该方法还包括分析ECMP性能指标以确定分支节点的ECMP性能健康。

著录项

  • 公开/公告号CN114521320A

    专利类型发明专利

  • 公开/公告日2022-05-20

    原文格式PDF

  • 申请/专利权人 思科技术公司;

    申请/专利号CN202080067184.7

  • 申请日2020-10-09

  • 分类号H04L43/08;H04L45/24;H04L45/00;H04L47/125;

  • 代理机构北京东方亿思知识产权代理有限责任公司;

  • 代理人张敏

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 15:22:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-05-20

    公开

    国际专利申请公布

说明书

技术领域

本公开涉及网络中的服务保证。

背景技术

等价多路径(ECMP)常在网络中用于实现高效的负载平衡和网络弹性。在ECMP网络环境中,节点可以基于本地哈希机制进行路径选择,该机制考虑来自分组报头的各种关键值(例如互联网协议(IP)报头信息、互联网协议版本6(IPv6)流标签、熵标签等)和本地变量(传入接口标识符、环回地址等)。ECMP基于分组流而不是基于各个分组来执行负载平衡。

根据网络设计和部署模型,端点之间的ECMP路径的数量可以在两个到几百甚至几千之间变化。更多的ECMP路径可能来自多个节点本地ECMP决策,也称为“级联ECMP”。

附图说明

图1是根据示例实施例的被配置用于网络中的服务保证的系统的框图。

图2是根据示例实施例的图1的被配置为确定网络中等价多路径(ECMP)的性能健康的系统的高级框图。

图3是示出根据示例实施例的与网络中的分支节点交互以将分支节点配置为报告ECMP性能指标的框图。

图4和图5是示出根据示例实施例的与网络中的分支节点交互将分支节点配置为执行流监控和报告ECMP负载分布性能的框图。

图6图示了根据示例实施例的跨多种类型的接口分解在分支节点上配置的ECMP的示例。

图7图示了根据示例实施例的触发用于测量分支节点的ECMP性能的流捕获的事件的操作流。

图8图示了根据示例实施例的用于基于多个ECMP性能指标计算ECMP性能健康的度量的操作流。

图9图示了根据示例实施例的用于导出分支节点的ECMP性能健康的方法的流程图。

图10是根据示例实施例的被配置为执行本文呈现的操作的计算设备的框图。

具体实施方式

本发明的方面在独立权利要求中阐述并且优选特征在从属权利要求中阐述。一个方面的特征可以单独地或与其他方面结合地应用于任何方面。

本文提出了用于确定网络中的等价多路径(ECMP)性能健康的技术。根据示例实施例,提供了一种方法,涉及获得指示网络中的ECMP路径的信息,该网络包括多个节点,所述多个节点包括至少一个分支节点。该方法包括配置分支节点以获得ECMP性能指标,以及从分支节点获得ECMP性能指标。该方法还包括分析ECMP性能指标以确定分支节点的ECMP性能健康。

服务保证涉及监控网络服务的性能。ECMP保证是网络运营商有兴趣进行监控/保证的用例。基于粒度,可以通过两种方式衡量ECMP路径的健康:

以网络为中心(两个服务端点之间的端到端ECMP路径);和

以节点为中心(任何特定节点上的前缀的ECMP)。

以节点为中心的ECMP健康保证的目的是确保:

所有ECMP路径都安装在路由信息库(RIB)/转发信息库(FIB)/标签转发信息库(LFIB)表中;

所有ECMP路径都是健康的;和

所有ECMP路径都在没有任何流极化的情况下使用。

网络用户希望保证ECMP对于前缀P(或标签L)是健康的。由于几个原因,监控FIB表中前缀P的正常运行时间/状态可能是不够的。一个这样的原因是层2(L2)的更改不会反映在转发表中。例如,前缀P在出口接口上使用PortChannel(端口通道),如果PortChannel的成员链路之一发生故障,则可能不会反映在转发表中。作为另一示例,前缀P在出口接口上使用PortChannel1和PortChannel2,如果PortChannel1的成员链路之一发生故障,则可能不会反映在互联网协议(IP)转发表中。

ECMP保证有用的另一个原因是RIB、FIB、LFIB和硬件FIB(HW-FIB)之间可能存在不一致,这可能导致提供错误的健康状态。还有一个原因是,接口保持开启并不能确保所有接口的转发状态正常运行。一个接口可能有一些随机丢弃(由于线路卡/硬件问题),而其他接口没有遇到任何此类分组丢弃。

此外,由于各种原因,监控ECMP链路之间的累积负载分布可能是不够的。一个原因可能是前缀P1可通过接口1(Intf1)和接口2(Intf2)访问,而前缀P2可通过Intf2和接口3(Intf3)访问。很自然地看到Intf2比Intf1和Intf3加载得更多。

再一个原因可能是存在一定数量(例如,10)的老鼠流到前缀P1(以100Kbps的速率),并且一个大象流到相同前缀P1(以10Mbps的速率),这不会在分组级显示50-50负载共享。预计在一个链路中看到几Mbps,而在另一个链路中只有几kbps。

因此,希望保证基于每个节点的ECMP是健康的。同样,以节点为中心的ECMP健康保证的目的是确保:

所有ECMP路径/链路都安装在RIB/FIB/LFIB表中;

所有ECMP路径/链路都健康稳定;

所有ECMP路径/链路都在进行转发,而没有任何问题;和

所有ECMP路径都在没有任何流极化的情况下使用。

从负载平衡的角度来看,存在许多操作挑战。流量可能没有得到适当的负载平衡:一个特定链路被完全利用,而另一个链路只被少量利用。这就是前面提到的在许多网络中观察到的流极化问题,运营商希望解决这个问题。另一个挑战可能是存在使用ECMP的两条链路,一条链路非常健康,而另一条链路正在丢弃数据包。被负载均衡到健康链路的所有流将没问题,但是被负载均衡到不健康链路的流会遇到性能问题。有许多此类问题会根据粒度影响ECMP服务保证。

在此提出的是用于监控每节点(以节点为中心的)ECMP健康和实现负载保证的方法。这些方法使用链路健康、监控和基于采样的统计的组合来提供基于每个前缀/标签的ECMP健康的统一视图,以实现服务保证。这些技术利用有关控制平面、数据平面和转发行为的知识来提供“健康”、“不健康”或“可能健康”的答案。如本文进一步描述的,ECMP健康可以根据相等的负载共享、稳定性等来测量。

该方法涉及在每个前缀或每个标签的基础上向节点查询关于ECMP的健康。对节点返回的数据执行分析,以确定该节点上的ECMP是健康还是不健康。

现在参考图1,示出了根据示例实施例的服务保证系统100的示意图。参考图1,有示例网络服务保证系统或架构(在本文中也称为“服务保证系统”100)的框图。例如,服务保证系统100可以为基于意图的网络提供服务保证。服务保证系统100利用基于意图的网络(也称为“服务网络”或简称为“网络”)中的网络设备的编程能力,以及来自网络设备的由模型/事件驱动的遥测,以传递各种服务的端到端服务保证。保证系统100包括网络编排器(NO)102、向NO 102提供指令的服务运营商104、与NO 102通信的保证编排器106、与保证编排器106通信的保证代理108(1)-108(M)(统称为保证代理108)、与保证代理108和服务运营商104通信的保证收集器110(也称为保证收集器110)、以及与NO 102和保证收集器110通信的网络设备112(1)-112(N)(统称为网络设备112)。NO 102配置网络设备112(1)-112(N)以实现基于意图的服务网络113,该网络能够向终端用户提供各种服务。网络设备112(节点)可以包括路由器、交换机、网关和其他网络设备(物理的或虚拟的)。保证编排器106、保证代理108和保证收集器110通常被称为一个或多个“保证实体”。

NO 102可以包括托管在一个或多个服务器设备(更简单地称为服务器)上的应用和/或服务,例如,在基于云的数据中心中。保证编排器106还可以包括托管在一个或多个服务器设备上的应用和/或服务,这些服务器设备可以与NO 102使用的服务器相同或不同。类似地,保证收集器110也可以包括托管在一个或多个服务器上的应用和/或服务,这些服务器可以与保证编排器106使用的服务器相同或不同。保证代理108(1)-108(N)可以各自包括托管在一个或多个服务器上的应用和/或服务,并且可以在地理上分布在网络设备112(1)-112(N)中的相应网络设备附近,使得能够在保证代理的控制下监控服务。NO 102、保证编排器106、保证代理108、保证收集器110和网络设备112可以通过一个或多个通信网络相互通信,包括一个或多个广域网(WAN),例如互联网,以及一个或多个局域网(LAN)。

在图1的示例中,服务保证系统100支持多种服务,包括服务1和服务2(统称为“服务”)。为此,服务运营商104包括用于服务1的服务1运营商和用于服务2的服务2运营商,并且保证收集器110包括用于服务1的服务1收集器和用于服务2的服务2收集器。服务运营商104(例如,服务1运营商和服务2运营商)向NO 102提供基于网络和服务意图的指令,以便为终端用户设置/配置服务(例如,服务1和服务2)。服务运营商104还从保证收集器110(例如,服务1收集器和服务2收集器)接收对服务的保证请求(例如,“获得保证”请求),并将请求转发到NO 102。

响应于上述指令和服务运营商104发送的请求,NO 102导出基于意图的网络设备配置信息114并将其发送到网络设备112以针对服务(例如,用于服务1和服务2)配置网络设备/服务网络113。此外,NO 102导出服务配置信息116并将其发送到保证编排器106,用于为服务网络113上启用的服务(例如,服务1和服务2)提供保证。服务配置信息116针对在服务网络113上部署或实现的每个服务分别包括服务的定义,该定义包括服务类型(例如,网络连接的类型)、服务实例(例如,服务的标识符或名称)、以及描述服务如何实际上由服务网络113实现的网络配置信息。也就是说,服务的配置的定义反映了服务如何被实例化为服务网络113中的子服务的集合。

对于网络设备配置信息114,NO 102可以采用例如网络配置协议(NETCONF)将基于意图的网络设备配置对象(例如又一个下一代(YANG)模型或对象)推送到网络设备112。类似地,对于服务配置信息116,NO 102也可以采用例如NETCONF将基于意图的服务配置YANG对象推送到保证编排器106。YANG是一种数据建模语言,用于定义通过符合NETCONF的网络发送的数据以配置资源。NETCONF用于安装、操作和删除资源的配置,而YANG用于对资源的配置和状态数据进行建模。

响应于在遥测配置信息120中接收到监控对象,网络设备112记录在监控对象中指定的子服务指标,并且在遥测流中将子服务指标(在图1中标记为“指标”122)报告回保证代理108。在示例中,遥测流在对应于监控对象的遥测对象中携带子服务指标122。继而,保证代理108用服务标签来标记子服务指标122以指示哪些子服务指标与哪些服务相关联/属于哪些服务,以产生服务标记的子服务指标124(在图1中标记为“标记的指标”)。换言之,保证代理108将服务标签应用于服务标签所属的服务的子服务指标。在遥测对象中携带子服务指标122的示例中,保证代理108用服务标签标记遥测对象以产生服务标记的遥测对象。因此,服务标签为子服务指标提供服务上下文。

在一个实施例中,保证代理108不对子服务指标执行任何特定分析,将这种分析留给保证收集器110和/或保证编排器106。在另一个实施例中,保证代理108按照启发式包的指示对子服务指标122执行分析,以产生与子服务指标相关的子服务的健康状态(例如,用作子服务健康状态的指示符的KPI)。保证代理108向保证收集器110提供服务标记的子服务指标124,以及当由保证代理计算时子服务的健康状态。例如,保证代理108向服务1收集器提供标记有服务标记1的服务标记的子服务指标的流以指示服务1,以及向服务2收集器提供标记有服务标记2的标记服务的子服务指标的流以指示服务2。保证代理108还可以向保证编排器106提供服务标记的子服务指标124。

保证编排器106作为中央控制器操作,用于保证部署在服务网络113上的服务。也就是说,保证编排器106采用“服务感知”来控制部署在服务网络113上的服务的保证。在这个角色中,保证编排器106执行几个主要操作。首先,保证编排器106根据在服务配置信息116中定义的每个服务的定义中的服务类型和服务实例生成该服务的唯一服务标记。在示例中,给定服务的服务标记可以是元组,该元组包括来自给定服务的定义的服务类型和服务实例。服务标记可用于将其所属的服务与所有其他服务区分开来。

其次,保证编排器106将在服务配置信息116中定义的每个服务的定义分解为子服务的相应子服务依赖关系图以及在网络上共同(实际上)实现服务的子服务之间的依赖关系/相互依赖关系。也就是说,保证编排器106将每个服务分解成相应的子服务依赖图。子服务依赖图包括表示子服务的(子服务)节点和表示子服务之间依赖关系的节点之间的链接。子服务依赖图可以包括由子服务依赖图表示的服务的服务类型和服务实例(例如,服务标记)。为了帮助上述分解,保证编排器106可以轮询或查询定义中标识的各种网络设备以发现子服务,例如在网络设备上实现的分组路由协议,这些子服务将被合并到子服务依赖图中。

在非限制性实施例中,子服务依赖图包括子服务依赖树,该树具有代表服务的根节点,以及代表子服务并且在节点/子服务之间具有指向根节点的父子关系(即,依赖关系)的节点。可以使用其他类型的图构造/数据结构来表示子服务依赖图,如阅读本申请的本领域普通技术人员将理解的。

第三,保证编排器106从每个子服务依赖图导出用于由子服务依赖图描述的服务的相应的启发式包集合。启发式包(i)指定/定义要由子服务监控/记录和报告的服务相关指标(即,子服务指标),这些指标指示子服务的健康状态/状况,即,作为子服务健康状态的指示符,(ii)包括基于记录和报告的子服务指标确定/计算关键性能(KPI)的规则,包括子服务的健康状态(也单独称为“子服务健康状态”,并且统称为“子服务健康状态”),以及(iii)启用哪些传感器路径(即遥测路径)来报告遥测,即从子服务报告由子服务记录的子服务指标。启发式包还可以包括启发式包所对应的服务的服务标记或与该服务标记相关联。保证编排器106采用启发式包来配置保证代理108以监控服务的子服务,并基于监控计算子服务的健康状态,如下所述。

第四,保证编排器106向保证代理108提供保证代理配置信息118,包括相互关联的启发式包和它们的对应服务标记。保证编排器106可以使用NETCONF将启发式包作为YANG对象推送到保证代理108。保证编排器106还可以在保证收集器配置信息119中向保证收集器110提供子服务依赖图。

保证代理108充当网络设备112、保证收集器110和保证编排器106之间的中间保证设备。更具体地,保证代理108将包括启发式包的保证代理配置信息118转换为遥测配置信息120,以及向网络设备112提供遥测配置信息,以配置网络设备112记录和报告上述子服务指标。例如,保证代理108生成定义要由子服务记录和报告的子服务指标的监控对象,并且将监控对象提供给遥测配置信息120中的子服务,以配置子服务以记录和报告子服务指标。保证代理108可以维护启发式包、由启发式包生成的监控对象以及启发式包和监控对象所涉及的服务(例如,服务标记)之间的关联/绑定或映射。保证代理108可以使用NETCONF(或RESTCONF),例如将YANG监控对象推送到网络设备112。

响应于在遥测配置信息120中接收到监控对象,网络设备112记录在监控对象中指定的子服务指标,并且在遥测流中将子服务指标(在图1中标记为“指标”122)报告回保证代理108。在示例中,遥测流在对应于监控对象的遥测对象中携带子服务指标122。继而,保证代理108用服务标记来标记子服务指标122以指示哪些子服务指标与哪些服务相关联/属于哪些服务,以产生服务标记的子服务指标124(在图1中标记为“标记的指标”)。换言之,保证代理108将服务标记应用于服务标记所属的服务的子服务指标。在遥测对象中携带子服务指标122的示例中,保证代理108用服务标记来标记遥测对象以产生服务标记的遥测对象)。因此,服务标签为子服务指标提供服务上下文。

转向图2,根据本文所呈现的实施例,示出了保证系统100的示意图,其重点在于执行网络200中的ECMP的保证,并且特别是用于执行以节点为中心的ECMP监控。在该示例中,网络200包括节点R1、R2、R3、R4、R5、R6和R7,分别由附图标记210(1)-210(7)表示。保证编排器106基于从网络编排器102获得的网络配置和拓扑信息,针对网络200中的服务通过ECMP路径识别每个节点。在网络200中,这对应于节点R2、R3和R4。R2、R3和R4也称为ECMP分支节点,或简称为分支节点。

如220所示,保证编排器106指示与节点R2、R3和R4相关联的保证代理108(2)-180(4)配置节点R2、R3和R4以执行以节点为中心的监控。还应该理解,保证编排器可以指示诸如节点R5和R6之类的中转节点(例如,除了分支节点R2、R3和R4之外的节点)协助计算链路的列表,这些链路是网络200中ECMP的一部分,以允许对网络200中层2和层3操作的ECMP性能的监控。

ECMP功能健康可以进一步以两种方式查看:

1.健康转发。所有ECMP链路都工作正常,没有断/掉电(black/brown out)故障。

2.健康的负载分布。将工作负载均匀分布到所有ECMP路径。

因此,以节点为中心的ECMP监控有两个阶段:

第1阶段—收集和分析本地统计以验证健康转发。

第2阶段—执行结合监控的本地统计以验证健康转发和负载分布。

执行ECMP的每个节点(例如,图2中所示的网络200中的节点R2、R3和R4)基于跨层、多维节点级因素测量ECMP路径,这些因素包括:

1.到达每个前缀的接口列表。

2.每个接口的接口状态、接口错误、接口负载。

3.基于前缀或标签的实时基于流的遥测数据(例如,Flexible NetFlow

4.接口的稳定性。

测量信息被发布为遥测数据,如图1所示。

保证编排器106提供定义一个或多个阈值或标准的启发式规则,要针对该规则评估测量信息以查明节点上的ECMP的健康。该启发式规则可能取决于多种因素,包括节点上有多少出口接口等。针对每个前缀或标签汇总统计并与阈值进行比较。

实时基于流的遥测数据涉及在诸如几秒的时间段内捕获分组流信息,并且用于确定节点的出口接口之间是否存在相等的负载共享。如果负载分布在两个或更多接口之间不平衡,则表明ECMP负载共享存在问题。

保证代理108(2)-108(4)响应来自保证编排器106的ECMP健康命令,并与它们的关联节点交互以从来自ECMP保证的节点获得所需数据。在一个示例中,该数据可以通过节点中的命令行界面(CLI)命令获得,例如:“show ecmp{prefix|label}”。从节点获得的数据可以由保证代理发布到任何监听收集器和/或保证编排器106。

现在参考图3,图3示出了具有网络300的系统100的又一示例应用,该网络300包括在310(1)-310(5)处示出的节点R1、R2、R3、R4和R5。节点R3是ECMP分支节点,执行到前缀P1和P2的ECMP路由。如节点R3的路由表320所示,前缀P1可以通过节点R3的出口接口Gig2经由节点R1到达,或者通过节点R3的出口接口Gig4经由节点R2到达。类似地,前缀P2可以经由节点R3的出口接口Gig0经由节点R5到达,或者经由节点R3的出口接口Gigl经由节点R4到达。

ECMP节点级指标

保证编排器106可以配置节点的保证代理,例如节点R3的保证代理108(3),以获得具有ECMP接口的任何前缀P的ECMP节点级指标,例如:

a.前缀的正常运行时间-指示前缀的稳定性。

b.Last-Change-指示ECMP的稳定性(接口添加/删除)。

c.Max_path_configured-节点上配置的最大路径。

d.Max_path_avai1able-表中当前ECMP接口的计数。

e.路由器信息库(RIB)一致性-根据协议,RIB是否与ECMP接口一致。

f.转发信息库(FIB)一致性-根据RIB,FIB是否与ECMP接口一致。

g.标签转发信息库(LFIB)一致性-前缀P的传入标签是否与ECMP接口一致。

h.硬件(HW)一致性-ASIC编程是否与RIB/FIB一致。

i.数据平面监控(DPM)启用?-是否为前缀/标签启用了操作、管理员和管理(OAM)功能,例如DPM。

ECMP接口的稳定性可以通过它自上次更改(last-change)以来的时间来反映。如果last-change是几天,说明稳定性好。如果last-change是秒或分钟,则表明不稳定。

Max_path_configured可以指示ECMP健康。例如,至少有4个ECMP路径是健康的,但等于或少于4个ECMP路径是不健康的。一般来说,节点上可能配置多达54个ECMP路径。

RIB/FIB/LFIB一致性涉及检查以确保控制平面与节点上的数据平面一致。因此,RIB/FIB/LFIB一致性对于确定ECMP接口是否在各种表中、线路卡上等一致地配置很有用。

DPM可用于确定节点是否可以转发到具有不同熵的所有ECMP路径。

所有这些ECMP节点级指标都作为ECMP健康在节点上发布。

ECMP流级指标

对于在多协议标签交换(MPLS)网络中具有ECMP接口的任何前缀P,实时分组流捕获可能会被触发几秒(或一些其他可配置的时间段),并且可以在每个ECMP接口上显示统计,例如流数(分组流级的分布百分比)。

ECMP接口级指标

对于节点上的每个ECMP接口,可以获得以下指标/统计:

a.类型-物理或虚拟(交换机虚拟接口(SVI)或PortChannel)。

b.接口的正常运行时间-指示接口的稳定性。

c.Last-Change-指示ECMP中接口的稳定性(接口添加/删除)。

d.统计-所有接口计数器。

e.最大传输单元-接口的MTU。MTU是指通信协议的给定层可以向前传递的最大分组的大小(以字节为单位)。

f.交换的分组-对于给定前缀或标签在接口上交换的分组。

g.Bfd_enabled?-是否为接口启用双向转发检测(BFD)。

h.Bfd_status-BFD的状态(如果启用)。

i.Egress_policy?-接口上是否启用了任何策略(例如监管),这可能对软件定义的广域网(SD-WAN)应用程序有用。

ECMP链路级指标

对于节点上的每个虚拟ECMP接口,可以获得以下指标:

a.类型-SVI或PortChannel

b.所有链路的列表。

c.每个链路的正常运行时间。

d.每个链路的最后更改时间。

e.每个链路的统计。

f.交换的分组。

g.Micro_Bfd启用。

计算ECMP健康

保证编排器106(或给定节点的保证代理)聚合并分析所有指标以确定节点的ECMP性能健康。例如,进行检查以确保所有接口特性都匹配适当/预期的值(或在可接受的阈值内),无论是否存在任何错误或分组丢弃等。此外,确定是否存在节点上任何单一故障点(例如同一线路卡上的所有端口)。还确定链路/路径之间是否存在相等的负载分布。更进一步,确定ECMP路径或链路的健康。

监控和本地统计

除了所有上述本地ECMP节点统计/指标之外,节点将执行DPM验证以检测流极化。当熵键不可读或节点错误地执行可读标签深度(RLD)时,流极化是可能的。此外,当节点错误地执行ECMP哈希算法时,流极化是可能的。

分组流的熵是从分组流的不同特征导出的关键值,并且可以包括源IP地址、目标IP地址、传输(例如,UDP)源端口、传输目标端口或与标签的组合等。不同的节点考虑不同类型的熵。

由节点执行的ECMP哈希计算涉及节点使用本地哈希值,它与熵值混合到计算中以应用分桶系统,其中每个出口接口被分配不同的桶。

有时节点不能正确地读取熵(由于软件错误),并且当这种情况发生时,即使存在多个ECMP接口,节点也可能将所有流引导到一个接口。这就是前面提到的流极化。

RLD指的是节点能够在分组的标签堆栈中读取多深。节点应该能够足够深入地读取标签堆栈,以便获取并读取ECMP哈希计算所需的熵。否则,所有分组在节点看来都是相同的(基于堆栈中更高的标签),并且节点会将分组流发送到同一接口。

因此,利用了DPM或标签交换路由器(LSR)自测试技术。产生探测分组,并且探测分组包括:基于待测RLD的标签栈;相关熵(内/外报头);和用于识别流/路径细节的数据平面(基于探测分组)信令。

对于DPM,产生具有不同熵的探测分组,并将探测分组转发到相对于被测节点的前一跳节点,其将探测分组返回到被测节点,然后被测节点将探测分组转发到下一跳节点。如果被测节点正确执行ECMP,则探测分组应到达不同接口上的下一跳节点。如果不同的探测分组到达相同的下一跳节点,则表明RLD和ECMP没有正常工作以进行负载均衡。发布来自探测分组的结果数据使得保证编排器106(或保证代理108(3))能够确定ECMP健康。

可以采用分组流捕获机制,例如NetFlow,或在原位操作管理(iOAM)报头中立即导出数据,或其他带内或带外技术。

现在参考图4。图4图示了被配置为执行流监控以测量节点R3的ECMP负载平衡的系统100。保证编排器106通过保证代理108(3)触发节点R3基于其本地哈希算法生成探测分组。例如,当哈希算法为“dpi12vpn-mac”时,节点R3被触发以在其内部报头中创建具有不同媒体访问控制(MAC)地址的探测分组。在另一个示例中,当哈希算法为“dpi tunnel-ipinip”时,节点R3被触发以在内部报头中创建具有不同IP地址的不同探测分组。

在图4的示例中,如图4所示,节点R3被触发生成探测数据分组以验证通向标签16005的ECMP路径。基于节点R3使用的本地哈希算法,它生成具有不同UDP源/目标端口的不同探测分组,而其他变量保持不变。当支持熵标签时,节点R3也可以在探测分组中插入不同的熵标签。因此,例如,如图4所示,节点R3生成第一探测分组400,其在标签402中具有生存时间(TTL)值3,并且从内部报头404获得的熵具有以下熵:

IP源地址(IP-SA)=R3

IP目标地址(IP-DA)=127.0.0.1

用户数据报协议源端口(UDP-Source)=12345

UDP目标端口(UDP-Dest)=22334

分组400还包括探测内容406。

节点R3生成第二探测分组410,其在标签412中具有TTL 3,并且内部报头414具有熵:

IP-SA=R3

IP-DA=127.0.0.1

UDP-Source=12346

UDP-Dest=22335

分组410还包括探测内容416。

现在参考图5,图5示出了图4的网络布置,节点R3具有RLD 3,并且将在探测分组400和410的堆栈中推送附加标签以验证RLD。例如,节点R3将标签408和409推送到探测分组400上,并将标签418和419推送到探测分组410上。探测分组400和410在启用实时流捕获的情况下或使用设置了立即导出或环回位的iOAM发送。这将在节点R3上为不同的流创建状态条目。可以提供选择性的灵活NetFlow配置来为使用某些参数(基于标签或源/目标IP地址等的匹配)标识的选择性流创建NetFlow统计。

节点R3可以发送多个流并检查流是否负载均衡。如果流在节点R3的ECMP出口接口上进行负载均衡,则节点R3上的ECMP负载共享是健康的。如果不是,则节点R3上的ECMP负载共享不健康。

具体用例示例

参考图6的示例,其中给定节点上的ECMP在每个接口的基础上进行评估。图6示出了说明前缀P可通过2个隧道(隧道1和隧道2)到达的图表600。基于跨层粒度,实际接口/链路的列表是G0/0/0/0、G0/0/0/1、G0/0/0/2、G0/0/0/3、G0/0/0/4、G0/0/0/5和G0/0/0/6。

因此,前缀P1的链路列表是:

prefix p1_link_list={G0/0/0/0

G0/0/0/1

G0/0/0/2

G0/0/0/3

G0/0/0/4

G0/0/0/5

G0/0/0/6

G0/0/0/7

}

节点在节点上具有转发表610,其指示前缀P使用隧道1和隧道2作为出口接口。该节点具有用于隧道1的第一隧道转发表620。隧道转发表620指示隧道1使用PortChannel 1和PortChannel 2作为出口接口。类似地,该节点具有指示隧道2使用SVI 1和SVI 2作为出口接口的第二隧道转发表630。

该节点还包括两个PortChannel表640和650。表640指示PortChannel1使用出口接口G0/0/0/0和G0/0/0/1。表650指示PortChannel 2使用出口接口G0/0/0/2和G0/0/0/3。

该节点还包括两个SVI表660和670。表660指示SVI 1使用出口接口G0/0/0/4和G0/0/0/5。表670指示SVI 2使用出口接口G0/0/0/6和G0/0/0/7。

因此,前缀P1可以在8个接口中的1个上转发。

基于上述前缀P1的链路列表,前缀的节点级指标可以收集如下:

prefix_p1.Uptime={表中前缀P1的正常运行时间,列出的ECMP路径没有变化}

prefix_p1.Consistency={RIB/FIB/LFIB/HW/等之间前缀P1的一致性}

prefix_p1.frr={禁用|可用|无备份}

可以计算聚合节点级ECMP性能指标:

ecmp_node_metric=fn{

prefix_p1.Uptime;

prefix_p1.Consistency;

prefix_p1.frr;

...

}

上述函数可以是考虑每个变量的结果并计算指标值的任何算法。

使用以上链路信息,可以收集链路/接口级指标:

prefix_p1_link_list.Status={所有链路的状态}

prefix_p1_link_list.Errors={每个链路的状态中观察的错误}

prefix_p1_link_list.Load={每个链路上流量的负载分布}

可以计算聚合链路级ECMP性能指标:

ecmp_link_metric=fn{

prefix_p1_link_list.Status;

prefix_p1_link_list.Errors;

prefix_p1_link_list.Load;

...

}

上面的函数可以是考虑每个变量的结果并计算指标值的任何算法。

诸如DPM/OAM/SBFD的现有特征可用于监控每个链路上的转发特性(对于前缀P或标签L)。

可以计算聚合转发ECMP性能指标。例如,ecmp_fwd_metric=dpm_status。

参考图7。图7示出了事件触发的实时流捕获过程700。将两个链路Link1和Link2的链路负载提供给计算710,该计算710查看两个链路的负载之间的差异,并确定该差异是否超过差异阈值。当链路的负载在特定阈值差异内时,如720所示,不需要动作。如果差异超过阈值,则在730,事件将触发出口链路(在出口方向)的实时流捕获(例如,NetFlow、IP流信息导出(IPFIX)等)。流信息将用于识别流级别(不是分组级别)负载共享。

现在参考图8。图8描绘了可以基于上面提到的各种ECMP指标来执行的操作的示例。健康验证表达式800可以获得各种ECMP指标作为输入,例如ECMP节点指标810、ECMP链路指标820、ECMP转发指标830和流采样数据840。健康验证表达式800可以是布尔型表达式,其关于指标810、820和830与各自阈值的比较以及从流采样数据840获得的智能的因素运算,以确定给定节点上的ECMP性能健康的度量。ECMP性能健康的度量可分为诸如以下的类别:

1.健康(在图形用户界面中为节点显示绿色指示器)

2.健康但有一些链路故障(在图形用户界面中为节点显示橙色指示器)

3.不健康(在图形用户界面中为节点显示红色指示器)

ECMP指标的计算可以由在节点上运行的保证代理或由保证编排器106(参见图1和2)进行。

考虑以下示例。在最简单的形式中,存在通过多于一个直接链路互连的两个节点。这创建并行链路的数量作为邻接节点指标。此外,存在到达给定前缀的多个路径。这可以通过快速转发exact-route命令看到。可以获得等效数字,它是给定前缀目的地的并行路径数。

鉴于这两个,存在并行项(路径、链路、隧道),以下指标适用于这两种情况。在ECMP组的给定成员上,跟踪性能指标,例如丢弃、延迟、往返时间(RTT)等。这使得能够确定每个成员的相应健康(例如一个链路是否有很多丢弃而其他没有)。

在组的基础上,可以跟踪指标,例如ECMP组中的活动成员的数量,以及ECMP组的负载(活动流量除以容量)。在链路的基础上,跟踪流量的分布以确定例如是否一个链路为100%而其他链路为4%。此外,可以跟踪每组的唯一流的数量。

基于ECMP性能指标,保证编排器可以触发的动作包括禁用ECMP组成员。例如,如果ECMP组成员出现严重的断电,这可能会影响整个组,而可能存在可被其他地方吸收的容量。因此,关闭ECMP组成员、重新路由链路或节点是保证编排器可以基于为节点确定的ECMP性能健康触发的动作的示例。

转向图9,示出了根据示例实施例的方法900的流程图。方法900涉及确定每个节点(以节点为中心的)ECMP性能健康。在910,方法900包括获得指示网络中的等价多路径(ECMP)路径的信息。该网络包括多个节点,多个节点包括至少一个分支节点。在920,方法900涉及配置网络中的分支节点以获得ECMP性能指标。在930,该方法包括从分支节点获得ECMP性能指标。在940,该方法涉及分析ECMP性能指标以确定分支节点的ECMP性能健康。

如上所述,获得ECMP性能指标的操作930可以包括获得本地节点指标和获得监控指标。分析操作940可以基于本地节点指标来执行以确定转发性能的度量,并且分析操作940可以基于本地节点指标和监控指标来执行以确定转发性能的度量和负载分布性能的度量。在一种形式中,如上面结合图5所描述的,获得监控指标可以包括从分支节点发送的探测分组中获得数据平面监控结果,并且分析操作940可以包括分析数据平面监控结果。数据平面监控结果可以指示是否存在以下中的一种或多种:分支节点上的不正确可读标签深度、分支节点采用的不正确哈希算法或分支节点对哈希算法的不正确执行。

对于分支节点的每个出口接口,本地节点指标可以包括以下中的一项或多项:接口状态、接口错误、接口负载和接口稳定性。

在一种形式中,对于在分支节点上具有ECMP出口接口的前缀或标签,本地节点指标可包括以下中的一项或多项:前缀或标签的正常运行时间、自上次更改以来的时间、配置的最大路径、可用的最大路径、路由信息库与ECMP出口接口的一致性、根据所述路由信息库的转发信息库与ECMP出口接口的一致性、标签转发信息库与ECMP出口接口的一致性、硬件存储器编程与路由信息库和/或转发信息库的一致性、针对前缀或标签的数据平面监控启用。

在另一种形式中,对于在分支节点上具有ECMP出口接口的前缀或标签,本地节点指标包括:在一段时间内收集的实时流数据。

在又一种形式中,对于每个ECMP出口接口,本地节点指标包括以下中的一项或多项:包括物理或虚拟的类型、正常运行时间、自上次更改以来的时间、计数器统计、最大传输单元、针对前缀或标签交换的分组数量、是否启用双向转发检测、是否启用出口策略。

在再一种形式中,对于在分支节点上配置的每个虚拟接口,本地节点指标包括以下中的一项或多项:虚拟接口的类型、每个虚拟接口的所有链路的列表、每个虚拟接口的每个链路的正常运行时间、每个链路的统计、交换的分组数量、是否启用微双向转发检测。

在一个示例中,分析操作940可以包括评估以下中的一项或多项:与每个分支节点上的出口接口相关联的指标、错误统计、链路/路径之间的负载分布、分支节点是否具有单一故障点。

如上文结合图8所述,ECMP性能指标可以包括基于给定前缀或标签的多个节点级指标的聚合节点级ECMP性能指标、基于多个链路级指标的聚合链路级ECMP性能指标、基于监控指标的聚合转发ECMP性能指标和流采样数据。分析操作940可以包括使用表达式计算ECMP性能健康的度量,表达式组合聚合节点级ECMP性能指标、聚合链路级ECMP性能指标、以及聚合转发ECMP性能指标与相应阈值的比较结果以及从流采样数据获得的知识。

此外,配置操作920还可以包括配置网络中的一个或多个中转节点以计算链路的列表,这些链路是网络中ECMP的一部分,用于监控网络中的层2和层3操作的ECMP性能健康。

图10示出了计算设备1000的硬件框图,该计算设备1000可以执行上文结合图1-9描述的保证编排器106和/或保证代理108的功能。应该理解,图10仅提供了一个实施例的说明并且不暗示关于可以实现不同实施例的环境的任何限制。可以对所描绘的环境进行许多修改。

如图所示,设备1000包括总线1012,总线1012提供计算机处理器1014、存储器1016、永久存储器1018、通信单元1020和输入/输出(I/O)接口1022之间的通信。总线1012可以用设计用于在处理器(例如微处理器、通信和网络处理器等)、系统存储器、外围设备和系统内的任何其他硬件组件之间传递数据和/或控制信息的任何架构来实现。例如,总线1012可以用一个或多个总线来实现。

存储器1016和永久存储器1018是计算机可读存储介质。在所描绘的实施例中,存储器1016包括随机存取存储器(RAM)1024和高速缓冲存储器1026。通常,存储器1016可以包括任何合适的易失性或非易失性计算机可读存储介质。用于控制和执行保证编排器106和/或保证代理108的操作的控制逻辑1017的指令可以存储在存储器1016或持久性存储器1018中以供处理器1014执行。

一个或多个程序可以被存储在持久性存储器1018中以供一个或多个相应的计算机处理器1014通过存储器1016的一个或多个存储器执行。持久性存储器1018可以是磁性硬盘驱动器、固态硬盘驱动器、半导体存储设备、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、闪存或能够存储程序指令或数字信息的任何其他计算机可读存储介质。

持久性存储器1018使用的介质也可以是可移除的。例如,可移除硬盘驱动器可用于持久性存储器1018。其他示例包括插入驱动器以传输到也是持久性存储器1018的一部分的另一计算机可读存储介质上的光盘和磁盘、拇指驱动器和智能卡。

在这些示例中,通信单元1020提供与其他数据处理系统或设备的通信。在这些示例中,通信单元1020包括一个或多个网络接口卡。通信单元1020可以通过使用物理和无线通信链路之一或两者来提供通信。

I/O接口1022允许与可以连接到计算机设备1000的其他设备输入和输出数据。例如,I/O接口1022可以提供到外部设备1028的连接,例如键盘、小键盘、触摸屏和/或一些其他合适的输入设备。外部设备1028还可以包括便携式计算机可读存储介质,例如数据库系统、拇指驱动器、便携式光盘或磁盘以及存储卡。

用于实施实施例的软件和数据可以存储在这种便携式计算机可读存储介质上,并且可以通过I/O接口1022加载到永久存储器1018上。I/O接口1022也可以连接到显示器1030。显示器1030提供一种向用户显示数据的机制并且可以是例如计算机监控器。

在此描述的程序是基于在特定实施例中实现它们的应用来识别的。然而,应当理解,这里使用任何特定的程序命名法仅仅是为了方便,因此实施例不应限于仅用于由这种命名法识别和/或暗示的任何特定应用中。

与本文所述的操作相关的数据可以存储在任何常规或其他数据结构(例如,文件、数组、列表、堆栈、队列、记录等)中,并且可以存储在任何期望的存储单元(例如,数据库、数据或其他存储库、队列等)中。实体之间传输的数据可以包括任何所需的格式和排列,并且可以包括任何数量的任何类型的任何大小的字段来存储数据。任何数据集的定义和数据模型都可以以任何所需的方式(例如,计算机相关语言、图形表示、列表等)指示整体结构。

本实施例可以使用任何数量的任何类型的用户界面(例如,图形用户界面(GUI)、命令行、提示等)来获得或提供信息(例如,与抓取网络站点有关的数据),其中界面可以包括以任何方式排列的任何信息。界面可以包括设置在任何位置的任何数量的任何类型的输入或驱动机制(例如按钮、图标、字段、框、链接等),以通过任何合适的输入设备(例如、鼠标、键盘等)输入/显示信息并启动所需的动作。界面画面可以包括任何合适的致动器(例如,链接、选项卡等)以在画面之间以任何方式导航。

本实施例的环境可以包括任何数量的计算机或其他处理系统(例如,客户端或终端用户系统、服务器系统等)以及以任何期望的方式布置的数据库或其他存储库,其中本实施例可以应用于任何所需类型的计算环境(例如,云计算、客户端-服务器、网络计算、大型机、独立系统等)。本实施例所采用的计算机或其他处理系统可以由任何数量的任何个人或其他类型的计算机或处理系统(例如,台式机、膝上型电脑、PDA、移动设备等)来实现,并且可以包括任何商业上可获得的操作系统以及商用和定制软件(例如机器学习软件等)的任何组合。这些系统可以包括用于输入和/或查看信息的任何类型的监控器和输入设备(例如,键盘、鼠标、语音识别等)。

应当理解,本实施例的软件可以以任何期望的计算机语言来实现,并且可以由计算机领域的普通技术人员基于包含在说明书中的功能描述和图中所示的流程图来开发。此外,本文中对执行各种功能的软件的任何引用通常是指在软件控制下执行这些功能的计算机系统或处理器。本实施例的计算机系统可以替代地由任何类型的硬件和/或其他处理电路来实现。

本文描述的每个元件可以通过接口和/或通过提供可行的通信路径的任何其他合适的连接(有线或无线)相互耦合和/或相互作用。本文讨论的互连、接口及其变体可用于提供系统中的元件之间的连接和/或可用于提供可在系统中直接或间接连接的元件之间的通信、交互、操作等。可以为这里描述的元素提供界面的任何组合,以便促进如针对这里描述的各种实施例所讨论的操作。

计算机或其他处理系统的各种功能可以以任何方式分布在任何数量的软件和/或硬件模块或单元、处理或计算机系统和/或电路中,其中计算机或处理系统可以本地或远程彼此设置,并通过任何合适的通信介质(例如,LAN、WAN、内联网、互联网、硬线、调制解调器连接、无线等)进行通信。例如,本实施例的功能可以以任何方式分布在各种终端用户/客户端和服务器系统和/或任何其他中间处理设备之间。上面描述的和流程图中说明的软件和/或算法可以以实现这里描述的功能的任何方式修改。此外,流程图或描述中的功能可以按实现所需操作的任何顺序执行。

本实施例的软件可以在用于独立系统或通过网络或其他通信介质连接的系统的固定或便携式程序产品装置或设备的非临时性计算机可用介质(例如,磁或光介质、磁光介质、软盘、CD-ROM、DVD、存储设备等)上可用。

通信网络可以由任何数量的任何类型的通信网络(例如,LAN、WAN、互联网、内联网、VPN等)来实现。本实施例的计算机或其他处理系统可以包括任何传统或其他通信设备,以通过任何传统或其他协议在网络上进行通信。计算机或其他处理系统可以利用任何类型的连接(例如,有线、无线等)来访问网络。本地通信媒体可以通过任何合适的通信媒体(例如,局域网(LAN)、硬线、无线链路、内联网等)来实现。

系统可以采用任何数量的任何常规或其他数据库、数据存储或存储结构(例如,文件、数据库、数据结构、数据或其他存储库等)来存储信息。数据库系统可以由任何数量的任何常规或其他数据库、数据存储或存储结构(例如,文件、数据库、数据结构、数据或其他存储库等)来实现以存储信息。数据库系统可以包括在服务器和/或客户端系统内或耦合到服务器和/或客户端系统。数据库系统和/或存储结构可以远离计算机或其他处理系统或在本地,并且可以存储任何期望的数据。

本实施例可以使用任何数量的任何类型的用户界面(例如,图形用户界面(GUI)、命令行、提示等)来获得或提供信息,其中界面可以包括以任何方式排列的任何信息。界面可以包括设置在任何位置的任何数量的任何类型的输入或驱动机制(例如按钮、图标、字段、框、链接等),以通过任何合适的输入设备(例如、鼠标、键盘等)输入/显示信息并启动所需的动作。界面画面可以包括任何合适的致动器(例如,链接、选项卡等)以在画面之间以任何方式导航。

所呈现的实施例可以采用各种形式,例如任何可能的技术细节集成级别的系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质(或媒体),其上具有计算机可读程序指令,用于使处理器执行本文所呈现的方面。

计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能磁盘(DVD)、记忆棒、软盘、机械编码设备(例如穿孔卡或凹槽中的凸起结构,其上记录有指令)以及前述的任何适当组合。如本文所用,计算机可读存储介质不应被解释为本身的瞬态信号,例如无线电波或其他自由传播的电磁波、传播通过波导或其他传输介质的电磁波(例如,光脉冲通过光纤电缆)或通过电线传输的电信号。

本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络例如互联网、局域网、广域网和/或无线网络下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。

用于执行本实施例的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、用于集成电路的配置数据、或以一种或多种编程语言(包括面向对象的编程语言,如Python、C++等,以及过程编程语言,如“C”编程语言或类似的编程语言)的任何组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户计算机上、部分在用户计算机上、作为独立软件包、部分在用户计算机上和部分在远程计算机上或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,通过互联网使用互联网服务提供商)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以个性化电子电路,以执行这里提出的方面。

本文参考根据实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或框图来描述本实施例的各方面。应当理解,流程图说明和/或框图的每个块、以及流程图说明和/或框图中的块的组合可以通过计算机可读程序指令来实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得通过计算机的处理器或其他可编程数据处理装置执行的指令创建用于实现流程图和/或框图块或多个块中指定的功能/动作的装置。这些计算机可读程序指令也可以存储在计算机可读存储介质中,该计算机可读存储介质可以引导计算机、可编程数据处理装置和/或其他设备以特定方式运行,使得其中存储有指令的计算机可读存储介质包括制品,其包含实现流程图和/或框图块或多个块中指定的功能/动作的方面的指令。

计算机可读程序指令也可以加载到计算机、其他可编程数据处理装置或其他设备上,以使一系列操作步骤在计算机、其他可编程装置或其他设备上执行以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图块或多个块中指定的功能/动作。

图中的流程图和框图说明了根据各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就这一点而言,流程图或框图中的每个块可以表示模块、段或指令的一部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。在一些替代实现中,块中标注的功能可能不按图中标注的顺序出现。例如,连续显示的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图说明的每个块以及框图和/或流程图说明中的块的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用基于硬件的系统实现。

如本文所述,提供了用于确定节点的ECMP性能健康的度量的技术。在一种形式中,对于每个被监控的前缀(或标签),通过以下方式监控ECMP健康:基于跨层和跨维度粒度识别所有ECMP接口的列表;监控ECMP健康的节点级因素、ECMP条目的稳定性(无任何更改)、RIB/FIB/LFIB一致性、最大路径、ECMP健康的接口级因素(包括正常运行时间和来自L3接口(物理和虚拟)的统计)、ECMP健康的链路级因素(包括正常运行时间和来自L2链路的统计,包括每个此类链路的转发能力)。此外,监控数据平面监控(DPM)、IP服务级别协议(IPSLA)状态。使用多种技术监控ECMP路径上的负载分布。基于流采样的技术(FNF/IPFIX统计)用于被监控的前缀或标签。在ECMP路径内监控每个出口接口上的累积负载,以及来自所有接口的累积负载统计。所有上述信息都用于计算ECMP健康指数或节点的ECMP性能度量。

总之,本文提供了用于提出具有服务感知的以节点为中心的ECMP健康测量技术的概念的方法。保证编排器利用服务和拓扑可见性来通过ECMP路径和要监控的前缀识别节点。由保障编排器指示的中转节点计算各层(L2/L3)中要监控的链路(这些链路属于ECMP的一部分)的列表,并从不同维度(状态、转发能力、负载分布等)测量每个链路的健康。这用于提供基于每个前缀的ECMP健康的整体视图,并确保ECMP路径健康并且负载分布在可用的ECMP路径之间。通过在ECMP分支节点上发送ECMP的配置更改,保证编排器将健康信息用于端到端服务保证。

在一种形式中,提供了一种方法,包括:获得指示网络中的等价多路径(ECMP)路径的信息,网络包括多个节点,所述多个节点包括至少一个分支节点;配置所述分支节点以获得ECMP性能指标;从所述分支节点获得所述ECMP性能指标;以及分析所述ECMP性能指标以确定所述分支节点的ECMP性能健康。

在另一种形式中,提供了一种装置,包括:通信接口,被配置为能够与网络中的多个节点中的一个或多个节点进行通信;以及处理器,耦合到所述通信接口,其中所述处理器被配置为执行操作,包括:获得指示网络中的等价多路径(ECMP)路径的信息,所述网络包括至少一个分支节点;配置所述分支节点以获得ECMP性能指标;从所述分支节点获得所述ECMP性能指标;以及分析所述ECMP性能指标以确定所述分支节点的ECMP性能健康。

在又一种形式中,一种或多种编码有指令的非暂时性计算机可读存储介质,当由处理器执行时,使所述处理器执行操作,包括:获得指示网络中的等价多路径(ECMP)路径的信息,所述网络包括多个节点,所述多个节点包括至少一个分支节点;配置所述分支节点以获得ECMP性能指标;从所述分支节点获得所述ECMP性能指标;以及分析所述ECMP性能指标以确定所述分支节点的ECMP性能健康。

以上描述仅旨在作为示例。尽管技术在本文中被图示和描述为以一个或多个具体示例体现,但其并不意在限于所示的细节,因为可以在权利要求的等同物的范围和界限内进行各种修改和结构改变。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号