跟踪片段数据流的制作方法

文档序号:7717125阅读:174来源:国知局

专利名称::跟踪片段数据流的制作方法
技术领域
:本发明涉及网络领域,具体地,涉及跟踪片段数据流。
背景技术
:网络设备通常使用流表(flowtable)跟踪数据流状态。流表使用数据包包头中的第三层和第四层信息识别和跟踪各数据流。然而,当将数据包分割成片段时,第四层信息仅在第一数据包中携带。第二和后续数据包携带第三层信息,而非第四层信息。因此,简单的流映射系统(如基于第三层和第四层信息工作的系统)对片段流不起作用。
发明内容根据一种实施方式,一种由设备执行的方法可包括接收片段式数据单元的第一片段;确定识别与第一片段相关的数据流的流标识符;并且基于该流标识符在流表中建立条目(entry),以存储与数据流相关的信息。该方法还可包括确定与第一片段相关的片段密钥(fragmentkey);基于该片段密钥在片段表(fragmenttable)中创建条目;在片段表的条目中存储指向流表中条目的指针;接收片段式数据单元的后续片段,其中,后续片段是在接收到第一片段后接收的;将后续片段与片段表中的条目进行匹配;并且基于指向流表中该条目的指针使后续片段与第一片段相关联。根据另一种实施方式,一种设备可包括第一存储器,第二存储器,和流识别逻辑。第一存储器存储可存储与片段式数据单元(fragmenteddataunit)的片段相关的条目的流表。第二存储器可存储与流表分离的片段表。流识别逻辑可接收片段式数据单元的另一片段,确定与其他片段相关的片段密钥,基于该片段密钥定位片段表中的条目,从片段表中的条目读取指向流表中条目的指针,并且基于指向流表中的条目的指针使与该片段相关的统计数据(statistics)与其他片段相关联。根据又一种实施方式,一种设备可包括接收片段式数据单元的片段的装置;确定识别与该片段相关的数据流的流标识符的装置;基于流标识符创建流条目从而存储与数据流相关的信息的装置;确定与片段相关的片段密钥的装置;基于片段密钥存储指向流条目的指针的装置;基于片段密钥和指向流条目的指针,使与数据流相关的片段与其他片段相关联的装置;以及在使片段与其他片段相关联后累计(accumulating)与该片段及其他片段相关的统计数据的装置。包含在本说明书中并构成其一部分的附图与说明一起示出了一个或多个本文所述的实施例,并对这些实施例进行说明。在这些附图中图1是可以实现本文所描述的系统和方法的示例性网络的示意图;图2是示出了图1中网络设备的示例性组件的框图;图3是示出了图2中接口的示例性组件的框图4是示出了图3中流管理和结构排队(fabricqueuing)逻辑的示例性功能组件的框图;图5是图4中流表的示例性字段的示意图;图6是图4中片段表的示例性字段的示意图;图7至图10示出了监控与数据单元相关的数据流的示例性过程的流程图;图IlA和IlB示出了本文所述的处理的一个实例的示意图;以及图12A和12B示出了本文所述的处理的另一实例的示意图。具体实施例方式下面将参考附图进行详细说明。不同图中相同参考标记可以表示相同或类似的元件。如本文所述,网络设备可监控与数据单元和数据单元片段相关的数据流。例如,网络设备可将与片段相关的数据流与数据单元的片段进行匹配,以使网络设备可监控数据流,从而例如收集统计数据,识别不需要的(如恶意)流量等。本文所用的术语“数据单元(dataunit)”可指数据包,数据报(datagram),或单元(cell);数据包,数据报,或单元的片段,或数据的其他类型或排列。本文所用的术语“数据流”可指与同一来源和目的相关的一组数据单元。示例性网络图1是可以实现本文所述的系统和方法的示例性网络100的示意图。网络100可包括任何类型的网络,如英特网,自组织网络(adhocnetwork),局域网(LAN),广域网(WAN),城域网(MAN),电话网(如无线通信网络或公共交换电话网(PSTN)),或多种网络的组合。如图所示,网络100可包括N个网络设备102-1到102-N(这里总称为“网络设备102”,或单独称为“网络设备102”)(N彡1)。网络设备102-1到102-N的每一个可包括交换机,路由器,服务器,或其他类型设备。虽然网络设备102-1到102-N可以以不同类型的设备执行,在下面的说明中,网络设备102-1到102-N将按照路由器说明。通过示例的方式示出了将网络设备102-1到102-N互连的链路。网络设备102-1到102-N可经不同于图1中所示的链路互连。图2示出了网络设备102的示例性组件的方框图。如图2所示,网络设备102可包括系统控制模块210,交换结构(switchfabric)220,一组接口230。在其他实施中,与图2所示的组件相比,网络设备102可包括较少的,额外的,不同的,或不同布置的组件。而且,描述为由一个组件执行的功能可由另一组件或一组组件执行。系统控制模块210可包括一个或多个可以对网络和通信进行优化的处理器,微处理器,专用集成电路(ASIC),现场可编程门阵列(FPGA),和/或处理逻辑。系统控制模块210可执行网络设备102的高级管理功能。例如,系统控制模块210可与连接到网络设备102的其他网络和系统通信,以交换关于网络拓扑的信息。在某些实施中,系统控制模块210可包括路由引擎,用于基于网络拓扑信息创建路由表(routingtable),基于路由表创建转发表(forwardingtable),并发送这些表至数据单元路由的接口230。系统控制模块210也可包括用于存储数据和/或机器可读指令的静态存储器(如只读存储器(ROM)),动态存储器(如随机存取存储器(RAM)),板载缓存(onboardcache),和/或闪存。交换结构220可包括一个或多个交换板(switchingplane)以便于接口230和/或系统控制模块210之间的通信。在一种实施中,每个交换板可包括纵横制元件(crossbarelement)的单级(singlestage)或多级(multi-stage)交换。交换结构220也可,或可选地包括处理器,存储器,和/或允许系统控制模块210和接口230间通信的路径。接口230可包括诸如线卡(linecard)的设备或组件,用于从网络链路(或从其他接口230)接收输入的数据单元并且用于将数据单元传输到网络链路(或其他接口230)。例如,接口230可包括以太网接口,光载波(opticalcarrier,0C)接口,和/或异步传输模式(ATM)接口。接口230可管理一组输入端口(经其可以接收数据单元)和一组输出端口(经其可以传输数据单元)。根据实施,图2所示的组件可提供较少的或额外功能。例如,如果网络设备102作为多协议标签交换(MPLS)路由器的一部分执行因特网协议(IP)数据单元路由功能,则系统控制模块210可执行与从MPLS网络中的其他路由器获得路由信息相关联的任务。在这样的情形中,从一个接口传送网络流量到另一个接口可涉及基于标签的路由(label-basedrouting),而非基于IP地址的路由。图3是示出了接口230的示例性组件的框图。如图所示,接口230可包括数据包转发引擎(PFE)310-1和310-2(本文中总称为“PPE310”,或单独地称为PEE310”),流管理和结构排队(FFQ)逻辑320-1和320-2(这里总称为或单独称为“FFQ逻辑320”),背板(backplane)330,交换机340,交换机350,和本地中央处理单元/可视中央处理单元(LCPU/VCPU)360。在不同实施中,与图3中所示的组件相比,接口230可包括较少,额外的,不同的,或不同布置的组件。每个PFE310可包括硬件,或硬件和软件的组合,其可接收,存储,处理,和/或转发数据单元。例如,PFE310可处理从输入网络链路接收的数据单元并准备输出网络链路(outgoingnetworklink)上传输的数据单元。PFE310可根据数据单元的包头信息做出转发决定。每个PFE310可包括存储器以辅助存储,处理,和/或转发接收的数据单元。PFE310可将接收的数据单元传输至FFQ逻辑320。FFQ逻辑320可包括硬件,或硬件和软件的组合,其可接收来自PFE310的数据单元并监控与数据单元相关联的数据流。在一种实施中,FFQ逻辑320可在流表中创建数据流的表条目(tableentry)并监控与该数据流相关的流统计数据。在一种实施中,FFQ逻辑320可为每个数据流使用定时器从而跟踪每个数据流的数据单元的时序,并为每个数据流使用一组计数器从而跟踪每个数据流的数据单元/字节数。在某些实施中,FFQ逻辑320也可对数据单元进行采样并可发送采样的数据单元和其他信息(如流表记录)至交换机340和/或交换机350。FFQ逻辑320也可从PFE310传输数据单元至背板330。背板330可包括交换结构和/或一个或多个存储器,其可将数据单元传输到交换结构220或从交换结构传回数据(如图2所示)。交换机340可包括高速交换接口,如周边装置元件高速互连(PCI-E)交换机,用于在PFE310,FFQ逻辑320,和/或LCPU/VCPU360间传输/接收数据单元和信息。例如,交换机350可包括可在PFE310,FFQ逻辑320,和/或LCPU/VCPU360间传输数据单元和/或信息的以太网交换机。以太网交换机350也可经背板330在带外板(out-of-bandplane)上传输和/或接收数据单元和/或信息到另一个装置(网络设备102的内部或外部)用于进一步处理和/或分析。本地中央处理单元/可见(visibility)中央处理单元(LCPU/VCPU)360可包括一个或多个可执行网络通信,管理和分析功能的处理器,微处理器,ASIC,FPGAJP/或处理逻辑。例如,LCPU/VCPU360可控制关于图3中所示组件之间的(本地)操作的功能并且可控制关于经接口230传输的数据单元的“可见性”的功能。例如,LCPU/VCPU360可管理记录的流表和/或采样数据单元。例如,LCPU/VCPU360可从FFQ逻辑320接收流表记录和采样数据单元。LCPU/VCPU360也可经以太网交换机350传输流表记录和采样数据单元至外部设备。例如,在管理流记录中,LCPU/VCPU360可从FFQ逻辑320接收流表记录和统计数据,聚集和/或保持接收的流表记录和统计数据,并将集聚的流表和/或统计数据输出到网络设备102内另一个组件,或可选地,输出到网络设备102外部的设备。LCPU/VCPU360可基于不同参数,如通信协议,端口号,源地址和/或目的地址,起点/目的地址前缀,源/目的自主系统(source/destinationautonomoussystem(AS))前缀等,集聚流表记录和/或统计数据。FFQ逻辑的示例性功能组件图4是示出了FFQ逻辑320的示例性功能组件的框图。如图4所示,FFQ逻辑320可包括结构接口410,流识别逻辑420,流表430,和片段表440。在另一个实施中,与图4中所示的组件相比,FFQ逻辑320可包括较少的,额外的,不同的,或不同布置的组件。例如,在某些实施中,图4中一个或多个功能组件可位于FFQ逻辑320的外部。而且,或可选地,由一个功能组件执行的一个或多个功能可由多个功能组件中的另一个或一组功能组件执行。结构接口410可包括硬件,或硬件和软件的组合,其可提供对PFE310,交换结构220,和/或接口230的另一个组件的接口。结构接口410可包括一个或多个接口队列(interfacingqueue)或可临时存储已经被流识别逻辑420处理并等待从FFQ逻辑320传输的数据单元的缓冲器(未示出)。在一种实施中,结构接口410可包括每个输出端口的单独队列。此外,或可选地,结构接口410可包括能分配给数据单元的不同优先级的独立队列。因此,结构接口410可包括每个端口和每个优先级的独立队列。在其他实施中,结构接口410可包括某些其他的队列安排。例如,结构队列410可包括辅助队列,供临时存储片段式数据单元的片段。结构接口410也可包括从队列选择数据单元以便传输的判决器(arbiter)。在一种实施中,仲裁器可使用基于数据单元优先级和/或输出端口可用性的公平选择技术。例如,仲裁器可选择发往可用来接收数据单元的输出端口的最高优先级数据单元。流识别逻辑420可包括硬件,或硬件结合软件,其可从PFE310接收数据单元,确定数据单元是否是片段式数据单元,从数据单元确定流标识符和/或片段密钥(如从数据单元读取流标识符/片段密钥或基于数据单元中的信息生成流标识符/片段密钥),提供关于数据单元的信息和流标识符,以创建和/或更新关于流表430中数据流的信息,和/或提供片段密钥从而创建和/或更新关于片段表440中数据流的信息。流识别逻辑420可从数据单元包头中的信息中识别流标识符和/或片段密钥。例如,对于非片段式数据单元(non-fragmenteddataunit),流标识符可从数据单元包头中的信息进行构建,该包头涉及源地址和目的地址(通常称为第三层(Layer3,L3)信息),源端口和目的端口(通常称为第四层(Layer4,L4)信息),和/或协议信息。在一个实施中,流标识符可作为数据单元包头中信息的哈希值来计算,并可用来识别或创建流表430的条目。对于片段式数据单元的第一片段,流识别逻辑420可产生流标识符和片段密钥。流标识符可从数据单元包头中的信息进行构建,该数据单元包头涉及源地址和目的地址(即,L3信息),源端口和目的端口(即,L4信息),和/或协议信息。在一个实施中,流标识符可作为数据单元包头中信息的哈希值来进行计算,并可用来识别或创建流表430中的条目。片段密钥可从数据单元包头中的信息进行构建,该数据单元包头涉及L3信息和片段识别信息,其可包括与特定数据流相关的片段的唯一值。在一个实施中,片段密钥可作为L3信息和片段识别信息的哈希值来进行计算,并可用来识别或创建片段表440中的条目。对于片段式数据单元的第一片段后的片段,流识别逻辑420可生成流标识符和/或片段密钥。这些片段的包头可不包括L4信息,但可包括L3信息和片段识别信息。在该情形中,流标识符和/或片段密钥可从数据单元包头中的信息进行构建,该数据单元包头涉及L3信息和片段识别信息。在一个实施中,流标识符和/或片段密钥可作为L3信息和片段识别信息的哈希值进行计算,并可用来识别或创建流表430和/或片段表440中的条目。在一个实施中,流标识符可以匹配第一片段后的片段的片段密钥。在另一个实施中,流标识符可与第一片段后续片段的片段密钥不同。在识别与数据单元相关的流标识符后,流识别逻辑420可确定对应于流标识符的条目先前是否已经在流表430中建立。例如,流识别逻辑420可比较流标识符和流表430中的信息从而确定是否匹配。如果没有条目,可在流表430中创建相应条目。然而,如果相应条目先前已经建立在流表430中(即至少一个属于数据流的在前数据单元先前已经由网络设备102接收),流识别逻辑420可更新相应条目中的一个或多个字段,从而反映新接收的数据单元。在识别与数据单元相关的片段密钥后,流识别逻辑420可确定对应于片段密钥的条目先前是否已经在片段表440中建立。例如,流识别逻辑420可比较片段密钥和片段表440中信息从而确定是否匹配。如果没有条目存在,相应条目可在片段表440中创建。然而,如果相应条目先前已经在片段表440中建立(即至少一个属于数据流的在前数据单元先前已经由网络设备102接收),流识别逻辑420可在流表430的条目中更新或存储关于片段表440中条目的信息。流表430可在诸如一个或多个动态RAM(DRAM)的存储器设备中实现。流表430可包括多个对应于由网络设备102识别的数据流的条目。例如,流表430中每个条目可包括用来识别每个数据流的流识别字段和对应于数据单元处理(dataunithandling)信息的其他相关字段(如,端口或接口信息,协议信息,等)。流表430可包括关于多个数据流的信息,如一百万以上的数据流的信息。图5是流表430的示例性字段的示意图。如图5所示,流表430可包括1到X的每个数据流的多个流表条目。流表430中示例性条目可包括流识别(ID)字段510,第二层(L2)信息字段515,第三层(L3)信息字段520,第四层(L4)信息字段525,数据单元计数器字段530,字节计数器字段535,和计时器字段540。在其他实施中,流表430中条目可包括更多,更少,或不同的字段。例如流ID字段510可以不是流表430中的实际字段,而代表流表430中条目的地址。流识别字段510可包括唯一,或基本唯一的与特定数据流相关的流标识符。例如,流标识符可包括从对应于数据流的数据单元(无论是片段式的或非片段式的)包头中特定信息获得的值。例如,流标识符可从数据单元包头中的信息进行构建,该包头涉及L3信息,L4信息,和/或协议信息,或涉及L3信息和片段识别信息。在一个实施中,流标识符可作为为数据单元包头中的信息的哈希值来进行计算。流标识符可提供有效的方法来识别和定位流表430中数据流。L2信息字段515可包括L2信息的单元,如与数据单元相关的源介质访问控制(MAC)地址,与数据单元相关的目的MAC地址等。L3信息字段520可包括L3信息的单元,如源或目的IP(因特网协议)地址,L3协议信息(如,超文本传输协议(HTTP),文件传输协议(FTP))等。L4信息字段525可包括一个或多个L4信息单元,如源和目的端口信息(其通常指示与数据单元相关的应用类型),L4协议信息,等等。数据单元计数器字段530可包括用于累计和/或指示对应于数据流(在特定时间周期已通过接口230)的数据单元总数目的信息。字节计数器字段535可包括用于累计和/或指示在特定时间周期期间已在数据流中传递的字节总数目的信息。计时器字段540可包括涉及在数据流中接收的数据单元的时序信息或时间戳(timestamp)。在一个实施中,L2信息字段515可包括源和目的MAC地址,L3信息字段520可包括源和目的IP地址和L3协议类型,而L4信息字段525可包括源和目的端口和L4协议类型(用于非片段式数据单元以及用于片段式数据单元的第一片段)。计时器字段540,数据单元计数器字段530,以及字节计数器字段535的值可周期性重置或累计,以提供与特定数据流相关的总计数。参考图4,片段表440可在诸如内容可寻址存储器(CAM)的存储器设备内执行。片段表440可存储关于数据单元片段的信息。在一个实施中,片段表440可存储多个条目,其中,每个条目均可对应于与数据单元片段相关的数据流。片段表440可有助于使与同一数据流相关的数据单元片段相关联。图6是片段表440的示例性字段的示意图。如图6所示,片段表440可包括1到y的每个数据流的多个条目。片段表440中示例性条目可包括片段密钥字段610,流表索引字段620,队列指针字段630,以及计时器字段640。在其他实施中,片段表440中条目可包括额外的,较少的,或不同的字段。例如,片段密钥610可以不是片段表440中的实际字段,但可以代表片段表440中条目的地址。片段密钥字段610可包括片段密钥,其可以是唯一的或基本唯一的,与特定数据流片段相关的标识符。例如,片段密钥可包括从片段式数据单元包头中的特定信息获得的值,如涉及L3信息和片段识别信息的信息。在一个实施中,片段密钥可作为数据单元包头中信息的哈希值来进行计算。片段密钥可提供有效方法以识别和定位与片段表440中特定数据流相关的片段。流表索引字段620可包括指向为同一数据流中第一片段创建的流表430中条目的指针。例如,在一个实施中,流表索引字段620可存储确定的数据流中第一片段的流标识符。流标识符可用作指向对应于与特定数据单元片段相关的数据流的流表430中条目的指针。队列指针字段630可包括指向用于存储与数据流相关的片段的辅助队列(或辅助队列中地址)的指针。辅助队列可在结构接口410内实施,如上所述。辅助队列可存储片段直到片段式数据单元的第一片段到达或该片段被删除。计时器字段640可包括可设定,增加(或减小),和/或重置的计数器值。计数器值可用来确定是否从由队列指针字段630中指针所指向的辅助队列中删除片段和/或是否从片段表440中删除条目。例如,当片段保持在辅助队列中超过阈值时间而没有接收到额外片段时(基于计时器字段640中的信息),该片段可删除。可选地,或额外地,当条目保持在片段表440中而没有接收到额外片段(基于计时器字段640中的信息)超过阈值时间时,该条目可删除。在一个实施中,每次接收到数据流中片段时,计时器字段640中计数器值可设定或重置。在没有接收到片段的每个时间间隔内,计数器值可增加(或减小)。示例性过程图7至图9示出用于监控与数据单元相关的数据流的示例性过程的流程图。在图7至图9中所示的过程可通过FFQ逻辑320,LCPU/VCPU360,和/或与FFQ逻辑320和/或LCPU/VCPU360分离或结合的另一个组件来执行。该过程可以从接收的数据单元开始(方框710)(图7)。例如,FFQ逻辑320可从PFE310接收数据单元。可以确定数据单元是否是片段式数据单元(方框720)。例如,流识别逻辑410可根据数据单元包头中的特定信息确定数据单元是否是片段式的数据单元。该特定信息可包括特定于片段式数据单元的特定信息,如片段识别信息,片段标记,和/或片段区距信息(fragmentoffsetinformation)。上文已经说明了片段识别信息。片段标记可包括指示数据单元是否是片段式数据单元的信息。片段区距信息可指示原始数据单元内片段的位置。如果数据单元不是片段式数据单元(方框720-否),则与数据单元相关的数据流可以被识别(方框730)。例如,流识别逻辑420可确定数据单元的流标识符(如从数据单元读取流标识符或从数据单元中的信息中生成流标识符)。如上所述,流识别逻辑420可根据诸如L3信息(如源地址和目的地址),L4信息(如源端口和目的端口),和/或协议信息的数据单元的包头中的信息来识别流标识符。在一个实施中,流标识符可作为数据单元包头中信息的哈希值来进行计算。可创建或修改流表430中的条目(方框740)。例如,流识别逻辑420可用流标识符搜索流表430,从而确定流表430是否包括具有在例如流识别字段510中的匹配的流标识符的条目。如果流表430包括具有匹配流标识符的条目,这可以说明已经创建数据流的条目。在该情形中,流识别逻辑420可更新流表430的条目中的信息。例如,流识别逻辑420可更新流统计数据,如数据单元计数器字段530中的数据计数,字节计数器字段535中字节计数,和/或流表430的计时器字段540中时序信息。如果流表430不包括具有匹配流标识符的条目,这可以说明数据单元是该数据流接收的第一数据单元。在该情形中,流识别逻辑420可在流表430中创建新条目。例如,流识别逻辑420可在流表430的条目中存储不同信息,如上面参考图5说明的信息。在一个实施中,流标识符可以识别流表430内条目的位置。换句话说,流标识符可用作流表430的索引。流识别逻辑420可向LCPU/VCPU360发送数据单元,以及关于流表条目的信息。LCPU/VCPU360可监控数据流,如收集关于数据流的统计数据或识别不想要的(如恶意)流量。图7至图9的过程可返回方框710,在这里接收另一个数据单元。如果数据单元是片段式数据单元(方框720-是),可以确定数据单元是否是片段式数据单元的第一片段(方框810)(图8)。例如,流识别逻辑420可根据数据单元包头中的L4信息(如源端口和目的端口)存在(或不存在)确定数据单元是否是片段式数据单元的第一片段。如上所述,片段式数据单元的第一片段可在其包头中包括L4信息,但片段式数据单元的后续片段在其包头中可以不包括L4信息。术语“第一片段”是指首先创建的或首先传输的片段,而不必是到达网络设备102的初始片段。如果数据单元是片段式数据单元的第一片段(方框810-是),则可被识别与数据单元相关的数据流(方框820)。例如,流识别逻辑420可确定数据单元的流标识符(如从数据单元读取流标识符或从数据单元中信息中生成流标识符)。如上所述,流识别逻辑420可根据数据单元包头中的信息(如L3信息,L4信息,和/或协议信息)识别流标识符。在一个实施中,流标识符可作为数据单元头文件中的信息的哈希值来进行计算。可创建流表430中的条目(方框830)。例如,流识别逻辑420可在流表430的条目中存储诸如上面参考图5说明的信息的不同信息。在一个实施中,流标识符可识别流表430内条目的位置。换句话说,流标识符可用作流表430的索引。可生成片段密钥(方框840)。例如,流识别逻辑420可确定数据单元的片段密钥(如从数据单元读取片段密钥或从数据单元中信息中生成片段密钥),或根据关于流表条目的信息该片段密钥。如上所述,流识别逻辑420可根据数据单元包头中的信息(如L3信息和片段识别信息)生成片段密钥。在一个实施中,片段密钥可作为数据单元包头中的信息的哈希值而生成。可以确定是否已经接收到与同一片段式数据单元相关的在前片段(方框850)。例如,流识别逻辑420可用片段密钥搜索片段表440,从而确定片段表440是否包括具有在(例如)片段密钥字段610中的匹配片段密钥的条目。如果片段表440包括具有匹配片段密钥的条目,这可说明已经接收到该数据流上的片段(不是第一片段)。在某些情形中,片段可无序地到达网络设备102。当没有接收到在前片段时(方框850-否),流识别逻辑420可在片段表440中创建新条目(方框860)。例如,流识别逻辑420可在片段表440的片段密钥字段610中存储片段密钥,并可存储指向片段表440的流表索引字段620的流表430中创建的条目的指针。图7至图9的过程可返回到方框710,在这里接收另一数据单元。当接收到在前片段时(方框850-是),流识别逻辑420可更新片段表440的条目中信息(方框870)。例如,流识别逻辑420可存储指向片段表440的(例如)流表索引字段620的流表430中创建的条目的指针。流识别逻辑420也可设置/重置计时器字段640中计数器值。可关联流表430中的条目(方框880)。例如,流识别逻辑420可经片段密钥和/或指向流表430的指针将第一片段和早先的片段相关联。例如,流识别逻辑420可更新流表430中的流统计数据,诸如数据单元计数器字段530中的数据计数,字节计数器字段535中的字节计数,和/或计时器字段540中时序信息。在一个实施中,流识别逻辑420可更新与具有早先片段的信息的第一片段相关的统计数据。这可允许通过例如收集关于数据流的统计数据或识别不想要(如恶意)的流量来监控数据流。可删除与在前片段相关的流表430中的条目(方框890)。例如,流识别逻辑420可识别根据在前片段创建的流表430中的条目,并删除该条目。图7至图9的过程可返回至方框710,在这里数据单元被接收。如果数据单元不是片段式数据单元的第一片段(方框810-否),则可以确定是否已经接收到第一片段(方框910)(图9)。例如,流识别逻辑420可生成该片段的片段密钥并使用该片段密钥分析片段表440。如果片段表440不存储对应于该片段密钥的条目,则这是为该片段式数据单元接收的初始片段。因此,没有接收到第一片段。如果片段表440包括对应于片段的条目,则流识别逻辑420可分析条目从而确定该条目是否包括流表索引字段620中的信息。如果流表索引字段620存储指向流表430的指针,则已经接收到第一片段。如果流表索引字段620没有存储指向流表430的指针,则还没有接收到第一片段。如果还没有接收到第一片段(方框910-否),则可识别与数据单元相关的数据流(方框920)。例如,流识别逻辑420可确定数据单元的流标识符(例如,从数据单元读取流标识符或根据数据单元中信息生成流标识符)。如上面所述,流识别逻辑420可根据数据单元的包头信息识别流标识符。然而,在该情形中,因为数据单元是片段式数据单元且不含L4信息,流识别逻辑420可基于L3信息和片段识别信息生成流标识符(类似于生成片段密钥的方式)。在一个实施中,流标识符可作为数据单元头文件中信息的哈希值来进行计算。可创建或修改流表430中的条目(方框930)。例如,流识别逻辑420可在流表430的条目中存储不同信息,如上面参考图5所述的信息。在一个实施中,流标识符可识别流表430中条目的位置。换句话说,流标识符可用作流表430的索引。如果流表430中没有条目(如在该片段是片段式数据单元接收的初始片段的情形中),流识别逻辑420可在流表430中创建条目并在条目的适当字段存储关于片段的信息。如果流表430中已经存在条目(如在已经接收到片段数据单元在前片段而非第一片段的情形中),流识别逻辑420可用流标识符识别条目并用关于片段的信息更新条目的字段。如果在方框910中还没有生成片段密钥,则可以生成片段密钥(方框940)。例如,流识别逻辑420可以确定数据单元的片段密钥(如从数据单元读取片段密钥或从数据单元的信息中生成片段密钥),或根据关于流表条目的信息确定该片段密钥。如上所述,流识别逻辑420可根据数据单元包头中的信息(如L3信息和片段识别信息)生成片段密钥。例如,可作为数据单元包头中的信息的哈希值生成片段密钥。片段可存储在辅助队列中(方框950)。例如,流识别逻辑420可指示结构接口410以在辅助队列中存储片段。可创建或修改片段表440中的条目(方框960)。例如,流识别逻辑420可用片段密钥搜索片段表440从而确定片段表440是否包括在(例如)片段密钥字段610中具有匹配片段密钥的条目。如果片段表440包括具有匹配片段密钥的条目,这可说明已经接收到该数据流的片段。在该情形中,流识别逻辑420可经片段密钥使该片段与早先的片段相关联。流识别逻辑420也可在队列指针字段630中存储指向用于存储片段的辅助队列(或辅助队列中地址)的指针。流识别逻辑420也可在计时器字段640中设定/重置计数器值。如果片段表440不包括具有匹配片段密钥的条目,流识别逻辑420可在片段表440中创建条目。例如流识别逻辑420可在片段表440的片段密钥字段610中存储片段密钥。在一个实施中,流识别逻辑420可保持片段表440的流表索引字段620中的信息不变(如空),或可设定流表索引字段620中信息为指示没有可用的指向流表430的指针的特定值。流识别逻辑420也可在队列指针字段630中存储指向存储片段的辅助队列(或辅助队列中的地址)的指针。流识别逻辑420也可设定/重置计时器字段640中的计数器值。图7至图9的过程可返回到方框710,在这里接收另一个数据单元。如果已经接收第一片段(方框910-是),如果方框910中还没有接收到片段密钥,则可生成片段密钥(方框1010)(图10)。例如,流识别逻辑420可确定数据单元的片段密钥(如从数据单元读取片段密钥或从数据单元中的信息中生成片段密钥)。如上所述,流识别逻辑420可从数据单元包头中信息(如L3信息和片段识别信息)生成片段密钥。例如,片段密钥可作为数据单元包头中信息的哈希值进行生成。可以识别指向流表430中条目的指针(方框1020)。例如,流识别逻辑420可用片段密钥搜索片段表440从而识别在例如,片段密钥字段610中具有匹配片段密钥的条目。流识别逻辑420可从例如流表索引字段620中读取指向流表430中条目的指针。可修改流表430中的条目(方框1030)。例如,流识别逻辑420可经指向流表430中的条目使该片段与早先的片段相关联。例如,流识别逻辑420可更新流表430中的流统计数据,如数据单元计数器字段530中的数据计数,字节计数器字段535中的字节计数,和/或计时器字段540中的时序信息。在一个实施中,流识别逻辑420可以使用后续片段的信息更新与第一片段相关联的统计数据。这可允许通过(例如)收集关于数据流的统计数据或识别不想要的(如恶意)流量来监控数据流。图7至图9的过程可返回至方框710,这里接收另一个数据单元。在图7至图9的过程中,某些信息可传输到LCPU/VCPU360。如上所述,LCPU/VCPU360可存储流表430的副本。LCPU/VCPU360可从FFQ逻辑320接收关于片段式数据单元的片段的关联性的信息,并更新流表430的副本。根据流表430副本中的信息,LCPU/VCPU360可对片段式数据单元执行某些操作,如采样,监控,数据率限制(ratelimiting),中断(dropping),等。实例图IlA和IlB是本文所述过程的实例的示意图。如图IlA所示,可接收片段式数据单元的第一片段。假定第一片段也是为与片段式数据单元相关的数据流接收的初始片段。可在流表中创建条目。例如,可根据第一片段中的信息确定流标识符,如L3信息,L4信息,和/或协议信息,如上所述。假定流标识符对应于值“A”。条目可存储在流表中对应于流标识符值A的地址位置。也可在片段存储器中创建条目。例如,可根据第一片段中的信息(如L3信息和片段识别信息)确定片段密钥,如上所述。假定片段密钥对应于值“Z”。条目可存储在片段存储器中对应于片段密钥值Z的地址位置处。条目可存储指向在流表中创建的条目的指针。如图IlA中所示,条目可存储值A,其可用作指向流表的指针(或索引)。现在假定接收到片段式数据单元的另一个片段(第K个片段,其中K>1),如图IlB所示。假定第K个片段和第一片段属于同一数据流并在第一片段接收后的某一点上被接收。可确定片段密钥(如根据第一片段中信息生成的,如L3信息和片段识别信息,如上所述)。可根据片段密钥搜索片段表。例如,假定片段密钥对应于值“Ζ”。可识别条目Z且可从条目中读取指向流表条目的指针。这可使得后面的片段(即第K个片段)与早先的片段(即,第一片段)相关联。因此,可累计与同一数据流相关联的不同片段的数据流统计数据,或其他数据流信息。图12A和12B是示出本文所述过程的另一个实例的示意图。如图12A所示,假定接收到片段式数据单元的第K个片段(这里K>1),且第K个片段是在同一数据流中第一片段之前接收的。可在流表中创建条目。例如,流标识符可根据第K个片段中的信息进行确定。因为第K个片段不是第一片段,则第K个片段可不包括L4信息。因此,可根据其他信息(如L3信息和片段识别信息)生成流标识符,如上所述。假定流标识符对应于值“Z”。条目可存储在流表中对应于流标识符值Z的地址位置。可根据片段密钥搜索片段表。例如,可以确定片段密钥(如与流标识符相同或根据第一片段中信息生成的,如L3信息和片段识别信息,如上所述)。假定片段密钥对应于值“Z”。在该情形中,在片段表中没有对应于片段密钥Z的条目。因此,条目可在片段表中创建并存储在片段表中对应于片段密钥Z的地址位置。现在假定接收到数据流中的第一片段,如图12B所示。可在流表中创建条目。例如,可根据第一片段中的信息,如L3信息,L4信息,和/或协议信息确定流标识符,如上所述。假定流标识符对应于值“A”。条目可存储在流表中对应于流标识符值A的地址位置。可根据片段密钥搜索片段表。例如,可以确定片段密钥(如,根据第一片段中信息生成的,如L3信息和片段识别信息,如上所述)。假定片段密钥对应于值“Z”。在该情形中,在片段表中已经存在对应于片段密钥Z的条目。因此,可修改条目以存储指向流表中创建的条目的指针。如图12B所示,可修改片段表条目以存储值A(其可以是指向流表的指针(或索引))。这使得后面的片段(即,第一片段)与早先的片段(即,第K个片段)相关联。因此,可累计与同一数据流相关联的不同片段的数据流统计数据,或其他数据流信息。例如,来自于早先创建的流表条目(即,对应于流标识符值Z的条目)的数据流统计数据可与来自于后期创建的流表条目(即,对应于流标识符值A的条目)的数据流统计数据进行组合。此外,可根据第K片段删除早先创建的流表条目。如上所述,第K个片段可存储在辅助队列中以等待接收第一片段。当第一片段达到时,第一片段和第K个片段可输出以便进一步的处理。然而,如果时间的阈值量出现在连续片段的接收之间,则第K个片段可从辅助队列中删除,和/或可删除片段表中的条目。此项技术的优点是其可自然过滤基于片段的服务攻击(serviceattack)的拒绝,这里,一系列的片段(有意地排除第一片段)是随机传输的。结论这里所述的实施例可便于监控包括片段式数据单元的数据流。根据这些实施,可实现某些优点。例如,具有在任何给定时间活跃的无序片段的数据流的量可用来度量网络的健康状况(或安全性)。而且,即使后续片段在第一片段之前到达,由这些后续片段经片段表匹配到后接收的第一片段,所有片段都仍可进行流表上执行的不同动作。此外,网络设备可将无序片段重新排序为正确的数据单元顺序。这可改善某些终端设备,如服务器的性能。前面的说明提供了图示和说明,但这些不是为了无遗漏地说明本发明或将其限制在公开的确切形式内。根据上面的教导,修改和变化是可能的,或可通过实施本发明获得修改和变化。例如,虽然参考图7至图9说明了一系列的方框,在其他实施中,方框的顺序可调整。进一步,可并行执行独立方框。而且,这些实施例的某些部分描述为执行一个或多个功能的“逻辑”或“组件”。术语“逻辑”或“组件”可包括硬件,如处理器,ASIC,或FPGA,或硬件和软件的组合(如在处理器上运行的软件)。进一步,已经说明了流表和片段表。如这里所用的术语“表”可指存储器内任何可搜索形式或结构的数据。显然,本文所述的方面可以按照许多不同形式的图中所示实施中的软件,固件,和硬件来实施。用来执行这些方面的实际软件代码或特殊的控制硬件不限于这些实施例。因此,本发明多个方面的操作和行为不是参考特定的软件代码说明的,应理解,软件和控制硬件可设计来实施根据本文所描述的方面。即使特殊的特征组合在权利要求中进行了列举和/或在说明书中进行了公开,但这些组合不是为了限制本发明的公开。实际上,这些特征中的许多可以不是具体以权利要求中所列出的和/或说明书中所公开的方式组合。虽然所列出的每个从属权利要求可仅直接依赖于另一个权利要求,但本发明的公开包括与权利要求组中所有其他权利要求结合的每一从属权利要求。除非有类似地明确说明,本申请中使用的单元,动作,或指令不应解读为本发明外延或内涵。而且,如这里使用的“一个(a)”可包括一个或多个项。仅在要说一项时,才使用术语“一个(one)”或类似语言。进一步,除非另外说明,否则短语“根据”是指“至少部分地根据”。权利要求一种由设备执行的方法,包括接收片段式数据单元的第一片段;确定用于识别与所述第一片段相关联的数据流的流标识符;根据所述流标识符在流表中创建条目,以存储与所述数据流相关联的信息;确定与所述第一片段相关联的片段密钥;根据所述片段密钥在片段表中创建条目;在所述片段表中的条目中存储指向所述流表中的条目的指针;接收所述片段式数据单元的后续片段,其中,所述后续片段是在接收到所述第一片段之后接收的;将所述后续片段与所述片段表中的条目进行匹配;以及根据指向所述流表中的条目的指针使所述后续片段与所述第一片段相关联。2.根据权利要求1所述的方法,其中,确定所述流标识符包括识别所述第一片段的包头中的信息,其中,所述包头中的信息包括第三层信息和第四层信息,以及根据所述包头中的信息生成所述流标识符。3.根据权利要求1所述的方法,其中,确定所述片段密钥包括识别所述第一片段的包头中的信息,其中,所述包头中的信息包括第三层信息和片段识别信息,以及根据所述包头中的信息生成所述片段密钥。4.根据权利要求1所述的方法,其中,将所述后续片段与所述片段存储器中的条目进行匹配包括生成与所述后续片段相关联的另一片段密钥,以及使用所述另一片段密钥定位所述片段存储器中的条目。5.根据权利要求1所述的方法,进一步包括在使所述后续片段与所述第一片段相关联后,将与所述第一片段和所述后续片段相关联的统计数据进行累计。6.根据权利要求1所述的方法,进一步包括在使所述后续片段与所述第一片段相关联后,以与所述后续片段相关联的信息更新所述流表的条目中的信息。7.一种设备,包括第一存储器,用于存储流表,所述流表存储与片段式数据单元的片段相关联的条目;第二存储器,用于存储与所述流表相分离的片段表;用于接收所述片段式数据单元的另一片段的装置;用于确定与所述另一片段相关联的片段密钥的装置;用于根据所述片段密钥定位所述片段表中的条目的装置;用于从所述片段表中的条目中读取指向所述流表中的条目的指针的装置;以及用于根据指向所述流表中的条目的所述指针,使与所述片段和所述另一片段相关联的统计数据相关联的装置。8.根据权利要求7所述的设备,其中,所述第二存储器是内容可寻址存储器。9.根据权利要求7所述的设备,其中,用于确定所述片段密钥的装置包括用于识别所述另一片段的包头中的信息的装置,其中,所述包头中的信息包括第三层信息和片段识别信息,以及用于根据所述包头中的信息生成所述片段密钥的装置。10.根据权利要求7所述的设备,其中,用于使所述统计数据关联的装置包括用于在所述流表的条目中存储与所述另一片段相关联的信息的装置。11.根据权利要求7所述的设备,进一步包括用于接收所述片段式数据单元的所述片段的装置,其中,所述片段是在所述另一片段之前被接收的;用于确定识别与所述片段相关联的数据流的流标识符的装置;以及用于根据所述流标识符创建所述流表中的条目的装置。12.根据权利要求11所述的设备,进一步包括用于确定与所述片段相关联的片段密钥的装置,该与所述片段相关联的片段密钥和与所述另一片段相关联的片段密钥相匹配,用于在所述片段表的条目中存储指向所述流表中的条目的所述指针的装置。13.根据权利要求7所述的设备,其中,用于确定所述流标识符的装置包括用于识别所述片段中的包头的信息的装置,其中,来自所述包头的信息包括第三层信息和第四层信息,以及用于根据所述包头中的信息生成所述流标识符的装置。14.根据权利要求7所述的设备,进一步包括队列,用于存储所述另一片段;以及其中,所述片段表进一步存储用于确定是否从所述队列中删除所述另一片段的计数值。全文摘要一种设备,可接收片段式数据单元的片段,确定识别与该片段相关的数据流的流标识符,并根据该流标识符创建流条目,以存储与数据流相关的信息。该设备也可确定与该片段相关的片段密钥,根据片段密钥存储指向流条目的指针,根据片段密钥和指向流条目的指针,将与数据流相关的一个片段和另一片段相关联,并在关联一个片段和另一片段后,累计与该一个片段和另一片段相关的统计数据。文档编号H04L29/06GK101827073SQ200910206689公开日2010年9月8日申请日期2009年10月29日优先权日2009年3月5日发明者古奈什·艾巴伊,大卫·罗厄尔,杰克·科恩申请人:丛林网络公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1