CN111543034A - 用于并行处理的自描述数据包头部 - Google Patents
用于并行处理的自描述数据包头部 Download PDFInfo
- Publication number
- CN111543034A CN111543034A CN201880063550.4A CN201880063550A CN111543034A CN 111543034 A CN111543034 A CN 111543034A CN 201880063550 A CN201880063550 A CN 201880063550A CN 111543034 A CN111543034 A CN 111543034A
- Authority
- CN
- China
- Prior art keywords
- command
- sub
- commands
- block
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/56—Routing software
- H04L45/566—Routing instructions carried by the data packet, e.g. active networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
定义了自描述数据包块(Self‑Describing Packet block,SDPB),允许在定义的数据包块中并行处理各种固定头,以利用网络节点转发路径架构中的多个核。通过检查所述数据包创建时设置的串行化标志,SPDB允许对同一数据包中携带的各种头部数据、元数据和条件命令进行并行处理,而无需对处理进行串行化甚至无需解析所述数据包。当可以并行处理一个或多个子块中的一个或多个命令时,将所述一个或多个命令分配到多个处理资源进行并行处理。该架构允许将多个具有各自独立结果的独特功能(执行命令、进行服务链接、执行遥测、允许虚拟化和路径引导)与简化的包架构并行执行,而不会产生额外的封装开销。
Description
相关申请案交叉申请
本专利申请要求由Renwei Li等人于2017年9月29日提交的、发明名称为“具有条件指令的自运行数据包(Self-Driving Packets With Conditional Instructions)”的第62/565,211号美国临时专利申请,由Renwei Li等人于2018年9月7日提交的、发明名称为“具有条件命令的自运行数据包(Self-Driving Packets With Conditional Commands)”的第16/124,770号美国专利申请,以及由Renwei Li等人于2017年9月29日提交的、发明名称为“用于并行处理的自描述可变大小数据包头部(Self-Describing Variable-SizePacket Headers for Concurrent Processing)”的第62/565,221号美国临时专利申请的优先权,其全部内容并入本文中。
技术领域
本申请涉及计算机网络,更具体地,涉及一种用于使用自描述可变大小数据包头部并行处理IP数据包头部的系统和方法。
背景技术
互联网协议(Internet Protocol,IP)是用于当今网络的协议。当网络节点接收到IP数据包时,或者是广义上的基于目的地址(和所选头部信息,例如,IPv4和IPv6数据包头部中的生存时间(time to live,TTL)和差异化服务编码点(differentiated servicescode point,DSCP))转发该IP数据包,或者是使用并下发该IP数据包到更高的一层进行进一步处理。在任一情况下,都可能有多个头部需要处理。如今,多个头部是按顺序处理的,这是由于头部是嵌套编码的,同时,可能用于每个层的单独加密和完整性保护方案,需要一次解包一个头部。例如,二层头、逐跳头、路由头部X类型、路由头部Y类型、目的头1和目的头2-传输头-应用数据,都需要一次解包一个头部。
在处理IP头期间,还需要做其他决策,所有决策都需要对IP数据包的某些方面进行审查。进行优先级排序、标记/DSCP值、更新流缓存以及收集操作管理维护(operations,administration,and maintenance,OAM)数据等其他操作不一定需要一次解包一个头部以进行顺序处理。事实上,这些操作中有些可以并行处理。
在其他情况下,需要多个具有封装的头部来执行特定功能,如虚拟化和服务链接。例如,通用网络虚拟化封装(Generic Network Virtualization Encapsulation,Geneve)协议为网络虚拟化提供隧道框架,其中隧道通常作为虚拟交换机之间的背板而建立,这些虚拟交换机位于虚拟机监视器、物理交换机等中。隧道用于封装和转发来自附加组件(如虚拟机或物理链路)的帧。Geneve包格式包括通过IPv4或IPv6封装在用户数据报协议(userdatagram protocol,UDP)中的紧凑型隧道头。小型的固定隧道头提供控制信息以及基本级别的功能和互操作性。净荷包括协议数据单元,如以太网帧。另一方面,可以将网络服务头(Network Service Header,NSH)施加到帧的数据包上,以实现服务功能路径(ServiceFunction Path,SFP)。NSH还提供了沿业务路径的元数据交换机制。NSH是支持服务功能链接(Service Function Chaining,SFC)架构所需的SFC封装。
遗憾的是,如果网络需要将这两个特性都应用在IP数据包上,则由于这两种协议定义的封装方式,目前尚不可能实现。因此,按顺序处理所有IP头可能导致网络内的处理严重延迟。
此外,当试图并行处理数据包时,通常很难确定处理的哪些部分相互依赖,并且无法指示对于数据包的哪些部分依赖于另一部分这一情况的处理。当这不易确定时,就需要将处理串行化。
发明内容
现通过各种实例简单介绍一些概念,在下文的具体实施方式中会进一步描述这些概念。发明内容不旨在表明专利申请所要求保护的标的的关键特征或基本特征,也不旨在确定专利申请所要求保护的标的的范围。
当前的IP数据包编码效率较低,因为即使网络节点的硬件具有更高的功率处理和存储能力,它也要求对IP头进行串行化处理。此外,当前的IP数据包协议中没有用于携带信息和逻辑的方法,该信息和逻辑可用于确定可以对IP数据包的哪些不同部分进行并行处理。另外,需要能够在同一网络节点上针对IP数据包实现多种功能而无需过多的附加封装头的技术。
本文所述的系统和方法通过提供具有多个条件命令、元数据和流上下文信息的自描述包块(Self-Describing Packet Block,SDPB)来解决本领域中的这些问题,可以针对云/DC、蜂窝/移动回传中的各种用例、工业或通用企业网细分市场对所述SDPB进行编码。在示例实施例中,所述SDPB允许在IP数据包块中并行处理各种固定头,其中将所述固定头定义为利用网络节点转发路径硬件中的多个核。SPDB允许对同一数据包中携带的各种头部数据、元数据和条件命令进行并行处理,而无需对处理进行串行化甚至无需解析所述解析包。本文所述的系统和方法允许将多个具有各自独立结果的独特功能(执行命令、进行服务链接、执行遥测、允许虚拟化和路径引导)与简化的包架构并行执行。
根据本发明的第一方面,提供了一种用于在网络中处理数据包的计算机实现的方法。所述方法包括:在网络设备中的接收器处接收包括数据包的数据流;使用一个或多个处理器:从所述接收到的数据包的自描述块头部中识别多个子块,其中子块包含一个或多个待执行命令;检查以下各项中的至少一项:(1)所述子块头部上的串行化标志,以确定是否可以将所述子块中的命令与其他子块中的其他命令并行处理;(2)所述子块中的所述命令中的标志,以确定是否可以将所述命令与所述子块中的其他命令并行处理;响应于表明可以将所述子块中的所述命令与所述子块中的其他命令或其他子块中的其他命令并行处理的检查,将所述命令和所述其他命令分配到多个处理资源进行处理;通过所述多个处理资源并行执行所述命令和所述其他命令。
根据本发明的第二方面,提供了一种用于在网络中处理数据包的设备。所述设备包括:接收器,接收数据包;非瞬时性存储器,包括指令;一个或多个处理器,与所述存储器通信。所述一个或多个处理器执行所述存储器的所述指令以:在所述接收器处接收包括数据包的数据流;从所述接收到的数据包的自描述块头部中识别多个子块,其中子块包含一个或多个待执行命令;检查以下各项中的至少一项:(1)所述子块头部上的串行化标志,以确定是否可以将所述子块中的命令与其他子块中的其他命令并行处理;(2)所述子块中的所述命令中的标志,以确定是否可以将所述命令与所述子块中的其他命令并行处理;响应于表明可以将所述子块中的所述命令与所述子块中的其他命令或其他子块中的其他命令并行处理的检查,将所述命令和所述其他命令分配到所述一个或多个处理器的多个处理资源进行处理;通过所述多个处理资源并行执行所述命令和所述其他命令。
根据本发明的第三方面,提供了一种非瞬时性计算机可读介质,存储用于处理网络中的数据包的计算机指令。一个或多个处理器执行所述计算机指令以:从在网络设备的接收器处接收到的数据流中的数据包的自描述块头部中识别多个子块,其中所述子块包含一个或多个待执行命令;检查以下各项中的至少一项:(1)所述子块头部上的串行化标志,以确定是否可以将所述子块中的命令与其他子块中的其他命令并行处理;(2)所述子块中的所述命令中的标志,以确定是否可以将所述命令与所述子块中的其他命令并行处理;响应于表明可以将所述子块中的所述命令与所述子块中的其他命令或其他子块中的其他命令并行处理的检查,将所述命令和所述其他命令分配到所述一个或多个处理器的多个处理资源进行并行处理。
在前述任一方面的第一种实现方式中,所述一个或多个命令包括具有一个或多个命令参数的条件命令,所述命令参数包含指示值的数据,所述值为所述条件命令定义一组运行条件。
在前述任一方面的第二种实现方式中,条件命令包括命令和执行所述命令必须满足的至少一个条件。
在前述任一方面的第三种实现方式中,所述条件命令指示所述处理资源在所述至少一个条件发生时,修改数据包的数据流的资源分配、修改为所述数据包的所述数据流选择的下一跳、或者更新所述数据包的所述数据流的流上下文。
在前述任一方面的第四种实现方式中,所述条件命令指示所述处理资源在所述条件发生时,修改所述数据包中的数据、修改为所述数据包选择的下一跳、修改所述数据包的优先级、丢弃所述数据包、缓存所述数据包、或者修改所述数据包中的元数据。
在前述任一方面的第五种实现方式中,所述子块包括用于所述一个或多个命令处理的元数据。
在前述任一方面的第六种实现方式中,所述元数据包括至少一个全局参数,所述全局参数的值支持评估所述接收到的数据包头部中的所有条件命令。
在前述任一方面的第七种实现方式中,所述子块包括命令头,后跟条件和至少一组动作。
在前述任一方面的第八种实现方式中,所述子块包括至少一个类型长度值(type-length-value,TLV)参数,所述TLV参数包括条件、元数据、后跟命令的条件、以及所述子块特有的参数集中的至少一个。
在前述任一方面的第九种实现方式中,所述TLV参数包括所述处理资源基于所述子块头部中的指示传递的一组共享参数。
所述方法可以由所述装置执行,所述计算机可读介质上的所述指令可以由所述装置处理,并且所述方法的其他特征和所述计算机可读介质上的指令由所述装置的功能产生。此外,针对每个方面及其实现方式提供的说明同样适用于其他方面和相应的实现。不同实施例可以在硬件、软件或其任意组合中实现。此外,上述任一示例可以与上述其他示例中的任意一个或多个示例结合,在本发明的范围内创建一个新的实施例。
附图说明
在附图中,不一定按比例绘制,例如,数字可以描述不同视图中的类似组件。附图通过示例而非限制的方式大体上示出了在本文中讨论的各种实施例。
图1表示IPv6扩展头的示例(如果源路由、移动性和逐跳选项都在特定节点上执行);
图2是用于使用条件命令路由数据包的示例网络的示意图;
图3是示例实施例提供的包括自描述块(self-describing block,SDB)头(SDBH)的SDB的框图;
图4示出了具有块的数据包,该块划分为四个子块,包括遥测子块、描述性策略子块、路径约束子块和业务功能子块;
图5示出了在示例实施例中划分为具有头的子块的数据包,头描述如何在处理数据包头部时实现并行化;
图6是在示例实施例中用于在数据包头部中使用的示例条件命令块的示意图;
图7是在示例实施例中可用于实现条件命令块的示例大数据包协议(Big PacketProtocol,BPP)头的示意图;
图8是在示例实施例中包括BPP块头部、条件集和动作集的BPP命令的示意图;
图9是在示例实施例中用于实现数据包携带的条件命令的示例方法的流程图;
图10是示出了示例实施例提供的用于网络节点执行方法以处理用于并行处理的自描述数据包头部的电路的框图。
具体实施方式
首先应理解,尽管下文提供了一个或多个实施例的说明性实施方式,但是结合图1-10描述的所公开的系统和/或方法仍可使用任何数量的技术来实现,无论这些技术是当前已知的还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
如上所述,目前的编码效率较低,因为即使网络节点的硬件具有更高的功率处理和存储能力,它也要求对所有IP数据包头部进行串行化处理。如今,在硬件中对IP数据包进行并行处理只能在数据包级别实现。并行处理需要更广泛地用于处理IP数据包的子块(包括IP数据包头部),以便以低延迟对数据包执行多种功能。希望有一种方法能够在当前协议的上下文中工作,以携带用于确定能够对数据包的哪些不同部分进行并行处理的信息和逻辑,从而使得并行处理更广泛地适用于IP数据包。此外,需要一种技术,通过这种技术,可以在同一网络节点上执行多种功能,而无需过多的附加封装头。例如,存在用于叠加网络和底层网络的两种现有技术,但其并未描述对一个数据包的子块进行的并行处理,并且即使在某些部署用例(例如,Geneve和NSH)中二者都需要使用,它们也是相互冲突的。使用叠加的情况下,如果IP数据包需要在虚拟化环境(云)中进行服务链接,这对于NSH和Geneve的定义方式来说几乎是不可能的。此外,使用底层的情况下,如果要对数据包执行具有服务链接的源/段路由以及带内OAM/遥测,则不存在现有已定义的机制来启用此类功能。
现有的一些技术采用具有额外层的封装(NSH、Geneve、MPLS(多协议标签交换,multi-protocol label switching)-in-UDP、SR(segment routing,分段路由)-in-UDP、通用分组无线服务(General Packet Radio Service,GPRS)隧道协议(GTP)、定位/标识分离协议(Locator/Identifier Separation Protocol,LISP)、虚拟可扩展局域网(VirtualExtensible LAN,vxLAN)等),这将无法满足时延要求,并增加复杂度(在某些部署场景中,例如物联网(internet of things,IoT)和5G区域,有1毫秒的数据面时延和10毫秒的控制面时延)。没有任何现有技术描述了能够在一个地方实现这种交叉功能的数据包编码。虽然包块中指定的元数据可以类似于NSH,但是没有额外封装开销就无法进行并行处理或实现多个特性。本文描述的系统和方法解决了现有技术的这些和其他缺点。
如下文将更详细地解释的,当数据包穿过网络时,数据包可以包括由一个或多个节点进行处理的命令。首先将描述处理条件分组的技术,然后描述实现此类条件分组的并行处理的技术。
图1提供了IPv6扩展头的示例(如果源路由、移动性和逐跳选项都在特定节点上执行)。在基于需要在各个节点上实现的特性使用多个扩展头处理该数据包(具有用于移动性和源路由的两个路由头部)后,原始包100如图1中所示。如图所示,原始包100包括封装有TCP头102的IPv6头块101,该TCP头102包括路由头部104(下一个头部=TCP)、路由头部106(下一个头部=路由Hdr-Y类型)和逐跳头108(下一个头部=路由Hdr-X类型)。在这种情况下,将按顺序处理所有三个头104、106和108。换句话说,包含其他头的头“包裹”净荷110,其中头的多个层之间的边界事先不清晰的,并且头部信息的位置取决于所应用的特定分层。每个层都可以有自己的封装或完整性检查,妨碍了并行处理的进行。因此,需要串行解包,这不适合大量低时延应用(如5G网络)。
通常,数据包包括保存路由信息的头和保存通信数据的净荷。如Renwei Li等人于2018年9月7日提交的、发明名称为“具有条件命令的自运行数据包(Self-Driving PacketsWith Conditional Commands)”的第16/124,770号美国专利申请所述,条件命令可以插入或附加在头中,并位于数据包净荷外部(例如,在头中和/或在头与净荷之间)。因此,可以在不采用深度数据包检测(Deep Packet Inspection,DPI)且不解密数据包净荷的情况下读取条件命令。条件命令可以包含在源节点的数据包中进入网络域,并且被该数据包所穿过的其他网络节点采用。在某些情况下,所述条件命令也可以由网络节点包含在数据包中。
条件命令包括条件和命令。条件表示在执行命令前必须满足的事项。当条件不满足时,忽略该命令。该命令指示当条件发生时,处理数据包的节点将要执行的一个或一组动作。条件命令还可以包括条件参数、命令参数和/或公共/共享参数。此类参数包括在处理节点上修改条件评估结果和/或修改命令的数据。通过在数据包头部中包括条件命令,在条件发生时,源节点可以控制数据流和/或特定数据包在通过网络时的处理方式。因此,条件命令允许网络功能的带内控制,其中,带内表示在与通信的数据相同的信道中转发控制信息。出于安全原因,此类条件命令的范围可限于相应的数据流、相应的子流、和/或相应的数据包。
例如,条件评估(例如,比较)传递数据包的节点中的项的状态。此类条件可以包括数据包本身的属性(例如,包长度)、数据流的上下文(例如,所述流的数据包计数器或服务级别目标)、所述网络设备的状态(例如,路由器上的出口队列的深度)、和/或其他节点条件(例如,节点地址)。所述命令指示所述节点在所述条件发生时应如何处理数据包和/或对应的数据流。例如,所述命令可以更改数据包路由(例如,丢弃数据包、对数据包进行排队、改变数据包优先级、改变下一跳)、更改数据包头部内容或BPP块内容(例如,添加/改变元数据、添加/改变数据包头部数据、交换头字段与元数据字段、递增数据包计数器)、改变节点的资源分配(例如,更新流上下文,其包括流缓存、保留、流状态、流元数据)、更新流优先级/路由、在节点执行自定义功能、改变节点状态等。如本文所使用的,流上下文可以指流缓存、流缓存保留、流状态、流元数据(例如,存在流缓存表项)、对应的流缓存表项中的数据字段的值(例如,数据包的数量)、以及更新的路由器状态(例如,队列占用级别)。然而,所述命令无法更改所述数据包净荷中的数据(例如,用户数据)。然后,参数可以添加变量或其他上下文信息,以支持条件和/或命令的解释。
因此,条件命令提供对各种网络功能的控制,这些网络功能可以自定义以实现应用目标,而不会干扰与无关的数据流有关的网络功能。此外,条件命令允许在数据包通过网络传输时动态改变网络功能,而非仅仅基于网络流量规划。例如,在确定时延过大时,可以在传输中丢弃数据包,这可以实现立即丢弃该数据包,而非使用了网络资源结果却在目的地将数据包丢弃。作为另一示例,在食用了超过指定数量的资源时,针对路径中的每个节点,数据包中的计数器可以递增。这可以实时验证满足服务质量(quality of service,QoS)保证。作为另一示例,可以基于路径的实际可用带宽、时延等对数据流/数据包重新进行路由和/或重新进行优先级排序。
图2是用于使用条件命令路由数据包202的示例网络200的示意图。所述网络200包括具有主机节点206的网络域204。网络域200包括充当入口和出口点的边缘节点208以及传输数据(例如数据包202的数据流212)的内部节点210。此外,主机节点20可以在25/3g/45/5g无线电上连接到边缘节点208。在这种情况下,边缘节点208可以是与手机网络(演进型基站(Evolved Node B,eNB))上的基站连接的路由器。
主机节点206是运行应用并要进行通信的节点。此类主机节点206可通过经由网络域204传输的数据流212进行通信。数据流212是一组公共端点(例如,主机节点206)之间的相关通信。例如,在主机节点206上运行的应用可以发起通信会话。通信会话期间交换的数据可以作为数据流212进行传输。将数据流212中的数划分成数据包202进行传输。数据包202包括具有路由信息的头和具有在主机节点206之间交换的数据的净荷(例如,作为通信会话的一部分)。净荷在某些情况下可以被加密,而无法由连接主机节点206的网络域204读取。
网络域204是一组由通用网络策略组控制的互连网络组件。应当注意的是,虽然网络域204是单域,但是本发明可以部署在多域上下文中。边缘节点208是能够将数据包202转换为符合网络域204策略的形式的网络设备。例如,边缘节点208可以实施针对网络域204的安全策略,根据网络域204寻址方案改变数据包202网络地址,管理通过网络域204的数据流212等。因此,边缘节点208充当进入网络域204的入口和出口点。作为具体示例,边缘节点208可以确定跨越网络域204的路径,封装数据包202以使数据包202经由隧道穿过网络域204,等等。
边缘节点208通过一系列内部节点210和相应的链路相互连接,这些链路用线表示。内部节点210是例如路由器等的网络设备,用于读取数据包202的头部信息,并根据头部信息转发数据包202。边缘节点208和/或内部节点210可以识别数据流212并确定数据包202和对应的上下文信息与对应的流212相关联。例如,数据流212可以通过包含若干关键参数(例如,源互联网协议(Internet Protocol,IP)地址和源端口、目的IP地址和目的端口、服务类型(Type of Service,ToS)、输入接口等)的元组来识别。在其他情况下,数据流212可以通过流说明符识别。边缘节点208和内部节点210还可包含维护与数据流212相关的上下文信息的流缓存。例如,流缓存可包含与每个数据流212相关联的流缓存表项和/或通过包含流缓存的节点的一组聚合数据流212。流缓存表项可以包含数据流212的持续时间信息、开始时间、源地址、目的地址、传输的数据包202的数量、在该流中传输的数据量、和/或其他数据流212相关的统计信息。
在示例实施例中,可以修改网络域204以采用用于路由数据包202的条件命令。这些条件命令还可以用于管理数据流212相关的其他动作,例如,更新数据流212的上下文、指示维护与数据流212相关的统计数据、更新数据包202的元数据/头等。因此,所述条件命令允许所述数据包202指示应该如何路由(例如,自运行)数据包202和/或应该如何管理数据流212,而非依赖于内部节点210和/或边缘节点208处的网络策略。充当入口节点(例如,头端节点)的边缘节点208将条件命令置于数据包202的头中。条件命令包括条件、命令,也可以包括一个或多个参数。条件表示在执行命令前必须满足的事项。当条件不满足时,忽略该命令。该命令指示当条件发生时,处理数据包202的节点将要执行的一个或一组动作。此外,如下文将进一步解释的,边缘节点208和/或内部节点210还可以设置比特位,指示是否可以并行处理插入数据包中的条件命令。
在一个示例中,所述主机节点206可以与所述边缘节点208通信以建立通信。主机节点206可以向边缘节点208传达应用的通信目标。另一方面,通信可以是固有的,即基于数据包的某些参数,例如源IP地址。边缘节点208可以确定必须在网络域204中给予数据包何种处理,并因此相应地生成条件命令。然后,所述入口边缘节点208可以基于所述应用通信目标生成条件命令,并在所述数据包202进入所述网络域204时将所述条件命令附加到所述数据流212的所述数据包202上。在示例实施例中,当创建数据包202时,在数据包中设置一个比特位,以指明子数据包中的条件命令是可以并行处理还是取决于其他命令的处理。在另一示例中,网络提供商可以确定在边缘节点208处将条件命令插入数据包202,而无需主机节点206请求。例如,网络提供商可以确定添加用于维护一般网络域204的条件命令和/或实现从其他信道获得的某些目标,例如,从控制器或运营支持系统(operation supportsystem,OSS)获得的目标。
内部节点210在路由过程中从数据包202中获取条件命令。内部节点210可存储数据流212的路由命令。此类路由命令可以包括流缓存中的数据流212的特定数据和/或通用路由命令,例如,网络域204策略、IP路由命令、媒体访问控制(media access control,MAC)路由命令、多协议标签交换(multiprotocol label switching,MPLS)命令、和/或通常用于经由网络域204路由数据包202的其他路由命令。当满足条件命令的条件时,内部节点210可以执行相关联的命令。此类命令可以是除存储的路由指令(例如,更新流上下文、改变数据包头部数据等)之外还执行的补充命令。在其他情况下,这些命令可以是代替存储的路由命令(例如,丢弃数据包、改变下一跳等)而执行的覆盖命令。
内部节点210还可以从条件命令中获取参数。这些参数提供数据以阐明条件、命令或二者。例如,条件可以包括比较,例如小于、大于、等于、前缀等。然后,条件参数可以包含指示值的数据以支持评估条件。例如,条件参数可以指示正在比较的值(例如,用于和某一项或特定数据项进行比较的阈值)。例如,将节点地址与X进行比较,将数据包202的字段(例如,生存时间(time to live,TTL)字段、下一跳前缀等)与X进行比较,将传输控制协议(Transmission Control Protocol,TCP)保活与X进行比较,将流缓存表项与X进行比较,将队列占用率与X进行比较,等等。其中,X是创建条件命令时设置的变量。X可以设置为包括很多项,例如数据值、对数据包202中携带的元数据/数据的引用和/或数据包头部字段、对与数据流212相关的且在数据包202外部的节点208/210上保持状态的元数据的引用、对明确定义的数据项的引用,例如,接口状态参数等。条件和条件参数允许内部节点210检查各种可定义条件,例如,携带条件命令的数据包202的属性、数据流上下文、内部节点210的路由器状态、数据包202的上层信息(例如,四层及以上开放系统互连(Open SystemsInterconnection,OSI)模型)、节点条件等。应当注意的是,条件可以设置为始终评估为true,从而在路由数据包202的每个内部节点210处执行命令。否则,条件设置为仅在出口边缘节点208所期望的情况发生时触发命令。
作为另一示例,命令包括将在条件发生时使用的一个或多个原语。原语是内部节点210可以理解的功能。命令参数包含指示值的数据,该值为命令定义一组运行条件。例如,命令参数可以指示命令应该施加的项目和/或应该在多大程度上施加于/改变该项目。例如,命令可以在内部节点210处发起某些功能,例如丢弃数据包202、对数据包202进行排队、改变数据包202优先级、更新数据包202字段(例如,标记、添加、交换、替换、递增和/或更新字段)、更新数据流212的上下文、更新数据包202的元数据(例如,标记、添加、交换、替换、递增和/或更新元数据)、设置数据流212的下一跳、分配内部节点210资源、发起自定义功能等。然后命令参数可以指示待使用的数据包202的队列、待使用的数据包202的优先级、待更新的字段、以及该字段中待放置的值等。作为特定示例,命令可以指示应当在内部节点210处分配资源,参数可以指示所请求的资源类型、资源资格(例如,分配的大小/数量)、分配持续时间等。因此,命令和命令参数允许内部节点210执行各种功能。通过在所述条件发生时执行命令,内部节点210可以采取各种复杂动作,而无需针对所述数据流212事先进行特定的编程。例如,内部节点210可以根据网络流量提高/降低数据流212的优先级、抢先丢弃具有高延迟的数据包202、根据网络流量改变数据流212的路由路径、更新和/或交换数据包202的计数器/字段/元数据以根据路径中内部节点210处的情况提供信息等。此外,还可以采用全局参数,其中包含指示值的数据,对数据包202的头而言,该值是全局性的值。因此,全局命令可以根据需要影响条件和命令。
在跨网络域204转发之后,充当数据流212的出口节点的边缘节点208接收数据包202。边缘节点208可以在将数据包202转发到数据流212目的地处的主机节点206之前移除和/或处理条件命令。例如,边缘节点208可以读取数据包202中的头字段和/或元数据。边缘节点208还可以向主机节点206报告结果。例如,边缘节点208可以发送包括来自若干数据包202的数据的报告,以指示网络域204已遵守服务级别协议(service level agreement,SLA)。作为另一示例,当违反SLA时,边缘节点208可以进行实时通信。
因此,条件命令允许网络域204基于带内信令实现各种功能,所述带内信令可以以数据流212和/或甚至数据包202为单位进行定制。因此,条件命令显著改进了网络域204的功能、灵活性和效率。还应当注意的是,虽然示出了OSI层三点对点网络(例如,IP网络),条件命令可以在其他类型的网络中实现,例如,开放系统互连(Open SystemsInterconnection,OSI)层二网络、软件定义网络(Software Defined Network,SDN)、多协议标签交换(Multiprotocol Label Switching,MPLS)网络、叠加网络(如vxLAN或Geneve)等。
在本文描述的示例实施例中,为了减轻头的串行解包的影响,将要在此类网络204中传输的数据包202的头定义为包括具有自描述块头部的新自描述包块以及界限分明的多个子块,以便每个路由器上完成各种功能。
图3示出了示例实施例提供的包括自描述块(self-describing block,SDB)头(SDBH)302的SDB300。如图所示,SDB300可以位于传输和应用层304与下一级IP层306之间。SDBH300可以潜在地指示以固定偏移量存在的各种子头和存在共享参数的偏移量。SDBH300指示将哪些子块编码为元数据、条件以及命令类型、长度和值的一部分。如图所示的每个子块308可以包含子块头部和多个(type-length-value,TLV),其中这些TLV可以预定义为因特网工程任务组(Internet Engineering Task Force,IETF)定义的预定义长度以使得能够读取正确的偏移量。这些子块中的条件命令可以共享参数310,用于命令的串行化和并行处理,如下文更详细地描述的。这些TLV可以是条件、元数据、后跟命令的条件以及可选的该特定子块特有的参数集。这些子块中的一些是通用的和可编程的,具有预定义的固定长度。子块可以包含自描述子块头部中定义的类型的组合。子块头部可以指向为读取/处理该子块而定义的共享参数的“部分”或“全部”。
子块可以指向将要应用于网络节点208/210或路径中的每个网络节点208/210的不同条件命令、元数据或状态(在一些情况下,这些子块表示不同特征)。例如,图4示出了数据包202,其具有头400、块402(划分为四个子块,包括遥测子块404、描述性策略子块406、路径约束子块408和服务功能子块410)、以及净荷412。在示例实施例中,所述遥测子块404包括来自设备的OAM数据,例如网络节点208/210在所述路径上的一个或多个网络节点208/210处收集的OAM数据,以进行健康检查。描述性策略子块406包括描述策略语言,将应用于指定网络设备理解的每个网络节点208/210中。路径约束子块408包括用于源路由的元数据,包括优选路径和/或显式路径命令,而服务功能子块410指定将在网络路径中的特定或所有节点中应用的业务功能。即使必须用当前IETF定义的分段路由/网络服务头/带内操作管理和维护(SR/NSH/IOAM)头来实现类似功能时,节点208/210仍通过这些子块的处理接收数据包202,均不产生额外的处理时间或额外的封装/解封装开销。。可能仅在路径中的特定节点上实现某些子块特征,并且可以使用块上的条件命令和元数据构造对其进行编码。然而,应理解的是,在下文结合图5描述的示例中,所有节点上可能都需要SDB中的所有子块功能。
图5示出了在示例实施例中划分为具有头502的子块500的数据包,头502描述如何在处理数据包头部时实现并行化。在该示例中,基于指示块类型(例如,可以或不可以并行处理的块类型)的子块头部502来传递全局参数。如图5所示,提供了一种机制,来指示每个子块的主包标记。例如,块402的每个子块500包括头502,所述头502指示相关联的子块500是否与另一子块存在任何相互依赖关系。如果否,则头指示相关联的子块500具有可与其他子块并行处理的TLV504。为此,可以定义独立的块定义以便更容易地识别子块500,所述子块500能够通过相应的核心处理资源进行并行处理。此外,用于封装后的数据包的TLV504可将处理后的全局参数存储在共享参数存储器506中,该共享参数存储器506可由相同或不同网络节点上的其他数据包处理设备访问,以便后续处理封装后的值。本领域技术人员将理解,处理外发数据包的核(核1,……,核N)可能产生比组合输入更少或更多的总字节,因此数据包长度的灵活性较好。
因此,在处理数据包时,使用基于子块头部502指示传递的共享全局参数506进行并行处理。独立的块定义和实际编码规则将在相应的标准中定义。
图6是用于在数据包头部(例如,包含在数据流212中的数据包202中的数据包头部402)中使用的示例条件命令块600的示意图。例如,命令块600可用于实现由Renwei Li等人于2018年9月7日提交的、发明名称为“具有条件命令的自运行数据包(Self-DrivingPackets With Conditional Commands)”的第16/124,770号相关美国专利申请中描述的类型的条件命令块。条件命令块600包含条件命令集头602、一个或多个条件命令字段604,并且可以包含全局参数集字段606。条件命令集头602是数据块,指示存在条件命令块600以及相关联的管理数据,例如,条件命令块600的长度、条件命令的数量和大小、参数集的数量和大小、错误检查数据、版本数据、与整个条件命令块600相关的标志等。条件命令字段604包含一个或多个条件命令(例如,1-n个,其中n为任意整数值)。由于条件命令的执行可能对顺序不敏感,条件命令字段604中包含的条件指令集可以以任何顺序进行编码,甚至可以并行进行编码。当存在时,全局参数集字段606包含与条件和命令都相关的参数和/或与多个条件命令相关的参数,具体取决于示例。
条件命令字段604包含条件集字段608和命令集字段610。条件集字段608包含与相应的条件命令字段604相关的一个或多个条件字段612(例如,1-n个,其中n为任意整数值)。可以以任何顺序包含此类条件字段612。命令集字段610包含与相应的条件命令字段604相关的一个或多个命令字段614(例如,1-n个,其中n为任意整数值)。相应地,当满足条件字段612时,调度执行相应的命令字段614。可以通过使用条件集字段608和命令集字段610中的多个条件(例如,取决于条件的条件)和/或命令(例如,取决于命令的命令)来实现复杂的条件和命令。
条件字段612包括条件头616、条件数据618,并且可选地,包括条件参数集620。条件头616可包含指示存在后续条件的数据、条件编号/长度、和/或应用于该组条件(例如,“和”与“或”,其中,默认应用“和”)的布尔运算。条件数据618包含指示条件字段612包含哪个条件的数据。这些条件可以包括比较,例如小于、大于、等于、前缀等。这些条件可涉及包含条件命令块600的数据包的属性、数据流的上下文、处理该数据包的网络设备的状态和/或其他网络节点条件。可以在没有附加信息的情况下检查某些条件。然而,当需要附加信息来为条件数据618中的条件提供上下文时,还包括条件参数集620。条件参数集620与相应条件数据618中的条件有关,并且可以编码为TLV。条件参数集620可包含参数集头622,其可包含指示存在后续参数集的数据、参数集长度、和/或相关标志。条件参数集620还可以包含一个或多个参数数据字段624的集合,所述一个或多个参数数据字段624包含指示相关参数的数据,所述相关参数与条件数据618所表示的相应条件有关。
例如,参数数据字段624可以设置为包括很多项,例如数据值、对数据包中携带的元数据/数据的引用和/或数据包头部字段、对与流相关的且在所述数据包外部的节点上保持状态的元数据的引用、对明确定义的数据项的引用,例如,接口状态参数等。因此,所述条件参数数据字段624可以包含指示值的数据以支持评估由所述条件数据618表示的条件。可以由条件数据618和条件参数集620表示的条件的示例可以包括一个比较,涉及数据包(例如,TTL字段的值、差异化服务编码点(differentiated services code point,DSCP)字段的值、下一跳前缀等)的头的属性、流上下文(例如,存在流缓存表项、对应流缓存表项中的数据字段的值(例如,数据包的数量))、路由器状态(例如,队列占用级别)、接口的利用率(例如数据包进入节点的入接口或假定出接口)、上层信息(例如,TCP连接的三向握手、TCP保活)、和/或节点条件(例如,节点地址,以便在特定节点执行命令)。
另一方面,命令字段614包括命令头626、命令数据628,可选地,包括命令参数集630。命令头626可包含指示存在后续命令的数据、命令编号/长度、和/或将要应用于该组命令的布尔运算。命令数据628包含指示命令字段614中包含哪个命令的数据。此类命令可以包括除了存储在所述节点的路由指令之外还执行的补充命令。此类命令还可以包括代替存储的路由命令而执行的覆盖命令。命令可指示节点应如何处理数据包(例如,丢弃、列队、缓冲、优先级排序),指示节点应该执行自定义功能(例如,分类),指示节点应该更新数据包内容(例如,标记、添加/更新块参数),指示节点应该更新流上下文(例如,写入数据项),和/或指示节点应该为数据包/流使用指定的下一跳。命令数据628中的命令还可以包括作用于节点的原语。
例如,命令可以指示节点分配资源(例如,参数包括请求的资源类型、资源限制/大小、持续时间)、作用于数据包字段(例如,交换头字段与元数据项)、和/或作用于数据包中携带的元数据(例如,添加元数据项、替换元数据项、递增元数据值)。可以在没有附加信息的情况下检查某些命令。然而,当需要附加信息来为命令数据628中的命令提供上下文时,还包括命令参数集630。命令参数集630可以与条件参数集620基本相似,但是可以包含指示值的数据,该值在所述命令数据628中为所述命令定义一组运行条件。
全局参数集字段606可以与条件参数集620和/或命令参数集630基本相似。然而,全局参数集字段606可以包含指示值的数据,该值定义针对条件命令字段604中包含的整个条件命令和/或所有条件命令的一组运行条件和/或支持使用与全局参数相关联的信息,例如,将数据存储在流上下文中。
例如,条件命令块600可用于指示处理数据包202的网络节点208/210修改数据流212的资源分配、修改数据流212的下一跳、和/或在条件发生时更新数据流212的流上下文。例如,可以基于数据包202的目的地址和本地路由表选择下一跳,该路由表通过各种控制平面协议编程。条件命令块600可用于修改此类选择的下一跳。作为另一示例,条件命令块600可用于指示处理数据包202的网络节点208/210修改数据包202中的数据、修改数据包202的下一跳、修改数据包202的优先级、丢弃数据包202、缓存数据包202、或者在条件发生时修改数据包202中的元数据。作为再一示例,条件命令块600可用于,在通过从所述数据包202中解析数据、检查数据流212的流上下文、检查网络设备的状态、比较数据项、和/或校验网络设备的身份确定满足条件时,指示处理数据包202的网络节点208/210执行此类命令。
如上所述,还需要向中间网络节点210提供有关数据包202的处理的指导。在示例实施例中,大数据包协议(Big Packet Protocol,BPP)是基于将元信息插入数据包202的思想,以便指导中间网络节点210如何处理这些数据包202。这是通过在BPP块上附加指令,以及关于数据包202的元数据和数据包202所属数据流212来完成的。所述指令指导应如何处理所述数据包202或必须为数据流212分配哪些资源。BPP网络设备将根据这些命令和元数据执行操作以处理数据包202,而非依赖于可能导致最低限度处理数据包202的网络设备的内置逻辑来处理,从而覆盖设备上部署的任何“常规”数据包处理逻辑。例如,可以使用命令来确定以下条件:何时丢弃数据包202、使用哪个队列、何时交换标签、何时分配资源或何时测量服务等级并将其与服务等级目标(service level objective,SLO)进行比较。这种BPP包的结构如图7中所示。
图7是可以用于实现条件命令块的示例大数据包协议(Big Packet Protocol,BPP)头700的示意图,该条件命令块例如是在数据流212的数据包202中包含的数据包头部中使用的条件命令块600。例如,BPP头700可以用作条件命令块600的具体实现。应当注意的是,BPP头700的字段会由于标准化而发生变化,并且,示出了所公开的字段结构以说明本文中包括的概念。因此,BPP头700的字段不应视为限制。
如图7所示,BPP包700包括以太网帧702和BPP头704,BPP头704包括BPP包700的主机协议的伪头706,该主机协议可以与NSH、Geneve等不同主机协议集成。伪头706指向BPP头704的一个或多个BPP块708作为下一协议。可以利用其他替代办法在现有协议中提供同样的信息。BPP包700还可以包括可变大小的净荷710。
如图7进一步所示,BPP块708还包括BPP块头部712、命令块714和元数据块716。在示例实施例中,BPP块头部712可用于实现条件命令集,所述条件命令集尤其支持综合错误处理。例如,BPP块头部712可包括版本字段718,其包含BPP块头部712的版本信息、指示块(例如,16、32、128或更多个八位组,具体取决于用例)的总长度(例如,以比特为单位)的长度字段720、以及指示在错误发生时要采取的动作的错误动作字段722。此类动作可以包括丢弃数据包的动作、忽略所有条件命令并返回到常规处理的动作、忽略错误已发生这一事实并且当做无事发生试图继续执行所有命令的动作等。
BPP块头部712还可以包括先验错误字段724,其可包含指示沿路径在先前节点发生的先前错误的数据。BPP块头部712还可以包括错误冗长字段726、定时约束字段728、保留位(730)、元数据偏移字段732(指示BPP块头部712与元数据编码开端之间的比特数)、校验和字段734、以及指向下一个头部/BPP块736的指针。
如图8所示,BPP块头部602还包括具有命令头802、条件集804和动作集806的BPP命令800,可用于分别实现条件命令字段604、条件头616/命令头626、条件集字段608和命令集字段610。BPP块头部602还可以包括一个或多个可以实现参数数据字段624的参数。
如图8所示,命令头802可包含命令长度字段808,指示BPP命令800中的条件命令和/或参数集的长度。命令头802还可包含各种标志,其包含与BPP命令800相关的其他管理数据。例如,可以使用串行/并行标志810来指示BPP命令800中的条件命令可以与其他命令并行处理还是必须串行处理。
条件集804可包含条件集长度字段812,指示条件的长度和/或数量。条件集804还可包含“或/和”字段814,以指示是否应该满足所有条件以启动命令(和)或者是否应该在满足任何条件时启动命令(或)。条件集804也包含一个或多个条件816。条件816可包括长度字段818,以比特为单位指示条件的长度。条件816还可以包括非字段820,可指示默认布尔条件。条件816还可以包括各种标志822以进一步阐明/修改条件。例如,标志822可以通过允许专有命令和功能以及由操作框架控制的部署来提供动态扩展性。条件816还可以包括条件类型字段824以指示将要采用的条件。条件816还可以包括一个或多个参数826以描述条件。参数826可以包括的参数类别字段828、长度字段830和值字段832,以TLV格式分别表示参数的类别、参数的长度和参数的值。应当注意的是,本文公开的条件集804结构以TLV格式维护,以便允许在因特网工程任务组(Internet Engineering Task Force,IETF)标准化下与各种元数据参数结合使用,例如服务功能链(Service Function Chaining,SFC)参数、网络服务头(Network Service Header,NSH)参数、IP性能测量(IP Performance Measurement,IPPM)参数、带内操作管理维护(In-situ Operations,Administration,and Maintenance,IOAM)参数等。
动作集806可包含动作集长度字段834,指示命令的长度和/或数量。动作集806还可包含一个或多个动作836(例如,命令),其可以包含长度字段838以指示动作836的长度。动作836还可包含各种标志840以进一步阐明/修改命令。动作836还可包含指示命令的动作类型字段842。动作836还可以包括一个或多个参数844以描述命令。
在示例实施例中,标志840可以包括串行标志846,所述串行标志846例如基于所述命令是否依赖于例如来自另一命令的数据来定义是否可以串行或并行执行动作或命令。状态扩展可以提供非阻塞选项,包括提供更多关于命令性质的数据。数据包转发后可能会发生更新,任何错误都可以在状态块中指示。
因此,BPP命令800包括命令头802(包括命令的长度(可从若干固定大小的选择中选择))和标志846,以指示是否需要串行化所述命令或是否需要并行执行所述命令与其先前命令(如果有的话)。BPP中的动作包括一个或多个BPP动作原语以及任何参数的集合。与条件一样,为了便于扩展,动作类型由两个字段组合表示,即,A型(动作类型)842和扩展(X-)标志840。每个动作都带有标志846,其指示是否需要在命令中串行化,或者是否可以与先前的动作并行执行。
可以并行处理的条件命令的示例包括旨在更新节点上的状态块/缓存的条件命令。例如,如果当前出口队列长度大于某个值,则计数器加1。第二条件命令可以旨在作出转发决策。例如,如果数据包长度小于给定的值,则使用队列1(否则,使用队列2)。这些条件命令可以并行处理。
另一方面,应该串行化的条件命令的示例包括一个旨在确定是否丢弃数据包的条件命令。例如,如果跳数大于给定的值,则丢弃数据包。如果第二个条件命令旨在例如通过增加计数器更新状态块/缓存,则即使丢弃数据包,此处的条件也为“真”。因此,这些命令应该被串行处理。
作为命令内的并行操作示例,条件命令可以指定如果跳数大于某个值,则{动作1:递增状态块/缓存中的丢弃计数器;动作2:丢弃数据包/转发到空队列}。
作为使用IPv6和IOAM的分段路由的示例,当一个条件命令旨在确定必须将数据包发送到的下一个分段,而第二个条件命令旨在从节点收集特定OAM数据时,可以进行并行处理。
作为叠加网络的示例,其中需要对Geneve头、NSH和IOAM进行串行和并行处理,一个条件命令可以旨在从Geneve头(具有串行位集)中确定叠加虚拟网络标识符(virtualnetwork identifier,VNI)ID,而第二个条件命令可以旨在将特定服务应用于叠加网络中,正如在VNI的NSH头中指定的(对于此命令,未设置串行位)。第三条件命令还可以针对上述VNI从节点收集特定OAM数据(对于此命令,串行位也设置为0)。在此示例中,第二和第三命令可以并行执行。通过尽可能利用硬件(NPU、GPU、密码加速器和3D存储器等)的能力来并行处理传入的数据子块,这种方法使得并行化能够在数据流之间和数据包内进行。
在又一个示例中,BPP用于逐包决策和逐流决策。服务提供商通常需要使用某些基于自治系统(Autonomous System,AS)的策略同时还要利用网络流输出进行监控。然而,网络流输出和处理通常是基于缓存过期策略分别进行的,但是网络流输出也可以由命令控制和触发。在使用本文描述的技术的示例实施例中,同时并行处理这两个命令,从而并行产生两个结果。
图9是用于实现数据包携带的条件命令的示例方法900的流程图。例如,方法900可以由充当路由流212和数据包202的边缘节点208或内部节点210(图2)的网络设备实现。因此,方法900可用于通过读取包含条件命令块(例如,条件命令块600)的数据包头部来执行条件命令。在某些情况下,方法900还可以通过BPP进行通信,从而在BPP块头部602上操作。此外,根据结合图5描述的子块500的特征,可以检查所述子块500的头502,以确定所述头是否包含可以并行处理而不是串行处理的命令。
在框902处,网络节点208/210可以接收具有包括条件命令的数据包202的数据流212。在904处,检查头502以确定数据包202的当前子块是否与另一子块有任何相互依赖关系(即,设置了头502的串行位)。如果有,则在906处串行处理子块中的命令。另一方面,如果没有设置头502的串行位,则在908处并行处理子块中的命令。在任一情况下,网络节点208/210执行数据包处理,并且可以确定候选动作,例如,下一跳队列更新、丢弃动作等。此类候选动作包括网络节点208/210在不存在条件命令的情况下将采取的路由动作。因此,此类候选动作可以包括将要应用的数据包处理动作,除非条件命令覆盖了此类动作并且导致了不同的结果。
在框910处,网络节点208/210确定数据包202中是否存在未处理的条件命令。如果否,则网络节点208/210可前进至框916。如果数据包202中存在未处理的条件命令,则所述节点前进到框912。在框912处,网络节点208/210从条件命令中获取条件和关联命令,并前进到框914。在框914处,网络节点208/210确定是否满足条件。如果不满足条件,则网络节点208/10不改变候选动作,并返回到框910以检查是否有其他未处理的条件命令。如果满足所述条件,则网络节点208/210前进到框916。
在框916处,网络节点208/210收集命令并视情况覆盖/补充候选动作。因此,在框914处,网络节点208/210可确定满足条件。然后,基于确定满足条件,在框918处,网络节点208/210可以执行相应命令以更改对数据流212的处理或更改对数据包202的处理。如果在框914处不满足条件,则根据候选动作(例如,根据通用路由协议)基于数据包头部中的信息处理数据包202。
许多条件命令在影响方面可能是互不相关的(例如,一个更新流上下文、另一个决策数据包优先级等)。头端节点和/或端点节点可以选择条件命令,以避免可能导致不希望的非确定性行为的冲突命令。
此外,虽然方法900描绘了可以针对到达的任何数据包202在网络节点208/210上执行的基本处理流程,但是仍可能对该基本处理流程进行各种优化。例如,该处理流程可以针对执行命令的顺序进行优化。例如,可以立即执行补充命令。此外,可以对条件命令的执行顺序进行重新排序,以最大限度地并行执行命令。
作为特定示例,数据包202可以包含指示在出接口处遇到拥塞时应该如何处理数据包202的命令。应用可能会判断数据包202在此类情况下不是非常重要,可以将其丢弃。在这种情况下,条件可以是:预期出接口上的利用率级别高于指定阈值。那么,相应的动作/命令可以是丢弃该数据包202,参数可以包含条件的阈值级别。该功能以及许多其他功能可以通过使用条件命令来创建。
图10是示例实施例中用于串行或并行执行从网络数据包(例如,作为数据流212的一部分的数据包202)中获取的条件命令的示例网络设备1000的示意图。例如,网络设备1000可以实现网络域204中的边缘节点208和/或内部节点210。此外,网络设备1000可用于实施方法900以及本文公开的其他方法/机制。例如,网络设备1000可以通过包含条件命令块600的数据包头部传输数据包202。此类头可以在BPP头712中实现。
因此,网络设备1000可用于实施或支持本文描述的方案/特征/方法。例如,本发明中的特征/方法可以使用硬件、固件和/或安装在硬件上运行的软件来实现。本领域技术人员将认识到,术语“网络设备”包括各种设备,其中网络设备1000仅是一个示例。包括网络设备1000是为了讨论清楚起见,但是绝不意味着将本发明的应用限制于特定网络设备实施例或网络设备实施例的类别。
网络设备1000可以是通过网络传送电信号和/或光信号的设备,例如交换机、路由器、网桥、网关等。如图10所示,网络设备1000可以包括收发器(Tx/Rx)1010,收发器1010可以是发射器、接收器或其组合。Tx/Rx1010可耦合到多个下游端口1020(例如,下游接口)用于发送和/或接收来自其他节点的帧,以及耦合到多个上游端口1050(例如,上游接口)分别用于发送和/或接收来自其他节点的帧。处理器1030可耦合到Tx/Rx1010以处理数据信号和/或确定要将数据信号发送到哪些网络节点208/210。处理器1030可包括一个或多个多核处理器和/或存储器设备1040,其可用作数据存储、缓冲器等。处理器1030可以实现为通用处理器,或者可以是一个或多个图形处理单元(Graphics Processing Unit,GPU)、网络处理器(Network Processor Unit,NPU)、专用集成电路(application-specific integratedcircuit,ASIC)和/或数字信号处理器(digital signal processor,DSP)的一部分。网络设备1000可包括自运行数据包模块1032,其可用于接收和处理如本文所述的数据包202。然后,自运行数据包模块1032可以从数据包中获取条件命令,并基于数据包头部数据、网络设备1000状态和/或基于条件命令中的关联参数确定是否满足条件命令中的条件。在确定条件满足时,自运行数据包模块1032可以例如,基于存储在所述条件命令中的相应参数,执行来自条件命令的命令。此类命令可导致自运行数据包模块1032修改数据包数据、流上下文、路由命令、网络设备1000,和/或对数据包202和/或对应的数据流212执行其他动作。根据本文描述的技术,可以基于针对每个命令设置的串行位,串行或并行处理数据包,如上所述。
自运行数据包模块1032可以在通用处理器、现场可编程门阵列(fieldprogrammable gate array,FPGA)、ASIC(固定/可编程)、网络处理器单元(networkprocessor unit,NPU)、DSP、微控制器等中实现。在替代性实施例中,自运行数据包模块1032可以在处理器1030中实现,作为存储在存储器设备1040(例如,作为计算机程序产品)中的指令,其可以由处理器1030执行,和/或部分地在处理器1030中实现、部分地在存储器设备1040中实现。根据实施例,下游端口1020和/或上游端口1050可以包含无线、电气和/或光学发送和/或接收组件。
尽管示例性计算设备被图示和描述为网络节点208/210,但计算设备在不同的实施例中可以具有不同形式。例如,计算设备可以是智能手机、平板电脑、智能手表或其他计算设备,其包括结合图10所示和描述的相同或类似的元件。智能手机、平板电脑和智能手表等设备通常统称为移动设备或用户设备。此外,尽管将各种数据存储元件作为网络节点1000的一部分进行说明,但是存储器还可以或替代地包括通过网络(例如,互联网或基于服务器的存储器)访问的基于云的存储器。
存储器1040可以包括易失性存储器和/或非易失性存储器。网络节点1000可以包括或可以访问计算环境,计算环境包括各种计算机可读介质,例如,易失性存储器和非易失性存储器、可移动存储设备和不可移动存储设备。计算机存储器包括随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)或电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、闪存或其他存储器技术、只读光盘(compact disc read-only memory,CD ROM)、数字多功能光盘(digitalversatile disc,DVD)或其他光盘存储器、磁磁带、磁带、磁盘存储设备或其他磁性存储设备、或任何其他能存储计算机可读指令的介质。
网络节点1000可以包括或可以访问包括输入接口、输出接口和通信接口的计算环境。输出接口可以包括显示设备,例如触摸屏,其也可以用作输入设备。所述输入接口可以包括触摸屏、触摸板、鼠标、键盘、摄像头、一个或多个设备专用按钮、集成在所述网络节点1000内或通过有线或无线数据连接耦合到所述网络节点1000的一个或多个传感器以及其他输入设备中的一个或多个。所述网络节点1000可以使用通信连接在网络环境中操作,以连接到一个或多个远程计算机,例如数据库服务器。远程计算机可以包括个人计算机(personal computer,PC)、服务器、路由器、网络PC、对端设备或其他通用DFD网络交换机等。通信连接可以包括局域网(local area network,LAN)、广域网(wide area network,WAN)、蜂窝网、Wi-Fi、蓝牙或其他网络。
存储在计算机可读介质上的计算机可读指令可由网络节点1000的处理器1030(例如,自运行数据包模块1032)执行。在一些实施例中,自运行数据包模块1032包括软件,当软件由处理器1030执行时,自运行数据包模块1032根据本文描述的条件命令的串行和/或并行处理执行网络切换操作。硬盘驱动器、CD-ROM和RAM是包括非瞬时性计算机可读介质(例如存储设备)的物品的一些示例。由于认为载波过于短暂,因此术语计算机可读介质和存储设备不包括载波。存储器还可以包括网络存储器,例如存储区域网络(storage areanetwork,SAN)。
尽管上文详细描述了几个实施例,但其他修改也是可能的。例如,在附图中描述的逻辑流程不需要按照所示特定顺序或连续顺序来实现理想的结果。可以提供其他步骤,或者可以从所描述的流程中去除步骤,并且可以将其他组件添加到所描述的系统中或从所描述的系统中移除。其他实施例可以在所附权利要求书的范围内。
Claims (20)
1.一种用于在网络中处理数据包的计算机实现的方法,其特征在于,包括:
在网络设备中的接收器处接收包括数据包的数据流;
使用一个或多个处理器从所述接收到的数据包的自描述块头部中识别多个子块,其中子块包含一个或多个待执行命令;
使用所述一个或多个处理器检查以下各项中的至少一项:(1)所述子块头部上的串行化标志,以确定是否可以将所述子块中的命令与其他子块中的其他命令并行处理;(2)所述子块中的所述命令中的标志,以确定是否可以将所述命令与所述子块中的其他命令并行处理;
响应于表明可以将所述子块中的所述命令与所述子块中的其他命令或其他子块中的其他命令并行处理的检查,所述一个或多个处理器将所述命令和所述其他命令分配到多个处理资源进行处理;
使用所述一个或多个处理器通过所述多个处理资源并行执行所述命令和所述其他命令。
2.根据权利要求1所述的方法,其特征在于,所述一个或多个命令包括具有一个或多个命令参数的条件命令,所述命令参数包含指示值的数据,所述值为所述条件命令定义一组运行条件。
3.根据前述任一权利要求所述的方法,其特征在于,条件命令包括命令和执行所述命令必须满足的至少一个条件。
4.根据前述任一权利要求所述的方法,其特征在于,所述条件命令指示所述处理资源在所述至少一个条件发生时,执行以下操作中的至少一项:修改数据包的数据流的资源分配、修改为所述数据包的所述数据流选择的下一跳、以及更新所述数据包的所述数据流的流上下文。
5.根据前述任一权利要求所述的方法,其特征在于,所述条件命令指示所述处理资源在所述条件发生时,执行以下操作中的至少一项:修改所述数据包中的数据、修改为所述数据包选择的下一跳、修改所述数据包的优先级、丢弃所述数据包、缓存所述数据包、以及修改所述数据包中的元数据。
6.根据前述任一权利要求所述的方法,其特征在于,所述子块包括用于所述一个或多个命令处理的元数据。
7.根据前述任一权利要求所述的方法,其特征在于,所述元数据包括至少一个全局参数,所述全局参数的值支持评估所述接收到的数据包头部中的所有条件命令。
8.根据前述权利要求中任一项所述的方法,其特征在于,所述子块包括命令头,后跟条件和至少一组动作。
9.根据前述任一权利要求所述的方法,其特征在于,所述子块包括至少一个类型长度值(type-length-value,TLV)参数,所述TLV参数包括条件、元数据、后跟命令的条件、以及所述子块特有的参数集中的至少一个。
10.根据前述任一权利要求所述的方法,其特征在于,所述TLV参数包括所述处理资源基于所述子块头部中的指示传递的一组共享参数。
11.一种用于在网络中处理数据包的设备,其特征在于,包括:
接收器,接收数据包;
非瞬时性存储器,包括指令;
一个或多个处理器,与所述存储器通信,其中所述一个或多个处理器执行所述指令以:
在所述接收器处接收包括数据包的数据流;
从所述接收到的数据包的自描述块头部中识别多个子块,其中子块包含一个或多个待执行命令;
检查以下各项中的至少一项:(1)所述子块头部上的串行化标志,以确定是否可以将所述子块中的命令与其他子块中的其他命令并行处理;(2)所述子块中的所述命令中的标志,以确定是否可以将所述命令与所述子块中的其他命令并行处理;
响应于表明可以将所述子块中的所述命令与所述子块中的其他命令或其他子块中的其他命令并行处理的检查,将所述命令和所述其他命令分配到所述一个或多个处理器的多个处理资源进行处理;
通过所述多个处理资源并行执行所述命令和所述其他命令。
12.根据权利要求11所述的设备,其特征在于,所述一个或多个命令包括具有一个或多个命令参数的条件命令,所述命令参数包含指示值的数据,所述值为所述条件命令定义一组运行条件。
13.根据权利要求11或12所述的设备,其特征在于,条件命令包括命令和执行所述命令必须满足的至少一个条件。
14.根据权利要求11至13中任一项所述的设备,其特征在于,所述条件命令指示所述处理资源在所述至少一个条件发生时,执行以下操作中的至少一项:修改数据包的数据流的资源分配、修改为所述数据包的所述数据流选择的下一跳、以及更新所述数据包的所述数据流的流上下文。
15.根据权利要求11至14中任一项所述的设备,其特征在于,所述条件命令指示所述处理资源在所述条件发生时,执行以下操作中的至少一项:修改所述数据包中的数据、修改为所述数据包选择的下一跳、修改所述数据包的优先级、丢弃所述数据包、缓存所述数据包、以及修改所述数据包中的元数据。
16.根据权利要求11至15中任一项所述的设备,其特征在于,所述子块包括用于所述一个或多个命令处理的元数据。
17.根据权利要求11至16中任一项所述的设备,其特征在于,所述元数据包括至少一个全局参数,所述全局参数的值支持评估所述接收到的数据包头部中的所有条件命令。
18.根据权利要求11至17中任一项所述的设备,其特征在于,所述子块包括至少一个类型长度值(type-length-value,TLV)参数,所述TLV参数包括条件、元数据、后跟命令的条件、以及所述子块特有的参数集中的至少一个。
19.根据权利要求11至18中任一项所述的设备,其特征在于,所述TLV参数包括所述处理资源基于所述子块头部中的指示传递的一组共享参数。
20.一种非瞬时性计算机可读介质,存储用于处理网络中的数据包的计算机指令,其特征在于,当一个或多个处理器执行所述计算机指令时,使得所述一个或多个处理器:
从在网络设备的接收器处接收到的数据流中的数据包的自描述块头部中识别多个子块,其中所述子块包含一个或多个待执行命令;
检查以下各项中的至少一项:(1)所述子块头部上的串行化标志,以确定是否可以将所述子块中的命令与其他子块中的其他命令并行处理;(2)所述子块中的所述命令中的标志,以确定是否可以将所述命令与所述子块中的其他命令并行处理;
响应于表明可以将所述子块中的所述命令与所述子块中的其他命令或其他子块中的其他命令并行处理的检查,将所述命令和所述其他命令分配到所述一个或多个处理器的多个处理资源进行并行处理。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762565221P | 2017-09-29 | 2017-09-29 | |
US201762565211P | 2017-09-29 | 2017-09-29 | |
US62/565,221 | 2017-09-29 | ||
US62/565,211 | 2017-09-29 | ||
US16/124,770 | 2018-09-07 | ||
US16/124,770 US10972397B2 (en) | 2017-09-29 | 2018-09-07 | Self-driving packets with conditional commands |
PCT/US2018/053500 WO2019067945A1 (en) | 2017-09-29 | 2018-09-28 | SELF-DESCRIPTION PACKET HEADERS FOR SIMULTANEOUS TREATMENT PURPOSES |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111543034A true CN111543034A (zh) | 2020-08-14 |
CN111543034B CN111543034B (zh) | 2021-12-10 |
Family
ID=65903248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880063550.4A Active CN111543034B (zh) | 2017-09-29 | 2018-09-28 | 用于并行处理的自描述数据包头部 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP3685552B1 (zh) |
CN (1) | CN111543034B (zh) |
WO (1) | WO2019067945A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10972397B2 (en) | 2017-09-29 | 2021-04-06 | Futurewei Technologies, Inc. | Self-driving packets with conditional commands |
CN111091697B (zh) * | 2019-11-29 | 2021-08-13 | 湖北航天飞行器研究所 | 遥测数据的处理系统 |
WO2021108071A1 (en) * | 2020-05-06 | 2021-06-03 | Futurewei Technologies, Inc. | Data packet format to communicate across different networks |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1085711A1 (en) * | 1999-09-20 | 2001-03-21 | Christian Prof. Dr. Tschudin | Method and apparatus for processing and forwarding data packets |
CN102158409A (zh) * | 2011-04-02 | 2011-08-17 | 杭州华三通信技术有限公司 | 一种ip报文转发控制方法及其设备 |
US20140280717A1 (en) * | 2013-03-13 | 2014-09-18 | Cisco Technology, Inc. | Framework for Dynamically Programmed Network Packet Processing |
EP2985971A1 (en) * | 2014-08-11 | 2016-02-17 | Palo Alto Research Center, Incorporated | Reputation-based instruction processing over an information centric network |
WO2016069182A1 (en) * | 2014-10-29 | 2016-05-06 | Qualcomm Incorporated | Methods and apparatus for multiple user communications in wireless networks |
CN107079056A (zh) * | 2014-09-19 | 2017-08-18 | Netapp股份有限公司 | 在存储集群系统中协调命令的并行执行和取消的技术 |
-
2018
- 2018-09-28 CN CN201880063550.4A patent/CN111543034B/zh active Active
- 2018-09-28 EP EP18788973.8A patent/EP3685552B1/en active Active
- 2018-09-28 WO PCT/US2018/053500 patent/WO2019067945A1/en unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1085711A1 (en) * | 1999-09-20 | 2001-03-21 | Christian Prof. Dr. Tschudin | Method and apparatus for processing and forwarding data packets |
CN102158409A (zh) * | 2011-04-02 | 2011-08-17 | 杭州华三通信技术有限公司 | 一种ip报文转发控制方法及其设备 |
US20140280717A1 (en) * | 2013-03-13 | 2014-09-18 | Cisco Technology, Inc. | Framework for Dynamically Programmed Network Packet Processing |
EP2985971A1 (en) * | 2014-08-11 | 2016-02-17 | Palo Alto Research Center, Incorporated | Reputation-based instruction processing over an information centric network |
CN107079056A (zh) * | 2014-09-19 | 2017-08-18 | Netapp股份有限公司 | 在存储集群系统中协调命令的并行执行和取消的技术 |
WO2016069182A1 (en) * | 2014-10-29 | 2016-05-06 | Qualcomm Incorporated | Methods and apparatus for multiple user communications in wireless networks |
Also Published As
Publication number | Publication date |
---|---|
EP3685552B1 (en) | 2023-11-29 |
EP3685552A1 (en) | 2020-07-29 |
WO2019067945A1 (en) | 2019-04-04 |
CN111543034B (zh) | 2021-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11533263B2 (en) | Self-describing packet headers for concurrent processing | |
US11374848B2 (en) | Explicit routing with network function encoding | |
KR102620026B1 (ko) | 패킷 처리 방법, 관련 기기 및 컴퓨터 저장 매체 | |
CN111771358B (zh) | 包可编程状态集 | |
US9407560B2 (en) | Software defined network-based load balancing for physical and virtual networks | |
US10389627B2 (en) | State-dependent data forwarding | |
CN111543034B (zh) | 用于并行处理的自描述数据包头部 | |
US20220255867A1 (en) | Enabling quality of service (qos) in information centric networking (icn) | |
US10033619B2 (en) | Data processing method and apparatus for OpenFlow network | |
US20140006604A1 (en) | Resilient Video Encoding Control via Explicit Network Indication | |
CN113949667A (zh) | 分段网络中的报文处理方法及节点设备 | |
CN106533954A (zh) | 一种报文调度方法和装置 | |
CN113055293A (zh) | 软件定义广域网中的选路方法及装置、通信系统 | |
CN109951397B (zh) | 报文处理的方法和设备 | |
US8817638B2 (en) | Method and system for network communications utilizing shared scalable resources |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |