网络嵌入式实时服务级别目标验证的制作方法

文档序号:24307155发布日期:2021-03-17 01:00阅读:111来源:国知局
网络嵌入式实时服务级别目标验证的制作方法

相关申请的交叉引用

本申请要求于2018年8月10日提交的发明名称为“网络嵌入式实时服务级别目标验证”、申请号为16/101,273的美国非临时专利申请的优先权,其全部内容以引入的方式并入本文。

关于联邦政府资助的研究或开发的声明

不适用。

参照缩微胶片附录

不适用。



背景技术:

许多高精度网络通过提供服务级别保障来运行。服务级别保障是提供跨提供商网络的网络通信的可测量的服务质量(称为服务级别)的正式承诺。通常由服务提供商和客户之间的服务级别协议(servicelevelagreement,sla)管理这种服务级别保障。sla通常定义由服务提供商网络向客户端提供的通信级别。然后,服务提供商提供服务保证,以便能够交付所承诺的服务级别。服务保证涉及监测服务提供商网络提供的服务级别并验证这些服务级别,以确保网络提供的服务在sla中讨论的可接受范围内。



技术实现要素:

在实施例中,本公开包括一种网络设备,该网络设备包括:接收器,用于接收作为数据流的一部分的第一数据包,第一数据包包括指示网络服务阈值的服务级别目标(servicelevelobjective,slo),slo包括指示要与网络服务阈值进行比较的网络服务度量的关键性能指标(keyperformanceindicator,kpi);以及处理器,耦合到接收器,用于:根据kpi指示的网络服务度量来测量网络设备提供的服务,以获得测量的服务结果;将测量的服务结果与slo指示的网络服务阈值进行比较,以确定网络设备提供的服务何时违反了slo;以及基于对服务违反了slo的确定,执行定义的动作。

可选地,在任何前述方面中,上述方面的另一实施方式包括:其中,第一数据包包括指示定义的动作的动作集,并且其中,处理器还用于:在执行定义的动作之前,从第一数据包确定定义的动作。

可选地,在任何上述方面中,上述方面的另一实施方式包括:其中,第一数据包包括一个或多个条件集,条件集指示测量服务以获得测量的服务结果的机制,并且指示将测量的服务结果与网络服务阈值进行比较的机制。

可选地,在任何上述方面中,上述方面的另一实施方式包括:其中,定义的动作包括改变第一数据包中的元数据以指示服务违反了slo。

可选地,在任何上述方面中,上述方面的另一实施方式包括:其中,定义的动作包括在服务违反了slo的条件下,丢弃第一数据包,递增计数器,或记录错误。

可选地,在任何上述方面中,上述方面的另一实施方式包括:其中,slo指示网络服务阈值与第一数据包相关联。

可选地,在任何上述方面中,上述方面的另一实施方式包括:还包括存储器,其中,slo指示网络服务阈值与整个数据流相关联。

可选地,在任何上述方面中,上述方面的另一实施方式包括:其中,存储器包括包含特定于数据流的数据的状态集缓存,该状态集缓存用于存储slo和kpi。

可选地,在任何上述方面中,上述方面的另一实施方式包括:其中,网络服务阈值包括多个阈值,使得当为数据流的第一子组提供的服务违反第一阈值时,或者当为数据流的第二子组提供的服务违反第二阈值时,违反slo。

可选地,在任何上述方面中,上述方面的另一实施方式包括:还包括存储器,该存储器包括包含指示slo违反状态的数据的状态集缓存,其中,处理器用于:当在定义的时间段内未违反slo时,执行定义的第二动作。

可选地,在任何上述方面中,上述方面的另一实施方式包括:其中,定义的第二动作包括生成证明在定义的时间段内已经实现slo的数据。

在实施例中,本公开包括一种方法,该方法包括:网络设备的接收器接收作为数据流的一部分的第一数据包,第一数据包包括指示网络服务阈值的服务级别目标(slo),slo包括指示要与网络服务阈值进行比较的网络服务度量的关键性能指标(kpi);网络设备的处理器根据kpi指示的网络服务度量来测量网络设备提供的服务,以获得测量的服务结果;处理器将测量的服务结果与slo指示的网络服务阈值进行比较,以确定网络设备提供的服务何时违反了slo;以及基于对服务违反了slo的确定,处理器执行定义的动作。

可选地,在任何上述方面中,上述方面的另一实施方式包括:其中,第一数据包包括指示定义的动作的动作集,并且该实施方式还包括:在执行定义的动作之前,从第一数据包确定定义的动作。

可选地,在任何上述方面中,上述方面的另一实施方式包括:其中,第一数据包包括一个或多个条件集,条件集指示测量服务以获得测量的服务结果的机制,并且指示将测量的服务结果与网络服务阈值进行比较的机制。

可选地,在任何上述方面中,上述方面的另一实施方式包括:其中,定义的动作包括在对服务违反了slo的确定的条件下,改变第一数据包中的元数据,递增计数器,或记录错误以指示服务违反了slo,或丢弃第一数据包。

可选地,在任何上述方面中,上述方面的另一实施方式包括:其中,slo指示网络服务阈值与整个数据流相关联。

可选地,在任何上述方面中,上述方面的另一实施方式包括:还包括存储指示slo违反状态的数据;以及当在定义的时间段内未违反slo时,执行定义的第二动作,其中,定义的第二动作包括生成证明在定义的时间段内已经实现slo的数据。

在实施例中,本公开包括非暂时性计算机可读介质,非暂时性计算机可读介质包括供网络设备使用的计算机程序产品,该计算机程序产品包括存储在非暂时性计算机可读介质上的计算机可执行指令,使得当由处理器执行时,计算机可执行指令使网络设备:接收作为数据流的一部分的第一数据包,第一数据包包括指示网络服务阈值的服务级别目标(slo),slo包括指示要与网络服务阈值进行比较的网络服务度量的关键性能指标(kpi);根据kpi指示的网络服务度量来测量网络设备提供的服务,以获得测量的服务结果;将测量的服务结果与slo指示的网络服务阈值进行比较,以确定网络设备提供的服务何时违反了slo;以及基于对服务违反了slo的确定,执行定义的动作。

可选地,在任何上述方面中,上述方面的另一实施方式包括:其中,第一数据包包括指示定义的动作的动作集,并且指令还使网络设备在执行定义的动作之前,从第一数据包确定定义的动作。

可选地,在任何上述方面中,上述方面的另一实施方式包括:其中,slo指示网络服务阈值与整个数据流相关联。

为了清楚起见,任何前述实施例可与任一或多个其他前述实施例组合,以在本公开的范围内创建新的实施例。

从下面结合附图和权利要求的具体实施方式中,将更清楚地理解这些特征和其他特征。

附图说明

为了更完整地理解本公开,现在结合附图和具体实施方式参考以下简要描述,其中,相同的附图标记表示相同的部分。

图1是用于实现网络嵌入式实时服务级别目标(slo)验证的示例网络的示意图。

图2是用于执行网络嵌入式实时slo验证的示例包处理引擎的示意图。

图3是用于实现网络嵌入式实时slo验证的示例状态集缓存的示意图。

图4是用于验证示例slo的示例状态集实施方式的示意图。

图5是可以用于指示节点验证slo的示例包头的示意图。

图6是用于实现网络嵌入式实时slo验证的示例网络设备的示意图。

图7是用于实现网络嵌入式实时slo验证的示例方法的流程图。

具体实施方式

