用于分组分类的方法和装置
引用并入
本公开要求在2014年1月14日提交的、题为“Packet Capture by Size in aPacket Processor”的第61/927,266号美国临时申请的权益,其整体以引用的方式并入于此。
背景技术
这里提供的背景技术描述是为了一般性地呈现本公开的上下文的目的。当前指定的发明人的工作(到在此背景技术部分描述的工作的程度)以及在提交时可能以其他方式不适合作为现有技术的本描述的诸多方面,既并非明确地也并非隐含地被承认为是本公开的现有技术。
在各种场景中,网络设备基于层7分类来对分组采取动作。在一个示例中,网络设备接收分组,并且执行深度分组有效载荷检查,以搜索分组中的特定字符串,从而确定所述分组所关联的网络应用,并且然后根据网络应用的策略对分组采取动作。
发明内容
本公开的方面提供了一种用于分组分类的方法。该方法包括:在网络设备的计算机存储器中,存储针对网络应用的分组流的特征签名。分组流包括两个或更多分组,并且特征签名包括在针对网络应用的分组流中的两个或更多分组属性的模式。然后,该方法包括:在网络设备处,接收网络分组的流;识别网络分组的流中的一个或多个分组流;在分组处理器处,处理分组,以获得相应的分组流中的分组的分组属性;以及,在分组流中的分组的分组属性与给定网络应用的特征签名相对应时,将分组流识别为与给定网络应用相关联。
根据本公开的一个方面,该方法包括:从分组流中的分组的首部提取一个或多个分组属性。在一个示例中,该方法包括:对分组的首部进行位屏蔽(bit masking)以提取分组的有效载荷大小。在另一示例中,该方法包括:对分组的首部进行位屏蔽以提取分组的总长度以及一个或多个首部长度,以及通过从总长度减去首部长度来计算有效载荷大小。
在一个实施例中,该方法包括:在网络设备的计算机存储器中存储以下各项中的至少一项:在接收到具有特定有效载荷大小的分组时的时间的模式,以及分组流中的索引的模式,在索引处的分组具有特定有效载荷大小。在另一实施例中,该方法包括:在网络设备的计算机存储器中存储指定以下各项的两个或更多分组属性的模式的特征签名:具有特定有效载荷大小的分组的字节速率、具有特定大小的分组在时域中的到达速率、具有特定大小的分组在位置域中的到达速率、具有特定大小的分组之间的到达间隔时间、具有特定大小的分组之间的到达间隔间隙、有效载荷大小、分组速率、字节速率、到达间隔时间、分组数目。
根据本公开的一个方面,该方法包括:根据基于分组属性、通过分支决策序列而进行最终决策的决策树,将分组流识别为与给定网络应用相关联。在一个示例中,该方法包括:构建基于分组属性、通过分支决策序列而将特征签名与网络应用相关联的决策树。
本公开的方面提供了一种网络设备,所述网络设备包括存储器、端口以及分组处理器。所述存储器被配置为存储针对网络应用的分组流的特征签名,分组流包括两个或更多分组,并且特征签名包括在针对网络应用的分组流中的两个或更多分组的两个或更多分组属性的模式。所述端口被配置为接收分组的流。所述分组处理器被配置为识别网络分组的流中的一个或多个分组流,处理分组以获得相应的分组流中的分组的分组属性,并且在分组流中的分组的分组属性与给定网络应用的特征签名相对应时,将分组流识别为与给定网络应用相关联。
附图说明
将参照以下附图来详细描述本公开中作为示例而提出的各个实施例,其中相同的附图标记指代相同的元件,并且其中:
图1示出了根据本公开的实施例的网络系统100的框图;
图2A-2B示出了根据本公开的实施例的与两个网络应用相关联的签名;
图3示出了概述根据本公开的实施例的用于业务(traffic)分类的过程300的流程图;并且
图4示出了概述根据本公开的实施例的用于签名学习的过程400的流程图。
具体实施方式
图1示出了根据本公开的实施例的网络系统100的框图。网络系统100包括网络设备130,该网络设备130将第一网络110和第二网络120通信耦合在一起,如图1所示。网络设备130包括基于流签名的应用识别单元140,该应用识别单元140被配置为基于识别属性签名,根据分组的首部,执行对诸如分组的流之类的网络业务流的层7分类,而不检查分组的有效载荷。
第一网络110和第二网络120中的每个网络可以是单个网络或者是相同或不同类型的多个网络,比如数据网络、电信网络、视频分发(例如,线缆、地面广播,或者卫星)网络、电信、视频/音频分发和数据网络的组合、全球网络、国家网络、区域网络、广域网、局域网、家用网络等等。网络设备130可以是任何适合的网络设备,比如路由器、交换机、调制解调器、因特网协议(IP)机顶盒等等。
出于讨论目的,在一个示例中,第一网络110是因特网,并且第二网络120是局域网(LAN),并且网络设备130是被配置为提供至第二网络120的进入点的边缘设备,比如边缘路由器。
在一个实施例中,第一网络110包括被配置为提供资源和/或服务的多个服务器主机,并且第二网络120包括被配置为请求资源或服务的多个客户端设备,比如桌上型计算机,膝上型计算机等。在一个示例中,每个服务器主机执行服务器程序以将服务器主机的资源向客户端分享。另外,在该示例中,每个客户端设备执行一个或多个网络应用软件以发起通信会话,从而请求和接收来自服务器主机的资源和服务。
根据本公开的一个方面,网络设备130被配置为根据发起分组的网络应用对分组执行动作。在一个实施例中,网络设备130被配置为向与不同的网络应用相关联的分组应用不同的策略。
在一个示例中,网络设备130被配置为阻挡从特定网络应用发起的业务(例如分组)。例如,网络设备130被配置为阻挡社交媒体应用或已知包含色情或恶意内容的应用的业务(例如,丢弃分组)。在另一示例中,网络设备130被配置为基于发起分组的网络应用来对分组定义服务质量。例如,网络设备130被配置为对因特网协议语音(VOIP)电话应用的分组定义相对高的服务质量,并且对在线视频游戏应用的分组定义相对低的服务质量。
另外,根据本公开的一个方面,网络设备130被配置为使用接收的分组的首部中的信息来进行分组分类,该分组分类将分组与发起该分组的网络应用相关联,而无需深度分组检查(packet inspection)。在一个实施例中,网络设备130基于从首部或者从诸如接收的时间之类的分组特性获得的信息,存储针对一个或多个网络应用的分组流的签名。在一个示例中,针对网络应用的签名指定针对网络应用的一个或多个属性的特定模式。在一个示例中,从分组首部或者从分组的外在特性来提取属性,而无需由网络设备130中的中央处理单元(CPU)(未示出)进行的密集计算。例如,在网络设备130接收到分组的流时,网络设备130从分组的首部提取一个或多个属性,将分组分类成分组流,确定诸如分组的到达时间之类的一个或多个外在属性,并且基于从在给定分组流中的分组集合中选择的属性,形成针对新接收的流的模式。在该模式匹配所存储的针对网络应用的特定模式时,分组流与网络应用相关联。然后,基于相关联的网络应用,网络设备130对分组流中的分组执行一个或多个动作。
在一个实施例中,根据协议发送针对网络应用的网络业务,并且不同的网络应用通常使用不同的可分开识别的协议。因而,在一个示例中,在会话发起期间,与应用相对应的分组基于应用所使用的协议具有形成特定的可区分的模式(例如,签名)的属性,比如有效载荷大小、分组速率、字节速率,到达间隔时间、分组数目等等。在一个实施例中,这样的属性因而指示网络应用。在一个示例中,流内具有特定有效载荷大小的分组以特定的定义时间或以流中的特定索引来发送,并且因而指示应用所使用的协议。在另一示例中,具有特定有效载荷大小的分组在流内的到达速率(例如,每三秒发送大小为零的分组)指示协议和网络应用。在另一示例中,在序列内的具有特定有效载荷大小的分组在流内的到达速率(例如,每三个分组发送大小为零的分组)指示协议和网络应用。在另一示例中,在流内的具有特定有效载荷大小的分组之间的间隔时间指示被用于发送分组的协议和网络应用。在另一示例中,在流内具有特定有效载荷大小的分组之间的到达间隔间隙指示协议和网络应用。
具体地,在图1的示例中,网络设备130包括:用于存储一个或多个网络应用的签名的存储器160;被配置为接收属性的接收单元135;用于提取分组的首部中的属性的首部属性提取单元140;用于识别分组分别所属的流的流识别单元145,用于基于属性模式进行层7分类的应用识别单元150,以及用于根据发起分组的网络应用来对分组进行操作的基于应用的策略执行单元170。这些元件如图1所示被耦合在一起。
存储器160可以任何适合的存储设备,比如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、闪速存储器、固态驱动器、硬盘驱动器、光盘驱动器等。可以按照任何适合的数据结构、诸如表格、列表等来存储签名。在一个示例中,按照促进决策树的形式存储签名,该决策树基于分组属性、通过分支决策序列而进行最终决策。
接收单元135被配置为接收分组并将接收信息与分组相关联。在一个示例中,接收单元135包括用于接收分组的进入端口,并且将进入端口号与经由进入端口进入网络设备130的分组相关联。另外,在一个示例中,接收单元135包括适合的定时电路,该定时电路被配置为捕捉分组的到达时间,并且适合地将到达时间与分组相关联。
首部属性提取单元140被配置为从分组的首部提取属性。在一个实施例中,首部属性提取单元140被配置为从分组的首部提取每个分组的有效载荷大小。在一个示例中,在分组根据IPv4协议编排格式时,分组的首部包括指示分组的总长度的第一字段、指示IP首部长度的第二字段以及指示TCP首部长度的第三字段。在一个示例中,首部属性提取单元140使用位屏蔽,从首部的第一字段、第二字段和第三字段提取分组的总长度、IP首部长度和TCP首都长度。然后首部属性提取单元140从总长度减去IP首部长度和TCP首部长度以计算分组的有效载荷大小。在另一示例中,在分组根据IPv6协议编排格式时,首部具有用于有效载荷长度的专用字段。继而,首部属性提取单元140使用位屏蔽来提取该有效载荷长度。
在一个实施例中,首部属性提取单元140提取其他适合的信息,比如首部中的序列号、端口号等。另外,首部属性提取单元140基于提取信息计算适合的属性值。此外,在一个示例中,记录相应的分组到达时间。首部属性提取单元140计算例如具有特定有效载荷大小的分组的字节速率、具有特定有效载荷大小的分组在时域中的到达速率、具有特定有效载荷大小的分组在位置域中的到达速率、具有特定大小的分组之间的到达间隔时间、具有特定大小的分组之间的到达间隔间隙、分组速率、字节速率、到达间隔时间、分组数目等。
流分类单元145被配置为基于首部属性和其他适合的信息,将分组分类成流,所述其他适合的信息诸如为源地址、目的地址、源端口、目的端口、协议类型等。
在一个实施例中,应用识别单元150被配置为基于针对网络应用的签名来执行分组分类。在一个示例中,应用识别单元150构建来自分组流中的分组的属性的模式,并且将该模式与存储的签名进行比较。在模式匹配于所存储的针对网络应用的签名时,应用识别单元150将分组流与匹配的网络应用相关联。在另一示例中,按照决策树的形式来存储签名以区分网络应用。应用识别单元150使用决策树来执行分组分类。
策略执行单元170然后根据分类,基于对所识别的应用适用的策略,对分组采取动作。在一个示例中,策略执行单元170丢弃特定网络应用的分组。在另一示例中,策略执行单元170向特定网络应用的分组分配服务质量。在另一示例中,策略执行单元170制作从特定网络应用发起的分组的副本,并且将该副本发送给在第二网络120中的监测设备(未示出),以例如用于进一步的监测和分类。
根据本公开的一个方面,网络设备130包括签名学习单元180,该签名学习单元180被配置为对先前未学习的网络应用的签名进行学习。在一个示例中,另外在网络设备130并不繁忙时,网络设备130接收由网络应用发起的分组流,并且经由机器学习来学习网络应用的签名。例如,首部属性提取单元140从分组的首部提取分组属性并且提供给签名学习单元180。签名学习单元180接收分组属性,检查分组流中的分组的有效载荷以识别与分组流相关联的网络应用,并且构建基于分组属性、将所述网络应用与其他先前已学习的网络应用进行区分的决策树。
注意,首部属性提取单元140、流分类单元145、应用识别单元150、策略执行单元170和签名学习单元180可以分别以各种技术来实现。在一个实施例中,使用分组处理器中的电路来实现首部属性提取单元140、流分类单元145、应用识别单元150、策略执行单元170和签名学习单元180。在另一实施例中,首部属性提取单元140、流分类单元145、应用识别单元150、策略执行单元170和签名学习单元180被实现为由诸如中央处理单元之类的处理器执行的软件指令。
注意,在一个实施例中,网络设备130使用其他适合的技术来确定应用特定信息,而不执行深度分组有效载荷检查,并且使用应用特定信息和分组属性模式信息来共同地识别层7应用。在一个示例中,网络设备130被配置为对特定字节值的出现进行计数,比如在申请人于2014年5月12日提交、并转让给Marvell的共同待决申请14/275,332中所公开的那样,其通过引用的方式整体并入于此。
图2A-2B示出了与两个不同的网络应用相关联的签名的示例。在图2A和图2B中的每幅图中,X轴表示以秒为单位的时间,并且Y轴表示具有有效载荷大小为X(X是自然数)的分组的数目,并且在一时间处的竖直线的高度指示在对应时间处接收的具有有效载荷大小为X的分组的数目。
在一个实施例中,具有在X周围的范围内的有效载荷的分组被认为是有效载荷大小为X的分组。在一个示例中,X为零,并且在分组具有在从零到8字节的范围内的大小的有效载荷时,该分组被认为有效载荷大小为零。
在图2A的示例中,第一网络应用具有较小数目的有效载荷大小为X的分组,并且在接收有效载荷大小为X的分组时,具有较小数目的持续时间,比如从0秒到120秒少于5个持续时间。在图2B的示例中,第二网络应用具有较大数目的有效载荷大小为X的分组,并且在从时间170秒到220秒接收有效载荷大小为X的分组时,具有较大数目的持续时间。
图3示出了概述根据本公开的实施例的用于分组分类的过程300的流程图。在一个示例中,在诸如网络设备130之类的网络设备中执行过程300,以将分组的流与网络应用相关联。在一个实施例中,执行过程300以在接收并识别分组的新流时构建首部属性模式。该过程在S301处开始并进行至S310。
在S310处,接收分组。在图1的示例中,接收单元135接收分组并且将接收信息与分组相关联。在一个示例中,接收单元135将进入端口号与经由进入端口进入网络设备130的分组相关联。另外,在一个示例中,接收单元135将到达时间与分组相关联。
在S320处,从分组的首部提取属性。在图1的示例中,首部属性提取单元140从分组的首部提取属性。在一个示例中,首部属性提取单元140从分组的首部提取有效载荷大小。在一个示例中,在分组根据IPv4协议编排格式时,分组的首部包括用于分组的总长度的第一字段、用于IP首部长度的第二字段以及用于TCP首部长度的第三字段。在一个示例中,首部属性提取单元140使用位屏蔽从首部的第一字段、第二字段和第三字段提取分组的总长度、IP首部长度和TCP首都长度。然后首部属性提取单元140从总长度减去IP首部长度和TCP首部长度,以计算分组的有效载荷大小。在另一示例中,在分组根据IPv6协议编排格式时,首部具有用于有效载荷长度的字段。继而,首部属性提取单元140使用位屏蔽来提取有效载荷长度。
另外,首部属性提取单元140计算其他适合的信息,用于生成签名,所述其他适合的信息比如具有特定有效载荷大小的分组的字节速率、具有特定大小的分组在时域中的到达速率、具有某大小的分组在位置域中的到达速率、具有特定大小的分组之间的到达间隔时间、具有特定大小的分组之间的到达间隔间隙、有效载荷大小、分组速率、字节速率、到达间隔时间、分组数目等。
在一个实施例中,首部属性提取单元140解析分组的首部,并且从分组的首部提取其他适合的信息,比如进入端口、出口端口、源地址、目的地址、分组类型(例如,IP、TCP、UDP等)、服务水平等。
在S325处,识别针对分组的分组流。在图1的示例中,流分类单元145能够基于分组的首部信息,诸如源地址、目的地址、源端口、目的端口、协议类型等,唯一地确定分组所属的分组流。
在S330处,网络设备确定所提取的属性是否满足过滤器要求。在一个示例中,网络设备130确定所提取的有效载荷长度是否在一范围内,比如在一个示例中等于或低于8字节。在有效载荷长度处于该指定范围内时,过程进行至S340;否则,过程进行至S350。
在S340处,在分类数据库中收集分组的信息。在一个示例中,网络设备130在分类数据库的新记录中,存储用于分组流的分组计数器的当前值(该当前值指示分组在分组流中的位置)、分配给分组流的定时器的当前时间,以及当前分组的分组长度。
在S350处,更新分组流的信息。在一个示例中,网络设备130更新用于分组流的分组计数器(例如,对于在分组流中每个接收的分组增加一)、定时器以及分组流中的总字节数。
在S360处,网络设备确定出于对正与应用相关联的流的基于签名的分类的目的,是否已经接收分组流中足够多的分组,并且网络设备相应地继续进行。例如,在网络设备130具有足够多的分组以用于分类时,过程进行至S370;否则,过程返回S310以等待接收分组流的更多分组。
在S370中,在分组分类中使用分类数据库以将分组流与网络应用相关联。在一个示例中,存储器160以决策树的形式存储网络应用的签名。然后,应用识别单元150使用决策树,基于分类数据库,将分组流关联到网络应用。在一个实施例中,在分组流与网络应用相关联时,策略执行单元170对分组并且也对分组流中的后续分组,应用针对该网络应用的策略。该过程进行至S399并终止。
注意,在一个实施例中,可以预先确定基于协议的应用签名,并且提供给网络设备130从而在存储器160中进行存储。在另一实施例中,在第一次接收到由特定应用发起的分组的流时,由网络设备130学习基于协议的应用签名。
图4示出了概述根据本公开的实施例的用于学习签名的过程400的流程图。在一个示例中,在网络设备130并不繁忙时,在网络设备130中执行过程400。过程在S401处开始并进行至S410。
在S410处,接收分组流。在一个示例中,网络设备130接收从网络应用发起的分组的流。
在S420处,提取来自分组的首部中的属性。在一个示例中,由首部属性提取单元140在接收到分组之时提取属性,并且所提取的属性被存储在分类数据库中,如在步骤S320中所描述的。
在S425处,识别分组流。在一个示例中,流分类单元145能够基于分组的首部信息,诸如源地址、目的地址、源端口、目的端口、协议类型等,唯一地确定分组流。
在S430处,识别与分组流相关联的网络应用。在一个示例中,因为网络设备130并不繁忙,因此网络设备130执行对分组流中的一个或多个分组的深度有效载荷检查,以识别与分组流相关联的网络应用。网络设备130可以使用任何适合的技术,诸如搜索特定字符串等,来识别与分组流相关联的网络应用。
在S440处,学习基于两个或更多属性的签名并将其映射到网络应用。在一个实施例中,两个或更多属性为相互独立的。在一个示例实施例中,与应用相对应的流中大小为X的分组的数目并不取决于大小为X的这种分组在应用的发起期间在交换设备处被接收的时间。在一个示例中,网络设备130执行用于机器学习的软件指令,以基于分类数据库和所识别的网络应用来构建决策树。该决策树能够基于与分组相关的两个或更多类型的不相关的属性信息,将该网络应用与其他网络应用进行区分。属性信息包括包含在首部中的属性信息,以及诸如进入端口和/或接收到分组的时间之类的其他属性信息。
在S450处,存储被映射到网络应用的属性的签名。在一个示例中,网络设备以促进决策树的形式存储签名,该决策树基于分组属性、通过分支决策序列而进行最终决策。然后,在网络设备130随后接收由该网络应用发起的新的分组流时,网络设备130基于分组属性而不是有效载荷大小检验来识别网络应用,属性中的一些属性是从分组首部中提取的,例如参照图3所描述的。然后,过程进行至S499并终止。
当以硬件实现时,硬件可以包括一个或多个分立的部件、集成电路、专用集成电路(ASIC)等。
虽然已经结合作为示例提出的本公开内容的具体实施例描述了本公开内容的各方面,但是可以对示例做出替换、修改和变化。因此,在此所叙述的实施例意在是说明性而非限制性的。在不偏离以下记载的权利要求的范围情况下,存在可以做出的变化。