网络设备中的流监测的制作方法

文档序号:25132731发布日期:2021-05-21 08:50阅读:151来源:国知局
网络设备中的流监测的制作方法

相关申请的交叉引用

本申请要求于2019年11月21日提交的题为“flowanalysisandmanagement”的美国临时专利申请第62/938,836号的权益,其公开内容通过引用全文明确地并入于此。

本公开总体上涉及通信网络,并且更具体地涉及网络设备中的流信息收集和管理。



背景技术:

获得通信网络中的业务流测量通常是有用的。例如,关于流的此类信息可以用于使用诸如流持续时间、流量、时间、突发性等参数来表征流。业务流测量可以由网络设备(诸如网桥、交换机、或路由器等)或某种其他测量设备进行。然后,这些测量可以用于各种过程,诸如业务计量、业务分析、业务工程、攻击/入侵检测、计费、qos验证等。例如,业务分析应用可以利用在网络中的多个不同节点(例如,路由器、网桥、交换机等)处进行的流测量,以便分析网络的不同部分中的业务。

常规网络设备更新在支持线速更新的流状态信息存储器中保持的流状态信息。网络设备周期性地向收集器设备传输存储在流状态信息存储器中的流状态信息,该收集器设备通常从网络中的多个网络设备收集这种信息。流状态信息通常例如根据由网络设备利用的流监测协议定义的时间表周期性地从网络设备输出到收集器设备。一旦存储在网络设备的流状态信息存储器中的流状态信息被输出到收集器设备,流状态信息存储器中释放的空间就可用于保持由网络设备处理的新流的流状态信息。网络设备中的流状态信息存储器通常既需要足够快以允许以线速更新流状态信息,又需要足够大以保持足够数目的流的流状态信息,这些流可以由网络设备在将流状态信息输出到收集器设备的周期之间的时间间隔内处理。



技术实现要素:

在一个实施例中,一种用于监测网络设备中的流的方法,包括:在网络设备的分组处理器处,接收经由网络设备的多个网络接口进入的分组;利用分组处理器,至少部分地基于分组的相应报头中的信息将分组分类为相应流;利用分组处理器,基于所接收的分组,来更新与对应于所接收的分组的相应流相关联的流状态信息,流状态信息被存储在多个存储器中的第一存储器中,该多个存储器用于保持网络设备处的流状态信息,多个存储器以层级布置被布置,在层级布置中,处于逐渐更高的层级水平的存储器被配置为保持对应于由网络设备处理的逐渐更大的流集合的流状态信息,第一存储器处于层级布置的第一层级水平;以及利用分组处理器动态地管理多个存储器,包括:利用分组处理器确定第一存储器的存满水平超过第一阈值,响应于确定第一存储器的存满水平超过第一阈值,从第一存储器向多个存储器中的第二存储器转移与第一流集合中的至少一个流相关联的流状态信息以释放第一存储器中的空间,针对该第一流集合的流状态信息当前正在被保持在第一存储器中,第二存储器处于第二层级水平,该第二层级水平高于层级布置的第一层级水平,以及在从第一存储器向第二存储器转移与至少一个流相关联的流状态信息之后,利用分组处理器在第一存储器中所释放的空间中实例化新流。

在另一实施例中,一种网络设备包括多个网络接口,以及耦合到多个网络接口的分组处理器。分组处理器被配置为:接收经由网络设备的多个网络接口进入的分组,至少部分地基于所接收的分组的相应报头中的信息将分组分类为相应流,基于所接收的分组,来更新与对应于所接收的分组的相应流相关联的流状态信息,流状态信息被存储在多个存储器中的第一存储器中,该多个存储器用于保持网络设备处的流状态信息,多个存储器以层级布置被布置,在层级布置中,处于逐渐更高的层级水平的存储器被配置为保持对应于由网络设备处理的逐渐更大的流集合的流状态信息,第一存储器处于层级布置的第一层级水平,以及动态地管理多个存储器,分组处理器被配置为:确定第一存储器的存满水平超过第一阈值,响应于确定第一存储器的存满水平超过第一阈值,从第一存储器向多个存储器中的第二存储器转移与第一流集合中的至少一个流相关联的流状态信息以释放第一存储器中的空间,针对该第一流集合的流状态信息当前正在被保持在第一存储器中,第二存储器处于第二层级水平,该第二层级水平高于层级布置的第一层级水平,以及在从第一存储器向第二存储器转移与至少一个流相关联的流状态信息之后,在第一存储器中所释放的空间中实例化新流。

附图说明

图1是根据一个实施例的被配置用于流监测的示例网络设备的框图。

图2是根据一个实施例的用于在图1的网络设备中存储流状态信息的示例流状态信息表的图;

图3是根据一个实施例的包括图1的网络设备的流监测系统的框图。

图4是根据另一实施例的用于监测图1的网络设备中的流的示例方法的流程图。

具体实施方式

