具有条件命令的自运行数据包的制作方法

文档序号:20708821发布日期:2020-05-12 16:50阅读:193来源:国知局
具有条件命令的自运行数据包的制作方法

相关申请案交叉申请

本专利申请要求于2018年9月7日提交的、发明名称为“具有条件命令的自运行数据包(self-drivingpacketswithconditionalcommands)”的第16/124,770号美国非临时专利申请案的优先权,其又要求renweili等人于2017年9月29日提交的、发明名称为“具有条件指令的自运行数据包(self-drivingpacketswithconditionalinstructions)”的第62/565,211号美国临时专利申请案的优先权,其全部内容并入本文中。

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

不适用

参考缩微胶片附录

不适用



背景技术:

网络基于动态学习的路由转发数据包。网络操作进一步来执行网络的总体目标,例如最大化吞吐量、最小化功耗等,这有时会导致资源过度订阅、流量拥塞、丢包等问题。主机节点可以(例如,代表在主机节点上运行的应用)接入网络并使用网络基础架构传输数据。遗憾的是,主机节点和相应应用的通信目标可能与网络的总体目标相冲突。例如,在主机节点上运行的应用的目标可能是最小化相应通信的延迟。于此同时,网络的目标可能是在最低程度上可接受的时延下最大化总体吞吐量和网络设备利用率。此外,网络可能无法确定最佳路由方法来满足应用的需要。例如,可以加密数据包净荷,但这会导致无法采用深度报文检测(deeppacketdetection,dpi)。



技术实现要素:

在一实施例中,本发明包括网络设备,包括:接收器,用于接收包括数据包的数据流,所述数据包包括条件命令;处理器,耦合到所述接收器,所述处理器用于:从所述条件命令中获取条件和命令;确定满足所述条件;基于确定满足所述条件,执行所述命令以更改对所述数据流的处理、更改对所述数据包的处理、或者更改数据流的流上下文。通过在数据包中包括条件命令,在条件发生时,源节点可以控制数据流和/或特定数据包在通过网络时的处理方式。因此,条件命令允许网络功能的带内控制,其中,带内表示在与通信的数据相同的信道中转发控制信息。

可选地,在前述任一方面中,所述方面的另一实现方式包括:所述条件命令还包括一个或多个命令参数,所述命令参数包含指示值的数据,所述值为所述命令定义一组运行条件。将命令参数包括到条件命令中允许对命令进行自定义,从而对流路径中的节点进行更大的带内控制。

可选地,在前述任一方面中,所述方面的另一实现方式包括:所述条件命令还包括条件参数,所述条件参数包含指示值的数据以支持评估所述条件。将条件参数包括到条件命令中允许对条件进行自定义,从而对流路径中的节点进行更大的带内控制。

可选地,在前述任一方面中,所述方面的另一实现方式包括:所述条件命令还包括全局参数,所述全局参数包括指示值的数据,以支持评估所述数据包头部中的所有条件命令,或支持使用与所述全局参数相关联的信息。

可选地,在前述任一方面中,所述方面的另一实现方式包括:还包括存储器,所述存储器存储所述数据流的路由指令,其中所述命令是除所述存储的路由指令之外还执行的补充命令。提供补充命令允许实现大量计费和其他可能不直接影响数据包路由的功能。

可选地,在前述任一方面中,所述方面的另一实现方式包括:还包括存储器,所述存储器存储所述数据流的路由指令,其中所述命令是代替所述存储的路由指令而执行的覆盖命令。提供覆盖命令允许实现带内功能,所述功能基于网络中的当前条件动态改变数据包/流的处理。

可选地,在前述任一方面中,所述方面的另一实现方式包括:所述条件命令指示所述网络设备在所述条件发生时修改所述数据流的资源分配、修改为所述数据流选择的下一跳、或更新所述数据流的流上下文。

可选地,在上述任一方面中,所述方面的另一实现方式包括:所述条件命令指示所述网络设备在所述条件发生时修改所述数据包中的数据、修改为所述数据包选择的下一跳、修改所述数据包的优先级、丢弃所述数据包、缓存所述数据包、或者修改所述数据包中的元数据。

可选地,在前述任一方面中,所述方面的另一实现方式包括:所述确定满足所述条件包括从所述数据包中解析数据、检查所述数据流的流上下文、检查所述网络设备的状态、比较数据项、或检查所述网络设备的标识。

在另一实施例中,本发明包括一种方法,所述方法包括:网络设备中的接收器接收包括数据包的数据流,所述数据包包括条件命令;所述网络设备中的处理器从所述条件命令中获取条件和命令;所述处理器确定满足所述条件;以及基于所述确定满足所述条件,所述处理器执行所述命令以更改对所述数据流的处理、更改对所述数据包的处理、或更改所述数据流的流上下文。通过在数据包中包括条件命令,在条件发生时,源节点可以控制数据流和/或特定数据包在通过网络时的处理方式。因此,条件命令允许网络功能的带内控制,其中,带内表示在与通信的数据相同的信道中转发控制信息。

