CN111771358B - 包可编程状态集 - Google Patents
包可编程状态集 Download PDFInfo
- Publication number
- CN111771358B CN111771358B CN201980015295.0A CN201980015295A CN111771358B CN 111771358 B CN111771358 B CN 111771358B CN 201980015295 A CN201980015295 A CN 201980015295A CN 111771358 B CN111771358 B CN 111771358B
- Authority
- CN
- China
- Prior art keywords
- state set
- command
- states
- packet
- state
- 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.)
- Active
Links
- 230000004044 response Effects 0.000 claims abstract description 34
- 238000012545 processing Methods 0.000 claims abstract description 30
- 238000000034 method Methods 0.000 claims description 86
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012360 testing method Methods 0.000 claims description 4
- 230000009471 action Effects 0.000 description 41
- 238000003860 storage Methods 0.000 description 37
- 238000004891 communication Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 13
- 230000000875 corresponding effect Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 238000005259 measurement Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 230000000153 supplemental effect Effects 0.000 description 2
- 206010024796 Logorrhoea Diseases 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
-
- 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/74—Address processing for routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种网络设备,包括存储状态集的状态集存储器,该状态集保留与通过网络设备的包流相关的状态信息,并且上述网络设备可以与该状态集交互以控制对上述数据包的流执行的处理。上述网络设备实现一组指令,该指令解释上述数据包中的命令以管理上述状态集并与该状态集交互。通过从标识包流的信息导出的状态关键字来组织状态集存储器中的状态集。响应于包中的命令,网络设备可以从状态集存储器创建、读取、写入、或删除状态集。上述状态集存储器包括多个状态集,每个状态集包括多个字段。网络设备可以访问状态集以使用网络数据面中的信息来控制/监测包流,而无需从网络控制面接收控制信息。
Description
相关申请的交叉引用
本申请要求由Alexander Clemm等人于2018年3月1日提交的发明名称为“包可编程状态集”、申请号为No.62/637,111的美国临时专利申请的优先权,其全部内容以引入的方式并入本文。
技术领域
本申请涉及计算机网络,尤其涉及使用自驱动包来访问存储在网络设备中的状态集(statelet)以监测和控制网络状态的系统和方法。
背景技术
许多网络应用涉及“状态”的概念,并且一些应用可以获益于维护网络中的流的某些状态或上下文的能力。例如,具有高性能需求的应用可能希望预留网络资源——这些“预留”构成了为其进行预留的通信流的网络状态。相同的应用可以针对给定的流建立服务等级目标。当端到端的服务等级目标可以被分解为组分服务等级目标(包括应用于单个跳(hop)的组分服务等级目标)时,分解后的目标上的数据可以构成网络状态。或者,可以由外部系统来维护端到端服务等级目标和组分服务等级目标。应用可能还希望测量和验证生产流的服务等级,这可以使用关于先前包的上下文和在网络中的设备上观察的自定义流统计。
如今,解决这些特征需要定制的协议,例如资源预留协议(resource reservationprotocol,RSVP)(用于管理预留)、双向主动测量协议(two-way active measurementprotocol,TWAMP)(用于进行主动测量,而不是被动测量)、或互联网协议流信息输出(internet protocol flow information export,Netflow/IPFIX)(用于收集某些流统计)。向这些协议添加新特征可能涉及冗长的标准化和产品周期。此外,这些协议在同时具有数据面和控制面的网络的控制面中实现。
具有条件命令的自驱动包为控制传统包网络中的包流提供了替代方案。这样的自驱动包对如何处理包提供了更好的控制。该控制可以在应用和网络边缘的网关中实现。
发明内容
以下示例描述了用于使用网络设备中跨网络分布的数据流的状态集来控制和/或监测网络中的数据流的高效机制、技术、和/或概念。状态集可以包括特定数据流的数据,诸如但不限于新鲜度信息(例如开始时间)、源地址、目的地址、发送的包的数量、在流中发送的数据量、和/或与数据流相关的其他统计信息。数据流的包包括与数据流的状态集数据交互的命令。这些命令可以是有条件的,并且可以用于收集数据流的统计数据和/或控制属于数据流的包的路由。因此,数据流的监测和控制不限于边缘节点,而是可以在网络中的任何节点发生,并且可以独立于中央控制节点而发生。
这些示例包含在独立权利要求的特征中。其他实施例在从属权利要求书、说明书、以及附图中显而易见。
实施例包括具有状态集存储器和处理器的网络设备,该处理器被配置为执行数据流的包头中的命令。这些命令访问来自网络设备的状态集存储器的数据流的状态集,以便控制数据流。
根据第一方面,一种方法,用于在包括状态集存储器的网络设备中处理数据流,该方法解析数据流的第一包,以从第一包的第一报头中提取第一命令和标识数据流的流信息。该方法根据提取的流信息生成第一状态集关键字,并执行第一命令以访问与上述第一状态集关键字相关的第一状态集。该第一状态集存储在网络设备的状态集存储器中。
在根据第一方面的方法的第一实施方式中,该方法在网络设备的状态集存储器中创建第一状态集。该第一状态集具有包括上述第一状态集关键字的关键字字段。该方法将第一新鲜度值存储在第一状态集的新鲜度字段中。上述第一新鲜度值指示创建第一状态集的时间。
在根据第一方面的方法的第二实施方式中,该方法解析数据流的第二包,以从第二包的第二报头中提取第二命令和标识数据流的流信息。该方法根据从第二包的第二报头中提取的流信息生成第一状态集关键字。响应于上述第二命令,该方法访问具有第一状态集关键字的第一状态集。该方法访问上述第一状态集以执行以下操作中至少之一:从第一状态集读取字段值,将字段值写入第一状态集,修改第一状态集的字段中的值,向第一状态集中的列表添加值,或从第一状态集中的列表中去除值。该方法将第二新鲜度值存储在第一状态集的新鲜度字段中,该第二新鲜度值指示响应于第二命令访问第一状态集的时间。
在根据第一方面的方法的第三实施方式中,该方法响应于上述第二命令访问上述第一状态集,以从上述第一状态集读取字段值,并且响应于从第一状态集读取的字段值控制网络设备对第二包的处理。
在根据第一方面的方法的第四实施方式中,上述状态集存储器包括多个状态集。该方法将多个状态集中的每个状态集的新鲜度字段中的相应新鲜度值与当前时间值进行比较。在当前时间值与多个状态集中的一个状态集的新鲜度字段中的新鲜度值之间的差大于阈值时,该方法回收由该一个状态集占用的任何内存。
在根据第一方面的方法的第五实施方式中,该方法响应于第一包的第一报头中的元数据,将数据值写入第一状态集的字段中。
在根据第一方面的方法的第六实施方式中,该方法增大第一状态集的字段中的值。
在根据第一方面的方法的第七实施方式中,该方法从网络设备的状态集存储器中删除第一状态集。
在根据第一方面的方法的第八实施方式中,该方法组合来自流信息的N个值以生成上述第一状态集关键字。在执行第一命令时,该方法响应于第一状态集关键字选择第一状态集,该第一状态集包括第一状态集关键字中的N个值中的M个值,其中M小于N。
在根据第一方面的方法的第九实施方式中,上述第一命令包括状态集关键字掩码,并且该方法响应于该状态集关键字掩码选择用于与状态集关键字匹配的M个值。
在根据第一方面的方法的第十实施方式中,解析第一包包括从第一包的第一报头中提取第一命令和第二命令。该方法执行第一命令(包括测试条件)以产生结果。然后,该方法响应于由第一命令产生的结果有条件地执行第二命令。
根据第二方面,一种网络设备中的装置,包括具有状态集存储器和计算机程序指令的存储器。装置中的处理器耦合到存储器。该计算机程序指令使处理器解析数据流的第一包,以从第一包的第一报头中提取第一命令和标识数据流的流信息。上述指令还将处理器配置为根据提取的流信息生成第一状态集关键字,并执行第一命令以访问与第一状态集关键字相关的第一状态集,该第一状态集存储在状态集存储器中。
在根据第二方面的装置的第一实施方式中,处理器在网络设备的状态集存储器中创建第一状态集。该第一状态集具有包括第一状态集关键字的关键字字段。该装置将第一新鲜度值存储在第一状态集的新鲜度字段中,该第一新鲜度值指示创建第一状态集的时间。
在根据第二方面的装置的第二实施方式中,处理器解析数据流的第二包以从第二包的第二报头中提取第二命令并提取标识数据流的流信息。处理器根据从第二报头提取的流信息生成第一状态集关键字。处理器访问第一状态集并执行第二命令。该第二命令使处理器执行以下操作中至少之一:从第一状态集读取字段值,将字段值写入第一状态集,修改第一状态集的字段中的值,向第一状态集中的列表添加值,或从第一状态集中的列表中去除值。处理器将第二新鲜度值存储在第一状态集的新鲜度字段中。上述第二新鲜度值指示响应于第二命令访问第一状态集的时间。
在根据第二方面的装置的第三实施方式中,处理器响应于第一包的报头中的元数据将数据值写入第一状态集的字段中。
在根据第二方面的装置的第四实施方式中,处理器从网络设备的状态集存储器中删除第一状态集。
在根据第二方面的装置的第五实施方式中,处理器组合来自流信息的N个值以生成第一状态集关键字。然后,处理器响应于状态集的状态集关键字选择第一状态集,该状态集包括第一状态集关键字中的N个值中的M个值,其中M小于N。
在根据第二方面的装置的第六实施方式中,上述命令包括状态集掩码,并且处理器响应于该状态集掩码选择M个值。
在根据第二方面的装置的第七实施方式中,处理器从第一包的第一报头中提取第一命令和第二命令。处理器执行第一命令以基于第一状态集中的数据测试条件以产生结果。处理器响应于第一命令产生的结果有条件地执行第二命令。
根据第三方面,一种非暂时性计算机可读介质保存用于在网络设备中处理数据流的计算机指令。当由处理器执行时,该计算机指令将处理器配置为解析数据流的第一包,以从该第一包的第一报头中提取第一命令和标识数据流的流信息。该指令还将处理器配置为根据提取的流信息生成第一状态集关键字,并执行第一命令以访问与第一状态集关键字相关的第一状态集。该第一状态集存储在网络设备的状态集存储器中。
上述方法可以由上述装置执行。上述这些方法的其他特征直接从装置的功能得到。
为第一方面至第三方面中的每个方面及其实施方式提供的解释同样适用于第一方面至第三方面中的其他方面及其相应实施方式。各个方面及实施方式可以在单个网络设备上组合,或者用于多个网络设备。
可以以硬件、软件、或其任何组合来实现描述的实施例的部分。
附图说明
在不一定按比例绘制的附图中,相同的数字可以在不同的图中描述类似的组件。附图以示例而非限制的方式概括地示出了本文中讨论的各种实施例。
图1是根据示例实施例的用于路由具有条件命令的数据包的示例网络的示意图。
图2是示例实施例中可用于实现条件命令块的示例大分组协议(big packetprotocol,BPP)头的示意图。
图3是示例实施例中包括BPP块头、条件集、以及动作集的BPP命令的示意图。
图4是根据示例实施例的状态集的示意图。
图5是根据实施例的用于处理BPP命令的方法的流程图。
图6是示例实施例中用于实现由数据包承载的条件命令的示例方法的流程图。
图7是示出根据示例实施例的用于由网络节点执行方法以处理自描述包头(用于并行处理)的电路的框图。
图8是示出根据示例实施例的用于实现算法和执行方法的客户端、服务器、网络连接资源的电路的框图。
具体实施方式
首先应理解的是,尽管下文提供了一个或多个实施例的说明性实施方式,但是参照图1至图8描述的所公开的系统和/或方法可以使用任何数量的技术(无论是已知的或已存在的)来实现。本公开不应限于以下所示的说明性实施方式、附图、以及技术(包括本文所示和描述的示例设计和实施方式),而是可以在所附权利要求范围内以及这些权利要求的等同物的全部范围内进行修改。
图1是用于路由具有条件命令的数据包102的示例网络100,该条件命令可以与网络节点上的状态集交互。如在示例实施例中使用的,状态集是在网络设备处为流而保留的该流的部分状态。状态集经由状态集关键字与流相关,状态集关键字与流缓存的流关键字类似。状态集关键字包含包头中承载的信息,例如标识源地址和目的地址的字段。在示例实施例中,状态集存储在网络设备的状态集存储器中。例如,状态集存储器类似于由状态集的状态集关键字寻址的缓存存储器。示例状态集关键字与7元组Netflow流关键字对应。示例7元组包括:1)源IP地址、2)源端口ID、3)目的IP地址、4)目的端口ID、5)入口接口的简单网络管理协议(simple network management protocol,SNMP)接口索引(interface index,ifIndex)、6)服务类型(type of service,ToS)、以及7)应用IP协议。
网络100包括网络域104,该网络域104包括主机节点106。网络域100包括充当入口点和出口点的边缘节点108和内部节点110,这些节点传输数据(例如数据包102的数据流112)。示例网络100中的每个边缘节点108和内部节点110包括状态集存储器107。此外,主机节点106可以通过2G/3G/4G/5G无线连接到边缘节点108。在该情况下,边缘节点108可以是连接到移动电话网络上的基站(演进节点B(evolved node B,eNB))的路由器。
在示例网络中,主机节点106是执行应用并希望与其他主机节点106通信的节点。这样的主机节点106可以通过经由网络域104发送数据流112来进行通信。数据流112是公共的一组端点(例如主机节点106)之间的一组相关通信。例如,在主机节点106上操作的应用可以发起通信会话。在通信会话期间交换的数据可以作为数据流112发送。数据流112中的数据被分隔成传输的数据包102。数据包102包括具有路由信息的报头和具有在主机节点106之间交换的数据的有效载荷(例如,作为通信会话的一部分)。在一些情况下,有效载荷可以被加密,并且可以对于连接主机节点106的网络域104不可读。
尽管示例网络100示出单个数据流112,但是可以通过网络并发地传输多个数据流112或随时间传输多个数据流112。每个数据流112可以由边缘节点108之一分配通过网络域104的路径。除了路径之外,每个数据流112可以遵从服务等级协议(service levelagreement,SLA),根据该协议,数据流112需要满足服务等级保证并实现定义的服务等级目标(service level objective,SLO)。
网络域104包括由公共联网策略集控制的一组互连网络组件。应注意,虽然网络域104是单个域,但是本公开可以部署在多域背景中。边缘节点108是封装包或修改包头以在通过网络传输包时有助于对包的处理的网络设备。例如,可以修改包头以包括附加信息,例如隧道信息、QoS策略、网络地址转换功能、和/或有助于引导包通过网络的命令。然而,如果边缘节点封装包,则边缘节点108不修改包有效载荷或包头。例如,边缘节点108可以实现网络域104的安全策略,根据网络域104寻址方案改变数据包102的网络地址,基于网络节点108和网络节点110的状态集存储器107中维护的网络状态来管理通过网络域104的数据流112。因此,边缘节点108充当网络域104的入口点和出口点。作为特定示例,边缘节点108可以确定跨网络域104的路径,封装包102以使包102经由隧道前进通过网络域104。此外,封装的包可以包括条件命令,该条件命令创建、删除状态集存储器107中的状态数据和/或与状态集存储器107中的状态数据交互,以生成和/或监测在单个数据流112或多个数据流112等级上的网络性能数据。
边缘节点108通过一系列内部节点110和相应的链路互连,该链路被描绘为节点对108和110之间的线。内部节点110是诸如路由器的网络设备,该网络设备用于读取数据包102头信息并根据该头信息处理和转发数据包102。示例网络域104中的每个内部节点110还包括状态集存储器107。在其他示例中,可以存在不包括状态集存储器107的一些内部节点110。边缘节点108和/或内部节点110可以识别数据流112并确定包102和相应的上下文信息与相应的数据流112相关。例如,可以由包含若干关键参数的元组来标识数据流112,这些关键参数例如但不限于源互联网协议(internet protocol,IP)地址和源端口、目的IP地址和目的端口、SLA、以及输入接口。在其他情况下,可以通过流说明符标识数据流112。
示例状态集存储器107可以包含一个或多个状态集,每个状态集与经过包含该状态集存储器107的节点的数据流112和/或一组聚合数据流112相关。如上所述,单个流由流关键字标识,例如由上述Netflow V5 7元组标识。聚合流是具有流关键字的流,该流关键字只包括可能的关键字字段的子集。这样的流“聚合”所有的流,对于关键字字段的子集,这些流共享相同的值,但是对于不在该子集中的字段则具有不同的值。因此,包是其流的一部分,并且是具有该包的关键字字段的子集的所有聚合流的一部分。
状态集条目可以包含特定数据流112的数据,例如新鲜度信息(例如开始时间)、源地址、目的地址、发送的包102的数量、在流112中发送的数据量、和/或与数据流112相关的其他统计信息。
在示例实施例中,可以使用用于路由数据包102的条件命令并使用状态集条目来修改网络域104。这样的条件命令还可以用于管理与数据流112相关的其他动作,例如但不限于更新数据流112的上下文,指导与数据流112相关的统计信息的维护,更新元数据和包102的报头。因此,通过在状态集存储器107中维护数据和从状态集存储器107检索数据,条件命令允许包102监测和存储经过在网络域104中的节点108和节点110的每个流的至少一部分状态,并且使用该状态指导应当如何路由流的包102(例如,自驱动)和/或应当如何管理数据流112。通过节点108和节点110基于命令中的元数据和/或基于状态集存储器107中的状态集数据执行条件命令来实现该网络控制。充当入口节点(例如,头端节点)的边缘节点108将条件命令置于包102头中。条件命令包括条件、命令,并且还可以包括一个或多个参数。该条件指示在执行命令之前需满足的项。当不满足条件时,该命令被忽略。该命令指示在条件发生时处理数据包102的节点待采取的一个或多个动作。此外,如以下将进一步说明的,边缘节点108和/或内部节点110还可以设置比特,该比特指示插入到数据包中的多个条件命令是否可以被并发处理。
在一个示例中,主机节点106可以与边缘节点108通信以建立通信。主机节点106可以向边缘节点108发送通信SLO。或者,该通信可以是内在的,即,基于数据包的一些参数,例如源IP地址。边缘节点108可以确定需要在网络域104中给予数据包何种处理,并相应地生成条件命令。如下所述,可以逐流(flow-by-flow)初始化和/或分配并维护状态集,并且每个数据流112的包中的条件命令可以单独地与状态集数据交互(例如,读取和/或更新状态集数据),从而允许数据面中的细粒度(fine-grained)流控制。然后,入口边缘节点108可以基于应用通信的SLA和/或SLO生成条件命令,并且在数据流112的一个或多个数据包102进入网络域104时将该条件命令附加为这种包102中的子包。在示例实施例中,当创建数据包102时,在包内设置比特以指定子包中的条件命令是否可以被并发处理或是否取决于其他命令的处理。在另一示例中,网络提供商可以确定在边缘节点108将条件命令作为子包插入数据包102中,而无需来自主机节点106的请求。例如,网络提供商可以确定添加条件命令以在节点108和节点110中的一个或多个节点中创建、修改、和/或删除状态集数据,以用于通用的网络域104维护目的和/或实现从其他途径(例如从控制器或运营支撑系统(operationsupport system,OSS))获得的一些目标。使用这些条件命令,可以完全在数据面中实现这种控制。可以在没有单独的控制面的情况下实现这样的网络。
内部节点110在路由期间从包102获得条件命令。内部节点110可以存储用于数据流112的路由命令。这样的路由命令可以包括生成和/或使用状态集存储器107中特定于数据112的数据的命令,和/或通用的路由命令,诸如网络域104的策略、IP路由命令、媒体访问控制(media access control,MAC)路由命令、多协议标签交换(multiprotocol labelswitching,MPLS)命令、和/或通常用于经由网络域104路由包102的其他路由命令。当满足条件命令的条件时,内部节点110可以执行相关的命令。这样的命令可以是除了存储的路由命令之外执行的补充命令(例如,更新流上下文或改变数据包头数据)。在其他情况下,上述命令可以是代替存储的路由命令而执行的覆盖命令(例如,丢弃包或改变下一跳)。上述命令还可以创建、删除、和/或修改内部节点110的状态集存储器107中的状态集数据,例如,增大与特定数据流112相关的状态集中的计数器,以为通过内部节点110的数据流112维护包102的计数。
内部节点110还可以从条件命令获得参数。该参数提供数据以阐明条件和/或命令。例如,上述条件可以包括比较,诸如但不限于小于、大于、等于、或前缀。然后,条件参数可以包含指示支持条件评估的值的数据。例如,条件参数可以指示正在比较什么值(例如,用于与某一项进行比较的阈值或用于比较的特定数据项)。例如,条件命令可以用于指定与另一数据值进行比较的值X。例如,将节点地址与X进行比较,将数据包102字段(例如生存时间(timetolive,TTL)字段或下一跳前缀)与X进行比较,将传输控制协议(transmissioncontrolprotocol,TCP)保活(keep alive)值与X进行比较,将状态集存储器107中的条目的字段与X进行比较,将队列的占用率与X进行比较,其中,X是在创建条件命令时设置的变量。
上述值X可以被设置为包括许多项,例如数据值、对包102中承载的一段元数据/数据/和/或包头字段的引用、对与数据流112相关的一段元数据的引用(该元数据在包102外部的节点108、110上的状态集存储器107中维护)、对定义明确(well-defined)的数据项(诸如但不限于,可以存储在流的状态集中的该流的服务等级目标)的引用。上述条件和条件参数允许内部节点110检查各种可定义条件,诸如但不限于承载条件命令的数据包102的属性、数据流上下文、内部节点110路由器状态(例如状态集数据)、数据包102上层信息(例如,开放系统互连(open systems interconnection,OSI)模型第四层及以上)节点条件。应注意,可以将条件设置为总是为“true”,以便使该命令在路由包102的每个内部节点110处执行。否则,上述条件被设置为仅在出口边缘节点108所期望的情况发生时触发命令。
作为另一示例,上述命令包括待在条件发生时应用的一个或多个原语(primitive)。原语是边缘节点108和/或内部节点110理解的功能。命令参数包含指示值的数据,该值定义该命令的一组操作条件。例如,命令参数可以指示上述命令应作用于什么项和/或应该作用/改变该项的程度。例如,上述命令可以在内部节点110处启动功能,诸如但不限于包102丢弃、包102排队、包102优先级排序、更新包102字段(例如,标记、添加、交换、替换、增大、和/或更新字段)、更新数据流112的上下文、更新包102元数据(例如,标记、添加、交换、替换、增大、和/或更新元数据)、设置数据流112的下一跳、分配内部节点110资源、或启动定制功能。上述条件命令还可以创建、读取、修改、或删除链接到数据流112的状态集存储器107中的状态集。
然后,上述命令参数可以指示采用哪个数据包102队列、采用哪个数据包102优先级、更新哪个字段、以及在该字段中放置什么值。作为具体示例,命令可以指示应该在内部节点110处分配资源,并且参数可以指示所请求的资源类型、资源限定(例如,分配大小/分配量)、和/或分配的持续时间。因此,上述命令和命令参数允许内部节点110执行各种功能。
通过在条件发生时执行命令,内部节点110可以采取各种复杂动作,而无需对数据流112进行特定的事先编程。例如,内部节点110可以响应于网络业务提高/降低数据流112的优先级,抢先丢弃具有高时延的包102,响应于网络业务改变数据流112的包的路由路径,更新、交换包102的计数器/字段/元数据以了解关于路径上的内部节点110处的条件,和/或生成/监测/提供网络节点统计。此外,还可以采用全局参数,该全局参数包含指示对于包102的报头是全局值的数据。因此,全局命令可以根据需要同时影响条件和命令。
在跨网络域104转发之后,包102由充当数据流112的出口节点的边缘节点108接收。边缘节点108可以在将包102转发到数据流112目的地的主机节点106之前去除和/或处理条件命令。例如,边缘节点108可以读取数据包102中的报头字段和/或元数据。边缘节点108还可以向主机节点106报告结果。例如,边缘节点108可以发送包括来自若干包102的数据的报告,以指示网络域104已经遵守一个或多个SLA。作为另一示例,边缘节点108可以在违反SLA时进行实时通信。
因此,条件命令允许网络域104基于带内(in-band)信令来实现各种功能,可以响应于在节点108和节点110的状态集存储器107中维护的网络的当前状态,在每个数据流112和/或甚至每个包102的基础上定制该带内信令。因此,条件命令显著改进了网络域104的功能性、灵活性、以及效率。还应注意,虽然示出了OSI第三层点对点网络(例如IP网络),但是条件命令可以在其他网络类型中实现,例如开放系统互连(OSI)第二层网络、软件定义网络(software defined network,SDN)、多协议标签交换(MPLS)网络、诸如vxLAN或Geneve的覆盖网络。
在本文描述的示例实施例中,为了减轻报头的串行展开(serial unwrapping)的影响,将在这样的网络104中发送的数据包102的报头定义为包括新的自描述包块,该自描述包块具有自描述块头和多个子块(具有将在每个路由器上完成的各种功能的明确分界)。
如上所述,还期望向中间网络节点110提供关于包102的处理的指导。在示例实施例中,大分组协议(BPP)基于如下想法:将元信息注入数据包102以便向中间网络节点110提供关于如何处理那些数据包102的指导以及在每个网络节点108和节点110处生成和监测网络状态信息。这是通过附上具有指令的BPP块来完成的,该指令提供关于应如何处理数据包102或将为数据流112分配什么资源的指导,以及关于数据包102和数据包102所属的数据流112的元数据。
BPP网络设备不依赖于可能导致数据包102的尽力而为处理的网络设备的内置逻辑,而是作用于命令、元数据、以及节点状态数据以处理数据包102,覆盖部署在设备上的任何“常规”包处理逻辑。例如,命令可以用于使每个节点监测其状态并将状态数据存储到该节点的状态集存储器107中,并且基于当前状态控制节点110以确定何时丢弃数据包102、使用哪个队列、何时交换标签、何时分配资源、何时测量服务等级并将该服务等级与SLO进行比较。这样的BPP包的结构如图2所示。
图2是示例大分组协议(BPP)头200的示意图,该BPP头200可以用于实现包含条件命令块(例如条件命令块214)的子包,该命令块在数据流112中的数据包102中包含的数据包头中使用。例如,BPP头200可以用作条件命令块214的具体实施方式。应注意,BPP头200字段可能由于标准化而改变,示出所公开的字段结构是为了说明本文中包括的概念。因此,BPP头200字段不应视为限制性的。
如图2所示,BPP包200包括以太网帧202、与该以太网帧相关的有效载荷210、以及包括BPP包200的主机协议的伪报头(pseudo-header)206的BPP头204。该主机协议可以与不同主机协议集成(例如但不限于NSH或Geneve)。伪报头206指向BPP头204的一个或多个BPP块208作为下一协议。可以使用其他替代方案在现有协议中承载相同的信息。
如图2所示,BPP块208还包括BPP块头212、命令块214、以及元数据块216。在示例实施例中,BPP块头212可以用于实现条件命令集,该条件命令集提供集成错误处理支持。例如,BPP块头212可以包括版本字段218(包含BPP块头212的版本信息)、长度字段220(指示块长度(例如,取决于用例的16、32、128、或更多个八比特组)的总长度(例如,以比特为单位))、以及错误动作字段222(指示在错误情况下要采取的动作)。这样的动作可以包括但不限于丢弃包的动作、忽略所有条件命令并恢复到通用处理的动作、忽略错误已经发生的事实并试图继续执行所有命令(就像无事发生一样)的动作。
BPP块头212还可以包括先前错误字段224,该先前错误字段224包含指示在路径上的先前节点处发生的先前错误。此外,BPP块头212可以包括错误冗长字段226、定时约束字段228、保留比特230、元数据偏移字段232(指示BPP块头212与元数据编码的开始之间的比特数)、校验和字段234、以及指向下一报头/BPP块236的指针。
图3示出了BPP头204的BPP命令块214中的示例BPP命令300的细节。BPP命令块214包括BPP命令300,BPP命令300具有命令头302、条件集304、以及可以用于实现条件命令的动作集306。条件集304包括具有一个或多个参数326的条件头316。上述命令头分别包括条件集字段308和命令集字段310。BPP命令块214还可以包括可以实现参数数据字段326的一个或多个参数。
如图3所示,命令头302可以包含命令长度字段308,该命令长度字段308指示BPP命令300中的条件命令集和/或参数集的长度。命令头302还可以包含各种标志,这些标志包含与BPP命令300相关的其他管理数据。例如,串行/并发标志310可以用于指示BPP命令300中的条件命令是否可以与其他命令并发地处理或是否需要串行地处理。
示例条件集304可以包含条件集长度字段312,该条件集长度字段312指示条件的长度和/或数量。条件集304还可以包含“OR/AND”字段314,以指示是应在启动命令之前满足全部条件(AND)还是应在满足任何条件时启动命令(OR)。条件集304还包含一个或多个条件316。每个条件316可以包括长度字段318,该长度字段318指示以比特为单位的条件的长度。条件316还可以包括NOT字段,该NOT字段指示否定布尔(Boolean)条件。条件316还可以包括各种标志322以进一步阐明/修改条件。例如,标志322可以通过允许专有命令和功能以及由操作框架控制的部署来提供动态可扩展性。条件316还可以包括条件类型字段324,以指示待采用的条件类型。条件316可以包括由条件使用的一个或多个参数326。参数326可以包括参数类别字段328、长度字段330、以及值字段332,这些字段以类别-长度-值(Type-Length-Value,TLV)格式分别指示参数的类别、参数的长度、以及参数的值。应注意,本文公开的示例条件集304的结构保持TLV格式,以允许结合使用在互联网工程任务组(internetengineering task force,IETF)标准化下的各种元数据参数,例如但不限于服务功能链(service function chaining,SFC)参数、网络服务头(network service header,NSH)参数、IP性能测量(IP performance measurement,IPPM)参数、原位操作、管理、维护(operations,administration,and maintenance,IOAM)参数。
示例动作集306可以包含指示命令的长度和/或数量的动作集长度字段334。动作集306还可以包含一个或多个动作336(例如,命令),该一个或多个动作336可以包含长度字段以指示动作336的长度。动作336还可以包含各种标志340以进一步阐明/修改命令。动作336还可以包含指示命令类型的动作类型字段342。动作336还可以包括用于实现命令的一个或多个参数344。
在示例实施例中,标志340可以包括串行标志346,该串行标志346基于命令是否依赖于来自另一命令的数据来定义动作或命令是否可以被串行地执行或并发地执行。状态扩展可以提供非阻塞选项,包括提供关于命令性质的更多数据。更新可以在包被转发之后发生,并且可以在节点108和/或节点110的状态集存储器107中存储的状态集中指示任何错误。
因此,BPP命令300包括命令头302和标志346,该命令头302包括命令的长度(可以从若干固定大小的选择中选择),标志346指示命令是否需要被串行化或者是否可以与其前面的命令(如果有的话)并行执行。BPP中的动作包括一个或多个BPP动作原语的集和任何参数。与条件一样,为了便于扩展,由A类型(动作类型)324和扩展(X-)标志340这两个字段的组合来指示动作类型。每个动作都带有标志346,标志346指示其是否需要在命令内被串行化或者指示其是否可以与先前动作并行执行。
可以被并发处理的条件命令的示例包括旨在更新节点108或节点110的状态集存储器107中的状态集的条件命令。例如,如果出口的当前队列长度大于某个值,则计数器可以增大。第二条件命令可以旨在做出转发决策。例如,如果包长度小于给定值,则使用队列1(否则使用队列2)。这样的条件命令可以被并发处理。
另一方面,应该被串行化的条件命令的示例包括旨在决定是否丢弃包的条件命令。例如,如果跳计数大于给定值,则丢弃包。如果第二条件命令旨在(例如通过增大跳计数器)更新节点108或节点110的状态集存储器107中的状态集,则即使包被丢弃,这里的条件也是“true”。因此,这些命令应该被串行处理。
作为命令内的并发动作的示例,条件命令可以指定如果跳计数大于某个值,则:{动作1:在状态集存储器107中存储的当前流112的状态集中增大丢弃计数器;比较计数器与阈值;动作2:丢弃包/转发到零(nil)队列}。
如上所述,BPP利用具有条件命令的自驱动包。上述协议还引入状态集的概念,即在网络设备(例如数据流112经过的节点108或节点110)上维护的关于数据流112的流状态和上下文。数据流112可以是具有公共多播组或公共会话标识符(identifier,ID)的包流。每个节点108、110可以包括保存状态集的状态集存储器107。状态集可以由BPP条件命令建立、使用、以及删除,以通过与数据流112的包交互来实现网络控制,例如,允许自驱动包从状态集读取数据以指导应该如何处理数据流112。可以使用BPP条件命令管理状态集。这允许开发可能涉及状态概念(如上所述的那些概念)的网络应用,而不依赖于冗长的网络产品周期。此外,上述控制可以完全在数据面中实现,使得可以在没有控制面的情况下实现网络。
可以使用在经过网络的包(特别是“自驱动”包)中承载的命令来管理状态集,该“自驱动”包(例如包含BPP条件命令的包)包含命令块,该命令块具有当包经过网络时在转发设备处执行的条件命令。状态集保留网络设备处给定数据流112的“状态”。也就是说,这些状态集用于在设备上存储关于数据流112的某些数据。可以根据属于相同数据流112(例如,被标识为在相同会话或相同多播组中)的其他包中承载的命令,读取上述数据以指导对这些包的处理。此外,可以根据这些命令修改和写入数据。
包可编程状态集提供了在每个流的基础上保留和管理通过每个节点108、110的包的数据流112的能力,并且允许由数据流112本身的包(特别是包含条件命令的“自驱动”包)来管理和编程该状态集,并且允许那些包与状态集交互(例如,通过允许包的条件命令引用在状态集中维护的信息)。
为了使用状态集,示例实施例包括允许包管理状态集并与状态集交互的一组条件命令。这些命令在下文称为“状态集命令”。状态集命令构成可以在自驱动包的命令块中承载的条件命令(例如,如上所述的BPP条件命令)。
网络设备上的状态集基础设施是节点108、110中的存储器(例如,状态集存储器107),该存储器提供缓存或存储以保留状态集,允许状态集由状态集关键字(例如,包头中的数据流112标识符)组织,并且提供系统管理功能以在不再需要特定状态集时回收状态集存储器107中的内存。可以与节点108、110中的一个或多个节点中的状态集存储器107交互的BPP条件命令提供了状态集执行基础设施。
图4是状态集400的一个示例的示意图。可以设想,可以以许多不同的方式配置状态集。如图4所示,示例状态集400包括状态集关键字402,该状态集关键字402标识与状态集400相关的数据流112。如下所述,状态集关键字402包括状态集关键字掩码(statelet keymask,SKM)408和一组关键字索引字段410。示例状态集400还包括状态集新鲜度的指示符404。示例新鲜度指示符404包括定时信息以确定状态集何时到期。例如,状态集新鲜度指示符404可以指示节点108、110上次处理具有匹配的状态集关键字的包的时间。在该示例中,使用特定数据流112的每个到达包来更新该数据流112的新鲜度字段,以反映包被处理的时间。
或者,上述新鲜度字段可以包括计数器,在每次处理另一数据流112的包时增大该计数器,并且在处理对应于状态集400的数据流112的包时复位该计数器。或者,新鲜度字段可以包含(例如由边缘节点)显式设置的到期时间,并且除非(例如响应于满足条件而)被显式地延长,否则新鲜度字段保持不变。
示例状态集400还包括状态集主体406。示例状态集主体406可以视为从条件命令复制到状态集存储器的状态集存储器单元400中的不透明字符串。或者,可以根据从命令提取的一组TLV参数生成状态集主体406。另一状态集400可以被编码为一组(名称、值)对,或根据模板结构,具有标识模板并包含长度信息的状态集主体406头。可以初始化(例如,利用在包的元数据字段中承载的数据)、更新(例如,状态集中的某个值可以增大或被另一值替换)、和/或从中读取状态集。
图4中所示的示例状态集400包括指示与状态集400相关的会话和/或数据流112的包的状态集关键字402。状态集关键字402将包与这些包的状态集400“绑定”。通过使用一组包字段作为需要匹配的关键字字段(例如,通过与在NetFlow情况下将流关键字匹配到流记录相同的方式进行匹配)来实现这种绑定。上述绑定可以是协议特定的,如果与IPv4类型包(相对于IPv6类型包,相对于层2帧)一起使用,则会导致关键字略有不同。正如在Netflowv5中一样,状态集关键字402可以包括7元组,包括1)源IP地址、2)源端口ID、3)目的IP地址、4)目的端口ID、5)入口接口的简单网络管理协议(SNMP)接口索引(ifIndex)、6)服务类型(ToS)、以及7)应用IP协议。可以使用附加字段SKM(状态集掩码)来指示关键字的特定结构,该SKM可以被包括为关键字的一部分。示例状态集关键字掩码可以包括比特字段,该比特字段指示使用了哪些关键字参数(例如,来自上述Netflow 7元组的参数)来组成关键字。换言之,上述SKM指示哪些潜在关键字字段实际上构成关键字。SKM的缺失可以指示默认索引结构,例如上面所述的Netflow 7元组。如上所述,只具有关键字字段的子集的状态集关键字可以与具有匹配该子集的关键字字段的流的聚合集相关。
示例状态集主体406可以用于存储不同类别的数据,例如,数据流112或会话的状态412、上下文和元数据414、遥测数据和/或统计416、以及其他用户定义的数据418。会话/流状态字段412描述特定数据流112或会话的状态。例如,可以通过针对如何处理数据流112和/或会话的包的命令中的条件来引用该字段。上下文和元数据字段414包含用户可定义的类型化数据,例如标签、分类器、或与数据流112和/或会话相关的其他信息。遥测/统计字段416可以包括可以根据BPP条件命令获得更新(例如,增大、减少、或复位)的可编程计数器。其他数据字段418用于保存用户或管理员可能发现有用的其他数据(包括非结构化数据)。可以设想,示例状态集主体406可以被划分为其他子结构,例如用于维护统计的子状态集和用于存储其他元数据的子状态集。状态集还可以存储/缓存待针对对应流或聚合流的包执行的条件命令。此外,作为故障排除辅助工具,可以使用状态集记录关于在处理流中的包时遇到的一个或多个错误的数据。
上述示例系统包括允许包管理状态集并允许包中的命令与状态集交互的命令。用于维护状态集的命令包括但不限于下表所示的命令。
表
Initialize-statelet(状态集、期满、SKM):该命令在状态集存储器107中部署状态集400。
当存在默认到期参数(例如,新鲜度字段404)时,上述到期参数是可选的。上述到期参数可以指示在回收用于状态集400的内存之前数据流112的最大非激活周期。SKM是允许用户或管理员通过将掩码应用于状态集关键字402以限定状态集400的可选参数。
使用SKM参数,状态集400可以应用于多于一个会话或数据流112。SKM字段允许用户或管理员在可以绑定到包的不同状态集中进行选择。对于给定的流/会话只存在一个状态集400,但是多个流可以经由SKM字段通过掩码访问一个流的状态集400。如果接收到部署用于会话/数据流112的状态集400的命令并且已经存在用于同一会话/数据流112的有效状态集400,则该命令失败并生成错误信息。当节点108或节点110的状态集存储器107没有更多内存时、当节点108或节点110不支持状态集时、和/或当状态集400超过节点108或节点110的大小限制时,命令也将失败,并且节点108或节点110将生成错误消息。
Statelet-initialized(SKM):检查是否已经存在数据流112的状态集400,并返回布尔值(true/false)。如上所述,SKM是用于限定状态集400的可选参数。
Replace-statelet(状态集、期满、SKM):与“Initialize-statelet”相同,但无论是否已经存在用于同一数据流112的状态集400,该命令都执行。等同于以非初始化状态集400为条件的“Initialize-statelet”。SKM是用于限定状态集400的可选参数。
Release-statelet(SKM):去除状态集400并将内存释放到状态集存储器107。SKM是用于在需要时限定状态集400的可选参数。
Get(FieldID):读取字段值,或者如果没有指定字段,则读取整个状态集400。也可以作为条件的参数。如果没有这样的字段,则操作失败。如果需要,字段的名称可以由SKM限定。
Set(FieldID、值):设置字段的值,如果需要,由SKM限定该字段的值。如果字段还不存在,
则创建该字段。该命令集的详细信息可能有所不同。例如,可以考虑添加命令以处理列表值字段,这些字段类似于值的队列或堆栈。
Increment(FieldID):将标识的字段中的值加1。
Increment-by(FieldID、值):向标识的字段中的值添加该值参数。
Decrement(FieldID):将标识的字段中的值减1。
Decrement-by(FieldID、值):从标识的字段中的值减去该值参数。
Get-field-element(FieldID,index-or-top,SKM):读取列表的值,可以是最后一个值,也可以是按该索引的值。如果没有这样的字段,则操作失败。
Add-value(FieldID、值、SKM):向列表添加值。如果列表值字段不存在,则创建该字段。如果没有内存(或将超过状态集大小限制),则操作失败。
Remove-value(FieldID,SKM):从列表中去除值(如果是堆栈,则弹出该值,如果是队列,
则去除底部值)。如果没有这样的字段或已经没有值,则此操作失败。
除了表中所示的参数外,每个状态集命令具有隐式参数,即承载该命令的包的关键字字段。命令只能应用于与特定数据流(或聚合流)112相关的状态集400,而不能应用于其他数据流的状态集。命令所应用到的状态集与承载该命令的包共享相同的关键字(即,状态集关键字和命令具有相同的关键字值)。处理在尝试执行状态集命令时发生的错误与处理其他命令的错误没有区别。
当发生错误时,节点108和/或节点110可以生成该错误的日志条目。此外,节点可以在承载失败命令的包中标记发生了错误,从而可以向接收该包的主机节点106通知该错误。当节点108或节点110的状态集存储器107已满时,节点108或节点110不能再分配新的状态集,直到旧的状态集被去除。该错误的发生可以使节点108或节点110分析状态集存储器107中的每个状态集400,并回收由具有指示包已到期的新鲜度值404的任何状态集400使用的内存。或者,节点108和/或节点110可以周期性地分析状态集以回收已经到期的状态集。
实现条件状态集命令的网络包括节点108和节点110中的至少一些节点上的状态集基础设施。该结构提供状态集缓存、存储器、或状态集存储器107以保存状态集。下面参照图7描述示例节点108或节点110。在示例节点108和/或节点110中,状态集存储器107通过状态集的状态集关键字402来组织状态集。在一些示例节点中,状态集关键字402对应于对应包的流关键字或会话ID,并且可以根据SKM字段408被掩蔽,使得状态集400可以与多于一个数据流112和/或会话相关。
示例节点还包括一组系统管理功能。这些系统管理功能包括回收具有指示状态集400已到期的新鲜度字段404的状态集400的内存或存储。可以实现各种到期机制。示例节点108和/或节点110采用基于流非激活(flow inactivity)而使状态集老化的机制。在该示例中,记录的时间被保持在每个状态集400中,指示节点108和/或节点110上次处理匹配状态集关键字的包的时间。该时间随着每个匹配的包更新。如上所述,节点108和/或节点110可以在状态集存储器107已满时回收内存,或在当前时间与包记录的时间之间的差值大于阈值的基础上周期性地回收内存。
最后,节点108和/或节点110的状态集基础设施包括执行基础设施,例如下面参考图7描述的自驱动包模块730,该执行基础设施允许节点108和/或节点110解释命令并执行包中承载的状态集命令。执行基础设施允许包只与该包绑定的状态集400交互,即,具有与状态集关键字402匹配的流关键字的状态集,其中,上述状态集关键字402具有由SKM掩蔽的关键字字段。
图5是在执行处理条件命令(包括上表中描述的状态集命令或其他状态集命令)时实现的示例方法500。在操作502,自驱动包模块730解析节点108或节点110接收的包并提取条件命令。然后,操作504确定该命令是否是状态集命令(例如,上表中描述的状态集命令之一)。如果该命令不涉及状态集400,则操作506(如下参考图6更详细地描述)执行该命令,然后在操作508,操作结束。
如果在操作504,方法500确定该命令是状态集命令,则转到从包获得关键字字段的操作510。如上所述,示例关键字字段可以包括会话ID、多播组ID、NetFlow 7元组、或将包与特定会话或流相关的其他标识符。然后,操作512根据提取的关键字字段构造状态集关键字402。操作514使用所构造的状态集关键字402来标识状态集存储器107中对应于状态集关键字402的状态集400,并且在操作514,对标识的状态集400执行状态集命令或命令。操作514以与操作506相同的方式实现,如下参照图6更详细地描述这两个操作。
图6是示例实施例中用于实现由数据包承载的条件命令(包括状态集命令)的示例方法600的流程图。例如,方法600可以由如上文参考图1所述的网络设备(充当路由数据流112和包102的边缘节点108或内部节点110)来实现。因此,方法600可以用于通过读取包含条件命令块(例如条件命令块214)的数据包头来执行条件命令。在一些情况下,方法600还可以经由BPP进行通信,并因此对BPP块头212进行操作。此外,根据方法600,使用命令头302的串行字段310(如上文参考图3所述)来确定上述报头是否包含可以并行处理而不是串行处理的命令。
在操作602,网络节点108/110可以接收具有包括条件命令的数据包102的数据流112。在操作604,方法600检查命令头302的串行字段310,以确定数据包102的当前命令是否与另一命令具有任何相互依赖性(例如,设置了串行字段)。如果是,则操作606串行地处理子块中的命令。另一方面,如果没有设置串行字段310,则操作608并发地处理条件命令中的命令。在任一情况下,网络节点108/110执行包处理,并且确定动作集306中的候选动作336(诸如但不限于创建、读取、写入、或删除状态集400;更新下一跳队列;或丢弃包)。这样的候选动作包括在不存在条件命令的情况下网络节点108/110将采取的路由动作。因此,这样的候选动作可以包括待应用的包处理动作,除非条件命令覆盖这样的动作并产生不同的结果。
在框610,网络节点108/110确定数据包102中是否存在未处理的条件命令。如果不存在,则网络节点108/110可以进行到操作616。如果在数据包102中存在未处理的条件命令,则节点进行到操作612。在操作612,网络节点108/110从条件命令获得条件和相关的命令,并进行到框614。在框614,网络节点108/110确定是否满足条件。如果不满足条件,则网络节点108/110不改变候选动作,并且返回到框610以检查另外的未处理的条件命令。如果满足条件,则网络节点108/110进行到框616。
在框616处,网络节点108/110收集命令并在适用时覆盖/补充候选动作。因此,在框614,网络节点108/110可以确定满足条件。基于确定了满足条件,网络节点108/110然后可以在框618执行对应命令以改变对数据流112的处理或改变对数据包102的处理。如果在框614不满足条件,则根据候选动作(例如,根据通用路由协议)基于包头中的信息来处理数据包102。
就条件命令影响的内容而言,许多条件命令可以是正交的(例如,一个命令更新流上下文,另一个命令决定包优先级)。头端节点和/或末端节点可以选择条件命令以避免可能导致不期望的非确定行为的冲突命令。
此外,虽然方法600描绘了可以在网络节点108/110上针对到达的任何数据包102进行的基本处理流程,但是可能有该基本处理流程的各种优化。例如,可以针对执行命令的顺序来优化这样的处理流程。例如,可以立即执行补充命令。此外,条件命令的执行序列可以被重新排序以最大化命令执行的并行化。
作为特定示例,数据包102可以包含指示当在出口接口处遇到拥塞时应如何处理数据包102的命令。应用可以决定数据包102在这种情况不是关键的,并且可以丢弃该数据包102。在这种情况下,条件可以是预期出口接口上的利用率高于指定阈值。然后,对应的动作/命令可以是丢弃该数据包102。然后,参数可以包含条件的阈值等级。可以通过使用条件命令来创建这个功能和许多其他功能。
图7是示例网络设备700的示意图,该网络设备700用于串行或并发地执行从网络包(诸如示例实施例中作为数据流112的一部分的数据包102)获得的条件命令。例如,网络设备700可以实现网络域104中的边缘节点108和/或内部节点110。此外,网络设备700可以用于实现方法500和/或方法600以及本文公开的其他方法/机制。例如,网络设备700可以发送具有包含条件命令块214的数据包头的数据包102。这样的报头可以在BPP头212中实现。
因此,网络设备700可以用于实现或支持本文描述的方案/特征/方法。例如,本公开的特征/方法可以使用硬件、固件、和/或安装在硬件上运行的软件来实现。本领域技术人员将认识到,术语“网络设备”包括各种设备,网络设备700只是其中的一个示例。出于清楚讨论的目的,将网络设备700包括其中,但不意味着将本公开的应用限制于特定的网络设备实施例或网络设备实施例的类别。
网络设备700可以是通过网络(例如,交换机、路由器、网桥、或网关)来通信电信号和/或光信号的设备。如图7所示,网络设备700可以包括收发器(Tx/Rx)710,该收发器710可以是发射器、接收器、或其组合。Tx/Rx 710可以耦合到多个下游端口720(例如,下游接口),用于发送和/或接收来自其他节点的帧,并且Tx/Rx 710可以耦合到多个上游端口750(例如,上游接口),用于分别发送和/或接收来自其他节点的帧。处理器730可以耦合到Tx/Rx710以处理数据信号和/或确定要向哪些网络节点108/110发送数据信号。处理器730可以包括一个或多个多核处理器和/或存储设备740,存储设备740可以用作数据存储器、缓冲器,并且可以包括状态集存储器107。处理器730可以实现为通用处理器,或者可以是以下中的一部分:一个或多个图形处理单元(graphics processing unit,GPU)、网络处理单元(network processor unit,NPU)、应用专用集成电路(application specific integratedcircuit,ASIC)、和/或数字信号处理器(digital signal processor,DSP)。网络设备700可以包括自驱动包模块732,该自驱动包模块732可以用于接收和处理如本文所述的数据包102。然后,自驱动包模块732可以从数据包获得条件命令,并基于包头数据、存储在状态集存储器107中的数据流112的状态集400、和/或基于条件命令中的相关参数来确定是否满足条件命令中的条件。在确定满足条件时,自驱动包模块732可以例如基于存储在条件命令中的对应参数和/或存储在状态集存储器107中的数据流112的状态集400来执行条件命令。这样的命令可以使自驱动包模块732创建、修改、或删除与数据流112相关的状态集400;修改包数据;修改流上下文;修改路由命令;和/或对数据包102和/或对应的数据流112执行其他动作。根据本文描述的技术,可以基于所述的每个命令的串行比特的设置来串行或并行地执行上述数据包处理。
自驱动包模块732可以在通用处理器、现场可编程门阵列(field programmablegate array,FPGA)、ASIC(固定/可编程)、网络处理单元(NPU)、DSP、和/或微控制器中实现。在替代实施例中,自驱动包模块732可以在处理器730中实现为存储器设备740中存储的命令(例如,作为计算机程序产品),该命令可以由处理器730执行,和/或部分地在处理器730以及部分地在存储器设备740中实现。根据实施例,下游端口720和/或上游端口750可以包含无线、电学、和/或光学的发射组件和/或光接收组件。
尽管示例计算设备被示出并描述为网络节点108/110,但是在不同实施例中计算设备可以是不同的形式。例如,作为替代,计算设备可以是智能手机、平板电脑、智能手表、或包括如上图7和如下图8所示和描述的相同元件或类似元件的其他计算设备。设备(诸如智能手机、平板电脑、以及智能手表)通常统称为移动设备或用户设备。此外,尽管各种数据存储单元被示出为网络节点700的一部分,但是该存储还可以(或替代地)包括可经由网络(例如互联网)访问的基于云的存储或基于服务器的存储。
存储器740可以包括易失性存储器和/或非易失性存储器。网络节点700可以包括各种计算机可读介质或能够访问包括各种计算机可读介质的计算环境,例如易失性存储器和非易失性存储器、可移动存储设备和不可移动存储设备。计算机存储器包括随机存取存储器(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)、数字多功能盘(digital versatile disk,DVD)或其他光盘存储器、盒式磁带、磁带、磁盘存储器或其他磁存储设备、或任何其他能够存储计算机可读指令的介质。
网络节点700可以包括输入接口、输出接口、以及通信接口,或者能够访问包括输入接口、输出接口、以及通信接口的计算环境。输出接口可以包括显示设备,例如触摸屏(也可以用作输入设备)。输入接口可以包括以下中的一个或多个:触摸屏、触摸板、鼠标、键盘、相机、一个或多个设备专用按钮、集成在网络节点700内或经由有线数据连接或无线数据连接耦合到网络设备700的一个或多个传感器、和/或其他输入设备。网络设备700可以使用通信连接在联网环境中操作以连接到一个或多个远程计算机,例如数据库服务器。远程计算机可以包括个人计算机(personal computer,PC)、服务器、路由器、网络PC、同级设备、或其他公共DFD网络交换机等。通信连接可以包括局域网(local area network,LAN)、广域网(wide area network,WAN)、蜂窝、Wi-Fi、蓝牙、或其他网络。
计算机可读介质上存储的计算机可读指令可以由网络节点700的处理器730(例如自驱动包模块732)执行。在一些实施例中,自驱动包模块732包括软件,当由处理器730执行时,该软件根据本文所述的条件命令的串行和/或并行处理来执行网络交换操作。硬盘驱动器、CD-ROM、以及RAM是包括非暂时性计算机可读介质(诸如存储设备)的物品的一些示例。术语“计算机可读介质”和“存储设备”不包括载波,因为载波被认为过于短暂。存储还可以包括网络存储,例如存储区域网络(storage area network,SAN)。
图8是示出根据示例实施例的用于实现算法和执行方法的计算设备106(例如,客户端、服务器、或基于网络云的资源)的电路的框图。在各种实施例中无需使用所有组件。例如,客户端、服务器、以及网络资源可以各自使用一组不同的组件,或者例如在服务器的情况下,使用更大的存储设备。
计算机800形式的一个示例计算设备可以包括处理单元802、存储器803、可移动存储810、以及不可移动存储812。虽然示例计算设备被示出和描述为计算机800,但是该计算设备在不同实施例中可以有不同形式。例如,作为替代,该计算设备可以是智能手机、平板电脑、智能手表、或包括如图7所示和描述的相同元件或类似元件的其他计算设备。设备(诸如智能手机、平板电脑、以及智能手表)通常统称为移动设备或用户设备。此外,尽管各种数据存储单元被示出为计算机800的一部分,但是存储810还可以(或替代地)包括可经由网络(例如互联网)访问的基于云的存储或基于服务器的存储。
存储器803包括易失性存储器814和/或非易失性存储器808。计算机800可以包括各种计算机可读介质或能够访问包括各种计算机可读介质的计算环境,例如易失性存储器814和非易失性存储器808、可移动存储设备810和不可移动存储设备812。计算机存储器包括随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)和电可擦除可编程只读存储器(EEPROM)、闪存或其他存储技术、光盘只读存储器(CD ROM)、数字多功能盘(DVD)或其他光盘存储器、盒式磁带、磁带、磁盘存储器或其他磁存储设备、或任何其他能够存储计算机可读指令的介质。
计算机800可以包括输入接口806、输出接口804、以及通信接口816或能够访问包括输入接口806、输出接口804、以及通信接口816的计算环境。输出接口804可以提供到显示设备(例如触摸屏(也可以用作输入设备))的接口。输入接口806可以提供到以下中的一个或多个的接口:触摸屏、触摸板、鼠标、键盘、相机、一个或多个设备专用按钮、集成在计算机800内或经由有线数据连接或无线数据连接耦合到计算机800的一个或多个传感器、和/或其他输入设备。计算机800可以使用通信连接在联网环境中操作以连接到一个或多个远程计算机,例如数据库服务器。远程计算机可以包括个人计算机(personal computer,PC)、服务器、路由器、网络PC、同级设备、或其他公共DFD网络交换机等。通信连接可以包括局域网(LAN)、广域网(WAN)、蜂窝、Wi-Fi、蓝牙、或其他网络208。
计算机可读介质上存储的计算机可读指令可以由计算机800的处理单元802执行。硬盘驱动器、CD-ROM、RAM、以及闪存是包括非暂时性计算机可读介质(诸如存储设备)的物品的一些示例。术语“计算机可读介质”和“存储设备”不包括载波,因为载波被认为过于短暂。
虽然上文已经详细描述了一些实施例,但是可以进行其他修改。例如,为了获得期望的结果,附图中描绘的逻辑流程无需按照所示的特定顺序或先后顺序。可以提供其他步骤或者从所描述的流程中去除步骤,所描述的系统中可以添加其他组件或去除其他组件。其他实施例可以在所附权利要求的范围内。
Claims (16)
1.一种计算机实现的方法,用于在与状态集存储器相关的网络设备中处理数据流,所述方法包括:
解析数据流的第一包,以从所述第一包的第一报头中提取第一命令和标识所述数据流的流信息,其中,所述数据流满足服务等级保证并实现定义的服务等级目标SLO;
根据提取的所述流信息生成第一状态集关键字;以及
执行所述第一命令以访问与所述第一状态集关键字相关的第一状态集,所述第一状态集存储在所述网络设备的所述状态集存储器中;
其中,执行所述第一命令包括:
在所述网络设备的所述状态集存储器中创建所述第一状态集,所述第一状态集具有包括所述第一状态集关键字的关键字字段;以及
将第一新鲜度值存储在所述第一状态集的新鲜度字段中,所述第一新鲜度值指示创建所述第一状态集的时间;
还包括:
解析所述数据流的第二包,以从所述第二包的第二报头中提取第二命令和标识所述数据流的所述流信息;
根据从所述第二包的所述第二报头中提取的所述流信息生成所述第一状态集关键字;
响应于所述第二命令,访问具有所述第一状态集关键字的所述第一状态集包括以下至少之一:从所述第一状态集读取字段值,将字段值写入所述第一状态集,修改所述第一状态集的字段中的值,向所述第一状态集中的列表添加值,或从所述第一状态集中的列表中去除值;以及
将第二新鲜度值存储在所述第一状态集的所述新鲜度字段中,所述第二新鲜度值指示响应于所述第二命令访问所述第一状态集的时间;
其中,生成第一状态集关键字包括组合来自所述流信息的N个值;以及
执行所述第一命令以访问与所述第一状态集关键字相关的所述第一状态集包括响应于所述第一状态集的状态集关键字选择所述第一状态集,所述第一状态集包括所述第一状态集关键字中的所述N个值中的M个值,其中M小于N。
2.根据权利要求1所述的计算机实现的方法,其中:
响应于所述第二命令访问所述第一状态集包括从所述第一状态集读取所述字段值;以及
所述计算机实现的方法还包括响应于从所述第一状态集读取的所述字段值,控制所述网络设备对所述第二包的处理。
3.根据权利要求1所述的计算机实现的方法,其中,所述状态集存储器包括多个状态集,并且所述方法还包括:
所述网络设备将所述多个状态集中的每个状态集的所述新鲜度字段中的相应新鲜度值与当前时间值进行比较;以及
响应于所述当前时间值与所述多个状态集中的一个状态集的所述新鲜度字段中的所述新鲜度值之间的差大于阈值,回收由所述一个状态集占用的内存。
4.根据权利要求1所述的计算机实现的方法,其中,响应于所述第一包的所述第一报头中的元数据,所述执行所述第一命令以访问所述第一状态集将数据值写入所述第一状态集的字段中。
5.根据权利要求1所述的计算机实现的方法,其中,所述执行所述第一命令以访问所述第一状态集包括增大所述第一状态集的字段中的值。
6.根据权利要求1所述的计算机实现的方法,其中,所述执行所述第一命令包括从所述网络设备的所述状态集存储器中删除所述第一状态集。
7.根据权利要求2所述的计算机实现的方法,其中,所述执行所述第一命令包括从所述网络设备的所述状态集存储器中删除所述第一状态集。
8.根据权利要求1所述的计算机实现的方法,其中,所述第一命令包括状态集关键字掩码,并且所述选择所述第一状态集包括响应于所述状态集关键字掩码选择所述第一状态集关键字中的M个值。
9.根据权利要求1所述的计算机实现的方法,其中:
解析所述第一包包括从所述第一包的所述第一报头中提取所述第一命令和第二命令;
执行所述第一命令包括基于所述第一状态集中的数据测试条件以产生结果;以及
所述计算机实现的方法还包括响应于由所述第一命令产生的所述结果有条件地执行所述第二命令。
10.一种在网络设备中使用的装置,所述装置包括:
存储器,包括状态集存储器和计算机程序指令;以及
处理器,耦合到所述存储器,其中,所述计算机程序指令将所述处理器配置为:
解析数据流的第一包,以从所述第一包的第一报头中提取第一命令和标识所述数据流的流信息,其中,所述数据流满足服务等级保证并实现定义的服务等级目标SLO;
根据提取的所述流信息生成第一状态集关键字;以及
执行所述第一命令以访问与所述第一状态集关键字相关的第一状态集,所述第一状态集存储在所述状态集存储器中
其中,使得所述处理器执行所述第一命令的所述计算机程序指令包括使得所述处理器执行以下的计算机程序指令:
在所述网络设备的所述状态集存储器中创建所述第一状态集,所述第一状态集具有包括所述第一状态集关键字的关键字字段;以及
将第一新鲜度值存储在所述第一状态集的新鲜度字段中,所述第一新鲜度值指示创建所述第一状态集的时间;
其中,所述计算机程序指令还使得所述处理器:
解析所述数据流的第二包,以从所述第二包的第二报头中提取第二命令和标识所述数据流的所述流信息;
根据从所述第二包的所述第二报头中提取的所述流信息生成所述第一状态集关键字;
访问所述第一状态集;
执行所述第二命令,其中所述第二命令使得所述处理器执行以下至少之一:从所述第一状态集读取字段值,将字段值写入所述第一状态集,修改所述第一状态集的字段中的值,向所述第一状态集中的列表添加值,或从所述第一状态集中的列表中去除值;以及
将第二新鲜度值存储在所述第一状态集的所述新鲜度字段中,所述第二新鲜度值指示响应于所述第二命令访问所述第一状态集的时间;
其中,使得所述处理器生成所述第一状态集关键字的所述程序指令包括使得所述处理器组合来自所述流信息的N个值的程序指令;以及
使得所述处理器执行所述第一命令以访问与所述第一状态集关键字相关的所述第一状态集的所述程序指令包括使得所述处理器响应于所述第一状态集的状态集关键字选择所述第一状态集的程序指令,所述第一状态集包括所述第一状态集关键字中的所述N个值中的M个值,其中M小于N。
11.根据权利要求10所述的装置,其中,将所述处理器配置为执行所述第一命令的所述计算机程序指令将所述处理器配置为响应于所述第一包的报头中的元数据将数据值写入所述第一状态集的字段中。
12.根据权利要求10所述的装置,其中,将所述处理器配置为执行所述第一命令的所述计算机程序指令将所述处理器配置为从所述网络设备的所述状态集存储器中删除所述第一状态集。
13.根据权利要求11所述的装置,其中,将所述处理器配置为执行所述第一命令的所述计算机程序指令将所述处理器配置为从所述网络设备的所述状态集存储器中删除所述第一状态集。
14.根据权利要求10所述的装置,其中,所述命令包括状态集关键字掩码,使得所述处理器选择所述第一状态集的所述程序指令包括使所述处理器响应于所述状态集关键字掩码选择所述M个值的程序指令。
15.根据权利要求10所述的装置,其中:
使得所述处理器解析所述第一包的所述计算机程序指令包括使所述处理器从所述第一包的所述第一报头提取所述第一命令和第二命令的计算机程序指令;
使得所述处理器执行所述第一命令的所述计算机程序指令包括使得所述处理器基于所述第一状态集中的数据测试条件以产生结果的计算机程序指令;以及
所述计算机程序指令还使得所述处理器响应于由所述第一命令产生的所述结果有条件地执行所述第二命令。
16.一种计算机可读介质,存储用于在网络设备中处理数据流的计算机指令,当被处理器执行时,所述计算机指令将所述处理器配置为执行以下操作,包括:
解析数据流的第一包,以从所述第一包的第一报头中提取第一命令和标识所述数据流的流信息,其中,所述数据流满足服务等级保证并实现定义的服务等级目标SLO;
根据提取的所述流信息生成第一状态集关键字;以及
执行所述第一命令以访问与所述第一状态集关键字相关的第一状态集,所述第一状态集存储在与所述网络设备相关的状态集存储器中;
其中,执行所述第一命令包括:
在所述网络设备的所述状态集存储器中创建所述第一状态集,所述第一状态集具有包括所述第一状态集关键字的关键字字段;以及
将第一新鲜度值存储在所述第一状态集的新鲜度字段中,所述第一新鲜度值指示创建所述第一状态集的时间;
其中,还包括:
解析所述数据流的第二包,以从所述第二包的第二报头中提取第二命令和标识所述数据流的所述流信息;根据从所述第二包的所述第二报头中提取的所述流信息生成所述第一状态集关键字;响应于所述第二命令,访问具有所述第一状态集关键字的所述第一状态集包括以下至少之一:从所述第一状态集读取字段值,将字段值写入所述第一状态集,修改所述第一状态集的字段中的值,向所述第一状态集中的列表添加值,或从所述第一状态集中的列表中去除值;以及
将第二新鲜度值存储在所述第一状态集的所述新鲜度字段中,所述第二新鲜度值指示响应于所述第二命令访问所述第一状态集的时间;
其中,生成第一状态集关键字包括组合来自所述流信息的N个值;以及
执行所述第一命令以访问与所述第一状态集关键字相关的所述第一状态集包括响应于所述第一状态集的状态集关键字选择所述第一状态集,所述第一状态集包括所述第一状态集关键字中的所述N个值中的M个值,其中M小于N。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862637111P | 2018-03-01 | 2018-03-01 | |
US62/637,111 | 2018-03-01 | ||
PCT/US2019/019809 WO2019168965A1 (en) | 2018-03-01 | 2019-02-27 | Packet-programmable statelets |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111771358A CN111771358A (zh) | 2020-10-13 |
CN111771358B true CN111771358B (zh) | 2022-01-11 |
Family
ID=65763821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980015295.0A Active CN111771358B (zh) | 2018-03-01 | 2019-02-27 | 包可编程状态集 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200396320A1 (zh) |
EP (1) | EP3756315A1 (zh) |
CN (1) | CN111771358B (zh) |
WO (1) | WO2019168965A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110768856B (zh) * | 2018-07-27 | 2022-01-14 | 华为技术有限公司 | 网络流测量的方法、网络测量设备以及控制面设备 |
US10931542B2 (en) * | 2018-08-10 | 2021-02-23 | Futurewei Technologies, Inc. | Network embedded real time service level objective validation |
WO2021066793A1 (en) * | 2019-09-30 | 2021-04-08 | Huawei Technologies Co., Ltd. | Statelet reroute protection |
CN113079091B (zh) * | 2020-01-03 | 2022-07-22 | 华为技术有限公司 | 一种主动随流检测的方法、网络设备以及通信系统 |
US11356319B2 (en) * | 2020-09-11 | 2022-06-07 | Arista Networks, Inc. | Distinguishing network vs server issues when diagnosing application performance problems |
WO2021113884A2 (en) * | 2021-02-23 | 2021-06-10 | Futurewei Technologies, Inc. | Agreement to service policy translation system |
DE102021209321A1 (de) * | 2021-08-25 | 2023-03-02 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren zum Betreiben eines Cachespeichers, Cachespeicher und Recheneinheit |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217501A (zh) * | 2007-12-29 | 2008-07-09 | 青岛中科恒信信息技术有限公司 | 一种辅助数据收发装置 |
CN102104541A (zh) * | 2009-12-21 | 2011-06-22 | 索乐弗莱尔通讯公司 | 报头处理引擎 |
CN104243204A (zh) * | 2014-09-03 | 2014-12-24 | 中国电子科技集团公司第三十四研究所 | 光通信网中设备的状态收集和远端控制的方法及装置 |
US9608913B1 (en) * | 2014-02-24 | 2017-03-28 | Google Inc. | Weighted load balancing in a multistage network |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7171469B2 (en) * | 2002-09-16 | 2007-01-30 | Network Appliance, Inc. | Apparatus and method for storing data in a proxy cache in a network |
US7613209B1 (en) * | 2004-03-30 | 2009-11-03 | Extreme Networks, Inc. | System and method for egress packet marking |
US8504775B2 (en) * | 2007-03-12 | 2013-08-06 | Citrix Systems, Inc | Systems and methods of prefreshening cached objects based on user's current web page |
US8477718B2 (en) * | 2008-08-28 | 2013-07-02 | Alcatel Lucent | System and method of serving gateway having mobile packet protocol application-aware packet management |
US20130003549A1 (en) * | 2011-06-30 | 2013-01-03 | Broadcom Corporation | Resilient Hashing for Load Balancing of Traffic Flows |
US8521905B2 (en) * | 2011-12-22 | 2013-08-27 | Telefonaktiebolaget L M Ericsson (Publ) | System for flexible and extensible flow processing in software-defined networks |
US8767757B1 (en) * | 2012-02-15 | 2014-07-01 | Applied Micro Circuits Corporation | Packet forwarding system and method using patricia trie configured hardware |
US9654424B2 (en) * | 2015-07-31 | 2017-05-16 | Nicira, Inc. | Managed forwarding element with conjunctive match flow entries |
WO2017040706A1 (en) * | 2015-09-02 | 2017-03-09 | Cnex Labs, Inc. | Nvm express controller for remote access of memory and i/o over ethernet-type networks |
US10097464B1 (en) * | 2015-12-29 | 2018-10-09 | Amazon Technologies, Inc. | Sampling based on large flow detection for network visibility monitoring |
US10382350B2 (en) * | 2017-09-12 | 2019-08-13 | Mellanox Technologies, Ltd. | Maintaining packet order in offload of packet processing functions |
-
2019
- 2019-02-27 WO PCT/US2019/019809 patent/WO2019168965A1/en unknown
- 2019-02-27 CN CN201980015295.0A patent/CN111771358B/zh active Active
- 2019-02-27 EP EP19710898.8A patent/EP3756315A1/en active Pending
-
2020
- 2020-08-31 US US17/008,347 patent/US20200396320A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217501A (zh) * | 2007-12-29 | 2008-07-09 | 青岛中科恒信信息技术有限公司 | 一种辅助数据收发装置 |
CN102104541A (zh) * | 2009-12-21 | 2011-06-22 | 索乐弗莱尔通讯公司 | 报头处理引擎 |
US9608913B1 (en) * | 2014-02-24 | 2017-03-28 | Google Inc. | Weighted load balancing in a multistage network |
CN104243204A (zh) * | 2014-09-03 | 2014-12-24 | 中国电子科技集团公司第三十四研究所 | 光通信网中设备的状态收集和远端控制的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3756315A1 (en) | 2020-12-30 |
US20200396320A1 (en) | 2020-12-17 |
CN111771358A (zh) | 2020-10-13 |
WO2019168965A1 (en) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111771358B (zh) | 包可编程状态集 | |
US11533263B2 (en) | Self-describing packet headers for concurrent processing | |
US9769074B2 (en) | Network per-flow rate limiting | |
US10498612B2 (en) | Multi-stage selective mirroring | |
US9407560B2 (en) | Software defined network-based load balancing for physical and virtual networks | |
EP2904745B1 (en) | Method and apparatus for accelerating forwarding in software-defined networks | |
CN103765839B (zh) | 用于网络设备内的分组处理的基于变量的转发路径结构 | |
US7599283B1 (en) | Network traffic synchronization and data compression in redundant network topologies | |
US7742406B1 (en) | Coordinated environment for classification and control of network traffic | |
KR20190020082A (ko) | 다수의 채널을 사용하여 성능을 향상시키는 지능형 적응 전송 계층 | |
US7500014B1 (en) | Network link state mirroring | |
CN111385121B (zh) | 一种操作管理维护iOAM报文的传输方法及相应装置 | |
Di Dio et al. | Exploiting state information to support QoS in software-defined WSNs | |
CN109547288B (zh) | 一种协议无关转发网络可编程流测量方法 | |
CN112262554B (zh) | 包可编程流遥测剖析和分析 | |
US20220255867A1 (en) | Enabling quality of service (qos) in information centric networking (icn) | |
CN113328902A (zh) | 网络性能检测方法、装置及网络设备 | |
CN111543034B (zh) | 用于并行处理的自描述数据包头部 | |
CN113055293A (zh) | 软件定义广域网中的选路方法及装置、通信系统 | |
Paliwal et al. | Effective flow table space management using policy-based routing approach in hybrid sdn network | |
WO2023134574A1 (zh) | 流统计方法、装置及系统 | |
CN115242892B (zh) | 一种流标识获取方法、装置、设备及介质 | |
CN111917624B (zh) | 一种在vxlan传输中控制信息的传送方法及系统 | |
US8817638B2 (en) | Method and system for network communications utilizing shared scalable resources | |
Chen et al. | An efficient flow table consistent update scheme for software defined network |
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 |