首先应当理解,尽管下面提供了一个或多个实施例的说明性实施方式,但是可以使用任何数量的(无论是当前已知的还是现有的)技术来实现公开的系统和/或方法。本公开不限于下面示出的说明性实施方式、附图、以及技术(包括本文示出和描述的示例性设计和实施方式),而是可以在所附权利要求的范围及其等同物的全部范围内对本公开进行修改。

以下是本公开中使用的若干术语的定义。大包协议(bigpacketprotocol,bpp)是用于实现自驱动包和包可编程状态集(packet-programmablestatelet)的网络通信协议。自驱动包是包含定义一组条件命令的字段的块或集合的数据包,这些条件命令用于引导转发设备(例如,诸如路由器的网络节点)对包的处理。条件命令是其执行取决于满足条件的命令。应当注意,网络可以通过设置总是评估为真的条件来将条件命令作为无条件命令对待。流关键字(flowkey)是用于将包与流相关联的一组特征,例如,包字段(例如,源、目的地)、流标识符(identifier,id)、和/或其他特殊标记的组合。带内操作管理维护(in-situoperations,administration,andmaintenanceioam)是一种机制,通过该机制,当包在网络中传输时,遥测数据的采样可以被附加到包。互联网协议(internetprotocol,ip)是用于跨网络边界中继数据包的通信协议。软件定义网络(softwaredefinednetwork,sdn)是通过将控制面放置在控制器中来分隔控制面功能和数据面功能的网络。该控制器可以是集中式的,并且可以在运行时动态地配置/编程网络节点。服务级别指的是服务根据一些特性(例如,延迟为12毫秒(millisecond,ms)、吞吐量为每秒两百个包等)提供的质量级别。关键性能指标(kpi)指的是服务级别的类型(例如,包延迟、包吞吐量等)。slo指的是服务级别的目标,例如,可用性、吞吐量、响应时间、延迟、和/或抖动(例如,延迟小于15ms、吞吐量优于每秒150个包等)。状态集是在包转发设备上维护的存储器的被隔离部分,该存储器用于包含与数据流中的自驱动包相关联并且可以与该自驱动包交互的数据。被动测量是一种涉及在不改变流量的情况下观察生产网络流量(productionnetworktraffic)的测量。主动测量是合成测试流量的测量。混合测量是涉及观察生产流量(productiontraffic)的测量,其中,可以改变流量例如以携带测量元数据。

sla通常定义服务提供商根据slo向客户端提供的服务级别保障,其中,该服务级别保障规定了需要以特定质量级别提供服务。服务提供商应提供服务保证以确保保持了所承诺的服务级别,并且确保检测到任何违反服务级别目标的情况,使得可以采取缓解动作。在一些示例中,这包括采取预防动作,在这种情况下,服务提供商还可以关注于检测服务级别的负面趋势或相关联的影子slo(shadowslo)。影子slo是slo的稍严格的版本。使用影子slo允许服务提供商在实际slo有可能被违反时(例如,在实际违反slo之前)接收警报。

slo阐述了网络通信服务的可测量特性,例如可用性、吞吐量、响应时间、延迟、和/或包间延迟(例如,抖动)。例如,slo可以规定应满足以提供服务级别的目标(例如,目标)。可以根据一个或多个可测量的属性来定义上述目标,这些属性称为关键性能指标(kpi)。kpi可以包括一个或多个可测量的网络服务度量,例如延迟、吞吐量、带宽、丢弃的包、错误、抖动、无序传送(out-of-orderdelivery)等。slo可以规定不应被突破的阈值和/或可接受的范围。为了讨论的清楚性,本文使用的阈值包括应被违反(例如,超过或未达到,其中,“未达到”指示低于)的单个值以及应保持的有界范围。slo还可以规定流的统计目标,例如,包的规定百分比应满足对应的目标/阈值。可以为slo/sla提供服务保证。虽然许多机制可以用于服务保证,但示例服务保证系统可根据kpi测量服务级别,并且将测量结果导出到外部系统和/或网络控制器以进行分析和与slo界限/阈值进行比较。例如,可以生成并通过网络传输合成测试流量。然后,根据kpi对合成测试流量进行端到端测量。然后,外部系统/控制器确定测试流量是否满足slo。因此,这样的系统验证测试流量满足slo,并且假定该测试流量也代表网络上的数据流量。

这样的服务保证系统与多个问题相关联。例如,在外部系统中实现服务保证涉及部署单独的系统作为网络操作系统基础设施的一部分来进行测量和监测服务级别,这会额外增加网络复杂度。这样的系统还从网络导出大量的数据,这就产生了附加的信令开销。此外,这样的系统在发生slo违反的时间和检测到这种slo违反的时间之间经历相当大的滞后。

例如,在服务保证系统选择测试slo违反之前,slo违反可能会发生一段时间。当测量了合成流量并且当导出这样的测量以与slo界限/阈值进行比较时,这样的slo违反可能继续发生。因此,当数据流量上发生slo违反时,这样的系统不能提供对slo违反的实时响应。例如,当数据包仍处于在服务提供商网络中传输的过程中时,这样的系统无法检测slo违反。

本文公开了实现网络嵌入式实时slo验证的机制。具体地,对任何流量执行slo验证,包括携带数据的实际生产流量。在一个示例中,使用了具有包括条件命令的头的数据包。数据包头包括命令块和/或元数据块,命令块和/或元数据块包含一个或多个条件和一个或多个条件动作。例如,命令/元数据块包含指示网络服务界限/阈值的一个或多个slo和指示可用于测试slo的符合情况(compliance)的网络服务度量的一个或多个kpi。命令/元数据块还携带一个或多个条件命令/动作,条件命令/动作将在违反slo时执行和/或将在一段时间内未违反slo时执行。例如,如果满足条件,则可以立即对特定包采取一些条件命令(例如,丢弃包、增加计数器计数等)。其他示例命令可以包括在发生流的条件(例如,确定整个流具有太多的违反延迟目标的包等)时采取的长期动作。这可以涉及(例如)按需向接收器发送报告或在流终止时向接收器发送报告。接收命令/元数据块的网络设备/节点根据kpi测量提供的服务,并将结果与slo进行比较,以确定是否发生了slo违反。然后,网络设备可以执行相关联的条件动作,例如丢弃包、更新包的元数据、发送警报、证明未违反slo等。slo可以与数据包相关或者可以与数据包的整个流相关。当slo与多于一个包(例如,与数据流)相关时,网络设备可以在存储器中维护数据。这可以包括维护指示对迄今为止为流提供的服务级别的观察的数据,缓存slo使得不需要在每个包中携带slo,以及存储关于过去的包的数据使得可以进行测量。在一些示例中,所公开的机制可以通过以下来优化:在第一数据包上提供条件命令,并且在后面的包上省略这些条件命令,以降低开销。可以在沿流路径的节点处缓存这样的命令,以避免在每个包上信令通知slo。在一些示例中,条件命令可以只在入口网络设备和出口网络设备上测试和执行,以降低沿网络路径的其他网络设备的复杂度。在其他示例中,包可以携带条件命令,该条件命令可以覆盖在设备缓存的条件命令。在一些示例中,命令可以更新在设备上缓存的条件命令。此外,在一些示例中,不同的节点可以验证不同的slo。此外,条件命令可以包含表示为布尔表达式的命令条件,这允许将更高级的条件slo函数应用于数据流。例如,可以测试数据流的第一部分是否符合第一slo,并且可以测试数据流的第二部分是否符合第二slo。基于数据包是否满足第一组条件、第一组条件和第二组条件、第一组条件和第二组条件等,数据流的数据包可以与第一slo或第二slo相关联。

因此,所公开的机制允许在网络内验证slo。这样的验证机制可以应用于生产流量,并且可以针对在网络传输的流的包实时检测slo违反。在一些情况下,甚至可能在数据包仍在网络传输时检测到slo违反。例如,中间节点可以在包到达包的目的地之前检测由包引起的对延迟目标的逾时违反(lateviolation)并且执行对应的动作。此外,所公开的验证机制允许由用户定制slo和/或从网络边缘编程slo,例如,不使用集中式系统或接入服务提供商的控制、监测、以及测量基础设施。此外,所公开的机制允许终端用户定制在违反slo的情况下要采取的动作。这可以在不单独编程沿数据流路径的单个网络节点的情况下完成。例如,所公开的机制可以允许用户实时地评估是否遵守slo,并且如果发生违反,则立即采取动作。这适用于各个包、整个流、或其组合。在一些情况下,可以在包仍在网络传输时(例如,甚至在到达目的地之前)检测到由流/对应的包引起的slo违反。这可以允许立即采取实时的应对,包括丢弃不可能满足服务级别目标的流量,以避免由不再需要的包引起的网络上的不必要负载。

slo可以覆盖可以由网络内的节点(例如根据阈值)测量的任何服务级别。例如,这可以包括包间到达延迟、包间到达延迟变化、包延迟等。在扩展情况下,slo可以包括针对整个流的目标,而不仅仅是单个包的目标。这样的流目标可以包括多包范围界限和相对目标。例如,slo可以指引节点维护应满足slo的包的计数和/或百分比(例如,99%)。slo还可以指引节点维护目标分布(例如,99%在一个阈值内,1%在第二阈值内等)。此外,可以将slo定义为有条件的并且可以根据条件而变化。例如,可以将slo定义为随流的大小而变化。例如,这可以用于随着流的大小(并因此,样本大小)增加而收紧slo的范围。在变化形式下,所公开的机制可以使用单独的控制面(例如,代替自驱动包)来编程slo验证,例如通过使用控制器或控制协议扩展(例如,通过内部网关协议(interiorgatewayprotocol,igp))来编程slo验证。这可以通过允许控制器/控制计划生成条件命令并向边缘节点发送该条件命令以附加到流的包来完成。此外,只要具备对状态集和条件命令的支持,就可以使用bpp以外的协议。

图1是用于实现网络嵌入式实时服务级别目标(slo)验证的示例网络100的示意图。网络100可以由服务提供商或其他网络服务提供商(例如企业网络服务提供商、信息技术部门、数据中心提供商等)来操作。网络100包括耦合远程节点115的网络域110。网络域110包括充当入口点和出口点的边缘节点111以及传输数据(例如数据包122的数据流121)的内部节点112。在一些示例中,可选地,网络100可以包括控制器113(例如软件定义网络(sdn)控制器)以管理网络路由。

远程节点115是操作应用程序并希望通信的节点。例如,远程节点115可以包括服务器、客户端、和/或具有网络接口的其他计算机。这样的远程节点115可以通过经由网络域110传输数据流121来通信。数据流121是在诸如远程节点115的一组公共端点之间的一组相关通信。数据流121可以被节点111、节点112、和/或节点115识别为共享公共关键字字段值(例如相同的源ip地址、目的地ip地址、源端口地址、以及目的地端口地址)的一组包122。作为具体示例,在远程节点115上操作的应用可以发起通信会话。在通信会话期间交换的数据可以作为数据流121被发送。数据流121中的数据被分成数据包122以供传输。数据流121可以使用流关键字,该流关键字是网络域110用来将数据包122与数据流121相关联的一组数据包特性。例如,流关键字可以包括指示流成员(flowmembership)的数据包字段的组合。这样的字段可以包括源ip地址、目的地ip地址、源端口地址、以及目的地端口地址。也可以使用其他关键字字段。例如,netflow可以使用七元组流关键字。数据包122包括具有路由信息(例如流关键字)的头和具有在远程节点115之间交换的数据的有效载荷。在一些情况下,有效载荷可能被加密,并且可能不能被连接远程节点115的网络域110读取。

数据流121经由服务提供商操作的网络域110在远程节点115之间交换。网络域110是由一组公共联网策略控制的一组互连网络部件。网络域110包括边缘节点111、内部节点112、以及链路。边缘节点111是能够将数据包122转换成符合网络域110的策略的形式的网络设备。例如,边缘节点111可以实现用于网络域110的安全策略,根据网络域110寻址方案改变数据包122网络地址,管理数据流121的通过网络域110的路径等。因此,边缘节点111充当到网络域110的入口点和出口点。作为特定示例,边缘节点111可以确定跨网络域110的路径,封装包122以使包122经由隧道继续通过网络域110,等等。边缘节点111通过一系列内部节点112和对应的链路(如线所示)互连。内部节点112是网络设备(例如路由器),用于读取数据包122的头信息,并根据该头信息转发数据包122。边缘节点111和内部节点112还可以包含流缓存,该流缓存维护与数据流121相关的上下文信息。例如,流缓存可以包含与经过包含流缓存的节点的每个数据流121相关联的流缓存条目。流缓存条目可以包含数据流121的持续时间信息、开始时间、源地址、目的地地址、发送的包122的数量、在流中发送的数据量、和/或其他数据流121相关信息。

在一些情况下,网络域110路由功能和数据管理功能可以被分解,并且分布在遍及网络域110的各个边缘节点111和/或内部节点112之间。在其他情况中,网络域110可以包括控制器113,控制器113是用于做出路由决策并管理网络100操作的网络设备。例如,当网络域110被配置为sdn时,控制器113是sdn控制器。当不存在控制器113时,通过联系边缘节点111以确定和建立用于数据流121通过网络域110的路由路线,远程节点115可以发起通信。当存在控制器113时,远程节点115可以联系边缘节点111,边缘节点111然后联系控制器113。控制器113保持对网络域110资源的了解,并且用于确定流121的网络路由。控制器113可以向边缘节点111提供指示将用于数据流121的路由的命令。应当注意,服务提供商可以使用许多不同的网络100配置。为了讨论的清楚,提供前述内容作为通用的数据包122/数据流121路由方法的示例,该内容不应被认为是限制性的。

网络域110可以使用条件命令来路由数据包122。条件命令允许包122指引应当如何路由包122(例如,自驱动),而不是依赖于内部节点112和/或边缘节点111的网络策略。条件命令由充当入口节点(例如,头端节点)的边缘节点111放置在/附加到包122的头。条件命令包括条件、命令,并且还可以包括一个或多个参数。该条件指示在执行命令之前需要满足的项。当不满足条件时,该命令被忽略。在条件发生时,该命令指示由处理数据包122的节点采取的一个或多个动作。当存在参数时,参数进一步阐明条件和/或命令。