可选地,在前述任一方面中,所述方面的另一实现方式包括:所述条件命令还包括一个或多个命令参数,所述命令参数包含指示值的数据,所述值为所述命令定义一组运行条件。将命令参数包括在条件命令中允许对命令进行自定义,从而对流路径中的节点进行更大的带内控制。

可选地,在前述任一方面中,所述方面的另一实现方式包括:所述条件命令还包括条件参数,所述条件参数包含指示值的数据以支持评估所述条件。将条件参数包括到条件命令中允许对条件进行自定义,从而对流路径中的节点进行更大的带内控制。

可选地,在前述任一方面中,所述方面的另一实现方式包括:所述条件命令还包括全局参数,所述全局参数包括指示值的数据,以支持评估所述数据包头部中的所有条件命令,或支持使用与所述全局参数相关联的信息。

可选地,在前述任一方面中,所述方面的另一实现方式包括:所述条件命令指示所述处理器在所述条件发生时修改所述数据流的资源分配、修改为所述数据流选择的下一跳、或更新所述数据流的流上下文。

可选地,在上述任一方面中,所述方面的另一实现方式包括:所述条件命令指示所述处理器在所述条件发生时修改所述数据包中的数据、修改为所述数据包选择的下一跳、修改所述数据包的优先级、丢弃所述数据包、缓存所述数据包、或者修改所述数据包中的元数据。

可选地,在前述任一方面中,所述方面的另一实现方式包括:所述确定满足所述条件包括从所述数据包中解析数据、检查所述数据流的流上下文、检查所述网络设备的状态、比较数据项、或检查所述网络设备的标识。

在另一实施例中,本发明包括非瞬时性计算机可读介质,所述非瞬时性计算机可读介质包括供网络设备使用的计算机程序产品,所述计算机程序产品包括存储在所述非瞬时性计算机可读介质上的计算机可执行指令,当处理器执行所述计算机可执行指令时,使得所述网络设备:接收包括数据包的数据流,所述数据包包括条件命令;从所述条件命令中获取条件和命令;确定满足所述条件;以及基于所述确定满足所述条件,执行所述命令以更改对所述数据流的处理、更改对所述数据包的处理、或更改所述数据流的流上下文。通过在数据包中包括条件命令,在条件发生时,源节点可以控制数据流和/或特定数据包在通过网络时的处理方式。因此,条件命令允许网络功能的带内控制,其中,带内表示在与通信的数据相同的信道中转发控制信息。

可选地,在前述任一方面中,所述方面的另一实现方式包括:所述条件命令指示所述网络设备在所述条件发生时修改所述数据流的资源分配、修改为所述数据流选择的下一跳、或更新所述数据流的流上下文。

可选地,在上述任一方面中,所述方面的另一实现方式包括:所述条件命令指示所述网络设备在所述条件发生时修改所述数据包中的数据、修改为所述数据包选择的下一跳、修改所述数据包的优先级、丢弃所述数据包、缓存所述数据包、或者修改所述数据包中的元数据。

可选地,在前述任一方面中,所述方面的另一实现方式包括:所述确定满足所述条件包括从所述数据包中解析数据、检查所述数据流的流上下文、检查所述网络设备的状态、比较数据项、或检查所述网络设备的标识。

为了清楚起见,上述任一实施例可以与上述其他实施例中的任意一个或多个实施例结合,在本发明的范围内创建一个新的实施例。

通过下文中结合附图和权利要求书的详细说明,将能更清楚地理解这些特性和其他特性。

附图说明

为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的以下简要说明,其中的相同图例编号表示相同部分。

图1是用于路由具有条件命令的数据包的示例网络的示意图;

图2是用于执行从网络数据包中获取的条件命令的示例网络设备的示意图;

图3是包含条件命令的示例数据包头部的示意图;

图4是包含条件命令的另一示例数据包头部的示意图;

图5是用于在数据包头部中使用的示例条件命令块的示意图;

图6是可以用于实现条件命令块的示例大数据包协议(bigpacketprotocol,bpp)头部的示意图;

图7是用于实现数据包携带的条件命令的示例方法的流程图。

具体实施方式

首先应理解,尽管下文提供一种或多种实施例的说明性实施方案,但所公开的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。

应用目标通常通过网络节点上执行的网络转发策略来引入,以指示应该将数据包转发到何处、应该在何时丢弃数据包、应该如何对数据包进行优先级排序等。在此类情况下,由处理数据包的节点自行处理数据包。此外,在某些情况下,网络节点可以采用源路由,以允许头端节点决定为数据流选择特定网络路径。源路由允许头端节点确定数据包应该采用的路径并对数据包中的路径进行编码,而非让节点做出转发决定。然而,针对消除流量拥塞、路径中断等情况,源路由通常可能是静态且不灵活的,可能无法考虑动态情况。在此类网络中,采用基于软件定义网络(software-definednetworking,sdn)的技术,以允许控制器以流为单位修改网络策略。然而,控制循环的时间尺度可能太长,以至于当流的数据包通过网络时无法允许以线速进行自适应。此外,此类系统可以在流级别改变,但是无法改变特定数据包。无论在哪种情况下,应用目标通常都是通过硬编码协议或外部控制逻辑引入到网络中,创建和部署这些协议或逻辑非常耗时。

本文公开了用于实现使用条件命令的自运行数据包的机制。数据包包括保存路由信息的头部和保存通信数据的净荷。条件命令插入或附加在头部中,并位于数据包净荷外部(例如,在头部中和/或在头部与净荷之间)。因此,可以在不采用dpi且不解密数据包净荷的情况下读取条件命令。条件命令可以包含在源节点的数据包中进入网络域,并且被该数据包所穿过的其他网络节点采用。在某些情况下,条件命令也可以由网络节点包括在数据包中。条件命令包括条件和命令。条件表示在执行命令前必须满足的事项。当条件不满足时,忽略该命令。该命令指示当条件发生时,处理数据包的节点将要执行的一个或一组动作。条件命令还可以包括条件参数、命令参数,和/或公共/共享参数。此类参数包括在处理节点上修改条件评估结果和/或修改命令的数据。通过在数据包头部中包括条件命令,在条件发生时,源节点可以控制数据流和/或特定数据包在通过网络时的处理方式。因此,条件命令允许网络功能的带内控制,其中,带内表示在与通信的数据相同的信道中转发控制信息。出于安全原因,此类条件命令的范围可限于相应的数据流、相应的子流、和/或相应的数据包。

例如,条件评估(例如,比较)传输数据包的节点中的项的状态。此类条件可以包括数据包本身的属性(例如,数据包长度)、数据流的上下文(例如,所述流的数据包计数器或服务级别目标)、所述网络设备的状态(例如,路由器上的出口队列的深度)、和/或其它节点条件(例如,节点地址)。所述命令指示所述节点在所述条件发生时应如何处理数据包和/或对应的数据流。例如,所述命令可以更改数据包路由(例如,丢弃数据包、对数据包进行排队、改变数据包优先级、改变下一跳)、更改数据包头部内容或bpp块内容(例如,添加/改变元数据、添加/改变数据包头部数据、交换头部字段与元数据字段、递增数据包计数器)、改变节点的资源分配(例如,更新流上下文、更新流优先级/路由)、在节点执行自定义功能、改变节点状态等。如本文所使用的,流上下文可以指流缓存、流缓存保留、流状态、流元数据(例如,存在流缓存表项)、对应的流缓存表项中的数据字段的值(例如,数据包的数量)、以及路由器状态(例如,队列占用级别)。然而,所述命令无法更改所述数据包净荷中的数据(例如,用户数据)。然后,参数可以添加变量或其他上下文信息,以支持条件和/或命令的解释。因此,条件命令提供对各种网络功能的控制,这些网络功能可以自定义以实现应用目标,而不会干扰与无关的数据流有关的网络功能。此外,条件命令允许在数据包通过网络传输时动态改变网络功能,而非仅仅基于网络流量规划。作为特定示例,在确定时延过大时,可以在传输中丢弃数据包,这可以实现立即丢弃该数据包,而非使用了网络资源结果却在目的地将数据包丢弃。作为另一示例,在使用了超过指定数量的资源时,针对路径中的每个节点,数据包中的计数器可以递增。这样可以实时验证满足服务质量(qualityofservice,qos)保证。作为另一示例,可以基于路径的实际可用带宽、时延等对数据流/数据包重新进行路由和/或重新进行优先级排序。

因此,在网络域中的节点如何处理数据包方面,本发明为端点设备、头端设备、以及应用提供更好的控制,继而使得能够创建提供改进的网络服务的定制的网络解决方案。与其他网络技术相比,此类服务可能更有弹性、更灵活、性能更好、提供更好的保障以及提高了操作简便性。此外,本发明提供了一种机制,用于结合网络控制器等集中式组件来选择性地采用此类功能。下文将结合附图更详细地讨论关于条件命令的使用的实现细节。

图1是用于路由具有条件命令的数据包122的示例网络100的示意图。网络100包括耦合主机节点115的网络域110。网络域100包括充当入口和出口点的边缘节点111以及传输数据(例如数据包122的数据流121)的内部节点112。

主机节点115是运行应用并要进行通信的节点。此类主机节点115可通过经由网络域110传输的数据流121进行通信。数据流121是一组公共端点(例如,主机节点115)之间的相关通信。例如,在主机节点115上运行的应用可以发起通信会话。通信会话期间交换的数据可以作为数据流121进行传输。数据流121中的数据被分离成数据包122进行传输。数据包122包括具有路由信息的头部和具有在主机节点115之间交换的数据的净荷(例如,作为通信会话的一部分)。净荷在某些情况下可以被加密,而无法由连接主机节点115的网络域110读取。

