发明名称 Calculating consecutive matches using parallel computing
摘要 Methods and systems for determining consecutive matches are provided. According to one embodiment, a class definition and a data stream are received by a network security device. The data stream is partitioned into multiple data blocks each containing N data segments. Each data block is processed in parallel to compute: (i) a value (F) indicating whether every data segment value meets the class definition; (ii) a value (L) indicating a number of consecutive data segment values meeting the class definition starting from the left; (iii) a value (M) indicating a maximum number of consecutive data segment values meeting the class definition; and (iv) a value (R) indicating a number of consecutive data segment values meeting the class definition starting from the right. Corresponding values for each data block are then aggregated to determine a maximum number of consecutive data segment values meeting the class definition for the entire data stream.
申请公布号 US9438612(B1) 申请公布日期 2016.09.06
申请号 US201514665744 申请日期 2015.03.23
申请人 Fortinet, Inc. 发明人 Zheng Juneng
分类号 G06F21/00;H04L29/06;G06F17/30;G06F21/12;G06F21/55 主分类号 G06F21/00
代理机构 Hamilton, DeSanctis & Cha LLP 代理人 Hamilton, DeSanctis & Cha LLP
主权项 1. A system comprising: a non-transitory storage device having embodied therein one or more routines; and one or more processors coupled to the non-transitory storage device and operable to execute the one or more routines, wherein the one or more routines include: a data stream and class definition receive module, which when executed by the one or more processors, receives a data stream having a defined number of data segments and a class definition for the data stream;a data stream partition module, which when executed by the one or more processors, partitions said received data stream into a set of data blocks, wherein each data block comprises N data segments;a data block processing module, which when executed by the one or more processors, processes each data block in parallel, and for each data block, compute the following in parallel: a first integer value based on whether each segment value of the data block forms part of the class definition;a second integer value based on a number of consecutive data segment values that form part of the class definition starting from a left-hand side of the data block;a third integer value based on a maximum number of consecutive data segment values in the data block that form part of the class definition; anda fourth integer value based on a number of consecutive data segment values that form part of the class definition starting from a right-hand side of the data block;a data block integration module, which when executed by the one or more processors, aggregates the first integer value, the second integer value, the third integer value, and the fourth integer value for each data block in a sequential and associative manner to determine, for the received data stream, a maximum number of consecutive data segment values in the received data stream that form part of the class definition, wherein said data block integration module associatively integrates integer values of a first data block of the set of data blocks with integer values of a second data block of the set of data blocks to generate updated integer values that are then processed with integer values of a next data block of the set of data blocks, wherein the first updated integer value represents a result of multiplying the first integer value of said first data block and the first integer value of said second data block and wherein the second updated integer value represents a result of multiplying the first integer value of said first data block and the second integer value of said second data block, and adding the result to the second integer value of said first data block.
地址 Sunnyvale CA US