在以下描述的实施例中,网络设备利用存储器的若干层级水平来保持对应于由网络设备处理的流的流状态信息。在一个实施例中,在逐渐增加的层级水平上的存储器逐渐更大、更慢、并且更不昂贵。在一个实施例中,在逐渐增加的层级水平上的存储器被配置为保持由网络设备在任何给定时间处正在处理的逐渐更大的最新和最活跃流集合。在一个实施例中,网络设备被配置为基于在存储器的不同层级水平上监测一个或多个存储器的相应存满水平来管理存储器的存储器空间。在一个实施例中,当较低层级水平的存储器达到或接近满容量时,网络设备向下一层次水平的存储器转移与较低层级水平的存储器中的一个或多个流相关联的流状态信息。在一个实施例中,然后,较低层级水平的存储器中所释放的空间用于在较低层级水平的存储器中实例化较新的流。在至少一些实施例中,从相对较低层级水平的存储器向相对较高层级水平的存储器转移与较旧的流相关联的流状态信息,允许网络设备被缩放以保持任何给定数目的流的流状态信息,例如基于网络设备在网络中的位置,同时将与最新和最活跃流相关联的流状态信息保持在较低层级水平的较快和较昂贵的存储器中,而无需扩展较低层级水平别的较昂贵的存储器。

图1是根据一个实施例的包括用于流监测的能力的示例网络设备100(诸如网桥、交换机、路由器等)的框图。网络设备100包括被配置为耦合到网络通信链路的多个网络接口108(在本文中有时称为“端口”)。网络设备100还包括耦合到多个端口108的分组处理器112。在一个实施例中,分组处理器112在单个集成电路(ic)(有时称为“芯片”)上实现。例如,分组处理器112对应于“片上系统”(soc),该soc将网络设备100的各种组件(包括嵌入式处理器122)集成到单个ic上。在另一实施例中,分组处理器112在对应于多芯片模块(mcm)的多个ic上实现,在mcm中,多个ic被集成到例如统一基底上并且被集成在具有ic引脚的单个ic封装中。在一个实施例中,多个ic在内部(例如,在ic封装内)通过细线和/或与嵌入在统一基底中的导体连接在一起。在又一实施例中,分组处理器108在对应于封装内系统(sip)的多个ic上实现。sip通常类似于mcm,但是利用sip,多个ic可以在单个ic封装内垂直堆叠或水平平铺。

分组处理器112包括耦合到多个端口108的转发引擎114。转发引擎114被配置为例如基于分析分组的报头中的信息(例如,目的地地址、虚拟局域网(vlan)标识符等中的一个或多个)来在多个端口108之间转发分组。分组处理器112还包括流监测引擎116。在一个实施例中,流监测引擎116包括流分类器118和流状态更新引擎116。流分类器118被配置为将分组分类为流,并且分组处理器112被配置为保持关于流的流状态信息。流对应于相关的一系列分组。作为一个示例,一些流(诸如互联网协议(ip)传输控制协议(tcp)/用户数据报协议(udp)流)通常在网络工业中由5元组定义,诸如{目的地ip地址,源ip地址,l4协议,udp/tcp目的地端口,udp/tcp源端口}。在其他示例中,流仅由分组的报头中的特定源地址和/或特定目的地地址标识。例如,具有特定ip源地址的所有分组对应于特定流,或者具有特定ip目的地地址的所有分组对应于特定流。作为又一示例,具有特定ip源地址和特定ip目的地地址两者的所有分组对应于特定流。类似地,具有特定媒体访问控制(mac)源地址和/或特定mac目的地地址的分组对应于特定流。另外地或备选地,分组报头中的其他信息用于定义流,诸如特定分组类型、特定虚拟局域网(vlan)标识符(id)等中的一个或多个。

网络设备100可以例如根据网络设备100在网络中的位置来在给定时间内处理不同数目的流。仅作为示例,如果网络设备100被用作网络中的边缘路由器,则与未定位在网络的边缘处的网络设备相比,网络设备100可以在给定时间内处理相对较大数目的流。在一个实施例中,网络设备100利用存储器130的层级布置,其中层级中最低水平上的存储器130最快、最昂贵和存储容量最小,并且层级中逐渐更高水平上的存储器130逐渐更慢、更不昂贵并且存储容量较大。如下面更详细地描述的,网络设备100被配置为根据需要利用不同层级水平上的存储器,扩展来监测由网络设备100例如根据网络设备100在网络中的位置在给定时间内处理的任何合适数目的流。

在一个实施例中,一个或多个存储器130在分组处理器112内部。例如,在所示实施例中,分组处理器112包括第一存储器130-1和第二存储器130-2,它们在分组处理器112内部(例如,在与分组处理器112相同的芯片上实现)。尽管在图1中将分组处理器112示出为包括在分组处理器112内部的两个存储器130,但是在其他实施例中,分组处理器112包括在分组处理器112内部的其他数目(例如,3、4、5个等)的存储器130。在另一实施例中,分组处理器112仅包括在分组处理器112内部的单个存储器130。在一个实施例中,网络设备100还包括在分组处理器112外部的至少一个存储器130。例如,在一个实施例中,网络设备100包括在分组处理器112外部的第三存储器130-3。在一个实施例中,存储器130-3在与分组处理器112在其上实现的芯片分开的一个或多个芯片上实现。在一个实施例中,存储器130-3耦合到外部处理器138,诸如网络设备100的中央处理单元(cpu)。

在一个实施例中,存储器130以层级布置被布置,在层级布置中,在层级中最低水平上的存储器130最快(例如,具有最高的存储器访问带宽)、最昂贵并且存储容量最小,并且层级中逐渐更高水平上的存储器逐渐更慢、更不昂贵并且存储容量较大。在一个实施例中,存储器130-1处于第一最低层级水平,存储器130-2处于第二层级水平,该第二层级水平是相对于第一层级水平的下一水平,并且在所示的实施例中,存储器130-3处于第三最高层级水平。在一个实施例中,存储器130-1是三进制内容可寻址存储器(tcam)或被配置为以线速操作的另一类型的存储器。在一个实施例中,存储器130-2是比存储器130-1慢但是存储容量大的存储器。在各种实施例中,存储器130-2是随机存取存储器(ram)或另一合适类型的存储器。类似地,在一个实施例中,存储器130-3比存储器130-2慢并且存储容量大。在一个实施例中,存储器130-3被包括在耦合到网络设备100的cpu138的数据库140中。

如下面更详细地描述的,分组处理器112被配置为管理存储器130中的流状态信息,使得在最低层级水平上的存储器130存储对应于正在由分组处理器112处理的最新和/或最活跃流的第一集合的流状态信息,并且根据需要,利用较高层级水平的一个或多个存储器来存储由分组处理器112处理的最新和/或最活跃流的逐渐更大集合。在一个实施例中,由于最低层级水平上的存储器130存储由分组处理器112处理的最活跃和/或最近的流,所以分组处理器112能够以线速更新对应于最活跃和/或最近流的流状态信息,同时根据需要按照比例扩展以将对应于最活跃和/或最近流的较大集合的流状态信息保持在一个或多个逐渐更慢并且更大的存储器130中,而无需扩展较低层级水平上的存储器130。因此,在一个实施例中,网络设备100可缩放以使用最小层级水平来保持对应于可以由网络设备100处理的合适的最大数目的流的流状态信息,而无需扩展较低层级水平的固定大小的存储器。

继续参考图1,流监测引擎116通常确定进入分组是属于已有的流(即,流监测引擎先前标识的流和流监测引擎116当前知道的流)还是属于当前未知的流(在本公开中有时称为“新流”)。例如,流监测引擎116将分组分类为流,并且检查在存储器130-1中当前是否存在对应于该流的条目。在一个实施例中,当流监测引擎116确定进入分组不属于已有的流时,例如,当存储在流存储器130-1中的流信息状态表中当前不存在对应于该流的条目时,该流在存储器130-1中被实例化。在一个实施例中,在存储器130-1中实例化该流涉及例如通过向存储器130-1中的条目中的流标识字段添加标识该流的信息,来将用于保持存储器130-1中的流状态信息的流信息状态表的条目与该流相关联。在一个实施例中,流监测引擎116在流存储器130-1中实例化新流。在另一实施例中,另一实体(例如,嵌入式处理器122或cpu138)在流存储器130中实例化新流。例如,当流监测引擎116确定进入分组不属于已知的流时,流监测引擎116将分组镜像到嵌入式处理器122或cpu138,并且嵌入式处理器122或cpu138在存储器130-1中实例化新流。

另一方面,根据一个实施例,当流监测引擎116确定进入分组属于已有的流时,例如,当存储器130-1中当前存在对应于该流的条目时,流监测引擎116基于进入分组来更新对应于该流的条目中(或与之相关联)的流状态信息。例如,在一个实施例中,流监测引擎116从存储器130-1中对应于该流的条目中读取当前流状态信息,并且基于所接收的分组来更新条目中的一个或多个字段的值(例如,字节数、分组数、最后分组的时间等)。

在一个实施例中,存储器130-1支持以下操作:i)在存储器130-1中标识流,以及ii)基于对应于该流的进入分组以线速来更新所标识的流的流状态信息。然而,在一个实施例中,存储器130-1限于保持最多k个流,其中k是正整数。在一个实施例中,为了解决对可以在存储器130-1中保持的流的数目的限制,网络设备100被配置为监测存储器130-1的存满水平,并且当存储器130-1的存满水平超过阈值时,从存储器130-1向存储器130-2转移对应于一个或多个流的流状态信息。在一个实施例中,例如,嵌入式处理器122被配置为监测存储器130-1的存满水平,并且当存储器130-1的存满水平超过阈值时,从存储器130-1向存储器130-2转移对应于一个或多个流的流状态信息。在一个实施例中,当存储器130-1中用于保持流状态信息的流状态信息表中的可用条目的数目为零或几乎为零(例如,为1、2、3等)时,嵌入式处理器122确定存储器130-1的存满水平超过阈值。在其他实施例中,利用其他合适的存储器存满标准。