网络域110是一组由通用网络策略组控制的互连网络组件。应当注意的是,虽然网络域110是单域,但是本发明可以部署在多域上下文中。边缘节点111是能够将数据包122转换为符合网络域110策略的形式的网络设备。例如,边缘节点111可以实施针对网络域110的安全策略,根据网络域110寻址方案改变数据包122网络地址,管理穿过网络域110的路径数据包122/流121等。因此,边缘节点111充当进入网络域110的入口点和出口点。作为具体示例,边缘节点111可以确定跨越网络域110的路径,封装数据包122以使数据包122经由隧道通过网络域110。边缘节点111通过一系列内部节点112和相应的链路相互连接,这些链路用线表示。内部节点112是例如路由器等的网络设备,用于读取数据包122的头部信息,并根据头部信息转发数据包122。边缘节点111和/或内部节点112可以识别流121并确定数据包122和对应的上下文信息与对应的流121相关联。例如,数据包122/流121可以通过包含若干关键参数(例如,源互联网协议(internetprotocol,ip)地址和源端口、目的ip地址和目的端口、服务类型(typeofservice,tos)、输入接口等)的元组来识别。在其它情况下,数据包122/流121可以通过流说明符识别。边缘节点111和内部节点112还可包含维护与数据流121相关的上下文信息的流缓存。例如,流缓存可包含与每个数据流121相关联的流缓存表项和/或通过包含流缓存的节点的一组聚合流121。流缓存表项可以包括数据流121的持续时间信息、开始时间、源地址、目的地址、传输的数据包122的数量、在该流中传输的数据量、和/或其他数据流121相关的统计信息。

可以修改网络域110以采用用于路由数据包122的条件命令。这些条件命令还可以用于管理流121相关的其它动作,例如,更新流121的上下文、指示维护与流121相关的统计数据、更新数据包122的元数据/头部等。因此,所述条件命令允许所述数据包122指示应该如何路由(例如,自运行)数据包122和/或应该如何管理流121,而非依赖于内部节点112和/或边缘节点111处的网络策略。充当入口节点(例如,头端节点)的边缘节点111将条件命令定位在数据包122的头部中。条件命令包括条件、命令,也可以包括一个或多个参数。条件表示在执行命令前必须满足的事项。当条件不满足时,忽略该命令。该命令指示当条件发生时,处理数据包122的节点将要执行的一个或一组动作。

在一个示例中,所述主机节点115可以与所述边缘节点111通信以建立通信。主机节点115可以向边缘节点111传达应用的通信目标。然后,所述入口边缘节点111可以基于所述应用的通信目标生成条件命令,并在所述数据包122进入所述网络域110时将所述条件命令附加到所述数据流121的所述数据包122上。在另一示例中,网络提供商可以确定在边缘节点111处将条件命令插入数据包122,而无需主机节点115请求。例如,网络提供商可以确定添加用于维护一般网络域110的条件命令和/或实现从其它信道获得的某些目标,例如,从控制器或运营支持系统(operationsupportsystem,oss)获得的目标。

内部节点112在路由过程中从数据包122中获取条件命令。内部节点112可以存储数据流121的路由指令。此类路由指令可以包括流缓存中的流121的特定数据和/或通用路由指令,例如,网络域110的策略、ip路由指令、媒体访问控制(mediaaccesscontrol,mac)路由指令、多协议标签交换(multiprotocollabelswitching,mpls)指令、和/或通常用于经由网络路由数据包122的其它路由指令。当满足条件命令的条件时,内部节点112可以执行相关联的命令。此类命令可以是除存储的路由指令(例如,更新流上下文、改变数据包头部数据等)之外还执行的补充命令。在其它情况下,这些命令可以是代替存储的路由指令(例如,丢弃数据包、改变下一跳等)而执行的覆盖命令。

内部节点112还可以从条件命令中获取参数。这些参数提供数据以阐明条件、命令或二者。例如,条件可以包括比较,例如小于、大于、等于、前缀等。然后,条件参数可以包含指示值的数据以支持评估条件。例如,条件参数可以指示正在比较的值(例如,用于和某一项或特定数据项进行比较的阈值)。例如,将节点地址与x进行比较,将数据包122的字段(例如,生存时间(timetolive,ttl)字段、下一跳前缀等)与x进行比较,将传输控制协议(transmissioncontrolprotocol,tcp)保活与x进行比较,将流缓存表项与x进行比较,将队列占用率与x进行比较,等等。其中,x是创建条件命令时设置的变量。x可以设置为包括很多项,例如数据值、对数据包122中携带的元数据/数据的引用和/或数据包头部字段、对与流121相关的且在数据包122外部的节点111/112上保持状态的元数据的引用、对明确定义的数据项的引用,例如,接口状态参数等。条件和条件参数允许内部节点112检查各种可定义条件,例如,携带条件命令的数据包122的属性、数据流上下文、内部节点112的路由器状态、数据包122的上层信息(例如,四层及以上开放系统互连(opensystemsinterconnection,osi)模型)、节点条件等。应当注意的是,条件可以设置为始终评估为true,从而在路由数据包122的每个内部节点112处执行命令。否则,条件设置为仅在出口边缘节点111所期望的情况发生时触发命令。

作为另一示例,命令包括将在条件发生时使用的一个或多个原语。原语是内部节点112可以理解的功能。命令参数包含指示值的数据,该值为命令定义一组运行条件。例如,命令参数可以指示命令应该施加的项目和/或应该在多大程度上施加于/改变该项目。例如,命令可以在内部节点112处发起某些功能,例如丢弃数据包122、对数据包进行排队、改变数据包122优先级、更新数据包122字段(例如,标记、添加、交换、替换、递增和/或更新字段)、更新流121的上下文、更新数据包122的元数据(例如,标记、添加、交换、替换、递增和/或更新元数据)、设置数据包122/流121的下一跳、分配内部节点112资源、发起客户功能等。然后命令参数可以指示待使用的数据包122的队列、待使用的数据包122的优先级、待更新的字段、以及该字段中待放置的值等。作为特定示例,命令可以指示应当在内部节点112处分配资源,参数可以指示所请求的资源类型、资源资格(例如,分配的大小/数量)、分配持续时间等。因此,命令和命令参数允许内部节点112执行各种功能。通过在所述条件发生时执行命令,内部节点112可以采取各种复杂动作,而无需针对所述流程121事先进行特定的编程。例如,内部节点112可以根据网络流量提高/降低数据包122/流121的优先级、抢先丢弃具有高延迟的数据包122、根据网络流量改变数据包122/流121的路由路径、更新和/或交换数据包122的计数器/字段/元数据以根据路径中内部节点112处的情况提供信息等。此外,还可以采用全局参数,其中包含指示值的数据,对数据包122的头部而言,该值是全局性的值。因此,全局命令可以根据需要影响条件和命令。

在跨网络域110转发之后,充当流121的出口节点的边缘节点111接收数据包122。边缘节点111可以在将数据包122转发到流121目的地处的主机节点115之前移除和/或处理条件命令。例如,边缘节点111可以读取数据包122中的头部字段和/或元数据。边缘节点111还可以向主机节点115报告结果。例如,边缘节点111可以发送包括来若干数据包122的数据的报告,以指示网络域110已遵守服务级别协议(servicelevelagreement,sla)。作为另一示例,当违反sla时,边缘节点111可以进行实时通信。

通过上述公开可以看出,条件命令允许网络域110基于带内信令实现各种功能,所述带内信令可以以流121和/或甚至数据包122为单位进行定制。因此,条件命令显著改进了网络域110的功能、灵活性和效率。还应当注意的是,虽然示出了osi层三个点对点网络(例如,ip网络),条件命令可以在其他类型的网络中实现,例如,osi第2层网络、sdn、mpls网络等。下文中的附图公开了可用于编码和/或处理如上文所论述的条件命令的示例设备和编码方案。

图2是用于执行从网络数据包(例如,作为数据流121的一部分的数据包122)中获取的条件命令的示例网络设备200的示意图。例如,网络设备200可以实现网络域110中的边缘节点111和/或内部节点112。此外,网络设备200可用于实施方法700以及本文公开的其它方法/机制。例如,网络设备200可以通过包含条件命令块500的数据包头部300或数据包头部400来传输数据包。此类头部可以在bpp头部600中实现。下面将结合附图对这些项进行更详细的讨论。

因此,网络设备200可用于实施或支持本文描述的方案/特征/方法。例如,本发明中的特征/方法可以使用硬件、固件和/或安装在硬件上运行的软件来实现。本领域技术人员将认识到,术语“网络设备”包括各种设备,其中网络设备200仅是一个示例。包括网络设备200是为了讨论清楚起见,但是绝不意味着将本发明的应用限制于特定网络设备实施例或网络设备实施例的类别。

网络设备200可以是通过网络传送电信号和/或光信号的设备,例如交换机、路由器、网桥、网关等。如图2所示,网络设备200可以包括收发器(tx/rx)210,收发器210可以是发射器、接收器或其组合。tx/rx210可耦合到多个下游端口220(例如,下游接口)用于发送和/或接收来自其它节点的帧,以及耦合到多个上游端口250(例如,上游接口)分别用于发送和/或接收来自其他节点的帧。处理器230可耦合到tx/rx210以处理数据信号和/或确定要将数据信号发送到哪些节点。处理器230可包括一个或多个多核处理器和/或存储器设备232,其可用作数据存储、缓冲器等。处理器230可以实现为通用处理器,或者可以是一个或多个专用集成电路(application-specificintegratedcircuit,asic)和/或数字信号处理器(digitalsignalprocessor,dsp)的一部分。网络设备200可包括自运行数据包模块214,其可用于接收数据包。然后,自运行数据包模块214可以从数据包中获取条件命令,并基于数据包头部数据、网络设备200状态和/或基于条件命令中的关联参数确定是否满足条件命令中的条件。在确定满足条件时,自运行数据包模块214可以例如,基于存储在所述条件命令中的相应参数,执行来自条件命令的命令。此类命令可以使自运行数据包模块214修改数据包数据、流上下文、路由指令、网络设备200,和/或对数据包和/或对应流执行其它动作。自运行数据包模块214可以在通用处理器、现场可编程门阵列(fieldprogrammablegatearray,fpga)、asic(固定/可编程)、网络处理器单元(networkprocessorunit,npu)、dsp、微控制器等中实现。在替代性实施例中,自运行数据包模块214可以在处理器230中实现,作为存储在存储器设备232(例如,作为计算机程序产品)中的指令,其可以由处理器230执行,和/或部分地在处理器230中实现、部分地在存储器设备232中实现。根据实施例,下游端口220和/或上游端口250可以包含无线、电气和/或光学发送和/或接收组件。

