CN101095310A - 可编程分组解析处理器 - Google Patents
可编程分组解析处理器 Download PDFInfo
- Publication number
- CN101095310A CN101095310A CNA2005800119255A CN200580011925A CN101095310A CN 101095310 A CN101095310 A CN 101095310A CN A2005800119255 A CNA2005800119255 A CN A2005800119255A CN 200580011925 A CN200580011925 A CN 200580011925A CN 101095310 A CN101095310 A CN 101095310A
- Authority
- CN
- China
- Prior art keywords
- parsing
- packet
- instruction
- state
- resolving
- 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.)
- Granted
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
- H04L63/0254—Stateful filtering
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Abstract
本发明提供了分组处理设备(100)和方法。解析处理器(120)提供利用执行解析指令的解析引擎的指令驱动的10-Gbps或更高速的网络分组内容检查。流状态单元维护分组流的有状态性,以允许对几个相关网络分组执行内容检查。状态图单元跟踪状态图节点以找出关键字指示和/或解析指令。解析指令可从仿真用户友好的解析逻辑的高级应用导出。解析处理器(120)发送解析后的分组到网络处理器单元(130)以供额外处理。
Description
技术领域
本发明总地涉及计算机处理器,更具体而言,涉及包括解析引擎的分组解析处理器,所述解析引擎利用提供可编程解析操作的指令集来对网络分组执行内容检查。
背景技术
目前,网络带宽的缺乏限制了网络性能。但是,不断出现的高带宽网络技术目前的操作速率暴露出传统计算机处理器的局限性。即使使用现有技术通用处理器的高端网络设备也不能满足数据速率为2.4-Gbps、10-Gbps、40-Gbps和更高速率的网络的要求。
网络处理器是近来为解决网络处理的计算需求而进行的尝试,虽然受限于专门的用途,但是其灵活度也足以跟上时常变化的网络协议和体系结构。与执行多种任务的通用处理器相比,网络处理器主要使用较小量的软件代码来执行分组处理任务。专门分组处理的示例包括分组路由选择、交换、转发和桥接。一些网络处理器甚至具有处理单元阵列,它具有同时处理更多分组的多线程能力。但是,由于网络处理器已经具有了额外的功能,曾经负责几项任务的专门设备已经发展为负责大量网络处理任务的通用处理设备。
因此,网络处理器不能以高数据速率执行应用级别的内容检查。应用级别的内容检查(或深度内容检查)涉及数据分组净荷中字节流的正则表达式匹配。网络处理器中的指令集被设计用于通用网络任务,而不专用于分组解析。因此,用于解析任务的通用代码是低效的。此外,内容检测是在网络处理器带宽和其他资源中占支配地位的计算密集型任务。为了在网络处理器上提供额外的分组解析功能,需要从其他网络处理任务抽取甚至更多的资源。因此,当前的网络处理器不适于高速深度内容检查。
此外,专用于解析分组的当前处理器缺少适应新签名和协议的灵活性。相反,这些处理器被硬连线以处理在制造时已知的现有技术的签名和协议。用于分组处理的软件可适应变化,但是不能以足够高的数据速率执行操作。
因此,需要一种鲁棒的分组处理器,其提供用于执行伴随当前和未来的联网要求而来的内容检查的灵活性和性能速率。此外,该解决方案应当提供可编程能力,以便增强传统的正则表达式匹配操作。
发明内容
本发明通过提供专用解析处理器和解析分组以满足上述需要的方法来满足这些需要。在一个实施例中,解析处理器提供利用解析指令的指令驱动的网络分组内容检查。解析处理器可维护分组流的有状态性,以在作为单个字节流的几个相关网络分组上执行内容检查。解析处理器跟踪状态图节点来确定取哪些解析指令以供执行。解析处理器可交换分组或其他控制信息到网络处理器以供额外处理。在一个实施例中,解析处理器以10-Gbps的网速执行例如入侵检测和服务质量等任务。
在另一实施例中,解析指令以程序指示解析引擎,以便控制诸如正则表达式匹配任务等任务。解析指令的另一实施例是从使用基于图的识别的高级应用识别软件程序导出的。因此,解析指令包括编译为机器代码的高级软件指令。
在另一实施例中,解析处理器包括具有耦合到解析引擎的第一输入/输出的输入/输出的流状态单元。流状态单元存储包括分组流的解析器状态的解析上下文。当来自有状态流的分组被解析引擎接收时,流状态单元发送解析上下文。寄存器组包括用于存储解析上下文以及解析计算期间使用的其他数据的中间结果暂存器(scratpad)。
在另一实施例中,解析处理器包括具有耦合到解析引擎的第二输入/输出的输入/输出的状态图单元。状态图单元在代表节点的状态地址处存储解析指令。因此,解析引擎能够通过例如状态机或确定有限自动机到包含下一解析指令的下一状态的字符转换来跟踪状态节点。处理器核心针对字符的字节流来执行解析指令,以便例如识别正则表达式匹配。在一个实施例中,状态图单元存储编码后指令。具有多于5个下一状态的状态被编码为位图。位图中的单个位可代表是否一组字符中的至少一个包含转换。使用位图,256个转换可由32位而非2048位代表。状态图单元的另一实施例包括10个FCRAM(快速循环随机访问存储器)提供大约10-Gbps的吞吐量。
在另一实施例中,解析引擎包括哈希单元。处理器核心通过例如联接寄存器组中的寄存器来生成用于哈希单元查找的键。哈希单元输出对应于键的下一状态。哈希表的另一实施例包括由协议类型、目的地IP地址、目的地端口地址、源IP地址,和/或源端口地址索引的TCP流表或端口表。
本发明通过提供专用解析处理器和解析分组以满足上述需要的方法来满足这些需要。在一个实施例中,解析处理器提供利用解析指令的指令驱动的网络分组内容检查。解析处理器可维护分组流的有状态性,以在作为单个字节流的几个相关网络分组上执行内容检查。解析处理器跟踪状态图节点来确定取哪些解析指令以供执行。解析处理器可交换分组或其他控制信息到网络处理器以供额外处理。在一个实施例中,解析处理器以10-Gbps的网速执行例如入侵检测和服务质量等任务。
在另一实施例中,解析指令编写解析引擎,以便控制诸如正则表达式匹配任务等任务。解析指令的另一实施例是从使用基于图的识别的高级应用识别软件程序导出的。因此,解析指令包括编译为机器代码的高级软件指令。
在另一实施例中,解析处理器包括具有耦合到解析引擎的第一输入/输出的输入/输出的流状态单元。流状态单元存储包括分组流的解析器状态的解析上下文。当来自有状态流的分组被解析引擎接收时,流状态单元发送解析上下文。寄存器组包括用于存储解析上下文以及解析计算期间使用的其他数据的中间结果暂存器。
在另一实施例中,解析处理器包括具有耦合到解析引擎的第二输入/输出的输入/输出的状态图单元。状态图单元在代表节点的状态地址处存储解析指令。因此,解析引擎能够通过例如状态机或确定有限自动机到包含下一解析指令的下一状态的字符转换来跟踪状态节点。处理器核心针对字符的字节流来执行解析指令,以便例如识别正则表达式匹配。在一个实施例中,状态图单元存储编码后指令。具有多于5个下一状态的状态被编码为位图。位图中的单个位可代表是否一组字符中的至少一个包含转换。使用位图,256个转换可由32位而非2048位代表。状态图单元的另一实施例包括10个FCRAM(快速循环随机访问存储器)提供大约10-Gbps的吞吐量。
在另一实施例中,解析引擎包括哈希单元。处理器核心通过例如联接寄存器组中的寄存器来生成用于哈希单元查找的键。哈希单元输出对应于键的下一状态。哈希表的另一实施例包括由协议类型、目的地IP地址、目的地端口地址、源IP地址,和/或源端口地址索引的TCP流表或端口表。
本发明通过提供专用解析处理器和解析分组以满足上述需要的方法来满足这些需要。在一个实施例中,解析处理器提供利用解析指令的指令驱动的网络分组内容检查。解析处理器可维护分组流的有状态性,以在作为单个字节流的几个相关网络分组上执行内容检查。解析处理器跟踪状态图节点来确定取哪些解析指令以供执行。解析处理器可交换分组或其他控制信息到网络处理器以供额外处理。在一个实施例中,解析处理器以10-Gbps的网速执行例如入侵检测和服务质量等任务。
在另一实施例中,解析指令编写解析引擎,以便控制诸如正则表达式匹配任务等任务。解析指令的另一实施例是从使用基于图的识别的高级应用识别软件程序导出的。因此,解析指令包括编译为机器代码的高级软件指令。
在另一实施例中,解析处理器包括具有耦合到解析引擎的第一输入/输出的输入/输出的流状态单元。流状态单元存储包括分组流的解析器状态的解析上下文。当来自有状态流的分组被解析引擎接收时,流状态单元发送解析上下文。寄存器组包括用于存储解析上下文以及解析计算期间使用的其他数据的中间结果暂存器。
在另一实施例中,解析处理器包括具有耦合到解析引擎的第二输入/输出的输入/输出的状态图单元。状态图单元在代表节点的状态地址处存储解析指令。因此,解析引擎能够通过例如状态机或确定有限自动机到包含下一解析指令的下一状态的字符转换来跟踪状态节点。处理器核心针对字符的字节流来执行解析指令,以便例如识别正则表达式匹配。在一个实施例中,状态图单元存储编码后指令。具有多于5个下一状态的状态被编码为位图。位图中的单个位可代表是否一组字符中的至少一个包含转换。使用位图,256个转换可由32位而非2048位代表。状态图单元的另一实施例包括10个FCRAM(快速循环随机访问存储器)提供大约10-Gbps的吞吐量。
在另一实施例中,解析引擎包括哈希单元。处理器核心通过例如联接寄存器组中的寄存器来生成用于哈希单元查找的键。哈希单元输出对应于键的下一状态。哈希表的另一实施例包括由协议类型、目的地IP地址、目的地端口地址、源IP地址,和/或源端口地址索引的TCP流表或端口表。
本发明通过提供专用解析处理器和解析分组以满足上述需要的方法来满足这些需要。在一个实施例中,解析处理器提供利用解析指令的指令驱动的网络分组内容检查。解析处理器可维护分组流的有状态性,以在作为单个字节流的几个相关网络分组上执行内容检查。解析处理器跟踪状态图节点来确定取哪些解析指令以供执行。解析处理器可交换分组或其他控制信息到网络处理器以供额外处理。在一个实施例中,解析处理器以10-Gbps的网速执行例如入侵检测和服务质量等任务。
在另一实施例中,解析指令编写解析引擎,以便控制诸如正则表达式匹配任务等任务。解析指令的另一实施例是从使用基于图的识别的高级应用识别软件程序导出的。因此,解析指令包括编译为机器代码的高级软件指令。
在另一实施例中,解析处理器包括具有耦合到解析引擎的第一输入/输出的输入/输出的流状态单元。流状态单元存储包括分组流的解析器状态的解析上下文。当来自有状态流的分组被解析引擎接收时,流状态单元发送解析上下文。寄存器组包括用于存储解析上下文以及解析计算期间使用的其他数据的中间结果暂存器。
在另一实施例中,解析处理器包括具有耦合到解析引擎的第二输入/输出的输入/输出的状态图单元。状态图单元在代表节点的状态地址处存储解析指令。因此,解析引擎能够通过例如状态机或确定有限自动机到包含下一解析指令的下一状态的字符转换来跟踪状态节点。处理器核心针对字符的字节流来执行解析指令,以便例如识别正则表达式匹配。在一个实施例中,状态图单元存储编码后指令。具有多于5个下一状态的状态被编码为位图。位图中的单个位可代表是否一组字符中的至少一个包含转换。使用位图,256个转换可由32位而非2048位代表。状态图单元的另一实施例包括10个FCRAM(快速循环随机访问存储器)提供大约10-Gbps的吞吐量。
在另一实施例中,解析引擎包括哈希单元。处理器核心通过例如联接寄存器组中的寄存器来生成用于哈希单元查找的键。哈希单元输出对应于键的下一状态。哈希表的另一实施例包括由协议类型、目的地IP地址、目的地端口地址、源IP地址,和/或源端口地址索引的TCP流表或端口表。
附图说明
图1是示出了根据本发明一个实施例的网络设备的框图。
图2是示出了根据本发明一个实施例的解析处理器的框图。
图3是示出了根据本发明一个实施例的状态图的示例的序列图。
图4是示出了根据本发明一个实施例的解析状态编码的序列图。
图5是示出了根据本发明一个实施例的解析网络分组的方法的流程图。
图6是示出了根据本发明一个实施例的确定解析内容的方法的流程图。
图7是示出了根据本发明一个实施例的执行指令驱动的分组处理器的方法的流程图。
具体实施方式
这里公开了用于解析网络分组的系统和方法。所述系统的一些实施例在图1-2中示出,其中操作的方法的一些实施例在图3-7中示出。所附说明的目的是利用大量具体细节来提供透彻的说明。当然,网络处理领域使得图示的和描述的本发明的特征可能有很多不同变化。因此,本领域的技术人员无疑将理解,本发明可在没有下面描述的某些具体细节的情况下实施,并且实际上将看出可在满足本发明的教导和精神的同时实施本发明的很多其他变化和实施例。因此,本发明不应被理解为限于下面描述的具体实现,而是仅由所附权利要求限定。
本发明的过程、特征或功能可由在下面描述的合适的计算设备中执行的程序指令实现。所述程序指令可以分布在计算机可读介质上、分布在半导体器件中,或通过公众网络分布。程序指令可以采取任何合适的形式,例如源代码、目标代码或脚本。
图1是示出了根据本发明一个实施例的网络设备100的框图。网络设备100操作来服务于具有2.4-Gbps、10-Gbps、40-Gbps及更高带宽的高速网络。网络设备100还可提供诸如应用识别、服务质量保证、应用级防火墙、基于网络的入侵检测等服务。网络设备100处理从网络(未示出)接收的进入分组140,以便使用诸如TCP/IP(传输控制协议/因特网协议)、ATM(异步传输模式)、IEEE 802.3、IEEE 802.11等各种网络协议来执行诸如路由选择、交换、桥接和分组转发等各种任务。网络设备100发送经处理的外出分组150到网络。虽然网络设备100被示为处理单向网络流量,但是网络设备100的另一实施例处理双向网络流量。网络设备100可包括专门设备,例如路由器、交换机、网桥、网关或例如由San Jose,California的Cisco Systems,Inc.制造销售的12000-系列系统这样的组合设备。
更具体而言,网络设备100包括流定序器单元110、解析处理器120和网络处理器单元130,它们被单独地或组合起来实现为硬件或软件。这些组件还可以被实现为半导体、现场可编程器件、基于纳米技术的电路,或以高数据速率实现逻辑功能的任何其他类型的电路。网络设备100组件例如包括附接到公共母板的独立集成电路、单个集成电路的几个模块,或甚至独立器件。在一个实施例中,网络设备100包括额外的组件,例如操作系统、协同处理器、CAM(内容可寻址存储器)、搜索引擎、分组缓冲器或其他类型的存储器,等等。
在图1中,信号线101耦合到流定序器单元110的输入,流定序器单元110形成了网络设备100的输入,用于运送代表进入分组140的光、电或其他信号。另一信号线102将流定序器单元110的第一输出耦合到解析处理器120的输入。另一信号线103将流定序器单元110的第二输出耦合到网络处理器130的输入。另一信号线105将解析处理器120的输入/输出耦合到网络处理器单元130的输入/输出。信号线104、106耦合到解析处理器120和网络处理器单元130的输出,形成了网络设备100的第一和第二输出,以便运送外出分组150的代表。这里讨论的信号线101-106和其他地方讨论的信号线例如包括总线、专用路径、铜迹线,等等。当然,特定耦合信号线101-106和其他信号线是示例性配置,并且可在不脱离本发明的范围的情况下有所改变。在操作中,数据路径从流定序器单元110流到解析处理器120,或者流到网络处理器单元130。通过从网络处理器单元130卸载任务,解析处理器120提高了网络设备100的速度和效率,因此它可以处理10-Gbps和更高的网络速度。
流定序器单元110跟踪分组流,并识别公共流中的分组(称为有状态分组)。例如,视频聊天会话或安全事务的个体分组源自于相同的源IP地址并终止于相同的目的地IP地址和端口。流定序器单元110可使用分组头部或显式会话指示符来关联个体分组。此外,流定序器单元110可操纵分组头部或向解析处理器120指示分组的有状态性。
解析处理器120使用指令驱动的分组处理来解析分组内容。该功能也可被描述为深度分组转发或深度分组解析,以指示分组检查不仅可包括分组头部,还可包括分组净荷中的数据。解析处理器120基于分组净荷中包含的内容(例如URL、应用层软件通信等等)来识别应用。于是,解析处理器120可发送消息到网络处理器单元130,所述消息例如是优先级或服务质量指示,以使得网络应用产生更好的性能。此外,解析处理器120可以在病毒或其他恶意应用层内容到达目标主机之前把它们的签名识别出来。这种基于网络的入侵检测提供了更好的网络安全性。
在一个实施例中,解析处理器120通过编码字符转换来提高解析效率。例如,解析处理器120不是存储所有可能的256种字符转换,而是存储实际的字符转换,或关于哪些字符具有转换的指示,而非字符转换本身。因为从字符转换构造的状态图中所需的数据较少,因此存储器可存储更多的签名,并且解析处理器120能以更高的速率跟踪存储器。在另一实施例中,网络处理器单元130使用解析指令来执行正则表达式匹配和增强型正则表达式匹配任务。在另一实施例中,网络处理器单元130仿真使用状态图节点的高级软件的应用识别。因此,解析处理器120基于编译后的高级指令或描述语言脚本来执行解析指令。下面参考图2更详细地描述解析处理器120。
网络处理器单元130对分组执行通用网络处理操作。网络处理器单元130例如包括x86型处理器、网络处理器、多线程处理器、多指令多数据处理器、通用处理单元、专用集成电路,或能够处理指令的任何处理器件。
图2是示出了根据本发明一个实施例的解析处理器120的框图。解析处理器120包括解析引擎210、流状态单元220,以及状态图单元230。解析引擎210还包括解析控制器218、处理器核心212、寄存器组214、哈希(hash)单元216,和分组缓冲器240。信号线101、201、204、205、206、202、104将解析控制器218的输入/输出耦合到流定序器110、流状态单元220、处理器核心212、寄存器组214、哈希单元216、状态图单元230,和网络处理器130。此外,信号线207、208、241、212、213、106、104将寄存器组214的输入/输出连接到处理器核心212、哈希单元216、分组缓冲器240、流状态单元220、状态图单元230、网络处理器130,和第一网络设备100输出。
解析引擎210控制分组的内容检查和其他分组解析功能。在处理期间,解析引擎210在寄存器组214中维护分组的解析上下文,如下表1的示例所示:
字段 | 大小 (字节) | 描述 |
Pak dese | 4 | 指向被解析的当前分组的指针;分组头部包含流 |
id、分组长度 | ||
状态 | 8 | 当前解析状态 |
位的位置 | 4 | 被解析的当前位的位置 |
位向量 | 8 | 用于减少.*s的开销的位向量 |
中间结果暂存器 | 64×4 | 64个32位寄存器 |
分类寄存器 | 4 | 包含分类的32位寄存器 |
返回地址寄存器 | 4 | 保存返回状态地址;用于一级深度的函数调用 |
NP发送寄存器 | 16 | 用于从要被发送到网络处理器单元130的字节流中保持可变大小的字段的缓冲器 |
表1-每个分组的解析上下文
在一个实施例中,解析引擎210在流状态单元220中存储作为相关分组流一部分的分组的解析上下文。这允许解析引擎210将相关分组作为单字节流进行解析。当相关分组被接收时,解析引擎210获取解析上下文,如下表2的示例所示:
字段 | 大小 (字节) | 描述 |
状态 | 8 | 当前解析状态 |
位向量 | 8 | 用于减少.*s的开销的位向量 |
4个寄存器 | 4×4 | 4个32位寄存器 |
分类寄存器 | 4 | 包含分类的32位寄存器 |
返回地址寄存器 | 4 | 保存返回状态地址;用于一级深度的函数调用 |
表2-流状态单元220中维护的解析上下文
在另一实施例中,解析引擎210从分组本身确定解析上下文,如表3的示例所示:
字段 | 大小 (字节) | 描述 |
Pak desc | 4 | 分组标识符 |
解析模式 | 3 | 全状态(代理模式)或无状态(每分组模式) |
初始解析状态 | 8 | 每分组模式的开始状态或代理模式的第一分组 |
流id | 3 | 流状态单元220用于流中的后续分组的流id |
分组长度 | 4 | 分组的长度 |
解析偏移量 | 4 | 开始解析处的偏移量 |
表3-来自分组头部的解析上下文
此外,解析引擎210可从哈希单元216获取解析上下文。在一个实施例中,哈希单元216存储解析上下文中与流状态单元220有关的一部分。例如,该部分可仅包括状态地址和分类值。
在一个实施例中,解析上下文包含包括当前状态和下一状态的解析状态。该状态指示将从哪个状态图节点开始跟踪字符。下一状态是当前字符(或字节)和状态的结果。不包括解析指令的示例性解析状态格式如表4所示:
I-bit=0 | 保留 | 状态 | Char0 | Char1 | Char2 | Char3 | Char4 |
1位 | 3位 | 20位 | 8位 | 8位 | 8位 | 8位 | 8位 |
表4-没有指令的解析状态格式
解析状态被编码为依赖于从当前状态有多少个状态转换分支的格式。在用于小于等于5个下一状态的第一编码中,转换字符本身被存储在Char字段中。在用于6到256个下一状态之间的第二编码格式中,位图代表了哪些字符有转换。下面参考图4更详细地讨论解析状态编码。此外,下表6示出了用于从状态字段确定下一状态的伪代码。
在另一实施例中,解析器状态包括解析指令。解析指令指定了解析处理器120的动作或任务。表5示出了包括指令的示例性解析状态格式:
I-bit=1 | 保留 | 状态 | 指令 |
1位 | 3位 | 20位 | 40位 |
表5-具有指令的解析状态格式
解析引擎210还将节点的状态地址馈送到状态图单元230,并接收相关的解析指令。这里使用的“字符”一词包括字母数字文本和其他符号,例如可被整体、逐个字节或逐个比特解析的任意语言或代码的ASCII字符。作为从状态图单元230执行指令的结果,解析引擎210执行动作,例如跳到所指示的状态、越过分组中的几个字节、使用中间结果暂存器来执行计算、发送消息到网络处理器130、通过利用网络处理器130来变更相关联的网络分组中的头部,等等。解析引擎210还可以发送被解析的分组的状态信息到流状态单元220以供存储。
处理器核心212执行与解析引擎210的解析任务有关的指令,优选地是解析指令。处理器核心212还执行其他数据操纵任务,例如从状态图单元230取解析指令。处理器核心212例如包括通用处理核心、网络处理核心、多指令多数据核心、并行处理元件、控制器、多线程处理核心,或用于处理指令的任何其他器件,例如Santa Clara,California的Tensilica Inc.的Xtensa core、Mountain View,California的MIPS Technologies Inc.的MIPScore,或者Los Gatos,California的ARM Inc.的ARM core。在一个实施例中,处理器核心212包括120个个体处理器核心,用于并发地处理120个分组以便获得10-Gbps的吞吐量。
寄存器组214提供分组字段、计数器、解析上下文、状态信息、正则表达式匹配、操作数和/或由处理器核心212处理的其他数据的临时存储。寄存器组214优选地位于处理器核心212附近,并且具有用于低延迟和高带宽数据传输的专用信号线211。在一个实施例中,为每个处理器核心212留出寄存器组214的一部分。例如,120个寄存器组可支持120个用于10-Gbps吞吐量的解析上下文。寄存器组214例如包括32位的中间结果暂存器、64位的状态信息寄存器、64位的匹配关键字寄存器、64位的向量寄存器,等等。
哈希单元216使用哈希表,利用键来索引包含解析器状态或其他解析指令、分类和/或其他信息的条目。哈希单元216接收从状态图机器230中的节点等发送的由处理器核心212生成的键。例如,处理器核心212通过联接来自指令的立即(immediate)32位(即<immed>)操作数和包含在两个32位寄存器中的64位来获得96位键。在一个实施例中,哈希单元216存储分类和解析器状态,以便对被同样地分类的分组进行同一处理。哈希单元216可包括从若干个哈希表(包括TCP或其他协议哈希表、目的地哈希表、端口哈希表、源哈希表,等等)的组合获得的哈希表集合或全局哈希表。当全局哈希表包括哈希表集合时,可以预先设计键,使键的位能够在没有特殊硬件辅助的情况下区别于个体表。
在一个实施例中,TCP流表利用例如包括协议类型、目的地IP地址、目的地端口、源IP地址和/或源端口的键条目来存储信息。TCP流表提供立即上下文信息、分类、因分类而定的指令、因IP地址和/或端口而定的指令,等等。在一个实施例中,哈希单元216在表条目中存储例如状态这样的解析指令。
处理器核心212可以在哈希单元216上实现解析指令,或优选地实现特定的哈希指令。用于哈希单元216的示例性解析指令包括响应于解析指令利用通过联接立即操作数和寄存器而生成的键执行查找、插入、删除或修改哈希表条目的指令。
流状态单元220为作为分组流的一部分的分组维护流状态或解析状态,以便解析多个分组。例如,流状态单元220能够存储状态或下一解析指令。流状态单元220接收来自解析引擎210的流标识符(其可以是流状态信息的一部分或者与流状态信息有关)以便识别条目。在一个实施例中,流状态信息由流定序器110设置。在另一种情况下,下一状态信息都包括在被发送到解析引擎210的解析上下文中。
状态图单元230在数据结构中存储解析指令作为状态地址。例如,由处理器核心212执行的数据结构可以是有限状态机、确定有限自动机,或由状态节点和字符转换组织的任何其他数据结构。在状态图中,签名、URL或其他用于识别的模式都被抽象化为公共节点,并且通过转换加以区分。在解析引擎210取指令时,状态图单元230跟踪节点,直到例如达到嵌入解析指令中的正则表达式匹配、消息,等等。状态图单元230优选地包括FCRAM,但是也可包括SDRAM、SRAM或其他快速访问存储器。在一个实施例中,10个状态图单元230中的每一个都提供每秒120,000,000次64位读,以支持10Gbps的吞吐量。
解析指令单独地或组合起来描述用于内容指令的各种任务。一些解析指令仅嵌入数据,而其他则安排复杂的计算。解析指令可存储下一状态或节点作为地址。解析指令的示例性类别包括:寄存器指令,用于将分组内容存储到本地中间结果暂存器和从本地中间结果暂存器获取内容分组;ALU指令,用于执行比较和包括位向量操作在内的算术操作;消息指令,用于在分组解析期间可编程地产生关于事件的消息,以便外部实体(例如网络处理单元130)基于事件执行任务;函数调用指令,用于支持子例程;哈希查找便新,用于在分组解析期间可编程地操作哈希单元216。
可以以INSTR_NAME[<argument>]的格式描述指令。示例性的位向量指令包括:
·Bitvector_OR_hi<immed>;Bitvector_OR_lo<immed>-对立即值和位向量的高或低位作或(OR)操作;
●Bitvector_AND_hi<immed>;Bitvector_AND_lo<immed>-对立即值和位向量的高或低位作与(AND)操作;
●Bitvector_AND_SHIFT_OR_hi<immed>;Bitvector_AND_SHIFT_OR_lo<immed>-对立即操作数和位向量的高或低位作与操作;将结果右移1位,然后和适当位置处的位向量作或操作;以及
●Bitvector_to_reg;Bitvector_from_reg;Bitvector_jump_conditional<bit-index>。
示例性的寄存器指令包括:
●Copy_to_scratchpad<address>-将当前字节从分组拷贝到寄存器中的指定地址;
●Copy_immed_a<immed> -将位操作数拷贝到a寄存器;
●Copy_scratcad<from_address><to_address>-将值从一个中间结果暂存器拷贝到另一个;
●a<-10a+char-‘0’-将a的当前值乘以10,并将当前字符加到一个数上;用于将一个数的字符串表示转换为其寄存器值;
●Skip_a-越过字节流中的某些字节数;
●Is_digit-检查当前字符是否是数字;以及
●Br_a=immed<immed>;Br_a>immed<immed>;Br_a<immed<immed>-将a寄存器的低16位与立即16位值相比较。
示例性的函数调用指令包括:
●Call<immed>-在返回地址寄存器中保存状态;跳到<immed>中的状态地址;以及
●Return-跳到返回地址寄存器中的状态地址。
示例性的消息指令包括:
●Send_msg<msg-id>;Halt<msg-id>-发送消息id被设置为<msg-id>的消息;暂停流并发送消息id被设置为<msg-id>的消息;以及
●Tx_buff<msg-id>;Send_tx_buff<msg-id>-从字节流发送字节;发送NP_transmit_buff的内容。
示例性的哈希指令包括:
●Hash_look-up<immed>-如果键在哈希单元216中产生命中,则下一状态包括条目中指示的状态;如果没有命中,则下一状态包括默认状态;
●Hash_insert<immed>-哈希单元216将(状态+1)插入与键相关联的条目;
●Hash_delete<immed>-哈希单元216删除与键相关联的条目;以及
●Hash_insert_classify<immed>-哈希单元216将(状态+1,分类reg)插入与键相关联的条目。
在另一实施例中,状态图单元230支持软件的应用发现仿真。可以使用提供用户友好机制的高级语言编写该软件,以指定例如正则表达式搜索和其他复杂解析动作等解析逻辑。接下来,编译器把在高级语言中指定的解析逻辑转换为解析或机器指令。对于正则表达式,编译器可以转换为DFA。类似地,其他解析逻辑需要被编译为这样的图,该图的节点由一个或多个解析指令构成。
图3是示出了根据本发明一个实施例的状态图300的示例的序列图。状态图300将表达式“HTTP”和“HTML”组合为状态机。注意,状态图300可以组合包括几十万字符的几千个表示。作为开始状态的根节点302可具有大量转换,但是响应于下一字符“H”,新状态是节点304。类似地,节点306是响应于“H”之后的字符“T”的新状态。但是,如果接收到“T”以外的字符,则新状态返回根节点302。从节点306有两种可能的转换,“T”导向节点308,“M”导向节点312。如果“HTT”之后是“P”或者“HTM”之后是“L”,则新状态分别是匹配节点310和匹配节点314。
匹配节点是代表关键字匹配(即“HTTP”或“HTML”)的状态。在一个实施例中,解析引擎210将FTP中使用的关键字“PORT”之后的地址写到TCP哈希表。在另一实施例中,解析指令引导状态图单元230跳到不同的根节点,以识别“HTTP”字符之后的URL。在另一实施例中,解析引擎210发送消息到网络处理器230。
图4是示出了根据本发明一个实施例的解析状态编码的顺序图。表410示出了未编码解析状态。由于解析状态可包括基于256个字节(每字节8位)的最多256个转换,因此解析状态消耗2048位的存储器。但是,解析处理器120为了空间效率而对解析状态编码。
表420示出了第一优化。在此情形下,当存在小于等于5个实际转换时,那些字符可被存储在40位中,如上表1所示。表430和440示出了第二优化。在此情形下,当存在多于5个转换时,表430存储128位的位图而不是字符。每个位代表一个字符。在一个实施例中,如果对该字符有转换,则字符位被设置为“1”,如果没有,则设置为“0”。第二优化还将数据压缩到表440中,其中表430中的4个字符位的集合由单个位代表。因此,如果4个字符的集合存在至少一个转换,则该位可被设置为“1”,否则该位被设置为“0”。使用该最终优化,解析状态由32位加额外的一位代表,以便指示该表是编码了常用的高128位ASCII字符,还是编码了很少使用的低128位ASCII字符。因为编码显著减少了存储下一状态所需的位数,因此处理器120可高效地在片上存储大量转换。
在一个实施例中,Char0指示如何从编码后状态确定下一状态。例如,如果Char0是FF,则下一状态是上表4所示的状态(State)字段。如果存在多于5个转换,则Char0是FE或FD,以分别指示针对前128个ASCII字符和后128个ASCII字符编码的位图。否则,解析引擎210假设存在多于5个转换。该示例的伪代码如表6所示:
情况 | 伪代码 |
Char0是FF | 下一状态总是State |
Char0是FE | 位图针对前128个ASCII字符的转换编码If char>+128 next state=StateBitmap=32 bitencoding in Char 1 to Char 4If Bitmap[char/4]=0,next state=StateElseLet count=Number of 1’s in Bitmap strictly to the left of Bitmap[char/4]Next state=4*count+char%4+State+1 |
Char0是FD | 位图针对后128个ASCII字符的转换编码If char<128 next state=StateElsechar=char-128Bitmap=32 bitencodinginChar 1 to Char 4If Bitmap[char/4]=0,next state=StateElseLet count=Number of 1’s ib Bitmap strictly to the left of Bitmap[char/4]Next state=4*count+char%4+State+1 |
否则 | 针对小于等于5个外出转换的编码The next state for Char 0 ifnot FF is(State+1)The next state for Char 1 if not FF is(State+1)The next state for Char 2 if not FF is(State+1)The next state Char Char 3 ifnot FF is(State+1)The next state for Char 4 ifnot FF is(State+1)For all other characters the next state is State. |
表6-用于确定解析状态的伪代码
图5是示出了根据本发明一个实施例的解析网络分组的方法500的流程图。解析引擎210在510将来自流定序器单元110的分组接收到分组缓冲器240中。在解析之前,解析引擎210在520确定分组的解析上下文,如下参考图6所述。一般地,如果分组是分组流的一部分或者是有状态的,则至少部分解析上下文已经存储在流状态单元220或哈希单元216中。通过维护分组的有状态性,来自分组流的内容对状态图单元230显示为单个位流。
解析处理器120在530对分组或分组流执行指令驱动的分组解析,如下参考图7所述的那样。解析指令提供解析操作的灵活性,而不是仅仅识别正则表达式匹配。例如,解析指令使得解析处理器120能够从分组中提取IP地址和在哈希单元216中执行查找。哈希单元216中的解析指令使得解析处理器120能够越过分组的前20字节,然后提取接下来的4字节。如果4个提取出的字节与固定值匹配,则可采取额外的动作。此外,解析指令使得解析处理器120开始模式匹配,以获得诸如“.*abc”、“virus.dat”/“http”等预定模式。
在分组末尾,解析引擎210在540在流状态单元220和/或哈希单元216中存储有状态分组的解析上下文。此外,解析引擎210在550将分组与合适的消息一起发送到网络处理器单元130,或者发送到网络设备100之外。
图6是示出了根据本发明一个实施例的确定解析上下文的方法520的流程图。注意,图6仅是示例,其可随不同协议而变或通过以不同顺序执行步骤而变。解析引擎210首先在610确定分组上下文是否包含在来自流定序器110的头部或其他消息中。如果是,则解析引擎210在615使用头部信息作为解析器上下文,例如下一状态。如果不是,则解析引擎210在620确定解析器上下文是否存储在流状态单元中。如果是,则解析引擎210在625使用例如由流id标识的保存的解析器上下文。
否则,如果解析引擎210在630确定TCP表包含解析器上下文,则它在635使用来自TCP流表的解析上下文或至少其一部分。解析引擎210使用键来检查TCP流表。解析引擎210通过例如联接上述TCP信息来生成键。如果解析引擎210在630确定TCP表不包含解析器上下文,则它在645使用来自端口表的解析上下文或其一部分。
图7是示出了根据本发明一个实施例的执行指令驱动的分组处理的方法530的流程图。在解析状态中,I位被设置为“1”,以指示它包含解析指令,如表5所示。因此,一旦接收到解析上下文,解析引擎210就在710从解析上下文得到下一状态。解析引擎210在720使用状态地址从状态图单元230取解析指令。处理器核心212在730针对字符执行解析指令,以确定下一状态。解析引擎210在740前进到下一字符,在750,如果它是末尾字节流字符,则过程结束。否则,过程继续到720,在字节流的下一状态末尾取解析指令。
以上描述示出了优选实施例的操作,而并不限制本发明的范围。相反,本发明的范围仅由所附权利要求限定。
Claims (45)
1.一种分组解析处理器,包括:
解析引擎,所述解析引擎具有用于接收代表网络分组的的信号的输入,并且响应于解析指令对所述分组执行指令驱动的分组解析;以及
状态图单元,所述状态图单元具有耦合到所述解析引擎的第二输入/输出的输入/输出,并且用于存储所述解析指令。
2.如权利要求1所述的分组处理器,其中所述解析引擎还包括存储解析状态的一部分的哈希单元,其中所述解析引擎生成键来查找所述解析状态的一部分。
3.如权利要求2所述的分组处理器,其中所述哈希表包括TCP(传输控制协议)流表,所述键包括目的地IP(因特网协议)地址和目的地端口。
4.如权利要求1所述的分组处理器,其中所述解析引擎还包括用于在执行解析指令时存储数据的多个中间结果暂存器。
5.如权利要求1所述的分组处理器,其中解析指令与所述状态图中的节点相关联,所述解析引擎响应于节点匹配来执行所述解析指令。
6.如权利要求1所述的分组处理器,其中所述解析指令的一部分仿真来自用于应用识别的软件应用的节点。
7.如权利要求1所述的分组处理器,其中解析指令包括代表字符是否具有转换的编码后位图。
8.如权利要求1所述的分组处理器,其中所述状态图单元包括FCRAM(快速循环随机访问存储器)。
9.如权利要求1所述的分组处理器,其中所述解析引擎还包括用于执行解析指令的多个处理核心。
10.如权利要求1所述的分组处理器,还包括流状态单元,所述流状态单元具有耦合到所述解析引擎的第一输入/输出的输入/输出,并且所述流状态单元维护分组流上的解析状态。
11.如权利要求10所述的分组处理器,其中所述解析引擎在解析所述网络分组之后在所述流状态单元中存储所述解析器状态。
12.如权利要求1所述的分组处理器,其中所述分组处理器包含在网络设备中,耦合到以10-Gbps或更高速率操作的网络,网络设备执行从包含数据分组路由选择、数据分组转发、数据分组桥接的组中选出的一个。
13.如权利要求1所述的分组处理器,其中所述分组解析支持从包含入侵检测、服务质量、应用识别、病毒检测和应用级防火墙的组中选出的一个。
14.一种分组解析处理器,包括:
用于响应于解析指令解析网络分组的装置;以及
用于形成图的装置,所述用于形成图的装置耦合到用于正则表达式匹配的装置,所述用于形成图的装置识别状态图和所述网络分组之间的关键字匹配。
15.如权利要求14所述的分组处理器,其中所述用于解析的装置还包括用于执行哈希操作来存储解析状态的装置,其中所述用于解析的装置生成键来查找所述解析状态的一部分。
16.如权利要求15所述的分组处理器,其中所述用于执行哈希操作的装置包括TCP(传输控制协议)哈希表,所述键包括目的地IP(因特网协议)地址和目的地端口。
17.如权利要求14所述的分组处理器,其中所述用于正则表达式匹配的装置还包括多个用于在执行解析指令时存储数据的装置。
18.如权利要求14所述的分组处理器,其中解析指令与所述状态图中的节点相关联,所述用于正则表达式匹配的装置响应于节点匹配来执行所述解析指令。
19.如权利要求14所述的分组处理器,其中所述解析指令的一部分仿真来自用于应用识别的软件应用的节点。
20.如权利要求14所述的分组处理器,其中解析指令包括代表字符是否具有转换的编码后位图。
21.如权利要求14所述的分组处理器,其中所述用于正则表达式匹配的装置还包括多个用于执行解析指令的装置。
22.如权利要求14所述的分组处理器,还包括用于维护的装置,所述用于维护的装置耦合到所述用于正则表达式匹配的装置,所述用于维护的装置存储多个分组流的解析状态。
23.如权利要求14所述的分组处理器,其中所述用于正则表达式匹配的装置在解析所述网络分组之后在所述用于维护的装置中存储所述解析器状态。
24.一种在处理器中解析分组的方法,包括:
接收网络分组,
响应于遍历状态机的节点的解析指令,对所述网络分组执行指令驱动的分组解析;以及
在对应于所述节点的存储器地址中存储解析指令。
25.如权利要求24所述的方法,其中所述执行指令驱动的分组解析的操作还将解析状态的一部分存储在哈希单元中,并生成键来查找所述解析状态的一部分。
26.如权利要求25所述的方法,其中所述哈希表包括TCP(传输控制协议)哈希表,所述键包括目的地IP(因特网协议)地址和目的地端口。
27.如权利要求24所述的方法,其中所述执行指令驱动的分组解析的操作还包括执行中间结果暂存器中的解析指令。
28.如权利要求24所述的方法,还包括:
维护多个分组流的解析状态。
29.如权利要求24所述的方法,其中解析指令与所述状态图中的节点相关联,识别关键字匹配的操作还包括识别所述状态图的节点处的解析指令,并响应于节点匹配来执行所述解析指令。
30.如权利要求24所述的方法,其中所述解析指令的一部分仿真来自用于应用识别的软件应用的节点。
31.如权利要求24所述的方法,其中解析指令包括代表字符是否具有转换的编码后位图。
32.如权利要求24所述的方法,其中所述识别关键字匹配的操作包括识别存储在FCRAM(快速循环随机访问存储器)中的状态图上的关键字匹配。
33.如权利要求24所述的方法,还包括执行解析指令。
34.如权利要求24所述的方法,所述维护流状态的操作还包括在解析所述网络分组之后存储所述解析器状态。
35.一种计算机程序产品,包括其上具有用于在处理器中解析分组的计算机程序指令和数据的计算机可读介质,包括:
接收网络分组,
响应于经过状态机的节点的解析指令,对所述网络分组执行指令驱动的分组解析;以及
在对应于所述节点的存储器地址中存储解析指令。
36.如权利要求35所述的计算机程序产品,其中所述执行指令驱动的分组解析的操作还将解析状态的一部分存储在哈希单元中,并生成键来查找所述解析状态的一部分。
37.如权利要求36所述的计算机程序产品,其中所述哈希表包括TCP(传输控制协议)哈希表,所述键包括目的地IP(因特网协议)地址和目的地端口。
38.如权利要求35所述的计算机程序产品,其中所述执行指令驱动的分组解析的操作还包括执行中间结果暂存器中的解析指令。
39.如权利要求35所述的计算机程序产品,还包括:
维护多个分组流的解析状态。
40.如权利要求35所述的计算机程序产品,其中解析指令与所述状态图中的节点相关联,识别关键字匹配的操作还包括识别所述状态图的节点处的解析指令,并响应于节点匹配来执行所述解析指令。
41.如权利要求35所述的计算机程序产品,其中所述解析指令的一部分仿真来自用于应用识别的软件应用的节点。
42.如权利要求35所述的计算机程序产品,其中解析指令包括代表字符是否具有转换的编码后位图。
43.如权利要求35所述的计算机程序产品,其中所述识别关键字匹配的操作包括识别存储在FCRAM(快速循环随机访问存储器)中的状态图上的关键字匹配。
44.如权利要求35所述的计算机程序产品,其中还包括执行解析指令。
45.如权利要求35所述的计算机程序产品,所述维护所述流状态的操作还包括在解析所述网络分组之后存储所述解析器状态。
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/832,796 US7586851B2 (en) | 2004-04-26 | 2004-04-26 | Programmable packet parsing processor |
US10/832,796 | 2004-04-26 | ||
US10/927,175 | 2004-08-25 | ||
US10/927,602 | 2004-08-25 | ||
US10/927,175 US7619983B2 (en) | 2004-04-26 | 2004-08-25 | Parse state encoding for a packet parsing processor |
US10/927,290 | 2004-08-25 | ||
US10/927,602 US7957378B2 (en) | 2004-04-26 | 2004-08-25 | Stateful flow of network packets within a packet parsing processor |
US10/927,290 US7623468B2 (en) | 2004-04-26 | 2004-08-25 | Programmable packet parsing processor |
PCT/US2005/013191 WO2005109788A2 (en) | 2004-04-26 | 2005-04-19 | Programmable packet parsing processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101095310A true CN101095310A (zh) | 2007-12-26 |
CN101095310B CN101095310B (zh) | 2018-09-28 |
Family
ID=35136342
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200580011925.5A Active CN101095310B (zh) | 2004-04-26 | 2005-04-19 | 分组解析处理器及在处理器中解析分组的方法 |
Country Status (2)
Country | Link |
---|---|
US (4) | US7586851B2 (zh) |
CN (1) | CN101095310B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591930A (zh) * | 2010-12-15 | 2012-07-18 | 微软公司 | 分解和合并正则表达式 |
CN103081436A (zh) * | 2010-08-31 | 2013-05-01 | 阿尔卡特朗讯公司 | 提供mmolp 通信服务的方法 |
CN105323164A (zh) * | 2014-06-19 | 2016-02-10 | 凯为公司 | 减少灵活的解析器中的延迟的方法及其装置 |
US10616380B2 (en) | 2014-06-19 | 2020-04-07 | Cavium, Llc | Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof |
US10785169B2 (en) | 2013-12-30 | 2020-09-22 | Marvell Asia Pte, Ltd. | Protocol independent programmable switch (PIPS) for software defined data center networks |
US11050859B2 (en) | 2014-06-19 | 2021-06-29 | Marvell Asia Pte, Ltd. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
CN114342343A (zh) * | 2019-08-13 | 2022-04-12 | 华为技术有限公司 | 一种用于处理数据包的网络数据包处理器 |
Families Citing this family (124)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7346757B2 (en) | 2002-10-08 | 2008-03-18 | Rmi Corporation | Advanced processor translation lookaside buffer management in a multithreaded system |
US8176298B2 (en) | 2002-10-08 | 2012-05-08 | Netlogic Microsystems, Inc. | Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline |
US8478811B2 (en) | 2002-10-08 | 2013-07-02 | Netlogic Microsystems, Inc. | Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip |
US8015567B2 (en) | 2002-10-08 | 2011-09-06 | Netlogic Microsystems, Inc. | Advanced processor with mechanism for packet distribution at high line rate |
US7924828B2 (en) | 2002-10-08 | 2011-04-12 | Netlogic Microsystems, Inc. | Advanced processor with mechanism for fast packet queuing operations |
US7984268B2 (en) | 2002-10-08 | 2011-07-19 | Netlogic Microsystems, Inc. | Advanced processor scheduling in a multithreaded system |
US9088474B2 (en) | 2002-10-08 | 2015-07-21 | Broadcom Corporation | Advanced processor with interfacing messaging network to a CPU |
US8037224B2 (en) | 2002-10-08 | 2011-10-11 | Netlogic Microsystems, Inc. | Delegating network processor operations to star topology serial bus interfaces |
US7961723B2 (en) | 2002-10-08 | 2011-06-14 | Netlogic Microsystems, Inc. | Advanced processor with mechanism for enforcing ordering between information sent on two independent networks |
US7334086B2 (en) | 2002-10-08 | 2008-02-19 | Rmi Corporation | Advanced processor with system on a chip interconnect technology |
US7627721B2 (en) | 2002-10-08 | 2009-12-01 | Rmi Corporation | Advanced processor with cache coherency |
US9614772B1 (en) | 2003-10-20 | 2017-04-04 | F5 Networks, Inc. | System and method for directing network traffic in tunneling applications |
US8392590B2 (en) * | 2004-09-10 | 2013-03-05 | Cavium, Inc. | Deterministic finite automata (DFA) processing |
US8560475B2 (en) | 2004-09-10 | 2013-10-15 | Cavium, Inc. | Content search mechanism that uses a deterministic finite automata (DFA) graph, a DFA state machine, and a walker process |
US8301788B2 (en) * | 2004-09-10 | 2012-10-30 | Cavium, Inc. | Deterministic finite automata (DFA) instruction |
US7535845B2 (en) * | 2004-10-28 | 2009-05-19 | Alcatel Lucent | Intelligent selective flow-based datapath architecture |
GB2422450A (en) * | 2005-01-21 | 2006-07-26 | 3Com Corp | Pattern-matching using a deterministic finite state machine |
US7784094B2 (en) * | 2005-06-30 | 2010-08-24 | Intel Corporation | Stateful packet content matching mechanisms |
US8418233B1 (en) * | 2005-07-29 | 2013-04-09 | F5 Networks, Inc. | Rule based extensible authentication |
US8533308B1 (en) | 2005-08-12 | 2013-09-10 | F5 Networks, Inc. | Network traffic management through protocol-configurable transaction processing |
US8296846B2 (en) * | 2005-08-19 | 2012-10-23 | Cpacket Networks, Inc. | Apparatus and method for associating categorization information with network traffic to facilitate application level processing |
US8665868B2 (en) * | 2005-08-19 | 2014-03-04 | Cpacket Networks, Inc. | Apparatus and method for enhancing forwarding and classification of network traffic with prioritized matching and categorization |
US8346918B2 (en) * | 2005-08-19 | 2013-01-01 | Cpacket Networks, Inc. | Apparatus and method for biased and weighted sampling of network traffic to facilitate network monitoring |
US7486673B2 (en) * | 2005-08-29 | 2009-02-03 | Connect Technologies Corporation | Method and system for reassembling packets prior to searching |
US8547843B2 (en) | 2006-01-20 | 2013-10-01 | Saisei Networks Pte Ltd | System, method, and computer program product for controlling output port utilization |
US20070171825A1 (en) * | 2006-01-20 | 2007-07-26 | Anagran, Inc. | System, method, and computer program product for IP flow routing |
US8565088B1 (en) | 2006-02-01 | 2013-10-22 | F5 Networks, Inc. | Selectively enabling packet concatenation based on a transaction boundary |
US8244855B1 (en) * | 2006-06-21 | 2012-08-14 | Qurio Holdings, Inc. | Application state aware mediating server |
US8102863B1 (en) | 2006-06-27 | 2012-01-24 | Qurio Holdings, Inc. | High-speed WAN to wireless LAN gateway |
US20100085891A1 (en) * | 2006-12-19 | 2010-04-08 | Andreas Kind | Apparatus and method for analysing a network |
US9106606B1 (en) | 2007-02-05 | 2015-08-11 | F5 Networks, Inc. | Method, intermediate device and computer program code for maintaining persistency |
US8117530B2 (en) * | 2007-02-19 | 2012-02-14 | International Business Machines Corporation | Extensible markup language parsing using multiple XML parsers |
US7408484B1 (en) | 2007-02-20 | 2008-08-05 | International Business Machines Corporation | Method of doing PACK unicode zSeries instructions |
US7853687B2 (en) * | 2007-03-05 | 2010-12-14 | Alcatel Lucent | Access control list generation and validation tool |
US9270641B1 (en) * | 2007-07-31 | 2016-02-23 | Hewlett Packard Enterprise Development Lp | Methods and systems for using keywords preprocessing, Boyer-Moore analysis, and hybrids thereof, for processing regular expressions in intrusion-prevention systems |
US8819217B2 (en) * | 2007-11-01 | 2014-08-26 | Cavium, Inc. | Intelligent graph walking |
US8180803B2 (en) * | 2007-11-27 | 2012-05-15 | Cavium, Inc. | Deterministic finite automata (DFA) graph compression |
US7949683B2 (en) | 2007-11-27 | 2011-05-24 | Cavium Networks, Inc. | Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph |
TWI363532B (en) * | 2008-01-21 | 2012-05-01 | Univ Nat Taiwan | Method and system for packet classificiation with reduced memory space and enhanced access speed |
US9596324B2 (en) * | 2008-02-08 | 2017-03-14 | Broadcom Corporation | System and method for parsing and allocating a plurality of packets to processor core threads |
US9832069B1 (en) | 2008-05-30 | 2017-11-28 | F5 Networks, Inc. | Persistence based on server response in an IP multimedia subsystem (IMS) |
GB2462493B (en) * | 2008-08-13 | 2012-05-16 | Gnodal Ltd | Data processing |
US9130846B1 (en) | 2008-08-27 | 2015-09-08 | F5 Networks, Inc. | Exposed control components for customizable load balancing and persistence |
US8473523B2 (en) | 2008-10-31 | 2013-06-25 | Cavium, Inc. | Deterministic finite automata graph traversal with nodal bit mapping |
US8199745B2 (en) * | 2008-12-29 | 2012-06-12 | At&T Intellectual Property I, L.P. | Method and apparatus for generalized third-party call control in session initiation protocol networks |
US9471713B2 (en) * | 2009-02-11 | 2016-10-18 | International Business Machines Corporation | Handling complex regex patterns storage-efficiently using the local result processor |
US9871807B2 (en) * | 2009-06-12 | 2018-01-16 | Microsoft Technology Licensing, Llc | Generic protocol decoder for generic application-level protocol signatures |
FR2949934B1 (fr) * | 2009-09-09 | 2011-10-28 | Qosmos | Surveillance d'une session de communication comportant plusieurs flux sur un reseau de donnees |
US9026768B2 (en) * | 2009-09-14 | 2015-05-05 | AEMEA Inc. | Executing machine instructions comprising input/output pairs of execution nodes |
EP2348418A1 (en) * | 2009-12-18 | 2011-07-27 | Siemens Aktiengesellschaft | Multi trace parser |
US9276975B2 (en) | 2010-03-24 | 2016-03-01 | Thomson Licensing | Method and apparatus for monitoring quality of service of network |
CN101827095B (zh) * | 2010-04-06 | 2012-10-24 | 北京网康科技有限公司 | 一种基于回车换行快速协议解析的方法及设备 |
US8914603B2 (en) * | 2010-07-30 | 2014-12-16 | Motorola Mobility Llc | System and method for synching Portable Media Player content with storage space optimization |
US8619782B2 (en) * | 2010-12-14 | 2013-12-31 | International Business Machines Corporation | Bidirectional packet flow transformation |
US9152779B2 (en) | 2011-01-16 | 2015-10-06 | Michael Stephen Fiske | Protecting codes, keys and user credentials with identity and patterns |
US10268843B2 (en) | 2011-12-06 | 2019-04-23 | AEMEA Inc. | Non-deterministic secure active element machine |
FR2973188B1 (fr) | 2011-03-25 | 2013-04-19 | Qosmos | Procede et dispositif d'extraction de donnees |
US9246928B2 (en) * | 2011-05-02 | 2016-01-26 | International Business Machines Corporation | Compiling pattern contexts to scan lanes under instruction execution constraints |
EP2560338B1 (en) | 2011-06-13 | 2016-01-13 | Huawei Technologies Co., Ltd. | Method and apparatus for protocol parsing |
US8990259B2 (en) | 2011-06-24 | 2015-03-24 | Cavium, Inc. | Anchored patterns |
US9858051B2 (en) * | 2011-06-24 | 2018-01-02 | Cavium, Inc. | Regex compiler |
JP5657840B2 (ja) | 2011-08-02 | 2015-01-21 | カビウム・インコーポレーテッド | ルックアップ・フロントエンド・パケット出力プロセッサ |
US9282173B2 (en) | 2012-02-17 | 2016-03-08 | Viavi Solutions Inc. | Reconfigurable packet header parsing |
US8953451B2 (en) | 2012-06-14 | 2015-02-10 | The Boeing Company | Apparatus, methods, and systems for character set surveying of network traffic |
US10320955B1 (en) * | 2012-08-30 | 2019-06-11 | Keysight Technologies, Inc. | Method for decoding data packets |
CN104639512B (zh) * | 2013-11-14 | 2018-08-21 | 华为技术有限公司 | 网络安全方法和设备 |
JP6364761B2 (ja) * | 2013-12-18 | 2018-08-01 | 日本電気株式会社 | ネットワークシステムおよび通信方法 |
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 |
US10447823B2 (en) * | 2014-01-08 | 2019-10-15 | Marvell Semiconductor, Inc. | Packet parsing engine |
US9781062B2 (en) * | 2014-01-08 | 2017-10-03 | Oracle International Corporation | Using annotations to extract parameters from messages |
US10284690B2 (en) * | 2014-01-08 | 2019-05-07 | Cavium, Llc | Methods and systems for distribution of packets among parsing clusters |
US20150195383A1 (en) * | 2014-01-08 | 2015-07-09 | Cavium, Inc. | Methods and systems for single instruction multiple data programmable packet parsers |
US9667446B2 (en) | 2014-01-08 | 2017-05-30 | Cavium, Inc. | Condition code approach for comparing rule and packet data that are provided in portions |
US9729512B2 (en) | 2014-06-04 | 2017-08-08 | Nicira, Inc. | Use of stateless marking to speed up stateful firewall rule processing |
US9825913B2 (en) * | 2014-06-04 | 2017-11-21 | Nicira, Inc. | Use of stateless marking to speed up stateful firewall rule processing |
US9729439B2 (en) | 2014-09-26 | 2017-08-08 | 128 Technology, Inc. | Network packet flow controller |
GB2532208A (en) | 2014-11-07 | 2016-05-18 | Ibm | Host network controller |
US10277506B2 (en) | 2014-12-08 | 2019-04-30 | 128 Technology, Inc. | Stateful load balancing in a stateless network |
TWI553502B (zh) | 2015-03-05 | 2016-10-11 | 緯創資通股份有限公司 | 用於應用程式層之防火牆裝置的保護方法與其電腦系統 |
US9736184B2 (en) | 2015-03-17 | 2017-08-15 | 128 Technology, Inc. | Apparatus and method for using certificate data to route data |
US9729682B2 (en) | 2015-05-18 | 2017-08-08 | 128 Technology, Inc. | Network device and method for processing a session using a packet signature |
US9762485B2 (en) | 2015-08-24 | 2017-09-12 | 128 Technology, Inc. | Network packet flow controller with extended session management |
US9871748B2 (en) | 2015-12-09 | 2018-01-16 | 128 Technology, Inc. | Router with optimized statistical functionality |
US9985883B2 (en) | 2016-02-26 | 2018-05-29 | 128 Technology, Inc. | Name-based routing system and method |
CN112087519A (zh) * | 2016-04-12 | 2020-12-15 | 伽德诺克斯信息技术有限公司 | 具有被配置为实现安全锁定的相关设备的特别编程的计算系统及其使用方法 |
US10110563B1 (en) * | 2016-04-28 | 2018-10-23 | Palo Alto Networks, Inc. | Reduction and acceleration of a deterministic finite automaton |
US10205651B2 (en) | 2016-05-13 | 2019-02-12 | 128 Technology, Inc. | Apparatus and method of selecting next hops for a session |
US10298616B2 (en) | 2016-05-26 | 2019-05-21 | 128 Technology, Inc. | Apparatus and method of securing network communications |
US10841206B2 (en) | 2016-05-31 | 2020-11-17 | 128 Technology, Inc. | Flow modification including shared context |
US10200264B2 (en) | 2016-05-31 | 2019-02-05 | 128 Technology, Inc. | Link status monitoring based on packet loss detection |
US10091099B2 (en) | 2016-05-31 | 2018-10-02 | 128 Technology, Inc. | Session continuity in the presence of network address translation |
US9832072B1 (en) | 2016-05-31 | 2017-11-28 | 128 Technology, Inc. | Self-configuring computer network router |
US10257061B2 (en) | 2016-05-31 | 2019-04-09 | 128 Technology, Inc. | Detecting source network address translation in a communication system |
US11075836B2 (en) | 2016-05-31 | 2021-07-27 | 128 Technology, Inc. | Reverse forwarding information base enforcement |
US10009282B2 (en) | 2016-06-06 | 2018-06-26 | 128 Technology, Inc. | Self-protecting computer network router with queue resource manager |
US9985872B2 (en) | 2016-10-03 | 2018-05-29 | 128 Technology, Inc. | Router with bilateral TCP session monitoring |
GB2556636A (en) * | 2016-11-21 | 2018-06-06 | The Sec Dep For Foreign And Commonwealth Affairs | Method and device for filtering packets |
US10397144B2 (en) * | 2016-12-22 | 2019-08-27 | Intel Corporation | Receive buffer architecture method and apparatus |
US10425511B2 (en) | 2017-01-30 | 2019-09-24 | 128 Technology, Inc. | Method and apparatus for managing routing disruptions in a computer network |
EP3593498B1 (en) | 2017-03-07 | 2023-05-03 | 128 Technology, Inc. | Router device using flow duplication |
US10432519B2 (en) | 2017-05-26 | 2019-10-01 | 128 Technology, Inc. | Packet redirecting router |
US11165863B1 (en) | 2017-08-04 | 2021-11-02 | 128 Technology, Inc. | Network neighborhoods for establishing communication relationships between communication interfaces in an administrative domain |
US10374803B2 (en) | 2017-10-06 | 2019-08-06 | Stealthpath, Inc. | Methods for internet communication security |
US10375019B2 (en) | 2017-10-06 | 2019-08-06 | Stealthpath, Inc. | Methods for internet communication security |
US10361859B2 (en) | 2017-10-06 | 2019-07-23 | Stealthpath, Inc. | Methods for internet communication security |
US10630642B2 (en) | 2017-10-06 | 2020-04-21 | Stealthpath, Inc. | Methods for internet communication security |
US10367811B2 (en) | 2017-10-06 | 2019-07-30 | Stealthpath, Inc. | Methods for internet communication security |
US10397186B2 (en) | 2017-10-06 | 2019-08-27 | Stealthpath, Inc. | Methods for internet communication security |
US10033750B1 (en) | 2017-12-05 | 2018-07-24 | Redberry Systems, Inc. | Real-time regular expression search engine |
US9967272B1 (en) | 2017-12-05 | 2018-05-08 | Redberry Systems, Inc. | Real-time regular expression search engine |
US11093308B2 (en) * | 2017-12-15 | 2021-08-17 | Ovh Us Llc | System and method for sending messages to configure remote virtual endpoints in nodes of a systolic array |
US20190253341A1 (en) | 2018-02-15 | 2019-08-15 | 128 Technology, Inc. | Service Related Routing Method and Apparatus |
GB2584895B (en) * | 2019-06-20 | 2022-03-09 | 1E Ltd | Determining a state of a network |
US11558423B2 (en) | 2019-09-27 | 2023-01-17 | Stealthpath, Inc. | Methods for zero trust security with high quality of service |
US11258885B2 (en) | 2019-12-10 | 2022-02-22 | Mellanox Technologies, Ltd. | Flexible parser in a networking device |
US11323372B2 (en) | 2020-04-21 | 2022-05-03 | Mellanox Technologies Ltd. | Flexible steering |
CN115428411A (zh) | 2020-04-23 | 2022-12-02 | 瞻博网络公司 | 使用会话建立度量的会话监测 |
US11829793B2 (en) | 2020-09-28 | 2023-11-28 | Vmware, Inc. | Unified management of virtual machines and bare metal computers |
US11425230B2 (en) | 2021-01-28 | 2022-08-23 | Mellanox Technologies, Ltd. | Efficient parsing tuned to prevalent packet types |
US11743270B2 (en) * | 2021-04-16 | 2023-08-29 | Visa International Service Association | Method, system, and computer program product for protocol parsing for network security |
US11711453B2 (en) | 2021-10-24 | 2023-07-25 | Mellanox Technologies, Ltd. | Template-based packet parsing |
US11928062B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Accelerating data message classification with smart NICs |
US11899594B2 (en) | 2022-06-21 | 2024-02-13 | VMware LLC | Maintenance of data message classification cache on smart NIC |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5414650A (en) * | 1993-03-24 | 1995-05-09 | Compression Research Group, Inc. | Parsing information onto packets using context-insensitive parsing rules based on packet characteristics |
US5812760A (en) * | 1996-06-25 | 1998-09-22 | Lsi Logic Corporation | Programmable byte wise MPEG systems layer parser |
US5748905A (en) * | 1996-08-30 | 1998-05-05 | Fujitsu Network Communications, Inc. | Frame classification using classification keys |
US6360213B1 (en) * | 1997-10-14 | 2002-03-19 | International Business Machines Corporation | System and method for continuously adaptive indexes |
WO2000003256A1 (en) * | 1998-07-08 | 2000-01-20 | Broadcom Corporation | Network switch utilizing packet based per head-of-line blocking prevention |
US6539021B1 (en) * | 1998-10-02 | 2003-03-25 | Nortel Networks Limited | Role based management independent of the hardware topology |
US6480489B1 (en) * | 1999-03-01 | 2002-11-12 | Sun Microsystems, Inc. | Method and apparatus for data re-assembly with a high performance network interface |
US6356951B1 (en) * | 1999-03-01 | 2002-03-12 | Sun Microsystems, Inc. | System for parsing a packet for conformity with a predetermined protocol using mask and comparison values included in a parsing instruction |
US6789116B1 (en) * | 1999-06-30 | 2004-09-07 | Hi/Fn, Inc. | State processor for pattern matching in a network monitor device |
US6460120B1 (en) * | 1999-08-27 | 2002-10-01 | International Business Machines Corporation | Network processor, memory organization and methods |
US6614789B1 (en) * | 1999-12-29 | 2003-09-02 | Nasser Yazdani | Method of and apparatus for matching strings of different lengths |
US6892237B1 (en) * | 2000-03-28 | 2005-05-10 | Cisco Technology, Inc. | Method and apparatus for high-speed parsing of network messages |
US6310563B1 (en) * | 2000-05-12 | 2001-10-30 | International Business Machines Corporation | Method and apparatus for enhanced decompressor parsing |
AUPQ849500A0 (en) * | 2000-06-30 | 2000-07-27 | Canon Kabushiki Kaisha | Hash compact xml parser |
US6952425B1 (en) * | 2000-11-14 | 2005-10-04 | Cisco Technology, Inc. | Packet data analysis with efficient and flexible parsing capabilities |
US6944168B2 (en) * | 2001-05-04 | 2005-09-13 | Slt Logic Llc | System and method for providing transformation of multi-protocol packets in a data stream |
US6904057B2 (en) * | 2001-05-04 | 2005-06-07 | Slt Logic Llc | Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification |
US6952756B1 (en) * | 2001-05-08 | 2005-10-04 | Lewiz Communications | Method and apparatus for speculative loading of a memory |
US6556999B1 (en) * | 2001-06-08 | 2003-04-29 | Syntex (Usa) Llc | System and method for bridging a clinical remote data entry product to a back-end clinical data management system |
US7200144B2 (en) * | 2001-10-18 | 2007-04-03 | Qlogic, Corp. | Router and methods using network addresses for virtualization |
US20030185220A1 (en) * | 2002-03-27 | 2003-10-02 | Moshe Valenci | Dynamically loading parsing capabilities |
US7187694B1 (en) * | 2002-03-29 | 2007-03-06 | Pmc-Sierra, Inc. | Generic packet parser |
US7089486B1 (en) * | 2002-08-16 | 2006-08-08 | Juniper Networks, Inc. | Context switching for on-the-fly processing of fragmented frames |
WO2004025920A1 (en) * | 2002-09-12 | 2004-03-25 | International Business Machines Corporation | A method and apparatus for deep packet processing |
US20040210663A1 (en) * | 2003-04-15 | 2004-10-21 | Paul Phillips | Object-aware transport-layer network processing engine |
US7751440B2 (en) * | 2003-12-04 | 2010-07-06 | Intel Corporation | Reconfigurable frame parser |
-
2004
- 2004-04-26 US US10/832,796 patent/US7586851B2/en active Active
- 2004-08-25 US US10/927,290 patent/US7623468B2/en active Active
- 2004-08-25 US US10/927,602 patent/US7957378B2/en active Active
- 2004-08-25 US US10/927,175 patent/US7619983B2/en not_active Expired - Fee Related
-
2005
- 2005-04-19 CN CN200580011925.5A patent/CN101095310B/zh active Active
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103081436A (zh) * | 2010-08-31 | 2013-05-01 | 阿尔卡特朗讯公司 | 提供mmolp 通信服务的方法 |
CN103081436B (zh) * | 2010-08-31 | 2015-06-03 | 阿尔卡特朗讯公司 | 提供MMoIP通信服务的方法 |
CN102591930A (zh) * | 2010-12-15 | 2012-07-18 | 微软公司 | 分解和合并正则表达式 |
CN102591930B (zh) * | 2010-12-15 | 2015-04-29 | 微软公司 | 分解和合并正则表达式 |
US10785169B2 (en) | 2013-12-30 | 2020-09-22 | Marvell Asia Pte, Ltd. | Protocol independent programmable switch (PIPS) for software defined data center networks |
US11824796B2 (en) | 2013-12-30 | 2023-11-21 | Marvell Asia Pte, Ltd. | Protocol independent programmable switch (PIPS) for software defined data center networks |
CN105323164A (zh) * | 2014-06-19 | 2016-02-10 | 凯为公司 | 减少灵活的解析器中的延迟的方法及其装置 |
US10616380B2 (en) | 2014-06-19 | 2020-04-07 | Cavium, Llc | Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof |
CN105323164B (zh) * | 2014-06-19 | 2020-09-08 | 马维尔亚洲私人有限公司 | 减少灵活的解析器中的延迟的方法及其装置 |
US11050859B2 (en) | 2014-06-19 | 2021-06-29 | Marvell Asia Pte, Ltd. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
US11799989B2 (en) | 2014-06-19 | 2023-10-24 | Marvell Asia Pte, Ltd. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
CN114342343A (zh) * | 2019-08-13 | 2022-04-12 | 华为技术有限公司 | 一种用于处理数据包的网络数据包处理器 |
Also Published As
Publication number | Publication date |
---|---|
US7957378B2 (en) | 2011-06-07 |
US7623468B2 (en) | 2009-11-24 |
US20050238010A1 (en) | 2005-10-27 |
US7619983B2 (en) | 2009-11-17 |
US20050238012A1 (en) | 2005-10-27 |
US7586851B2 (en) | 2009-09-08 |
US20050238011A1 (en) | 2005-10-27 |
CN101095310B (zh) | 2018-09-28 |
US20050238022A1 (en) | 2005-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101095310A (zh) | 可编程分组解析处理器 | |
US9652505B2 (en) | Content search pattern matching using deterministic finite automata (DFA) graphs | |
US9762544B2 (en) | Reverse NFA generation and processing | |
US8819217B2 (en) | Intelligent graph walking | |
US9563399B2 (en) | Generating a non-deterministic finite automata (NFA) graph for regular expression patterns with advanced features | |
US8867395B2 (en) | Accelerating data packet parsing | |
US20110016154A1 (en) | Profile-based and dictionary based graph caching | |
US9251440B2 (en) | Multiple step non-deterministic finite automaton matching | |
US6778534B1 (en) | High-performance network processor | |
CN102014065A (zh) | 报文包头的解析方法、包头解析预处理装置和网络处理器 | |
EP1757039A2 (en) | Programmable packet parsing processor | |
WO2020092099A1 (en) | Configuring and performing character pattern recognition in a data plane circuit | |
Karimov et al. | Problems of increasing efficiency of NIDS by using implementing methods packet classifications on FPGA | |
Li et al. | Parsing application layer protocol with commodity hardware for SDN | |
CN110933001B (zh) | 一种可扩展的可重构交换机包解析器基本处理单元结构 | |
KR101553399B1 (ko) | 패킷 파싱 프로세서와 시스템 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |