CN110865970B - 一种基于fpga平台的压缩流量模式匹配引擎及模式匹配方法 - Google Patents

一种基于fpga平台的压缩流量模式匹配引擎及模式匹配方法 Download PDF

Info

Publication number
CN110865970B
CN110865970B CN201910950410.5A CN201910950410A CN110865970B CN 110865970 B CN110865970 B CN 110865970B CN 201910950410 A CN201910950410 A CN 201910950410A CN 110865970 B CN110865970 B CN 110865970B
Authority
CN
China
Prior art keywords
data
module
matching
queue
automaton
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.)
Active
Application number
CN201910950410.5A
Other languages
English (en)
Other versions
CN110865970A (zh
Inventor
胡成臣
孙秀文
乔思祎
李�昊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Jiaotong University
Original Assignee
Xian Jiaotong University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xian Jiaotong University filed Critical Xian Jiaotong University
Priority to CN201910950410.5A priority Critical patent/CN110865970B/zh
Publication of CN110865970A publication Critical patent/CN110865970A/zh
Application granted granted Critical
Publication of CN110865970B publication Critical patent/CN110865970B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/781On-chip cache; Off-chip memory
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于FPGA平台的压缩流量模式匹配引擎及模式匹配方法,设计高效的基于FPGA平台的实现方案,实现加速匹配压缩流量的效果。一种基于FPGA平台的压缩流量模式匹配引擎包含输入队列、输出队列、环存储区和结果记录四个数据存储功能模块,以及匹配模块和数据搬运和读写模块。本发明的技术方案不仅能够提升引擎处理压缩流量时的吞吐率,还有效降低了处理时延。

Description

一种基于FPGA平台的压缩流量模式匹配引擎及模式匹配方法
技术领域
本发明属于压缩流量的模式技术领域,具体涉及一种对使用gzip/DEFLATE压缩编码的HTTP等网络流量,基于FPGA平台的压缩流量模式匹配引擎及模式匹配方法。
背景技术
随着压缩技术在网络流量中的广泛应用,越来越多的Web服务将数据内容压缩后再发送。文献[1](Sun X,Hou K,Li H,et al.Towards a fast packet inspection overcompressed HTTP traffic[C]//Quality of Service(IWQoS),2017 IEEE/ACM 25thInternational Symposium on.IEEE,2017:1-5.)指出2010年7月Alexa Top 1000的站点中有66%的HTTP服务器使用了压缩技术,而2016年10月的Top 500站点中,该比例已超过95%。,而gzip是HTTP的默认编码方式,这些压缩流量的压缩率仅为20%左右。
另一方面,由于正则表达式能够表达更深层次的语义,被越来越多的基于深度包检测(Deep Packet Inspection,DPI)的***和工具采用,用以识别流量中的特征或行为。例如入侵检测***、网络取证、防火墙等。这些***面对压缩流量时,通常采用朴素的Naive方法,也就是先解压缩流量,之后再逐字节地对解压后的数据进行模式匹配。该方法思路和实现最为简单,但由于压缩的存在,使得***的吞吐率大大降低,成为***的性能瓶颈。例如,20%的压缩率意味着处理100MB的压缩流量,在解压后需要处理的数据体积将变为500MB,即使忽略解压缩所需时间,此时***的吞吐率也将降为处理未压缩流量时的1/5。
目前,有许多关于多模式匹配的相关专利,如:文献[2]申请号为201010232463.2的一种多字符串匹配方法,文献[3],申请号为200710099389.X的一种多字符串匹配方法和芯片;文献[4],申请号为201310159057.1的基于后缀自动机正则引擎构造的深度包检测方法;文献[5],申请号为200610089420.7的一种自适应多模式匹配方法及***。但它们均没有专门涉及加速针对压缩流量的多模式匹配。一些针对HTTP压缩流量进行DPI的研究工作,例如,文献[6]Accelerating Multi-pattern Matching on Compressed HTTP Traffic,IEEE/ACM Transactions on Networking 20.3(2009):970-983;文献[7]美国专利:US8458354,Multi-pattern matching in compressed communication traffic;文献[8]中国专利CN107277109A,针对压缩流量的多字符串匹配方法,都是通过先解压流量,之后利用解压过程中所保存的信息,在匹配过程跳过对部分字符的扫描,以加速模式匹配的过程。然而他们只能对压缩流量进行多字符串扫描,而不能应用于正则表达式的匹配中,进而也限制了应用场景。
文献[9],Accelerating regular expression matching over compressed http[C]//Computer Communications(INFOCOM),2015 IEEE Conference on.IEEE,2015:540-548.是一种能够对压缩流量进行正则表达式匹配的方法,然而它的核心算法与文献[6]相同,算法在匹配过程有着较多的额外开销;另外,为适应文献[6]中的算法而提出的计算depth参数的方法耗时较多,也难以满足线速匹配的需求,甚至基于一些快速自动机引擎的方案中,其处理吞吐率仍不如Naive方法高。文献[10],一种加速压缩流量正则表达式匹配的Twins方法,201810419466.3和文献[11],一种加速压缩流量正则表达式匹配的Pairs方法,201810419466.3;也是能够对压缩流量进行正则表达式匹配的方法,他们相较于文献Accelerating regular expression matching over compressed http有着更高的吞吐率,但是他们都不能在FPGA上进行模式匹配。
上述这些针对压缩流量模式匹配的相关工作都只是在通用CPU平台上设计的软件方案,基于这样的方案设计实现的DPI***,部署在通用CPU和操作***之上。***的处理过程中,数据包由网络设备捕获,先转送到处于操作***内核态的网络设备驱动程序和内核扩展模块,后经由应用程序编程接口或者***调用等形式的接口,最终递交至用户态下的应用程序。数据包经由这样的流程,到最终得到匹配结果,其处理时延往往为微秒、甚至是毫秒级别。即使一些研究能够在内核态和用户态之间以“零拷贝”的方式传输数据,但网口到应用程序之间依然有着难以忽略不计的时延,特别是当网络环境中存在多组串行处理设备时,累积的时延更加不容忽视。
而使用智能网卡方案将一些数据包处理功能委托给网卡,并在空闲期间将计算机设备置于待机模式,这样以硬件代替软件实现的方案,将数据包处理时机从传统的通用操作***的用户态程序,移至硬件设备之上,能够有效降低数据包的处理时延。FPGA的可编程和高度并行处理的优势,使之成为智能网卡使用较多的平台。在这些硬件平台上处理压缩流量的传统方案依然沿用Naive方法的思路,即先解压、后完全匹配,这样的方案面临和软件平台相同的吞吐率瓶颈问题。例如在FPGA平台上,使用硬编码的状态转移逻辑实现的自动机构建匹配引擎,扫描一个字符仅需要1个时钟周期,即使在250MHz的工作频率下,单引擎的吞吐率能够达到2Gbps,但是20%的压缩率,使得这些引擎处理压缩流量时的吞吐率仅有500Mbps。
发明内容
为了解决上述问题,本发明提供了一种基于FPGA平台的压缩流量模式匹配引擎及模式匹配方法,解决Twins算法在基于不同的FPGA片上资源构建的内存上进行快速数据块拷贝的问题,实现低时延的同时,依然保证了高吞吐率。
一种基于FPGA平台的压缩流量模式匹配引擎,包括输入队列、匹配模块、数据搬运和读写模块、环存储区模块、结果记录模块以及输出队列;
输入队列用于存储外部送来的输入数据,包括编码数据和未被压缩的文本数据;环存储区用于存储匹配模块匹配过程使用的辅助信息,包括文本数据和自动机状态;结果记录模块用于存储匹配结果,即匹配到的模式信息,包括模式在输入数据中的偏移、对应的自动机状态,以及匹配到模式的总数;输出队列用于存储待送出引擎的输出数据,当输入数据为文本数据时,输出数据和输入的文本数据相同;当输入数据为编码数据时,输出数据是输入的编码数据,或者是用文本数据替换编码数据后的纯文本数据;
数据搬运和读写模块用于完成匹配模块与环存储区,结果记录模块和输出队列的交互,包括向结果记录模块写入匹配结果,协助匹配模块与环存储区交互辅助信息,向输出队列写入经匹配模块处理后的输入数据;
匹配模块用于从输入队列中取出输入数据,结合环存储区中的辅助信息,对输入数据进行模式匹配,匹配到的模式信息作为匹配结果输出到结果记录模块中;同时将处理后的输入数据送至输出队列;
匹配模块包括分类器,调度模块、扫描模块、自动机,以及FIFO队列;分类器用于根据输入数据的类别,将文本数据送至扫描模块,将编码数据送至调度模块;扫描模块用于使用自动机模块扫描接收到的文本数据;调度模块用于接收编码数据并送至FIFO队列的队尾,同时不断地从FIFO队列的队首中取出编码数据,并对所取出的编码数据进行匹配,匹配过程中使用的辅助信息保存在调度模块内部所设的专有存储空间中,得到的匹配结果写入结果记录模块中。
进一步的,环存储区采用级联的LUT RAM或者Block RAM构建。
进一步的,专有存储空间使用LUT RAM构建。
基于上述的基于FPGA平台的压缩流量模式匹配引擎的模式匹配方法,包括以下步骤:
步骤1、初始化匹配引擎,清空除输入队列之外的所有数据存储空间,并记自动机(1024)的活动状态为curState;
步骤2、若输入队列为空,匹配过程终止;否则,将输入队列)中的数据送入分类器进行分类,如果送入的数据是文本数据跳转至步骤3,否则跳转至步骤4;
步骤3、将文本数据送入扫描模块,扫描模块将该文本数据写入输出队列,同时使用自动机检测该文本数据,并用得到的自动机状态更新curState,如果curState为接受状态,记录并输出匹配到的模式信息;之后,将该文本数据和curState组成的辅助信息交由数据搬运和读写模块写入环存储区;处理完成后跳转至步骤2;
步骤4、调度模块一方面接收编码数据并送至FIFO队列,另一方面不断地从FIFO队列中取出编码数据,同时从环存储区中读出该编码数据对应的参考字符串区域所保存的辅助信息,存入专有存储空间中;之后,如果不需要解压编码数据,调度模块将编码数据写入输出队列,否则将取出的辅助信息中的文本数据写入输出队列;记读出的辅助信息在专有存储空间中的范围为编码字符串区域,并将该区域的前一位置记为curPos;
步骤5、检查步骤4中curPos位置的辅助信息中的自动机状态是否与步骤1中curState相同,如果二者相同,跳转至步骤6;否则用curState替换curPos位置的自动机状态,并移动curPos到下一位置,使用扫描模块检测移动后的curPos位置的文本数据,并用得到的自动机状态更新curState,如果curState是接受状态,说明匹配到模式,记录并输出匹配到的模式信息;重复该步骤,直至检测完编码字符串区域中全部的文本数据,跳转至步骤2;
步骤6、用编码字符串区域中最后一个位置的自动机状态更新curState,然后使用数据搬运和读写模块将编码字符串区域的辅助信息以数据块拷贝的方式写入环存储区的队尾;拷贝过程中如发现拷贝的自动机状态为接受状态,记录并输出匹配到的模式信息,完成后跳转至步骤2。
进一步的,步骤4中,从环存储区中读出辅助信息并存入专有存储空间时,不调整辅助信息在专有存储空间中的偏移,直接以块拷贝的方式将环存储区中的辅助信息拷贝至专有存储空间。
进一步的,当环存储区使用基于级联的Block RAM构建时,步骤6中,将辅助信息写入环存储区时的数据块拷贝方法为:先调整编码字符串区域首地址在专有存储空间中的偏移,使其与环存储区的队尾地址在级联的Block RAM行中的偏移相同;之后将已经按级联的内存位宽对齐的整行数据从源地址读出直接写入目的地址,对于数据块两端不足一行的数据,先同时从源地址和目的地址中读出整行的数据,以掩码的方式覆盖整行的目的数据中要被写入的区域,之后再将整行目的数据写回。
与现有技术相比,本发明至少具有以下有益的技术效果:
(1)扩展性高,兼容性好
本发明提出的压缩流量模式匹配引擎,其中的环存储区所需要的存储空间大小固定,不会随构造自动机的规则和处理的流量规模而变化。此外,引擎处理的是经哈夫曼解码后的数据,引擎中的分类器会将未压缩的文本和编码数据转交不同的模块处理,能够处理全部是未压缩的流量数据。而且,输出的可以是解压后的数据,或是未改变仍处于压缩状态的数据,便于将引擎嵌入到现有***中,以兼容对压缩或未压缩流量进行模式匹配的***。
(2)适用领域广
本发明提出的基于FPGA平台的压缩流量模式匹配引擎,整体可以被嵌入到现有智能网卡的***方案中,再结合***中的通用CPU平台,实现基于异构计算体系结构的模式匹配***,相较于传统的在单一的通用CPU平台下的压缩流量模式匹配方案,本发明的方案能够满足不同领域下的应用对功能和性能的需求。
(3)吞吐率高、并且时延小
本发明提出的基于FPGA平台的压缩流量模式匹配引擎的模式匹配方法,利用改进的Twins算法,解决Twins算法在基于不同的FPGA片上资源构建的内存上进行快速数据块拷贝的问题。
此外,本发明充分利用了FPGA高度并行的特性,能够在一个时钟周期内读入一个字符或者编码数据,在本发明的实施例中的结果显示,设计的引擎工作频率为200MHz,吞吐率能够达到2.37Gbps,时延为15ns(3个时钟周期),实现低时延的同时,依然保证了高吞吐率。
附图说明
图1是gzip压缩过程示意图,将原始文本压缩为文本和编码数据混合的数据,之后再对其进行哈夫曼编码,保存为gzip或DEFLATE数据格式;
图2是使用图1的示例数据,经gzip解压后编码字符串和参考字符串的位置关系示意图;
图3是使用正则表达式“ab+c”构造的自动机;
图4为构造级联BRAM的示意图;
图5为本发明的***结构图;
图6为实施例处理输入队列中示例数据时的过程和数据记录;
图7是使用级联的Block RAM构建环存储区时,数据读出和写回的过程示意图;
图8为本发明实施例匹配示例数据时的仿真波形图。
具体实施方式
下面将结合实施例对本发明技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都应属于本发明保护的范围。
在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
本发明提出一种基于FPGA平台的压缩流量模式匹配引擎,该引擎使用改进的Twins算法,解决Twins算法在FPGA平台上的适应性问题,使其在不同的FPGA片上资源构建的内存上能够实现快速的数据块拷贝,最终在FPGA平台上实现高吞吐率、低时延的压缩流量模式匹配。
为进一步说明本发明的具体内容,我们首先对发明所涉及的现有技术和定义的名词进行介绍:
A)gzip/DEFLATE
gzip是HTTP1.1推荐的一种常用的内容编码方法,而DEFLATE则是gzip所使用的压缩方法,它基于LZ77和哈夫曼编码分别实现压缩和编码。
LZ77在压缩过程中,使用一个滑动窗口作为压缩时的动态字典,尝试从窗口中找出与当前位置相同的最长的子字符串,并以二元组<长度,距离>编码该子串。图1显示的是gzip压缩过程示意图,原始文本为两行表示网页URL的字符串,经过LZ77压缩,将第二行中的“http://www.”编码为<11,17>。我们称<长度,距离>二元组,即<11,17>为编码数据;除此之外未被压缩的字符内容被称为文本数据。在解压缩数据后,由编码数据表示的字符串被称为编码字符串,在滑动窗口中与编码字符串所对应的字符串称为参考字符串,如图2所示。我们可以将编码数据和编码字符串看作是相同的数据处于压缩和未压缩状态时的两种表现形式。
经LZ77压缩后的数据,包含文本数据和编码数据,之后DEFLATE使用哈夫曼编码方法对其编码,生成gzip所使用的DEFLATE数据格式。由于哈夫曼编码长度不等,且不全是8的倍数,因此DEFLATE数据为连续的位流,并且不会以字节为编码边界。这也是现有压缩流量模式匹配方法必须在解码之后才能进行匹配的原因。
B)模式匹配方法
一般来说,模式匹配方法包括字符串匹配和正则表达式匹配,KMP算法、Aho-Corasick算法、Wu-Manber算法等是常见的几种字符串匹配方法。字符串匹配可以看作是正则表达式的一个子集,它仅能处理一些不包含闭包等运算的简单模式匹配,因此正则表达式匹配引擎能够处理字符串模式的匹配,反之则不可以。
在自动机理论中,正则表达式、确定性有限状态自动机(Deterministic FiniteAutomaton,DFA)和非确定性有限状态自动机(Non-deterministic Finite Automaton,NFA)可等价地表示正则语言。有限状态自动机可以形式化地表示为5元组A=(Q,Σ,δ,q0,F),其中:
Q:非空有限的状态集合;Σ:非空有限的字符集合,通常称为输入字母表;δ:Q×Σ→Q转移函数;q0:一个初始状态,q0∈Q;F:接受状态的集合,
Figure BDA0002225609380000091
DFA和NFA的区别在于转移函数δ的返回值,DFA的转移函数返回单个状态,而NFA返回状态集合,可包含不止一个状态。
有限状态自动机从起始状态开始,逐字符地读入待匹配的字符串,并根据给定的转移函数得到下一个状态,直至检查完全部字符。在读完该字符串后,如果该自动机停在一个属于F的接受状态,那么它就接受该字符串,也即我们所说的匹配到模式;反之则拒绝该字符串。如图3所示的使用正则表达式“ab+c”构造的DFA,使用该DFA匹配字符串“abbc”时,得到的状态依次为“1223”,状态3为接受状态,因此字符串“abbc”匹配到正则表达式“ab+c”。
一个正则表达式通常被称为一个模式,基于有限状态自动机的模式匹配,通常先将正则表达式编译为NFA,然后将NFA转换为DFA,并对DFA进行最小化处理,最后使用DFA或者直接使用NFA对待匹配的数据进行扫描处理。
C)FPGA的片上内存
FPGA有三种资源可以用作片上内存:触发器(Flip-Flop,FF)、LUT RAM(Look-Up-Table,LUT)和块内存(Block RAM,BRAM),受限于资源数量和访问方式,不同资源构建的内存读写方式和访存时延有明显的区别。
一个FF只能表示1位数据,构造1字节的存储空间需要8个FF,由于FF资源较少,通常只用于构建寄存器,存储少数变量。
LUT本质上就是RAM,使用LUT构建的RAM又被称作分布式RAM(Distributed RAM)。以常用的6输入LUT为例,每个LUT可以看作是一个使用6位地址总线、存储64×1bit数据的RAM。设计时将多个LUT拼接在一起,便可实现更大位宽和空间的片上内存,并且可以在单个时钟周期完成多个位宽数据的读写。
BRAM是FPGA上嵌入的专属内存资源,其内部和逻辑资源之间使用特殊的布线,使其具有较高的运行速度和低延迟周期。以Xilinx 7系列的芯片为例,每个BRAM可以配置为单个36Kbits、或两个独立的18Kbits RAM,用以存储36Kbits数据。每个36Kbits的BRAM在简单的双端口模式(1个同步只写和1个异步只读端口)下又可以配置为512×72(64)bits、1K×36(32)bits等多种数据读写方式。其中,512或1K为BRAM的深度,72(64)或36(32)bits为读写的数据位宽。当位宽配置为72bits时,BRAM的奇偶校验总线将被配置为数据总线。一旦配置BRAM数据读写位宽和深度后,数据存储将以位宽对齐,FPGA只能一次性读出或写入BRAM整个位宽的数据,并且每次读写操作需要一个时钟边沿触发,再加上寻址时间共需要2个时钟周期。
BRAM也可以通过级联的方式,支持更宽或更深的存储需求,如图4所示为使用为4块BRAM通过级联扩展RAM位宽的示意图,假设每块BRAM均配置为512×64bits,那么级联后的RAM将能够提供256bits的位宽。为便于后文的介绍,本文称级联后的一个完整位宽数据称为一行数据。由于BRAM自身结构的特点,读写级联后的内存数据时,每次读写操作必须是整行的数据。
参照图5,一种基于FPGA平台的压缩流量模式匹配引擎,包括输入队列101、输出队列106、环存储区104和结果记录105模块四个数据存储功能模块,以及匹配模块102和数据搬运和读写模块103。
输入队列101是一个先进先出队列,以一个字符或者一个编码为单位,存储经哈夫曼解码等预处理后的外部输入数据,数据包括编码数据和未被压缩的文本数据。
输出队列106用于存储待送出引擎的输出数据,当输入数据为文本数据时,输出数据和输入的文本数据相同;当输入数据为编码数据时,输出数据是输入的编码数据,或者是用文本数据替换编码数据后的纯文本数据。
环存储区104是能够随机访问的循环队列,它用于存储匹配模块102处理数据过程的使用的辅助信息,包括gzip字典窗口范围内的字符和对应的自动机状态,环存储区使用FPGA的LUT RAM或者Block RAM资源构建,该空间至少能够存储32768个数据单元,当使用Block RAM资源构建时,采用级联的Block RAM构建形成环存储区104,如图4所示,由4个Block RAM级联的示意图。
结果记录模块105用于存储匹配结果,即匹配模块102处理输入数据过程所输出的匹配到的模式信息,该信息包括匹配到的模式在输入数据中的偏移和对应的自动机状态,以及匹配到模式的总数。
匹配模块102用于在FPGA平台上实现改进的Twins算法,它从输入队列101中读入流量数据、进行处理并输出匹配结果。匹配模块102包括分类器1021,分类器1021用于接收输入队列101的数据,并根据输入数据的类别,将文本数据送至扫描模块1023,将编码数据送至调度模块1022;所述扫描模块1023用于使用自动机模块1024扫描接收到的文本数据;所述调度模块1022用于接收编码数据并送至FIFO队列1025的队尾,同时不断地从FIFO队列1025的队首中取出编码数据,并对所取出的编码数据进行匹配,匹配过程中使用的辅助信息保存在调度模块1022内部所设的专有存储空间10221中,得到的匹配结果写入结果记录模块105中。。匹配模块102中的自动机1024和扫描模块1023是常规的使用有限状态自动机构造的匹配未压缩字符的引擎,在FPGA平台有多种实现方式,例如使用二维矩阵保存自动机状态转移表,或者采用状态转移逻辑等方式实现的DFA引擎。在本实施例中,使用状态转移逻辑形式的DFA实现自动机模块1024,其实现逻辑类似于算法1所示的正则表达式“ab+c”所构造的自动机,它和图3表示的是相同的自动机,图3中的圆圈表示自动机的每个状态,状态0为初始状态,双圆圈为接受状态,实线箭头表示以当前状态和线上字符作为输入时的状态转移函数,虚线表示以该状态和实线外的字符为输入时的状态转移函数。FPGA平台上实现这种形式的自动机,能够在单个时钟周期匹配一个字符。
Figure BDA0002225609380000121
算法1正则表达式“ab+c”构造的状态转移逻辑形式的自动机
数据搬运和读写模块103用于完成匹配模块102与环存储区104的交互,结果记录模块105和输出队列106的交互,包括向结果记录模块105写入匹配结果,协助匹配模块102与环存储区104交互辅助信息,向输出队列106写入经匹配模块102处理后的输入数据;数据搬运和读写模块103仅在环存储区104队尾写入数据,而需要成块读出或拷贝区域中的数据时,则不限制位置。
利用本发明提出匹配引擎对哈夫曼解码后的压缩流量进行模式匹配时的步骤如下:
步骤1、初始化匹配引擎,清空除输入队列101之外的所有数据存储空间,并记自动机1024的活动状态为curState。
步骤2、如果输入队列101为空,匹配过程终止。否则,将队列101中的数据送入匹配模块102中的分类器1021进行分类,每次送入一个单位的文本数据(也就是一个字符)或者编码数据(一个编码),如果送入的是文本数据跳转至步骤3,否则跳转至步骤4。
步骤3、文本数据送入扫描模块1023,扫描模块1023使用自动机1024检测该字符,用得到的自动机状态更新curState,并将该字符和curState交由数据搬运和读写模块103写入输出队列106和环存储区104。如果curState为接受状态,则将当前所处理的字符在输入数据中的偏移,连同curState一起作为匹配到的模式信息,经数据搬运和读写模块103写入入环存储区104。处理完成后跳转至步骤2。
步骤4、调度模块1022一方面接收编码数据并送至FIFO队列1025,另一方面不断地从FIFO队列1025中取出编码数据,同时从环存储区104中读出该编码数据对应的参考字符串区域所保存的辅助信息,存入专有存储空间10221中;之后,如果不需要解压编码数据,调度模块1022将编码数据写入输出队列106,否则将取出的辅助信息中的文本数据写入输出队列106;记读出的辅助信息在专有存储空间10221中的范围为编码字符串区域,并将该区域的前一位置记为curPos;
步骤5、检查步骤4中curPos位置的辅助信息中的自动机状态是否与步骤1中curState相同,如果二者相同,跳转至步骤6;否则用curState替换curPos位置的自动机状态,并移动curPos到下一位置,使用扫描模块1023检测移动后的curPos位置的文本数据,并用得到的自动机状态更新curState,如果curState是接受状态,说明匹配到模式,记录并输出匹配到的模式信息;重复该步骤,直至检测完编码字符串区域中全部的文本数据,跳转至步骤2;
步骤6、用编码字符串区域中最后一个位置的自动机状态更新curState,然后使用数据搬运和读写模块103将编码字符串区域的辅助信息以数据块拷贝的方式写入环存储区104的队尾;拷贝过程中如发现拷贝的自动机状态为接受状态,记录并输出匹配到的模式信息,完成后跳转至步骤2。
为了更为直观地说明引擎的处理过程,本发明以图3所示的自动机,结合输入队列中的示例数据说明本发明的处理过程。初始时,输入队列中的数据为“xxabbyya<3,6>czz”,引擎的匹配过程和各项数据记录如表1所示,这些过程中,忽略数据被送至输出队列中的描述。
序号0,开始处理之时,数据全部位于输入队列中,curState为初始状态0。
序号1~8,不断通过步骤2-3处理输入队列中的文本数据(单个字符),在此过程中读入的字符和扫描它们得到的自动机状态写入环存储区中,环存储区104中的第一行数据为字符数据,第二行为扫描字符所得到的自动机状态(下面的专有存储空间也是如此)。
序号9,输入队列中输入的是编码数据,进入步骤4,从环存储区104中读出字符“xabb”和对应的状态“0122”到专有存储空间10221中,同时curPos赋值为0,指向专有存储空间中字符“x”的位置,此时的输入队列、环存储区和专有存储空间中所存储的数据情况如图6所示。之后转至步骤5,此时curPos位置的自动机状态为0,和curState不同,移动curPos、扫描编码字符串中第一个字符“a”,用得到的自动机状态1更新curState。
序号10,在步骤5中发现curPos位置的状态和curState相同,转至步骤6。
序号11,用编码字符串区域中最后一个位置的自动机状态2更新curState,并将编码字符串区域内的数据写入环存储区的队尾,完成后转至步骤2,处理输入队列中的下一个数据。
序号12,处理字符“c”后得到的自动机状态3为接受状态,说明匹配到模式。将该字符在输入数据中的偏移12和状态3作为匹配到的模式信息,写入结果记录(105)中。
序号13~14,处理输入队列中最后的两个字符“zz”,完成后,输入队列(101)为空,处理过程结束。
表1本发明处理示例数据过程的各项数据记录
Figure BDA0002225609380000151
当访问级联的Block RAM构建的内存时,读出或写入的是整个位宽的数据,那么当数据搬运和读写模块103要写入的数据在目的地址中不是完整的一行数据,甚至跨行之时,需要分步拷贝。
接下来,本发明将详细介绍上述步骤4和6使用基于级联的Block RAM构建的内存实现的环存储区104,进行数据块拷贝的方法,过程如图7所示。此时,该专有存储空间大小为环存储区整行数据的整数倍,并且大于258个数据单元。
上述的步骤4中,从环存储区中读出数据到调度模块1022使用由LUT RAM构建的专有存储空间时,如图7所示,从2、3、4行读出数据到专有存储空间时,不需要考虑数据对齐的问题,直接将环存储区104中的数据拷贝至专有存储空间10221。
步骤6中,写回环存储区的队尾时,先调整编码字符串区域中的数据的首地址在专有存储空间中的偏移,使其与环存储区的队尾地址在级联的Block RAM行中的偏移相同。之后将已经按级联的内存位宽对齐的整行数据,从源地址读出直接写入目的地址,即图7中从专有存储空间10221写回第7行数据的过程。至于数据块两端不足一行的数据,先同时从源地址和目的地址中读出整行的数据,以掩码的方式覆盖整行的目的数据中要被写入的区域,之后再将整行目的数据写回,如图7所示,写回第6行数据时,保留目的行中前3个BRAM中的数据,仅BRAM4中的数据被专有存储空间中读出的数据覆盖。
由上文介绍可知,当FPGA平台使用级联的LUT RAM构建环存储区,可以在1个时钟周期内完成内存读写,而且访存时不受读写数据的位宽、内存对齐等因素的影响。因此,本发明提出的方案优先选择LUT RAM作为环存储区,这种情况下,引擎处理过程中从环存储区中读出和写入数据块时,不需要特殊处理,直接访问即可。
本实施例,使用LUT RAM构建环存储区104,使用Verilog实现的基于FPGA平台的压缩流量模式匹配引擎,其工作频率为200MHz,处理时延为3个时钟周期(15ns),每个时钟周期可以从输入中读取一个未压缩字符或者压缩编码。图8为本实施例实现的引擎使用正则表达式“ab+c|bc+d”构建的DFA,匹配示例数据“xxaccabcdyy<3,9>zza<3,12>cd”时的仿真波形图,图中从80ns之后,每个周期(5ns)读入一个字符或者编码。
本实施例提出的引擎处理的是哈夫曼解码后的数据,为评估它处理实际压缩流量时的吞吐率,需要计算出每个时钟周期所读入实际数据的平均长度。由于每个时钟周期读入一个未压缩字符或者编码,因此单次处理数据的平均长度为压缩流量大小除以未压缩字符数和编码字符串总数之和。表1所示为爬虫程序从Alexa.com Top 500站点获取的压缩流量的数据特征,并以此计算引擎的吞吐率。其中,输入数据的平均长度=压缩流量大小/(未压缩字符数+编码字符串总数),吞吐率=输入数据的平均长度×工作频率。从表中可以看出,本发明提出的基于FPGA平台的压缩流量模式匹配引擎的吞吐率能够达到2.37Gbps,实现低时延的同时,依然保证了高吞吐率。
表1采集到的压缩流量特征
页面数量 压缩流量大小 未压缩字符数 编码数 输入数据的平均长度 吞吐率
434 15.54MB 6,471,870 4,512,982 1.483B 2.37Gbps
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施方式仅限于此,对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应当视为属于本发明由所提交的权利要求书确定专利保护范围。