图3是包含条件命令的示例数据包头部300的示意图。例如,数据包头部300可以用于携带数据流121中的数据包122中的条件命令。数据包头部300包括数据链路头341、网络头343、条件命令块350、传输头345和净荷347。数据链路头341可以包括osi模型层二信息,例如mac源和/或目的地址、交换/隧道数据、局域网(localareanetwork,lan)数据、虚拟局域网(virtuallocalareanetwork,vlan)标签、和/或用于通过网络交换数据包/帧的其它信息。网络头343可以包括osi模型层三信息,例如ip源地址/目的地址、安全数据和/或与在网络层中运行的网络路由协议相关的其它数据。传输头345包含与连接、流量控制、拥塞避免数据、数据包顺序数据和/或与在传输层中运行的网络路由协议相关的数据。净荷347包含从在数据包源处运行的应用向在数据包目的地处运行的应用传送的数据。

条件命令块350在网络头343和传输头345之间编码。条件命令块350包含一个或多个条件以及一个或多个关联的命令。条件命令块350还可以包含条件的参数、命令的参数、与条件和命令均有关的全局参数或其组合。条件命令块350中的条件命令由沿着网络路径的跳(例如,路由器/节点)解释并作用。这些条件命令以特定指令(命令)的形式向路径中的节点提供指导,指示节点应如何处理数据包,同时提供条件以指示应在何时执行这些命令。因此,沿路径的节点可以从条件命令块350中获得条件、命令和/或参数。然后,当满足条件时,节点可以通过执行命令来改变节点状态、节点资源分配、数据包数据、数据包路由和/或流管理。

图4是包含条件命令的另一示例数据包头部400的示意图。例如,数据包头部400可以用于携带数据流121中的数据包122中的条件命令。数据包头部400包括数据链路头441、网络头443、条件命令块450、传输头445和净荷447,它们分别与数据链路头341、网络头343、条件命令块350、传输头345和净荷347基本相似。与数据包头部300不同,条件命令块450在数据链路头441和网络头443之间编码。

可以以多种方式对数据包头部300/400进行编码。例如,可以为指令分配特定的代码(例如,从网络节点已知的一组指令中选择)。条件可以编码为包含条件(例如:比较器–等于、大于、小于、存在、匹配子字符串,等等)类型的结构,以及被比较的项目(例如,使用类别/子类编码)。类别可以包括数据包字段、流上下文和/或路由器状态。子类别可以包括出口利用率、出口丢弃数、中央处理器(centralprocessingunit,cpu)利用率、内存利用率等。这种编码可以基于类型长度值(typelengthvalue,tlv)。可以按照tlv对参数进行编码,并且根据参数位置通过指令和条件进行引用。下面的图描绘了一种可能的编码结构。应当注意的是,也可以采用其他结构和其他编码。

图5是用于在数据流121中的数据包122中包含的数据包头部(例如数据包头部300和/或400)中使用的示例条件命令块500的示意图。例如,命令块500可用于实现条件命令块350和/或450。

条件命令块500包含条件指令集头551、一个或多个条件命令字段552,并且可以包含全局参数集字段553。条件指令集头551是数据块,指示存在条件命令块500以及相关联的管理数据,例如,条件命令块500的长度、条件指令的数量和大小、参数集的数量和大小、错误检查数据、版本数据、与整个条件命令块500相关的标志等。条件命令字段552包含一个或多个条件命令(例如,1-n个,其中n为任意整数值)。由于条件指令的执行可能对顺序不敏感,条件命令字段552中包含的条件指令集可以以任何顺序进行编码,甚至可以并行进行编码。当存在时,全局参数集字段553包含与条件和命令都相关的参数和/或与多个条件命令相关的参数,具体取决于示例。

条件命令字段552包含条件集字段554和命令集字段564。条件集字段554包含与相应的条件命令字段552相关的一个或多个条件字段555(例如,1-n个,其中n为任意整数值)。可以以任何顺序包含此类条件字段555。命令集字段564包含与相应的条件命令字段552相关一个或多个命令字段565(例如,1-n个,其中n为任意整数值)。相应地,当满足条件字段555时,调度执行相应的命令字段565。可以通过使用条件集字段554和命令集字段564中的多个条件(例如,取决于条件的条件)和/或命令(例如,取决于命令的命令)来实现复杂的条件和命令。

条件字段555包括条件头559、条件数据556,并且可选地,包括条件参数集562。条件头559可包含指示后续条件存在的数据、条件编号/长度、和/或将要应用于该组条件(例如,“和”与“或”,其中,默认应用“和”)的布尔运算。条件数据556包含指示条件字段555包含哪个条件的数据。这些条件可以包括比较,例如小于、大于、等于、前缀等。这些条件可涉及包含条件命令块500的数据包的属性、数据流的上下文、处理该数据包的网络设备的状态和/或其它节点条件。可以在没有附加信息的情况下检查某些条件。然而,当需要附加信息来为条件数据556中的条件提供上下文时,还包括条件参数集562。条件参数集562与相应条件数据556中的条件有关,并且可以编码为tlv。条件参数集562可包含参数集头557,参数集头557可包含指示存在后续参数集存在的数据、参数集长度、和/或相关标志。条件参数集562还可以包含一个或多个参数数据字段558的集合,所述一个或多个参数数据字段558包含指示相关参数的数据,所述相关参数与条件数据556所表示的相应条件有关。例如,参数数据字段558可以设置为包括很多项,例如数据值、对数据包中携带的元数据/数据的引用和/或数据包头部字段、对与流相关的且在所述数据包外部的节点上保持状态的元数据的引用、对明确定义的数据项的引用,例如,接口状态参数等。因此,所述条件参数数据字段558可以包含指示值的数据以支持评估由所述条件数据556表示的条件。可以由条件数据556和条件参数集562表示的条件的示例可以包括一个比较,涉及数据包(例如,ttl字段的值、差异化服务编码点(differentiatedservicescodepoint,dscp)字段的值、下一跳前缀等)的头部的属性、流上下文(例如,存在流缓存表项、对应流缓存表项中的数据字段的值(例如,数据包的数量))、路由器状态(例如,队列占用级别)、接口的利用率(例如数据包进入节点的入接口或假定出接口)、上层信息(例如,tcp连接的三向握手、tcp保活)、和/或节点条件(例如,节点地址,以便在特定节点执行指令)。

命令字段565包括命令头569、命令数据566,可选地,包括命令参数集563。命令头569可包含指示后续命令存在的数据、命令编号/长度、和/或将要应用于该组命令的布尔运算。命令数据566包含指示命令字段565中包含哪个命令的数据。此类命令可以包括除了存储在所述节点的路由指令之外还执行的补充命令。此类命令还可以包括代替存储的路由指令而执行的覆盖命令。命令可指示节点应如何处理数据包(例如,丢弃、列队、缓冲、优先级排序)、指示节点应该执行自定义功能(例如,分类),指示节点应该更新数据包内容(例如,标记、添加/更新块参数),指示节点应该更新流上下文(例如,写入数据项),和/或指示节点应该为数据包/流使用指定的下一跳。命令数据566中的命令还可以包括作用于节点的原语。例如,命令可以指示节点分配资源(例如,参数包括请求的资源类型、资源限制/大小、持续时间)、作用于数据包头部字段(例如,交换头部字段与元数据项)、和/或作用于数据包中携带的元数据(例如,添加元数据项、替换元数据项、递增元数据值)。可以在没有附加信息的情况下检查某些命令。然而,当需要附加信息来为命令数据566中的命令提供上下文时,还包括命令参数集563。命令参数集563可以与条件参数集562基本相似,但是可以包含指示值的数据,该值在所述命令数据566中为所述命令定义一组运行条件。

全局参数集字段553可以与条件参数集562和/或命令参数集563基本相似。然而,全局参数集字段553可以包含指示值的数据,该值定义针对条件命令字段552中包含的整个条件命令和/或所有条件命令的一组运行条件和/或支持使用与全局参数相关联的信息,例如,将数据存储在流上下文中。

例如,条件命令块500可用于指示处理数据包的网络节点修改数据流的资源分配、修改数据流的下一跳、和/或在条件发生时更新数据流的流上下文。例如,可以基于数据包的目的地址和本地路由表选择下一跳,该路由表通过各种控制平面协议编程。条件命令块500可用于修改此类选择的下一跳。作为另一示例,条件命令块500可用于指示处理数据包的网络节点修改数据包中的数据、修改数据包的下一跳、修改数据包的优先级、丢弃数据包、缓存数据包、或者在条件发生时修改数据包中的元数据。作为再一示例,条件命令块500可用于,在通过从所述数据包中解析数据、检查数据流的流上下文、检查网络设备的状态、比较数据项、和/或校验网络设备的身份确定满足条件时,指示处理数据包的网络节点执行此类命令。

图6是可以用于实现条件命令块的示例大数据包协议(bigpacketprotocol,bpp)头部600的示意图,该条件命令块例如是在数据流121包含的数据包122中的数据包头部(例如数据包头部300和/或400)中使用的条件命令块500。例如,bpp头部600可以用作条件命令块500的具体实现。应当注意的是,bpp头部600的字段会由于标准化而发生变化,并且,示出了所公开的字段结构以说明本文中包括的概念。因此,bpp头部600的字段不应视为限制。

bpp头部600包括可以用于实施条件指令集头551的bpp块头部651。bpp头部600还包括具有命令头659的bpp命令652、条件集654、以及可用于实现条件命令字段552、条件头559/命令头569、条件集字段554和命令集字段564的动作集664。bpp头部600还可以包括一个或多个可以实现参数数据字段558的参数658。

bpp块头部651可以包括版本字段671,其包含bpp头部600的版本信息。bpp块头部651还可以包括指示bpp头部600总长度(例如,以比特为单位)的长度字段672。bpp块头部651还可以包括错误动作字段673,指示在错误发生时要采取的动作。此类动作可以包括丢弃数据包的动作、忽略所有条件命令并返回到常规处理的动作、忽略错误已发生这一事实并且当做无事发生试图继续执行所有命令的动作等。bpp块头部651还可以包括先验错误字段674,其可包含指示沿路径在先前节点发生的先前错误的数据。bpp块头部651还可以包括标志675,其包含与bpp头部600相关的其它管理数据。bpp块头部651还可包含预留的比特677,用于未来可能的扩展。bpp块头部651还可包含元数据偏移字段678,指示bpp块头部651和元数据编码开始之间的位数。

