从ip网络流过的数据流中提取数据的方法和设备的制作方法

文档序号:7990265阅读:271来源:国知局
从ip网络流过的数据流中提取数据的方法和设备的制作方法
【专利摘要】在配置阶段,使用状态和转换构建状态机(20),根据要从流过IP网络的数据流中提取的至少一种数据类型配置所述状态和转换。在状态之间的转换由定义为根据所述应用层协议的数据流的数据组织规则的函数的条件来激活。并且选择一个或多个状态用来从数据流中提取数据。之后,在数据流的实时分析阶段,观察到持续流过网络的IP数据包中的数据流数据。当状态机处于当前状态,通过从数据流中观察到的数据,执行关于是否实现转移至目标状态的激活条件的搜索,以及当实现如此激活条件时,状态机切换至目标状态。当状态机处于在配置阶段所选择的状态时,从数据流中提取数据。
【专利说明】从IP网络流过的数据流中提取数据的方法和设备
【技术领域】
[0001]本发明涉及对以ip( “互联网协议”)数据包形式流过通信网络的数据流的分析技术。更具体地说,在本案中,试图从一个或多个指定分类中实时提取数据,而不必处理流过网络的大量数据。
【背景技术】
[0002]IP数据包分析器,例如以Wireshark名义分布的分析器,从承载数据的数据包内容的数据流中进行全局提取,以便之后将其进行完整分析,从而识别组成此内容的各个不同的元素。这一方法学并不能很好地适用于多个数据流的实时观察,这是由于它需要实时提取全部数据流以便进行分析。此外,在改变构建数据流所依据的协议的情况下,即使该改变较小或者只涉及协议中与所查找信息不相关的方面,都需要修改分析器。
[0003]因此,需要能够有效提取和同步映射流过IP类型网络的数据流中的目标信息的技术。

【发明内容】

[0004]提出了一种适用于从流过IP网络的数据流中提取数据的方法,数据流的数据是根据应用层协议(0SI模型的第7层)组织的。在这一背景下并从应用层协议的角度来看,数据流可通过网络(IP)层和/或传输(TCP,UDP,等)层以几乎随机的方式分割。然而,令人满意的是,即使传输流量以非常高的比特率通过IP网络,但仍具有提取数据流中包含的特定数据用于处理的能力。该方法包括:
[0005]-配置阶段,其中根据要从数据流中提取的至少一种数据类型所配置的状态和转换来构建状态机,在状态间的转换由根据应用层协议的数据流的数据组织规则的函数所定义的各个条件来激活,并且选择其中至少一种状态用于从数据流中提取数据;以及,
[0006]-数据流的实时分析阶段。
[0007]实时分析阶段包括:
[0008].观察源于持续流过网络的IP数据包的数据流的数据;
[0009].当状态机正处于当前状态时,通过观察数据流的数据来确定是否满足从当前状态至目标状态的转换的激活条件,并且当满足激活条件时,将状态机转变为目标状态;
[0010].当状态机处于在从数据流中提取数据的配置阶段中所选择的状态时,就从数据流中提取数据;以及,
[0011].当状态机处于在配置阶段未被选择的状态时,忽视数据流中的数据。
[0012]状态机的节点描述了协议语法的相关结构元素,有可能当有用的语义和归类信息出现在数据流中时使状态机能够提取它们。状态机由状态和转换组成。转换使之有可能从一种状态转移到另一状态并且一般可在观察数据流的过程中由词位激活。
[0013]所使用的状态机可对具有变化非常大的内容(文本或二进制)的数据流进行操作,它的语法并不必需被彻底知道,可能包含错误并且在每一时刻它们并不是全部可用的。[0014]为了做到这一点,在不提取所有数据流的情况下,该方法通过实时分析数据流的数据来搜索允许激活不同转换的条件。可分别管理在两个状态间的转换激活以及所呈现的数据。
[0015]此外,该方法允许管理在缓冲存储器中存储的那些以数据的分片形式存在仅仅对搜索转换的激活条件所必需的部分数据流。在该实施例中,状态机的转换的激活条件包括数据流的数据中的各自词位的出现,并且数据流的实时分析阶段包括,当状态机处于当前状态时:
[0016]?将位于在IP数据包中所观察到数据流的数据的末端的至少N-1个字符存储在缓冲存储器中,N是对应于离开当前状态的转换的词位字符的最大数目;以及,
[0017].当接收到源于随后流过网络的IP数据包的数据流的下一数据时,将缓冲存储器的内容放在所接收到的数据之前,以便搜索在两个数据包之间分割的词位的可能出现。
[0018]在配置阶段所选择的状态机的状态可包括一种或多种状态,其中从数据流中提取的数据可直接传输至外部处理器。
[0019]状态机所选择的状态还可包括一种或多种状态,其中一旦状态机离开所选择的状态则将从数据流中提取的数据存储在缓冲存储器中然后再传输至外部处理器。在状态机的这一选择的状态下,接收从数据流中提取数据的缓冲存储器最好具有限制字符配置数的数
量大小。
[0020]本发明的另一方 面涉及一种适用于实施上述方法的设备。该设备包括:
[0021]-状态机,具有根据要从数据流中提取的至少一种数据类型所配置的状态和转换,在状态之间的转换由根据应用层协议数据流的数据组织规则的函数所定义的各个条件激活,状态机的至少一种状态可选择用于从数据流中提取数据;以及,
[0022]-输入,用于实时接收源于持续流过网络的IP数据包的数据流的数据;
[0023]-转换检测器,用于当状态机处于当前状态时,通过在输入端所接收到的数据流的数据来确定是否满足从当前状态转换至目标状态的激活条件,并用于当满足激活条件时将状态机转换为目标状态。当状态机处于用于从数据流中提取数据的所选择的状态时,提取数据流的数据,以及当状态机处于未被选择用于从数据流中提取数据的状态时,就忽视数据流的数据。
【专利附图】

【附图说明】
[0024]本发明的其它特征和优点将通过下述对非限制性实施例的说明以及参考下述附图而变得更为清晰。附图包括:
[0025]图1是适用于本发明的IP网络的简化图;
[0026]图2是用于实施本发明连接着图1所示网络的设备的框图;
[0027]图3是根据本发明的数据提取设备的一个示例的框图;
[0028]图4是以图示方式展示在特定实例中所使用的状态机图。
【具体实施方式】
[0029]参考图1,诸如因特网之类的IP网络I在标准方式下包括不同的路由设备,有些设备(2)位于网络内部而另一些设备(3)位于网络边界用于连接各种不同的装置,例如用户终端3,用户计算机装置4,网络运营商管理他们用户的服务器,连接其它网络的网关,等
坐寸O
[0030]在路由器2,3之间的链路可由非常高比特率的连接来实现,例如由光纤线路所提供的链路。该比特率的典型数值为每秒几万兆比特。
[0031]在由这些高比特率链路承载的不同数据流中,某些应用需要提取特定的数据,例如用于计费,安全,管理服务质量等等的目的。
[0032]需要接收以这种方式所提取数据的设备不会承受不了流过IP网络I的潜在的大量数据。为此,可以使用例如图2所示的设备10。
[0033]典型的是,设备10安装在路由器2,3的级别上,以便作为与这些路由器之间其中一个高比特率链路的接口。然而,可以理解的是,设备10还可安装在位于终端路由器3和网关或用户装置之间的链路上。
[0034]图2所示出的设备10包括网络接口 11,适用于物理层以及该设备所安装的链路的较低协议层。由网络接口 11所接收到的流量受到分类器12的影响,分类器12能够识别组成流量的连续IP数据包所属的数据流。分类器12实施识别和协议分析技术,举例来说,例如W02004/017595A2中描述的那种技术。它的架构可选择地为分布式的,如W02006/120039A1 中所述。
[0035]流量分类器12配置为可选择性地将从由系统管理者所指定的一个或多个数据流中获取得到的IP数据包呈现给数据提取设备13。对于各个数据流,提取器13选择随用户所执行的配置而变化的相关数据,从数据流中提取数据并将它们传输至外部处理器14,以便对所提取的数据执行所需的处理(例如,用于计费、安全或服务应用质量等等的处理)。此时,所涉及的用户是管理由外部处理器14执行应用程序的用户。从而,有可能将用户与指定要提取的数据流的系统管理者组合。在另一个面向服务的架构中,该用户可与系统管理者同等地分开,只要后者将数据提取服务提供至具有不同要执行的处理类型的多个用户。
[0036]数据提取器13可具有例如图3所示的架构。该架构以用户通过适当的人/机接口 22配置的状态机20和转换检测器21为中心。在配置阶段,用户通过接口 22定义状态机20的状态和转换以及在状态之间转换的激活条件。接口 22可包含协议的语法知识,以便在配置操作中协助用户。
[0037]数据提取器13具有输入24,它实时接收源于IP数据包的数据流的数据,由流量分类器12将该数据呈现给数据提取器13。通过接口 22依照所执行的配置将数据流中提取的数据由数据输出25传输至外部处理器14。
[0038]在IP类型网络的情形下使用状态机施加了操作限制。实际上,这些数据流此后被分段,各个分段均源自具有不同大小的IP数据包。在该协议的语法中,该分段可发生于任意时刻。应当考虑下述两种情况:
[0039]-激活转换条件所必需的数据可在一个数据包的结束和下一数据包的开始之间被分割。
[0040]-在一种状态中要处理的有用数据可呈现在多个数据包中,但是用户可请求不以分段方式来处理数据。
[0041 ] 为了考虑这两种情况,数据提取器13包括两个缓冲存储器26,27 (在实践中,这些缓存26,27可在单个存储器平面内制造)。[0042]缓冲存储器26用于管理发现由转换检测器21查找到的词位被分割在输入24所连续接收到的两个IP数据包之间的情况。在状态机20的指定状态下,可查找到多个词位用于可能激活离开该状态的转换。如果N表示这些词位的字符的最大数目,那么方便的是当状态机位于指定状态时在缓冲存储器26中记录各个IP数据包中所接收到的数据流的最后N-1个字符。当接收到包含数据流的数据的下一个IP数据包时,缓冲存储器26的内容放在输入24所接收到的数据的第一个字符之前,使得转换检测器21能观察到可能存在其中一个所查找的词位。这一在转换检测器21和缓冲存储器26之间的协作确保所查找的词位不会由于在IP层对数据流的分割而丢失。应当注意,缓冲存储器26可选择性地包含稍稍多于N-1个字符,然而,它的数量大小必须保持明显小于要提取的数据的数量大小。
[0043]状态机20包括根据数据流的语法结构所创建的状态列表。各个状态都包含一个转换列表,由转换检测器21查找的转换激活条件一般都呈现为在数据流中所接收到的词位。各个状态此外还与一个过程相关,该过程指示当状态机20位于该状态时所接收到的数据的处理方式。
[0044]状态的各次转换都指定了一个激活条件和相关的目标状态以及所需分析的数据的最小长度,以便确保条件的操作。该激活条件,特定于某一状态和其所依赖的转换,可采用下述形式之一:
[0045]-通过使用例如Boyer-Moore搜索算法来发现指定的字符串;
[0046]-通过使用搜索树(前缀树或有序树数据结构)来发现指定的字符串;
[0047]-指定数量字节的数据流的进展;
[0048]-可变数量字节的数据流的进展,这是前一情况的一般化情况。在这一情况下,跳(hop)数并不在状态机的说明中指示,而是在状态的输入处指定,离开该状态转换发生;
[0049]-一般条件:在实践中,通过能够找到该转换的功能,状态机被通知此条件,这形成了包括所有在前情况的其一般化情况。
[0050]读取在输入24处接收的数据流的进展后该条件被通常激活。当这一转换被激活时,可能的是,在激活转换使得能够转换至下一状态前开发数据。根据用户请求的配置,呈现在两个状态改变之间的数据可被:
[0051]-忽视;
[0052]-传输至与第一状态关联的一功能用于处理。此功能典型地为通过输出25立即发送数据;或者
[0053]-存储在缓冲存储器27中然后被发送至与第一状态关联的一功能用于处理。此功能典型地为在当状态机20离开当前状态时通过输出25发送数据。可配置缓冲存储器27以便在字符数量方面具有最大数目。当此最大字符数已经被存储在缓冲存储器27中时,状态机20可被强制离开当前状态。这使得能够避免此缓冲存储器的溢出。
[0054]通过实例的方式,此后在基于XML语言(“可扩展标记语言”)的被称作Jabber或XMPP( “可扩展的消息和存在协议”)的即时消息协议的情况下,介绍实施本发明的具体实例。这些示例可容易地推广至Jabber/XMPP协议或其他协议的其他扩展。
[0055]由于性能(存储器和分析文本的处理时间)和鲁棒性,并不全部描述Jabber协议的语法。只考虑那些组成想要提取的信息的附近的恒量的标记。
[0056]在示例I中,用户试图提取在Jabber协议中传输的消息的内容。[0057]在示例2中,该提取涉及在Jabber协议中传输的联系人(e-mail地址)。
[0058]可根据图4示出的图构建状态机20以实现这些实施例。在状态机20中由用户选择两类状态用于执行数据的提取。在第一种类型(被称为“N0DE_B0DY”的状态30)中,消息的内容由于其量可能非常大而从不被记录在提取设备13中。在第二种类型(被称为“TR_C0NTACT_ENTRY”的状态31)中,e-mail地址可被存储在缓冲存储器27中以便被一次传输至外部处理器14。
[0059]在这两种情况下,在被选择的状态下用于传输数据的回调过程中,提取器13提供给处理器14当前状态(N0DE_B0DY或TR_CONTACT_ENTRY)下的信息以及提取的数据,这提供了为了正确解释数据所必需的语义和归类信息。
[0060]从被称为“N0DE_BASE”的节点32,状态机20的初始位置开始,描述状态机的图中的一个分支通过词位〈message的检测,检测一消息的起始内容,而另一分支搜索仅呈现在由词位:iq:roster指定的信号数据中的一项信息。
[0061]在图4中表示的状态机20的状态和转换在配置阶段以下述形式定义:
[0062]{node:N0DE_BASE, nextnode:NODE_MESSAGE, start: "〈message" },
[0063]{node:N0DE_BASE,nextnode:N0DE_C0NTACT_LIST,start: ":1q:roster" },
[0064]{node:N0DE_MESSAGE,nextnode:N0DE_B0DY,start: "〈body〉" },
[0065]{node:N0DE_B0DY,nextnode:N0DE_BASE,start: "〈/body〉" },
[0066]{node:N0DE_C0NTACT_LIST, nextnode:N0DE_BASE,start: "〈/query〉" },
[0067]{node: N0DE_C0NTACT_L I ST , nextnode: N0DE_C0NTACT_ENTRY ,start: "〈item" },
[0068]{node:N0DE_C0NTACT_ENTRY, transnode:TR_C0NTACT_ENTRY, start: " jid='",end: ' />",flag:SM_TRUNCATE},
[0069]{node:N0DE_C0NTACT_ENTRY,nextnode:N0DE_BASE,start: "〈/query〉" },
[0070]其中:
[0071]“node”是当前状态的名称;
[0072]“nextnode”是当转换条件被激活时下一状态的名称;
[0073]“ start ”表示用于在数据流中搜索以便激活这一转换的标记。
[0074]在与缓冲存储器27的存储有关系的暂时状态被状态机使用的情况下,存在两项额外的信息:
[0075]“transnode”(暂时节点):迅速转换的暂时状态的名称;
[0076]“end”:搜索的标记以便离开迅速转换;
[0077]“flag”:可选的标记。在当前的情况下,当缓冲存储器27满时如果不能找到结束标记,它指示数据的截断。
[0078]示例 I:
[0079]在检测到词位〈message后,第一分支将状态机带到N0DE_MESSAGE (33)状态,这时任何提取都未被执行。在N0DE_MESSAGE状态下词位〈body〉的检测将把机器20带至N0DE_BODY状态。在状态30,回调将所有从连续的IP数据包接收的数据发送至输出25,直到检测到结束标记〈/body〉则直接返回至初始状态32。
[0080]那样,数据提取器13隔离由协议定义的XML标签〈body〉和〈/body〉之间包括的数据流的消息的任何内容。由于消息的内容可能是大量的,它并不经过缓冲存储器27。它将被发送一次或多次,通过连续接收IP数据包。
[0081]例如,应用数据流可被这样呈现:
[0082]
【权利要求】
1.用于从流过IP网络(I)的数据流中提取数据的方法,根据应用层协议组织该数据流的数据,该方法包括: -配置阶段,其中使用状态和转换构建状态机(20),根据要从数据流中提取的至少一种数据类型配置所述状态和转换,在状态之间的转换由各自的条件激活,所述条件被定义为根据所述应用层协议的数据流的数据组织规则的函数,并且其中至少一种状态(30,31)被选择用于从数据流中提取数据;以及, -数据流的实时分析阶段,包括: ?观察源于持续流过网络的IP数据包的数据流的数据; ?当状态机处于当前状态时,确定观察的数据流的数据来确定是否满足从当前状态至目标状态的转换的激活条件,并且当满足此激活条件时,将状态机转变为目标状态; ?当状态机处于在从数据流中提取数据的配置阶段中所选择的状态时,从数据流中提取数据;以及, ?当状态机处于在配置阶段未被选择的状态时,忽视数据流中的数据。
2.根据权利要求1所述的方法,其特征在于,状态机(20)的转换激活条件包括数据流的数据中的各自词位的出现,并且当状态机处于当前状态时数据流的实时分析阶段还包括: ?将位于在一 IP数据包中观察到的数据流的数据末端的至少N-1个字符存储在缓冲存储器(26)中,N是对应于离开当前状态的转换的词位字符的最大数目;以及 ?当接收到源于随后流过网络的IP数据包的数据流的下一数据时,将缓冲存储器的内容放在所接收的数据之前,以便搜索在两个数据包之间分割的词位的可能出现。
3.根据上述权利要求中任一项所述的方法,其特征在于,状态机(20)所选择的状态包括状态(30),在该状态下从数据流中提取的数据被直接传输至外部处理器(14)。
4.根据上述权利要求中任一项所述的方法,其特征在于,状态机(20)所选择的状态包括状态(31),在该状态下从数据流中提取的数据被存储在缓冲存储器(27)中,然后一旦状态机离开所述选择的状态时,数据被传输至外部处理器(14)。
5.根据权利要求4所述的方法,其特征在于,在状态机(20)的所述选择的状态(31)下,缓冲存储器(27)接收从数据流中提取的数据,其存储大小被限制为可配置的字符数。
6.用于从流过IP网络(I)的数据流中提取数据的设备,根据应用层协议组织该数据流的数据,该设备包括: -状态机(20),具有根据要从数据流中提取的至少一种数据类型所配置的状态和转换,在状态之间的转换由各自的条件激活,所述条件被定义为根据所述应用层协议的数据流的数据组织规则的函数,状态机的至少一种状态(30,31)被选择用于从数据流中提取数据;以及,-输入(24),用于实时接收源于持续流过网络的IP数据包的数据流的数据; -转换的检测器(21),用于当状态机处于当前状态时,通过在输入端所接收到的数据流的数据来确定是否满足从当前状态转换至目标状态的激活条件,并用于当满足所述激活条件时将状态机转变为目标状态, 当状态机处于用于从数据流中提取数据的选择的状态时,提取数据流的数据,以及当状态机处于未被选择的用于从数据流中提取数据的状态时,忽视数据流的数据。
7.根据权利要求1所述的设备,其特征在于,状态机(20)的转换的激活条件包括数据流的数据中的各自词位的出现,并且转换检测器(21)与缓冲存储器(26)相关,控制缓冲存储器(26)以便当状态机处于当前状态时,接收位于在IP数据包中观察到的数据流的数据的末端的至少N-1个字符,N是对应于离开当前状态的转换的词位字符的最大数目,设置转换检测器以便,当接收到源于随后流过网络(I)的IP数据包的数据流的下一数据时,通过将缓冲存储器的内容放在接收的数据之前搜索在两个数据包之间分割的词位的可能出现。
8.根据权利要求6或7所述的设备,其特征在于,状态机(20)所选择的状态包括状态(30),在该状态下从数据流中提取的数据被直接传输至外部处理器(14)。
9.根据权利要求6至8中任一项所述的设备,其特征在于,状态机(20)所选择的状态包括状态(31),在该状态下从数据流中提取的数据被存储在缓冲存储器(27)中,然后一旦状态机离开所述选择的状态时,数据被传输至外部处理器(14)。
10.根据权利要求9所述的设备,其特征在于,在状态机(20)的所述选择的状态(31)下,缓冲存储器(27)接 收从数据流中提取的数据,其存储大小被限制为可配置的字符数。
【文档编号】H04L12/26GK103765821SQ201280025546
【公开日】2014年4月30日 申请日期:2012年3月21日 优先权日:2011年3月25日
【发明者】杰罗米·阿贝拉 申请人:QoSMOS公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1