CN112262554B - 包可编程流遥测剖析和分析 - Google Patents
包可编程流遥测剖析和分析 Download PDFInfo
- Publication number
- CN112262554B CN112262554B CN201980037165.7A CN201980037165A CN112262554B CN 112262554 B CN112262554 B CN 112262554B CN 201980037165 A CN201980037165 A CN 201980037165A CN 112262554 B CN112262554 B CN 112262554B
- Authority
- CN
- China
- Prior art keywords
- packet
- state
- flow
- command
- configuration file
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/02—Capturing of monitoring data
- H04L43/026—Capturing of monitoring data using flow identification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/41—Flow control; Congestion control by acting on aggregated flows or links
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0894—Policy-based network configuration management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/142—Network analysis or design using statistical or mathematical methods
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/40—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/20—Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/20—Traffic policing
-
- 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
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5003—Managing SLA; Interaction between SLA and QoS
- H04L41/5009—Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/06—Generation of reports
- H04L43/062—Generation of reports related to network traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
公开了一种用于执行实现操作流配置文件的机制。接收与流相关联的初始包。该初始包包含头,该头包括与操作流配置文件相关的条件命令。执行条件命令,以通过分配内存来存储应用于流的聚合功能的结果来初始化操作流配置文件的状态。接收与该流相关联的后续包。将上述聚合功能应用于该后续包。存储该聚合功能的结果以更新操作流配置文件的状态。
Description
相关申请的交叉引用
本专利申请要求Alexander Clemm等人的于2018年6月6日递交的发明名称为“包可编程流遥测剖析和分析”,申请号为62/681,527的美国临时专利申请的优先权,上述申请以引用的方式并入本文。
技术领域
本公开一般涉及网络管理,并且具体涉及使用带内信令来管理操作流配置文件(operational flow profile),该操作流配置文件将聚合功能应用于作为流的一部分在网络中传输的包。
背景技术
网络可能希望对加密的流量和未加密的流量进行分析和分类。这种分析可以用于安全和威胁检测,例如用于检测可能传播恶意软件的恶意流。这种分析还可以用作网络规划和执行使用分析的一部分,例如作为开发对用户如何利用网络资源的理解的一部分。作为具体示例,指纹识别涉及生成流配置文件,然后将该流配置文件与以流量的具体类型为特征的其他已知配置文件进行比较,以便评估上述配置文件的相似性来执行适当的分类。在一些情况中,网络剖析(profiling)可能涉及生成测试流量(test traffic)以模拟实际流量(actual traffic),然后对这样的测试流量执行测量。在其他情况中,网络剖析可能涉及将流量导出到外部系统以用于分析。此外,诊断诸如时延波动或丢包之类的事情可能涉及包在流期间所涉及的各种操作参数和设备遥测的剖析。
发明内容
在实施例中,本公开包括一种在网元(network element,NE)中实现的方法。该方法包括由NE的接收器接收与流相关联的初始包,该初始包包含头,该头包括与操作流配置文件相关的条件命令。该方法还包括由NE的处理器执行条件命令,以通过分配NE的内存来存储应用于流的聚合功能的结果来初始化操作流配置文件的状态。该方法还包括由接收器接收与流相关联的后续包。该方法还包括由所述处理器将所述聚合功能应用于所述后续包。该方法还包括将聚合功能的结果存储在内存中以更新操作流配置文件的状态。在一些示例网络中,通过将流量导出到外部服务器并随后分析流量模式来分析网络流量。这种方法具有隐私问题(例如,有效的包嗅探(packet sniffing)),具有时延(例如,不使用实时流量(live traffic)),以及不能指示管理流对实际执行路由功能的对应硬件的影响。公开的实施例使用在头中包含可执行代码的自驱动包(self-driving packet)来在路由节点上建立操作流配置文件。本实施例描述了沿流的路径的节点的动作,该节点用于基于来自边缘节点的指令执行操作流配置文件。然后,该节点可以基于与流相关的实时流量来应用聚合功能(例如,生成直方图)。这种功能的输出对于以资源供应为目的而主动地剖析流是有用的。这种输出还可以用于被动地确定流正在接收服务水平降级(service leveldegradation)(例如,丢包)的原因。这种输出也可以用于监测已经被恶意行为者(malicious actor)危害的流。此外,可以由管理员动态地创建操作流配置文件以提供相关度量(例如,类似于查询),而不是为特定问题使用定制的软件更新(可能花费相当长的开发时间)。
可选地,在任何前述方面中,提供了该方面的另一实施方式:其中,上述初始包中的条件命令包括指定更新操作流配置文件的状态的操作的命令,以实现聚合功能,该方法还包括将指定更新操作流配置文件的状态的操作的命令存储在内存中。例如,用于更新操作流配置文件的命令可以作为状态集(statelet)的一部分存储在高速缓冲内存中,并且被应用于流的每个包。
可选地,在任何前述方面中,提供了该方面的另一实施方式:其中,上述流的多个包包括指定更新操作流配置文件的状态的操作的条件命令,以实现聚合功能,并且其中,更新操作流配置文件的状态的该操作不存储在内存中。例如,内存可以只包含状态信息,并且其他的包可以包括用于对对应包实现聚合功能的命令。
可选地,在任何前述方面中,提供了该方面的另一实施方式:其中,上述流的至少一个包包括描述用于移除操作流配置文件的状态的机制的策略,该方法还包括将用于移除操作流配置文件的状态的策略存储在内存中。例如,该条件命令可以指示何时以及如何拆除操作流配置文件。这些命令可以作为状态集的一部分存储。
可选地,在任何前述方面中,提供了该方面的另一实施方式:其中,上述流的至少一个包包括指定移除操作流配置文件的状态的操作的条件命令,并且其中,移除操作流配置文件的状态的该操作不存储在内存中。例如,指示何时以及如何拆除操作流配置文件的上述命令可以被包括在触发这样的事件的其他的包中。
可选地,在任何前述方面中,提供了该方面的另一实施方式:其中,上述流的至少一个包包括指定导出操作流配置文件的状态的操作的命令,该方法还包括将指定导出操作流配置文件的状态的操作的命令存储在内存中。例如,该条件命令可以指示何时以及如何导出操作流配置文件。这些命令可以作为状态集的一部分存储。
可选地,在任何前述方面中,提供了该方面的另一实施方式:其中,上述流的至少一个包包括指定导出操作流配置文件的状态的操作的条件命令,并且其中,导出操作流配置文件的状态的该操作不存储在内存中。例如,指示何时以及如何导出操作流配置文件的上述条件命令可以被包括在触发这样的事件的其他的包中。
可选地,在任何前述方面中,提供了该方面的另一实施方式:其中,上述流的至少一个包包括条件命令,该条件命令指示操作流配置文件可以应用于沿流的路径的网络中的一个或多个节点。例如,该条件命令可以指定执行操作流配置文件的节点。
可选地,在任何前述方面中,提供了该方面的另一实施方式:其中,上述聚合功能包括将目标数据项与桶准则(bucket criteria,在本文中,桶(bucket)也可称为存储桶,存储空间)进行匹配,基于桶准则更新表示直方图中的桶的一组计数器,以及基于计数器生成直方图。
可选地,在任何前述方面中,提供了该方面的另一实施方式:其中,上述聚合功能测量包数据、流遥测、NE硬件统计、NE硬件遥测、或其组合。
在实施例中,本公开包括一种在NE中实现的方法。该方法包括由NE的处理器获得条件命令以初始化操作流配置文件的状态,该操作流配置文件在沿流的路径的网络中的节点的内存中,该操作流配置文件被初始化以存储应用于流的聚合功能的结果。该方法还包括由处理器将上述条件命令附加到与流相关联的初始包的未加密头。该方法还包括由NE的发射器将初始包发送到沿该流的路径的网络中。在一些示例网络中,通过将流量导出到外部服务器并随后分析流量模式来分析网络流量。这种方法具有隐私问题(例如,有效的包嗅探),具有时延(例如,不使用实时流量),以及不能指示管理流对实际执行路由功能的对应硬件的影响。公开的实施例使用在头中包含可执行代码的自驱动包来在路由节点上建立操作流配置文件。本实施例描述了管理网络中的节点上的这种操作流配置文件的边缘节点的动作。然后,该网络中的节点可以基于与流相关的实时流量来应用聚合功能(例如,生成直方图)。这种功能的输出对于以资源供应为目的而主动地剖析流是有用的。这种输出还可以用于被动地确定流正在接收服务水平降级(例如,丢包)的原因。这种输出也可以用于监测已经被恶意行为者危害的流。此外,可以由管理员动态地创建操作流配置文件以提供相关度量(例如,类似于查询),而不是为特定问题使用定制的软件更新(可能花费相当长的开发时间)。
可选地,在任何前述方面中,提供了该方面的另一实施方式:其中,上述初始包中的条件命令包括指定更新操作流配置文件的状态的操作的命令,以实现聚合功能,该条件命令指引节点将指定更新操作流配置文件的状态的操作的命令存储在节点的内存中。例如,用于更新操作流配置文件的命令可以作为状态集的一部分存储在高速缓冲内存中,并且被应用于流的每个包。
可选地,在任何前述方面中,提供了该方面的另一实施方式:还包括附加条件命令,该条件命令指定更新流的多个包中的操作流配置文件的状态的操作,以实现聚合功能,其中,该条件命令不指引节点将更新操作流配置文件的状态的操作存储在节点的内存中。例如,内存可以只包含状态信息,并且其他的包可以包括用于对对应包实现聚合功能的命令。
可选地,在任何前述方面中,提供了该方面的另一实施方式:其中,上述流的至少一个包包括描述用于移除操作流配置文件的状态的机制的策略,该方法还包括将用于移除操作流配置文件的状态的策略存储在内存中。例如,该条件命令可以指示何时以及如何拆除操作流配置文件。这些命令可以作为状态集的一部分存储。
可选地,在任何前述方面中,提供了该方面的另一实施方式:还包括将指定移除操作流配置文件的状态的操作的条件命令附加到上述流的至少一个包,其中,该条件命令不指引节点将移除操作流配置文件的状态的该操作存储在节点的内存中。例如,指示何时以及如何拆除操作流配置文件的命令可以被包括在触发这样的事件的其他的包中。
可选地,在任何前述方面中,提供了该方面的另一实施方式:其中,上述流的至少一个包包括指定导出操作流配置文件的状态的操作的条件命令,该条件命令指引节点将指定导出操作流配置文件的状态的操作的命令存储在节点的内存中。例如,该条件命令可以指示何时以及如何导出操作流配置文件。这些命令可以作为状态集的一部分存储。
可选地,在任何前述方面中,提供了该方面的另一实施方式:还包括将指定导出操作流配置文件的状态的操作的条件命令附加到上述流的至少一个包,其中,该条件命令不指引节点将导出操作流配置文件的状态的操作存储在节点的内存中。例如,指示何时以及如何导出操作流配置文件的上述条件命令可以被包括在触发这样的事件的其他的包中。
可选地,在任何前述方面中,提供了该方面的另一实施方式:还包括将条件命令附加到流的至少一个包,该条件命令指示操作流配置文件可以应用于沿流的路径的网络中的一个或多个节点的。例如,该条件命令可以指定应当执行操作流配置文件的节点。
可选地,在任何前述方面中,提供了该方面的另一实施方式:其中,上述聚合功能包括将目标数据项与桶准则进行匹配,基于桶准则更新表示直方图中的桶的一组计数器,以及基于计数器生成直方图。
可选地,在任何前述方面中,提供了该方面的另一实施方式:其中,上述聚合功能测量包数据、流遥测、NE硬件统计、NE硬件遥测、或其组合。
在实施例中,本公开包括一种NE,该NE包括处理器、耦合到该处理器的发射器、以及耦合到该处理器的接收器。上述处理器、发射器、以及接收器用于执行任何前述方面中的方法。
在实施例中,本公开包括一种非暂时性计算机可读介质,该非暂时性计算机可读介质包括由NE使用的计算机程序产品。该计算机程序产品包括存储在非暂时性计算机可读介质上的计算机可执行指令,使得当由处理器执行时,使该NE执行任何前述方面中的方法。
在实施例中,本公开包括一种NE,该NE包括:接收模块,用于接收与流相关联的初始包以及与该流相关联的后续包,该初始包包含头,该头包括与操作流配置文件相关的条件命令;初始化模块,用于执行条件命令,以通过分配NE的内存来存储应用于流的聚合功能的结果来初始化操作流配置文件的状态;应用模块,用于将上述聚合功能应用于后续包;以及存储模块,用于存储聚合功能的结果以更新操作流配置文件的状态。
在实施例中,本公开包括一种NE,该NE包括:条件命令模块,用于获得条件命令以初始化操作流配置文件的状态,该操作流配置文件在沿流的路径的网络中的节点的内存中,该操作流配置文件被初始化以存储应用于流的聚合功能的结果;头附加模块,用于将上述条件命令附加到与流相关联的初始包的未加密头;以及发送模块,用于将初始包发送到沿流的路径的网络中。
可选地,在任何前述方面中,提供了该方面的另一实施方式,其中,上述NE还用于执行任何前述方面的方法。
为了清楚起见,任何前述实施例可与任一或多个其他前述实施例组合,以在本公开的范围内创建新的实施例。
从下面结合附图和权利要求的具体实施方式中,将更清楚地理解这些特征和其他特征。
附图说明
为了更完整地理解本公开,现在结合附图和具体实施方式参考以下简要描述,其中,相同的附图标记表示相同的部分。
图1是用于实现操作流配置文件的示例网络的示意图。
图2是用于实现操作流配置文件的示例包处理引擎的示意图。
图3是用于实现操作流配置文件的示例状态集缓存的示意图。
图4是用于实现操作流配置文件的另一示例状态集缓存的示意图。
图5是可以用于管理操作流配置文件的示例包的示意图。
图6是可以用于初始化操作流配置文件的示例条件命令的示意图。
图7是用于管理操作流配置文件的示例网络设备的示意图。
图8是用于管理位于沿流的路径的网络节点的操作流配置文件的示例方法的流程图。
图9是用于管理来自位于网络边缘的网络节点的操作流配置文件的示例方法的流程图。
图10是通过操作流配置文件获得的示例输出的图。
图11是通过操作流配置文件获得的示例输出的另一图。
图12是通过操作流配置文件获得的示例输出的另一图。
图13是通过操作流配置文件获得的示例输出的另一图。
图14是通过操作流配置文件获得的示例输出的另一图。
图15是用于管理操作流配置文件的网元(NE)的实施例的示意图。
图16是用于管理操作流配置文件的NE的另一实施例的示意图。
具体实施方式
首先应当理解,尽管下面提供了一个或多个实施例的说明性实施方式,但是可以使用任何数量的(无论是当前已知的还是现有的)技术来实现公开的系统和/或方法。本公开不限于下面示出的说明性实施方式、附图、以及技术(包括本文示出和描述的示例性设计和实施方式),而是可以在所附权利要求的范围及其等同物的全部范围内对本公开进行修改。
以下是本公开中使用的若干术语的定义。大包协议(big packet protocol,BPP)是用于实现自驱动包和包可编程(packet-programmable)状态集的网络通信协议。自驱动包是包含定义一组条件命令的字段的块或集合的数据包,该条件命令用于引导转发设备(例如,诸如路由器的网络节点)对包的处理。条件命令是其执行取决于满足条件的命令。应当注意,网络可以通过设置总是评估为真的条件来将条件命令作为无条件命令对待。流关键字(flow key)是用于将包与流相关联的一组特征,例如,包字段(例如,源、目的地)、流标识符(identifier,ID)、和/或其他特殊标记的组合。带内操作管理维护(in-situoperations,administration,and maintenance IOAM)是一种机制,通过该机制,当包在网络中传输时,遥测数据的采样可以被附加到包。互联网协议(internet protocol,IP)是用于跨越网络边界中继数据包的通信协议。软件定义网络(software defined network,SDN)是通过将控制面放置在控制器中来分隔控制面功能和数据面功能的网络。该控制器可以是集中式的,并且可以在运行时动态地配置/编程网络节点。状态集是在包转发设备上维护的内存的被隔离部分,该内存用于包含与数据流中的自驱动包相关联并且可以与该自驱动包交互的数据。双向主动测量协议(two-way active measurement protocol,TWAMP)是用于测量网络中支持与TWAMP框架相关联的协议的任何两个设备之间的网络性能的协议。
生成流配置文件涉及确定流的统计,例如流中的包的数量或包的平均大小。然而,流配置文件也可以涉及测量如下的项目,该项目不作为流缓存的一部分而维护并且不能作为流记录(例如流中的包的大小的分布或包的间隔模式)的一部分而获得。此外,其他类型的特性可以动态地和实时地被纳入考虑。获得这样的配置文件可以包括抓包并将这些包导出到存储包并对这些包运行分析的外部系统。这种方法有许多限制,包括生成、导出、以及收集的数据量、处理数据的可扩展性、以及因为抓包可能相当于窃听而带来的隐私问题和监管问题。此外,因为导出用于分析的数据通常与显著的时延(大约数天到数周)相关联,所以这样的系统对于管理动态问题可能是不切实际的。
本文公开了在活动网络上实时实现操作流配置文件的机制。操作流配置文件可以对实时流量执行分析。例如,边缘节点和/或网络外部的节点可以生成条件命令以创建和/或管理操作流配置文件。然后,可以将这样的命令附加到携带作为数据流的一部分的实时数据的包的头。在一些示例中,条件命令应用于沿流的路径的指定节点。在其他示例中,条件命令应用于沿流的路径的任何节点。条件命令还可以包括启动命令所应当满足的条件。例如,条件命令可以在出现指定条件时(例如在指定链路利用、丢包、队列占用等时)指示创建操作流。为了管理操作流配置文件,条件命令可以包含指示操作流配置文件的初始配置文件状态的指引。条件命令还可以指示为了更新配置文件状态而要使用的过程和/或在确定是否更新配置文件状态时要使用的条件。条件命令还可以指示何时应当导出配置文件状态以及应当如何导出配置文件状态(例如,导出到诸如控制器的外部节点)。条件命令还可以指示移除配置文件状态和拆除操作流配置文件要采取的过程和/或发起这种移除的条件。这样的条件命令可以被包括在单个包头中、分布在多个流的包的多个包头中、包括在流中的所有包的包头中、或其组合。例如,初始化操作流配置文件的条件命令可以与第一包一起转发。然后,命令可以使内部节点初始化高速缓冲内存中的配置文件状态,例如作为状态集的一部分。命令还可以指示何时以及如何更新配置文件状态,并且这样的信息可以存储在高速缓冲内存中。内部节点然后可以应用所指示的功能。在指定时间结束时或在事件发生时,边缘节点可以向内部节点发送作为另一包头的一部分的附加的条件命令。这样的命令可以指引内部节点导出配置文件状态和移除配置文件。在另一示例中,第一包可以初始化配置文件状态。第一包和每个后续包还可以包括指示何时以及如何更新配置文件状态的条件命令。内部节点可以不存储这样的命令,但是可以在接收时执行命令。在这样的示例中,内部节点可以根据接收到的包执行不同的更新。可以使用许多其他组合和/或排列。在任何情况下,配置文件状态命令可以被包括在单个包的头和/或多个包的头中,并且可以(或可以不)被存储在操作该操作流配置文件的节点的高速缓冲内存中。例如,操作流配置文件可以被用于应用聚合功能,例如以生成和导出直方图。这样的聚合功能可以应用于包的测量属性(例如,包的大小)、设备硬件统计数据、或其组合。具体地,聚合功能是聚合数据的功能,并且聚合功能可以应用于如本文所述的各种类型的数据。例如,聚合功能可以应用于与流中的包的属性(例如,流中的包的大小)相关的数据、与遥测相关的数据(例如,流中的包遇到的出口队列占用)、与设备统计相关的数据(例如,接口利用率)。聚合功能的示例包括平均功能、最小功能、最大功能、计数功能、以及维护直方图的功能。如本文所使用的,遥测指示与装置和/或流相关的测量数据的读取。
操作流配置文件的输出然后可以用于网络管理决策和/或作为其他功能的输入。例如,可以生成操作流配置文件以将流配置文件与已知配置文件进行比较。作为具体示例,可以将活动的流的流配置文件与和恶意软件或其他恶意网络活动相关联的流配置文件进行比较。这样,可以在不检查底层包数据的情况下将上述流标记为恶意,并且因此不侵犯相关联的系统和用户的隐私。此外,可以在不会显著影响提供给该流的服务的情况下实时测试该流,直到做出确定。在另一示例中,操作流配置文件的输出可以用于执行网络诊断和/或通知网络供应。例如,可以创建一个或多个操作流配置文件以在实时流上实时诊断丢包的原因。作为具体示例,指示许多包正经历高接口利用率的操作流配置文件可以用于确定在网络中的特定设备处发生的特定流的丢包可能是由过度利用的接口(例如,发射器、接收器、端口等)所引起,并且因此应当重新路由流和/或应当供应更多接口以修复丢包问题。作为另一示例,指示包通常遇到高队列占用(因此重传的等待时间长)的操作流配置文件可以用于确定当前的资源预留对于该流是不够的,应当添加更多的资源。甚至可以使用多维操作流配置文件来比较多个数据集,以做出更复杂的决策。这样,操作流配置文件可以用于提供网络中的流量状况的实时分析。此外,操作流配置文件可以收集有用的网络度量而不侵犯隐私。此外,新型的操作流配置文件可以由单个程序员(使用公开的机制)在短时间段(例如,数分钟到数小时)内动态地生成,而不是依赖于开发团队来开发软件组件以便以特定方式提取和聚合特定信息来解决特定网络问题(例如,这可能花费数周到数月,并且产生显著的费用)。因此,操作流配置文件在沿流的路径的网络节点创建附加功能,并且允许这样的节点以比其他网络流量分析机制使用更少的计算、内存、以及网络资源的方式提供可操作的遥测和分析。
因此,本公开提供了允许在网络内对流进行剖析而不必依赖于外部系统的机制。这种机制以允许动态地编程配置文件的方式提供了这种功能。这包括提供要剖析的数据的指示以及应当如何执行这种剖析的指示。此外,这样的机制可以将不同的配置文件应用于不同的流。通过使用具有条件命令的自驱动包以及包可编程状态集,可以从网络的边缘对流配置文件进行编程,而无需对各个网络节点进行编程。这样的公开使用操作流配置文件。操作流配置文件使用在处理流期间遇到的操作特性的配置文件,例如在处理各个包时遇到的链路利用率、出口队列深度(egress queue depth)、内存利用率等的分布/直方图。更高级的操作流配置文件可以记录为特定条件下这些参数的分布/直方图,例如当遇到特定大小的包时或者当超过特定的包的到达间隔(inter-arrival)时延时的链路利用率和/或出口队列深度。
这样的操作流配置文件可以帮助用户和运营商诊断服务水平降级的原因,包括延迟、抖动(jitter)、以及丢包。其他网络工具可能在这方面是不够的。例如,一些工具提供固定的静态信息元素集合,用户不能编程或改变该固定的静态信息元素集合。可以使用其他工具来收集包在网络中传输时针对这些包选择的遥测,但是可以获得的遥测是固定的(不是可以自由编程的),并且每个包可以创建单独的数据记录,然后将该数据记录导出并在外部进行处理。在这样的工具中,在给定流的包上不发生聚合或剖析,这可能潜在地导致数百万条记录,这些记录随后被导出以生成单个配置文件。相反,这里提出的机制更强大和更先进(例如,更便于定制并且提供更多可用功能)。公开的机制允许在网络中生成流的定制配置文件。定制配置文件包括可以应用于流的每个包的聚合功能以及基于该聚合功能的结果聚合的相关联的数据集。这种聚合功能可以包括直方图、最大值功能、top-n(前数)功能、均值功能等。
聚合的数据可以包括关于包的数据(例如包的大小,)、关于设备状态的数据(例如当前接口利用率)、关于设备遥测的数据(例如出口队列占用)、关于流遥测的数据(例如来自先前包的时间)等。此外,可以改进定制配置文件,以只在满足特定条件时应用聚合。例如,可以在处理包时针对链路利用率、出口队列深度、和/或内存利用率生成分布和/或直方图。此外,当遇到特定大小的包时,当超过特定到达间隔延迟时,等等,可以在特定条件(例如分布链路利用/出口队列深度等)下生成分布和/或直方图。可以以多种方式处理操作流配置文件。例如,操作流配置文件可以被导出到外部控制器、收集器、和/或边缘设备,和/或操作流配置文件可以充当设备自身(例如,沿流的路径的网络节点)内的其他功能的输入。这样的信息可以帮助运营商或用户理解和解释服务级别降级的可能原因、验证资源的适当保留等。本公开提供了一种确定操作流配置文件的解决方案,该解决方案具有与网络监测、故障排除、保证、以及优化相关的应用的许多用途。
图1是用于实现操作流配置文件123的示例网络100的示意图。网络100可以由服务提供商或其他网络服务提供商(例如企业网络服务提供商、信息技术部门、数据中心提供商等)来操作。网络100包括耦合远程节点115的网络域110。网络域110包括充当入口点和出口点的边缘节点111以及传输数据(例如数据包122的数据流121)的内部节点112。在一些示例中,可选地,网络100可以包括控制器113(例如软件定义网络(SDN)控制器)以管理网络路由。
远程节点115是操作应用程序并希望彼此通信的节点。例如,远程节点115可以包括服务器、客户端、和/或具有网络接口的其他计算机。这样的远程节点115可以通过经由网络域110传输数据流121来彼此通信。数据流121是在诸如远程节点115的一组公共端点之间的一组相关通信。数据流121可以被节点111、节点112、和/或节点115识别为共享关键字字段的公共值(例如相同的源IP地址、目的地IP地址、源端口地址、以及目的地端口地址)的一组数据包122。作为具体示例,在远程节点115上操作的应用可以发起通信会话。在通信会话期间在远程节点115之间交换的数据可以作为数据流121被发送。数据流121中的数据被分成数据包122以供传输。数据流121可以使用流关键字,该流关键字是网络域110用来将数据包122与数据流121相关联的一组数据包特性。例如,流关键字可以包括指示流成员(flowmembership)的数据包字段的组合。这样的字段可以包括源IP地址、目的地IP地址、源端口地址、以及目的地端口地址。也可以使用其他关键字字段。数据包122包括具有路由信息(例如流关键字)的头和具有在远程节点115之间交换的数据的有效载荷。在一些情况下,有效载荷可能被加密,并且可能不能被连接远程节点115的网络域110读取。
数据流121经由服务提供商操作的网络域110在远程节点115之间交换。网络域110是一组由联网策略的公共集合控制的互连网络部件。网络域110包括边缘节点111、内部节点112、以及链路。边缘节点111是能够将数据包122转换成符合网络域110的策略的形式的网络设备。例如,边缘节点111可以实现用于网络域110的安全策略,根据网络域110寻址方案改变数据包122网络地址,管理数据流121的通过网络域110的路径等。因此,边缘节点111充当到网络域110的入口点和出口点。作为特定示例,边缘节点111可以确定跨网络域110的路径,封装包122以使包122经由隧道继续通过网络域110,等等。边缘节点111通过一系列内部节点112和对应的链路(如线所示)互连。内部节点112是网络设备(例如路由器),用于读取数据包122的头信息,并根据该头信息转发数据包122。边缘节点111和内部节点112还可以包含流缓存,该流缓存提供与数据流121相关的上下文信息。例如,流缓存可以包含与经过包含流缓存的节点的每个数据流121相关联的流缓存条目。流缓存条目可以包含数据流121的持续时间信息、开始时间、源地址、目的地地址、发送的包122的数量、在流中发送的数据量、和/或其他数据流121相关信息。
在一些情况中,网络域110路由功能和数据管理功能可以被分解,并且分布在遍及网络域110的各个边缘节点111和/或内部节点112之间。在其他情况中,网络域110可以包括控制器113,控制器113是用于做出路由决策并管理网络100操作的网络设备。例如,当网络域110被配置为SDN时,控制器113是SDN控制器。当不存在控制器113时,通过联系边缘节点111以确定和建立用于通过网络域110的数据流121的路由,远程节点115可以发起通信。当存在控制器113时,远程节点115可以联系边缘节点111,边缘节点111然后联系控制器113以发起用于数据流121的路由。控制器113保持对网络域110资源的了解,并且用于确定数据流121的网络路由。控制器113可以向边缘节点111提供指示将用于数据流121的路由的命令。应当注意,服务提供商可以使用许多不同的网络100配置。为了讨论的清楚,提供前述内容作为通用的数据包122/数据流121路由方法的示例,而不应被认为是限制性的。
网络域110可以使用条件命令来管理数据包122的处理。例如,条件命令允许包122指引应当如何路由包122(例如,自驱动),而不是依赖于内部节点112和/或边缘节点111的网络策略。条件命令由充当入口节点(例如,头端节点)的边缘节点111放置在/附加到包122的头。条件命令包括条件,命令,并且还可以包括一个或多个参数。该条件指示在执行命令之前需要满足的项。当不满足条件时,该命令被忽略。在条件发生时,该命令指示由处理数据包122的节点采取的一个或多个动作。当存在参数时,参数进一步阐明条件和/或命令。
条件命令也可以用于实现操作流配置文件123。操作流配置文件123是对沿流121的路径的包122、流121、和/或节点111、和/或节点112执行测量并且报告对应结果的聚合机制。操作流配置文件123可以在沿流121的路径的一个或多个节点111和/或节点112上实现。例如,网络管理员可以确定分析数据包122、流121、和/或对应流量对沿流121的路径的节点111和/或节点112的影响。作为具体示例,网络管理员可能希望分析流121以检查恶意软件,解决网络错误,和/或管理网络供应。网络管理员可以生成和/或请求生成条件命令以实现操作流配置文件123来执行这样的分析。这样的命令可以由边缘节点111生成和/或发送到边缘节点111,该边缘节点111充当流121的入口节点。然后,当数据流121的数据包122进入网络域110时,入口边缘节点111可以将条件命令附加到这样的包122上。内部节点112在路由期间从包122获得条件命令。当满足条件命令的条件时,处理包122的内部节点112和/或边缘节点111可以执行相关联的命令。用于管理操作流配置文件123的条件命令可以是除了存储的路由命令之外执行的补充命令,并且因此可以被认为是非阻塞(non-blocking)命令。
具体地,可以结合可编程包122使用条件命令集,以生成对应流121的定制操作流配置文件123。该条件命令集可以指定一种机制,该机制用于当在对应节点111和/或节点112上不存在操作流配置文件123的配置文件状态时,初始化这样的状态。这可以包括用空的配置文件来初始化状态集。状态集是节点111和/或节点112上的维护数据流121的状态数据的可编程数据结构。状态集可以在状态集缓存中实现,状态集缓存是专用于以类似于流缓存的方式维护数据流121的状态数据的高速缓冲内存的一部分。状态集缓存可以在运行时由条件命令来编程和/或重新编程,以将数据以期望的形式维护,以符合操作流配置文件123的目的。该条件命令集还可以指定更新操作流配置文件123的配置文件状态以及相关联的条件(如果有的话)的机制。这可以涉及通过针对当前包122观察到的遥测来更新配置文件状态。例如,可以通过递增内存中的特定桶的计数来更新直方图。该条件命令集还可以指定用于导出操作流配置文件123的配置文件状态的机制。这可以涉及指示何时应该发生这样的导出以及这样的导出的目的地。该条件命令集还可以指定用于移除操作流配置文件123的配置文件状态以及在移除时要采取的其他动作(如果有的话)的机制。例如,这可以涉及指定非激活定时器(inactivity timer),在该非激活定时器之后上述状态集被移除,例如,通过到期动作(expiration action,也称为终止动作)(诸如将配置文件导出到指定目的地)来移除该状态集。该条件命令还可以包括在执行此类命令之前需要应用的条件。因此,条件命令可以指示指定的节点111和/或节点112将维护操作流配置文件123。这可以包括任何节点111和/或节点112、出口边缘节点111、指定的内部节点112、和/或以特定方式标记的任何节点111和/或节点112。上述条件命令还可以指示对于要应用的命令需要满足的任何其他条件。例如,这样的条件可以用于创建复杂的操作流配置文件123功能(例如,可以只针对指定大小的包更新流状态等)。
如上所述,通过使入口边缘节点111将这样的命令附加到未加密的包头,可以在自驱动包122中携带这样的命令。然后,由对应的节点基础设施执行上述命令。例如,可以根据BPP来配置网络100的节点基础设施和包122。BPP是为自驱动包和包可编程状态集提供支持的协议和框架。除了其他头信息之外,BPP数据包122可以包括命令块和/或元数据。一旦进入网络域110,边缘节点111可以将包括条件命令的元数据添加到数据包122。然后,沿流121的路径的其他节点111和/或节点112可以读取该元数据,并根据包122中的条件集来设置操作流配置文件123。
公开的机制假设包122的流121关键字和/或流121成员可以由节点111和节点112确定。例如,未加密的头开放了IP流关键字字段(例如,在基于传输层安全(transportlayer security,TLS)的通信中)。在另一示例中,边缘节点111可以将包122标记为属于对应的流121。然后,内部节点112可以读取这样的标记并对其操作。
图2是用于实现操作流配置文件(例如操作流配置文件123)的示例包处理引擎200的示意图。例如,包处理引擎200可以在网络100中的边缘节点111和/或内部节点112上操作。作为具体示例,包处理引擎200可以根据BPP来操作,并且因此可以充当BPP引擎。引擎200包括解析器231、命令引擎232、状态集命令模块234、状态集缓存管理器235、以及状态集缓存236。
解析器231是用于分析符号串的部件。具体地,解析器231用于接收输入的数据包(诸如数据包122),并且分析数据包头和/或元数据。当包处理引擎200在入口边缘节点上操作时,上述输入的数据包可以不包含与操作流配置文件相关的数据。在这种情况中,如下所述,由命令引擎232添加管理操作流配置文件的条件命令。例如,在这种情况中,包处理引擎200可以充当网关,并且因此将待由下游节点执行的条件命令附加到BPP块。因此,解析器231读取数据包头以获得地址信息,从而确定源、目的地、相关联的流等。当包处理引擎200在内部节点或出口边缘节点上操作时,数据包头和/或元数据可以包含与操作流配置文件相关的命令(例如,该命令由入口边缘节点插入到包中)。在这种情况中,解析器231读取数据包头和/或元数据,以获得除地址/流信息之外的与操作流配置文件相关的命令。
命令引擎232是用于从解析器231接收解析的数据包信息并且管理包处理引擎200的操作流配置文件的部件。当包处理引擎200在入口边缘节点上操作时,命令引擎232接收解析的包信息,并且例如经由流关键字来确定包属于哪个流。然后,命令引擎232确定哪些操作流配置文件与流相关联,制定条件命令以实现和/或管理操作流配置文件,并且将这样的条件命令附加到数据包。例如,命令引擎232可以在发起上述流时从系统管理员和/或从用户获得操作流配置文件的条件命令。可以经由控制器和/或发起流的远程节点接收条件命令。命令引擎232然后可以将这些命令与内存中(例如,在状态集缓存236和/或流缓存中)的流相关联,以便附加到输入的数据包。在这种情况中,命令引擎232将具有附加的操作流配置文件数据的包转发到转发器233,以用于通过网络进行通信。
当包处理引擎200在内部节点和/或出口节点上操作时,命令引擎232用于经由解析器231从输入的数据包获得操作流配置文件信息。操作流配置文件信息可以包括发起、更新、导出、和/或移除操作流配置文件的状态的条件命令以及描述这样的机制(例如,描述这样的机制应当何时发生和/或如何发生)的任何元数据。命令引擎232还可以确定与包相关联的流,并使用流信息来从状态集缓存管理器235和/或状态集缓存236获得对应的操作流配置文件信息。命令引擎232使用操作流配置文件信息,例如结合状态集缓存236以支持测量和执行。例如,当操作流还没有被初始化时,命令引擎232可以使用条件命令来初始化状态集缓存236中的操作流配置文件的状态。初始化操作流配置文件的状态可以包括创建可以被递增以保留聚合数据的桶(例如,计数器变量(counter variable))。初始化状态还可以包括指示用于递增桶的条件的操作命令。作为另一示例,命令引擎232可以使用条件命令来实现对操作流配置文件状态的指定更新。作为又一示例,命令引擎232可以使用条件命令来确定何时和如何导出操作流配置文件状态、以及何时和如何从状态集缓存236中移除操作流配置文件状态。
状态集缓存管理器235是管理部件,该管理部件用于分配状态集缓存236中的内存、将数据写入状态集缓存236、从状态集缓存236读取数据、和/或清除状态集缓存236的内存。状态集缓存236是可编程内存缓存,该可编程内存缓存可以用于存储操作流配置文件状态和任何对应的数据,以及将这样的信息与对应的流相关联。可以例如通过数据包中的条件命令来编程状态集缓存236,以在应用聚合功能(诸如直方图)期间保持与流相关联的操作流配置文件的数据。例如,状态集缓存236可以存储、更新、以及检索每个流的桶和其他数据。状态集命令模块234是用于控制状态集缓存236和/或状态集缓存管理器235的创建和维护的部件。例如,状态集命令模块234可以基于来自命令引擎232的命令创建新的状态集和/或更改现有状态集的内容。
转发器233是用于向下游节点/设备发送数据包的通信部件。例如,转发器233可以基于来自状态集命令模块234的命令和/或基于解析器231从数据包头中获得的地址信息,做出针对数据包的路由决策和/或转发决策。
功能上,包处理引擎200在解析器231接收数据包,在命令引擎232获得来自包元数据的条件命令,执行测量,确定是否满足条件,和/或在状态集命令模块234执行条件命令,在状态集缓存236存储对应的操作流配置文件状态数据以支持在状态集命令模块234的操作,以及在转发器233向下游转发数据包。当包处理引擎200位于入口边缘节点或出口边缘节点时,包处理引擎200还可以分别插入条件命令或移除条件命令,以支持网络中的其他节点经由条件命令对操作流配置文件的管理。
图3是用于实现操作流配置文件(例如操作流配置文件123)的示例状态集缓存300的示意图。例如,可以使用状态集缓存300来实现包处理引擎200中的状态集缓存236。因此,状态集缓存300可以在网络100中的节点111和/或节点112上使用。状态集缓存300可编程为存储操作流配置文件的状态,以支持设备、包、和/或流相关的测量,并支持条件命令的执行。可以使用广泛的测量和条件命令来管理各种操作流配置文件。因此,状态集缓存300包含可编程为存储支持数据包和/或对应的流的操作流配置文件管理所期望的几乎任何数据的字段。状态集缓存300包含网络数据361和可编程元数据362。网络数据361是与流和状态集有关的数据。元数据362是用于特定于操作流配置文件的数据内容和/或要采取的管理操作流配置文件的对应动作的数据存储。
网络数据361包括流关键字341字段,流关键字341字段是可以用于将数据包与对应流匹配的数据。例如,流关键字341可以包括包字段(例如,源和目的地)、流ID、和/或其他特殊标记的组合。网络数据361还可以包括最后包时间(last packet time)342字段,最后包时间342字段包括时间戳,该时间戳指示何时接收到流关键字341所指示的流的紧接的前一个包。网络数据361还可以包含到期343字段,该字段包含定时器或时间戳。当包含到期343字段中包含的定时器和/或时间戳达到零和/或超过到期阈值时,状态集到期。可以基于非激活时段设置到期343字段的定时器/时间戳,其中,当在定义的时间段内没有接收到上述流的新的包时,非激活时段使状态集到期。此外,作为示例,状态集缓存300被包括在内,并且在一些示例中可以使用附加的/不同的字段。
元数据362可以包含在指定时间点的操作流配置文件的状态。在状态集缓存300中所示的示例中,元数据362包括操作命令344和桶345。操作命令344包括指示用于更新桶345的条件和指令的命令。桶345包含数据,该数据包括从包和/或设备状态测量的并且对对应的流随时间聚合的值。
以下是可以由状态集缓存300中的元数据362实现的示例操作流配置文件(例如,操作流配置文件123)。示例操作流配置文件被设计为产生对应流内的包的长度分布的直方图。直方图包括五个桶345,表示为B[0]、B[1]、B[2]、B[3]、以及B[4]。B[0]计数流中长度为十六个八位字节或更少的包的数量。B[1]计数该流中长度大于十六个八位字节且小于或等于三十二个八位字节的包的数量。B[2]计数该流中长度大于三十二个八位字节且小于或等于一百二十八个八位字节的包的数量。B[3]计数该流中长度大于一百二十八个八位字节且小于或等于五百一十二个八位字节的包的数量。B[3]计数该流中长度大于五百一十二个八位字节的包的数量。当流处于非活动状态十五秒或更长时间时,应清除直方图。在清除直方图时,节点应当将该直方图导出到指定的收集器(例如,用于向用户/管理员显示和/或用作其他自动化功能的输入)。
可以通过创建携带以下命令的包来实现上述功能,这些命令由包所经过的节点执行。如果这是观察到的流的第一个包,则用下列信息初始化状态集。该包包括状态集的内务信息,该内务信息包括最近接收到的流的包的时间(例如,当前时间)、到期时间(例如,十五秒)、到期动作=导出、以及与状态集相关联的流关键字。来自包的流关键字被存储在流关键字341中,最近接收到的流的包的时间被存储在最后包时间342中,以及到期时间被存储在到期343中。到期动作后的导出被存储在操作命令344中。导出的目的地可以被单独地配置和/或被携带在包中的附加元数据参数中。导出的目的地也可以在接收后被存储在操作命令344中。
如上所述,上述包还包括状态集直方图元数据,该状态集直方图元数据指示初始化为零的五个桶345,其中每个桶345具有为包的大小的边界。状态集直方图元数据被用于创建和初始化桶345。在本示例中,包还包括更新逻辑(update logic),该更新逻辑应用于流中的所有包。在这种情况中,上述更新逻辑基于包的长度和桶的边界来更新流的每个包的桶345中的一个桶。上述命令表示为通用伪编程指令,该命令执行以下:
Switch(packet_length):
Case 16(or less):incr(b0);break
Case 32(or less):incr(b1);break
Case 128(or less):incr(b2);break
Case 512(or less):incr(b3);break
Incr(b4)
在本示例中,上述更新逻辑从包含初始化指令的包(例如,流的第一包)接收,并被存储在操作命令中。为了在可编程包的头中携带前述指令,可以想到更简洁的指令。例如,在第一种变型中,Statelet.B.update(PL)命令可以被包括在包中。该命令调用对B的直方图更新方法,其中,B是存储在状态集缓存300中的类型直方图的对象。状态集缓存300可以包括B的自描述元数据,包括桶345的数量和桶345的边界。在第二示例性变型中,Statelet.B.update(PL,16,32,128,512)命令可以被包括在包中。在这种情况中,B是存储在状态集缓存300中的类型直方图的对象,其中,在包中携带的命令提供要应用的桶345的边界(以及隐含的桶的数量)。在上述示例中,操作命令344将至少包括以下各项:元数据B、类型直方图、桶=5、桶大小=2、边界=16、32、128、512。应当注意,初始包的长度对于发送方来说可能已经是已知的(例如,因为包的长度可能不一定需要跨网络中的不同节点的评估)。然而,在其他数据项的情况中(诸如遇到的接口利用率),发送方可能不知道这样的数据。
图4是用于实现操作流配置文件(例如操作流配置文件123)的另一示例状态集缓存400的示意图。例如,可以使用状态集缓存400来实现包处理引擎200中的状态集缓存236。因此,可以在网络100中的节点111和/或节点112上使用状态集缓存400。状态集缓存400类似于状态集缓存300。具体地,状态集缓存400包括网络数据461和元数据462,网络数据461包含流关键字441、最后包时间442、以及到期443,元数据462包含桶445,上述数据基本上分别类似于网络数据361、流关键字341、最后包时间342、到期343、元数据362、以及桶345。不同之处在于状态集缓存400不包括操作命令344。
描述状态集缓存400以示出条件命令可以通过初始化状态集缓存400的桶445来初始化操作流配置文件,而省略了内存中描述应该如何更新、导出、和/或移除状态的一些命令或所有命令。在该示例中,用于更新操作流配置文件的相关命令将被包括在流中的每个包中。因此,内部节点可以检查来自每个包的条件命令并且相应地更新桶445。这可以允许将不同的功能应用于不同的包,例如,通过使用不同的桶445作为用于对应功能的内存。此外,用于移除和/或导出操作流配置文件状态的命令可以包括在触发这样的功能的包中。因此,可以按需移除和/或导出操作流配置文件状态。也可以出现子组合,其中,一些操作命令存储在状态集缓存300和/或400中,而其他操作命令在内存中省略并包含在相关的包头中。
图5是可以用于管理操作流配置文件(例如操作流配置文件123)的示例包500的示意图。例如,包500可以携带足以初始化和/或管理状态集缓存236、300、和/或400的条件语句。因此,包500可以用于初始化操作流配置文件的状态,并指引对应节点(例如节点111和/或节点112)更新、导出、和/或移除这样的状态。
边缘节点(例如边缘节点111)可以从远程节点(例如远程节点115)接收通信包。边缘节点然后可以添加条件命令以创建包500。边缘节点然后可以将包500转发到网络中以管理在沿对应流的路径的节点中操作的操作流配置文件。具体地,边缘节点可以接收包括以太网帧551、头553、以及有效载荷559的通信包。以太网帧551包含通信包的第二层源数据和目的地数据,例如源和目的地的媒体访问控制(media access control,MAC)地址。头553含有包的地址和其他头信息,例如互联网协议(internet protocol,IP)第4版(IP versionfour,IPv4)和/或第6版(IP version six,IPv6)、多协议标签交换(multi-protocol labelswitching,MPLS)头、传输层头等。有效载荷559是从源传送到目的地(例如,在网络中)的数据。边缘节点接收通信包并添加附加字段以将接收到的通信包转换成根据BPP格式化的包500。
具体地,包500包括以太网帧551、头553、有效载荷559、BPP头555、命令块557、和/或元数据块558。边缘节点添加BPP头555,BPP头555指示包500是BPP包。BPP头555也可以称为BPP命令头。边缘节点还可以添加命令块557,命令块557可以包含为了发起条件命令而应当满足的一个或多个条件。边缘节点还可以添加元数据块558以包含要作为条件命令的一部分(例如,在条件发生时)采取的动作。因此,BPP头555、命令块557、和/或元数据块558可以由入口边缘节点插入到包500中,由沿流的路径的内部节点处理,并且如果需要的话由出口边缘节点移除。
BPP头555可以包含指示基于BPP的命令的长度的命令长度字段571。BPP头555还可以包括序列号字段572,序列号字段572包含唯一标识对应的命令的序列号。
命令块557可以包含条件集567,条件集567包含用作条件命令的一部分的一个或多个条件。例如,命令块557中的条件集567可以包括指示条件集567的长度的条件集长度字段573。条件集567还可以包括条件字段575,条件字段575包括为了执行动作集568中的对应命令而应满足的一个或多个条件。条件集567还可以包括and/or字段574,以指示条件字段575中的条件是否根据逻辑and或逻辑or来解释。具体地,逻辑and指示应满足条件集567中的所有条件以启动动作集568,而逻辑or指示可以满足条件集567中的任一条件以启动动作集568。
元数据块558可以包含动作集568,并且因此可以包含条件命令的命令部分。动作集568可以包括动作集长度字段576,该字段指示动作集568的长度。动作集568还包括一个或多个动作577,这些动作包含在条件集567中的条件发生时要执行的命令。
当用于管理操作流配置文件时,条件集567可以包含指示哪些节点应执行动作集568的数据。因此,条件集567可以用于选择应包含操作流配置文件的节点。此外,条件集567可以包含指示应当触发操作流配置文件的执行中的改变的情况的数据。例如,可以设置条件集567以指示为了启动、更新、导出、和/或移除操作流配置文件状态而应该存在的情况。同时,动作集568可以包含在对应的条件发生时要采取的动作。例如,动作集568可以包含用于初始化、更新、导出、和/或移除操作流配置文件状态的指令。应当注意,不同的动作可以由不同的条件触发。因此,操作流配置文件的功能可以通过使用包含不同条件集567和不同动作集568的多个包500来建立。还应当注意,条件集567和动作集568可以对包500的路由没有影响,并且还可以对有效载荷559没有直接影响。编码在条件集567和动作集568中的条件命令可以简单地使用有效载荷559和支持包(supporting packet)500结构来将条件命令路由到管理与有效载荷559相关联的流的相关节点。这样,条件命令可以在不直接知道正被传送的有效载荷559的情况下对流进行操作。
图6是可以用于初始化操作流配置文件(例如操作流配置文件123)的示例条件命令600的示意图。例如,条件命令600可以作为包500的一部分被发送,以便初始化和/或管理状态集缓存236、300、和/或400。因此,条件命令600可以用于初始化操作流配置文件的状态,并指引对应的节点(例如节点111和/或节点112)更新、导出、和/或移除这样的状态。
条件命令600包含可以分别实现条件集567和动作集568的具体示例的示例条件块675和示例动作块677。示出的条件命令600初始化状态集B以充当操作流配置文件。具体地,当该流的状态集B不存在时,条件命令600初始化状态集B。因此,可以在流中的第一包上使用条件命令600以创建操作流配置文件,以对附加的流的包执行聚合功能。
条件675进行检查以确定状态集B是否已经存在。如果是,则不创建新的状态集。具体地,条件675包含状态集B存在条件,设置为零的非标志(notflag)指示状态集B存在条件应该被解释为否定。总之,当在接收节点不存在状态集B时,满足条件675。条件675还包含被设置为八个八位字节的条件集(condition set,CS)长度数据,以指示条件集的长度。条件675还包含状态集B的偏移和长度,分别为零和二十个八位字节。条件675还可以包含设置为零的x标志,可以更改该x标志以修改条件675。
当满足条件675时,执行动作677。在这种情况中,当接收条件命令600的节点处不存在状态集B时,动作677创建状态集B。动作677包含指示动作677的长度的二十个八位字节的动作集(action set,AS)长度。动作677还包含设置为零的序列号,以指示这是用于对应的流的第一条件命令600。动作677还包含设置为零的X标志。动作677包含创建递增桶的命令。然后,动作677将桶的数量设置为五,并且将桶的大小(例如,分配给每个桶的内存量)设置为五个八位字节。然后,动作677将表示为B0的第一桶设置到状态集B中的第一内存位置。然后,动作677提供这组桶的名称PL。名称PL稍后可以被更新命令(例如,命令Statelet.B.update(PL),Statelet.B.update(PL,16,32,128,512)等)调用以更新桶,然后,动作677分别为桶B1、B2、B3、以及B4提供大于十六个八位字节、大于三十二个八位字节、大于一百二十八个八位字节、以及大于五百一十二个八位字节的下边界。B1的下边界使B0的上边界为小于或等于十六个八位字节。这样,根据条件675,在不存在状态集B时,动作677可以创建这样的状态集以实现状态集缓存400。动作677还可以用于通过进一步包括更新指令作为操作命令344来创建状态集缓存300。应注意,包括条件命令600以示出创建操作流配置文件的命令的具体实例。本领域技术人员将理解,条件命令600可以被修改以包括广泛的条件和命令,以便基于期望的效果创建广泛的操作流配置文件。此外,这样的命令可以简单地由具有普通编程技术的网络管理员生成,以便创建期望用于解决具体问题和/或在数据中心的操作期间出现的问题的功能。
图7是用于管理操作流配置文件(例如操作流配置文件123)的示例网络设备700的示意图。例如,网络设备700可以与网络包(例如作为数据流121的一部分的数据包122)交互。作为其他示例,网络设备700可以实现网络域110中的边缘节点111、内部节点112、和/或控制器113。此外,网络设备700可以用于创建和/或执行作为包500的一部分的条件命令600,以便初始化和/或管理状态集缓存236、300、和/或400。此外,网络设备700可以用于包处理引擎200。此外,网络设备700可以用于实现方法800、和/或方法900、以及本文公开的其他方法/机制。
因此,网络设备700可以用于实现或支持本文描述的方案/特征/方法。例如,本公开中的特征/方法可以使用硬件、固件、和/或被安装以在硬件上运行的软件来实现。本领域技术人员将认识到,术语网络设备包括广泛的设备,网络设备700只是其中的一个示例。包括网络设备700是出于讨论清楚的目的,而绝不意味着将本公开的应用限制到特定的网络设备实施例或一类网络设备实施例。
网络设备700可以是通过网络传送电信号和/或光信号的设备,例如交换机、路由器、网桥、网关等。在一些情况中,网络设备700可以单独地工作或与其他网络设备700协作来操作具有本文描述的功能的虚拟网络设备。如图7所示,网络设备700可以包括收发器(Tx/Rx)710,Tx/Rx 710可以是发射器、接收器、或其组合。Tx/Rx 710可以耦合到多个下游端口720(例如,下游接口)以用于分别发送和/或接收来自其他节点的帧,并且Tx/Rx 710可以耦合到多个上游端口750(例如,上游接口)以用于分别发送和/或接收来自其他节点的帧。处理器730可以耦合到Tx/Rx 710以处理数据信号和/或确定将数据信号发送到哪些节点。处理器730可以包括一个或多个多核处理器和/或内存设备732,内存设备732可以用作数据存储、缓冲器等。例如,内存设备732可以包含状态集缓存,以用于操作流配置文件。处理器730可以实现为通用处理器,或者可以是一个或多个专用集成电路(applicationspecific integrated circuit,ASIC)和/或数字信号处理器(digital signalprocessor,DSP)的一部分。网络设备700可以包含流配置文件模块714,根据示例,流配置文件模块714可以用于初始化、更新、导出、和/或移除操作流配置文件,以及用于生成和/或执行与这样的操作流配置文件相关的条件命令。流配置文件模块714可以在通用处理器、现场可编程门阵列(field programmable gate array,FPGA)、ASIC、DSP、微控制器等中实现。在替代实施例中,流配置文件模块714可以在处理器730中实现为存储在内存设备732中的计算机可执行指令(例如,实现为存储在非暂时性计算机可读介质中的计算机程序产品),该计算机可执行指令可以由处理器730执行,和/或部分地在处理器730中且部分地在内存设备732中实现。根据实施例,下游端口720和/或上游端口750可以包含无线、电、和/或光发送部件和/或接收部件。
图8是用于在位于沿流的路径的网络节点(例如内部节点112)管理操作流配置文件(例如操作流配置文件123)的示例方法800的流程图。方法800可以在包处理引擎200上操作,该包处理引擎用于接收包含条件命令(例如条件命令600)的包(例如包500)。此外,方法800可以创建和使用状态集缓存(例如状态集缓存300和/或400),以将聚合功能应用于流(例如流121)。此外,方法800可以在网元(NE)(例如网络设备700)上操作。
方法800开始于在步骤801接收到与流相关联的初始包时。该初始包包含头,该头包括与操作流配置文件相关的条件命令。NE可以读取条件命令并确定是否满足条件。如果不满足条件,NE可以转发包并且不再继续下一步。如果满足条件,NE可进行到步骤803。
在步骤803,NE可以执行条件命令(例如,条件命令的动作集)以初始化操作流配置文件的状态。初始化操作流配置文件的状态可以包括分配NE的内存以存储待应用于流的聚合功能的结果。在一些示例中,分配内存包括创建状态集以管理如上所述的操作流配置文件。在其他示例中,分配内存可以包括一般的分配缓存内存。NE可以转发初始包。具体地,方法800可以被设计为转发包而不考虑操作流配置文件的操作,以便使操作流配置文件的功能对底层数据流透明。
在步骤805,接收与流相关联的后续包。然后,在步骤807,NE可以将聚合功能应用于包。作为非限制性示例,聚合功能可以测量包数据、流遥测、NE硬件统计、NE硬件遥测、或其组合。作为其他非限制性示例,聚合功能可以是直方图、最大值功能、top-n功能、均值功能等。在步骤809,NE可以将聚合功能的结果存储在所分配的内存中,以更新操作流配置文件的状态。
如上所述,根据步骤807和步骤809应用聚合功能和更新操作流配置文件状态的指令可以通过多个机制接收。在一个示例中,在步骤801接收的初始包中的条件命令可以包括指定更新操作流配置文件的状态的操作的命令。提供该信息以便实现聚合功能。在这种情况中,作为步骤803的一部分,指定更新操作流配置文件的状态的操作的命令被存储在内存中。在另一示例中,流的每个包可以包含指定更新操作流配置文件的状态的操作的条件命令,以实现聚合功能。在这种情况中,更新操作流配置文件的状态的操作不存储在内存中。具体地,例如在步骤805、步骤807、以及步骤809,指定更新操作的这种条件命令在接收到每个包时被读取并执行。
例如,通过对每个后续包重复步骤805、步骤807、以及步骤809,可以接收和处理流中的许多包。在步骤811,导出操作流配置文件的状态。这可以根据需要或根据条件的发生而发生。如上所述,根据步骤811导出操作流配置文件状态的指令可以通过多个机制接收。在一个示例中,在步骤801接收的初始包中的条件命令可以包括指定导出操作流配置文件的状态的操作的命令。在这种情况中,作为步骤803的一部分,指定导出操作流配置文件的状态的操作的命令被存储在内存中。然后,在预定义的事件发生时,例如由于定义的时间没有其他流的包而导致的状态集的到期(例如,指示流已经到期并且聚合完成),开始在步骤811导出操作流配置文件的状态。在另一示例中,流的至少一个包(例如,最后的包)包括指定导出操作流配置文件的状态的操作的条件命令。在这种情况中,导出操作流配置文件的状态的操作不存储在内存中。具体地,包含导出命令的包可以使操作流配置文件在接收到对应包时被导出。这允许网络管理员按需触发导出。
在步骤813,导出操作流配置文件的状态。这可以根据需要或根据条件的发生而发生。如上所述,根据步骤813移除操作流配置文件状态的指令可以通过多个机制接收。在一个示例中,在步骤801接收的初始包或任何后续包中的条件命令可以包括指定描述用于移除操作流配置文件的状态的机制(例如,描述何时以及如何移除状态)的策略的命令。在这种情况中,作为步骤803的一部分,策略和/或机制被存储在内存中。然后,在预定义的事件发生时,例如由于在定义的时间没有其他流的包而导致的状态集的到期(例如,指示流已经到期并且聚合完成),开始在步骤813处移除操作流配置文件的状态。在另一示例中,流的至少一个包(例如,最后的包)包括指定移除操作流配置文件的状态的操作的条件命令。在这种情况中,移除操作流配置文件的状态的操作不存储在内存中。具体地,包含移除命令的包可以使操作流配置文件在接收到对应包时被移除。这允许网络管理员按需触发操作流配置文件的移除。应当注意,在一些示例中,操作流配置文件状态的移除和导出可以是关联的。例如,导出和移除操作流配置文件状态可以作为相关命令的一部分开始。
应当注意,上述流的任何包可以包括条件命令,这些条件命令指示操作流配置文件可以应用于沿流的路径的网络中的一个或多个指定节点。例如,节点可以被指定为上述条件命令的条件的一部分。这允许网络管理员指定将应用操作流配置文件的节点,并且因此指定操作方法800的节点。在这种情况中,未在条件中指定的节点将被认为未满足条件,并且将不执行对应的命令。这可以允许网络管理员使节点的单个子集或小的子集来执行这样的功能。在其他示例中,网络管理员可以在不同的指定节点应用不同的操作流配置文件,并且因此应用不同的聚合功能。
图9是用于管理来自位于网络边缘的网络节点(例如边缘节点111)的操作流配置文件(例如操作流配置文件123)的示例方法900的流程图。方法900可以在包处理引擎200上操作,该包处理引擎用于生成和发送包含条件命令(例如条件命令600)的包(例如包500)。此外,可以使用方法900来指引创建和管理状态集缓存(例如状态集缓存300和/或400),以将聚合功能应用于流(例如流121)。此外,方法900可以在网元(NE)(例如网络设备700)上操作。此外,方法900可以用于创建由方法800接收和使用的条件命令。
方法900开始于在步骤901获得条件命令以初始化沿流的路径的网络中的节点的内存中的操作流配置文件的状态时。例如,可以从网络管理员和/或从自动化网络控制系统(例如控制器113)接收条件命令。条件命令可以作为来自其他功能的输出而生成。此外,操作流配置文件的结果(例如,方法800的结果)可以用作其他功能的输入。如上所述,操作流配置文件被初始化以存储应用于流的聚合功能的结果。条件命令还可以指示何时/如何更新状态、导出状态、和/或移除操作流配置文件(例如,策略)的状态。条件命令还可以指示待应用的命令和/或可以应用的节点的条件。例如,聚合功能可以是直方图、最大值功能、top-n功能、均值功能等。此外,聚合功能可以测量包数据、流遥测、NE硬件统计、NE硬件遥测、或其组合。
在步骤903,至少一些条件命令被附加到与流相关联的初始包的未加密头。然后,在步骤905,可以将该初始包发送到沿该流的路径的网络中。可以在后续包(例如,第二包、第三包等)上转发附加的条件命令。
如上所述,可以以各种方式实现条件命令以创建各种各样的功能。在一个示例中,初始包中的条件命令包含指定更新操作流配置文件的状态的操作的命令,以实现聚合功能。这样的条件命令指引节点将指定更新操作流配置文件的状态的操作的命令存储在节点的内存中。
在另一示例中,在步骤903可以附加条件命令(到初始包和后续包),该条件命令指定更新操作流配置文件的状态的操作。这些命令可以被附加到流的每个包的头,以实现聚合功能。在这种情况中,条件命令不指引节点将更新操作流配置文件的状态的操作存储在节点的内存中。
在另一示例中,初始包中的条件命令包括指定移除操作流配置文件的状态的操作的命令。条件命令可以指示节点将指定移除操作流配置文件的状态的操作的命令存储在节点的内存中。在另一示例中,在步骤903可以附加条件命令(到初始包和后续包),该条件命令指定移除操作流配置文件的状态的操作。在这种情况中,条件命令不指引节点将移除操作流配置文件的状态的操作存储在节点的内存中。
在另一示例中,初始包中的条件命令包括指定导出操作流配置文件的状态的操作的命令。条件命令指引节点将指定导出操作流配置文件的状态的操作的命令存储在节点的内存中。在另一示例中,在步骤903处可以附加条件命令(到初始包和后续包),该条件命令指定导出操作流配置文件的状态的操作。在这种情况中,条件命令不指引节点将导出操作流配置文件的状态的操作存储在节点的内存中。
在另一示例中,如上所述,将条件命令与指示一起附加到流的至少一个包,该指示为操作流配置文件可以适用于沿流的路径的网络中的一个或多个指定节点。这允许网络管理员指示指定节点应当应用指定聚合功能,并且对于管理操作流配置文件,未指定的节点应排除在外。
下面的示意图1000至示意图1400描述了可以由操作流配置文件产生的结果的各种示例,并且建议可以如何使用这样的结果。应当注意,示意图1100、示意图1200、示意图1300、以及示意图1400只是示例,并且这些示意图可以根据操作流配置文件配置以及网络中的条件和所涉及的流而变化。
图10是通过操作流配置文件(例如操作流配置文件123)获得的示例输出的示意图1000。示意图1000描绘了由如上所述(例如参考图3)的操作流配置文件创建的示例输出直方图。如图所示,应用操作流配置文件123以根据大小对流中的包进行分类。聚合功能基于对应包的大小来递增流中的每个包的桶。在所示的示例中,接收到大约两百个大小为十六个八位字节或更小的包,接收到大约五百个大小在三十二个八位字节与十六个八位字节之间的包,接收到大约五百五十个大小在一百二十八个八位字节与三十二个八位字节之间的包,接收到大约三百个大小在五百一十二个八位字节与一百二十八个八位字节之间的包,并且接收到大约一百个大小大于五百一十二个八位字节的包。这种直方图可以用于确定流的配置文件,例如以支持资源供应。
图11是通过操作流配置文件(例如操作流配置文件123)获得的示例输出的另一示意图1100。示意图1100类似于示意图1000,但具有增加的功能,即,将描述为白色块的流的直方图与描述为阴影块的已知的流的直方图进行比较。例如,已知的配置文件可以是受恶意程序(例如蠕虫或其他恶意软件之类)影响的流的配置文件。通过比较配置文件,网络管理员可以确定加密数据流是否可能被恶意软件危害,而无需解密或以其他方式窥探底层数据。因此,可以在不违反与流相关联的用户隐私的情况下检测恶意软件。
图12是通过操作流配置文件(例如操作流配置文件123)获得的示例输出的另一示意图1200。示意图1200描绘了流的包的接口利用率。在该示例中,约两千五百个包经历了小于或等于百分之八十的接口利用率,约七百个包经历了百分之八十和百分之九十五的接口利用率,约一千五百个包经历了百分之九十五和百分之九十八的接口利用率,并且约三百个包经历了大于百分之九十八的接口利用率。该示意图1200可以用于诊断特定流的丢包背后的原因。当接口利用率持续较高时,过载的接口可能导致丢包。网络则可以添加更多接口设备,重新路由流的一些或全部,和/或改变资源分配以解决问题并恢复对流的有益服务。
图13是通过操作流配置文件(例如操作流配置文件123)获得的示例输出的另一示意图1300。示意图1300描述了流中的包的出口队列占用,其中,队列占用是通过当接收到对应的包时已经在队列中传输的包的数量来测量的。在该示例中,大约一百二十个包经历零队列占用(例如,空队列),大约二十个包经历一的队列占用,大约十五个包经历二的队列占用,大约十个包经历二到五之间的队列占用,大约十个包经历五到十之间的队列占用,并且大约二十五个包经历大于十的队列占用。这种示意图1300可以用于诊断高精度网络中的抖动和其他不足的资源预留。例如,高队列占用可能延迟包,从而导致包之间的时延(例如,抖动)。如果在多个节点生成这种示意图1300,则可以确定抖动的来源,因此可以改变资源预留和/或路由以解决抖动问题。
图14是通过操作流配置文件(例如操作流配置文件123)获得的示例输出的另一示意图1400。示意图1400描绘了考虑每个包的多个变量的多维操作流配置文件的示例。具体地,示意图1400描绘了经历对应队列占用的包的数量,该示意图按以八位字节为单位的包的长度排序。示意图1400被描绘为注意可以使用根据本文描述的条件命令配置的操作流配置文件来进行复杂的多维比较。
一些其他项目与公开的示例相关。应当注意,错误处理可以经由BPP过程发生,具体情况可能在本公开的范围之外。在BPP中,可以经由标志在包中指示错误,因此下游节点可以检测到发生了错误的事实。此外,发生了错误的事实也可以被记录在状态集内部,其中,配置文件被相应地标记。为了避免转发设备的性能损失,条件命令可以在BPP中被分类为非阻塞,允许与包的转发分开地应用执行。该命令可以以节点是特定类别为条件,例如边缘节点、状态集导出器节点、和/或甚至特定节点。可以经由通过包发送的显式命令来触发配置文件数据的导出,或者可以由另一条件(例如时间)来触发导出,可以用建立配置文件的初始命令集来指定该条件。导出机制可以包括将配置文件数据作为元数据携带在BPP包中,BPP包可以由出口边缘上的应用剥离和/或导出,或者这样的机制可以包括指令以经由单独的推送机制直接从节点导出。
图15是用于管理操作流配置文件的NE 1500的实施例的示意图。NE 1500包括接收模块1501,用于接收与流相关联的初始包以及与该流相关联的后续包,该初始包包含头,该头包括与操作流配置文件相关的条件命令。NE 1500还包括初始化模块1503,用于执行条件命令以通过分配NE 1500的内存来存储应用于流的聚合功能的结果来初始化操作流配置文件的状态。NE 1500还包括应用模块1505,用于将聚合功能应用于包。NE 1500还包括存储模块1507,用于存储聚合功能的结果,以更新操作流配置文件的状态。
图16是用于管理操作流配置文件的NE 1600的另一实施例的示意图。NE 1600包括条件命令模块1601,用于获得(如发送方插入/附加的)条件命令以初始化沿流的路径的网络中的节点的内存中的操作流配置文件的状态,该操作流配置文件被初始化以存储应用于流的聚合功能的结果。NE 1600还包括头附加模块1603,用于将条件命令附加到与流相关联的初始包的未加密头。NE 1600还包括发送模块1605,用于将初始包发送到沿流的路径的网络中。
虽然本公开已经提供了若干实施例,但是应当理解,在不脱离本公开的精神或范围的情况下,可以以许多其他特定形式来实现公开的系统和方法。本示例应视为说明性的而非限制性的,并且意图不限于本文给出的细节。例如,各种元件或部件可以组合或集成在另一系统中,或者特定特征可以省略或不实现。
另外,在不脱离本公开的范围的情况下,在各个实施例中描述和示出为离散或分开的技术、系统、子系统、以及方法可以与其他系统、模块、技术、或方法组合或集成。示为或讨论为彼此耦合或直接耦合或通信的其他项可以通过特定接口、设备、或中间部件以电气、机械、或其他方式间接耦合或通信。本领域技术人员可以确定并且可以做出不脱离本公开的精神和范围的改变、替换、以及变更的其他示例。
Claims (26)
1.一种在网元(NE)中实现的方法,所述方法包括:
所述NE的接收器接收与流相关联的初始包,所述初始包包含头,所述头包括与操作流配置文件相关的条件命令,其中,所述条件命令包括条件和命令,所述条件指示在执行所述命令之前需要满足的项,所述命令指示当所述条件发生时将由所述NE采取的一个或多个动作;
所述NE的处理器执行所述条件命令,以通过分配所述NE的内存来存储应用于所述流的聚合功能的结果来初始化操作流配置文件的状态;
所述接收器接收与所述流相关联的后续包;
所述处理器将所述聚合功能应用于所述后续包;以及
将所述聚合功能的结果存储在所述内存中以更新所述操作流配置文件的所述状态。
2.根据权利要求1所述的方法,其中,所述初始包中的所述条件命令包括指定更新所述操作流配置文件的所述状态的操作的命令,以实现所述聚合功能,所述方法还包括将指定更新所述操作流配置文件的所述状态的操作的所述命令存储在所述内存中。
3.根据权利要求1所述的方法,其中,所述流的多个包包括指定更新所述操作流配置文件的所述状态的操作的条件命令,以实现所述聚合功能,并且其中,更新所述操作流配置文件的所述状态的所述操作不存储在所述内存中。
4.根据权利要求1-3中任一项所述的方法,其中,所述流的至少一个包包括描述用于移除所述操作流配置文件的所述状态的机制的策略,所述方法还包括将用于移除所述操作流配置文件的所述状态的所述策略存储在所述内存中。
5.根据权利要求1-3中任一项所述的方法,其中,所述流的至少一个包包括指定移除所述操作流配置文件的所述状态的操作的条件命令,并且其中,移除所述操作流配置文件的所述状态的所述操作不存储在所述内存中。
6.根据权利要求1-3中任一项所述的方法,其中,所述流的至少一个包包括指定导出所述操作流配置文件的所述状态的操作的命令,所述方法还包括将指定导出所述操作流配置文件的所述状态的操作的所述命令存储在所述内存中。
7.根据权利要求1-3中任一项所述的方法,其中,所述流的至少一个包包括指定导出所述操作流配置文件的所述状态的操作的条件命令,并且其中,导出所述操作流配置文件的所述状态的所述操作不存储在所述内存中。
8.根据权利要求1-3中任一项所述的方法,其中,所述流的至少一个包包括指示所述操作流配置文件适用于沿所述流的路径的网络中的一个或多个节点的条件命令。
9.根据权利要求1-3中任一项所述的方法,其中,所述聚合功能包括将目标数据项与桶准则进行匹配,基于所述桶准则更新表示直方图中的桶的一组计数器,以及基于所述计数器生成所述直方图。
10.根据权利要求1-3中任一项所述的方法,其中,所述聚合功能测量包数据、流遥测、NE硬件统计、NE硬件遥测、或其组合。
11.一种在网元(NE)中实现的方法,所述方法包括:
所述NE的处理器获得条件命令以初始化操作流配置文件的状态,所述操作流配置文件在沿流的路径的网络中的节点的内存中,所述操作流配置文件被初始化以存储应用于所述流的聚合功能的结果,其中,所述条件命令包括条件和命令,所述条件指示在执行所述命令之前需要满足的项,所述命令指示当所述条件发生时将由所述NE采取的一个或多个动作;
所述处理器将所述条件命令附加到与所述流相关联的初始包的未加密头;以及
所述NE的发射器将所述初始包发送到沿所述流的所述路径的所述网络中。
12.根据权利要求11所述的方法,其中,所述初始包中的所述条件命令包括指定更新所述操作流配置文件的所述状态的操作的命令,以实现所述聚合功能,所述条件命令指引所述节点将指定更新所述操作流配置文件的所述状态的操作的所述命令存储在所述节点的内存中。
13.根据权利要求11所述的方法,还包括在所述流的多个包中附加指定更新所述操作流配置文件的所述状态的操作的条件命令,以实现所述聚合功能,其中,所述条件命令不指引所述节点将更新所述操作流配置文件的所述状态的操作存储在所述节点的内存中。
14.根据权利要求11-13中任一项所述的方法,其中,所述流的至少一个包包括描述用于移除所述操作流配置文件的所述状态的机制的策略,所述方法还包括将用于移除所述操作流配置文件的所述状态的所述策略存储在所述内存中。
15.根据权利要求11-13中任一项所述的方法,还包括将指定移除所述操作流配置文件的所述状态的操作的条件命令附加到所述流的至少一个包,其中,所述条件命令不指引所述节点将移除所述操作流配置文件的所述状态的所述操作存储在所述节点的内存中。
16.根据权利要求11-13中任一项所述的方法,其中,所述流的至少一个包包括指定导出所述操作流配置文件的所述状态的操作的条件命令,所述条件命令指引所述节点将指定导出所述操作流配置文件的所述状态的操作的所述命令存储在所述节点的内存中。
17.根据权利要求11-13中任一项所述的方法,还包括将指定导出所述操作流配置文件的所述状态的操作的条件命令附加到所述流的至少一个包,其中,所述条件命令不指引所述节点将导出所述操作流配置文件的所述状态的所述操作存储在所述节点的内存中。
18.根据权利要求11-13中任一项所述的方法,还包括将条件命令附加到所述流的至少一个包,所述条件命令指示所述操作流配置文件适用于沿所述流的所述路径的所述网络中的一个或多个节点。
19.根据权利要求11-13中任一项所述的方法,其中,所述聚合功能包括将目标数据项与桶准则进行匹配,基于所述桶准则更新表示直方图中的桶的一组计数器,以及基于所述计数器生成所述直方图。
20.根据权利要求11-13中任一项所述的方法,其中,所述聚合功能测量包数据、流遥测、NE硬件统计、NE硬件遥测、或其组合。
21.一种网元(NE),包括:
处理器;
耦合到所述处理器的发射器;以及
耦合到所述处理器的接收器,其中,所述处理器、所述发射器、以及所述接收器用于执行根据权利要求1-20中任一项所述的方法。
22.一种非暂时性计算机可读介质,包括由网元(NE)使用的计算机程序产品,所述计算机程序产品包括存储在所述非暂时性计算机可读介质上的计算机可执行指令,当由处理器执行时,使所述NE执行根据权利要求1-20中任一项所述的方法。
23.一种网元(NE),包括:
接收装置,用于接收与流相关联的初始包以及与所述流相关联的后续包,所述初始包包含头,所述头包括与操作流配置文件相关的条件命令,其中,所述条件命令包括条件和命令,所述条件指示在执行所述命令之前需要满足的项,所述命令指示当所述条件发生时将由所述NE采取的一个或多个动作;
初始化装置,用于执行所述条件命令,以通过分配所述NE的内存来存储应用于所述流的聚合功能的结果来初始化操作流配置文件的状态;
应用装置,用于将所述聚合功能应用于所述后续包;以及
存储装置,用于存储所述聚合功能的结果以更新所述操作流配置文件的所述状态。
24.根据权利要求23所述的网元(NE),其中,所述NE还用于执行根据权利要求1-10中任一项所述的方法。
25.一种网元(NE),包括:
条件命令装置,用于获得条件命令以初始化操作流配置文件的状态,所述操作流配置文件在沿流的路径的网络中的节点的内存中,所述操作流配置文件被初始化以存储应用于所述流的聚合功能的结果,其中,所述条件命令包括条件和命令,所述条件指示在执行所述命令之前需要满足的项,所述命令指示当所述条件发生时将由所述NE采取的一个或多个动作;
头附加装置,用于将所述条件命令附加到与所述流相关联的初始包的未加密头;以及
发送装置,用于将所述初始包发送到沿所述流的所述路径的所述网络中。
26.根据权利要求25所述的网元(NE),其中,所述NE还用于执行根据权利要求11-20中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862681527P | 2018-06-06 | 2018-06-06 | |
US62/681,527 | 2018-06-06 | ||
PCT/US2019/033580 WO2019236297A1 (en) | 2018-06-06 | 2019-05-22 | Packet programmable flow telemetry profiling and analytics |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112262554A CN112262554A (zh) | 2021-01-22 |
CN112262554B true CN112262554B (zh) | 2022-09-09 |
Family
ID=68770927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980037165.7A Active CN112262554B (zh) | 2018-06-06 | 2019-05-22 | 包可编程流遥测剖析和分析 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210075738A1 (zh) |
EP (1) | EP3791543B1 (zh) |
CN (1) | CN112262554B (zh) |
WO (1) | WO2019236297A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11032193B2 (en) * | 2018-09-11 | 2021-06-08 | Cisco Technology, Inc. | In-situ operation, administration, and maintenance in segment routing with multiprotocol label switching networks |
JP7388073B2 (ja) * | 2019-09-12 | 2023-11-29 | ソニーグループ株式会社 | 情報処理装置、情報処理方法、及び、プログラム |
AU2021269362A1 (en) * | 2020-12-18 | 2022-07-07 | The Boeing Company | Systems and methods for real-time network traffic analysis |
US20220385552A1 (en) * | 2021-05-27 | 2022-12-01 | At&T Intellectual Property I, L.P. | Record and replay network traffic |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105706393A (zh) * | 2013-11-05 | 2016-06-22 | 瑞典爱立信有限公司 | 在链路聚合组中支持操作者命令的方法和系统 |
WO2016152080A1 (ja) * | 2015-03-24 | 2016-09-29 | 日本電気株式会社 | ネットワークシステム、ネットワーク制御方法、制御装置および運用管理装置 |
CN105991338A (zh) * | 2015-03-05 | 2016-10-05 | 华为技术有限公司 | 网络运维管理方法及装置 |
CN107534572A (zh) * | 2015-03-13 | 2018-01-02 | 诺基亚通信公司 | 通信网络聚合测试有效载荷 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7369536B2 (en) * | 1999-11-02 | 2008-05-06 | Verizon Business Global Llc | Method for providing IP telephony with QoS using end-to-end RSVP signaling |
US8130767B2 (en) * | 2005-06-17 | 2012-03-06 | Cisco Technology, Inc. | Method and apparatus for aggregating network traffic flows |
US7733891B2 (en) * | 2005-09-12 | 2010-06-08 | Zeugma Systems Inc. | Methods and apparatus to support dynamic allocation of traffic management resources in a network element |
US7715316B2 (en) * | 2007-05-11 | 2010-05-11 | Verizon Services Organization Inc. | Method and apparatus for improving performance in a network using a virtual queue and a switched poisson process traffic model |
US10007486B2 (en) * | 2008-12-01 | 2018-06-26 | Micron Technology, Inc. | Systems and methods to enable identification of different data sets |
US8838819B2 (en) * | 2009-04-17 | 2014-09-16 | Empirix Inc. | Method for embedding meta-commands in normal network packets |
US8693332B2 (en) * | 2009-06-30 | 2014-04-08 | New Renaissance Technology And Intellectual Property | Flow state aware management of QoS through dynamic aggregate bandwidth adjustments |
US20130148513A1 (en) * | 2011-12-08 | 2013-06-13 | Telefonaktiebolaget Lm | Creating packet traffic clustering models for profiling packet flows |
US9036469B2 (en) * | 2012-04-26 | 2015-05-19 | Hewlett-Packard Development Company, L.P. | Data communication in openflow networks |
US9571386B2 (en) * | 2013-07-08 | 2017-02-14 | Nicira, Inc. | Hybrid packet processing |
CN104363181B (zh) * | 2014-08-28 | 2018-05-08 | 新华三技术有限公司 | 流量传输控制方法及装置 |
WO2016032034A1 (ko) * | 2014-08-29 | 2016-03-03 | 삼성전자주식회사 | 네트워크에서 사용자 체감 품질을 측정하고 관리하는 방법 및 장치 |
US9667437B2 (en) * | 2014-10-23 | 2017-05-30 | Verizon Patent And Licensing Inc. | Billing multiple packet flows associated with a client router |
US20160142269A1 (en) * | 2014-11-18 | 2016-05-19 | Cisco Technology, Inc. | Inline Packet Tracing in Data Center Fabric Networks |
US9660879B1 (en) * | 2016-07-25 | 2017-05-23 | Extrahop Networks, Inc. | Flow deduplication across a cluster of network monitoring devices |
CN107302501B (zh) * | 2017-06-15 | 2021-06-25 | 郑州云海信息技术有限公司 | 一种调整网络端口聚合的方法及其装置 |
US10437775B2 (en) * | 2017-09-14 | 2019-10-08 | Microsoft Technology Licensing, Llc | Remote direct memory access in computing systems |
US10972397B2 (en) * | 2017-09-29 | 2021-04-06 | Futurewei Technologies, Inc. | Self-driving packets with conditional commands |
-
2019
- 2019-05-22 WO PCT/US2019/033580 patent/WO2019236297A1/en unknown
- 2019-05-22 CN CN201980037165.7A patent/CN112262554B/zh active Active
- 2019-05-22 EP EP19815016.1A patent/EP3791543B1/en active Active
-
2020
- 2020-11-18 US US16/951,440 patent/US20210075738A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105706393A (zh) * | 2013-11-05 | 2016-06-22 | 瑞典爱立信有限公司 | 在链路聚合组中支持操作者命令的方法和系统 |
CN105991338A (zh) * | 2015-03-05 | 2016-10-05 | 华为技术有限公司 | 网络运维管理方法及装置 |
CN107534572A (zh) * | 2015-03-13 | 2018-01-02 | 诺基亚通信公司 | 通信网络聚合测试有效载荷 |
WO2016152080A1 (ja) * | 2015-03-24 | 2016-09-29 | 日本電気株式会社 | ネットワークシステム、ネットワーク制御方法、制御装置および運用管理装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3791543A1 (en) | 2021-03-17 |
EP3791543A4 (en) | 2021-06-23 |
WO2019236297A1 (en) | 2019-12-12 |
US20210075738A1 (en) | 2021-03-11 |
EP3791543B1 (en) | 2023-03-01 |
CN112262554A (zh) | 2021-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tan et al. | In-band network telemetry: A survey | |
CN112262554B (zh) | 包可编程流遥测剖析和分析 | |
Ghasemi et al. | Dapper: Data plane performance diagnosis of tcp | |
CN112514326B (zh) | 网络嵌入式实时服务级别目标验证 | |
US10652078B2 (en) | Triggered in-band operations, administration, and maintenance in a network environment | |
Lee et al. | Network monitoring: Present and future | |
US10361969B2 (en) | System and method for managing chained services in a network environment | |
US8054744B1 (en) | Methods and apparatus for flow classification and flow measurement | |
US9065767B2 (en) | System and method for reducing netflow traffic in a network environment | |
US20160234094A1 (en) | Streaming method and system for processing network metadata | |
EP3735762B1 (en) | In-band telemetry with limited extra bytes | |
US20200396320A1 (en) | Packet-programmable statelets | |
US20210194894A1 (en) | Packet metadata capture in a software-defined network | |
Hendriks et al. | Assessing the quality of flow measurements from OpenFlow devices | |
Laffranchini et al. | Measurements as first-class artifacts | |
Wang et al. | A bandwidth-efficient int system for tracking the rules matched by the packets of a flow | |
US11265257B2 (en) | Rapid network traffic telemetry exports with split templates and flow records | |
US11146468B1 (en) | Intelligent export of network information | |
Clemm et al. | Network-programmable operational flow profiling | |
Liu et al. | Next generation internet traffic monitoring system based on netflow | |
Schultz et al. | A passive network appliance for real-time network monitoring | |
Xia et al. | Resource optimization for service chain monitoring in software-defined networks | |
Fatemipour et al. | Design and implementation of a monitoring system based on IPFIX protocol | |
US11665079B1 (en) | Probe-triggered full device state capture, export, and correlation | |
MM | PACKET LOSS DETECTOR AND ANALYSER SERVICE IN 5G DEPLOYMENTS |
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 |