用于遍历为具有高级特征的正则表达式图样生成的非确定有限自动机(nfa)的系统和方法_2

文档序号:8395915阅读:来源:国知局
有效载荷偏 移,以及加载在该图形中的该下一个节点地址处的下一个节点。如果该节点类型为可变计 数懒惰节点则将该有效载荷的该段与该元素进行匹配可以包括:如果该段匹配,则将一个 堆栈条目推送至该运行堆栈,该堆栈条目指示该可变计数懒惰节点和有效载荷偏移,加载 该图形中的该下一个节点地址处的下一个节点,并且如果该段不匹配,则返回不匹配。
[0032] 在一个实施例中,一种用于行走表示图样的非确定有限自动机(NFA)图形的系统 可以包括:一个确定模块,被配置成用于从该NFA图形的一个节点中提取一种节点类型、下 一个节点地址、计数值、和一个元素,以及一个匹配模块,被配置成用于通过使一个有效载 荷与该元素进行匹配至少零次来将该有效载荷的一段针对该元素进行匹配,该次数基于节 点类型。
[0033] 可变计数节点为针对一个元素进行匹配可变次数的节点,该次数量由一个范围 (例如,零到五次)限定。可变计数节点可以具有四种特性中的一种:懒惰、贪婪、领属、或 全匹配。可变计数懒惰节点被配置成用于找到该范围内的最短可能的元素匹配。可变计数 懒惰或领属节点被配置成用于找到该范围内的最长可能的元素匹配。可变计数全匹配节点 被配置成用于返回有效载荷中的所有匹配。
[0034] 固定计数节点针对一个元素进行匹配固定量次数。固定计数和可变计数图样可以 是被配置成用于针对一个范围进行匹配的可变计数图样的表达式,其中,该范围以高于零 的数字开始。例如,针对一个元素进行匹配10到20次的可变计数图样可以被表达为针对 该元素进行匹配十次的固定计数节点然后针对该元素进行匹配0到10次的可变计数节点。 字符串节点为按具体顺序针对字符串(字符集合)进行匹配的节点。
[0035] 标记节点为指示在有效载荷中找到图样的匹配的节点。分离节点为对图形中两条 路径之间的选择进行指示的节点。 附图简要说明
[0036] 从本发明的示例实施例的以下更具体的说明中上述内容将是明显的,如在这些附 图中所展示的,其中,贯穿这些不同的视图,相似的参考字符是指相同的部分。附图不一定 按比例,而是着重于展示本发明的实施例。
[0037] 图1A和图1B为包括网络服务处理器的示例安全装置的框图。
[0038] 图2A分别为图1A和图1B中所示的网络服务处理器、或协议处理器的框图。
[0039] 图2B为框图,展示了图2A的引擎(例如,网络服务处理器)的环境的示例实施例。
[0040] 图3A为图解,展示了NFA图形的示例实施例。
[0041] 图3B为本发明所使用的NFA图形的示例实施例的图解。
[0042] 图3C为图解,展示了示出可以使用的其他类型的计数节点的NFA图形的示例实施 例。
[0043] 图4A为现有技术系统所使用的NFA图形的示例实施例。
[0044] 图4B为图解,展示了本发明所使用的NFA图形的示例实施例。
[0045] 图4C为使用五个单独节点的图样"USPTO"的常规图形的示例实施例。
[0046] 图4D展示了使用字符串节点的图形的示例实施例。
[0047] 图5为图解,展示了NFA图形的示例实施例,该图形展示了本发明的示例实施例。
[0048] 图6A为框图,展示了编译器处理图样的示例实施例。
[0049] 图6B为图6A的图样产生的编译NFA图形的图解。
[0050] 图7为框图,展示了对图样进行编译的示例实施例。
[0051] 图8为流程图,展示了对图样进行编译的示例实施例。
[0052] 图9为流程图,展示了图形行走引擎对节点进行处理的示例实施例。
[0053] 图10为框图,展示了图形行走引擎对NFA图形的节点进行处理的示例实施例。
[0054] 图11为流程图,展示了使本发明所使用的NFA图形行走的过程。
[0055] 图12为流程图,展示了对节点进行处理的示例实施例。
[0056] 图13为流程图,展示了对字符类节点进行处理的示例实施例。
[0057] 图14为流程图,展示了图形行走引擎对字符串节点进行处理的示例实施例。
[0058] 图15A和图15B为流程图,展示了对固定计数节点进行处理的示例实施例。
[0059] 图16为流程图,展示了对可变计数节点进行处理的示例实施例。
[0060] 图17为流程图,展示了对可变计数懒惰节点进行处理的示例实施例。
[0061] 图18为流程图,展示了对可变计数贪婪节点进行处理的示例实施例。
[0062] 图19为流程图,展示了对可变计数领属节点进行处理的示例实施例。
[0063] 图20为流程图,展示了对可变计数全匹配节点进行处理的示例实施例。
[0064] 图21为表,展示了字符类中所使用的位图/遮罩的示例实施例。
[0065] 图22为表,展示了字符类匹配节点的格式。
[0066] 图23为表,展示了字符串匹配节点的格式。
[0067] 图24为表,展示了固定计数匹配节点的格式。
[0068] 图25为表,展示了可变计数匹配节点的格式。
[0069] 图26为表,展示了字符类匹配堆栈条目的格式。
[0070] 图27为表,展示了字符串匹配堆栈条目的格式。
[0071] 图28为表,展示了固定计数匹配堆栈条目的格式。
[0072] 图29为表,展示了可变计数匹配堆栈条目的格式。 发明详细说明
[0073] 以下是本发明的多个示例实施例的描述。
[0074] 戈亚尔(Goyal)等人的被公开为美国公开号2013/0133064的美国第13/303, 855 号申请"逆向NFA生成和处理(ReverseNFAGenerationandProcessing)"和戈亚尔 (Goyal)等人的被公开为美国公开号2012/0221497的美国第13/168, 395号申请"正则表 达式处理自动机(RegularExpressionProcessingAutomaton)" 描述了NFA和表达式匹 配概念。以上申请的全部教导通过引用结合于此。
[0075] perl兼容正则表达式(PCRE)已经成为安全和联网应用中正则表达式语法的约定 俗成的标准。随着更多应用需要深度数据包检查已经兴起或更多威胁在互联网中变得普 遍,用于标识病毒/攻击的相应特征/图样或应用也已经变得更加复杂。特征数据库从具 有简单字符串图样到具有通配字符/范围/字符类的正则表达式( regex)图样进化到高级 PCRE特征。高级PCRE特征具体地是指如起始偏移、反向引用、捕捉组、和断言的特征。本发 明的实施例支持线速下的高级PCRE特征。
[0076] 在详细描述本发明的示例实施例之前,以下紧接着描述了可以使用DFA和NFA在 其中实施这些实施例的示例网络安全应用,以帮助读者理解本发明的发明特征。
[0077] 图1A为包括网络服务处理器100的示例安全装置102的框图。安全装置102可 以是可以将在一个以太网端口(GigE)接收到的数据包切换到另一个以太网端口(GigE) 和在转发这些数据包之前在所接收到的数据包上执行多个安全功能的独立系统。例如,安 全装置102可以用于在将所处理的数据包转发至局域网之前对在广域网上接收到的数据 包执行安全处理。
[0078] 网络服务处理器100对所接收到的数据包中所封装的开放系统互连网络L2-L7层 协议进行处理。如本领域技术人员所熟知的,开放系统互连(OSI)参考模型定义了七层网 络协议层(L1-7)。物理层(L1)表示将设备连接到传输媒介的实际接口,包括电气接口和 物理接口。数据链路层(L2)执行数据组帧。网络层(L3)将数据格式化为数据包。传输层 (L4)处理端到端的传输。会话层(L5)管理设备之间的通信,例如,无论通信是半双工的还 是全双工的。表现层(L6)管理数据格式化及表现,例如,语法、控制代码、特殊图形及字符 集。应用层(L7)允许多个用户之间进行通信,例如,文件传输及电子邮件。
[0079] 网络服务处理器100可以为上层网络协议(例如,L4-L7)调度和排列工作(数据 包处理操作),并且允许在所接收到的待执行的数据包中进行上层网络协议的处理,以便以 线速转发数据包。通过处理这些协议来以线速转发这些数据包,该网络服务处理器不会降 低网络数据传送速率。
[0080] 网络服务处理器100可以包括多个以太网媒体访问控制接口,其中,标准简化的 千兆比特媒体独立接口(RGMII)连接至芯片外PHY104a、104b。
[0081] 网络服务处理器100还可以通过物理接口PHY104a、104b从以太网端口(GigE) 接收数据包以及对所接收到的数据包执行L2-L7网络协议处理以及将所处理的数据包转 发通过物理接口 104a、104b到达网络中的另一跳或最终目的地或通过外围组件互连/外围 组件互连扩展接口(PCI/PCI-X)总线106以便由主机处理器进行进一步处理。网络协议处 理可以包括网络安全协议的处理,如防火墙、应用防火墙、包括IP安全(IPSec)和/或安全 套接字层(SSL)的虚拟专用网(VPN)、入侵检测系统(IDS)和防病毒(AV)。
[0082] 网络服务处理器100还可以包括用于控制外部本地存储器108的存储器控制器, 如动态随机存取存储器(DRAM)和双倍数据速率同步动态随机存取存储器(DDRSDRAM)。在 某些实施例中,外部本地存储器118为低延迟存储器。
[0083] 外部本地存储器118可以用于允许快速查找的互联网服务和安全应用,包括入侵 检测系统(IDS)或防病毒(AV)应用或需要字符串匹配的其他应用可能所需的字符串匹配。
[0084] 根据本发明的一个实施例,网络服务处理器100可以执行图样搜索、正则表达式 处理、内容验证、转换和安全以加速数据包处理。正则表达式处理和图样搜索可以用于针对 IDS和AV应用以及需要字符串匹配的其他应用执行字符串匹配。
[0085] 网络服务处理器100中的DRAM控制器可以控制对耦合到网络服务处理器100上 的外部动态随机存取存储器〇)RAM)108的访问。DRAM108可以存储从PHY接口 104a、104b 或PCI/PCI-X接口 106接收到的数据包以供网络服务处理器100进行处理。在一个实施例 中,DRAM接口支持运行高达800MHz的64或128位双倍数据速率II同步动态随机存取存 储器(DDRIISDRAM)。DRAM还可以存储DFA和NFA图形表达式搜索中查找和图样匹配所 需的规则数据。
[0086] 启动总线110可以提供可以存储在闪速存储器112内并且当网络服务处理器100 通电或复位时可以由网络服务处理器1〇〇执行的必要启动代码。应用代码还可以通过启动 总线110从实施紧凑式闪存标准的装置114、或从可以是磁盘通过PCI/PCI-X总线106附接 的另一个大容量装置加载到网络服务处理器100内。
[0087] 杂项I/O接口 116提供辅助接口,如通用输入/输出接口(GPIO)、闪存、IEEE802 双线管理接口(MDIO)、通用非同步收发器(UART)和串行接口。
[0088] 应认识到,示例安全装置102可以替代性地包括协议处理器101 (图1B)。协议处 理器101可以包括网络服务处理器100的元件,并且添加了内容处理加速器107,通过PCI/ PCI-X连接106耦合到处理器101,并且外部DRAM111耦合到加速器107。加速器107和 DRAM111可以用于内容搜索应用中,从而在处理器101外部进行所有内容搜索操作。
[0089] 图2A分别为图1A和图1B中所示的网络服务处理器100、或协议处理器101的框 图。网络服务处理器100、和/或协议处理器101使用多个处理器(内核)202提供高应用 性能。网络应用可以被分类成数据平面和控制平面操作。内核202中的每个内核可以专用 于执行数据平面或控制平面操作。数据平面操作可以包括数据包操作以便转发数据包。控 制平面操作可以包括处理复杂的高层协议的多个部分,如互联网协议安全(IPSec)、传输控 制协议(TCP)和安全套接字层(SSL)。数据平面操作可以包括处理这些复杂的高层协议的 其他部分。
[0090] 可以由接口单元210a、210b中的任一个通过SPI-4. 2或RGMII接口接收数据包。 PCI接口 224也可以接收数据包。接口单元210a、210b处理L2网络协议,该网络协议对所 接收到的数据包进行以下预处理:检查所接收到的数据包内所包括的L2网络协议报头中 的各字段。在接口单元210a、210b已经执行L2网络协议处理之后,将数据包转发至数据包 输入单元214。数据包输入单元214可以执行所接收到的数据包中所包括的L3和L4的网 络协议报头的预处理。该预处理包括对传输控制协议(TCP)/用户数据报协议(UDP) (L3网 络协议)的校验和检查。
[0091] 数据包输入单元214可以用对至少一个处理器202中所执行的高层软件方便的格 式将数据包数据写入到2级高速缓存212或DRAM108中的缓冲区中,以便进一步处理高层 网络协议。数据包输入单元214还可以支持可编程缓冲区大小并且可以跨多个缓冲区分配 数据包数据以支持大的数据包输入大小。
[0092] 数据包次序/工作(POW)模块(单元)228可以为处理器202对工作(数据包处 理操作)进行排队和调度。工作被定义为处理器有待执行的、由工作队列上的条目标识的 任何任务。该任务可以包括数据包处理操作,例如,针对有待由在工作队列上的工作队列条 目所标识的所接收到的数据包上执行的L4-L7层的数据包处理操作。每个单独的数据包处 理操作为处理器有待在存储器(L2高速缓存212或DRAM108)中所存储的所接收到的数据 包上执行的一份工作。例如,该工作可以是所接收到的防火墙/虚拟专用网络(VPN)数据 包的处理。防火墙/VPN数据包的处理可以包括以下单独的数据包处理操作(多份工作): (1)碎片整理,以对所接收到的数据包内的碎片进行重新排序;(2)IPSec解密;(3)IPSec加 密;以及(4)转发数据包之前的网络地址转换(NAT)或TCP序列号调整。
[0093] 网络服务处理器100、和/或协议处理器101还可以包括存储器子系统。存储器子 系统可以包括每个处理器202中的1级数据高速缓存204、每个处理器202中的指令高速 缓存、2级高速缓存212、外部DRAM存储器的DRAM控制器216以及外部本地存储器118 (例 如,DDRSDRAM)的接口 230。该存储器子系统被架构成用于支持多处理器并且被调谐成用 于实现存储器密集型内容联网应用所需的高吞吐量和低延迟。处理器202和I/O协处理器 装置全都可以共享2级高速缓存212和(图1A和图1B的)外部DRAM存储器108。
[0094] 网络服务处理器100和/或协议处理器101还可以包括卸载处理器202从而使得 网络服务处理器实现高吞吐量的特定用途协处理器。这些特定用途协处理器包括执行以下 更加详细描述的非确定型有限自动机(NFA)处理的协处理器244和执行压缩和解压缩的压 缩/解压缩协处理器208。
[0095] 每个处理器202可以是带有指令高速缓存206、1级数据高速缓存204、用于密码算 法的内置硬件加速(加密加速模块)200的双发射超标量处理器,其中,通过低延迟存储器 总线230直接访问本地存储器。至本地存储器118的低延迟直接访问路径绕过L2高速缓 存212并且可以从处理器(内核)202和NFA协处理器244两者直接访问。
[0096] 在进一步详细描述用于正则表达式处理的内容搜索宏命令和图样搜索的操作之 前,将描述网络服务处理器100中的其他模块。在一个示例中,在处理器202已经处理了数 据包之后,数据包输出单元(PKO) 218从L2高速缓存或DRAM读取数据包数据,执行L4网络 协议后处理(例如,生成TCP/UDP校验和),转发数据包通过接口单元210a、210b以及释放 用于存储数据包的L2高速缓存212或DRAM108位置。
[0097] 每个处理器202通过一致存储器总线234连接至L2高速缓存。一致存储器总线 234(在一个实施例中宽度为384位)为用于处理器202、1/0桥(IOB)232与2级高速缓存 和控制器212之间的所有存储器和I/O事务的通信通道。
[0098] 空闲池分配器(FPA) 236维护多个指针池,以释放2级高速缓存212及DRAM108中 的存储器。为每个空闲指针池实现带宽高效(后进先出(LIFO))堆栈。如果指针池太大而 不能安装在空闲池分配器(FPA) 236内,则空闲池分配器(FPA) 236使用指针池中用于存储 附加指针的释放存储器在2级高速缓存212或DRAM10
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1