在一个实施例中,响应于确定存储器130-1的存满水平超过阈值,嵌入式处理器122标识在存储器130-1中保持的最旧的流(即,在存储器130-1中当前保持的任何其他流之前在存储器130-1中实例化的流),并且从存储器130-1向存储器130-2转移对应于最旧的流的流状态信息。在另一实施例中,嵌入式处理器122利用不同的选择标准来标识针对其要从存储器130-1向存储器130-2转移流状态信息的流。

在一个实施例中,耦合到嵌入式处理器122的程序存储器124存储机器可读指令集126,该机器可读指令集在由嵌入式处理器122执行时使嵌入式处理器122监测存储器130-1的存满水平,并且当存储器130-1的存满水平超过阈值时,i)在存储器130-1中标识要针对其从存储器130-1转移流状态信息的流,ii)从存储器130-1中读取对应于所标识的流的流状态信息,以及iii)将流状态信息存储在存储器130-2中。在一个实施例中,将流状态信息存储在存储器130-2中包括确定存储器130-2中是否已经存在对应于该流的记录,例如当先前从存储器130-1转移了对应于相同流的流状态信息时,是否在存储器130-2中创建了对应于该流的记录。响应于确定对应于该流的记录已经存在于存储器130-2中,嵌入式处理器122基于当前正从存储器130-1转移的流状态信息来更新存储器130-2中的记录。另一方面,在一个实施例中,响应于确定存储器130-2不包括对应于该流的记录,嵌入式处理器122在存储器130-2中创建对应于该流的记录,并且将流状态信息存储在存储器130-2中的所创建的记录中。

在一个实施例中,在从存储器130-1向存储器130-2转移对应于特定流的流状态信息之后,在存储器130-1中所释放的空间中实例化新流。例如,在一个实施例中,流监测引擎116、嵌入式处理器122或cpu138如上所述在存储器130-2中实例化新流。在一个实施例中,流监测引擎116的流状态更新引擎120然后开始以线速基于对应于由网络设备100接收的流的新的进入分组,来更新对应于新流的流状态信息。

在一个实施例中,存储器130-2相对于存储器130-1处于下一层级水平,并且存储器130-2被配置为保持比可以在存储器130-1中保持的最大数目的流较多数目的流。然而,在一个实施例中,存储器130-2被限制为最多保持一定数目的流,该数目大于可以在存储器130-1中保持的最大流数目。例如,在一个实施例中,尽管存储器130-1限于保持最多k个流,但是存储器130-2限于保持最多n*k个流,其中n和k是正整数。为了解决对可以在存储器130-2中保持的流的数目的限制,网络设备100被配置为监测存储器130-2的存满水平,并且当存储器130-2的存满水平超过阈值时,从存储器130-2向cpu138转移对应于一个或多个流的流状态信息。例如,在一个实施例中,指令集142在由嵌入式处理器122执行时进一步使嵌入式处理器142监测存储器130-2的存满水平,并且当存储器130-2的存满水平超过阈值时,从存储器130-2向cpu138转移对应于一个或多个流的流状态信息。在一个实施例中,cpu138被配置为接收从存储器130-2向cpu138转移的流状态信息,并且将流状态信息存储在存储器130-3中。

在一个实施例中,当在用于在存储器130-2中保持流状态信息的流状态信息表中的可用条目的数目为零或几乎为零(例如,为1、2、3等)时,嵌入式处理器122确定存储器130-2的存满水平超过阈值。在其他实施例中,利用其他合适的存储器存满水平标准。在一个实施例中,响应于确定存储器130-2的存满水平超过阈值,嵌入式处理器122标识在存储器130-2中保持的最旧的流(即,在存储器130-2中当前保持的任何其他流之前在存储器130-2中实例化的流),并且从存储器130-2向cpu138转移对应于最旧的流的流状态信息。在另一实施例中,嵌入式处理器122利用不同的选择标准来标识要针对其从存储器130-1向cpu128转移流状态信息的流。在一个实施例中,在从存储器130-2向cpu138转移对应于特定流的流状态信息之后,在存储器130-2中所释放的空间中创建对应于新流的记录,以存储从存储器130-1转移的对应于新流的流状态信息。

在一个实施例中,耦合到cpu138的程序存储器142存储机器可读指令集,该机器可读指令集在由cpu138执行时使cpu138接收从存储器130转移的流状态信息,并且将流状态信息存储在存储器130-3中。在一个实施例中,将流状态信息存储在存储器130-3中包括确定存储器130-3中是否已经存在对应于该流的记录,例如当先前从存储器130-2转移了对应于该流的流状态信息时,是否在存储器130-3中创建了对应于该流的记录。响应于确定对应于该流的记录已经存在于存储器130-3中,cpu138基于当前正从存储器130-3转移的流状态信息来更新存储器130-3中的记录。另一方面,响应于确定存储器130-2不包括对应于该流的记录,cpu138在存储器130-3中创建对应于该流的记录,并且将流状态信息存储在存储器130-3中的所创建的记录中。

在一个实施例中,存储器130-3相对于存储器130-2处于下一层级水平,并且存储器130-3被配置为保持比可以在存储器130-2中保持的最大数目的流较多数目的流。例如,在一个实施例中,尽管存储器130-2限于保持最多n*k个流,但是存储器130-3被配置为保持最多m*n*k个流,其中m、n和k是正整数。在一个实施例中,存储器130-3被配置为保持对应于针对其由网络设备支持流监测的最大流数目的流状态信息。在一个实施例中,cpu138被配置为周期性地从存储器130-3向外部流监测实体(诸如外部收集器设备)转移流状态信息。例如,在一个实施例中,程序存储器142存储机器可读指令集146,该机器可读指令集146在由cpu138执行时使cpu138周期性地从存储器130-3向外部流监测实体转移流状态信息。在一个实施例中,周期性地从存储器130-3向外部流监测实体转移流状态信息包括:根据预定时间表(诸如由外部流监测实体支持的特定流状态转移时间表)从存储器130-3转移流状态信息。

图2是根据一个实施例的用于存储流状态信息的示例流状态信息表200的图。在一个实施例中,网络设备100的每个存储器130包括流状态信息表,诸如流状态信息表200。流状态信息表200包括用于存储对应于不同流的流状态信息的多个条目202。在一个实施例中,流状态信息表200包括多个条目,该多个条目由包括流状态信息表200的存储器的存储容量所限制。例如,参照图1和2,在一个实施例中,包括在存储器130-1中的流状态信息表(诸如流状态信息表200)最多包括k个条目202,包括在存储器130-2中的流状态信息表(诸如流状态信息表200)最多包括n*k个条目202,以及包括在存储器130-3中的流状态信息表(诸如流状态信息表200)最多包括m*n*k个条目202,其中m、n和k是正整数。流状态信息表200的每个条目202包括将条目202与特定流相关联的流标识符字段204、以及存储对应于所标识的流的流状态信息的多个流状态字段206。字段206包括:字节计数字段206-1,用于记录属于所标识的流的所接收的分组中的字节的计数;分组计数字段206-2,用于记录属于所标识的流的所接收的分组的计数;开始时间字段206-3,用于记录流的开始时间(例如,由网络设备接收到属于该流的第一分组的时间)、以及最后分组时间字段206-4,用于记录由网络设备接收到属于该流的最近分组的时间。在一些实施例中,流状态信息表200省略了图2所示的多个流状态信息字段206中的一个,和/或包括图2中未示出的一个或多个流状态信息字段206。

在一个实施例中,在流状态信息表200中实例化新流或针对新流创建记录包括在流状态信息表200的可用条目202的流标识符信息字段204中记录与新流相关联的标识信息,以及在条目202的流状态信息字段206中记录当前流状态信息(例如,基于正在流状态信息表200中被实例化的流的第一进入分组,或者基于正被转移到流状态信息表200的流状态信息)。在一个实施例中,流状态更新引擎122被配置为基于属于针对其条目已经存在于流状态信息表200中(例如,存储在存储器130-1中)的已有的流的进入分组通过以下来更新流状态信息:i)搜索流状态信息表200以标识条目202,在条目202中标识流的流标识符信息字段204,ii)从所标识的条目202的一个或多个流状态信息字段206中读取当前流状态信息,iii)基于从所标识的条目202中读取的当前流状态信息和属于该流的进入分组来计算一个或多个流状态信息字段206的经更新的值,以及iv)将经更新的值写入到对应的一个或多个流状态信息字段。类似地,在一个实施例中,嵌入式处理器122/cpu138基于对应于正向存储器130-2/130-2转移的流的流状态信息通过以下来更新对应于针对其条目已经存在于流状态信息表200中(例如,存储在存储器130-2/130-3中)的流的流状态信息:i)搜索流状态信息表200以标识条目202,在条目202中标识流的流标识符信息字段204,ii)从所标识的条目202的一个或多个流状态信息字段206中读取当前流状态信息,iii)基于从所标识的条目202中读取的当前流状态信息和正被转移的流状态信息来计算一个或多个流状态信息字段206的经更新的值,以及iv)将经更新的值写入对应的一个或多个流状态信息字段。

图3是根据一个实施例的具有流监测能力的网络300的框图。在一个实施例中,网络300包括多个网络设备304,至少包括第一网络设备304-1、第二网络设备304-2和第三网络设备304-3。在一个实施例中,每个网络设备304与图1的网络设备104相同或相似。在一个实施例中,网络设备304中的不同网络设备位于网络300中的不同位置或级,并且取决于网络设备在网络300中的划分位置或级来在给定时间间隔内处理不同数目的流。例如,在网络300是连接到外部网络(例如,互联网)的内部网络(例如,校园网络)的实施例中,网络设备304-1是边缘网络设备,诸如将网络300连接到其他网络的边缘路由器,而网络设备302-2、302-3是非边缘网络设备,诸如在网络300中操作的非边缘交换机或路由器。在该实施例中,与由非边缘网络设备302-2或非边缘网络设备302-3处理的流的数目相比,网络设备304-1通常处理较大数目的流。作为另一示例,在网络设备304以多级架构布置在网络300中的实施例中,网络设备304-1是网络300中的核心网络设备,而网络设备304-2、304-3是网络300中的叶子或骨干网络设备。在该实施例中,与在网络300的非核心级操作的网络设备304-2、304-3相比,在网络300的核心操作的网络设备304-1通常在给定的时间内处理较多的流。

网络设备304被配置为如本文所述收集与遍历网络设备304的流有关的流状态信息,并且将流状态信息输出到收集器设备310。在一个实施例中,网络设备304被配置为根据合适的协议,诸如ipfix协议或另一合适的协议,通过网络将流状态信息输出到收集器设备301。在一个实施例中,网络设备304根据预定时间表将流状态信息输出到收集器设备310,诸如以预定时间间隔周期性地。在一个实施例中,收集器设备310将流状态信息存储在流数据库310中,和/或将流状态信息提供给应用服务器314,以供应用服务器314进行随后分析。在各种实施例中,应用服务器314将从网络设备304接收的流状态信息用于各种操作,诸如网络规划、优化网络资源利用率或业务性能、网络攻击/入侵的检测和防御、服务质量(qos)监测、基于使用情况的计费,等等。

在一个实施例中,每个网络设备304利用如本文所述的一个或多个层级水平的存储器,以缩放到网络设备304在网络设备304处针对其保持流状态信息的流的数目,而无需扩展较快但是就成本、功耗等方面而言较昂贵的较低层级水平的存储器。因此,例如,通过使用本文中所描述的层级存储器架构,在网络的边缘或核心处操作的网络设备304-1扩展以监测比网络设备304-2较多数目的流,尽管在一个实施例中,网络设备304-1利用与网络设备304-2相同大小的硬件存储器(例如,tcam)和相同大小的嵌入式存储器。

图4是根据一个实施例的由诸如图1的网络设备104的网络设备实现的示例方法400的流程图。仅出于说明目的参照网络设备100(图1)描述方法400。在其他实施例中,方法400由不同于图1的网络设备104的合适的网络设备实现。

在框402处,由网络设备的分组处理器接收经由网络设备的多个网络接口进入的分组,并且在框404处,所接收的分组由分组处理器分类为相应流。在一个实施例中,至少部分地基于分组的相应报头中的信息将分组分类为分组流。仅作为示例,在一个实施例中,分组被分类为流,该流被定义为具有报头的分组流,这些报头全部具有相同的5元组值,包括:i)源ip地址,ii)源端口号,iii)目的地ip地址,iv)目的地端口号,以及v)特定ip协议。在其他实施例中,根据其他合适的分类标准来将分组分类为流。

在框406,基于所接收的分组来更新与对应于所接收的分组的相应流相关联的流状态信息。在一个实施例中,流状态信息被存储在多个存储器中的第一存储器中,多个存储器用于在网络设备处保持流状态信息。在一个实施例中,流状态信息被存储在存储器130-1中。在另一实施例中,流状态信息被存储在与存储器130-1不同的合适的存储器中。在一个实施例中,用于在网络设备处保持流状态信息的多个存储器以层级布置来布置,在层级布置中,处于逐渐更高的层级水平的存储器被配置为保持对应于由网络设备处理的逐渐更大的流集合的流状态信息。在一个实施例中,第一存储器处于层级布置的第一层级水平。在一个实施例中,第一存储器在多个存储器中具有最高的访问带宽。在一个实施例中,第一存储器支持以线速更新流状态信息。

在框408处,确定第一存储器的存满水平超过第一阈值。例如,在一个实施例中,确定在流状态信息表中用于在第一存储器中保持流状态信息的可用条目的数目为零或几乎为零(例如,1、2、3等)。在其他实施例中,利用其他合适的存储器存满标准。

在框410处,响应于确定第一存储器的存满水平超过第一阈值,从第一存储器向多个存储器中的第二存储器转移与如下至少一个流相关联的流状态信息,以释放第一存储器中的空间,该至少一个流在第一流集合中、针对该至少一个流流状态信息当前正在被保持在第一存储器中。在一个实施例中,第二存储器处于层级布置的第二层级水平,该第二层级水平高于层级布置的第一层级水平。在一个实施例中,从第一存储器向第二存储器转移与流相关联的流状态信息包括:标识第一流集合中的最旧的流,最旧的流在针对其的流状态信息当前正在被保持在第一存储器中的第一流集合中的任何其他流之前已经在第一存储器中被实例化,以及向第二存储器转移与在第一流集合中标识的最旧的流相关联的流状态信息。在一个实施例中,第二存储器具有小于第一存储器的存储器访问带宽的存储器访问带宽。在一个实施例中,第二存储器不支持以线速更新流状态信息。在一个实施例中,从第一存储器向第二存储器转移与最旧的流相关联的流状态信息,以确保在任何给定时间由网络设备正处理的最新和最活跃流的流状态信息被保持在网络设备的第一较快的存储器中,同时扩展了网络设备正在监测的流的总数。

在框412,在从第一存储器向第二存储器转移与至少一个流相关联的流状态信息之后,在第一存储器中所释放的空间中实例化新流。然后,基于对应于由网络设备接收的流的随后分组以线速更新对应于新流的流状态信息。

在一个实施例中,一种用于监测网络设备中的流的方法,包括:在网络设备的分组处理器处,接收经由网络设备的多个网络接口进入的分组;利用分组处理器至少部分地基于分组的相应报头中的信息将分组分类为相应流;利用分组处理器基于所接收的分组,来更新与对应于所接收的分组的相应流相关联的流状态信息,流状态信息被存储在多个存储器中的第一存储器中,该多个存储器用于保持网络设备处的流状态信息,多个存储器以层级布置被布置,在层级布置中,处于逐渐更高的层级水平的存储器被配置为保持对应于由网络设备处理的逐渐更大的流集合的流状态信息,第一存储器处于层级布置的第一层级水平;以及利用分组处理器动态地管理多个存储器,包括:利用分组处理器确定第一存储器的存满水平超过第一阈值,响应于确定第一存储器的存满水平超过第一阈值,从第一存储器向多个存储器中的第二存储器转移与第一流集合中的至少一个流相关联的流状态信息以释放第一存储器中的空间,针对该第一流集合的流状态信息当前正在被保持在第一存储器中,第二存储器处于第二层级水平,该第二层级水平高于层级布置的第一层级水平,以及在从第一存储器向第二存储器转移与至少一个流相关联的流状态信息之后,利用分组处理器在第一存储器中所释放的空间中实例化新流。

在其他实施例中,该方法还包括以下特征中的一个、或以下特征中的两个或更多个的任何合适的组合。

第一存储器具有第一访问带宽,并且从第一存储器向第二存储器转移与至少一个流相关联的流状态信息包括:向具有第二存储器访问带宽的第二存储器转移流状态信息,第二存储器访问带宽低于第一存储器访问带宽。

基于所接收的分组,来更新与对应于分组的流相关联的流状态信息包括:搜索三元内容可寻址存储器(tcam)以标识对应于该流的条目,以及基于所接收的分组,来更新对应于该流的条目的一个或多个字段。

转移与至少一个流相关联的流状态信息包括:向随机存取存储器(ram)转移与至少一个流相关联的流状态信息。

从第一存储器向第二存储器转移与至少一个流相关联的流状态信息包括:标识第一流集合中的最旧的流,最旧的流在针对其的流状态信息当前正在被保持在第一存储器中的第一流集合中的任何其他流之前已经在第一存储器中被实例化,以及向第二存储器转移与在第一流集合中标识的最旧的流相关联的流状态信息。

动态地管理多个存储器还包括:利用分组处理器确定第二存储器的存满水平超过第二阈值,响应于确定第二存储器的存满水平超过第二阈值,从第二存储器向多个存储器中的第三存储器转移与第二流集合中的至少一个流相关联的流状态信息以释放第二存储器中的空间,针对该第二流集合的流状态信息当前正在被保持在第二存储器中,第三存储器处于第三层级水平,该第三层级水平高于层级布置的第二层级水平,以及在从第二存储器向第三存储器转移与至少一个流相关联的流状态信息之后,在第二存储器中所释放的空间中创建记录,该记录用于存储与从第一存储器向第二存储器的新的经转移的流相关联的流状态信息。

从第二存储器向第三存储器转移与至少一个流相关联的流状态信息包括:向分组处理器外部的存储器转移与至少一个流相关联的流状态信息。

从第二存储器向第三存储器转移与至少一个流相关联的流状态信息包括:向耦合到网络设备的中央处理单元(cpu)的存储器转移与至少一个流相关联的流状态信息。

从第二存储器向第三存储器转移与至少一个流相关联的流状态信息包括:标识第二流集合中的最旧的流,最旧的流在第二流集合中针对其流状态信息当前正在被保持在第二存储器中的任何其他流之前已经在第二存储器中被实例化,以及向第三存储器转移与在第二流集合中标识的最旧的流相关联的流状态信息。

该方法还包括:周期性地将流状态信息从第三存储器输出到收集器设备,该收集器设备在网络设备外部,以及在将流状态信息从第三存储器输出到收集器设备之后,使由第三存储器中的流状态信息所占用的存储器空间可用于存储随后从第二存储器向第三存储器被转移的新的流状态信息。

在另一实施例中,一种网络设备包括多个网络接口,以及耦合到多个网络接口的分组处理器。分组处理器被配置为:接收经由网络设备的多个网络接口进入的分组,至少部分地基于所接收的分组的相应报头中的信息将分组分类为相应流,基于所接收的分组,来更新与对应于所接收的分组的相应流相关联的流状态信息,流状态信息被存储在多个存储器中的第一存储器中,该多个存储器用于保持网络设备处的流状态信息,多个存储器以层级布置被布置,在层级布置中,处于逐渐更高的层级水平的存储器被配置为保持对应于由网络设备处理的逐渐更大的流集合的流状态信息,第一存储器处于层级布置的第一层级水平,以及动态地管理多个存储器,分组处理器被配置为:确定第一存储器的存满水平超过第一阈值,响应于确定第一存储器的存满水平超过第一阈值,从第一存储器向多个存储器中的第二存储器转移与第一流集合中的至少一个流相关联的流状态信息以释放第一存储器中的空间,针对该第一流集合的流状态信息当前正在被保持在第一存储器中,第二存储器处于第二层级水平,该第二层级水平高于层级布置的第一层级水平,以及在从第一存储器向第二存储器转移与至少一个流相关联的流状态信息之后,在第一存储器中所释放的空间中实例化新流。

在其他实施例中,网络设备还包括以下特征中的一个、或以下特征中的两个或更多个的任何合适的组合。

第一存储器具有第一访问带宽。

第二存储器具有第二存储器访问带宽,第二存储器访问带宽低于第一存储器访问带宽。

第一存储器包括三元内容可寻址存储器(tcam),该三元内容可寻址存储器将流状态信息与对应流相关联。

第二存储器包括随机存取存储器(ram),该随机存取存储器将流状态信息与对应流相关联。

分组处理器被配置为基于所接收的分组至少通过以下来更新与对应于该分组的流相关联的流状态信息:搜索tcam以标识对应于该流的条目,以及基于所接收的分组来更新对应于该流的条目的一个或多个字段。

分组处理器被配置为:标识第一流集合中的最旧的流,该最旧的流在针对其的流状态信息当前正在被保持在第一存储器的第一流集合中的任何其他流之前已经在第一存储器中被实例化,以及从第一存储器向第二存储器转移与最旧的流相关联的流状态信息。

分组处理器还被配置为:确定第二存储器的存满水平超过第二阈值,响应于确定第二存储器的存满水平超过第二阈值,从第二存储器向多个存储器中的第三存储器转移与第二流集合中的至少一个流相关联的流状态信息以释放第二存储器中的空间,针对该第二流集合的流状态信息当前正在被保持在第二存储器中,第三存储器处于层级布置的第三层级水平,以及在从第二存储器向第三存储器转移与至少一个流相关联的流状态信息之后,在第二存储器中所释放的空间中创建记录,该记录用于存储与随后从第一存储器向第二存储器被转移的流相关联的流状态信息。

分组处理器被配置为:标识第二流集合中针对其的流状态信息当前正在被保持在第二存储器中的最旧的流,最旧的流在第二流集合中的任何其他流之前已经在第二存储器中被实例化,以及从第二存储器向第三存储器转移与最旧的流相关联的流状态信息。

第三存储器在分组处理器的外部。

该网络设备还包括外部处理器,其中第三存储器被包括在耦合到外部处理器的数据库中。

外部处理器被配置为:周期性地将被存储在第三存储器中的流状态信息输出到收集器设备,以及在将流状态信息从第三存储器输出到收集器设备之后,使由第三存储器中的流状态信息所占用的存储器空间可用于存储随后从第二存储器向第三存储器被转移的新的流状态信息。

上述各种框、操作、和技术中的至少一些可以利用硬件、执行固件指令的处理器、执行软件指令的处理器、或其任何组合来实现。当利用执行软件或固件指令的处理器来实现时,软件或固件指令可以存储在任何计算机可读存储器中,诸如磁盘、光盘、或其他存储介质、ram或rom或闪存中、处理器、硬盘驱动器、光盘驱动器、磁带驱动器等。软件或固件指令可以包括机器可读指令,该机器可读指令在由一个或多个处理器执行时使一个或多个处理器执行各种动作。

当以硬件实现时,硬件可以包括以下中的一个或多个:分立组件、集成电路、专用集成电路(asic)、可编程逻辑器件(pld)等。

虽然已经参考特定示例描述了本发明,其中这些特定示例仅是示例性的,而不是限制本发明,但是可以在不脱离本发明的范围的前提下对所公开的实施例进行改变、增加和/或删除。

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