Claims (6)

1.一种基于FPGA平台的压缩流量模式匹配引擎,其特征在于,包括输入队列(101)、匹配模块(102)、数据搬运和读写模块(103)、环存储区模块(104)、结果记录模块(105)以及输出队列(106);
所述输入队列(101)用于存储外部送来的输入数据,包括编码数据和未被压缩的文本数据;
所述环存储区(104)用于存储匹配模块(102)匹配过程使用的辅助信息,包括文本数据和自动机状态;
所述结果记录模块(105)用于存储匹配结果,即匹配到的模式信息,包括模式在输入数据中的偏移、对应的自动机状态,以及匹配到模式的总数;
所述输出队列(106)用于存储待送出引擎的输出数据,当输入数据为文本数据时,输出数据和输入的文本数据相同;当输入数据为编码数据时,输出数据是输入的编码数据,或者是用文本数据替换编码数据后的纯文本数据;
所述数据搬运和读写模块(103)用于完成匹配模块(102)与环存储区(104),结果记录模块(105)和输出队列(106)的交互,包括向结果记录模块(105)写入匹配结果,协助匹配模块(102)与环存储区(104)交互辅助信息,向输出队列(106)写入经匹配模块(102)处理后的输入数据;
所述匹配模块(102)用于从输入队列(101)中取出输入数据,结合环存储区(104)中的辅助信息,对输入数据进行模式匹配,匹配到的模式信息作为匹配结果输出到结果记录模块(105)中;同时将处理后的输入数据送至输出队列(106);
所述匹配模块(102)包括分类器(1021),调度模块(1022)、扫描模块(1023)、自动机(1024),以及FIFO队列(1025);所述分类器(1021)用于根据输入数据的类别,将文本数据送至扫描模块(1023),将编码数据送至调度模块(1022);所述扫描模块(1023)用于使用自动机模块(1024)扫描接收到的文本数据;所述调度模块(1022)用于接收编码数据并送至FIFO队列(1025)的队尾,同时不断地从FIFO队列(1025)的队首中取出编码数据,并对所取出的编码数据进行匹配,匹配过程中使用的辅助信息保存在调度模块(1022)内部所设的专有存储空间(10221)中,得到的匹配结果写入结果记录模块(105)中。
2.根据权利要求1所述的一种基于FPGA平台的压缩流量模式匹配引擎,其特征在于,所述环存储区(104)采用级联的LUT RAM或者Block RAM构建。
3.根据权利要求1所述的一种基于FPGA平台的压缩流量模式匹配引擎,其特征在于,所述专有存储空间(10221)使用LUT RAM构建。
4.基于权利要求1所述的基于FPGA平台的压缩流量模式匹配引擎的模式匹配方法,其特征在于,包括以下步骤:
步骤1、初始化匹配引擎,清空除输入队列(101)之外的所有数据存储空间,并记自动机(1024)的活动状态为curState;
步骤2、若输入队列(101)为空,匹配过程终止;否则,将输入队列(101)中的数据送入分类器(1021)进行分类,如果送入的数据是文本数据跳转至步骤3,否则跳转至步骤4;
步骤3、将文本数据送入扫描模块(1023),扫描模块(1023)将该文本数据写入输出队列(106),同时使用自动机(1024)检测该文本数据,并用得到的自动机状态更新curState,如果curState为接受状态,记录并输出匹配到的模式信息;之后,将该文本数据和curState组成的辅助信息交由数据搬运和读写模块(103)写入环存储区(104);处理完成后跳转至步骤2;
步骤4、调度模块(1022)一方面接收编码数据并送至FIFO队列(1025),另一方面不断地从FIFO队列(1025)中取出编码数据,同时从环存储区(104)中读出该编码数据对应的参考字符串区域所保存的辅助信息,存入专有存储空间(10221)中;之后,如果不需要解压编码数据,调度模块(1022)将编码数据写入输出队列(106),否则将取出的辅助信息中的文本数据写入输出队列(106);记读出的辅助信息在专有存储空间(10221)中的范围为编码字符串区域,并将该区域的前一位置记为curPos;
步骤5、检查步骤4中curPos位置的辅助信息中的自动机状态是否与步骤1中curState相同,如果二者相同,跳转至步骤6;否则用curState替换curPos位置的自动机状态,并移动curPos到下一位置,使用扫描模块(1023)检测移动后的curPos位置的文本数据,并用得到的自动机状态更新curState,如果curState是接受状态,说明匹配到模式,记录并输出匹配到的模式信息;重复该步骤,直至检测完编码字符串区域中全部的文本数据,跳转至步骤2;
步骤6、用编码字符串区域中最后一个位置的自动机状态更新curState,然后使用数据搬运和读写模块(103)将编码字符串区域的辅助信息以数据块拷贝的方式写入环存储区(104)的队尾;拷贝过程中如发现拷贝的自动机状态为接受状态,记录并输出匹配到的模式信息,完成后跳转至步骤2。
5.根据权利要求4所述的一种基于FPGA平台的压缩流量模式匹配引擎的模式匹配方法,其特征在于,所述步骤4中,从环存储区(104)中读出辅助信息并存入专有存储空间(10221)时,不调整辅助信息在专有存储空间(10221)中的偏移,直接以块拷贝的方式将环存储区(104)中的辅助信息拷贝至专有存储空间(10221)。
6.根据权利要求4所述的一种基于FPGA平台的压缩流量模式匹配引擎的模式匹配方法,其特征在于,当环存储区(104)使用基于级联的Block RAM构建时,所述步骤6中,将辅助信息写入环存储区(104)时的数据块拷贝方法为:先调整编码字符串区域首地址在专有存储空间(10221)中的偏移,使其与环存储区的队尾地址在级联的Block RAM行中的偏移相同;之后将已经按级联的内存位宽对齐的整行数据从源地址读出直接写入目的地址,对于数据块两端不足一行的数据,先同时从源地址和目的地址中读出整行的数据,以掩码的方式覆盖整行的目的数据中要被写入的区域,之后再将整行目的数据写回。
CN201910950410.5A 2019-10-08 2019-10-08 一种基于fpga平台的压缩流量模式匹配引擎及模式匹配方法 Active CN110865970B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910950410.5A CN110865970B (zh) 2019-10-08 2019-10-08 一种基于fpga平台的压缩流量模式匹配引擎及模式匹配方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910950410.5A CN110865970B (zh) 2019-10-08 2019-10-08 一种基于fpga平台的压缩流量模式匹配引擎及模式匹配方法

Publications (2)

Publication Number Publication Date
CN110865970A CN110865970A (zh) 2020-03-06
CN110865970B true CN110865970B (zh) 2021-06-29

Family

ID=69652172

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910950410.5A Active CN110865970B (zh) 2019-10-08 2019-10-08 一种基于fpga平台的压缩流量模式匹配引擎及模式匹配方法

Country Status (1)

Country Link
CN (1) CN110865970B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111371460B (zh) * 2020-04-26 2023-05-02 宁夏隆基宁光仪表股份有限公司 一种适用于智能电表的高低频匹配数据压缩方法
CN112559812B (zh) * 2020-12-24 2022-03-08 中国船舶集团有限公司 一种基于cpu+fpga的大数据输出方法及***
CN114584632B (zh) * 2022-02-24 2023-05-16 成都北中网芯科技有限公司 一种深度报文检测方法和装置
CN116956164A (zh) * 2023-09-18 2023-10-27 中国科学院精密测量科学与技术创新研究院 基于wasm技术的全高层大气激光雷达数据处理方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101201836A (zh) * 2007-09-04 2008-06-18 浙江大学 基于带记忆确定有限自动机的正则表达式匹配加速方法
CN101442540A (zh) * 2008-12-30 2009-05-27 北京畅讯信通科技有限公司 基于现场可编程门阵列的高速模式匹配算法
WO2011131384A1 (en) * 2010-04-20 2011-10-27 International Business Machines Corporation A dual dfa decomposition for large scale regular expression matching
EP1960913A4 (en) * 2005-12-02 2014-07-30 Ip Reservoir Llc METHOD AND DEVICE FOR A HIGH-PERFORMANCE PATTERN COMPARISON OF REGULAR EXPRESSIONS
CN108573069A (zh) * 2018-05-04 2018-09-25 西安交通大学 一种加速压缩流量正则表达式匹配的Twins方法
CN108628953A (zh) * 2018-04-08 2018-10-09 中山大学 一种基于fpga的并行字符串匹配算法
US10110563B1 (en) * 2016-04-28 2018-10-23 Palo Alto Networks, Inc. Reduction and acceleration of a deterministic finite automaton

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1960913A4 (en) * 2005-12-02 2014-07-30 Ip Reservoir Llc METHOD AND DEVICE FOR A HIGH-PERFORMANCE PATTERN COMPARISON OF REGULAR EXPRESSIONS
CN101201836A (zh) * 2007-09-04 2008-06-18 浙江大学 基于带记忆确定有限自动机的正则表达式匹配加速方法
CN101442540A (zh) * 2008-12-30 2009-05-27 北京畅讯信通科技有限公司 基于现场可编程门阵列的高速模式匹配算法
WO2011131384A1 (en) * 2010-04-20 2011-10-27 International Business Machines Corporation A dual dfa decomposition for large scale regular expression matching
US10110563B1 (en) * 2016-04-28 2018-10-23 Palo Alto Networks, Inc. Reduction and acceleration of a deterministic finite automaton
CN108628953A (zh) * 2018-04-08 2018-10-09 中山大学 一种基于fpga的并行字符串匹配算法
CN108573069A (zh) * 2018-05-04 2018-09-25 西安交通大学 一种加速压缩流量正则表达式匹配的Twins方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
A Scalable Architecture For High-Throughput Regular-Expression Pattern Matching;Benjamin C. Brodie;《ISCA"06:Proceedings of the 33rd annual international symposium on Computer Architecture》;20060530;191-202 *
An orthogonal matching pursuit algorithm optimization design based on FPGA implementation;Jiyang Dai; Huazhu Luo; Pei Shen; Lizhou Xu;《2016 Chinese Control and Decision Conference (CCDC)》;20160808;全文 *
Parallel DFA Architecture for Ultra High Throughput DFA-Based Pattern Matching;Yi TANG; Chengchen HU;《IEICE TRANSACTIONS on Information and Systems》;20101201;3232-3242 *
Towards a Fast Regular Expression Matching Method Over Compressed Traffic;Xiuwen Sun; Hao Li; Xingxing Lu; Dan Zhao; Zheng Peng; Chengchen;《2018 IEEE/ACM 26th International Symposium on Quality of Service (IWQoS)》;20190124;全文 *
深度报文检测中高速正则表达式匹配算法研究;李鲲鹏;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130630;I139-126 *

