CN101827084B - 网络设备的高效的应用程序识别 - Google Patents
网络设备的高效的应用程序识别 Download PDFInfo
- Publication number
- CN101827084B CN101827084B CN2010101116257A CN201010111625A CN101827084B CN 101827084 B CN101827084 B CN 101827084B CN 2010101116257 A CN2010101116257 A CN 2010101116257A CN 201010111625 A CN201010111625 A CN 201010111625A CN 101827084 B CN101827084 B CN 101827084B
- Authority
- CN
- China
- Prior art keywords
- dfa
- regular expression
- packet
- explosive
- application program
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
通常,描述了用于高效地实施网络设备中的应用程序识别的技术。特别地,网络设备包括控制单元,控制单元存储定义组确定型有限自动机(DFA)和单独的DFA的数据。组DFA是通过将相应的非爆炸性正则表达式生成的非爆炸性DFA与从爆炸性正则表达式提取的签名指纹形成的指纹DFA(f-DFA)合并而形成的。非爆炸性正则表达式包括在组DFA的生成中确定为不导致状态爆炸的正则表达式,签名指纹包括唯一识别爆炸性正则表达式的爆炸性正则表达式的片段,以及爆炸性正则表达式包括在组DFA的生成中确定为导致状态爆炸的正则表达式。网络设备包括接收数据包的接口,以及在某些情况下,控制单元首先遍历组DFA,并然后遍历单独的DFA,以更高效地识别数据包对应的网络应用程序。
Description
技术领域
本发明涉及计算机网络,更具体地,涉及提供计算机网络中的服务。
背景技术
计算机网络是用于交换数据和共享资源的互连的计算设备的集合。在基于包的网络中(诸如互连网),计算设备通过将数据划分成称为数据包的小块来传送数据。数据包经由网络从源设备单独地路由到目的设备。目的设备从数据包中提取数据并将数据汇编成其原始的形式。将数据划分成数据包使源设备只能够将那些在传输过程中可能会丢失的单独的数据包重新发送。
为了便于与特定类型的网络应用程序相关联的数据包的传递,计算机网络内被称为路由器的网络设备可试图去识别与数据包对应的网络应用程序的类型。例如,路由器可检测数据包,以确定该数据包是否对应于超文本传输协议(HTTP)应用程序、文件传输协议(FTP)应用程序或任何其他类型的网络应用程序。与确定为对应于其他网络应用程序的数据包相比,根据确定的网络应用程序,路由器可为该数据包提供(例如)更高级别或服务质量(QoS)等级。在这方面,路由器转发与更高的QoS等级相关联的数据包快于转发那些具有相对较低的QoS等级的数据包,以便于与特定类型的网络应用程序相关联的数据包的传递。
计算机网络内的其他网络设备(诸如称为入侵侦测与防护(IDP)设备)还可检测数据包,以确定该数据包对应于多个网络应用程序中的哪个。IDP设备可执行这种检测,以限制攻击定义的应用程序。换句话说,IDP设备可从攻击定义的全集中选择攻击定义的子集,每个攻击定义识别与特定的网络应用程序相关的网络攻击,并忽视那些识别与网络应用程序无关的网络攻击的攻击定义。在这方面,通过减少需应用于任何给定数据包的攻击模式的数量,识别与数据包对应的网络应用程序可大大地减少当执行入侵侦测与防御时所需要的计算资源。
确定与数据包对应的网络应用程序的该过程被称为应用程序识别,以及如上所提及的,应用程序识别可通过多个网络设备来实施(如上述两个实例所说明的),以便于数据包的转发以及入侵侦测和防御。在过去,各种网络设备通过基于存储在每个数据包的报头内的端口号和协议标识符试图识别数据包对应于多个应用程序中的哪个,来实施粗略形式的应用程序识别。例如,路由器可检测数据包的互连网协议(IP)报头,以确定端口号80和IP协议。这些端口号/协议通常静态地与给定的应用程序相关联,其中,例如,端口号80和协议IP过去是并现在仍然是静态地与HTTP应用程序相关联。一旦确定该端口号/协议的组合,网络设备就访问定义这些静态关联的列表或其他数据结构,以确定相应的应用程序,例如,端口80/IP协议的组合的HTTP应用程序。
然而随着计算机网络的发展,端口号/协议组合与网络应用程序之间的静态关联被视为安全漏洞。黑客和其它恶意用户(例如)可拦截这些数据包,并使用静态关联的知识,由给定的静态关联获得对运行在计算机网络内的应用程序的更好的理解。然后,黑客们可将这些攻击针对于特定的应用程序,从而增加了这些攻击的成功率。
因此,新兴的网络应用程序(诸如互连网语音协议(VoIP))已开始动态地分配端口号,从而消除端口号与网络应用程序之间的的静态关联。此外,这些新兴的网络应用程序通常是对时间敏感的并需要更高的服务质量。作为响应,路由器和其他网络安全设备已开始执行更加复杂和动态的应用程序识别,该应用程序识别涉及详细的模式匹配方案。这些模式匹配方案可以不仅仅检测端口号和协议标识符,还经常检测特定字符模式的数据包的有效载荷,以试图识别与每个数据包对应的应用程序。然而,涉及这些更复杂的模式匹配方案的应用程序识别典型地比静态端口/协议应用程序识别在计算上更为昂贵而且更耗时间,其通常可降低通过应用程序识别所获得的益处。
发明内容
通常,描述了用于更高效地实施网络设备(诸如路由器和IDP设备)内的应用程序识别的本发明的示例性实施例。具体地,网络设备可实施本技术以减少与执行更复杂的模式匹配时所使用的数据结构相关的内存消耗,以及改进该数据结构的遍历,并从而提高使用数据结构的模式匹配发生的速度。数据结构可包括具有多个互连节点的图形数据结构。该图形数据结构可实施确定型有限自动机(DFA),并且网络设备可存储称为组DFA的第一DFA和称为单独的DFA的第二DFA。该网络设备可将这两种DFA存储在存储器或其他存储设备内,并响应于接收数据包来访问这些DFA中的一个或两个。根据本文描述的技术所生成的这两种DFA消耗内存远远低于用于侦测相似模式(如果不是相同模式)的可比较的DFA,,同时通过减少为了匹配给定模式需要遍历的节点或状态的数目使匹配快于这些可比较的DFA。
在操作中,网络设备可包括从诸如网络管理员的用户、或从诸如配置系统的设备接收定义组DFA和单独的DFA的数据的控制单元。控制单元存储这些定义组DFA和单独的DFA的数据。该组DFA可包括由两个其他的DFA(至少一个DFA称为“非爆炸性”DFA,并且至少另外一个DFA称为“指纹”DFA(或简称为“f-DFA”))的合并而产生的DFA。单独的DFA包括经由合并的f-DFA与组DFA相关联的“爆炸性”DFA。
计算设备(诸如台式计算机或工作站)可根据本文所描述的技术生成组DFA和单独的DFA。具体地,计算设备的控制单元可接收均可定义模式的多个正则表达式。计算设备的控制单元可首先将每个正则表达式解析为一个或多个解析正则表达式,因为每个正则表达式可定义多个子模式(诸如由“或”字符连接的可选的子片段)。计算设备可执行此初始解析以从每个正则表达式提取子模式,并将这些子模式例示为单独的解析正则表达式。在确定解析正则表达式之后,计算设备的控制单元将这些解析正则表达式分类为“爆炸性”或“非爆炸性”。
为了将解析正则表达式分类,计算设备的控制单元可根据传统的DFA构造技术从每个解析正则表达式生成临时DFA,并再根据传统的合并技术将这些临时DFA中的每一个与测试DFA合并以生成合并的DFA。通过将合并的DFA的大小(例如,关于消耗的存储空间或节点的数目)与临时DFA的大小加上测试DFA的大小的和比较,计算设备的控制单元就可确定一旦将该临时DFA与从其他解析正则表达式生成的其他DFA合并时解析正则表达式中给定的一个是否会导致状态复制或状态爆炸。如果控制单元确定状态复制将会发生,那么控制单元将解析正则表达式被分类为“爆炸性”。如果没有,控制单元将解析正则表达式被分类为“非爆炸性”。
对于被分类为“非爆炸性”的每个解析正则表达式(其可称为非爆炸性正则表达式),计算设备的控制单元可接下来从非爆炸性正则表达式生成DFA。这个DFA可称为非爆炸性DFA。对于那些有爆炸性特征的解析正则表达式(其可称为爆炸性正则表达式),控制单元可从爆炸性正则表达式生成DFA。这个DFA可称为爆炸性DFA。在某些情况下,控制单元可根据确定的分类对从相应的解析正则表达式生成的临时DFA重新描述为爆炸性DFA或非爆炸性DFA,而不是从同一解析正则表达式重新生成DFA。
还对于爆炸性正则表达式,计算设备的控制单元可从每个爆炸性正则表达式提取签名指纹或模式指纹。这些签名指纹均包括唯一识别或“取指纹于”每个爆炸性正则表达式的相应的一个爆炸性正则表达式的片段或子字符串。此外,签名指纹通常包括纯字符串,在某种意义上,签字指纹包括即使有也很少的一旦从指纹生成的DFA与其他DFA合并就可导致状态复制的不明确字符。示例性不明确字符可包括“*”重复字符,“-”范围字符,或可表示两个或多个字符的任何其他字符,并从而有利于状态复制。
在提取这些签名指纹后,计算设备的控制单元可从这些提取的指纹中的每一个生成指纹DFA或f-DFA。鉴于提取指纹以避免状态复制,由此产生的f-DFA通常包括类似于上述的非爆炸性DFA的非爆炸性DFA。控制单元接着将非爆炸性DFA与f-DFA合并以生成组DFA。值得注意地,组DFA的一个或多个节点可识别一个爆炸性DFA,其每个可表示上述的爆炸性DFA。计算设备可自动地(例如,没有管理员输入或干预),或管理员可手动地安装或以其他方式将组DFA和单独的DFA上载到网络设备。
在上载或以其它方式安装组DFA和单独的DFA之后,管理员可使网络设备能够接收数据包。网络设备可接收数据包并执行应用程序识别,以通过遍历组DFA和单独的DFA中的一个或两个来确定与数据包对应的网络应用程序(例如,HTTP应用程序,FTP应用程序,VoIP应用程序等)。具体地,网络设备首先遍历组DFA的多个节点中的一个或多个,其中,除末端节点之外的每个节点均提供了到达基于条件的另一个节点的转换。这些节点可被称为转换节点。
为了遍历组DFA,网络设备从数据包的有效载荷提取字符串,并根据转换条件判断字符串的第一个字符。如果字符满足该条件,那么字符被认为是“消耗”的,并且网络设备的控制单元遍历至由转换指示的下一个节点,并判断从数据包有效载荷中提取的字符串的下一个字符。如果字符不满足特定条件的条件,那么控制单元根据由节点指定的其他条件判断字符。如果字符未能满足任何条件,那么控制单元可确定数据包不匹配应用程序。然而,一旦到达末端节点,例如,识别应用程序或单独的DFA的没有转换的节点,那么如果末端节点识别相应的单独的DFA,控制单元就可确定部分匹配,如果末端节点识别应用程序就确定匹配。
在末端节点通过识别一个单独的DFA而不是应用程序来指示部分匹配情况下,然后,控制单元以类似于上述关于组DFA所描述的方式遍历识别的单独的DFA。然而,单独的DFA只包括指定匹配(例如,其指示应用程序)的末端节点,并且因此,在遍历单独的DFA时,控制单元不确定部分匹配。一旦遍历单独的DFA,控制单元就可因此确定匹配(例如,与数据包对应的应用程序)或不能识别应用程序。
如果发生关于组DFA或单独的DFA的匹配,那么控制单元确定识别匹配的应用程序的应用程序标识符,使用包括在数据包内的其他信息(诸如端口和协议信息)验证该应用程序标识符。如果没有匹配发生,那么控制单元不将数据包与应用程序标识符相关联,而可将数据包与指示失败匹配的通用应用程序标识符相关联。
无论如何,网络设备可通过利用组DFA和单独的DFA,来提高执行应用程序识别的效率。以上所述的内存消耗的减少可通过爆炸分析或分类阶段来实现,通过其计算设备可在将从正则表达式生成的DFA合并之前,确定将会导致状态复制或爆炸的那些正则表达式。通过将这些“爆炸性”正则表达式与“非爆炸性”正则表达式分离,并只合并“非爆炸性”DFA来形成组DFA,由此产生的组DFA可包括相当少的状态,并从而比通过将爆炸性DFA与非爆炸性DFA合并所形成的可比较的DFA消耗更少的内存。
此外,通过提取非爆炸性指纹并将从这些非爆炸性指纹形成的f-DFA与非爆炸性DFA合并以形成组DFA,在组DFA的遍历中爆炸性正则表达式可被部分识别。一旦这样的部分匹配发生,然后,控制单元就遍历从爆炸性正则表达式生成的单独的DFA,其中指纹从该爆炸性正则表达式中提取。在这方面,组DFA避免了状态复制或爆炸,但仍然提供部分匹配的指示以使能够进行分离的单独的DFA的遍历。因此,应用程序识别的这种两阶段的形式可通过避免状态复制和要求专用的单独的DFA的遍历而更高效地匹配爆炸性正则表达式。此外,根据本技术执行的应用程序识别也可更高效地匹配非爆炸性正则表达式,因为组DFA包含大大少于可能需要遍历至到达结束或末端节点的状态。在这方面,本技术可通过大大减少识别匹配所遍历的状态的数量,而提高模式匹配发生的速度。
在一个实施例中,一种方法包括使用网络设备存储定义组确定型有限自动机(DFA)的第一数据,其中,组DFA是通过以下合并而形成的:(i)从相应的非爆炸性正则表达式生成的单独的非爆炸性DFA,以及(ii)从相应的签名指纹生成的指纹DFA(f-DFA),其中,非爆炸性正则表达式包括在形成组DFA的合并中确定为不导致状态爆炸的正则表达式,其中,签名指纹包括唯一识别爆炸性正则表达式的爆炸性正则表达式的片段,并且其中,爆炸性正则表达式包括在合并中确定为导致状态爆炸的正则表达式。该方法还包括使用网络设备存储定义爆炸性正则表达式的与组DFA分离的单独的DFA的第二数据,其中,签名指纹唯一识别生成单独的DFA的爆炸性正则表达式,以及使用网络设备接收数据包。该方法进一步包括使用网络设备在遍历单独的DFA之前遍历组DFA,以确定数据包是否包括由签名指纹定义的爆炸性正则表达式的片段,以及基于包包括爆炸性正则表达式的片段的确定,使用网络设备遍历与签名指纹相关联的单独的DFA,以识别与数据包对应的网络应用程序。
在另一个实施例中,网络设备包括控制单元,该控制单元存储定义组确定型有限自动机(DFA)的数据,其中,组DFA是通过以下合并形成的:(i)从相应的非爆炸性正则表达式生成的单独的非爆炸性DFA,以及(ii)从相应的签名指纹生成的指纹DFA(f-DFA),其中,非爆炸性正则表达式包括在形成组DFA的合并中确定为不导致状态爆炸的正则表达式,其中,签名指纹包括唯一识别爆炸性正则表达式的爆炸性正则表达式的片段,并且其中,爆炸性正则表达式包括在合并中确定为导致状态爆炸的正则表达式,以及存储定义爆炸性正则表达式的与组DFA分离的单独的DFA的第二数据,其中,签名指纹唯一识别生成单独的DFA的爆炸性正则表达式。网络设备还包括接收数据包的至少一个接口卡。控制单元进一步在遍历单独的DFA之前遍历组DFA,以确定数据包是否包括由签名指纹定义的爆炸性正则表达式的片段,以及基于包包括爆炸性正则表达式的片段的确定,遍历与签名指纹相关联的单独的DFA,以识别与数据包对应的网络应用程序。
在另一个实施例中,一种计算机可读存储介质,包括用于使可编程处理器使用网络设备存储第一数据的指令:该第一数据定义组确定型有限自动机(DFA),其中,组DFA是通过以下合并而形成的:(i)从相应的非爆炸性正则表达式生成的单独的非爆炸性DFA,以及(ii)从相应的签名指纹生成的指纹DFA(f-DFA),其中,非爆炸性正则表达式包括在形成组DFA的合并中确定为不导致状态爆炸的正则表达式,其中,签名指纹包括唯一识别爆炸性正则表达式的爆炸性正则表达式的片段,并且其中,爆炸性正则表达式包括在合并中确定为导致状态爆炸的正则表达式。该指令还使可编程处理器使用网络设备存储第二数据,其定义爆炸性正则表达式的与组DFA分离的单独的DFA,其中,签名指纹唯一识别生成单独的DFA的爆炸性正则表达式,以及使用网络设备接收数据包。该指令进一步使可编程处理器使用网络设备在遍历单独的DFA之前遍历组DFA,以确定数据包是否包括由签名指纹定义的爆炸性正则表达式的片段,以及基于数据包包括爆炸性正则表达式的片段的确定,使用网络设备遍历与签名指纹相关联的单独的DFA,以识别与数据包对应的网络应用程序。
在另一个实施例中,一种方法包括:使用计算设备存储定义多个正则表达式的数据;确定多个正则表达式中的每一个是否导致状态爆炸;并基于确定使用计算设备将多个正则表达式中的每个分类为非爆炸性或爆炸性,其中,多个正则表达式中的一个分类为非爆炸性,多个正则表达式中的另一个分类为爆炸性。该方法进一步包括,使用计算设备从爆炸性正则表达式提取每个爆炸性正则表达式的相应的签名指纹,其中,签名指纹包括唯一识别相应的一个爆炸性正则表达式的相应的一个爆炸性正则表达式的片段。使用计算设备从被分类为非爆炸性的多个正则表达式中的每一个生成非爆炸性确定型有限自动机(DFA),以及使用计算设备从被分类为爆炸性的多个正则表达式中的每个生成单独的DFA。该方法还包括:使用计算设备从被分类为爆炸性的多个正则表达式中的相应的一个提取的每个签名指纹生成指纹DFA(f-DFA),以及使用计算设备,将非爆炸性DFA与f-DFA合并以生成组DFA,其中,组DFA包括识别单独的DFA从而将组DFA连接到单独的DFA的至少一个节点。
在另一个实施例中,计算设备包括存储定义多个正则表达式的数据的控制单元。控制单元包括分类模块,其确定多个正则表达式中的每个是否导致状态爆炸,并基于确定将多个正则表达式中的每个分类为非爆炸性或爆炸性,其中,多个正则表达式中的一个分类为非爆炸性,多个正则表达式中的另一个分类为爆炸性,以及指纹提取模块,其从爆炸性正则表达式提取每个爆炸性正则表达式的相应的签名指纹,其中,签名指纹包括唯一识别相应的一个爆炸性正则表达式的相应的一个爆炸性正则表达式的片段。该控制单元还包括确定型有限自动机(DFA)构造模块,其从被分类为非爆炸性的多个正则表达式中的每个生成非爆炸性DFA,从被分类为爆炸性的多个正则表达式中的每个生成单独的DFA,并从被分类为爆炸性的多个正则表达式中的相应的一个提取的每个签名指纹生成指纹DFA(f-DFA),以及DFA合并模块,其将非爆炸性DFA与f-DFA合并以生成组DFA,其中,组DFA包括识别单独的DFA并从而将组DFA连接到单独的DFA的至少一个节点。
在另一个实施例中,计算机可读存储介质包括指令,该指令用于使可编程处理器使用计算设备存储用于定义多个正则表达式的数据,确定多个正则表达式中的每一个是否导致状态爆炸,并使用计算设备根据确定将多个正则表达式中的每一个分类为非爆炸性的或爆炸性的,其中,多个正则表达式中的一个被分类为非爆炸性,多个正则表达式中的另一个被分类为爆炸性。该指令还使可编程处理器使用计算设备从爆炸性正则表达式提取每个正则表达式的相应的签名指纹,其中,签名指纹包括用于唯一识别相应的一个爆炸性正则表达式的相应的一个爆炸性正则表达式的片段,使用计算设备从被分类为非爆炸性的多个正则表达式中的每个生成非爆炸性确定型有限自动机(DFA),以及使用计算设备从被分类为爆炸性的多个正则表达式中的每个生成单独的DFA。该指令进一步导致可编程处理器使用计算设备从被分类为爆炸性的多个正则表达式中的相应的一个提取的每个签名指纹生成指纹DFA(f-DFA),以及使用计算设备将非爆炸性DFA与f-DFA合并以生成组DFA,其中,组DFA包括识别单独的DFA并从而将组DFA连接到单独的DFA的至少一个节点。
在另一个实施例中,一种方法包括使用网络设备存储定义组确定型有限自动机(DFA)的第一数据,其中,组DFA是通过以下合并形成的:(i)从相应的非爆炸性正则表达式生成的单独的DFA,以及(ii)从相应的签名指纹生成的指纹的指纹DFA(f-DFA),其中,非爆炸性正则表达式包括在形成组DFA的合并中确定为不导致状态爆炸的正则表达式,其中,签名指纹包括唯一识别爆炸性正则表达式的爆炸性正则表达式的片段,并且其中,爆炸性正则表达式包括在合并中确定为导致状态爆炸的正则表达式。该方法还包括使用网络设备存储定义爆炸性正则表达式的与组DFA分开的单独的DFA的第二数据,其中,签名指纹唯一识别生成单独的DFA的爆炸性正则表达式,以及使用网络设备接收数据包。该方法进一步包括使用网络设备在遍历单独的DFA之前遍历组DFA,以确定数据包是否包括由签名指纹定义的爆炸性正则表达式的片段,以及基于数据包包括爆炸性正则表达式的片段的确定,使用网络设备遍历与签名指纹相关的单独的DFA,以识别爆炸性正则表达式所识别的模式。
在附图以及下面的说明书中描述了本发明的一个或多个实施例的细节。本发明的其他特点、目的、和优点将从说明书、附图、及权利要求中显而易见。
附图说明
图1是示出示例性网络系统的框图,其中,一个或多个网络设备实施本文所描述的技术,以更高效地识别与数据包对应的应用程序。
图2是示出图1的路由器的示例性实施例的框图,该路由器实施本文所描述的技术,以更高效地识别与数据包对应的应用程序。
图3是更详细地示出图1的IDP设备的框图。
图4是执行本文所描述的技术的网络设备的示例性操作的流程图。
图5是示出图2的路由器的示例性操作的流程图,该路由器实施本技术,以更高效地识别与数据包对应的应用程序。
图6是示出图3的IDP设备的示例性操作的流程图,该设备实施本技术,以更高效地识别与数据包对应的应用程序。
图7是示出根据本公开所描述的技术生成的组DFA图形数据结构的框图。
图8是示出计算设备的示例性实施例的框图,该计算设备实施本文所描述的技术,以生成组DFA和单独的DFA。
图9是示出计算设备的示例性操作的流程图,该计算设备实施本文所描述的技术,以生成组DFA和单独的DFA。
图10是示出描述计算正则表达式的爆炸因子beta(β)的示例性曲线图。
图11是示出描述状态爆炸的三个水平的示例性曲线图。
图12是示出根据本文所的技术描述当执行应用程序识别时可能发生的改进的匹配的示例性曲线图。
具体实施方式
图1是示出示例性网络系统10的框图,其中,一个或多个网络设备实施本文所描述的技术,以更高效地识别与数据包对应的应用程序。虽然本文所描述的是路由器12和入侵侦测防御(IDP)设备14(“IDP设备14”)两种示例性网络设备,但是任何网络设备均可以实施本文所描述的改进的应用程序识别技术。此外,虽然通过实例描述了用于识别与网络通信相关联的应用程序的设备,但是本技术适用于使用正则表达式的其他系统。
如图1所示,网络系统10包括两个网络,公共网络16和专用网络18。公共网络16可包括任何可公开访问的计算机网络,例如Internet。公共网络16可包括各种互连的计算设备或节点,例如,网络服务器、打印服务器、应用服务器、数据服务器、工作站、台式电脑、笔记本电脑、蜂窝或其他移动设备、个人数字助理(PDA)、以及能够经由无线和/或有线连接连接到计算机网络的任何其他设备。典型地,这些设备经由基于包的协议(诸如互连网协议(IP)/传输控制协议(TCP))与另一设备互相通信。因此,公共网络16可表示为或称为“基于包”的计算机网络。
公共网络16包括表示实施本文所描述的技术的网络设备的示例性实施例的路由器12。路由器12典型地保存用于识别通过公共网络16(通过该公共网络可到达相应的目的地)的路由或路径的路由信息(图1未示出)。路由器12可将这些路径提取成用于识别这些路由中的每一个的“下一跳”的转发信息(同样,图1未示出)。下一跳可以识别沿着给定路径转发数据包所经由的接口。路由器12接收数据包并基于包括在数据包中的信息(例如,报头)访问转发信息以确定数据包传输所沿的路由的下一跳。然后,路由器12经由下一跳所识别的接口转发数据包。以这种方式,路由器12可将从公共网络16和专用网络18中接收的数据包路由到数据包的预定目的地。
专用网络18可以表示由专有组织(诸如企业或行业)通常所拥有的、运营的以及维护的网络,并且其通常是公众不可访问的网络。专用网络18包含防火墙20、交换机22、多个计算节点24A~24N(“计算节点24”)和IDP设备14。防火墙20可以表示用于保护专用网络18,具体地,计算节点24的网络安全设备。防火墙20通常通过执行诸如网络地址转换(NAT)的网守服务(gatekeeperservice)来保护这些节点24。通常,这些网守服务仅仅依赖从每个数据包的报头解析的网络层信息,诸如IP地址和端口。
换句话说,防火墙20可以作为专用网络18的网守,通过检查IP地址和端口以确保进入专用网络18的通信量仅响应于先前从一个或多个计算节点24发送的通信量而进入。实际上,这有助于减少非法访问专用网络18,很像网守,从而可以防止公众访问专用网络18。防火墙20也可以通过执行NAT,隐藏专用网络18的内部配置,以防止恶意组织或“黑客”利用内部配置中的已知的缺陷。
交换机22表示能够执行各个端点(诸如计算节点24)之间的通信量的路由的网络设备。因此,交换机22可以交换通信流以将特定数据包传递至至计算机节点24中的相应的一个节点。虽然如图示出了单个的交换机22,但是专用网络18可以与单个的交换机22结合或作为交换机22的替代选择来使用集线器、路由器或能够对数据执行与节点24来回交互的交换和/或路由的其他网络设备。此外,虽然为了便于说明,如图所示仅包括单个防火墙设备20和单个交换机22,但是专用网络18可以包括多个类似于防火墙20的防火墙和多个类似于交换机22的交换机。因此,本技术不应局限于图1所示出的示例性实施例。
IDP设备14包括能够侦测并可以防止网络攻击的网络安全设备。通常,IDP设备14应用一个或多个策略来侦测一个或多个网络攻击集合。每个策略均可以定义与网络攻击集合对应的攻击模式,并且当将攻击模式集合用于输入和输出的通行量时,可以使IDP设备14能够侦测每个相应的网络攻击的集合。值得注意的是,这些攻击模式不同于正则表达式定义的模式。本文中所使用的“输入的网络通信量”可以包括离开和进入专用网络18的通信量,并且因此称为关于IDP设备14的输入通信量。同样地,“输出流量”可以不指任何特定的方向,而只是指从IDP设备14的角度离开IDP设备14的通信量。因此,输入和输出可以指从IDP设备14的角度而来的通信量的方向,并不分别表示公共网络16和专用网络18之间的任何特定的方向以及通信流。
IDP设备14通过应用由这些策略所识别的攻击模式来将这些策略应用到两个方向上(即,从公共网络16接收的入站通信量和目的地至公共网络16的出站通信量)的网络通信量流,以提高侦测网络攻击的准确性。例如,IDP设备14可以将这些攻击模式应用到公共网络16与计算机节点24之间的客户端到服务器(CTS)和服务器到客户端(STC)的通信。IDP设备14还可以分析网络业务以使在一个方向上的通信量与在相反方向上的通信量相关联,用于网络通信量内所侦测的每个通信会话。对于每个客户端到服务器的通信会话,IDP设备14可识别在一个方向上的数据包流(例如,用于客户端上的特定软件应用程序的CTS通信流)和在相反方向上的相应的数据包流(例如,对于相同的软件应用程序,响应从服务器流到客户端的STC通信)。
IDP设备14可识别监测通信量中的数据包流,并且透明地重新组合来自数据包流的应用层的通信。IDP设备14可以包括一组特定协议解码器,以分析应用层的通信并识别应用层的事务(transaction)。通常,“事务”指的是对等设备(peer device)之间的一系列有限制的相关的应用层通信。例如,单个TCP连接可以用来发送(接收)多个超文本传输协议(HTTP)请求(响应)。例如,可以使用TCP连接获取包括多个图像和多个到HTML网页的链接的单个网页。HTTP解码器可由IDP设备14调用以将TCP连接中的每个请求/响应识别为不同事务。这对防止某些攻击定义或攻击模式跨事务边界应用是有用的。在一个实施例中,事务可以根据通常被称为“五元组”的源IP地址和目的IP地址、协议、以及源端口号和目的端口号来识别。其他实施例可以以其他方式识别事务,例如,通过使用媒体访问控制(“MAC”)地址。
对于每个事务,相应的解码器可以分析应用层的通信并提取特定协议元素。例如,对于FTP登录事务,FTP解码器可以提取对应于用户名、目标设备的名称、客户端设备的名称和其他信息的数据。此外,解码器可以分析与每个事务相关联的应用层的通信,以确定该通信是否包含任何特定协议的“异常”。通常,协议异常是指应用层通信中不符合通常接受的用于特定协议的通信规则的任何侦测出的不规则。例如,该规则可以由公布的标准和供应商定义的规范来定义。其他异常是指在技术上遵守协议规则,但可以保证提高的审查水平的协议事件(即,操作)。
这个协议事件的一个实例是文件传输协议(FTP)登录请求的重复失败。HTTP协议的实例异常包括丢失的HTTP版本信息、残缺的统一资源定位器(“URL”)、目录遍历、报头溢出、身份验证溢出和收藏夹(cookie)溢出。简单邮件传输协议(SMTP)的实例异常包括太多收件人、延迟尝试以及超过所定义的长度的域名。邮局协议版本3(POP3)的实例异常包括用户溢出和失败登录。FTP的其他异常包括丢失的参数、超过所定义的长度的用户名或路径名以及失败的登录。其他异常包括不正常的以及规范外的数据传输以及控制设备打开到除用于发出命令的客户端设备之外的设备的网络连接的命令。
IDP设备14将由策略识别的攻击模式应用到所提取的元素和由协议解码器识别的特定协议异常,来侦测和防止网络攻击。当应用到输入和输出通信量时,这些攻击模式可以因此基于应用层的数据和其他状态协议信息识别一个或多个攻击签名、协议异常和其他恶意行为。此外,IDP设备14可以将特定模式与对应于特定应用程序的协议相关联。对于由IDP设备14截取的给定的通信会话,IDP设备14可以尝试识别应用程序类型和会话的数据包流的基本协议,以选择一个或多个模式来应用到数据包流。如果IDP设备14侦测到网络攻击,那么IDP设备14可以采取一个或多个已编程的操作,诸如自动地丢弃与应用层通信相关联的数据包流,在应用层通信中侦测网络攻击以防止攻击,从而保护网络安全。
为了识别应用程序的类型,例如,识别与每个数据包对应的应用程序,IDP设备14包括应用程序识别(AI)模块26A(“AI模块26A”)。AI模块26A表示实施应用程序算法以识别与每个数据包或数据包流对应的应用程序的类型的硬件和/或软件模块。虽然图1未示出,AI模块26A可以存储定义多个确定型有限自动机(DFA)的数据。如以下更详细的描述,DFA可以包括具有多个互连节点的图形数据结构(或简称“图形”)。可能除末端节点外,图形的每个节点定义遍历到图形的其他节点所根据的状态和条件,并可以因此被称为“遍历节点”。末端节点(例如,定义状态但不定义条件的节点)可以存储用于识别应用程序的数据。换句话说,AI模块26A可以遍历一个或多个DFA图形的节点直至到达与特定应用程序相关联的末端节点。一旦到达此末端节点,AI模块26A可以将数据包或数据包流与由末端节点所识别的网络应用程序相关联。以这种方式,AI模块26A可以识别网络应用程序,并从而使IDP设备14能够选择可应用给数据包流的攻击模式集合的子集。
路由器12还包括执行基本上类似的操作以识别与数据包或数据包流对应的网络应用程序的AI模块26B。即,AI模块26B可以基本上类似于AI模块26A。在这方面,AI模块26B还可以包括类似的多个DFA,其中,这些DFA中的每一个均包括具有多个互连节点的图形数据结构。至少一些节点是与网络应用程序相关联的末端节点。此外,AI模块26B可以遍历这些DFA图形,并且一旦到达这些末端节点的一个,就将数据包或数据包流与由末端节点识别的网络应用程序相关联。
然而,路由器12可利用识别的应用程序(例如)来选择多个服务质量(QoS)等级中的一个特定的等级,而不是类似于IDP设备14以模式选择为目的利用所识别的应用程序。换句话说,路由器12一旦识别与数据包(或者更具体地,数据包流)对应的应用程序,就基于所识别的应用程序来从多个QoS等级中选择一个。
例如,AI模块26B可以将来自数据包流的数据包识别为对应于语音互连网协议(VoIP)的网络应用程序。然后,路由器12可以访问定义QoS协议子集(profile)的数据,其中,每个QoS协议子集为不同的应用程序指定多个QoS等级中的一个。路由器12可以利用识别的应用程序(例如,VoIP)作为查找,以为VoIP应用程序选择所定义的相应的QoS协议子集。路由器12可以基于该QoS协议子集确定多个QoS等级中与VoIP应用程序相关联的一个QoS等级。然后,路由器12将确定的QoS等级与数据包流相关联,并根据确定的QoS等级转发此数据包流的数据包。在这方面,由AI模块26A,26B(“AI模块26”)实施的应用程序识别不仅可以有利于IDP上下文中的模式选择,还有利于路由上下文中的转发,以确保给定的QoS水平或等级。
根据本公开所阐述的本发明的原理,路由器12和IDP设备14都可实施本文所描述的技术,以便更高效地实施应用程序识别。具体地,AI模块26中的每个均可实施本文所述的这些技术,以减少存储多个DFA所需的内存量,同时还提高了AI模块26遍历多个DFA的速度。所描述的技术不仅影响网络设备(诸如路由器12和IDP设备14),还影响如下更详细描述的负责生成在执行应用程序识别中所使用的DFA的计算设备。虽然本文关于特定方面(例如,应用程序识别)进行了描述,但是本技术可普遍应用于任何方面,从而DFA用于识别固定数据量内的特定字符串或字符模式。
首先,路由器12和IDP设备14可以接收定义组DFA和一个或多个单独的DFA的数据。通常,此数据包括规则或定期(例如,每日、每周或每月)更新的数据包,其中,压缩有该组DFA和一个或多个单独的DFA,以便于经由网络连接至路由器12和IDP设备14的传输。可选地,管理员或其他网络用户可以手动地(本地或远程)将定义该组DFA和一个或多个单独的DFA的数据载入到各自的路由器12和IDP设备14。无论如何,路由器12和IDP设备14中的每一个均可以存储用于定义组DFA的第一数据和用于定义与该组DFA分离的单独的DFA的第二数据。
该组DFA表示通过将分类为“非爆炸”的至少一个单独的DFA与至少一个“指纹”DFA或f-DFA合并所形成的合并的DFA。在这方面,合并的DFA可称为组DFA,这是因为组DFA由一“组”单独的非爆炸(non-explosive)的DFA和f-DFA所形成。通常,DFA是用于实施正则表达式(其一般简称为“regex”),并且已经开发了将正则表达式自动地转换为DFA的多个算法。
正则表达式可以包括识别感兴趣的模式或文本的字符串。关于应用程序识别,正则表达式可以识别指示性的或与应用程序相关联的模式。网络管理员或其他用户可以使用诸如Perl、工具命令语言(TCL)、便携式操作系统界面(POSIX)等的形式或标准的语言来指定正则表达式,以识别为某些应用程序所特有的文本。正则表达式被广泛用作可编程的性质和相应的灵活性的结果,这使正则表达式能够被快速地编程,以识别新兴的应用程序。通常,这些形式语言定义特殊字符以增加字符模式或字符串匹配能力。例如,一种形式语言使用“*”字符来指示在星号“*”特殊字符之前的零个或多个字符可以出现在匹配字符串中。为了说明,形式语言中的正则表达式“ab*c”可以匹配字符串“ac”、“abc”、“abbc”等。在说明中,具有“a”字符、后面跟着零个或多个“b”字符、并以“c”字符结尾的任何字符串均可匹配正则表达式。
从正则表达式生成的由此产生的DFA可以包括具有多个节点的图形。通常,对于正则表达式中的每个字符,存在至少一个节点,节点间的转换取决于遇到的正则表达式的下一个字符。例如,简单的正则表达式“abc”可能会导致带有三个节点的DFA,一个节点对应于字符“a”,另一个对应于字符“b”,以及又一个对应于字符“c”。DFA还可以包括初始启用或零节点。零节点可以定义具有如下条件的至第一“a”节点的转换,即,输入字符串的字符匹配正则表达式的“a”字符。第一节点还可以定义具有如下条件的转换,即,为了遍历第二节点,输入字符串的下一个字符匹配正则表达式的“b”字符。第一节点还可以定义具有如下条件的另一转换,即,为了遍历零节点,输入字符串的下一个字符匹配正则表达式的除“b”以外的任何字符。第二节点也可以定义两个条件,一个用于具有如下条件的至第三节点的转换,即,输入字符串的下一个字符匹配正则表达式的“c”字符,另一个用于在如下条件下转换回至零节点,即,输入字符串的下一个字符匹配正则表达式的除“c”以外的任何字符。第三节点可以包括末端节点并定义没有转换而是指示匹配状态。
通常,正则表达式转换成DFA的过程包括第一步,计算设备将正则表达式转换成一个非确定型有限自动机(NFA)。NFA非常像DFA,是因为NFA包括具有多个互连节点的图形数据结构。然而,与DFA不同的是,该NFA可以使不具有相关联条件的节点之间进行转换,其被称为“厄普西隆(epsilon)转换”,并通常表示为“ε-转换”。换句话说,NFA的一个或多个节点可以定义遍历至其他节点所根据的状态和一个或多个条件,非常像DFA,但还包括定义状态和一个或多个无条件ε-转换的节点。因此,这些ε-转换是不确定的,这是由于这些转换与条件不相关并为名称“不确定型”有限自动机提供了基础。与NFA相比,表示DFA的图形只包括定义遍历至其他节点所根据的状态和条件的中间节点,和定义状态而不定义条件的末端节点。换句话说,表示DFA的图形不包括定义状态和任何ε-转换的遍历节点。在这个意义上说,该DFA可以认为是“确定型”,因为节点之间的每个转换均是与条件相关联的。
根据多个算法可以进行正则表达式到NFA的转换。用于将正则表达式转换为NFA的示例性算法可以包括称为“Thompson”算法的算法和称为“Glushkov”算法的算法。根据这两个示例性算法中的一个的转换所产生的NFA可以分别具有“Thompson结构”或“Glushkov结构”的特征。典型地,定义NFA的由此产生的数据(例如,图形数据结构)消耗与用于生成NFA的正则表达式的长度呈线性关系的内存的量。在Thompson算法或Glushkov算法下,转换时间也与由NFA实施的正则表达式的长度呈线性关系。虽然当与DFA相比时,NFA可能会占用很少的内存并只占用线性的时间来生成,但是由于不明确的NFAε-转换,NFA通常识别正则表达式,或NFA匹配正则表达式的效率低于DFA可以匹配相同的正则表达式的效率。由于匹配速度在限制带宽方面通常更有问题,所以网络管理员青睐于用于提供高匹配速度或更高效地匹配的AI模块,而不是消耗较少系统资源(诸如内存空间)的AI模块。因此,大多数AI模块(包括AI模块26)使用DFA而不是NFA来实施应用程序识别。
为了从NFA生成DFA,使用另一种称为“子集”的算法将NFA转换成DFA。在这种情况,由此产生的DFA具有使用“子集结构”形成的DFA的特征。然后,由此产生的DFA可以根据称为“Hopcroft”算法的常规算法进行最小化。根据以上过程的DFA的生成可能占用的时间量与由此产生的DFA所实施的正则表达式的长度呈指数关系。此外,由此产生的DFA可能会占用作为由此产生的DFA所实施的正则表达式的长度的指数因子的内存量。因此,从系统资源的角度来看,DFA没有NFA有效率。然而,由于DFA的确定性的性质,其可以与输入流的大小(例如,提供用于应用程序识别的数据包的大小或数据包的一部分)呈线性关系的速度识别或匹配正则表达式,其典型地比使用NFA匹配相同的正则表达式更有效率。
如上所述,该组DFA表示通过将被称为“非爆炸性”的至少一个单独的DFA与至少一个“指纹”DFA或f-DFA合并所形成的合并的DFA。爆炸性的和非爆炸性的DFA分别指的是从爆炸性或非爆炸性正则表达式所生成的DFA。正则表达式是爆炸的还是非爆炸的,可以通过分析正则表达式来确定。在一些情况下,这种分析包括从给定的正则表达式生成临时的DFA,并且将此临时的DFA与从相应的测试正则表达式生成的测试DFA合并。然后,将定义合并的DFA的图形的节点或状态的数量与测试DFA的节点或状态的数量加上临时DFA的节点或状态的数量的总数相比较。
基于比较,每个正则表达式可以被归类为“爆炸性”或“非爆炸性”。爆炸性正则表达式表示产生具有小于或等于临时的DFA的节点和测试的DFA的节点的相加的总和的节点数的合并的DFA图形的那些正则表达式,而非爆炸性正则表达式表示产生具有大于临时的DFA的节点和测试的DFA的节点的相加的总和的节点数合并的DFA的那些正则表达式。换句话说,“非爆炸性”正则表达式包括在形成组DFA的合并操作中确定为不导致状态爆炸的正则表达式,而“爆炸性”正则表达式包括在形成组DFA的合并操作中确定为导致状态爆炸的正则表达式。然后,将非爆炸性正则表达式转换成相应的DFA,该DFA在本文称为非爆炸性DFA。然后,可将这些非爆炸性DFA与其他非爆炸性DFA以及至少一个f-DFA合并。
f-DFA指的是从被识别为爆炸性正则表达式的正则表达式的签名指纹生成的DFA。签名指纹指的是唯一识别从中提取签名指纹的相应的爆炸性正则表达式(如指纹)的爆炸性正则表达式的一部分。典型地,签名指纹表示从定义正则表达式的较大字符串所提取的连续字符串。在这方面,签名指纹可表示由正则表达式所定义的字符串的子串或唯一识别爆炸性正则表达式的爆炸性正则表达式的片段。以下将更详细地讨论签名指纹提取。简单地,指纹提取的目的是减少爆炸性正则表达式中固有的不明确,从而提取不产生状态爆炸的签名指纹。通过以这种方式提取指纹,从所提取的指纹生成的f-DFA也是非爆炸性的。
在提取签名指纹之后,称为指纹DFA或f-DFA的DFA可以以上述所讨论的相同的方式从签名指纹生成,并与上述所讨论的非爆炸性DFA合并以生成组DFA。因此,组DFA可表示通过合并多个非爆炸性DFA所形成的DFA,其中,至少一个非爆炸性DFA包括从签名指纹生成的f-DFA,该签名指纹从爆炸性正则表达式中提取。可以类似于上述关于将NFA转换为DFA所讨论的子集算法的方式合并DFA。
当合并包括至少一个f-DFA的多个非爆炸性DFA时,可以以上述所讨论的方式为每个非爆炸性正则表达式生成与组DFA分离的单独的DFA。因此,单独的DFA具有“爆炸性”DFA的特征,但是这可导致误称(misnomer),由于单独的DFA不与任何其他DFA合并,无论是爆炸性的还是非爆炸性的,因此不能造成状态爆炸。为此,这些DFA被称为“单独的”DFA,这是因为这些DFA中的每个均与组DFA是分离的。这些单独的DFA中的每个均可与爆炸性正则表达式和所提取的签名指纹相关联。以这种方式,路由器12和IDP设备14的各AI模块26均可接收和存储定义组DFA和一个或多个单独的DFA的第一数据和第二数据。
然后,路由器12和IDP设备14中的任一个或两个,在接收和存储定义组和一个或多个单独的DFA之后,可接收数据包流的数据包。路由器12和IDP设备14中的任一个或两个可首先确定数据包是否与已被路由器12和/或IDP设备14识别为对应于特定的网络应用程序的数据包流对应。一旦确定先前已经识别这些数据包的应用程序,网络设备12和/或14不可将数据包转发到用于应用程序识别的各自的AI模块26。通常,这些网络设备12、14可保存用于存储当前或活动的数据包流以及相应的信息(诸如在路由器12情况下的相关联的QoS等级或在IDP设备14的情况下的模式协议子集)的流量表。然而,如果这些网络设备12、14不保存流量表中用于与所接收的数据包对应的所识别的数据包流的条目,那么AI模块26可执行应用程序识别以确定与数据包流的数据包对应的应用程序。
为了执行应用程序识别,AI模块26可在遍历一个或多个单独的DFA的任何一个之前,遍历组DFA的多个节点(或状态)中的一个或多个。为了确定数据包是否包括由签名指纹所定义的爆炸性正则表达式的片段,AI模块26可遍历这个组DFA。换句话说,组DFA图形数据结构的一个或多个节点包括指示数据包包括由签名指纹所定义的片段的末端节点。这个末端节点或叶节点可与一个单独的DFA相连接或相关联。AI模块26遍历该图形,以确定数据包的任何部分或集合部分(诸如报头)是否匹配由签名指纹所定义的片段,并且如果是,就会遇到这些指纹末端节点中的一个。
然后,一旦遇到这些指纹末端节点中的一个,为了识别与数据包对应的网络应用程序,AI模块26会遍历由指纹末端节点所识别的单独的DFA的多个节点(或状态)中的一个或多个。换句话说,AI模块26可基于数据包包括爆炸性正则表达式的片段的确定,遍历与签名指纹相关联的单独的DFA的多个节点(或状态)中的一个或多个。AI模块26可遍历这个单独的DFA直至遇到定义单独的DFA的图形的多个节点中的末端节点,并将数据包与由末端节点所识别的网络应用程序相关联。如果AI模块26在遍历单独的DFA时未能到达末端节点,那么AI模块26可返回到遍历组DFA,或可仅返回没有识别网络应用程序的数据包。
AI模块26不可能总是执行这种应用程序识别的两阶段形式的形式,这两阶段包括首先遍历组DFA,然后在完成组DFA的遍历之后遍历所识别的单独的DFA。相反地,组DFA的一个或多个节点可包括识别应用程序而不是识别与相应的单独的DFA相关联的指纹的末端节点。一旦到达组DFA图形数据结构的这些末端节点,AI模块26就将数据包与由末端节点所识别的网络应用程序相关联。
本技术可提供一个或多个好处,特别是对于内存消耗和匹配速度。通过将所谓“爆炸性”的正则表达式与“非爆炸性”正则达式分离,本技术可确保只合并非爆炸性正则表达式来形成组DFA,并从而避免状态爆炸。通过避免状态爆炸,可大幅减少图形的状态或节点的数量,从而减少存储组DFA图形数据结构所需要的内存量。这在已经设置内存页面大小的系统中是特别地有益,因为当存储DFA的内存量不超过储存为内存页面设计的大小时,匹配速度或DFA的遍历可更高效地进行。
例如,当遍历DFA时,需要两个内存页面的DFA图形数据结构需要AI模块26交换内存页面。由于为了模式匹配的目的,相对于遍历DFA,这些交换需要大量的时间来执行,所以交换时间可能造成大量系统开销,大量的开销降低了使用DFA进行模式匹配的效率。通常,为了克服这种内存页面限制,DFA被分成能并行执行的一个或多个DFA以执行模式匹配。然而,这不减少内存消耗。通过避免状态爆炸,本文所述的组DFA不仅可避免将DFA分成多个DFA,以及接着发生的消耗大量的处理器和计算资源的并行匹配,还大幅减少存储组DFA数据结构所消耗的内存量。换句话说,在某些情况下,上述所描述的组DFA的可消耗小于或等于标准内存页面。
如上所述,通过从爆炸性正则表达式中提取签名指纹,并将由此产生的f-DFA与非爆炸性DFA合并来形成组DFA,可以避免状态爆炸。在这种方式下,组DFA通过f-DFA仍可以识别爆炸性正则表达式,但不与造成状态爆炸的任何DFA结合。通过这些f-DFA,AI模块26仍可部分地识别组DFA内的爆炸性正则表达式,而后在第二阶段遍历分离的单独的DFA以确认应用程序匹配。换句话说,当遍历组DFA时,该f-DFA用作AI模块26的“提示(hint)”。一旦匹配这些“提示”中的一个,AI模块26就基于该提示访问分离的单独的DFA,并遍历该单独的DFA以确认由提示建议的应用程序。非爆炸性组DFA与爆炸性的单独的DFA的这种分离,不仅限制了内存资源的消耗,还进一步有利于与爆炸性正则表达式的匹配(匹配正则表达式通常是费时的),因为只有当提示或f-DFA建议此正则表达式可能存在于数据包内时才匹配。这可提高匹配速度,并有利于整个应用程序识别。
图2是示出图1的路由器12的示例性实施例的框图,路由器12实施本文所描述的技术,以更高效地识别与网络通信的数据包对应的软件应用程序。虽然关于特定的网络设备(例如,路由器)进行了描述,但是本技术可通过包括网桥、交换机、网络集线器、广域网(WAN)加速设备、或执行应用程序识别的任何其他网络设备中的任一网络设备来实施。此外,本技术可应用于出于模式匹配的目的应用正则表达式的其他网络设备或系统,而不是识别应用程序。因此,本技术不应限于本文所描述的示例性实施例。
如图2所示,路由器12包括控制单元30。控制单元30可包括执行软件指令的一个或多个处理器(图2中未示出),该软件指令诸如那些用于定义软件或计算机程序的软件指令,存储到诸如存储设备(例如,磁盘驱动器或光盘驱动器)、或存储器(诸如闪存、随机存取存储器或RAM)或用于存储使可编程处理器执行本文所描述的技术的指令的任何其他类型的易失性或非易失性存储器的计算机可读存储介质(图2中也未示出)。可选地,控制单元30可以包括用于执行本文所描述的技术的专用硬件,诸如一个或多个集成电路、一个或多个专用集成电路(ASIC),一个或多个专用处理器(ASSP)、一个或多个现场可编程门阵列(FPGA)、或专用硬件的前述实例的一个或多个的任意组合。
控制单元30可以分成两个逻辑或物理“面”以包括第一控制或路由面32A以及第二数据或转发面32B。即,控制单元30可以逻辑地(例如,作为在同一组硬件组件上执行的独立的软件实例)或者物理地(例如,作为静态地实施硬件的功能或动态地执行软件或计算机程序来实施该功能的独立的物理专用硬件组件)实施两个独立的功能,例如,路由和转发功能。
控制单元30的控制面32A可以执行路由器28的路由功能。在这方面,控制面32A可以表示实施可以确定路由信息34的路由协议(图2中未示出)的控制单元30的硬件和/或软件。路由信息34可以包括定义网络(诸如公共网络16)拓扑的信息。控制面32A可以解析由路由信息34所定义的拓扑,以选择或确定通过公共网络16的一条或多条路径。然后,控制面32A可以用这些路径更新数据面32B,其中,数据面32B将这些路径保存为转发信息36。转发或数据面32B可以表示用于根据转发信息36转发网络通信量的控制单元30的硬件和/或软件。
控制面32A可以进一步包括用户界面模块38和深度数据包检测模块40。用户界面模块38(“UI模块38”)可以表示通过其管理员42(“admin 42”)或其他一些用户可以与控制单元30交互的硬件和/或软件模块。具体地,UI模块38可以存在一个或多个用户界面,通过该一个或多个用户界面,管理员42可以与深度数据包检测模块40交互。在一些实施例中,UI模块38可以经由基于文本的用户界面(诸如命令行界面(CLI))使能基于脚本的配置。虽然本文关于用户或管理员42与UI模块38的交互进行了描述,但是诸如配置系统、服务器、或其他任何网络计算设备的另一个计算设备可以与UI模块38远程交互。在这方面,UI模块38提供一个界面,通过该界面管理员42或计算设备可以与UI模块38本地和/或远程交互。
深度数据包检测模块40表示硬件和/或软件模块,该硬件和/或软件模块执行应用层数据的深度数据包检测以确定与数据包流对应的软件应用程序(例如,特定的7层网络应用程序或网络协议)。深度数据包检测可以涉及数据包的报头和有效载荷的检测,因而表示比数据包的单一报头的粗略检测“更深”的检测。例如,粗略检测通常涉及解析来自IP数据包的IP报头以提取“五元组”。这“五元组”可以包括源地址、源端口、目的地址、目的端口和协议。这五元组通常识别与数据包对应的数据包流。
通常,数据面32B执行此粗略检测并将数据包流存储在流量表(flow table)37中。流量表37可以包括对具有多个条目的数据表结构进行定义的数据,其中,每个条目典型地通过五元组识别有效的数据包流或当前的数据包流,以及与数据包流的数据包的转发相关的附加信息,诸如QoS等级。一旦确定数据包流表示新的数据包流,数据面32B就可以将数据包向上转发至控制面32A的深度数据包检测模块40。深度数据包检测模块40可以识别与新的数据包流的数据包对应的应用程序和所识别的应用程序的相应的QoS等级。然后,深度数据包检测模块40可以将数据包和QoS等级传送回至数据面32B,数据面对流量表37进行更新以包括新的数据包流和相应的QoS等级的新的条目。然后,数据面32B可根据相应的QoS等级转发新的数据包。
为了确定与新的数据包流的数据包对应的网络应用程序,深度数据包检测模块40可以包括上述的AI模块26B。深度数据包检测模块40还可以包括对由AI模块26B输出的应用程序标识符44进行验证的验证模块42。换句话说,验证模块42可以检验由AI模块26B所识别的应用程序(例如,应用程序标识符44)是否与包括在数据包内的其他信息(诸如五元组)对应。因此,验证模块42可以表示对所识别的应用程序进行验证以确保该应用程序与包括在数据包内的其他信息的准确度的硬件和/或软件模块。深度数据包检测模块40还存储用于定义QoS协议子集46的数据,如上所述,该QoS协议子集可通过应用程序(或更具体地,应用程序标识符)来索引。每个协议子集46均可以将应用程序或应用程序标识符与多个QoS等级中的特定的一个相关联。
如图2进一步所示,路由器12包括分别经由入站网络链路50A~50N(“入站网络链路50”)和出站网络链路52A~52N(“出站网络链路52”)接收和发送数据包流或网络通信量的接口卡(IFC)48A~48N(“IFC 48”)。IFC 48典型地经由多个接口端口(未示出)连接到网络链路50、52,并且经由路径54A~54N(“路径54”)中的相应的一条路径转发来自控制单元30的数据包和控制信息并从控制单元30接收数据包和控制信息。路由器12包括具有用于容纳一组卡(包括IFC 48)的多个插槽的底盘(图2中未示出)。每个卡均可以插入到底盘的对应插槽中,以经由总线、底板或其他电通信机构将卡可通信地连接到控制单元30。
首先,管理员42经由诸如配置系统的远程计算设备与由UI模块38所提供的用户界面进行本地或远程交互,以输入或上载组DFA56和单独的DFA 58。值得注意地,管理员42可以经由UI模块38所提供的用户界面将安装包或其他压缩文件上载到控制单元30。然后,控制单元30可解压缩并提取组DFA 56和单独的DFA 58,并将组DFA 56和单独的DFA 58自动地安装在AI模块26B内。
如以上所讨论的,组DFA 56包括由至少一个非爆炸性DFA和至少一个f-DFA两种类型的DFA的合并所产生的DFA。图2通过标有“非爆炸性DFA 60”和“f-DFA 62”的两个虚线框示出该组DFA56的组成。框是虚线以便标识这些DFA 60、62是相互合并来形成组DFA 56的。值得注意地,单独的DFA 58与组DFA 56是分离的且是不同的,并且f-DFA 62将组DFA 56连接到单独的DFA 58。在这方面,组DFA 56可以与单独的DFA 58相关联以形成以上所讨论的两阶段应用程序的识别。虽然图2所示出的组DFA 56包括单个的非爆炸性DFA 60和单个的f-DFA 62,但是其可以包括多个非爆炸性DFA 60和多个f-DFA 62。考虑到组DFA 56可以包括多个f-DFA62,尽管图2示出单个单独的DFA 58,但是AI模块26B可以存储多个单独的DFA 58,同时多个f-DFA 62中的每一个将组DFA 56连接到多个单独的DFA 58中的相应的一个。
在AI模块26内安装组DFA 56和单独的DFA 58之后,管理员42可使能或以其他方式激活路由器12以开始接收数据包。可选地,在路由器12继续接收和转发数据包时,管理员42可以安装组DFA56和单独的DFA 58,并且一旦完成安装,管理员42就可以启用深度包检测模块40。无论如何,数据面32B可以沿着一条或多条路径54从相应的一个或多个IFC 48经由入站网络链路50接收数据包。数据面32B可对每个接收到的数据包执行上述粗略检测,以从每个数据包提取上述五元组。然后,数据面32B访问流量表37,以确定由流量表37所定义的多个条目中的任意一个是否与所提取的每个数据包的五元组对应。如果条目匹配所提取的五元组,则数据面32B确定由匹配或对应条目所定义的QoS等级,并根据所确定的QoS等级转发数据包。
数据面32B通过基于所确定的QoS等级将数据包排队到多个转发队列中的特定一个(图2中未示出)或通过执行一些其他的确保满足该QoS等级的转发程序来根据所确定的QoS等级转发数据包。然后,数据面32B为这些转发队列服务,并且一旦将该数据包从转发队列取出或取回,就在转发表36中执行查找,以确定将数据包转发到了哪个IFC 48。数据面32B可利用数据包的报头内所定义的目的地址作为进入转发表36的密钥。然后,数据面32B可将数据包转发到IFC 48中的经确定的一个,其经由出站链路52中的相应的一个转发数据包。
然而,一旦确定流量表37中没有与从输入的数据包中提取的五元组匹配或对应的条目,数据面32B就可确定该数据包对应于新的数据包流。由于没有条目存在,因而没有与数据包流相关联的QoS等级,所以数据面32B将数据包转发到深度数据包检测模块40,以识别与通过所提取的五元组识别的数据包流相关联的应用程序和相应的QoS等级。深度数据包检测模块40可接收数据包,并且深度数据包检测模块40的AI模块26B根据本文所描述的技术来执行应用程序识别以更高效地识别与数据包对应的应用程序。
AI模块26B首先遍历具有包含输入流的数据包的DFA 56。AI模块26B可以设置识别定义数据包的数据内的起始位置的第一标记、光标或指针构造,以及识别定义数据包的数据内的结束位置的第二标记、光标或指针构造。典型地,AI模块26B设置这些光标或指针构造中的每个,以指向数据包的有效载荷(而不是报头)内的字符,其因此构成“深度”数据包检测,而不是粗略数据包检测。AI模块26B也可以设置识别由第一标记和第二标记所定义的输入流内的当前位置的第三标记、光标或指针构造。
AI模块26B可以基于由第一标记所识别的字符遍历由组DFA56所表示的图形数据结构的各个节点。节点之间的遍历消耗了由第一标记和第二标记所定义的输入流的字符,并且AI模块26B可在从一个节点到另一个节点的每次遍历之后增加第三当前标记或指针构造,从而取回由第一标记和第二标记所识别的输入流的下一个字符。AI模块26B以这种方式继续,直至AI模块26B增加当前标记至第二、结束标记,而没有到达末端节点,或到达由组DFA 56所表示的图形数据结构的末端节点。
在当前标记到达第二标记、结束标记,而没到达末端节点的第一种情况下,AI模块26B不能识别与数据包对应的应用程序,而是输出通用的应用程序标识符44。验证模块42可以对该通用应用程序标识符44进行检验,并选择QoS协议子集46中与通用应用程序标识符44相关联的一个协议子集。典型地,QoS协议子集46中的该协议子集将通用应用程序与“尽力服务(best effort)”QoS等级相关联,其指示数据面32B在转发来自数据包流的数据包时,应该应用其尽力服务。AI模块26B可以将该数据包、通用应用程序标识符44以及相关联的尽力服务QoS等级转发到数据面32B,该数据面更新流量表37以包括与数据包对应的定义此信息的数据包流的条目。然后,数据面32B可以以上述方式转发该数据包。
通常,在这些情况下,由于缺乏包括在数据包内的信息,AI模块26B不能识别特定的应用程序。因此,数据面32B可继续将所接收的未识别的数据包流的数据包转发到深度数据包检测模块40,直到深度数据包检测模块40的AI模块26B成功地识别与此未识别的数据包流相关联的应用程序。在某些情况下,数据面32B可只将指定数量的数据包(诸如前5个、10个或100个数据包)转发到深度数据包检测模块40,以限制代价高的检测和改进此数据包流的转发。虽然图2中未示出,但是对于这些未识别的数据包流,深度数据包检测模块40可保存从多个数据包流所提取的详细应用程序信息。在这方面,AI模块26B基于多个数据包而不是单个数据包来识别应用程序,并且本技术不应仅限于单一的数据包输入流。
然而,在后一种情况下,在遍历组DFA 56期间,AI模块26B到达末端节点,AI模块26B可识别与数据包对应的应用程序,或根据由末端节点定义的状态遍历单独的DFA 58。即,末端节点可包括合并的非爆炸性DFA 60的节点,其可识别与数据包对应的应用程序或表示非爆炸性正则表达式的匹配,其中,非爆炸性DFA 60从非爆炸性正则表达式生成。可选地,末端节点可包括合并的f-DFA62的节点,其可包括相应的单独DFA 58的指针或其他参考符号或可表示签名指纹的匹配,其中,f-DFA 62从签名指纹生成。
在第一种情况下,AI模块26B可输出特定的应用程序标识符44,验证模块42通过注释法(noting)(例如)可检验数据包是否包括对由应用程序标识符44识别的所确定的应用程序进行检验的任何其他信息(诸如端口号)。假设应用程序标识符44是有效的,则验证模块42确定QoS协议子集46中与有效应用程序标识符44相关联的一个协议子集。然后,深度数据包检测模块40将数据包、应用程序标识符44和由QoS协议子集46中经确定的一个协议子集指定的QoS等级转发到数据面32B,该数据面更新流量表37并根据所指定的QoS等级以上述方式转发数据包。
在AI模块26B到达将组DFA 56连接到单独的DFA 58的末端节点的第二种情况下,AI模块26B以基本上类似于上述关于组DFA56的遍历方式遍历单独的DFA 58。AI模块26B可以重置第三当前标记以重置输入流,然后使用当前标记遍及输入流进行迭代重复(iterate),直至到达末端节点或当前标记的增加超过第二标记、结束标记而没有到达末端节点。
如上所述,一旦到达末端标记,AI模块26B可输出特定的应用程序标识符44,验证模块42对该应用程序标识符进行验证,并假设标识符44是有效的,验证模块利用该应用程序标识符访问QoS协议子集46中相应的一个。还如上所述,一旦未能到达末端节点,AI模块26B就可输出通用的应用程序标识符44,验证模块42经常对通用的应用程序标识符进行验证,并使用其来访问通常指定尽力服务的QoS等级的QoS协议子集46中的通用的一个。在这两种情况下,深度数据包检测模块40将数据包、应用程序标识符44和所确定的QoS等级转发到数据面32B,数据面更新流量表37,并根据上述所确定的QoS等级转发数据包。
在这种方式下,诸如路由器12的网络设备可实施本技术以更高效地识别与新的数据包流的数据包对应的应用程序。基于所识别的应用程序,路由器12可确定根据其来转发与新的数据包流相关联的数据包的QoS等级,从而提供数据包的差异化的(differentiated)、按流的转发。由于本技术可以使能包括转发方面的更高效的应用程序识别,所以路由器12不仅可以更高效地识别应用程序,而且由于更高效的应用程序的识别,还可以更高效地转发所接收的新的数据包流的数据包。因此,对于识别为与新的数据包流对应的数据包,本技术可改进数据包吞吐量。
图3是更详细地示出图1的IDP设备14的框图。IDP设备14包括控制单元64,该控制单元可包括硬件,例如,可编程处理器、现场可编程门阵列(FPGA)、专用的特殊产品(ASSP)、专用集成电路(ASIC)、集成电路等中的一个或多个,以及计算机可读存储介质或存储器,例如,静态存储器(硬盘驱动器,光盘驱动器,磁盘驱动器,闪存等)和/或动态存储器(随机存取存储器或RAM,动态RAM或DRAM等)。在某些情况下,计算机可读存储介质可包括使以上列出的可编程处理器执行本文所描述的动态策略配置技术的指令,诸如那些用来定义软件或计算机程序的指令。
控制单元64包括用户界面模块68(“UI模块68”)、分类模块70和服务引擎模块72(“服务引擎72”)。这些模块68~72中的每个均可包括硬件、软件或其任意组合,以执行以下描述的属于各个模块的功能。在一些实施例中,控制单元64可包括一个或多个可编程处理器,每个可编程处理器执行作为软件或计算机程序(例如,指令)的模块68~72中的一个或多个。在其他的实施例中,控制单元64可包括一个或多个集成电路,该集成电路实施模块68~72中的一个或多个。因此,本技术不应局限于本文所述的技术的任意一个实施例。
UI模块68表示用于与诸如管理员42的用户或另一个计算设备交互的模块。UI模块68可基本上类似于上述关于图2的路由器12的UI模块38。UI模块68可提供一个或多个图形用户界面和/或基于文本的用户界面,通过该用户界面管理员42或另一个计算设备可配置IDP设备14。在一些实施例中,UI模块68通过诸如命令行界面(CLI)的基于文本的用户界面可使能基于脚本的配置。
分类模块70表示可基于从每个数据包提取的信息对每个数据包进行分类的模块。分类模块70可对数据包进行分类的一种方式是将每个数据包分类为属于特定的流。即,分类模块70可通过从每个数据包提取被称为“五元组”的信息来确定输入网络通信量76的数据包的特定一个数据包与哪个流对应。如上所述,每个流表示网络流量内一个方向上的数据包流。还如上所述,五元组包括源互连网协议(IP)地址、目的IP地址、源端口、目的端口和协议。典型地,五元组存在于每个数据包的报头内,并且分类模块70可解析或从每个数据包的报头提取五元组,以识别每个数据包与哪个流对应。分类模块70也可提取和利用附加信息,以识别诸如源媒体访问控制(“MAC”)地址和目的MAC地址的流。
基于此五元组,分类模块70可访问基本上类似于流量表37的流量表78,以确定策略80A~80N(“策略80”)中的哪个应用于输入通信量76的数据包中的每一个。每个策略80均可识别攻击模式的子集,攻击模式在图3中示为模式82。因此,流量表78可将流作为条目或流条目进行保存。每个流条目均可存储识别的五元组和策略80中的一个策略的参考符号。分类模块70可访问流量表78以确定与每个数据包对应的流和策略80中的相关联的一个。然后,分类模块70可标签或标记每个数据包,以指示策略80中可应用于每个带标签的数据包的相关联的一个策略。分类模块70可通过将每个数据包的元数据或其他信息存储在队列中(如队列84中的一个队列)来为每个数据包加标签。队列84可包括预处理队列,预处理队列在策略80中的相关联的一个的处理或应用之前,以先进先出(FIFO)的方式存储数据包。
分类模块70也可以按照将输入数据包分类的另一种方式,利用与这些数据包对应的应用程序将数据包分类。应用程序可以包括超文本传输协议(HTTP)应用程序、会话发起协议(SIP)应用程序(在某些情况下,其可发起VoIP会话)、实时传输协议(RTP)应用程序(在某些情况下,其可提供用于VoIP会话的传输)、文件传输协议(FTP)应用程序、或任何其他对于给定的协议或应用程序用于传递内容或数据的网络应用程序。分类模块70可包括上述用于将这些数据包分类的AI模块26A。AI模块26A可基本上类似于AI模块26B,并以基本上与上述关于AI模块26B的相同的方式执行本文所描述的技术。AI模块26A可实施本文所描述的技术以识别与数据包对应的应用程序。分类模块70还可包括验证模块74,其基本上类似于上述关于深度数据包检测模块40的验证模块42。验证模块74可以以基本上类似于验证模块40的方式验证应用程序标识符74(其可类似于应用程序标识符44)。
然后,分类模块70可将每个所识别的应用程序与不同的策略80中的一个相关联。即,当另一个数据包属于FTP应用程序时,AI模块26A可确定第一个数据包与(例如)HTTP应用程序对应。基于这些相应的分类,分类模块70可将策略80中的第一个策略与被分类为属于流量表78中的HTTP应用程序的第一个数据包相关联,并将策略80中的第二个策略与被分类为属于流量表78中的FTP应用程序的第二个数据包相关联。在这种方式下,IDP设备14可使策略80的应用程序适合不同的应用程序,并且因此使模式82适合不同的应用程序,这样可使IDP设备14能够更准确地应用模式82以只侦测那些以特定的协议或应用程序为目标的网络攻击,而不侦测那些对每个分别识别的协议或应用程序无害的网络攻击。通过根据所识别的应用程序选择模式,IDP设备14可限制系统资源的消耗。
服务引擎72表示用于服务或处理输入通信量76的数据包的模块。服务引擎72可通过将策略80中的一个策略应用于每个数据包来服务或处理每个数据包。每个策略80均可识别一组不同的模式82以进行应用,其中,每个策略识别至少一个不同于模式82的所有其他模式的模式。服务引擎72可保存识别一组完整的网络攻击的一组完整的模式82。每个策略80均可通过指示是应用该组完整的模式82还是该组完整的模式82的子集来识别一组模式。在对输入通信量76的每个数据包进行处理之后,服务引擎72可基于相应的策略80的应用程序将那些数据包作为输出通信量(诸如输出通信量81)转发。
如上关于图2的路由器12所描述的,管理员42可经由与由UI模块66提供的用户界面的交互首先上载或输入组DFA 56和单独的DFA 58。再如上所述,控制单元64可安装或配置具有组DFA56和单独的DFA 58的AI模块26A。一旦安装,管理员42就可启用或激活IDP设备14,使得IDP设备14开始接收作为输入通信量76的数据包。
响应于接收这些数据包,分类模块70可(很像路由器12的数据面36B)解析来自每个数据包的五元组,并使用作为密钥的五元组在流量表78中执行查找。如果流量表78存储与五元组对应的流条目,那么分类模块70可以访问此条目,并提取与由从数据包提取的五元组识别的数据包流先前相关联的策略80中的一个策略。一旦确定策略80中的该策略,分类模块70可以以上述方式为数据包加标签,并将数据包存储到队列84中的一个队列。然后,服务引擎72可从伴有相关联标签的队列“取出”或取回该数据包,并选择策略80中被标签识别的一个策略。服务引擎72应用被策略80中所选择的一个策略识别的模式82的子集,其中,在某些情况下,该子集可包括模式82的全集。基于由策略80中的一个策略所识别的一个或多个模式82的应用程序,服务引擎72可将数据包作为输出通信量81转发,或采取一些其他安全操作,诸如丢弃数据包或隔离数据包。
然而,如果流量表78没有存储从数据包提取的五元组的条目,则分类模块70调用AI模块26A,以根据本文所描述的技术处理数据包。换句话说,AI模块26A可以以上述所描述的通过设置第一、第二和第三标记、光标或指针构造并递增第三当前标记的方式遍历组DFA 56,直至到达组DFA数据结构的末端节点,或递增第三当前标记至第二、结束标记而没有到达末端节点。
一旦到达表示为组DFA 56的图形数据结构的末端节点,AI模块26A就可识别应用程序或遍历与末端节点相关联的单独的DFA58,如上所述。换句话说,如果末端节点指示应用程序,则AI模块26A输出与所识别的应用程序相关联的特定应用程序标识符75,验证模块74可验证该应用程序标识符。假设成功验证,则分类模块70可将数据包(更具体地,数据包流)与流量表78中的应用程序相关联,通过定义新的条目来存储此关联。分类模块70也可确定将定义策略80中的哪个策略用于所识别的应用程序,并在流量表78的新条目内将策略80中的这一个策略与数据包流相关联。
可选地,如果末端节点识别单独的DFA 58,则AI模块26A以上述关于图2的路由器12所描述的方式遍历所连接的单独的DFA58,并且识别或无法识别与数据包对应的应用程序。如果应用程序被识别,则AI模块26A将与所识别的应用程序相关联的应用程序标识符75输出,验证模块74可验证该应用程序标识符。假设成功验证,如上所述,则分类模块70可确定与由应用程序标识符75所识别的应用程序相关联的一个策略80,并将此关联作为新的流条目存储在流量表78内。
在某些情况下,分类模块70通过在分类表中或其他数据结构(为了便于说明,图3中未示出)中执行查找,不需要肯定地确定哪个策略80与所识别的应用程序对应。相反地,应用程序标识符75可直接地识别相应的一个策略80,并且分类模块70可将应用程序标识符75存储到流量表78内新创建的流条目。在这些情况下,应用程序标识符75不仅可识别应用程序,还可识别一个策略80。
在AI模块26A无法识别应用程序的情况下(诸如当组DFA 56或单独的DFA 58的遍历结束时,没有到达末端节点),AI模块26A可以按照类似于上述关于图2的路由器12所描述的方式输出通用应用程序标识符75。在这种情况下,分类模块70可响应于此通用应用程序标识符75采取一个或多个操作。在一种情况下,分类模块70可丢弃数据包。在其他情况下,分类模块70可沿着IDP设备14内可避免任何模式82的应用程序的分离的数据包路径转发数据包。还有一些情况下,分类模块70可对具有识别策略的标签的数据包84进行排队,该策略指定服务引擎72可应用所有的模式82。又有一些情况下,分类模块70可对具有识别策略的标签的数据包84进行排队,该策略指定服务引擎72可应用模式82的最小子集。
在这种方式下,诸如IDP设备14的网络设备可实施本技术以更高效地识别与新的数据包流的数据包对应的应用程序。基于此所识别的应用程序,IDP设备14可确定应用模式82的子集或全集的一个策略80,从而为数据包提供模式82的差异化的、按流的应用程序。由于本技术可使能包括模式应用程序方面的更高效的应用程序识别,所以IDP设备14不仅可更高效地识别应用程序,而且由于更高效的应用程序的识别,还可以更高效地将模式82应用到所接收的新的数据包流的数据包。因此,对于识别为与新的数据包流对应的数据包,本技术可提升数据包吞吐量。
虽然本文关于分离的网络设备12和14进行了描述,但是单个网络设备可实施路由器12和IDP设备14两个方面。在这些情况下,单个网络设备通常具有路由器的特征,该路由器除具有控制面和数据面(如图2中所示出的控制面32A和数据面32B)外,还具有服务面。此服务面可包括一个或多个服务卡,其中,至少一个服务卡可包括实施上述关于IDP设备14所描述的功能的服务卡。在这方面,此路由器的控制面可包括类似于其中存在有AI模块26B的模块40的深度数据包检测模块,同时服务卡可包括类似于其中存在有AI模块26A的模块70的分类模块。
这单个组合的路由器/IDP设备的实施例的替代实施例还可包括另一个服务卡实施应用程序识别的情况。在这种情况下,IDP服务卡和控制面可将数据包导向至此AI服务卡用于应用程序识别,并将数据包连同经验证的应用程序标识符一起接收回。因此,本技术不应局限于单个设备,而也可由这些设备的任意组合以及其他设备来实施。此外,本技术可由专用服务卡来实施,专用服务卡可连接到任何网络设备,以根据本公开所阐述的本发明的原理来提供高效的应用程序识别。
图4是示出执行本文所述技术的诸如图1的路由器12和IDP设备14中的的任一个或两个的网络设备的示例性操作的流程图。本技术可参照图2和图3所示的这两个设备12和14的特定方面来进行进一步描述。虽然关于这两个特定类型的网络设备来进行描述,但是本技术可通过执行应用程序识别的任何网络设备以及利用DFA来识别由应用程序识别的上下文之外的相应的正则表达式所定义的模式的任何网络设备来实施。
首先,路由器12和/或IDP设备14中的两个或任一个可以接收用于定义组DFA 56的数据,用于侦测来自管理员或配置系统的签名指纹,并(如上描述)存储或安装此数据(86)。路由器12和/或IDP设备14中的两个或任一个也可接收和存储对与独特的指纹或f-DFA 62相关联的单独的DFA 58定义的数据(88)。一旦在各个AI模块26进行了存储或安装,用户(例如,管理员42)可使能或激活路由器12和/或IDP设备14中的两个或任一个以接收数据包,并且AI模块26可接收这些数据包中的一个或多个并以上述方式遍历组DFA 58(90,92)。
响应于这些数据包,在某些情况下,AI模块26可首先按流对这些数据包进行分类。即,在某些情况下,AI模块26可确定与数据包对应的流是客户端到服务器(CTS)的流还是服务器到客户端(STC)的流。在这些情况下,AI模块26可保存用于CTS分类流的第一组DFA 56和第一单独的DFA 58,以及用于STC分类流的第二组DFA 56和第二单独的DFA 58,因为由正则表达式识别的特定模式只可在这两种上下文中的一种中发生。虽然在流程图4中没有特别地示出,但是AI模块26可实施此附加的分类以最优化模式匹配,并进一步提高模式匹配发生的速度。在这种情况下,AI模块26可基于所确定的分类遍历组DFA 58中的特定的一个。
AI模块26可基于遍历确定匹配是否发生,例如,AI模块26是否遍历组DFA 56并到达识别应用程序的末端节点(94)。如果匹配发生(“是”94),则AI模块26可输出应用程序标识符或指示识别的应用程序的其他信息,其中验证模块42、74可分别以上述方式验证该应用程序标识符或该信息(96)。如果确定为有效(“是”98),则验证模块42、74可将数据包与匹配的或识别的应用程序相关联(100)。如果确定为无效(“否”98),则验证模块42、74可将数据包与通用应用程序标识符相关联,并返回没有任何特定应用程序标识符的数据包,其实际上返回没有识别应用程序的数据包(102)。
然而,如果在遍历组DFA 56时没有发生完全匹配(“否”94),那么AI模块26可确定部分匹配是否发生(104)。本文所使用的部分匹配指的是AI模块26遍历组DFA 56并到达不识别应用程序而识别单独的DFA 58的末端节点的情况。在这方面,部分匹配指的是匹配从爆炸性正则表达式提取的签名指纹。该匹配是“部分”的,这是因为只将由签名指纹所表示的爆炸性正则表达式的一部分、片段或段匹配而不是将由爆炸性表达式定义整个字符串匹配。如果部分匹配发生(“是”104),那么AI模块26可遍历与指纹相关联的单独的DFA 58,例如,如以上所述的合并的f-DFA的末端节点(106)。
当遍历单独的DFA 58时,然后,AI模块26可确定匹配(其被称为“完全”匹配)是否发生,如以上所述(108)。在当遍历组DFA 56时部分匹配不发生(“否”104)或当遍历单独的DFA 58时匹配不发生(“NO”108)的情况下,如上所述,AI模块26返回没有识别任何特定的应用程序的数据包(102)。然而,如果独立的DFA 58的遍历导致匹配(例如,到达末端节点(“是”108)),那么AI模块26可以输出识别与数据包对应的特定应用程序的应用程序标识符,验证模块42、74可以验证该应用程序标识符(96)。如果有效(“是”98),则验证模块42、74可将数据包与匹配的或识别的应用程序相关联(100)。如果无效(“是”98),则验证模块42、74可将数据包与通用应用程序标识符相关联或返回没有识别与数据包对应的应用程序的数据包。
虽然为了便于讨论,上文仅参考多个AI模块26来进行描述,但是本技术可由一个或两个AI模块26来实施。前述讨论并非意在表明AI模块26在相同的时间甚至同时执行相同的操作。相反地,AI模块26的讨论表明每个AI模块26可彼此独立地执行本文所述的技术。因此,本技术不应只限于要求两个AI模块26同步操作或串行执行相同的步骤。然而,在某些限制的情况下,AI模块26可同时执行相同的操作,特别是当配置系统连接到路由器12和IDP设备14并在相同时间将组DFA 56和单独的DFA 58上载到该路由器和IDP设备。在这种限制的情况下,两个AI模块26可同时安装组DFA 56和DFA 58。
以下讨论的技术表示没有提供任何上下文的应用程序的通用识别。下面的图5和图6提供了其中可利用应用程序识别的附加的上下文。
图5是示出图2的路由器12的示例性操作的流程图,该路由器实施本技术,以更高效地识别与数据包对应的应用程序。如上所述,路由器12可首先在AI模块26B内接收、存储并安装组DFA 56和单独的DFA 58。在安装之后,路由器12(更具体地,控制单元30)可经由一个IFC 48、对应的一个入站网络链路50和对应的一条路径54接收数据包(110)。
控制单元30的数据面32B可接收输入的数据包,并确定与输入数据包对应的流(112)。如上所述,数据面32B可从数据包提取五元组,并使用这个五元组作为密钥来确定流量表37是否包括与所提取的五元组相关联的流条目。以这种方式,数据面32B可确定所提取的五元组是否与新的流相关联(114)。如果流量表37包括对应于流量表37内提取的五元组的流条目,那么数据面32B可确定该数据包是否与当前或已经定义的流相关联(“否”114)。因此,数据面37可访问与所提取的五元组相关联的流条目,以确定与先前所识别的流相关联的QoS等级并根据相关联的QoS等级以上述方式转发数据包(116,117)。
然而,如果数据面37确定流量表37目前没有存储与所提取的五元组相关联的条目,那么数据面37可确定所提取的五元组对应于新的数据包流(“是”114)。一旦确定五元组对应于新的数据包流,数据面32B就可将数据包转发到控制面32A,于是,深度数据包检测模块40可根据本文所描述的技术确定与数据包对应的应用程序(或简称为“app”)(118)。即,AI模块26B可实施以上详细描述的技术,以识别与数据包对应的应用程序。AI模块26B可确定匹配并返回特定的应用程序标识符或(如上所述)将数据包返回到应用程序而没有匹配数据包(120)。
假设AI模块26B将数据包匹配到应用程序,验证模块42验证由此产生的应用程序标识符(“是”120),则深度数据包检测模块40可基于应用程序标识符访问QoS协议子集46,以确定与匹配的应用程序相关联的QoS等级(122)。可选地,如果匹配不存在并且AI模块26B输出验证模块42可始终对其进行验证的通用应用程序标识符(“否”120),则深度数据包检测模块40可将数据包流的QoS等级确定为尽力服务的QoS等级(124)。在另一种情况下,深度数据包检测模块40将一个或多个数据包、确定的应用程序标识符以及确定的QoS等级返回至数据面32B,这样会在流量表37内创建新的流条目,并使用确定的QoS等级更新此条目(126)。然后,数据面32B可根据相关联的QoS等级以上述方式转发数据包(117)。
图6是示出图3的IDP设备14的示例性操作的流程图,该IDP设备实施本技术,以更高效地识别与数据包对应的应用程序。如上所述,IDP设备14可首先在AI模块26A内接收、存储并安装组DFA 56和单独的DFA 58。在安装之后,IDP设备14(更具体地,控制单元64)可接收一个或多个数据包(其在图3中表示为输入通信量76)(130)。虽然图3中未示出,但是控制单元64可以以基本类似于图2的路由器12的方式接收数据包,例如,经由接口卡、输入网络链路和路径。
与路由器12的数据面32B非常类似,分类模块70可首先接收数据包,然后从数据包提取五元组以确定与数据包对应的流,并基于所提取的五元组访问流量表78以确定数据包是否与新的或当前的数据包流相关联(132,134)。如果流量表78内存在用于所提取的五元组的条目(“否”134),则分类模块70可访问流量表78内的此条目以确定与当前的数据包流相关联的一个策略80(136)。如果流量表78不包括与所提取的五元组相关联的条目(“是”134),则分类模块78可确定数据包与新的流相关联,并基于此确定,根据本文所述的技术确定与数据包对应的应用程序(138)。即,AI模块26A可以实施以上详细描述的技术以识别与数据包对应的应用程序。AI模块26A可确定匹配并返回特定的应用程序标识符或(如上所述)返回数据包而没有将数据包匹配到应用程序(140)。
假设AI模块26A将数据包匹配到应用程序,验证模块74验证由此产生的应用程序标识符(“是”140),则分类模块70更新流量表78以将数据包与匹配的应用程序相关联(142)。换句话说,分类模块70可在流量表78内创建新的条目,并将五元组与匹配的应用程序标识符相关联。在某些情况下,分类模块70还可确定与匹配的应用程序相关联的一个策略80,并将所确定的一个策略80存储到流条目。同样地,在一些实施例中,应用程序标识符不仅可识别应用程序,还可识别一个策略80,而通过将应用程序标识符存储到新的条目,分类模块70同样还可存储所确定的一个策略80。
然而,如果AI模块26A没有将数据包匹配到应用程序,或者将数据包匹配到应用程序但验证模块74没有验证所匹配的应用程序,那么分类模块70会更新流量表78以将数据包流与未知的应用程序相关联(144)。然后,在任何情况下,分类模块70可以以上述方式为具有匹配的应用程序的数据包加标签,其还可识别一个策略80(146)。在未知的应用程序的情况下,分类模块70不始终为数据包加标签,而相反可丢弃、隔离或执行一些其他的关于这些数据包的安全操作。分类模块70还可迭代数据包流的计数器,如果计数器超过诸如10,20或100的阈值,则采取前述的安全操作中一种。可选地,分类模块70可为与未知的应用程序相关联的数据包加标签,以识别所有的模式82或仅识别最小子集。
一旦标签后,分类模块70可将数据包和对应的标签存储到队列84,于是,服务引擎72可从队列84取出或取回数据包和对应的标签,并基于标签应用一种或多种模式82。换句话说,服务引擎72可基于标签选择一种或多种模式82(148)。为了说明,服务引擎72可访问存储到标签的应用程序标识符,并使用该应用程序标识符作为密钥来取回对应的一个策略80。对应的一个策略80可识别模式82的子集以应用于数据包。然后,服务引擎72可将识别的或选择的一个模式82应用于数据包(150)。如果在应用之后,模式82中的任意一个形成匹配(“是”152),那么服务引擎72可采取或执行包括丢弃或隔离数据包的适当的安全操作(154)。如果模式82中所应用的模式都不形成匹配,则(如上所述)服务引擎72可转发数据包(156)。
图7是示出根据本公开所描述的技术生成的组DFA的图形数据结构158的框图。组DFA图形数据结构158包括分别识别状态1~6的多个节点160A~160G(“节点160”)。箭头162A~162H中的每一个均表示节点之间的连接或转换,并可统称为“转换162”。在定义转换162方面,每个转换162可表示将一个节点160连接到另一个节点160的指针,起始转换除外,其未被由此原因而标记或识别为转换。由于图形数据结构158定义DFA,所以每个转换162均与对应的条件相关联。转换162A与条件“[^ac]”相关联,其指示如果输入流或字符串的字符不是(如对应的正则表达式的形式语言中的字符“^”所表示的)“a”或“c”,则从节点160A转换到节点160A。
在图7中示为图形数据结构158的组DFA表示两个DFA的合并,即,从正则表达式“/cdef/”生成的非爆炸性DFA和基于从爆炸性正则表达式“/a[^a][^a]b/”提取的签名指纹“/a[^a]/”生成的f-DFA。值得注意地,节点160的字符数等于6,也等于非爆炸性正则表达式(即4)和指纹(即2)的字符数的总和。因此,由图形数据结构158所表示的组DFA是非爆炸性的。通过遍历图形数据结构158,AI模块(诸如前述图1~图6中的一个AI模块26)可匹配非爆炸性正则表达式或指纹。
为匹配非爆炸性正则表达式,AI模块遍历图形数据结构158的节点160A和160D~160F以到达节点160G。节点160G包括由虚线圆圈而不是实线圆圈所指示的末端节点。节点160G指示与特定应用程序相关联的应用程序标识符(“app id”),因为它指示非爆炸性正则表达式的匹配。为匹配指纹,AI模块遍历节点160A和160B以到达节点160C。节点160C还包括末端节点,节点160C识别单独的DFA(“i-DFA”)而不是识别应用程序标识符。节点160C可包括指针或指示从爆炸性正则表达式生成的单独的DFA(诸如单独的DFA 58)的其他链接标记或标识符,其中签名指纹从爆炸性正则表达式提取。在这方面,单独的DFA 58可与组DFA的一个或多个节点相关联。
虽然为了便于说明的目的,以上示出只有两个DFA的合并,但是组DFA数据结构158可包括通过合并多个DFA所形成的DFA,其中至少一个非爆炸性DFA和至少一个f-DFA将由此产生的组DFA连接到单独的DFA。因此,本技术不应局限于这个简化的示例性实施例。
此外,虽然本文描述的是只匹配单个应用程序,但是AI模块可遍历组DFA 56或者组DFA 56和单独的DFA 58,并确定多个匹配应用程序。在这种多重匹配的情况下,这些AI模块可选择与最低阶数相关联的匹配应用程序。该阶数可表示形成某种应用程序的数据包多久出现一次,其中,最普遍的应用程序通常具有最低阶数。因此,在这种多重匹配的情况下,AI模块可从具有最低阶数的多个匹配应用程序中选择应用程序。同样地,本技术不应局限于上述的实施例,而是可包括这种多个匹配情况和任何选择多个匹配的应用程序中的一个的过程。
图8是示出用于实施本文描述的技术以产生图1~图3所述的组DFA 56和单独的DFA 58的计算设备164的示例性实施例的框图。计算设备164可包括任何类型的计算设备,包括诸如配置系统、服务器、路由器、IDP设备的网络设备、或任何其他网络设备,以及诸如计算机或工作站的通用计算设备。计算设备164可生成组DFA 56和单独的DFA 58,并自动地(例如,没有用户或管理员输入)传输和安装存储在远程网络设备(诸如路由器12和IDP设备14)的组DFA 56和单独的DFA 58。可选地,计算设备164可将组DFA 56和单独的DFA 58存储到存储器或存储设备,以用于管理员(诸如管理员42)的后续访问。然后管理员42可以以上述方式安装组DFA 56和单独的DFA 58
如图8所示,计算设备164包括控制单元166。控制单元166可包括执行软件指令的一个或多个处理器(图8中未示出),诸如那些用于定义软件或计算机程序,存储到诸如存储设备(例如,磁盘驱动器、或光盘驱动器)、或存储器(诸如闪存、随机存取存储器或RAM)或用于存储使可编程处理器执行本文所描述的技术的指令的任何其他类型的易失性或非易失性存储器的计算机可读存储介质(同样地,图8中未示出)。可选地,控制单元166可以包括用于执行本文所描述的技术的专用硬件,诸如一个或多个集成电路、一个或多个专用集成电路(ASIC)、一个或多个专用处理器(ASSP)、一个或多个现场可编程门阵列(FPGA)、或专用硬件的前述实例的一个或多个的任意组合。
控制单元166包括解析模块168、分类模块170、指纹提取模块172、DFA构造模块174和DFA合并模块176。解析模块168表示执行初步的解析操作以识别正则表达式的特定字符并将由这些识别的字符定义的正则表达式的特定部分实例化的硬件和/或软件模块。例如,解析模块168可识别表示“或”操作的“|”字符,将正则表达式分成由这个“|”字符定义的一个或多个子正则表达式,并将每个子正则表达式实例化为单独的正则表达式。举例来说,正则表达式可被定义为“gray|grey”,其指示一旦匹配“gray”或“grey”,匹配就能发生。解析模块168可通过首先识别该正则表达式是否包括“|”字符,基于此确定正则表达式包含该字符,识别由“|”字符定义的一个或多个子正则表达式,来解析该示例性正则表达式。在这种情况下,正则表达式包括两个子正则表达式“gray”和“grey”。解析模块168可解析这两个子正则表达式并将这些中的每一个实例化为单独的正则表达式“gray”和“grey”。
分类模块170可表示用于将从解析模块168接收的每个正则表达式分类为爆炸性或非爆炸性的硬件和/或软件模块。如以上简要描述,分类模块170可通过确定每个正则表达式的爆炸性水平来将这些正则表达式分类。典型地,当将包含某种程度不明确的正则表达式结合时,状态爆炸发生。这种不明确通常将其本身显示为有利于更强大的模式匹配的字符。
例如,一种称为“A”且A等于字符串“something”(其在形式语言中可表示为“A=/something/”)的模式是明确模式,因为只有确定的字符用于定义这种模式。另一种称为“B”且B等于“[ph]ing”(或在形式语言中“B=/[ph]ing/”)的模式也可以是明确模式,因为B的“[ph]”部分要求第一个字符是“p”或“h”。将从这两种模式A和B生成的两个DFA或DFAA和DFAB结合可以产生组DFA,其大小接近于每个DFAA和DFAB的大小的总和。换句话说,DFAA的大小(其可表示为“|A|”)等于11,并且DFAB或|B|的大小等于6。由DFAA和DFAB的合并(或|A+B|)产生的组DFA等于23。因此,单独的DFA的和等于17,其接近于23,即,所合并的DFA的大小。因此正则表达式A和B中的每一个均可认为是明确的,因而是非爆炸性的。
然而,关于另一个实例,被称为“C”且C等于模式“a...b”(或在形式语言中为“C=/a...b/”)的第三正则表达式是不明确的,因为该模式是可扩充的。C模式搜索第一个字符“a”和最后一个字符“b”。C模式包括“...”以指示任何不确定的字符数可位于字符“a”和字符“b”之间,并且该模式仍可匹配。将此模式与模式A结合可导致由此产生的合并DFA中的超线性(super-linear)大小的增加。在这里,|A|等于11并且|C|等于34,但作为结果的合并或|A+C|的大小等于109。这种状态爆炸可发生,由于在结合或合并的DFA中多次复制模式A,以说明模式C是不明确的情况,即,“...”,只要有一个“.”,两个DFA(即DFAA和DFAC)就相互作用,并且合并的DFA需要被分成匹配“[^s]”的状态和匹配“s”的状态,以记住匹配。因此复制的数量或状态爆炸的范围是取决于给定模式内将要与模式A和合并模式之间的相互作用的范围结合的不明确程度。在这方面,仅合并一个不明确正则表达式(诸如模式C)可造成重大的状态爆炸,并从而显著增加由此产生的组DFA的大小和相应的内存消耗。
分类模块170可实施算法,该算法使用以下等式(1)来估计爆炸性:
在等式(1)中,希腊字母β(beta),表示爆炸因子,以及β(X)表示正则表达式或模式“X”的爆炸因子。字母“T”表示测试模式或正则表达式。“|X+T|”表示由此产生的结合的或合并的两个DFA(DFAX和DFAT)的大小,它们从各自的正则表达式X和T生成。|X|表示从正则表达式X生成的DFAX的大小,并且|T|表示从正则表达式T生成的DFAT的大小。因此,爆炸因子可将由此产生的合并的DFA的大小与单独的DFA的结合(DFAX和DFAT)的大小进行比较。分类模块170对其对应的爆炸因子β大于1(1)的“爆炸性”正则表达式的任何正则表达式和其对应的爆炸因子β小于或等于1(1)的“非爆炸性”正则表达式进行分类。
指纹提取模块172表示用于从分类模块170将其归类为爆炸性的那些正则表达式提取签名指纹的硬件和/或软件模块。指纹提取模块172可从爆炸性正则表达式提取指纹,使得每个指纹均符合以下要求:
●所提取的指纹在先前提取的所有指纹中是独特的,以避免可以潜在增加匹配阶段的时间的多个部分匹配;
●所提取的指纹对应于非爆炸性模式,并理想地包括纯字符串,而不是具有不明确字符的字符串,以包含组DFA中的状态复制的数量;以及
●所提取的指纹与随机字符串匹配的概率很小,以将假(false)部分匹配的数量减小到最小。
指纹提取模块172可通过实施以下的指纹提取算法来满足以上要求,指纹提取算法以如下的伪码给出:
If(pattern is anchored)
If(initial string>2bytes)then
Fingerprint=extract(pattern,|initial string|)
Else if(last string>2bytes)then
Fingerprint=extract(pattern,-|last string|)
Else if(pattern has a substring>3bytes)
Fingerprint=findlongeststring(pattern)
Else
/*
重复以上查找,但在范围内、每个循环一个字节的
增加先前的字符串,直至指纹具有PR>0.001
*/
Else/*未锚定的模式*/
If(pattern has a substring>3bytes)
Fingerprint=findlongeststring(pattern);
Else
/*
在范围内增加先前的字符串,直至指纹具有
PR>0.001
*/
End if
根据以上伪码,提取指纹模块172可首先确定正则表达式或模式(pattern)是否是锚定的(anchor)。锚定的模式可包括具有明确的开始字符和/或结束字符(诸如“a”)而不是不明确字符(诸如“*”或“.”)。如果是锚定的,那么指纹提取模块172可接下来确定初始字符串(initial string)是否大于两(2)个字节,例如,确定正则表达式是否包含两个或多个字节的明确字符。如果为是,那么指纹提取模块172从该模式中提取(extract)该初始字符串,并设置指纹(fingerprint)等于初始字符串。如果为否,那么指纹提取模块172接下来确定正则表达式或模式的结束锚定字符串是否大于两(2)个字节。如果为是,那么指纹提取模块172可提取最后的字符串(laststring),并将该最后的字符串设置为该正则表达式的指纹。如果开始或结束或最后的字符串在大小上均不大于2个字节,那么提取指纹模块172可确定模式是否具有大小大于3个字节的子字符串(substring)。如果为是,那么指纹提取模块172可查找包括在正则表达式内的最长的明确的字符串(findlongeststring),并将此字符串设置为模式或正则表达式的指纹。如果为否,那么指纹提取模块172可重复上述的指纹搜索,但在范围内、每个循环一个字节的增加先前的字符串,直至指纹在随机数据包内具有大于或等于0.001的发生的概率(“Pr”)。
同样,根据以上的算法,如果模式或正则表达式确定为未锚定的,那么指纹提取模块172可确定正则表达式或模式是否具有在大小上大于三(3)个字节的子字符串。如果为是,那么指纹提取模块172可查找包括在正则表达式内的最长的明确字符串,并将此字符串设置为模式或正则表达式的指纹。如果为否,那么指纹提取模块172可重复以上的指纹搜索,但在范围内、每个循环一个字节的增加先前的字符串,直至指纹在随机数据包内具有大于或等于0.001还有发生的概率(“Pr”)。
DFA构造模块174表示硬件和/或软件模块,该硬件和/或软件模块实施上述转换过程,从而将正则表达式转换为NFA,并且将NFA转换为DFA。DFA合并模块176表示硬件和/或软件模块,该硬件和/或软件模块实施上述合并过程,从而将两个或多个DFA合并以形成组DFA 56。
首先,计算设备164(更具体地,控制单元166)接收正则表达式178A~178N(“正则表达式178”)。由于每个正则表达式178均可识别对特定应用程序来说独特的签名或模式,所以正则表达式178也可称为签名178A~178N或统称为签名178。控制单元166可接收签名178,作为经由用户界面模块(图8中未示出)所键入的输入,控制单元166可将该签名存储到存储器或存储设备。
在任何情况下,解析模块168可执行上述所描述的每个正则表达式178的初始解析,并输出每个正则表达式180的一个或多个对应的解析正则表达式180。由于解析模块168可生成每个正则表达式178的一个或多个解析正则表达式180,所以解析正则表达式180的数量可等于或超过正则表达式178的数量。此初始解析确保一些模式(诸如包括(例如)或字符“|”的那些模式)不包括第一子模式(诸如在或字符“|”前的子模式)而包括第二子模式(诸如在或字符“|”后的子模式),第一子模式是明确的,第二子模式是不明确的并且潜在地具有爆炸性。
为了说明,定义为“/abcde|a...c/”的模式或正则表达式可包括出现在OR字符“|”之前的第一明确子模式“/abcde/”和具有潜在爆炸性的第二不明确子模式“/a...c/”。解析模块168可解析这个示例性模式,并将以上两个子模式实例化为单独的解析正则表达式180。以这种方式,解析模块168可将正则表达式178分成一个或多个单独地实例化的解析正则表达式180。
分类模块170可接收解析正则表达式180,并以上述方式为每个解析正则表达式180计算爆炸因子beta(β)。然后,分类模块170可基于爆炸因子beta(β)对每个解析正则表达式180进行分类。对于每个解析正则表达式180,举例来说,分类模块170可将确定的beta(β)大于1(β>1)的那些正则表达式180归类为爆炸性的,而将确定的beta(β)小于或等于1(β<=1)的那些正则表达式180归类为非爆炸性的。
因此,分类模块170可基于爆炸因子beta(β)输出非爆炸性正则表达式182和爆炸性正则表达式184。DFA构造模块174可接收非爆炸性正则表达式182,并为每一个非爆炸性正则表达式182构造相应的非爆炸性DFA。DFA构造模块174可将这些DFA作为非爆炸性DFA 60输出到DFA合并模块176。与此同时,指纹提取模块172可接收爆炸性正则表达式184,并开始以上述方式从每个爆炸性正则表达式提取签名指纹186。指纹提取模块172将指纹186和相应的爆炸性正则表达式184转发到DFA构造模块174。DFA构造模块174从各自的指纹186和爆炸性正则表达式184生成f-DFA62和单独的DFA 58。
DFA构造模块174将f-DFA 62输出到DFA合并模块176,并将单独的DFA 58存储在控制单元166内。然后,DFA合并模块176以上述方式将非爆炸性DFA 60与f-DFA 62合并并输出组DFA 56,控制单元166存储该组DFA,如图8中由组DFA 56所示。在此生成、构造或建立过程结束时,控制单元166存储由非爆炸性模式60和f-DFA 62组成的组DFA 56和每个对应于各自的一个f-DFA 62的一个或多个单独的DFA 58。然后,管理员或其他用户(诸如管理员42)取回这些DFA 56和58,并手动地将DFA 56和58上载到诸如路由器12和IDP设备14的网络设备上,或使计算设备166将这些DFA 56和58自动地分发到使用的网络设备,以更高效地执行应用程序的识别。
图9是示出计算设备(诸如图8的计算设备164)的示例性操作的流程图,该计算设备执行本文所描述的技术,以生成组DFA(诸如组DFA 56)和单独的DFA(诸如单独的DFA 58)。首先,计算设备164的控制单元166接收和存储定义签名178或正则表达式178的数据(188)。解析模块168可解析每个正则表达式178,并输出每个所接收的正则表达式178的一个或多个解析正则表达式180,如上所述(190)。解析模块168可将解析正则表达式180转发到分类模块170。
分类模块170可接收解析正则表达式180,并为每一个解析正则表达式180计算或确定爆炸因子beta(β)。为了确定beta(β),分类模块170可首先为每一个解析的正则表达式180构造临时DFA(192)。接下来,分类模块170将临时DFA与测试DFA合并,以生成临时合并的DFA(194)。基于临时合并的DFA,并根据上述等式(1),分类模块170计算爆炸因子beta(β)(196)。
关于等式(1),变量X指的是临时DFA,变量T指的是测试DFA。如果X明确,则beta(β)最有可能小于1,表明当将X与其他非爆炸性DFA合并时,几乎没有任何状态复制会发生。然而,如果X是不明确的,则beta(β)可能大于或等于1,这取决于X的不明确程度以及X和T之间的相互作用。测试模式(测试DFA从其构造)可包括没有跟着序列“∧x00 01 02 03[等]\x/”的不明确字符的纯字符串,该序列长度接近于正在测试的正则表达式X的平均长度。测试模式中的“\x”表示序列是十六进制表示法。
数学上,以下的公式(2)表明具有大于1的确定的beta(β)的模式或正则表达式是“爆炸性”的,公式(2)如下:
在公式(2)中,变量n表示模式的数量n,并且变量N指示从相应的n模式生成的每个DFA的长度N。函数S(n)表示结合n个模式之后的状态数。进一步假设S(n+1)<α[S(n)+N],其中,X等于第n+1个模式,或换句话说,合并X之后的组DFA的大小小于没有合并X的组DFA的大小加上从模式n生成的DFA的大小。因此,在两种模式相结合之后,例如,上述假设显示为S(2)<α*2N,在三种模式相结合之后,上述假设显示为S(3)<α(N+2αN)。将这个假设抽象化为n个模式可产生上述公式(2),其中,对于α大于1(α>1),状态S(n)的数量通常与n呈指数关系。
对于α等于1(α=1),上述公式(2)变为S(n)<Nn,其与n呈线性关系。进一步假设,只将非爆炸性表达式合并(β(X)<=1),对于在给定阶段n,增加至DFA Dn-1的每个模式X,结合的DFA的大小(或|X+DN-1|)除以n个模式DFA的大小与通过合并n-1个模式所生成的组DFA的大小的和,如|X+DN-1|/(N+S(n-1))所示,约等于临时合并的DFA的大小,或|X+T|除以模式n的大小与测试DFA的大小的和,其可示为|X+T|/(N+|T|)。作出这些假设,换句话说,在上述公式(2)中,α约等于β,并且β可替换α。上述假设就此程度而言是合理的,因为合并的DFA DN-1只包含非爆炸性表达式,因而也期望这种模式的结合是非爆炸性的。为了保持状态数与n呈线性关系,对于合并的DFA(组DFA 58)中的每个模式,其足以确保β(X)小于或等于1。
分类模块170为每一个解析正则表达式180计算爆炸因子beta(β),并确定β是否大于1(198)。如果不大于1(“否”198),分类模块170将一个解析正则表达式180分类为非爆炸性的,并将这一个解析正则表达式180作为非爆炸性正则表达式182转发至DFA构造模块174(200)。如上所述,DFA构造模块174从每个接收的非爆炸性正则表达式形成或生成相应的非爆炸性的DFA(202)。
然而,如果β被确定为大于1,则分类模块170将这一个解析正则表达式180分类为爆炸性的,并将这一个解析正则表达式180作为爆炸性正则表达式184转发至指纹提取模块172(204)。指纹提取模块172将爆炸性正则表达式184或其拷贝转发至DFA构造模块174,该DFA构造模块从爆炸性正则表达式184生成单独的DFA 58,如上所述(206)。与此同时,指纹提取模块172从爆炸性正则表达式184提取签名指纹186(208)。
指纹提取模块172可实施上述伪码以提取指纹186。根据算法,指纹提取模块172可通过遍历爆炸性正则表达式184开始搜索至少两个字节的纯字符串。指纹提取模块172可首先在正则表达式的开始处搜索用作指纹的字符串,然后在未能找到符合两个字节要求的纯字符串时,搜索正则表达式的末端。数学上,给定随机数据包,与锚定在前两个字节或后两个字节的指纹匹配的机率为1/256*1/256或1/65536,这是非常小的概率。此概率由变量Pr所表示。给定具有两个字节的未锚定的指纹,在随机数据包中具有匹配的机率为1/65536*Z,其中,Z是该数据包的大小。对于Z等于1500的情况,其概率是百分之二(2%),与锚定情况相比,是非常高的。
因此,对于未锚定的情况,由指纹提取模块172实施的算法要求由至少3个字节的字符串来表示指纹,以避免假的正匹配。换句话说,通过增加指纹的字节长度,可以减小变量Pr,从而减小假匹配的总的百分比。以上所给出的算法指出,1/1000或0.1%的Pr是Pr的最小值,此最小值是可以接受的,以确保假匹配很少发生或根本不发生。应注意,指纹越长,Pr的值越高。然而,如果在指纹中允许不明确(例如,诸如“/[a-z]foo/”的范围),则之后指纹提取模块172可能需要限制指纹的大小,以确保指纹不会产生状态复制。无论如何,指纹提取模块172可将提取的指纹186输出到DFA构造模块174,该DFA构造模块从提取的指纹186生成f-DFA 62(210)。
然后,DFA构造模块174可将f-DFA 62和非爆炸性DFA 60转发到DFA合并模块176,DFA合并模块将f-DFA 62和非爆炸性DFA60合并以生成组DFA 56(212)。然后,DFA合并模块176可存储组DFA 56,而DFA构造模块174可存储单独的DFA 58。以这种方式,计算设备166可生成和存储组DFA 56和单独的DFA 58。
图10是示出描述计算正则表达式(诸如图9的正则表达式178)的爆炸因子beta(β)的示例性曲线图214。如图10所示,曲线图214的x轴表示膨胀因子或爆炸因子beta(β),而曲线图214的y轴表示正则表达式的百分比。曲线图214包括两条线216A和216B,其中,线216A提供了描绘临界爆炸因子为一的可视化参考线,而线216B表示具有给定爆炸因子的正则表达式178的百分比。分析线216B可得出正则表达式178近百分之六十左右是非爆炸性的(例如,具有相应的小于或等于1的beta(β)),而其余百分之四十左右是爆炸性的(例如,具有相应的大于1的beta(β)的确定。因此,在这种情况下,本技术可应用于提供更高效的应用程序识别。
图11是示出了描述状态爆炸的三个水平的示例性曲线图218的示图。如图11所示,曲线图218的x轴表示模式或正则表达式178的数量,而曲线图218的y轴表示合并正则表达式后产生的状态的数量。曲线图218包括线220A~220C。线220A表示将被确定为非爆炸性的每个连续的正则表达式178合并后产生的状态的总数。线220B表示将不论是否被确定为爆炸性的每个连续的正则表达式178合并后产生的状态的总数,其中,状态复制限制为4千字节(或4K)。线220C表示将不论是否被确定为爆炸性的每个连续的正则表达式178合并后产生的状态的总数,其中,状态复制限制为16千字节(或16K)。
值得注意地,对于非爆炸性正则表达式,状态复制是相对线性的,如线220A的缓慢增长或较平坦的斜率所示。然而,当将爆炸性正则表达式相结合时,如线220B和线220C所示,状态的总数响应于结合这些爆炸性正则表达式而迅速增加。在某些情况下,爆炸性模式集合的增长几乎是指数级的,并比增加或合并115模式或正则表达式之后的非爆炸性模式的增长大近6倍。通过将这些爆炸性正则表达式从组DFA 56消除,计算设备166可显著地减少状态的数量,从而可能改进内存消耗和匹配速度。
图12是示出根据本文所述的技术描述当执行应用程序识别时可能发生的改进的匹配的示例性曲线图222。如图12所示,曲线图222的x轴表示与遍历用于识别同一正则表达式的集合时所访问的状态的数量相比的、在遍历用于识别正则表达式178的集合的传统DFA结构时所访问的状态的数量(“no.”)。曲线图222的y轴用百分比表示数据包流的值。曲线图222包括线224,其显示,对于少数流(例如,低于10%),传统技术和目前讨论的技术所访问的状态的数量基本相同。
然而,进一步注意线224,对于高达60%的流,当与遍历的DFA 56和58的状态和节点的数量相比时,传统技术遍历的状态多近3倍。对于其余的流,当与DFA 56和DFA 58的遍历相比时,传统技术遍历的状态多至3、4或5倍。因此,曲线图222表示本技术基本上可以通过大大减少检测匹配之前需要遍历的状态或节点的数量来增加匹配的速度。
以这种方式,本技术可将用于应用程序识别的内存需求减少3倍。此外,本技术可将按流的状态的数目减少了6倍。因此,本技术可既减少内存消耗,又提高匹配速度。在某些情况下,本技术可以甚至不需要对DFA构造引擎进行任何改变,而只需将遍历组DFA和单独的DFA的AI模块更新最小的变化。考虑到相对较小的影响但有可能的好处,可迅速地利用本技术来提高AI模块实施应用程序识别的效率。
本文已经描述了本发明的多个实施例。这些及其他实施例均在所附的权利要求的范围之内。
Claims (31)
1.一种用于识别网络应用程序的方法,所述方法包括:
使用网络设备存储第一数据,所述第一数据用于定义组确定型有限自动机DFA,其中,所述组DFA是通过以下合并而形成的:(i)从对应的非爆炸性正则表达式生成的单独的非爆炸性DFA,以及(ii)从对应的签名指纹生成的指纹DFAf-DFA,其中,所述非爆炸性正则表达式包括被确定为在所述合并期间不导致状态爆炸而形成所述组DFA的正则表达式,其中,所述签名指纹包括用于唯一识别爆炸性正则表达式的所述爆炸性正则表达式的片段,并且其中,所述爆炸性正则表达式包括被确定为在所述合并期间导致状态爆炸的正则表达式;
使用所述网络设备存储第二数据,所述第二数据用于定义所述爆炸性正则表达式的与所述组DFA分离的单独的DFA,
其中,所述签名指纹唯一识别生成所述单独的DFA的所述爆炸性正则表达式;
使用网络设备接收数据包;
使用所述网络设备在遍历所述单独的DFA之前遍历所述组DFA,以确定所述数据包是否包括由所述签名指纹定义的所述爆炸性正则表达式的片段;以及
基于所述数据包包括所述爆炸性正则表达式的片段的确定,使用所述网络设备遍历与所述签名指纹相关联的所述单独的DFA,以识别所述数据包所对应的所述网络应用程序。
2.根据权利要求1所述的方法,
其中,所述非爆炸性正则表达式定义与第一网络应用程序相关联的第一模式,
其中,所述爆炸性正则表达式定义与第二网络应用程序相关联的第二模式,
其中,所述组DFA包括第一多个互连节点,其中,所述第一多个互连节点中的至少一些包括转换节点的第一集合,所述第一多个互连节点中的一个包括第一末端节点,并且所述第一多个互连节点的另一个包括第二末端节点,其中,所述转换节点的第一集合均定义到达所述第一多个互连节点的另一个所通过的第一转换和与所述第一转换相关联的第一条件,其中,所述第一末端节点与所述非爆炸性DFA相关联,并识别所述第一网络应用程序,并且其中,所述第二末端节点与所述f-DFA相关联,并识别从所述爆炸性正则表达式生成的所述单独的DFA,以及
其中,所述单独的DFA包括第二多个互连节点,其中,所述第二多个互连节点中的至少一些包括转换节点的第二集合,并且所述第二多个互连节点的一个包括第三末端节点,其中,所述转换节点的第二集合均定义到达所述第二多个互连节点的另一个所通过的第二转换和与所述第二转换相关联的第二条件,其中,所述第三末端节点与所述非爆炸性DFA相关联,并识别所述第二网络应用程序。
3.根据权利要求2所述的方法,其中,遍历所述组DFA包括:
从所述数据包提取字符的字符串;
识别所提取的字符串中的第一个字符;
相对于所述转换节点的第一集合中的一个的所述第一条件估计所述第一个字符,以确定所述第一个字符是否满足与由所述转换节点的第一集合中的第一个定义的所述第一转换相关联的所述第一条件;
基于所述第一个字符满足与由所述转换节点的第一集合中的所述第一个定义的所述第一转换相关联的所述第一条件的确定,识别所述第一个字符之后的下一个字符;以及
基于所述第一个字符满足与由所述转换节点的第一集合中的所述第一个定义的所述第一转换相关联的所述第一条件的确定,遍历至由所述第一转换识别的所述第一多个互连节点中的下一个。
4.根据权利要求3所述的方法,
其中,所述第一多个互连节点的所述下一个包括所述第一末端节点,以及
其中,遍历所述组DFA进一步包括遍历所述组DFA以到达用于识别所述第一网络应用程序的所述第一末端节点,
所述方法进一步包括在到达所述第一末端节点时输出与所述第一网络应用程序相关联的第一应用程序标识符,以在不遍历所述单独的DFA的情况下将所述第一网络应用程序识别为所述数据包所对应的网络应用程序。
5.根据权利要求3所述的方法,
其中,所述第一多个互连节点的所述下一个包括所述第二末端节点,
其中,遍历所述组DFA进一步包括:
遍历所述组DFA以到达用于识别所述单独的DFA的所述第二末端节点;以及
在到达所述第二末端节点时,确定所述数据包包括由所述签名指纹定义的所述爆炸性正则表达式的片段,
其中,遍历所述单独的DFA包括:
在到达所述第二末端节点时,识别所提取的字符串中的所述第一个字符;
相对于所述转换节点的第二集合中的一个的所述第二条件估计所述第一个字符,以确定所述第一个字符是否满足与由所述转换节点的第二集合中的所述第一个定义的所述第二转换相关联的所述第二条件;
基于所述第一个字符满足与由所述转换节点的第二集合中的所述第一个定义的所述第二转换相关联的所述第二条件的确定,识别所述第一个字符之后的下一个字符;以及
基于所述第一个字符满足与由所述转换节点的第二集合中的所述第一个定义的所述第二转换相关联的所述第二条件的确定,遍历至由所述第二转换识别的所述第二多个互连节点中的下一个。
6.根据权利要求5所述的方法,其中所述第二多个互连节点的所述下一个包括所述第三末端节点,以及
其中,遍历所述单独的DFA进一步包括遍历所述单独的DFA以到达用于识别所述第二网络应用程序的所述第三末端节点,
所述方法进一步包括在到达所述第三末端节点时输出与所述第二网络应用程序相关联的第二应用程序标识符,以将所述第二网络应用程序识别为所述数据包所对应的网络应用程序。
7.根据权利要求1所述的方法,进一步包括:
确定所述数据包是否对应于新的流,其中,遍历所述组DFA包括基于所述数据包对应于新的流的确定遍历所述组DFA;以及
基于所述组DFA或所述单独的DFA的遍历,确定应用程序标识符,所述应用程序标识符用于识别所述数据包所对应的网络应用程序。
8.根据权利要求7所述的方法,
其中,所述网络设备包括路由器,以及
所述方法进一步包括:
基于所确定的应用程序标识符,从多个QoS等级中选择服务质量QoS等级;
将所选择的QoS等级与所述数据包所对应的数据包流相关联;以及
根据所选择的QoS等级转发所述数据包。
9.根据权利要求7所述的方法,
其中,所述网络设备包括入侵侦测与防御IDP设备,以及
所述方法进一步包括:
基于所确定的应用程序标识符,从多个协议子集中选择一个协议子集,其中,所述多个协议子集中的每一个均指定多个攻击模式中的一个或多个的不同集合;
将所选择的协议子集与所述数据包所对应的数据包流相关联;
将由所选择的策略指定的所述多个攻击模式中的一个或多个的集合应用于所述数据包;以及
基于由所选择的策略指定的所述多个攻击模式中的一个或多个的集合的应用程序,转发所述数据包。
10.一种用于识别网络应用程序的网络设备,所述网络设备包括:
控制单元,存储第一数据,所述第一数据用于定义组确定型有限自动机DFA,其中,所述组DFA是通过以下合并而形成的:(i)从对应的非爆炸性正则表达式生成的单独的非爆炸性DFA,以及(ii)从对应的签名指纹生成的指纹DFA f-DFA,其中,所述非爆炸性正则表达式包括被确定为在所述合并期间不导致状态爆炸而形成所述组DFA的正则表达式,其中,所述签名指纹包括用于唯一识别爆炸性正则表达式的所述爆炸性正则表达式中的片段,并且其中,所述爆炸性正则表达式包括被确定为在所述合并期间导致状态爆炸的正则表达式,以及存储第二数据,所述第二数据用于定义所述爆炸性正则表达式的与所述组DFA分离的单独的DFA,其中,所述签名指纹唯一识别生成所述单独的DFA的所述爆炸性正则表达式;
至少一个接口卡,用于接收数据包;
其中,所述控制单元在遍历所述单独的DFA之前遍历所述组DFA,以确定所述数据包是否包括由所述签名指纹定义的所述爆炸性正则表达式的片段,以及基于所述数据包包括所述爆炸性正则表达式的片段的确定,遍历与所述签名指纹相关联的所述单独的DFA,以识别所述数据包所对应的所述网络应用程序。
11.根据权利要求10所述的网络设备,
其中,所述非爆炸性正则表达式定义与第一网络应用程序相关联的第一模式,
其中,所述爆炸性正则表达式定义与第二网络应用程序相关联的第二模式,
其中,所述组DFA包括第一多个互连节点,其中,所述第一多个互连节点中的至少一些包括转换节点的第一集合,所述第一多个互连节点中的一个包括第一末端节点,并且所述第一多个互连节点的另一个包括第二末端节点,其中,所述转换节点的第一集合均定义到达所述第一多个互连节点的另一个所通过的第一转换和与所述第一转换相关联的第一条件,其中,所述第一末端节点与所述非爆炸性DFA相关联,并识别所述第一网络应用程序,并且其中,所述第二末端节点与所述f-DFA相关联,并识别从所述爆炸性正则表达式生成的所述单独的DFA,以及
其中,所述单独的DFA包括第二多个互连节点,其中,所述第二多个互连节点中的至少一些包括转换节点的第二集合,并且所述第二多个互连节点的一个包括第三末端节点,其中,所述转换节点的第二集合均定义到达所述第二多个互连节点的另一个所通过的第二转换和与所述第二转换相关联的第二条件,其中,所述第三末端节点与所述非爆炸性DFA相关联,并识别所述第二网络应用程序。
12.根据权利要求11所述的网络设备,其中,所述控制单元包括应用程序识别AI模块,所述应用程序识别模块从所述数据包提取字符的字符串;识别所提取的字符串中的第一个字符;相对于所述转换节点的第一集合中的一个的所述第一条件估计所述第一个字符,以确定所述第一个字符是否满足与由所述转换节点的第一集合中的第一个定义的所述第一转换相关联的所述第一条件;基于所述第一个字符满足与由所述转换节点的第一集合中的所述第一个定义的所述第一转换相关联的所述第一条件的确定,识别所述第一个字符之后的下一个字符;以及基于所述第一个字符满足与由所述转换节点的第一集合中的所述第一个定义的所述第一转换相关联的所述第一条件的确定,遍历至由所述第一转换识别的所述第一多个互连节点中的下一个。
13.根据权利要求12所述的网络设备,
其中,所述第一多个互连节点的所述下一个包括所述第一末端节点,以及
其中,所述AI模块还遍历所述组DFA以到达用于识别所述第一网络应用程序的所述第一末端节点;并且在到达所述第一末端节点时输出与所述第一网络应用程序相关联的第一应用程序标识符,以在不遍历所述单独的DFA的情况下将所述第一网络应用程序识别为所述数据包所对应的网络应用程序。
14.根据权利要求12所述的网络设备,
其中,所述第一多个互连节点的所述下一个包括所述第二末端节点,
其中,所述AI模块还遍历所述组以到达用于识别所述单独的DFA的所述第二末端节点;在到达所述第二末端节点时,确定所述数据包包括由所述签名指纹定义的所述爆炸性正则表达式的片段;在到达所述第二末端节点时,识别所提取的字符串中的所述第一个字符;相对于所述转换节点的第二集合中的一个的所述第二条件估计所述第一个字符,以确定所述第一个字符是否满足与由所述转换节点的第二集合中的所述第一个定义的所述第二转换相关联的所述第二条件;基于所述第一个字符满足与由所述转换节点的第二集合中的所述第一个定义的所述第二转换相关联的所述第二条件的确定,识别所述第一个字符之后的下一个字符;以及基于所述第一个字符满足与
由所述转换节点的第二集合中的所述第一个定义的所述第二转换相关联的所述第二条件的确定,遍历至由所述第二转换识别的所述第二多个互连节点中的下一个。
15.根据权利要求14所述的网络设备,其中所述第二多个互连节点的所述下一个包括所述第三末端节点,以及
其中,所述AI模块进一步遍历所述单独的DFA以到达用于识别所述第二网络应用程序的所述第三末端节点,在到达所述第三末端节点时输出与所述第二网络应用程序相关联的第二应用程序标识符,以将所述第二网络应用程序识别为所述数据包所对应的网络应用程序。
16.根据权利要求10所述的网络设备,
其中,所述控制单元确定所述数据包是否对应于新的流,
其中,所述控制单元包括应用程序识别AI模块,所述应用程序识别模块基于所述数据包对应于新的流的确定遍历所述组DFA,并基于所述组DFA或所述单独的DFA的遍历,确定应用程序标识符,所述应用程序标识符用于识别所述数据包所对应的网络应用程序。
17.根据权利要求16所述的网络设备,
其中,所述网络设备包括路由器,
其中,所述控制单元进一步基于所确定的应用程序标识符,从多个QoS等级中选择服务质量QoS等级,并将所选择的QoS等级与所述数据包对应的数据包流相关联,以及
所述网络设备进一步包括转发面,所述转发面根据所选择的QoS等级转发所述数据包。
18.根据权利要求16所述的网络设备,
其中,所述网络设备包括入侵侦测与防御IDP设备,以及
所述控制单元进一步包括:
分类模块,基于所确定的应用程序标识符,从多个协议子集中选择一个协议子集,其中,所述多个协议子集中的每一个均指定多个攻击模式中的一个或多个的不同集合,并将所选择的协议子集与所述数据包对应的数据包流相关联;以及
服务引擎,将由所选择的策略指定的所述多个攻击模式中的一个或多个的集合应用于所述数据包;并基于由所选择的策略指定的所述多个攻击模式中的一个或多个的集合的应用程序,转发所述数据包。
19.一种用于生成组确定型有限自动机的方法,所述方法包括:
使用计算设备存储用于定义多个正则表达式的数据;
确定所述多个正则表达式中的每一个是否导致状态爆炸;
基于所述确定,使用所述计算设备将所述多个正则表达式中的每一个分类为非爆炸性或爆炸性,其中,所述多个正则表达式中的一个被分类为非爆炸性正则表达式,所述多个正则表达式中的另一个被分类为爆炸性正则表达式;
使用所述计算设备从所述爆炸性正则表达式提取每个所述爆炸性正则表达式的对应的签名指纹,其中,所述签名指纹包括用于唯一识别所述爆炸性正则表达式中对应的一个的所述爆炸性正则表达式中的对应的一个中的片段;
使用所述计算设备从被分类为非爆炸性的所述多个正则表达式中的每一个生成非爆炸性确定型有限自动机DFA;
使用所述计算设备从被分类为爆炸性的所述多个正则表达式中的每一个生成单独的DFA;
使用所述计算设备从被分类为爆炸性的所述多个正则表达式中的对应的一个提取的每个所述签名指纹生成指纹DFAf-DFA;以及
使用所述计算设备,将所述非爆炸性确定型有限自动机DFA与所述f-DFA合并以生成组DFA,其中,所述组DFA包括至少一个节点,用于识别所述单独的DFA,从而将所述组DFA连接到所述单独的DFA。
20.根据权利要求19所述的方法,其中,确定所述多个正则表达式中的每一个是否导致状态爆炸包括:
从所述多个正则表达式中的一个生成临时DFA;
根据包括在所述临时DFA内的多个节点确定所述临时DFA的第一大小;
根据包括在测试DFA内的多个节点确定所述测试DFA的第二大小;
将所述临时DFA与所述测试DFA合并以生成合并的DFA;
根据包括在所述合并的DFA内的多个节点确定所述合并的DFA的第三大小;
将为所述合并的DFA确定的所述第三大小与为所述临时DFA确定的所述第一大小和为所述测试DFA确定的所述第二大小分别进行比较;以及
基于所述比较,确定所述多个正则表达式中的一个导致状态爆炸。
21.根据权利要求20所述的方法,
其中,比较所述第三大小包括通过将为所述合并的DFA确定的所述第三大小除以为所述临时DFA和所述测试DFA分别确定的所述第一大小和所述第二大小相加的和来计算爆炸因子betaβ,以及
其中,确定所述多个正则表达式中的一个导致状态爆炸,包括:
当所述爆炸因子betaβ大于1时,确定所述多个正则表达式中的一个导致状态爆炸;以及
当所述爆炸因子betaβ小于或等于1时,确定所述多个正则表达式中的一个不导致状态爆炸。
22.根据权利要求19所述的方法,其中,提取所述对应的签名指纹包括:
对被分类为爆炸性的所述多个正则表达式中的一个的开始部分进行分析,以确定所述开始部分是否满足符合所述签名指纹的第一要求;
基于所述开始部分不符合的确定,对所述多个正则表达式中的所述一个的结束部分进行分析,以确定所述结束部分是否满足符合所述签名指纹的所述第一要求;
基于所述结束部分不符合的确定,对被分类为爆炸性的所述多个正则表达式中的所述一个的中间部分进行分析,以确定所述中间部分是否满足符合所述签名指纹的不同于所述第一要求的第二要求;
基于所述中间部分不符合的确定,迭代地分析所述多个正则表达式中的一个,直至所述多个正则表达式的所述一个的开始部分、结束部分或中间部分满足概率要求;以及
在确定各部分满足所述第一要求、所述第二要求或所述概率要求时,就提取分析中的所述多个正则表达式中的所述一个的开始部分、结束部分或中间部分。
23.根据权利要求19所述的方法,其中,生成每个所述非爆炸性DFA、每个所述f-DFA和每个所述单独的DFA包括:
根据Thompson算法或Glushkov算法,从所述多个正则表达式中的各自的一个生成非确定型有限自动机NFA;以及
根据子集算法将所述NFA转换成所述非爆炸性DFA、所述f-DFA和所述单独的DFA中的对应的一个的每一个的非最小化版本;以及
根据Hopcropt算法最小化每个所述非最小化版本,以生成所述非爆炸性DFA、所述f-DFA和所述单独的DFA中的每一个。
24.根据权利要求19所述的方法,进一步包括在从所述多个正则表达式生成所述组DFA和所述单独的DFA之后,将所述组DFA和所述单独的DFA自动地转发到一个或多个网络设备,以使用所述多个正则表达式更新包括在每个所述网络设备内的应用程序识别模块。
25.一种用于生成组确定型有限自动机的计算设备,所述计算设备包括:
控制单元,存储用于定义多个正则表达式的数据,
其中,所述控制单元包括:
分类模块,确定所述多个正则表达式中的每一个是否导致状态爆炸,并基于所述确定,将所述多个正则表达式中的每一个分类为非爆炸性或爆炸性,其中,所述多个正则表达式中的一个被分类为非爆炸性正则表达式,所述多个正则表达式中的另一个被分类为爆炸性正则表达式;
指纹提取模块,从所述爆炸性正则表达式提取每个所述爆炸性正则表达式的对应的签名指纹,其中,所述签名指纹包括用于唯一识别爆炸性正则表达式中对应的一个的所述爆炸性正则表达式中的对应的一个中的片段;
确定型有限自动机DFA构造模块,从被分类为非爆炸性的所述多个正则表达式中的每一个生成非爆炸性DFA,从被分类为爆炸性的所述多个正则表达式中的每一个生成单独的DFA,并从被分类为爆炸性的所述多个正则表达式中的对应的一个提取的每个所述签名指纹生成指纹DFA f-DFA;以及
DFA合并模块,将所述非爆炸性DFA与所述f-DFA合并以生成组DFA,其中,所述组DFA包括至少一个节点,用于识别所述单独的DFA,从而将所述组DFA连接到所述单独的DFA。
26.根据权利要求25所述的计算设备,其中,所述分类模块进一步从所述多个正则表达式中的一个生成临时DFA,根据包括在所述临时DFA内的多个节点确定所述临时DFA的第一大小,根据包括在测试DFA内的多个节点确定所述测试DFA的第二大小,将所述临时DFA与所述测试DFA合并以生成合并的DFA,根据包括在所述合并的DFA内的多个节点确定所述合并的DFA的第三大小,将为所述合并的DFA确定的所述第三大小与为所述临时DFA确定的所述第一大小和为所述测试DFA确定的所述第二大小分别进行比较;以及基于所述比较,确定所述多个正则表达式中的一个导致状态爆炸。
27.根据权利要求26所述的计算设备,
其中,所述分类模块还通过将为所述合并的DFA确定的所述第三大小除以为所述临时DFA和所述测试DFA分别确定的所述第一大小和所述第二大小相加的和来计算爆炸因子betaβ,当所述爆炸因子betaβ大于1时,确定所述多个正则表达式中的一个导致状态爆炸,以及当所述爆炸因子betaβ小于或等于1时,确定所述多个正则表达式中的一个不导致状态爆炸。
28.根据权利要求25所述的计算设备,其中,进一步地,所述指纹提取模块对被分类为爆炸性的所述多个正则表达式中的一个的开始部分进行分析,以确定所述开始部分是否满足符合所述签名指纹的第一要求,基于所述开始部分不符合的确定,对所述多个正则表达式中的所述一个的结束部分进行分析,以确定所述结束部分是否满足符合所述签名指纹的所述第一要求,基于所述结束部分不符合的确定,对被分类为爆炸性的所述多个正则表达式中的所述一个的中间部分进行分析,以确定所述中间部分是否满足符合签名指纹的不同于所述第一要求的第二要求,基于所述中间部分不符合的确定,迭代地分析所述多个正则表达式中的一个,直至所述多个正则表达式的所述一个的开始部分、结束部分或中间部分满足概率要求,以及在确定各部分满足所述第一要求、所述第二要求或所述概率要求时,就提取分析中的所述多个正则表达式中的所述一个的开始部分、结束部分或中间部分。
29.根据权利要求25所述的计算设备,其中,所述DFA构造模块进一步根据Thompson算法或Glushkov算法,从所述多个正则表达式中的各自的一个生成非确定型有限自动机NFA,并根据子集算法将所述NFA转换成所述非爆炸性DFA、所述f-DFA和所述单独的DFA中的对应的一个的每一个的非最小化版本,并根据Hopcropt算法最小化每个所述非最小化版本,以生成所述非爆炸性DFA、所述f-DFA和所述单独的DFA中的每一个。
30.根据权利要求25所述的计算设备,其中,进一步地,所述控制单元在从所述多个正则表达式生成所述组DFA和所述单独的DFA之后,将所述组DFA和所述单独的DFA自动地转发到一个或多个网络设备,以使用所述多个正则表达式更新包括在每个所述网络设备内的应用程序识别模块。
31.一种用于识别模式的方法,所述方法包括:
使用网络设备存储第一数据,所述第一数据用于定义组确定型有限自动机DFA,其中,所述组DFA是通过以下合并而形成的:(i)从对应的非爆炸性正则表达式生成的单独的非爆炸性DFA,以及(ii)从对应的签名指纹生成的指纹DFA f-DFA,其中,所述非爆炸性正则表达式包括被确定为在所述合并期间不导致状态爆炸而形成所述组DFA的正则表达式,其中,所述签名指纹包括用于唯一识别爆炸性正则表达式的所述爆炸性正则表达式中的片段,并且其中,所述爆炸性正则表达式包括被确定为在所述合并期间导致状态爆炸的正则表达式;
使用所述网络设备存储第二数据,所述第二数据用于定义所述爆炸性正则表达式的与所述组DFA分离的单独的DFA,其中,所述签名指纹唯一识别生成所述单独的DFA的所述爆炸性正则表达式;
使用网络设备接收数据包;
在遍历所述单独的DFA之前,使用所述网络设备遍历所述组DFA,以确定所述数据包是否包括由所述签名指纹定义的所述爆炸性正则表达式的片段;以及
基于所述数据包包括所述爆炸性正则表达式的片段的确定,使用所述网络设备遍历与所述签名指纹相关联的所述单独的DFA,以识别由所述爆炸性正则表达式所识别的模式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/361,364 | 2009-01-28 | ||
US12/361,364 US20100192225A1 (en) | 2009-01-28 | 2009-01-28 | Efficient application identification with network devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101827084A CN101827084A (zh) | 2010-09-08 |
CN101827084B true CN101827084B (zh) | 2013-03-13 |
Family
ID=42167671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101116257A Expired - Fee Related CN101827084B (zh) | 2009-01-28 | 2010-01-28 | 网络设备的高效的应用程序识别 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20100192225A1 (zh) |
EP (1) | EP2214115B1 (zh) |
CN (1) | CN101827084B (zh) |
AT (1) | ATE511149T1 (zh) |
Families Citing this family (295)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8028090B2 (en) | 2008-11-17 | 2011-09-27 | Amazon Technologies, Inc. | Request routing utilizing client location information |
US7991910B2 (en) | 2008-11-17 | 2011-08-02 | Amazon Technologies, Inc. | Updating routing information based on client location |
US7970820B1 (en) | 2008-03-31 | 2011-06-28 | Amazon Technologies, Inc. | Locality based content distribution |
US8156243B2 (en) | 2008-03-31 | 2012-04-10 | Amazon Technologies, Inc. | Request routing |
US8533293B1 (en) | 2008-03-31 | 2013-09-10 | Amazon Technologies, Inc. | Client side cache management |
US7962597B2 (en) | 2008-03-31 | 2011-06-14 | Amazon Technologies, Inc. | Request routing based on class |
US8321568B2 (en) | 2008-03-31 | 2012-11-27 | Amazon Technologies, Inc. | Content management |
US8447831B1 (en) | 2008-03-31 | 2013-05-21 | Amazon Technologies, Inc. | Incentive driven content delivery |
US8601090B1 (en) | 2008-03-31 | 2013-12-03 | Amazon Technologies, Inc. | Network resource identification |
US8606996B2 (en) | 2008-03-31 | 2013-12-10 | Amazon Technologies, Inc. | Cache optimization |
US9407681B1 (en) | 2010-09-28 | 2016-08-02 | Amazon Technologies, Inc. | Latency measurement in resource requests |
US7925782B2 (en) | 2008-06-30 | 2011-04-12 | Amazon Technologies, Inc. | Request routing using network computing components |
US9912740B2 (en) | 2008-06-30 | 2018-03-06 | Amazon Technologies, Inc. | Latency measurement in resource requests |
DE102008041370A1 (de) * | 2008-08-20 | 2010-02-25 | Robert Bosch Gmbh | Elektrowerkzeug |
GB2463284B (en) * | 2008-09-08 | 2011-11-23 | Qinetiq Ltd | Thermal emissive apparatus |
US8060616B1 (en) | 2008-11-17 | 2011-11-15 | Amazon Technologies, Inc. | Managing CDN registration by a storage provider |
US8521880B1 (en) | 2008-11-17 | 2013-08-27 | Amazon Technologies, Inc. | Managing content delivery network service providers |
US8732309B1 (en) | 2008-11-17 | 2014-05-20 | Amazon Technologies, Inc. | Request routing utilizing cost information |
US8065417B1 (en) | 2008-11-17 | 2011-11-22 | Amazon Technologies, Inc. | Service provider registration by a content broker |
US8122098B1 (en) | 2008-11-17 | 2012-02-21 | Amazon Technologies, Inc. | Managing content delivery network service providers by a content broker |
US8073940B1 (en) | 2008-11-17 | 2011-12-06 | Amazon Technologies, Inc. | Managing content delivery network service providers |
US8412823B1 (en) | 2009-03-27 | 2013-04-02 | Amazon Technologies, Inc. | Managing tracking information entries in resource cache components |
US8756341B1 (en) | 2009-03-27 | 2014-06-17 | Amazon Technologies, Inc. | Request routing utilizing popularity information |
US8688837B1 (en) | 2009-03-27 | 2014-04-01 | Amazon Technologies, Inc. | Dynamically translating resource identifiers for request routing using popularity information |
US8521851B1 (en) | 2009-03-27 | 2013-08-27 | Amazon Technologies, Inc. | DNS query processing using resource identifiers specifying an application broker |
EP2804350B1 (en) | 2009-04-01 | 2019-07-24 | Nicira, Inc. | Method and apparatus for implementing and managing virtual switches |
US7957319B2 (en) * | 2009-05-08 | 2011-06-07 | Blue Coat Systems, Inc. | Classification techniques for encrypted network traffic |
US8782236B1 (en) | 2009-06-16 | 2014-07-15 | Amazon Technologies, Inc. | Managing resources using resource expiration data |
US8898247B2 (en) * | 2009-06-17 | 2014-11-25 | Telefonaktiebolaget L M Ericsson (Publ) | Network cache architecture storing pointer information in payload data segments of packets |
US8625440B2 (en) * | 2009-07-31 | 2014-01-07 | Alcatel Lucent | System and method for controlling parameters for applications serviced in a best effort communication link |
US8397073B1 (en) | 2009-09-04 | 2013-03-12 | Amazon Technologies, Inc. | Managing secure content in a content delivery network |
US8433771B1 (en) | 2009-10-02 | 2013-04-30 | Amazon Technologies, Inc. | Distribution network with forward resource propagation |
GB0919253D0 (en) | 2009-11-03 | 2009-12-16 | Cullimore Ian | Atto 1 |
US9495338B1 (en) | 2010-01-28 | 2016-11-15 | Amazon Technologies, Inc. | Content distribution network |
US8630290B1 (en) * | 2010-04-15 | 2014-01-14 | ARRIS Enterprise, Inc. | Using a DFA unit for classification list processing |
JP5543666B2 (ja) * | 2010-04-30 | 2014-07-09 | インターデイジタル パテント ホールディングス インコーポレイテッド | ネットワーク通信における軽量プロトコルおよびエージェント |
US8867552B2 (en) | 2010-05-03 | 2014-10-21 | Brocade Communications Systems, Inc. | Virtual cluster switching |
US9769016B2 (en) | 2010-06-07 | 2017-09-19 | Brocade Communications Systems, Inc. | Advanced link tracking for virtual cluster switching |
US9716672B2 (en) | 2010-05-28 | 2017-07-25 | Brocade Communications Systems, Inc. | Distributed configuration management for virtual cluster switching |
US8964528B2 (en) | 2010-07-06 | 2015-02-24 | Nicira, Inc. | Method and apparatus for robust packet distribution among hierarchical managed switching elements |
US8717895B2 (en) | 2010-07-06 | 2014-05-06 | Nicira, Inc. | Network virtualization apparatus and method with a table mapping engine |
US9525647B2 (en) | 2010-07-06 | 2016-12-20 | Nicira, Inc. | Network control apparatus and method for creating and modifying logical switching elements |
US9680750B2 (en) | 2010-07-06 | 2017-06-13 | Nicira, Inc. | Use of tunnels to hide network addresses |
US10103939B2 (en) | 2010-07-06 | 2018-10-16 | Nicira, Inc. | Network control apparatus and method for populating logical datapath sets |
US9807031B2 (en) | 2010-07-16 | 2017-10-31 | Brocade Communications Systems, Inc. | System and method for network configuration |
US8756272B1 (en) | 2010-08-26 | 2014-06-17 | Amazon Technologies, Inc. | Processing encoded content |
US8938526B1 (en) | 2010-09-28 | 2015-01-20 | Amazon Technologies, Inc. | Request routing management based on network components |
US9003035B1 (en) | 2010-09-28 | 2015-04-07 | Amazon Technologies, Inc. | Point of presence management in request routing |
US8468247B1 (en) | 2010-09-28 | 2013-06-18 | Amazon Technologies, Inc. | Point of presence management in request routing |
US9712484B1 (en) | 2010-09-28 | 2017-07-18 | Amazon Technologies, Inc. | Managing request routing information utilizing client identifiers |
US8930513B1 (en) | 2010-09-28 | 2015-01-06 | Amazon Technologies, Inc. | Latency measurement in resource requests |
US8819283B2 (en) | 2010-09-28 | 2014-08-26 | Amazon Technologies, Inc. | Request routing in a networked environment |
US10958501B1 (en) | 2010-09-28 | 2021-03-23 | Amazon Technologies, Inc. | Request routing information based on client IP groupings |
US8577992B1 (en) | 2010-09-28 | 2013-11-05 | Amazon Technologies, Inc. | Request routing management based on network components |
US10097398B1 (en) | 2010-09-28 | 2018-10-09 | Amazon Technologies, Inc. | Point of presence management in request routing |
US8924528B1 (en) | 2010-09-28 | 2014-12-30 | Amazon Technologies, Inc. | Latency measurement in resource requests |
JP5682208B2 (ja) | 2010-10-04 | 2015-03-11 | ソニー株式会社 | 通信装置、通信制御方法及び通信システム |
CN102075511B (zh) * | 2010-11-01 | 2014-05-14 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据匹配设备和方法以及网络入侵检测设备和方法 |
US8875276B2 (en) * | 2011-09-02 | 2014-10-28 | Iota Computing, Inc. | Ultra-low power single-chip firewall security device, system and method |
US20120110003A1 (en) * | 2010-11-03 | 2012-05-03 | Microsoft Corporation | Conditional execution of regular expressions |
US8452874B2 (en) | 2010-11-22 | 2013-05-28 | Amazon Technologies, Inc. | Request routing processing |
US8825884B2 (en) | 2010-11-30 | 2014-09-02 | Huawei Technologies Co., Ltd. | Method and device for protocol identification |
CN102045347B (zh) * | 2010-11-30 | 2013-08-07 | 华为技术有限公司 | 协议识别方法和装置 |
US9391949B1 (en) | 2010-12-03 | 2016-07-12 | Amazon Technologies, Inc. | Request routing processing |
US8626950B1 (en) | 2010-12-03 | 2014-01-07 | Amazon Technologies, Inc. | Request routing processing |
CN102111402B (zh) * | 2010-12-17 | 2015-06-10 | 曙光信息产业(北京)有限公司 | 一种对正则式dfa分组的方法 |
CN102075566A (zh) * | 2010-12-24 | 2011-05-25 | 华为技术有限公司 | 业务的分流处理方法、通信设备及网络系统 |
US9119109B1 (en) * | 2010-12-30 | 2015-08-25 | Dell Software Inc. | Method and an apparatus to perform multi-connection traffic analysis and management |
US9191327B2 (en) | 2011-02-10 | 2015-11-17 | Varmour Networks, Inc. | Distributed service processing of network gateways using virtual machines |
US9398033B2 (en) | 2011-02-25 | 2016-07-19 | Cavium, Inc. | Regular expression processing automaton |
US20120268271A1 (en) * | 2011-04-19 | 2012-10-25 | Mcmullin Dale Robert | Methods and systems for detecting compatibility issues within an electrical grid control system |
CN102184197B (zh) * | 2011-04-22 | 2012-10-10 | 湖南亿谷信息科技发展有限公司 | 基于智能有限自动机的正则表达式匹配方法 |
US10467042B1 (en) | 2011-04-27 | 2019-11-05 | Amazon Technologies, Inc. | Optimized deployment based upon customer locality |
US9043452B2 (en) | 2011-05-04 | 2015-05-26 | Nicira, Inc. | Network control apparatus and method for port isolation |
US9858051B2 (en) * | 2011-06-24 | 2018-01-02 | Cavium, Inc. | Regex compiler |
US8990259B2 (en) | 2011-06-24 | 2015-03-24 | Cavium, Inc. | Anchored patterns |
JP2014527733A (ja) * | 2011-06-29 | 2014-10-16 | ベリサイン・インコーポレイテッド | データ・プレーン・パケット処理ツール・チェーン |
US8954700B2 (en) | 2011-08-02 | 2015-02-10 | Cavium, Inc. | Method and apparatus for managing processing thread migration between clusters within a processor |
CN106850444B (zh) | 2011-08-17 | 2020-10-27 | Nicira股份有限公司 | 逻辑l3路由 |
US8904216B2 (en) | 2011-09-02 | 2014-12-02 | Iota Computing, Inc. | Massively multicore processor and operating system to manage strands in hardware |
US9450870B2 (en) | 2011-11-10 | 2016-09-20 | Brocade Communications Systems, Inc. | System and method for flow management in software-defined networks |
US9203805B2 (en) * | 2011-11-23 | 2015-12-01 | Cavium, Inc. | Reverse NFA generation and processing |
CN102457415B (zh) | 2011-12-27 | 2015-08-19 | 华为数字技术(成都)有限公司 | Ips检测处理方法、网络安全设备和系统 |
US8904009B1 (en) | 2012-02-10 | 2014-12-02 | Amazon Technologies, Inc. | Dynamic content delivery |
US10021179B1 (en) | 2012-02-21 | 2018-07-10 | Amazon Technologies, Inc. | Local resource delivery network |
US9172674B1 (en) | 2012-03-21 | 2015-10-27 | Amazon Technologies, Inc. | Managing request routing information utilizing performance information |
US10623408B1 (en) | 2012-04-02 | 2020-04-14 | Amazon Technologies, Inc. | Context sensitive object management |
US9374301B2 (en) * | 2012-05-18 | 2016-06-21 | Brocade Communications Systems, Inc. | Network feedback in software-defined networks |
US9154551B1 (en) | 2012-06-11 | 2015-10-06 | Amazon Technologies, Inc. | Processing DNS queries to identify pre-processing information |
US8793251B2 (en) | 2012-07-31 | 2014-07-29 | Hewlett-Packard Development Company, L.P. | Input partitioning and minimization for automaton implementations of capturing group regular expressions |
US9525659B1 (en) | 2012-09-04 | 2016-12-20 | Amazon Technologies, Inc. | Request routing utilizing point of presence load information |
US9135048B2 (en) | 2012-09-20 | 2015-09-15 | Amazon Technologies, Inc. | Automated profiling of resource usage |
US9323577B2 (en) | 2012-09-20 | 2016-04-26 | Amazon Technologies, Inc. | Automated profiling of resource usage |
US20150193617A1 (en) * | 2012-09-25 | 2015-07-09 | Mitsubishi Electric Corporation | Signature verification device, signature verification method, and program |
US9258313B1 (en) | 2012-09-28 | 2016-02-09 | Juniper Networks, Inc. | Distributed application awareness |
US9268881B2 (en) | 2012-10-19 | 2016-02-23 | Intel Corporation | Child state pre-fetch in NFAs |
US9401872B2 (en) | 2012-11-16 | 2016-07-26 | Brocade Communications Systems, Inc. | Virtual link aggregations across multiple fabric switches |
US9117170B2 (en) | 2012-11-19 | 2015-08-25 | Intel Corporation | Complex NFA state matching method that matches input symbols against character classes (CCLs), and compares sequence CCLs in parallel |
US8904526B2 (en) * | 2012-11-20 | 2014-12-02 | Bank Of America Corporation | Enhanced network security |
US9665664B2 (en) | 2012-11-26 | 2017-05-30 | Intel Corporation | DFA-NFA hybrid |
US9304768B2 (en) | 2012-12-18 | 2016-04-05 | Intel Corporation | Cache prefetch for deterministic finite automaton instructions |
US9251440B2 (en) * | 2012-12-18 | 2016-02-02 | Intel Corporation | Multiple step non-deterministic finite automaton matching |
US10205698B1 (en) | 2012-12-19 | 2019-02-12 | Amazon Technologies, Inc. | Source-dependent address resolution |
JPWO2014112616A1 (ja) * | 2013-01-21 | 2017-01-19 | 日本電気株式会社 | 制御装置、通信装置、通信システム、スイッチの制御方法及びプログラム |
US9268570B2 (en) | 2013-01-23 | 2016-02-23 | Intel Corporation | DFA compression and execution |
US9565099B2 (en) | 2013-03-01 | 2017-02-07 | Brocade Communications Systems, Inc. | Spanning tree in fabric switches |
US9794169B2 (en) * | 2013-03-15 | 2017-10-17 | Aerohive Networks, Inc. | Application based data traffic routing using network tunneling |
CN103312627B (zh) * | 2013-05-30 | 2015-06-10 | 中国人民解放军国防科学技术大学 | 基于两级存储的正则表达式匹配方法 |
US9294391B1 (en) | 2013-06-04 | 2016-03-22 | Amazon Technologies, Inc. | Managing network computing components utilizing request routing |
US9887960B2 (en) | 2013-08-14 | 2018-02-06 | Nicira, Inc. | Providing services for logical networks |
US9952885B2 (en) | 2013-08-14 | 2018-04-24 | Nicira, Inc. | Generation of configuration files for a DHCP module executing within a virtualized container |
US9563399B2 (en) | 2013-08-30 | 2017-02-07 | Cavium, Inc. | Generating a non-deterministic finite automata (NFA) graph for regular expression patterns with advanced features |
US9426166B2 (en) | 2013-08-30 | 2016-08-23 | Cavium, Inc. | Method and apparatus for processing finite automata |
US9426165B2 (en) * | 2013-08-30 | 2016-08-23 | Cavium, Inc. | Method and apparatus for compilation of finite automata |
US9577845B2 (en) | 2013-09-04 | 2017-02-21 | Nicira, Inc. | Multiple active L3 gateways for logical networks |
US9503371B2 (en) | 2013-09-04 | 2016-11-22 | Nicira, Inc. | High availability L3 gateways for logical networks |
US9258273B2 (en) * | 2013-10-03 | 2016-02-09 | Mcafee, Inc. | Duplicating packets efficiently within a network security appliance |
US10063458B2 (en) | 2013-10-13 | 2018-08-28 | Nicira, Inc. | Asymmetric connection with external networks |
US9910686B2 (en) | 2013-10-13 | 2018-03-06 | Nicira, Inc. | Bridging between network segments with a logical router |
US9912612B2 (en) | 2013-10-28 | 2018-03-06 | Brocade Communications Systems LLC | Extended ethernet fabric switches |
US9887881B2 (en) * | 2013-10-30 | 2018-02-06 | Cisco Technology, Inc. | DNS-assisted application identification |
CN104601526B (zh) | 2013-10-31 | 2018-01-09 | 华为技术有限公司 | 一种冲突检测及解决的方法、装置 |
US9325735B1 (en) | 2013-10-31 | 2016-04-26 | Palo Alto Networks, Inc. | Selective sinkholing of malware domains by a security device via DNS poisoning |
EP2871816B1 (en) * | 2013-11-11 | 2016-03-09 | 51 Degrees Mobile Experts Limited | Identifying properties of a communication device |
WO2015084360A1 (en) * | 2013-12-05 | 2015-06-11 | Hewlett-Packard Development Company, L.P. | Regular expression matching |
US9419943B2 (en) | 2013-12-30 | 2016-08-16 | Cavium, Inc. | Method and apparatus for processing of finite automata |
WO2015100615A1 (zh) * | 2013-12-31 | 2015-07-09 | 华为技术有限公司 | 处理业务报文的方法、装置和网关设备 |
US9275336B2 (en) | 2013-12-31 | 2016-03-01 | Cavium, Inc. | Method and system for skipping over group(s) of rules based on skip group rule |
US9544402B2 (en) | 2013-12-31 | 2017-01-10 | Cavium, Inc. | Multi-rule approach to encoding a group of rules |
US9667446B2 (en) | 2014-01-08 | 2017-05-30 | Cavium, Inc. | Condition code approach for comparing rule and packet data that are provided in portions |
US9602532B2 (en) | 2014-01-31 | 2017-03-21 | Cavium, Inc. | Method and apparatus for optimizing finite automata processing |
US9904630B2 (en) | 2014-01-31 | 2018-02-27 | Cavium, Inc. | Finite automata processing based on a top of stack (TOS) memory |
US9548873B2 (en) | 2014-02-10 | 2017-01-17 | Brocade Communications Systems, Inc. | Virtual extensible LAN tunnel keepalives |
US10264025B2 (en) | 2016-06-24 | 2019-04-16 | Varmour Networks, Inc. | Security policy generation for virtualization, bare-metal server, and cloud computing environments |
US10091238B2 (en) | 2014-02-11 | 2018-10-02 | Varmour Networks, Inc. | Deception using distributed threat detection |
US9973472B2 (en) | 2015-04-02 | 2018-05-15 | Varmour Networks, Inc. | Methods and systems for orchestrating physical and virtual switches to enforce security boundaries |
US9590901B2 (en) | 2014-03-14 | 2017-03-07 | Nicira, Inc. | Route advertisement by managed gateways |
US9419855B2 (en) | 2014-03-14 | 2016-08-16 | Nicira, Inc. | Static routes for logical routers |
US9225597B2 (en) | 2014-03-14 | 2015-12-29 | Nicira, Inc. | Managed gateways peering with external router to attract ingress packets |
US9313129B2 (en) | 2014-03-14 | 2016-04-12 | Nicira, Inc. | Logical router processing by network controller |
US10581758B2 (en) | 2014-03-19 | 2020-03-03 | Avago Technologies International Sales Pte. Limited | Distributed hot standby links for vLAG |
US10476698B2 (en) | 2014-03-20 | 2019-11-12 | Avago Technologies International Sales Pte. Limited | Redundent virtual link aggregation group |
US9503321B2 (en) | 2014-03-21 | 2016-11-22 | Nicira, Inc. | Dynamic routing for logical routers |
US9647883B2 (en) | 2014-03-21 | 2017-05-09 | Nicria, Inc. | Multiple levels of logical routers |
US9413644B2 (en) | 2014-03-27 | 2016-08-09 | Nicira, Inc. | Ingress ECMP in virtual distributed routing environment |
US9893988B2 (en) | 2014-03-27 | 2018-02-13 | Nicira, Inc. | Address resolution using multiple designated instances of a logical router |
US9912546B2 (en) | 2014-03-28 | 2018-03-06 | Sciencelogic, Inc. | Component detection and management using relationships |
US10110558B2 (en) | 2014-04-14 | 2018-10-23 | Cavium, Inc. | Processing of finite automata based on memory hierarchy |
US10002326B2 (en) | 2014-04-14 | 2018-06-19 | Cavium, Inc. | Compilation of finite automata based on memory hierarchy |
US9438561B2 (en) | 2014-04-14 | 2016-09-06 | Cavium, Inc. | Processing of finite automata based on a node cache |
US10063473B2 (en) | 2014-04-30 | 2018-08-28 | Brocade Communications Systems LLC | Method and system for facilitating switch virtualization in a network of interconnected switches |
US9800471B2 (en) | 2014-05-13 | 2017-10-24 | Brocade Communications Systems, Inc. | Network extension groups of global VLANs in a fabric switch |
US10992524B2 (en) | 2014-06-03 | 2021-04-27 | A10 Networks, Inc. | User defined objects for network devices |
US10129122B2 (en) * | 2014-06-03 | 2018-11-13 | A10 Networks, Inc. | User defined objects for network devices |
US9853876B1 (en) * | 2014-06-13 | 2017-12-26 | Narus, Inc. | Mobile application identification in network traffic via a search engine approach |
US10616108B2 (en) | 2014-07-29 | 2020-04-07 | Avago Technologies International Sales Pte. Limited | Scalable MAC address virtualization |
US9807007B2 (en) | 2014-08-11 | 2017-10-31 | Brocade Communications Systems, Inc. | Progressive MAC address learning |
US10020960B2 (en) | 2014-09-30 | 2018-07-10 | Nicira, Inc. | Virtual distributed bridging |
US10511458B2 (en) | 2014-09-30 | 2019-12-17 | Nicira, Inc. | Virtual distributed bridging |
US10250443B2 (en) | 2014-09-30 | 2019-04-02 | Nicira, Inc. | Using physical location to modify behavior of a distributed virtual network element |
US9768980B2 (en) | 2014-09-30 | 2017-09-19 | Nicira, Inc. | Virtual distributed bridging |
FR3027129B1 (fr) | 2014-10-08 | 2016-10-21 | Renault Sa | Systeme de reseau embarque de vehicule et procede de detection d'intrusion sur le reseau embarque |
US10148547B2 (en) * | 2014-10-24 | 2018-12-04 | Tektronix, Inc. | Hardware trigger generation from a declarative protocol description |
US10110561B2 (en) * | 2014-11-26 | 2018-10-23 | Rockwell Automation Technologies, Inc. | Firewall with application packet classifer |
US10033627B1 (en) | 2014-12-18 | 2018-07-24 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
US10091096B1 (en) | 2014-12-18 | 2018-10-02 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
US10097448B1 (en) | 2014-12-18 | 2018-10-09 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
US9942097B2 (en) | 2015-01-05 | 2018-04-10 | Brocade Communications Systems LLC | Power management in a network of interconnected switches |
US10003552B2 (en) | 2015-01-05 | 2018-06-19 | Brocade Communications Systems, Llc. | Distributed bidirectional forwarding detection protocol (D-BFD) for cluster of interconnected switches |
US10079779B2 (en) | 2015-01-30 | 2018-09-18 | Nicira, Inc. | Implementing logical router uplinks |
US10193929B2 (en) * | 2015-03-13 | 2019-01-29 | Varmour Networks, Inc. | Methods and systems for improving analytics in distributed networks |
US10038592B2 (en) | 2015-03-17 | 2018-07-31 | Brocade Communications Systems LLC | Identifier assignment to a new switch in a switch group |
US9930025B2 (en) * | 2015-03-23 | 2018-03-27 | Duo Security, Inc. | System and method for automatic service discovery and protection |
US10225326B1 (en) | 2015-03-23 | 2019-03-05 | Amazon Technologies, Inc. | Point of presence based data uploading |
US9887932B1 (en) | 2015-03-30 | 2018-02-06 | Amazon Technologies, Inc. | Traffic surge management for points of presence |
US9380027B1 (en) | 2015-03-30 | 2016-06-28 | Varmour Networks, Inc. | Conditional declarative policies |
US9887931B1 (en) | 2015-03-30 | 2018-02-06 | Amazon Technologies, Inc. | Traffic surge management for points of presence |
US10009381B2 (en) | 2015-03-30 | 2018-06-26 | Varmour Networks, Inc. | System and method for threat-driven security policy controls |
US9819567B1 (en) | 2015-03-30 | 2017-11-14 | Amazon Technologies, Inc. | Traffic surge management for points of presence |
US10038628B2 (en) | 2015-04-04 | 2018-07-31 | Nicira, Inc. | Route server mode for dynamic routing between logical and physical networks |
US10579406B2 (en) | 2015-04-08 | 2020-03-03 | Avago Technologies International Sales Pte. Limited | Dynamic orchestration of overlay tunnels |
US9832141B1 (en) | 2015-05-13 | 2017-11-28 | Amazon Technologies, Inc. | Routing based request correlation |
US10616179B1 (en) | 2015-06-25 | 2020-04-07 | Amazon Technologies, Inc. | Selective routing of domain name system (DNS) requests |
US9917852B1 (en) | 2015-06-29 | 2018-03-13 | Palo Alto Networks, Inc. | DGA behavior detection |
US10348625B2 (en) | 2015-06-30 | 2019-07-09 | Nicira, Inc. | Sharing common L2 segment in a virtual distributed router environment |
US10097566B1 (en) | 2015-07-31 | 2018-10-09 | Amazon Technologies, Inc. | Identifying targets of network attacks |
US10439929B2 (en) | 2015-07-31 | 2019-10-08 | Avago Technologies International Sales Pte. Limited | Graceful recovery of a multicast-enabled switch |
US10129142B2 (en) | 2015-08-11 | 2018-11-13 | Nicira, Inc. | Route configuration for logical router |
US10075363B2 (en) | 2015-08-31 | 2018-09-11 | Nicira, Inc. | Authorization for advertised routes among logical routers |
US10171303B2 (en) | 2015-09-16 | 2019-01-01 | Avago Technologies International Sales Pte. Limited | IP-based interconnection of switches with a logical chassis |
US9794281B1 (en) | 2015-09-24 | 2017-10-17 | Amazon Technologies, Inc. | Identifying sources of network attacks |
US9742795B1 (en) | 2015-09-24 | 2017-08-22 | Amazon Technologies, Inc. | Mitigating network attacks |
US9774619B1 (en) | 2015-09-24 | 2017-09-26 | Amazon Technologies, Inc. | Mitigating network attacks |
US10095535B2 (en) | 2015-10-31 | 2018-10-09 | Nicira, Inc. | Static route types for logical routers |
US10270878B1 (en) | 2015-11-10 | 2019-04-23 | Amazon Technologies, Inc. | Routing for origin-facing points of presence |
US9912614B2 (en) | 2015-12-07 | 2018-03-06 | Brocade Communications Systems LLC | Interconnection of switches based on hierarchical overlay tunneling |
US10191758B2 (en) | 2015-12-09 | 2019-01-29 | Varmour Networks, Inc. | Directing data traffic between intra-server virtual machines |
US10257307B1 (en) | 2015-12-11 | 2019-04-09 | Amazon Technologies, Inc. | Reserved cache space in content delivery networks |
US10049051B1 (en) | 2015-12-11 | 2018-08-14 | Amazon Technologies, Inc. | Reserved cache space in content delivery networks |
US10348639B2 (en) | 2015-12-18 | 2019-07-09 | Amazon Technologies, Inc. | Use of virtual endpoints to improve data transmission rates |
US20190089595A1 (en) * | 2017-09-18 | 2019-03-21 | Cyber 2.0 (2015) LTD | Automatic security configuration |
US10623420B2 (en) * | 2016-01-19 | 2020-04-14 | Nec Corporation | Method and device for data inspection |
US9762599B2 (en) | 2016-01-29 | 2017-09-12 | Varmour Networks, Inc. | Multi-node affinity-based examination for computer network security remediation |
US9680852B1 (en) | 2016-01-29 | 2017-06-13 | Varmour Networks, Inc. | Recursive multi-layer examination for computer network security remediation |
US9521115B1 (en) | 2016-03-24 | 2016-12-13 | Varmour Networks, Inc. | Security policy generation using container metadata |
CN105871599A (zh) * | 2016-03-28 | 2016-08-17 | 深圳市双赢伟业科技股份有限公司 | 路由器配置方法及路由器配置装置 |
US10250466B2 (en) * | 2016-03-29 | 2019-04-02 | Juniper Networks, Inc. | Application signature generation and distribution |
US10333849B2 (en) | 2016-04-28 | 2019-06-25 | Nicira, Inc. | Automatic configuration of logical routers on edge nodes |
US10484515B2 (en) | 2016-04-29 | 2019-11-19 | Nicira, Inc. | Implementing logical metadata proxy servers in logical networks |
US10841273B2 (en) | 2016-04-29 | 2020-11-17 | Nicira, Inc. | Implementing logical DHCP servers in logical networks |
US10091161B2 (en) | 2016-04-30 | 2018-10-02 | Nicira, Inc. | Assignment of router ID for logical routers |
US10075551B1 (en) | 2016-06-06 | 2018-09-11 | Amazon Technologies, Inc. | Request management for hierarchical cache |
US10560320B2 (en) | 2016-06-29 | 2020-02-11 | Nicira, Inc. | Ranking of gateways in cluster |
US10153973B2 (en) | 2016-06-29 | 2018-12-11 | Nicira, Inc. | Installation of routing tables for logical router in route server mode |
US10110694B1 (en) | 2016-06-29 | 2018-10-23 | Amazon Technologies, Inc. | Adaptive transfer rate for retrieving content from a server |
US10755334B2 (en) | 2016-06-30 | 2020-08-25 | Varmour Networks, Inc. | Systems and methods for continually scoring and segmenting open opportunities using client data and product predictors |
US9992086B1 (en) | 2016-08-23 | 2018-06-05 | Amazon Technologies, Inc. | External health checking of virtual private cloud network environments |
US10033691B1 (en) | 2016-08-24 | 2018-07-24 | Amazon Technologies, Inc. | Adaptive resolution of domain name requests in virtual private cloud network environments |
US10454758B2 (en) | 2016-08-31 | 2019-10-22 | Nicira, Inc. | Edge node cluster network redundancy and fast convergence using an underlay anycast VTEP IP |
US10673893B2 (en) * | 2016-08-31 | 2020-06-02 | International Business Machines Corporation | Isolating a source of an attack that originates from a shared computing environment |
US10341236B2 (en) | 2016-09-30 | 2019-07-02 | Nicira, Inc. | Anycast edge service gateways |
US10469513B2 (en) | 2016-10-05 | 2019-11-05 | Amazon Technologies, Inc. | Encrypted network addresses |
US10237090B2 (en) | 2016-10-28 | 2019-03-19 | Avago Technologies International Sales Pte. Limited | Rule-based network identifier mapping |
CN106506526B (zh) * | 2016-11-30 | 2019-06-07 | 东软集团股份有限公司 | 一种应用识别结果的验证方法及系统 |
US10742746B2 (en) | 2016-12-21 | 2020-08-11 | Nicira, Inc. | Bypassing a load balancer in a return path of network traffic |
US10212071B2 (en) | 2016-12-21 | 2019-02-19 | Nicira, Inc. | Bypassing a load balancer in a return path of network traffic |
US10237123B2 (en) | 2016-12-21 | 2019-03-19 | Nicira, Inc. | Dynamic recovery from a split-brain failure in edge nodes |
US10616045B2 (en) | 2016-12-22 | 2020-04-07 | Nicira, Inc. | Migration of centralized routing components of logical router |
US10831549B1 (en) | 2016-12-27 | 2020-11-10 | Amazon Technologies, Inc. | Multi-region request-driven code execution system |
US10372499B1 (en) | 2016-12-27 | 2019-08-06 | Amazon Technologies, Inc. | Efficient region selection system for executing request-driven code |
US10938884B1 (en) | 2017-01-30 | 2021-03-02 | Amazon Technologies, Inc. | Origin server cloaking using virtual private cloud network environments |
US10476673B2 (en) | 2017-03-22 | 2019-11-12 | Extrahop Networks, Inc. | Managing session secrets for continuous packet capture systems |
CN107016091B (zh) * | 2017-04-06 | 2019-10-15 | 北京邮电大学 | 一种软件定义网络中正则表达式更新方法及装置 |
US10503613B1 (en) | 2017-04-21 | 2019-12-10 | Amazon Technologies, Inc. | Efficient serving of resources during server unavailability |
US11075987B1 (en) | 2017-06-12 | 2021-07-27 | Amazon Technologies, Inc. | Load estimating content delivery network |
US10447648B2 (en) | 2017-06-19 | 2019-10-15 | Amazon Technologies, Inc. | Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP |
US10735469B1 (en) * | 2017-07-01 | 2020-08-04 | Juniper Networks, Inc | Apparatus, system, and method for predictively enforcing security policies on unknown flows |
EP3438848B1 (en) | 2017-07-31 | 2019-05-15 | 51 Degrees Mobile Experts Limited | Identifying properties of a communication device |
US10931637B2 (en) | 2017-09-15 | 2021-02-23 | Palo Alto Networks, Inc. | Outbound/inbound lateral traffic punting based on process risk |
US10855656B2 (en) * | 2017-09-15 | 2020-12-01 | Palo Alto Networks, Inc. | Fine-grained firewall policy enforcement using session app ID and endpoint process ID correlation |
US10742593B1 (en) | 2017-09-25 | 2020-08-11 | Amazon Technologies, Inc. | Hybrid content request routing system |
US10587632B1 (en) * | 2017-09-28 | 2020-03-10 | Amazon Technologies, Inc. | Neural network-based malware detection |
US9967292B1 (en) | 2017-10-25 | 2018-05-08 | Extrahop Networks, Inc. | Inline secret sharing |
US10511459B2 (en) | 2017-11-14 | 2019-12-17 | Nicira, Inc. | Selection of managed forwarding element for bridge spanning multiple datacenters |
US10374827B2 (en) | 2017-11-14 | 2019-08-06 | Nicira, Inc. | Identifier that maps to different networks at different datacenters |
US9967272B1 (en) * | 2017-12-05 | 2018-05-08 | Redberry Systems, Inc. | Real-time regular expression search engine |
KR101881797B1 (ko) * | 2018-01-03 | 2018-07-26 | 주식회사 윈스 | 멀티 패턴 정책 탐지 시스템 및 방법 |
US10389574B1 (en) | 2018-02-07 | 2019-08-20 | Extrahop Networks, Inc. | Ranking alerts based on network monitoring |
US10270794B1 (en) | 2018-02-09 | 2019-04-23 | Extrahop Networks, Inc. | Detection of denial of service attacks |
US10592578B1 (en) | 2018-03-07 | 2020-03-17 | Amazon Technologies, Inc. | Predictive content push-enabled content delivery network |
CN111819558A (zh) * | 2018-04-30 | 2020-10-23 | 慧与发展有限责任合伙企业 | 更新三元内容可寻址存储器中的正则表达式模式组 |
US10880206B2 (en) * | 2018-06-13 | 2020-12-29 | Futurewei Technologies, Inc. | Multipath selection system and method for datacenter-centric metro networks |
JP6962476B2 (ja) * | 2018-08-06 | 2021-11-05 | 日本電気株式会社 | 通信装置、通信方法、及び、通信プログラム |
US10411978B1 (en) | 2018-08-09 | 2019-09-10 | Extrahop Networks, Inc. | Correlating causes and effects associated with network activity |
US10594718B1 (en) | 2018-08-21 | 2020-03-17 | Extrahop Networks, Inc. | Managing incident response operations based on monitored network activity |
CN109347721B (zh) * | 2018-09-28 | 2021-12-24 | 维沃移动通信有限公司 | 一种信息发送方法及终端设备 |
US10862852B1 (en) | 2018-11-16 | 2020-12-08 | Amazon Technologies, Inc. | Resolution of domain name requests in heterogeneous network environments |
US10931560B2 (en) | 2018-11-23 | 2021-02-23 | Vmware, Inc. | Using route type to determine routing protocol behavior |
US10797998B2 (en) | 2018-12-05 | 2020-10-06 | Vmware, Inc. | Route server for distributed routers using hierarchical routing protocol |
US10938788B2 (en) | 2018-12-12 | 2021-03-02 | Vmware, Inc. | Static routes for policy-based VPN |
US11025747B1 (en) | 2018-12-12 | 2021-06-01 | Amazon Technologies, Inc. | Content request pattern-based routing system |
US10965702B2 (en) | 2019-05-28 | 2021-03-30 | Extrahop Networks, Inc. | Detecting injection attacks using passive network monitoring |
US11290494B2 (en) | 2019-05-31 | 2022-03-29 | Varmour Networks, Inc. | Reliability prediction for cloud security policies |
US11711374B2 (en) | 2019-05-31 | 2023-07-25 | Varmour Networks, Inc. | Systems and methods for understanding identity and organizational access to applications within an enterprise environment |
US11863580B2 (en) | 2019-05-31 | 2024-01-02 | Varmour Networks, Inc. | Modeling application dependencies to identify operational risk |
US11575563B2 (en) | 2019-05-31 | 2023-02-07 | Varmour Networks, Inc. | Cloud security management |
US11290493B2 (en) | 2019-05-31 | 2022-03-29 | Varmour Networks, Inc. | Template-driven intent-based security |
US11310284B2 (en) | 2019-05-31 | 2022-04-19 | Varmour Networks, Inc. | Validation of cloud security policies |
US11388072B2 (en) | 2019-08-05 | 2022-07-12 | Extrahop Networks, Inc. | Correlating network traffic that crosses opaque endpoints |
US10742530B1 (en) | 2019-08-05 | 2020-08-11 | Extrahop Networks, Inc. | Correlating network traffic that crosses opaque endpoints |
US11399312B2 (en) * | 2019-08-13 | 2022-07-26 | International Business Machines Corporation | Storage and retention intelligence in mobile networks |
US11095480B2 (en) | 2019-08-30 | 2021-08-17 | Vmware, Inc. | Traffic optimization using distributed edge services |
US10742677B1 (en) | 2019-09-04 | 2020-08-11 | Extrahop Networks, Inc. | Automatic determination of user roles and asset types based on network monitoring |
CN112564991A (zh) * | 2019-09-10 | 2021-03-26 | 华为技术有限公司 | 应用识别方法、装置及存储介质 |
US11729134B2 (en) | 2019-09-30 | 2023-08-15 | Palo Alto Networks, Inc. | In-line detection of algorithmically generated domains |
CN112787835B (zh) | 2019-11-07 | 2023-01-13 | 华为技术有限公司 | 网络设备及处理关于网络报文的数据的方法 |
US20210377215A1 (en) * | 2020-06-01 | 2021-12-02 | Palo Alto Networks, Inc. | Automating iot device identification using statistical payload fingerprints |
CN113949645A (zh) * | 2020-07-15 | 2022-01-18 | 华为技术有限公司 | 一种业务处理方法、装置、设备及系统 |
US11616755B2 (en) | 2020-07-16 | 2023-03-28 | Vmware, Inc. | Facilitating distributed SNAT service |
US11606294B2 (en) | 2020-07-16 | 2023-03-14 | Vmware, Inc. | Host computer configured to facilitate distributed SNAT service |
US11611613B2 (en) | 2020-07-24 | 2023-03-21 | Vmware, Inc. | Policy-based forwarding to a load balancer of a load balancing cluster |
US11902050B2 (en) | 2020-07-28 | 2024-02-13 | VMware LLC | Method for providing distributed gateway service at host computer |
US11451413B2 (en) | 2020-07-28 | 2022-09-20 | Vmware, Inc. | Method for advertising availability of distributed gateway service and machines at host computer |
WO2022066910A1 (en) | 2020-09-23 | 2022-03-31 | Extrahop Networks, Inc. | Monitoring encrypted network traffic |
US11463466B2 (en) | 2020-09-23 | 2022-10-04 | Extrahop Networks, Inc. | Monitoring encrypted network traffic |
US11876817B2 (en) | 2020-12-23 | 2024-01-16 | Varmour Networks, Inc. | Modeling queue-based message-oriented middleware relationships in a security system |
US11818152B2 (en) | 2020-12-23 | 2023-11-14 | Varmour Networks, Inc. | Modeling topic-based message-oriented middleware within a security system |
US11777978B2 (en) | 2021-01-29 | 2023-10-03 | Varmour Networks, Inc. | Methods and systems for accurately assessing application access risk |
US11349861B1 (en) | 2021-06-18 | 2022-05-31 | Extrahop Networks, Inc. | Identifying network entities based on beaconing activity |
US11734316B2 (en) | 2021-07-08 | 2023-08-22 | Varmour Networks, Inc. | Relationship-based search in a computing environment |
CN113627164B (zh) * | 2021-07-12 | 2024-03-01 | 中国科学院信息工程研究所 | 一种状态爆炸型正则表达式的识别方法及系统 |
US11943239B2 (en) * | 2021-07-28 | 2024-03-26 | Level 3 Communications, Llc | Fraud or distributed denial of service (DDOS) protection for session initiation protocol (SIP)-based communication |
US11296967B1 (en) | 2021-09-23 | 2022-04-05 | Extrahop Networks, Inc. | Combining passive network analysis and active probing |
CN114095235B (zh) * | 2021-11-17 | 2024-03-19 | 恒安嘉新(北京)科技股份公司 | 系统识别方法、装置、计算机设备及介质 |
US11843606B2 (en) | 2022-03-30 | 2023-12-12 | Extrahop Networks, Inc. | Detecting abnormal data access based on data similarity |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1292534A (zh) * | 1999-10-01 | 2001-04-25 | 北方电讯网络有限公司 | 在两种网络访问技术之间切换的方法和系统 |
US7308446B1 (en) * | 2003-01-10 | 2007-12-11 | Cisco Technology, Inc. | Methods and apparatus for regular expression matching |
CN101296116A (zh) * | 2007-04-24 | 2008-10-29 | 丛林网络公司 | 使用非确定性有限自动机的并行模式匹配 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754847A (en) * | 1987-05-26 | 1998-05-19 | Xerox Corporation | Word/number and number/word mapping |
US7188168B1 (en) * | 1999-04-30 | 2007-03-06 | Pmc-Sierra, Inc. | Method and apparatus for grammatical packet classifier |
US6560610B1 (en) * | 1999-08-10 | 2003-05-06 | Washington University | Data structure using a tree bitmap and method for rapid classification of data in a database |
US6876559B1 (en) * | 2002-02-01 | 2005-04-05 | Netlogic Microsystems, Inc. | Block-writable content addressable memory device |
US7225188B1 (en) * | 2002-02-13 | 2007-05-29 | Cisco Technology, Inc. | System and method for performing regular expression matching with high parallelism |
US7093023B2 (en) * | 2002-05-21 | 2006-08-15 | Washington University | Methods, systems, and devices using reprogrammable hardware for high-speed processing of streaming data to find a redefinable pattern and respond thereto |
US7085918B2 (en) * | 2003-01-09 | 2006-08-01 | Cisco Systems, Inc. | Methods and apparatuses for evaluation of regular expressions of arbitrary size |
US7689530B1 (en) * | 2003-01-10 | 2010-03-30 | Cisco Technology, Inc. | DFA sequential matching of regular expression with divergent states |
WO2004081761A2 (en) * | 2003-03-12 | 2004-09-23 | Sensory Networks Inc. | Apparatus and method for memory efficient, programmable, pattern matching finite state machine hardware |
US7093231B2 (en) * | 2003-05-06 | 2006-08-15 | David H. Alderson | Grammer for regular expressions |
US7685254B2 (en) * | 2003-06-10 | 2010-03-23 | Pandya Ashish A | Runtime adaptable search processor |
US7305383B1 (en) * | 2004-06-10 | 2007-12-04 | Cisco Technology, Inc. | Processing system using bitmap array to compress deterministic finite automation state table allowing direct indexing |
US7216364B2 (en) * | 2004-06-14 | 2007-05-08 | Lionic Corporation | System security approaches using state tables |
US7685637B2 (en) * | 2004-06-14 | 2010-03-23 | Lionic Corporation | System security approaches using sub-expression automata |
US20060085389A1 (en) * | 2004-08-26 | 2006-04-20 | Sensory Networks, Inc. | Method for transformation of regular expressions |
WO2006031551A2 (en) * | 2004-09-10 | 2006-03-23 | Cavium Networks | Selective replication of data structure |
US7260558B1 (en) * | 2004-10-25 | 2007-08-21 | Hi/Fn, Inc. | Simultaneously searching for a plurality of patterns definable by complex expressions, and efficiently generating data for such searching |
US7356663B2 (en) * | 2004-11-08 | 2008-04-08 | Intruguard Devices, Inc. | Layered memory architecture for deterministic finite automaton based string matching useful in network intrusion detection and prevention systems and apparatuses |
GB2422507A (en) * | 2005-01-21 | 2006-07-26 | 3Com Corp | An intrusion detection system using a plurality of finite state machines |
US7765183B2 (en) * | 2005-04-23 | 2010-07-27 | Cisco Technology, Inc | Hierarchical tree of deterministic finite automata |
US7499941B2 (en) * | 2005-09-05 | 2009-03-03 | Cisco Technology, Inc. | Pipeline regular expression matching |
US7702629B2 (en) * | 2005-12-02 | 2010-04-20 | Exegy Incorporated | Method and device for high performance regular expression pattern matching |
US7213634B1 (en) * | 2006-03-02 | 2007-05-08 | Russell Taccone, legal representative | Offset mold process |
US7725510B2 (en) * | 2006-08-01 | 2010-05-25 | Alcatel-Lucent Usa Inc. | Method and system for multi-character multi-pattern pattern matching |
GB2441351B (en) * | 2006-09-01 | 2010-12-08 | 3Com Corp | Positionally dependent pattern checking in character strings using deterministic finite automata |
US7899977B2 (en) * | 2006-12-08 | 2011-03-01 | Pandya Ashish A | Programmable intelligent search memory |
US7788206B2 (en) * | 2007-04-30 | 2010-08-31 | Lsi Corporation | State machine compression using multi-character state transition instructions |
US8219508B2 (en) * | 2007-07-06 | 2012-07-10 | Lsi Corporation | Systems and methods for compressing state machine instructions using a two access indexing scheme |
-
2009
- 2009-01-28 US US12/361,364 patent/US20100192225A1/en not_active Abandoned
-
2010
- 2010-01-19 EP EP10151115A patent/EP2214115B1/en active Active
- 2010-01-19 AT AT10151115T patent/ATE511149T1/de not_active IP Right Cessation
- 2010-01-28 CN CN2010101116257A patent/CN101827084B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1292534A (zh) * | 1999-10-01 | 2001-04-25 | 北方电讯网络有限公司 | 在两种网络访问技术之间切换的方法和系统 |
US7308446B1 (en) * | 2003-01-10 | 2007-12-11 | Cisco Technology, Inc. | Methods and apparatus for regular expression matching |
CN101296116A (zh) * | 2007-04-24 | 2008-10-29 | 丛林网络公司 | 使用非确定性有限自动机的并行模式匹配 |
Also Published As
Publication number | Publication date |
---|---|
EP2214115B1 (en) | 2011-05-25 |
EP2214115A1 (en) | 2010-08-04 |
US20100192225A1 (en) | 2010-07-29 |
CN101827084A (zh) | 2010-09-08 |
ATE511149T1 (de) | 2011-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101827084B (zh) | 网络设备的高效的应用程序识别 | |
US11399288B2 (en) | Method for HTTP-based access point fingerprint and classification using machine learning | |
US20230041014A1 (en) | Data pattern analysis using optimized deterministic finite automaton | |
Tongaonkar et al. | Towards self adaptive network traffic classification | |
Xu et al. | A survey on regular expression matching for deep packet inspection: Applications, algorithms, and hardware platforms | |
CN101213811B (zh) | 采用标记值的多样本包内容检测机制 | |
US9172649B2 (en) | Traffic classification and control on a network node | |
US10375143B2 (en) | Learning indicators of compromise with hierarchical models | |
Sija et al. | A survey of automatic protocol reverse engineering approaches, methods, and tools on the inputs and outputs view | |
WO2012177736A1 (en) | Compiler for regular expressions | |
Vij et al. | Detection of algorithmically generated domain names using LSTM | |
Shin et al. | Unsupervised multi-stage attack detection framework without details on single-stage attacks | |
CN101710898B (zh) | 一种用于识别应用软件通信协议特征的方法 | |
Davis | Machine learning and feature engineering for computer network security | |
KR100937217B1 (ko) | 시그니처 최적화 시스템 및 방법 | |
Alizadeh et al. | Traffic classification for managing applications’ networking profiles | |
Wang et al. | Riskrank: Security risk ranking for ip flow records | |
Ali et al. | Effective network intrusion detection using stacking-based ensemble approach | |
Zhai et al. | Detection of TCP covert channel based on Markov model | |
Choi et al. | Implementation and design of a zero-day intrusion detection and response system for responding to network security blind spots | |
Lekshmi et al. | Detecting malicious URLs using machine learning techniques: a comparative literature review | |
Ahde et al. | A survey on the use of data points in IDS research | |
US8289854B1 (en) | System, method, and computer program product for analyzing a protocol utilizing a state machine based on a token determined utilizing another state machine | |
Jeng et al. | Md-minerp: Interaction profiling bipartite graph mining for malware-control domain detection | |
Kushwah et al. | An approach to meta-alert generation for anomalous tcp traffic |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee |
Owner name: JUNIPER NETWORKS INC. Free format text: FORMER NAME: NETSCREEN TECHNOLOGIES INC. |
|
CP01 | Change in the name or title of a patent holder |
Address after: California, USA Patentee after: Juniper Networks, Inc. Address before: California, USA Patentee before: Jungle network |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130313 Termination date: 20190128 |
|
CF01 | Termination of patent right due to non-payment of annual fee |