命令头659可包含命令长度字段681,指示bpp命令652中的条件命令集和/或参数集的长度。命令头659还可包含各种标志682,其包含与bpp命令652相关的其它管理数据。

条件集654可包含条件集长度字段683,指示条件的长度和/或数量。条件集654还可包含和/或字段684,以指示是否应该满足所有条件以启动命令(和)或者是否应该在满足任何条件时启动命令(或)。条件集654也包含一个或多个条件655。条件655可包括长度字段686,以比特为单位指示条件的长度。条件655还可以包括非字段687,可指示默认布尔条件。条件655还可以包括各种标志688以进一步阐明/修改条件。条件655还可以包括条件类型字段689以指示将要采用的条件。条件655还可以包括一个或多个参数653以描述条件。参数653可以包括的参数类别字段695、长度字段696和值字段697,以tlv格式分别表示参数的类别、参数的长度和参数的值。应当注意的是,本文公开的条件集654结构以tlv格式维护,以便允许在因特网工程任务组(internetengineeringtaskforce,ietf)标准化下与各种元数据参数结合使用,例如业务功能链(servicefunctionchaining,sfc)参数、网络服务头(networkserviceheader,nsh)参数、ip性能测量(ipperformancemeasurement,ippm)参数、带内操作管理维护(in-situoperations,administration,andmaintenance,ioam)参数等。

动作集664可包含动作集长度字段685,指示命令的长度和/或数量。动作集664还可包含一个或多个动作665(例如,命令)。动作665可包含长度字段691以指示动作665的长度。动作665还可包含各种标志693以进一步阐明/修改命令。动作665还可包含指示命令的动作类型字段694。动作665还可以包括一个或多个参数653以描述命令。

图7是用于实现数据包携带的条件命令的示例方法700的流程图。例如,方法700可以由充当路由流121和数据包122的边缘节点111或内部节点112的网络设备200实现。因此,方法700可用于通过读取数据包头部(例如数据包头部300和/或400)来执行条件命令,数据包头部包含条件命令块,例如,条件命令块500。在某些情况下,方法700还可以经由bpp进行通信,从而在bpp头部600上操作。

在框701处,节点可以接收具有包括条件命令的数据包的数据流。节点执行是数据包处理,并且可以确定候选动作,例如,下一跳队列更新、丢弃动作等。此类候选动作包括节点在不存在条件命令的情况下将采取的路由动作。因此,此类候选动作可以包括将要应用的数据包处理动作,除非条件命令覆盖了此类动作并且导致了不同的结果。

在框703,节点确定数据包中是否存在未处理的条件命令。如果否,则节点可以前进到框709。如果数据包中有未处理的条件命令,则所述节点前进到框705。在框705处,节点从条件命令中获取条件和关联命令,并前进到框707。在框707处,节点确定是否满足条件。如果不满足条件,则节点不改变候选动作,并返回到框703以检查是否有其他未处理的条件命令。如果满足所述条件,则节点前进到框709。

在框709处,节点收集命令并视情况覆盖/补充候选动作。因此,在框707处,节点可确定满足条件。然后,基于确定满足条件,在框711处,节点可以执行相应命令以更改数据流的处理、更改数据包的处理、和/或更改/更新流上下文。如果在框707处不满足条件,则根据候选动作(例如,根据通用路由协议)基于数据包头部中的信息处理数据包。

许多条件命令在影响方面可能是互不相关的(例如,一个更新流上下文、另一个决定数据包优先级等)。头端节点和/或端点可以选择条件命令,以避免可能导致不希望的非确定性行为的冲突指令。

此外,虽然方法700描绘了可以针对到达的任何数据包在节点上执行的基本处理流程,但是仍可能对该基本处理流程进行各种优化。例如,该处理流程可以针对执行命令的顺序进行优化。例如,可以立即执行补充指令。此外,条件指令的执行顺序可以服从并行化。

作为特定示例,数据包可能包含指示在出接口处遇到拥塞时应该如何处理数据包的指令。应用可能会判断数据包在此类情况下不是非常重要,可以将其删除。在这种情况下,条件可以是:预期出接口上的利用率级别高于指定阈值。相应的动作/命令可以是丢弃该数据包。然后,参数可以包含条件的阈值级别。如上所述,该功能以及许多其他功能可以通过使用条件命令来创建。

本发明包括网络设备,包括:接收装置,用于接收包括数据包的数据流,所述数据包包括条件命令;以及处理装置,用于从所述条件命令获得条件和关联命令,确定满足所述条件,以及基于确定满足所述条件,执行所述命令以更改所述数据流的处理、更改所述数据包的处理或更改所述数据流的流上下文。

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

此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或集成。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式经由某一接口、设备或中间组件间接地耦合或通信。其他变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。

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