远程节点115可以与边缘节点111通信以建立通信。例如,远程节点115可以向边缘节点111和/或控制器113表达应用的通信目标。在其他情况下,例如由于远程节点115的运营商和操作网络域110的服务提供商之间预先存在的sla,边缘节点111和/或控制器113可能已知应用的通信目标。在任一情况下,边缘节点111和/或控制器113可以例如从存储器和/或从远程节点115获得控制通信的slo。然后,入口边缘节点111可以单独地或基于来自控制器113的命令来基于应用的通信目标生成条件命令。然后,当数据流121的数据包122进入网络域110时,入口边缘节点111可以将条件命令附加到这样的包122上。内部节点112在路由期间从包122获得条件命令。内部节点112可以存储用于数据流121的路由命令。这样的路由命令可以包括流缓存中的流121专用数据和/或通用路由命令,例如网络域110策略、互联网协议(ip)路由命令、媒体接入控制(mediaaccesscontrol,mac)路由命令、多协议标签交换(multiprotocollabelswitching,mpls)命令、和/或通常用于经由网络路由包122的其他路由命令。当满足条件命令的条件时,处理包122的内部节点112和/或边缘节点111可以执行相关联的命令。这样的命令可以是除了存储的路由命令之外执行的补充命令(例如,更新流上下文,改变数据包头数据等)。在其他情况下,命令可以是替代存储的路由命令而执行的覆盖命令(例如,丢弃包,改变下一跳(hop)等)。

在一些示例中,使用这样的条件命令来对内部节点112和/或边缘节点111进行编程,以对携带在远程节点115之间的实际数据的数据包112进行slo验证。例如,可以根据称为大包协议(bpp)的通信协议来发送数据包122。除了其他头信息之外,bpp数据包122还可以包括命令块和/或元数据。当进入网络域110时,边缘节点111可以将包括slo的元数据添加到数据包122。slo包括通信要满足的目标,例如,根据范围或其他阈值,以及指示可测量的服务度量的kpi。因此,slo和对应的kpi可以由节点111/112解释为描述要检查的条件(例如,测量/计算的类型和用于比较的阈值/范围)以便触发条件命令。边缘节点111还可以将定义的动作添加到元数据作为条件命令。当违反slo时,由处理包122的节点111/112执行该定义的动作。

在一些示例中,条件命令特定于数据包122。例如,在一些应用(例如,机械臂的控制)中,逾时的包122可能比丢弃的包122更有问题。因此,slo可以指示每个节点111/112应该检查包122的时延,并且如果超过时延则丢弃包122。当违反slo时,还可以使用其他动作,例如发送错误消息,在包122的元数据中设置标志,记录错误,更新流上下文,和/或更新状态集中的元数据。

在其他示例中,条件命令涉及整个数据流121。在这种情况下,沿流121路径的节点111/112的存储器可以用于存储与来自流121的多个包122相关的数据。例如,可以在流缓存中分配空间,该空间是包含特定于数据流121的数据的存储器空间。作为另一示例,可以使用状态集。状态集是维护数据流121的状态数据的可编程数据结构。状态集可以在状态集缓存中实现,状态集缓存是专用于以类似于流缓存的方式维护数据流121的状态数据的缓存存储器的一部分。状态集缓存可以在运行时由条件命令来编程和/或重新编程,以将数据以所需要的形式维护,以符合slo的目标。应注意,虽然许多示例被描述为在状态集和/或状态集缓存上操作,但是能够维护流状态数据的任何可编程流特定存储器机制都可以用于实现本文所述的slo验证机制。

例如,第一数据包122可以使用条件命令来沿数据流121的路径设置状态集,并且对应节点的处理引擎可以通过使用存储在状态集中的数据来执行slo验证。然后,最后一个包122可以在通信结束时清除状态集。当slo对于流121的每个包122都相同时,这特别有意义。应考虑路径一致性。例如,当数据包传输通过一条新路径以致找不到slo时,就无法进行slo验证。一种缓解技术是如下混合方案,其中,一些包携带slo,但不是每个包都携带slo。在另一示例中,可以通过在单独的控制面中的通信(例如,经由igp和/或与控制器113的通信)来设置和/或清除状态集。此外,当slo应用于整个流121时,可以使用状态集来维护对满足或违反包级别的slo的包122的数量的计数。这可以用于确定涉及流121中应满足某些目标的包的百分位或百分比的slo。

不管使用哪种方法,当流121违反slo时,条件命令可以指引节点111/112采取动作。作为特定示例,条件命令可以指引节点111/112的存储器维护计数器,该计数器针对具有规定条件(例如,时延大于2ms)的每个包122递增。此外,条件命令可以使计数器在规定条件下(例如,对于每100个包)复位或递减。最后,当计数器超过规定阈值或其他范围时,条件命令可以使节点111/112采取定义的动作。通过使用这些条件链,可以实现增强的slo检查。例如,如果流121中的百分(%)之一的包122的时延大于2ms,则可以使用(例如,状态集中的)这样的计数器来发送通知。作为另一示例,可以只针对包括多于规定数量的包122(例如,多于100个包)的流121发送这样的通知。作为另一示例,可以对不同数量的包122使用不同的阈值/范围,例如,对具有少于20个包122的流121不采取动作,对具有多于20个且少于100个包122的流121使用第一阈值和第一条件命令,以及对具有多于100个包122的流121使用第二阈值和第二条件命令。

条件命令也可以使用布尔表达式(包括和/或/非(and/or/not)逻辑),以用于更复杂的slo验证。例如,多个计数器可以跟踪不同级别的包122特性。作为特定示例,具有超过第一阈值但不超过第二阈值的特性的包122可以递增第一计数器。此外,具有超过两个界限的特性的包122可以递增第二计数器。然后,如果任一计数器超过对应的阈值,则可以采取动作。以这种方式,可以实现如下规定的slo:对于99%的包122(例如,第一计数器),包间延迟(例如,包之间的延迟)不应超过2ms,并且对于99.9%的包122(例如,第二计数器),包间延迟不应超过5ms。虽然前述示例为了便于讨论而处理各种类型的延迟,但是本文公开的slo验证机制可以跟踪许多不同的特性。

还应注意,存在slo可以针对流121的不同包122而变化的情况。在那些情况下,后面的包122中可以携带slo,该slo临时覆盖部署在该包122的对应状态集中的slo。例如,在后面的包122中携带的条件命令可以不同于在前面的包122中的条件命令。在条件取决于包122或流121的一般属性(例如,已经发送的包122的数量)的情况下,发送方或边缘节点111可以评估这一属性并且插入没有条件的命令。在其他情况下,后面的包122的slo可以替换根据前面的包122部署的slo。同样,可能对将slo分解成单独的分量slo感兴趣。使用所公开的机制,可以指示不同的节点验证不同的分量slo。例如,可以指引第一节点验证包间延迟,可以指引第二节点验证包122时延,可以指引第三节点验证无序传送,可以指引第四节点验证抖动等。在另一示例中,可以将端到端slo分解为多个部分,其中,每个部分被应用于单个路径段而不是整个路径。作为具体示例,slo可以包括针对包延迟的端到端目标,该目标可以被分为可应用于对应路径段的端到端延迟预算。此外,每个节点可以评估一组slo(例如,每个节点可以评估与延迟、丢失等相关的多个slo)。此外,不同的slo可以应用于同一流121内的不同类型的包122。例如,具有第一标记(例如,可能包含在非常重要的包122中)的包122可以具有与具有第二标记的包122不同的slo,等等。还有可能只使出口边缘节点111验证slo。这对应于端到端流121验证情况。使用bpp,这可以通过使用条件命令来实现,该条件命令以节点是出口边缘节点111为条件。

此外,代替或除了当违反slo时进行标记,所公开的机制还可以用于证明流121是否在所有时间都满足了对应的slo。例如,可以维护一个标志作为状态集元数据的一部分,该标志指示是否发生了slo违反。可以将这样的标志设置为违反动作的一部分。具体地,条件命令可以指示slo作为条件,并且指示标志设置动作作为条件命令。此外,另一条件命令可以指引状态集在状态集到期(或计数器到期)而不存在slo违反时采取通知动作。这样的信息对于下游计费解决方案是有用的。这样的通知动作可以包括向包122添加元数据,设置包122标志,通知控制器113和/或远程节点115等。

所公开的机制假定包122的流121关键字和/或流121成员可以由节点111和节点112确定。例如,未加密的头开放ip流关键字字段(例如,在基于传输层安全(transportlayersecurity,tls)的通信中)。在另一示例中,边缘节点111可以将包122标记为属于对应的流121。然后,内部节点112可以读取这样的标记并基于其采取动作。

所公开的机制解决单个网络域110(例如,一个大规模可扩展数据中心(massivelyscalabledatacenter,msdc)、一个全球服务提供商、一个全球企业网络)的边界内的slo验证。此外,所公开的机制可以与包可编程状态集和自驱动包结合使用。然而,其他实例也是可能的,其中,使用其他控制面来部署处理命令(例如,灵活性有所损失)。例如,使用控制器113模型,可以在发起流121以转发用于slo验证的命令之前使用呼叫建立阶段。在这种情况下,命令沿着路径被转发/部署到每个节点111/112,而不需要在包122中携带命令。作为另一示例,可以部署igp模型(例如,区分流121的能力可能有所损失)。

在本公开中,可以经由bpp过程来处理错误。例如,可以经由标志在bpp包122中指示错误,从而可以由下游节点检测条件。错误也可以记录在节点111/112的状态集内。此外,条件命令可以分类为非阻塞命令,从而允许与包122的转发分开地执行。条件命令还可以以某一类别的节点111/112(例如,边缘节点111、特定节点111/112、状态集输出节点111/112等)为条件。关于测量,可以利用状态集来记录之前的包122的到达时间、当前测量(例如,观察到的最小/最大包122的到达间隔等)。

图2是用于执行网络嵌入式实时slo验证的示例包处理引擎200的示意图。例如,包处理引擎200可以在网络100中的边缘节点111和/或内部节点112上操作。作为具体示例,包处理引擎200可以根据bpp来操作,并且因此可以充当bpp引擎。引擎200包括解析器231、命令引擎232、状态集命令模块234、状态集缓存管理器235、以及状态集缓存236。

解析器231是用于分析符号串的部件。具体地,解析器231用于接收输入的数据包(诸如数据包122),并且分析数据包头和/或元数据。当包处理引擎200在入口边缘节点上操作时,上述输入的数据包可以不包含与slo验证相关的数据。在这种情况下,如下所述,由命令引擎232添加slo验证数据。例如,在这种情况下,包处理引擎200可以充当网关,并且因此将待由下游节点执行的条件命令附加到bpp块。因此,解析器231读取数据包头以获得地址信息,从而确定源、目的地、相关联的流等。当包处理引擎200在内部节点或出口边缘节点上操作时,数据包头和/或元数据可以包含slo验证数据(例如,该数据由入口边缘节点插入到包中)。在这种情况下,解析器231读取数据包头和/或元数据,以获得除地址/流信息之外的slo验证数据。

命令引擎232是用于从解析器231接收解析的数据包信息并且控制包处理引擎200的slo验证的部件。当包处理引擎200在入口边缘节点上操作时,命令引擎232接收解析的包信息,并且例如经由流关键字来确定包属于哪个流。然后,命令引擎232确定哪些slo与流相关联,制定条件命令以实现slo,并且将这样的条件命令附加到数据包。例如,命令引擎232可以在发起上述流时从系统管理员和/或从用户获得slo验证的条件命令。可以经由控制器和/或发起流的远程节点接收条件命令。命令引擎232然后可以将这些命令与存储器中(例如,在状态集缓存236和/或流缓存中)的流相关联,以便附加到输入的数据包。在这种情况中,命令引擎232将具有附加的slo验证数据的包转发到转发器233,以用于通过网络进行通信。

当包处理引擎200在内部节点和/或出口节点上操作时,命令引擎232用于经由解析器231从输入的数据包获得slo验证信息。slo验证信息可以包括实现slo验证的条件命令和描述slo(例如,条件命令作用于的slo)的任何元数据。命令引擎232还可以确定与包相关联的流,并且使用流信息从状态集缓存管理器235和/或状态集缓存236获得对应的slo验证信息。例如,命令引擎232结合状态集缓存236使用slo验证信息来支持测量和执行。例如,命令引擎232可以使用条件命令来执行关于状态集缓存236中存储的数据的测量(例如,流的不同包的时间戳,以便计算抖动和延迟以及识别包的顺序变化或丢失)以支持这样的测量。此外,测量可以用作由slo引用的kpi。此外,命令引擎232可以通过将测量的kpi(例如,测量、在状态集中维护的包的统计等)与目标(例如,被认为可接受的阈值)进行比较来执行slo验证。具体地,命令引擎232从数据包和/或从状态集缓存236接收条件命令。命令引擎232执行由条件命令指引的测量,以确定是否满足条件。作为特定示例,包(或状态集缓存236)可以包含根据阈值或其他范围指示slo的元数据和指示要测量的对应服务度量的kpi。作为非限制性示例,这样的测量/kpi可以包括检查以下:自创建包以来的延迟、自流中的前一个包以来的延迟、包丢弃、无序包、流带宽、优先级、错误、和/或其他可测量的网络服务度量。此外,这样的检查可能受制于条件(例如,当前节点地址等于规定地址,总是评估为真的条件(例如,逻辑上无条件的))。命令引擎232将测量结果与slo阈值/范围进行比较。当满足条件时,命令引擎232执行对应的条件命令(例如,由数据包和/或状态集缓存236规定的条件命令)。作为非限制性示例,这样的命令可以包括丢弃包,在包的元数据中设置和/或递增计数器,在状态集缓存236中设置和/或递增计数器,在包的元数据/状态集缓存236中设置标志,生成控制面消息,重路由包,重路由流,更新流缓存和/或路由表,和/或网络节点可以执行的其他动作。在一些情况下,条件命令使用布尔表达式。因此,在一些示例中,当多个条件评估为真时、当多个命令中任一命令评估为真时、或者当其他组合逻辑操作(例如,异或、异与等)评估为真时,状态集命令模块234执行所指示的动作。然后,命令引擎232将数据包转发到转发器233以用于跨网络通信。当包处理引擎200在出口边缘节点上操作时,命令引擎232还可以在将包转发到转发器233之前从数据包中移除slo验证信息,以用于服务提供商网络之外的进一步通信。

状态集缓存管理器235是管理部件,该管理部件用于分配状态集缓存236中的内存、将数据写入状态集缓存236、从状态集缓存236读取数据、和/或清除状态集缓存236的内存。状态集缓存236是可编程存储器缓存,该可编程存储器缓存可以用于存储slo验证信息并且将这样的信息与对应的流相关联。可以例如通过数据包中的条件命令来编程状态集缓存236,以保持与流相关联的slo验证信息。例如,状态集缓存236可以存储、更新、以及检索每个流的计数器、标志、参数、以及其他数据。状态集命令模块234是用于控制状态集缓存236和/或状态集缓存管理器235的创建和维护的部件。例如,状态集命令模块234可以基于来自命令引擎232的命令创建新的状态集和/或更改现有状态集的内容。

转发器233是用于向下游节点/设备发送数据包的通信部件。例如,转发器233可以基于来自状态集命令模块234的命令和/或基于解析器231从数据包头中获得的地址信息,做出针对数据包的路由决策和/或转发决策。

在功能上,包处理引擎200在解析器231接收数据包,在命令引擎232获得来自包元数据的条件命令,执行测量,确定是否满足条件,和/或在状态集命令模块234执行条件命令,在状态集缓存236存储对应的可编程流状态数据以支持在状态集命令模块234的操作,以及在转发器233向下游转发数据包。当包处理引擎200位于入口边缘节点或出口边缘节点时,包处理引擎200还可以分别插入条件命令或移除条件命令,以支持网络中的其他节点经由条件命令进行的slo验证。

图3是用于实现网络嵌入式实时slo验证的示例状态集缓存300的示意图。例如,可以使用状态集缓存300来实现包处理引擎200中的状态集缓存236。因此,状态集缓存300可以在网络100中的节点111和/或节点112上使用。状态集缓存300可以编程为存储slo验证信息,以支持与包和/或流相关的测量,并支持条件命令的执行。可以使用各种测量和条件命令来执行各种slo的验证。因此,状态集缓存300包含可编程为存储支持数据包和/或对应的流的slo验证所需要的几乎任何数据的字段。状态集缓存300包含网络数据361和可编程内容362。网络数据361是与流和状态集有关的数据。根据示例,可编程内容362是用于特定于待验证的slo和/或在违反slo时或在满足slo时要采取的对应动作的数据内容的数据存储。

网络数据361包括流关键字341字段,流关键字341字段是可以用于将数据包与对应流匹配的数据。例如,流关键字341可以包括包字段(例如,源和目的地)、流id、和/或其他特殊标记的组合。网络数据361还可以包括最后包时间(lastpackettime)342字段,最后包时间342字段包括时间戳,该时间戳指示何时接收到流关键字341所指示的流的前一个包。网络数据361还可以包含到期343字段,该字段包含定时器或时间戳。当到期343字段中包含的定时器和/或时间戳达到零和/或超过到期阈值时,状态集到期。可以基于非激活时段设置到期343字段的定时器/时间戳,其中,非激活时段使得当在定义的时间段内没有接收到上述流的新的包时,状态集到期。此外,作为示例,状态集缓存300被包括在内,并且在一些示例中可以使用附加的/不同的字段。网络数据361还可以包含最后包信息字段344。最后包信息字段344可以包含用于检查包顺序的序列号和/或哈希值。例如,可以使用最后包信息字段344中的日期来确定流的包何时变得无序。

可编程内容362可以包含一个或多个当前服务级别(servicelevel,sl)数据字段345。sl数据字段345存储测量的数据、计数器、定时器、动作、和/或其他slo验证数据,这些数据用于确定是否违反流的slo并且执行对应的动作。由于可以发生大范围的slo验证,因此可以将大范围的数据存储在sl数据字段345中。响应于数据包中的条件命令和/或响应于来自控制面命令的通信,sl数据字段345可以被分配以包含特定数据。可编程内容362还可以包含一个或多个slo参数346。slo参数346是用于描述slo和/或对应的条件和动作的数据。例如,slo参数346可以包括slo阈值/界限、slokpi、动作目标等。因此,sl数据字段345可以用于存储与流测量相关的数据,slo参数346可以存储kpi和阈值/界限以支持对是否违反slo的确定。sl数据字段345和slo参数346还可以存储指示在一个或多个条件发生时应采取的动作的数据。例如,可以在违反slo时采取动作。作为另一示例,当在根据到期343的状态集到期之前未违反slo时,可以采取动作。

图4是用于验证示例slo的示例状态集400的实施方式的示意图。具体地,状态集400是已被编程以验证与包间延迟相关的示例slo的状态集300的示例。包间延迟是接收到一个包和接收到后一个包之间的时间段。设置最大包间延迟的slo指示应该以基本恒定的速率跨网络转发包,所允许的速率变化受最大包间延迟限制。状态集400被部署在沿流路径的内部节点上。

状态集400包括网络数据461,网络数据461具有流关键字441、最后包时间442、到期数据443、以及最后包信息444,这些数据分别基本上类似于网络数据361、流关键字341、最后包时间342、到期数据343、以及最后包信息344。状态集400还包括用于可编程内容(例如,可编程内容362)的空间,可编程内容包括测量的sl数据463和slo564。测量的sl数据463包括由节点测量以确定是否违反slo的数据。slo564包括slo界限和/或kpi。因此,测量的sl数据463可以与slo564相比较,以确定是否发生了slo违反。

第一示例slo规定包间延迟变化(inter-packetdelayvariation,ipdv)不应超过2毫秒(ms)。因此,允许的ipdv可以定义为如下要求:流的最小包延迟和最大包延迟保持在彼此定义的时间范围内,在这种情况下是正负2ms(4ms)。这样的slo可以编码为bpp包中的元数据,并且可以沿流的路径转发以设置该路径上的状态集(例如,状态集400)。基于包中的命令,示例内部节点将允许的ipdv存储为slo564。具体地,该节点可以在第一sloipdv(sloipdv1)451字段中存储允许的ipdv(例如,4ms)。因此,sloipdv1451被配置为包含slo的阈值/范围。

此外,包中的命令使示例内部节点进行若干kpi的测量,以便与slo564进行比较。这样的测量存储在测量的sl数据463中。节点可以存储最后包信息444,并且可以包括关于接收到的最后一个包的顺序信息。节点测量包间延迟(inter-packetdelay,ipd),ipd是当前包的到达时间和前一个包的到达时间之间的差。当前包的到达时间可以存储在当前字段447中。在接收到下一个包时,当前字段447中的数据指示前一个包的到达时间。这样的数据可以用来测量ipd。然后,新的当前包的到达时间可以存储在针对下一个包的当前字段447中,等等。

ipd被存储为最小ipd445和最大ipd446,最小ipd445包含流中的多个包的最小ipd,最大ipd446包含流中的多个包的最大ipd。当接收到第二包时,执行第一ipv测量。当执行了测量时,将最小ipd445和最大ipd446与第一包和第二包之间的测量ipd进行比较。当前ipdv存储在ipdv448字段中。由于此时最小ipd445和最大ipd446是相同的,所以初始ipdv为0。因此,在接收到第二包时,ipdv448初始化为0。对于其他包,将当前测量的ipd与最小ipd445和最大ipd446进行比较。当当前测量的ipd小于最小ipd445时,更新最小ipd445以包括当前测量的ipd。在当前测量的ipd大于最大ipd446时,更新最大ipd446以包括当前测量的ipd。每次最小ipd445或最大ipd446改变时,从最大ipd446中减去最小ipd445。该结果被存储为流的更新的ipdv448。这样,基于测量值更新流的ipdv448(作为kpi)并将其存储在状态集400的测量的sl数据463中。

此外,每次接收到包时(或每次更新ipdv448时),节点将ipdv448(测量的kpi)与包含slo范围/阈值的sloipdv1451进行比较。当ipdv448超过sloipdv1451时,违反了slo。这样,当ipdv448超过sloipdv1451时,触发slo违反动作。例如,测量的sl数据463可以包括slo违反450字段。当发生slo违反时,slo违反动作可以使slo违反450被设置为真。当slo违反450被设置为真时和/或当状态集400在slo违反450被设置为真的情况下到期时,可以向管理员发送通知或消息。

上述控制逻辑可以编码在流中的包中,例如,在元数据中和/或在包头中的条件命令块中。可以通过在包头中使用专用命令来实现这种控制逻辑的紧凑编码。第一命令可以指示通过使用系统定义的最小ipdv448参数和最大ipdv448参数以及系统定义的ipdv448测量值来更新ipdv448。第二命令可以指示应有条件地在出现超过sloipdv1451的ipdv448时执行违反动作。

可以通过添加附加的slo564和测量的sl数据463字段来使用状态集部署更复杂的第二示例slo。第二示例slo规定对于流中的99%的包ipdv448不应超过2ms。此外,对于流中的任何包,ipdv448不应超过5ms。此外,应仅在流包含超过100个包时应用第二示例slo。在这种情况下,slo564包括sloipdv1451(sloipdv1451具有设置为4ms(例如,正负2ms)且大于100个包的参数)、设置为10ms(例如,正负2ms)的第二sloipdv(sloipdv2)452字段、以及设置为1%的slo目标百分比453字段。状态集400以类似于第一示例的方式确定ipdv448是否超过sloipdv2452,以便实现对于流中的任何包ipdv448不应超过5ms的规定。当这发生时,slo违反450被设置为真。

关于2ms的规定,计数器(c1)449存储在测量的sl数据463中。c1449在接收到第一包时初始化为0,并且在每次包超过2ms的ipdv且不超过5ms的ipdv时更新。因此,当接收到包时,节点将包的计数与sloipdv1451进行比较,以确定流是否大于100个包。包的计数可以从单独的流缓存或从最后包信息444字段获得。此外,节点将c1449与包的计数进行比较,以确定ipdv在2ms和5ms之间的包的百分比。然后,可以将ipdv在2ms和5ms之间的包的百分比与slo目标百分比453进行比较。当ipdv在2ms和5ms之间的包的百分比超过slo目标百分比453时,slo违反450被设置为真。可以通过第一命令对2ms的规定进行编码,该第一命令指引节点维护超过2ms的ipdv而不超过5ms的ipdv的包的数量。第二命令以数据包计数超过100和c1449超过数据包计数的1%为条件。然后,这样的命令触发slo违反动作。

图5是可以用于指示节点验证slo的示例包头500的示意图。例如,可以使用包头500来指示包含包处理引擎200的内部节点112使用状态集缓存300来实现状态集400。包头500可以由入口边缘节点插入包中,由流的路径上的内部节点处理,并由出口边缘节点移除。

包头500包含bpp头571,bpp头571包含指示根据bpp协议传输包的数据。bpp头571还可以包含与包相关的其他数据,例如,数据包的条件命令部分的长度、协议版本等。包头500还包含命令块572和元数据块573。命令块572和/或元数据块573包含各种条件和当满足条件时要实现的条件命令。例如,命令块572和/或元数据块573可以包含用于实现slo的一个或多个条件命令以及指示当违反slo时要采取的动作的命令。

如图所示,命令块572和/或元数据块573可以包括命令块头574和一个或多个命令575。命令块头574可以包含指示整个命令块的长度的数据以及包含用于bpp协议的管理数据的各种标志。命令575可以包含一个或多个条件命令,当被执行时,这些条件命令验证slo。在所示的示例中,命令575包括测量命令和两个比较命令。在实现参考图4讨论的第二示例的情况下,命令575可以包括测量命令以计算ipd和在状态集中更新ipdv。然后,命令575可以包括比较命令以将测量的ipdv与绝对ipdvslo(例如,没有ipdv大于5ms的包)进行比较。然后,命令575可以包括比较命令以将测量的ipdv与有界ipdvslo(例如,99%的包的ipdv小于2ms)进行比较。

命令575包含命令头576、条件集578、以及命令集579。命令头576可以包含指示第二条件的存在、条件编号/长度、和/或要应用于该组条件的布尔运算(“与”或“或”,其中,默认应用“与”)的数据。条件集578包含实现命令575的条件。例如,当命令是将测量的ipdv与绝对ipdv进行比较时,条件集578可以包含条件以检查由测量命令测量的当前ipdv是否大于状态集中存储的sloipdv。命令集579包含当满足条件集578时(例如,当违反slo时)要发起的命令。例如,命令集579可以包含命令以在状态集中设置slo违反标志。

条件集578包含各种字段以描述上述条件。例如,条件集578可以包含指示条件集578的长度的条件集长度块580。条件集578还可以包含可以指示默认布尔条件的非字段581。条件集578还可以包含与字段582,与字段582可以被设置为指示条件是否应全部为真(例如,逻辑“与”)或条件中的任何一个是否应为真(例如,逻辑“或”),以考虑满足条件集578。条件集578还可以包含指示该条件集中对应条件的长度的条件长度字段583。条件集578还可以包含可以被设置以修改条件的x标志584。条件集578可以包括可以被设置为指示条件集578的条件的条件类型585字段。例如,条件类型585字段可以指示应该获得测量的ipdv,然后指示应该将测量的ipdv与状态集中存储的sloipdv进行比较。

如上所示,可以用各种条件和条件命令来编码命令块572和/或元数据块573以与状态集交互,以便实时验证slo。

本公开使用具有条件命令的自驱动包和包可编程状态集来验证slo。然而,本公开的变型可以依赖于单独的控制面而不是自驱动包。在大多数示例中,slo被规定为包头500中的元数据。包头500被添加到遵循slo(例如,在bpp头的元数据中)的流中的包。包头500通常在网络边缘处被添加到包。slo规定要测量的kpi(或一组kpi)和目标。当数据包在网络传输时,每个节点测量针对数据包观察到的服务级别或kpi。然后,节点将上述观察与slo进行比较,并确定上述观察是否在slo的界限内。在slo涉及整个流的情况下,在流的状态集中更新和维护流的服务级别或kpi。然后,将slo与观察到的服务级别进行比较。

当检测到违反时,可以采取动作。可以由用户例如基于bpp包的命令集579中包括的数据来定制这样的动作。动作可以包括发送警报,记录违反,和/或在流的状态集中存储该违反的指示。此外,为了避免下游节点检测到同一违反而重复报告,对包进行标记。在一些示例中,例如在逾时的包无用或甚至有害的应用情况下(例如,在某些工业应用中),可以丢弃包。具有任何slo信息、sl测量等的状态集被删除/清理,并且可选地被导出。这可能发生在如由非激活确定的流的末尾。在自驱动包中携带上述命令并由对应的节点基础设施执行上述命令。

图6是用于实现例如对网络包(例如作为数据流121的一部分的数据包122)的网络嵌入式实时slo验证的示例网络设备600的示意图。例如,网络设备600可以实现网络域110中的边缘节点111、内部节点112、和/或控制器113。此外,网络设备600可以用于实现方法700以及本文公开的其他方法/机制。例如,网络设备600可以实现包处理引擎200,包处理引擎200使用实现状态集400的状态集缓存300。此外,网络设备600可以用于响应于接收到包头500而执行slo验证。

因此,网络设备600可以用于实现或支持本文描述的方案/特征/方法。例如,本公开中的特征/方法可以使用硬件、固件、和/或被安装以在硬件上运行的软件来实现。本领域技术人员将认识到,术语网络设备包括广泛的设备,网络设备600只是其中的一个示例。包括网络设备600是出于讨论清楚的目的,而不意味着将本公开的应用限制到特定的网络设备实施例或一类网络设备实施例。

网络设备600可以是通过网络传送电信号和/或光信号的设备,例如交换机、路由器、网桥、网关等。在一些情况中,网络设备600可以单独地工作或与其他网络设备600协作来操作具有本文描述的功能的虚拟网络设备。如图6所示,网络设备600可以包括收发器(tx/rx)610,tx/rx610可以是发射器、接收器、或其组合。tx/rx610可以耦合到多个下游端口620(例如,下游接口)以用于分别发送和/或接收来自其他节点的帧,并且tx/rx610可以耦合到多个上游端口650(例如,上游接口)以用于分别发送和/或接收来自其他节点的帧。处理器630可以耦合到tx/rx610以处理数据信号和/或确定将数据信号发送到哪些节点。处理器630可以包括一个或多个多核处理器和/或存储器设备632,存储器设备632可以用作数据存储、缓冲器等。例如,存储器设备632可以包含由slo验证模块614使用的状态集缓存。处理器630可以实现为通用处理器,或者可以是一个或多个专用集成电路(applicationspecificintegratedcircuit,asic)和/或数字信号处理器(digitalsignalprocessor,dsp)的一部分。网络设备600可以包括slo验证模块614,slo验证模块614可以用于对数据流的包执行slo验证,并且在违反slo时执行对应的动作,或者在未违反slo时进行证明。例如,slo验证模块614可以接收数据包,从数据包获得条件命令,以及基于包头数据、网络设备600状态、和/或基于条件命令中的相关联参数来确定是否满足条件命令中的条件。当确定满足条件(例如,违反slo)时,slo验证模块614可以例如基于条件命令中存储的对应参数来执行来自条件命令的命令。这样的命令可以使slo验证模块614修改包数据、流上下文、路由命令、网络设备600状态,和/或对数据包和/或对应的流执行其他动作。slo验证模块614可以在通用处理器、现场可编程门阵列(fieldprogrammablegatearray,fgpa)、asic、dsp、微控制器等中实现。在替代实施例中,slo验证模块614可以在处理器630中实现为存储在存储器设备632中的计算机可执行指令(例如,实现为存储在非暂时性计算机可读介质中的计算机程序产品),该计算机可执行指令可以由处理器630执行,和/或slo验证模块614可以部分地在处理器630中且部分地在存储器设备632中实现。根据实施例,下游端口620和/或上游端口650可以包含无线、电、和/或光发送部件和/或接收部件。

图7是用于实现例如对网络包(例如作为数据流121的一部分的数据包122)的网络嵌入式实时slo验证的示例方法700的流程图。例如,方法700可以由网络域110中的边缘节点111和/或内部节点112实现。此外,方法700可以在实现包处理引擎200的网络设备600上实现,包处理引擎200使用实现状态集400的状态集缓存300。此外,方法700可以响应于接收到包头500而执行slo验证。

在框701,可以接收作为数据流的一部分的第一数据包。第一数据包可以包括指示网络服务阈值/范围的一个或多个slo。第一数据包还可以包含指示网络服务度量的一个或多个kpi。slo和kpi可以包括在包头中,例如在命令块和/或元数据块中。

在框703,根据kpi指示的网络服务度量来测量网络设备提供的服务。这允许获得测量的服务结果。在一些情况下,slo和kpi与对应的数据包相关。例如,slo可以指示网络服务阈值/范围与第一数据包相关联。在其他情况下,slo和kpi与流相关。此外,第一数据包可以包括一个或多个条件集,以便指示测量服务以获得测量的服务结果的机制。此外,第一数据包可以包含条件集,以指示将测量的服务结果与网络服务阈值进行比较的机制。

当slo和kpi指示网络服务阈值与数据流相关联时,可以使用可选的框705。在这种情况下,测量服务还包括将slo和kpi存储在存储器中。例如,可以使用包含特定于数据流的数据的状态集缓存来存储slo、kpi、以及与数据流相关的一个或多个测量。然后,可以接收作为数据流的一部分的第二包。然后,可以根据网络服务度量来测量与第一数据包和第二数据包相关的数据。

在框707,将框703和/或框705的测量的服务结果与slo指示的网络服务阈值进行比较。这使得确定网络设备提供的服务何时违反了slo。在一些情况下,网络服务阈值包括多个阈值/范围。例如,slo可以指示流中的包的一些子部分应满足第一阈值/范围,而流中的包的另一部分应满足第二阈值/范围(例如,如以上示例中所讨论的,99%的包的ipdv应小于第一ipdv,所有包的ipdv应小于第二ipdv)。在这种情况下,当为数据流的第一子组提供的服务违反第一阈值时,或者当为数据流的第二子组提供的服务违反第二阈值时,违反了slo。

在框709,可以基于对服务违反了slo的确定来执行定义的动作。例如,在第一包中的动作集中可以包括定义的动作。因此,可以在执行定义的动作之前从第一数据包确定定义的动作。例如,定义的动作可以包括改变数据包中的元数据,以便指示针对对应的数据包的服务违反了slo。作为另一示例,定义的动作可以包括:在确定针对对应的数据包的服务违反了slo的条件下,丢弃数据包。

在框711,可以基于对在定义的时间段内服务未违反slo的确定来执行定义的动作。在这种情况下,slo被应用于整个流,而不仅仅是单个包。这样的slo可以说明例如指流中的包的百分位和/或百分比的目标。在第一包中的动作集中可以包括定义的动作。例如,可以使用状态集缓存来包含指示slo违反状态的数据。例如,通过在状态集到期时触发定义的动作,可以在定义的时间段内未违反slo时执行定义的动作。在这种情况下,定义的动作可以包括生成证明在定义的时间段内已经实现slo的数据。应注意,在一些示例中,框709和框711可以以替代方式发生。在其他示例中,框709和框711都可以发生,例如在方法700的多次重复上发生。因此,针对方法700示出的顺序是为了讨论的清楚性呈现,并且除非另有说明,否则可以不认为是限制性的。

本公开包括一种网络设备,包括:接收装置,用于接收作为数据流的一部分的第一数据包,第一数据包包括指示网络服务阈值的服务级别目标(slo),slo包括指示要与网络服务阈值进行比较的网络服务度量的关键性能指标(kpi);以及处理装置,用于:根据kpi指示的网络服务度量来测量网络设备提供的服务,以获得测量的服务结果;将测量的服务结果与slo指示的网络服务阈值进行比较,以确定网络设备提供的服务何时违反了slo;以及基于对服务违反了slo的确定,执行定义的动作。

虽然本公开已经提供了若干实施例,但是应当理解,在不脱离本公开的精神或范围的情况下,可以以许多其他特定形式来实现公开的系统和方法。本示例应视为说明性的而非限制性的,并且意图不限于本文给出的细节。例如,各种元件或部件可以组合或集成在另一系统中,或者特定特征可以省略或不实现。

另外,在不脱离本公开的范围的情况下,在各个实施例中描述和示出为离散或分开的技术、系统、子系统、以及方法可以与其他系统、模块、技术、或方法组合或集成。示为或讨论为彼此耦合或直接耦合或通信的其他项可以通过特定接口、设备、或中间部件以电气、机械、或其他方式间接耦合或通信。本领域技术人员可以确定并且可以做出不脱离本公开的精神和范围的改变、替换、以及变更的其他示例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1