Also Published As

Publication number Publication date
CN110865970A (zh) 2020-03-06

Similar Documents

Publication Publication Date Title
CN110865970B (zh) 一种基于fpga平台的压缩流量模式匹配引擎及模式匹配方法
US20200334533A1 (en) Methods and systems for data analysis in a state machine
US20240104020A1 (en) Methods and systems for handling data received by a state machine engine
US9886017B2 (en) Counter operation in a state machine lattice
US9535861B2 (en) Methods and systems for routing in a state machine
US9509312B2 (en) Boolean logic in a state machine lattice
US7643505B1 (en) Method and system for real time compression and decompression
EP2791862B1 (en) Device for detection in a state machine
US20190052553A1 (en) Architectures and methods for deep packet inspection using alphabet and bitmap-based compression
US9966971B2 (en) Character conversion
US20170193351A1 (en) Methods and systems for vector length management
US8909813B2 (en) Efficient processing of compressed communication traffic
CN111107068B (zh) 一种fpga高效规则匹配方法及终端
CN108573069B (zh) 一种加速压缩流量正则表达式匹配的Twins方法
KR101218087B1 (ko) 하둡 맵리듀스에서 바이너리 형태의 데이터 분석을 위한 입력포맷 추출방법 및 이를 이용한 바이너리 데이터의 분석방법
CN115567460A (zh) 数据包处理方法及装置
CN115765756A (zh) 一种高速透明传输的无损数据压缩方法、***及装置
CN108932315A (zh) 一种数据解压的方法以及相关装置
CN113972916A (zh) 一种lz77解码电路及其工作方法
Kayande et al. SMS Lingo: A hybrid text compression technique for mobile storage utilization
CN112199343A (zh) 一种小数据块场景的数据压缩/解压缩加速方法
CN116484069A (zh) 检测基于双字典压缩数据的正则表达式匹配方法和装置
JPS62209948A (ja) デ−タ圧縮伝送方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant