适用于多流正则表达式匹配的数据流交换复用系统及方法

文档序号:7871148阅读:233来源:国知局
专利名称:适用于多流正则表达式匹配的数据流交换复用系统及方法
技术领域
本发明涉及一种适用于多流正则表达式匹配的数据流交换复用系统及方法。
背景技术
正则表达式匹配(REM)是网络入侵检测系统(NIDS)的重要组成部分,主要完成针对潜在威胁的深度检测;随着网络带宽以及网络流量的不断增加,REM需要扫描的网络内容迅速增长,REM的性能成为网络安全系统的瓶颈。REM结构可以通过在FPGA中构建不确定性有限自动机(NFA)实现,该方法可以利用FPGA高效的并行处理机制以及大量的可编程逻辑资源;为提高正则表达式匹配的速率,达到更高的系统吞吐率,以往的研究者提出了很多技术来优化NFA到FPGA的映射方法;传统的基于FPGA的REM解决方案大多针对单条高速数据流下,大规模正则表达式的匹配;然而,现实网络数据大多由多条数据流混合组成,如何将传统的基于单流的REM模块通过复用的方式支持多流同时匹配具有重要的意义,通过复用可以减少深度包检测系统所需的缓存资源以及相应的系统延时。几种传统的将单流REM扩展到多流REM的方法中最简单的方法是对每一条数据流都构建一个独立的REM系统,这种方法简单易于实现但可扩展性差,当数据流的数量较多的时候,对内存要求很大;另一种方法是通过时分复用的方式将一个REM系统应用于多条流的处理;该方法可扩展性强,资源利用率高;基于时分复用的实现方式有竞赛处理和加权交换两种;竞赛处理是一种先到先得的处理方式,先到达的数据流优先处理,该数据流全部处理完之后,再选择下一条数据流;该方法在处理一条数据流时,需要对其它数据流进行临时存储来用于后续处理,会消耗极大的缓存资源,当数据流数目较多时,系统负担较大,实现较为复杂;加权交换为每一条数据流定义优先级,根据优先级高低选择需要处理的数据流。通过该方式,可以更加灵活的选择待处理的数据流,灵活性更高,同时减少了内存需求;加权交换包括定长交换和变长交换;定长交换在处理完一个数据流的固定长度(例如1024Byte)后会切换到另一个数据流;变长交换可处理不定长度的数据(例如一个数据包)后切换到另一个数据流;定长交换使得交换频率较高,增加了交换过程的开销,增加了缓存需求,限制了系统吞吐率;变长交换允许动态调整交换长度,灵活性较好,更加适合于FPGA实现。

发明内容
本发明针对以上问题的提出,而研制一种能够支持多条数据流同时处理、灵活性好、资源利用率高的适用于多流正则表达式匹配的数据流交换复用系统及方法。本发明的技术手段如下:—种适用于多流正则表达式匹配的数据流交换复用系统,包括:用于对输入的数据流进行特性判断并赋予相应的数据流优先级和数据流序号信息的优先级添加模块;
连接信息交换模块,用于存储数据流以及相应的数据流优先级、数据流序号和数据流等待时间信息的可编程存储模块;分别连接优先级添加模块、可编程存储模块和交换调度模块,用于将优先级添加模块传输过来的数据流以及相应的数据流优先级、数据流序号和实时更新的数据流等待时间信息存储至可编程存储模块,从可编程存储模块中读取数据流优先级、数据流序号和数据流等待时间信息给交换调度模块以及根据选中的数据流序号信息和设定的交换长度信息从可编程存储模块中读取相应的数据流给单流REM模块,根据设定的交换长度信息进行计数,并当计数值达到交换长度时或者当前进行正则表达式匹配的数据流结束时产生交换指示信号传输给交换调度模块,同时将计数值清零的信息交换模块;连接信息交换模块,用于根据信息交换模块传输过来的数据流优先级、数据流序号和数据流等待时间信息动态选择待处理的数据流和调整数据流的交换长度并根据信息交换模块传输过来的交换指示信号将选中数据流的数据流序号和设定的交换长度信息传输给信息交换模块的交换调度模块;连接信息交换模块,用于对信息交换模块传输过来的数据流进行正则表达式匹配的单流REM模块。一种适用于多流正则表达式匹配的数据流交换复用方法,包括如下步骤:A:优先级添加模块对输入的数据流进行特性判断并赋予相应的数据流优先级和数据流序号信息;Al:优先级添加模块对数据流赋予相应的数据流优先级信息:定义数据流优先级分为普通、中、高三个级别,根据每一数据流的数据流类型、QoS要求和数据流持续时间的特性完成数据流优先级设定;A2:优先级添加模块对数据流赋予相应的数据流序号:针对任一数据流,提取16位数据流指示信息,对该信息进行hash处理,按照hash处理结果对各个数据流进行编号,若当前数据流的hash处理结果与已完成编号的数据流的hash处理结果相同时,则沿编号顺序查找下一个未被占用的编号赋给当前数据流;B:优先级添加模块将数据流优先级和数据流序号信息置于对应的数据流之前并传输给信息交换模块;C:信息交换模块将优先级添加模块传输过来的数据流以及相应的数据流优先级、数据流序号和实时更新的数据流等待时间信息存储至可编程存储模块:若可编程存储模块中没有当前需存储的数据流的信息,则在可编程存储模块中新建一条对应信息的数据流表项并将数据流等待时间置为零;若可编程存储模块中已存有当前需存储的数据流的信息,则按照当前的数据流信息更新可编程存储模块中的该数据流相应的数据流优先级和数据流等待时间;D:信息交换模块从可编程存储模块中读取数据流的数据流优先级、数据流序号和数据流等待时间信息给交换调度模块,交换调度模块根据数据流的数据流优先级、数据流序号和数据流等待时间信息动态选择待处理的数据流和调整数据流的交换长度;Dl:交换调度模块根据数据流的数据流优先级、数据流序号和数据流等待时间信息动态选择待处理的数据流;Dll:交换调度模块首先根据数据流优先级的级别选中数据流优先级为高的数据流作为待处理的数据流;D12:当数据流优先级相同时,交换调度模块选择数据流等待时间最长的数据流作为待处理的数据流;D13:当数据流优先级和数据流等待时间均相同时,交换调度模块选择数据流序号最小的数据流作为待处理的数据流;D2:交换调度模块根据数据流的数据流优先级、数据流序号和数据流等待时间信息动态调整数据流的交换长度:D21:交换调度模块设定交换长度初始值为一个数据包;D22:交换调度模块对新选择的数据流将其交换长度设为初始值即一个数据包;D23:交换调度模块对连续第k次选择的数据流,将其交换长度设为2k个数据包,当k > 6时,将其交换长度设为无穷大,其中k为数据流被交换调度模块连续选择的次数;D3:交换调度模块根据信息交换模块的交换指示信号将选中数据流的数据流序号、设定的交换长度信息传输给信息交换模块;E:信息交换模块根据选中的数据流序号信息和设定的交换长度信息从可编程存储模块中读取相应的数据流给单流REM模块,同时根据设定的交换长度信息进行计数,并当计数值达到交换长度时或者当前进行正则表达式匹配的数据流结束时产生交换指示信号传输给交换调度模块;F:单流REM模块对信息交换模块传输过来的数据流进行正则表达式匹配;Fl:单流REM模块首先对输入的正则表达式库进行编译映射转换为FPGA中RTL级实现,从而得到能够处理一条数据流的正则表达式匹配模块;F2:单流REM模块利用正则表达式匹配模块得到包括满足的规则和匹配的位置两部分内容的匹配结果。由于采用了上述技术方案,本发明提供的适用于多流正则表达式匹配的数据流交换复用系统及方法,通过结合优先级添加模块、可编程存储模块、信息交换模块和交换调度模块,根据数据流特性合理进行优先级和交换长度设定,再统筹选择进行正则表达式匹配处理的数据流,实现了应用单流REM模块完成多条数据流处理,可扩展性强,资源利用率高;结合数据流优先级、数据流序号和数据流等待时间多元因素选择需要处理的数据流,均衡了各个数据流的等待时间,灵活性高,节省存储资源,减轻系统负担;采用变长交换长度机制降低了交换频率和交换过程的开销。


图1是本发明的结构框图;图2是优先级添加模块的工作流程图;图3是可编程存储模块的工作流程图;图4是交换调度模块的工作流程图;图5是单流REM模块的工作流程图;图6是信息交换模块的工作流程图。
具体实施方式
如图1所示的一种适用于多流正则表达式匹配的数据流交换复用系统,包括:用于对输入的数据流进行特性判断并赋予相应的数据流优先级和数据流序号信息的优先级添加模块;连接信息交换模块,用于存储数据流以及相应的数据流优先级、数据流序号和数据流等待时间信息的可编程存储模块;分别连接优先级添加模块、可编程存储模块和交换调度模块,用于将优先级添加模块传输过来的数据流以及相应的数据流优先级、数据流序号和实时更新的数据流等待时间信息存储至可编程存储模块,从可编程存储模块中读取数据流优先级、数据流序号和数据流等待时间信息给交换调度模块以及根据选中的数据流序号信息和设定的交换长度信息从可编程存储模块中读取相应的数据流给单流REM模块,根据设定的交换长度信息进行计数,并当计数值达到交换长度时或者当前进行正则表达式匹配的数据流结束时产生交换指示信号传输给交换调度模块,同时将计数值清零的信息交换模块;连接信息交换模块,用于根据信息交换模块传输过来的数据流优先级、数据流序号和数据流等待时间信息动态选择待处理的数据流和调整数据流的交换长度并根据信息交换模块传输过来的交换指示信号将选中数据流的数据流序号和设定的交换长度信息传输给信息交换模块的交换调度模块;连接信息交换模块,用于对信息交换模块传输过来的数据流进行正则表达式匹配的单流REM模块;—种适用于多流正则表达式匹配的数据流交换复用方法,包括如下步骤:A:优先级添加模块对输入的数据流进行特性判断并赋予相应的数据流优先级和数据流序号信息;Al:优先级添加模块对数据流赋予相应的数据流优先级信息:定义数据流优先级分为普通、中、高三个级别,根据每一数据流的数据流类型、QoS要求和数据流持续时间的特性完成数据流优先级设定;A2:优先级添加模块对数据流赋予相应的数据流序号:针对任一数据流,提取16位数据流指示信息,对该信息进行hash处理,按照hash处理结果对各个数据流进行编号,若当前数据流的hash处理结果与已完成编号的数据流的hash处理结果相同时,则沿编号顺序查找下一个未被占用的编号赋给当前数据流;B:优先级添加模块将数据流优先级和数据流序号信息置于对应的数据流之前并传输给信息交换模块; C:信息交换模块将优先级添加模块传输过来的数据流以及相应的数据流优先级、数据流序号和实时更新的数据流等待时间信息存储至可编程存储模块:若可编程存储模块中没有当前需存储的数据流的信息,则在可编程存储模块中新建一条对应信息的数据流表项并将数据流等待时间置为零;若可编程存储模块中已存有当前需存储的数据流的信息,则按照当前的数据流信息更新可编程存储模块中的该数据流相应的数据流优先级和数据流等待时间;D:信息交换模块从可编程存储模块中读取数据流的数据流优先级、数据流序号和数据流等待时间信息给交换调度模块,交换调度模块根据数据流的数据流优先级、数据流序号和数据流等待时间信息动态选择待处理的数据流和调整数据流的交换长度;
Dl:交换调度模块根据数据流的数据流优先级、数据流序号和数据流等待时间信息动态选择待处理的数据流;Dll:交换调度模块首先根据数据流优先级的级别选中数据流优先级为高的数据流作为待处理的数据流;D12:当数据流优先级相同时,交换调度模块选择数据流等待时间最长的数据流作为待处理的数据流;D13:当数据流优先级和数据流等待时间均相同时,交换调度模块选择数据流序号最小的数据流作为待处理的数据流;D2:交换调度模块根据数据流的数据流优先级、数据流序号和数据流等待时间信息动态调整数据流的交换长度:D21:交换调度模块设定交换长度初始值为一个数据包;D22:交换调度模块对新选择的数据流将其交换长度设为初始值即一个数据包;D23:交换调度模块对连续第k次选择的数据流,将其交换长度设为2k个数据包,当k > 6时,将其交换长度设为无穷大,其中k为数据流被交换调度模块连续选择的次数;D3:交换调度模块根据信息交换模块的交换指示信号将选中数据流的数据流序号、设定的交换长度信息传输给信息交换模块;E:信息交换模块根据选中的数据流序号信息和设定的交换长度信息从可编程存储模块中读取相应的数据流给单流REM模块,同时根据设定的交换长度信息进行计数,并当计数值达到交换长度时或者当前进行正则表达式匹配的数据流结束时产生交换指示信号传输给交换调度模块;F:单流REM模块对信息交换模块传输过来的数据流进行正则表达式匹配;Fl:单流REM模块首先对输入的正则表达式库进行编译映射转换为FPGA中RTL级实现,从而得到能够处理一条数据流的正则表达式匹配模块;F2:单流REM模块利用正则表达式匹配模块得到包括满足的规则和匹配的位置两部分内容的匹配结果。本发明采用了基于变长加权交换的时分复用技术;本发明以交换调度模块为核心处理单元,信息交换模块为数据处理中心,优先级添加模块进行输入数据的预处理,可编程存储模块完成相关信息的存储,单流REM模块实现匹配操作以及结果的输出。本发明所述优先级添加模块对每一个输入的数据流进行特性判断并赋予相应的数据流优先级和数据流序号;其中优先级定义为普通、中、高三个级别,在FPGA中三种优先级对应的编码分别为“001”、“010”、“100”,这种编码方式使得每一种优先级的编码结果码距至少为2,从而减少传输过程中误码的影响;优先级添加模块对输入的每一条数据流判断其特性,包括数据流类型、QoS (服务质量)要求、数据流持续时间等,根据这些信息对数据流赋予相应的数据流优先级; 突发的短时数据流优先级为“高”,对时延等时间性能要求较高的数据流优先级为“中”,其余的数据流优先级为“普通”;如图2所示当多条输入数据流(stream_l, stream_2,…,stream_n)进入系统后,首先进入优先级添加模块的数据缓存区中,为满足FPGA处理需求,在缓存区中进行数据位宽以及处理频率的变换,设单条输入数据流量为100Mbps,则η条数据流总流量为n*100Mbps ;为保证FPGA处理的有效性,选择系统处理带宽为64bit,大多数FPGA以及相应的IP核都能够支持该位宽,根据FPGA中高速通道的处理能力,处理频率选择为156.25MHz,理论处理能力为:64*156.25=10Gbps ;考虑系统内部的处理开销,实际处理能力约为9.4Gbps ;为保证无丢包的处理所有η条数据流,η的大小需要限制为:n〈9.4G/100M=96.256,即系统可支持最多96条数据流的同时处理;当单条数据流量输入为IGbps时单条流速率较高,此时系统最多可支持9条数据流同时处理;然后再将数据送入信息统计子模块对这η条数据流进行数据流信息分析,得到数据流对QoS(服务质量)等特性的要求,按照这些要求在优先级判断设置子模块中为数据流添加相应的优先级信息,从而得到输出的数据流格式如表I。表1.包含数据流序号和数据流优先级的数据流格式。
权利要求
1.一种适用于多流正则表达式匹配的数据流交换复用系统,其特征在于包括: 用于对输入的数据流进行特性判断并赋予相应的数据流优先级和数据流序号信息的优先级添加模块; 连接信息交换模块,用于存储数据流以及相应的数据流优先级、数据流序号和数据流等待时间信息的可编程存储模块; 分别连接优先级添加模块、可编程存储模块和交换调度模块,用于将优先级添加模块传输过来的数据流以及相应的数据流优先级、数据流序号和实时更新的数据流等待时间信息存储至可编程存储模块,从可编程存储模块中读取数据流优先级、数据流序号和数据流等待时间信息给交换调度模块以及根据选中的数据流序号信息和设定的交换长度信息从可编程存储模块中读取相应的数据流给单流REM模块,根据设定的交换长度信息进行计数,并当计数值达到交换长度时或者当前进行正则表达式匹配的数据流结束时产生交换指示信号传输给交换调度模块,同时将计数值清零的信息交换模块; 连接信息交换模块,用于根据信息交换模块传输过来的数据流优先级、数据流序号和数据流等待时间信息动态选择待处理的数据流和调整数据流的交换长度并根据信息交换模块传输过来的交换指示信号将选中数据流的数据流序号和设定的交换长度信息传输给信息交换模块的交换调度模块; 连接信息交换模块,用于对信息交换模块传输过来的数据流进行正则表达式匹配的单流REM模块。
2.一种适用于多流正则表达式匹配的数据流交换复用方法,其特征在于包括如下步骤: A:优先级添加模块 对输入的数据流进行特性判断并赋予相应的数据流优先级和数据流序号信息; Al:优先级添加模块对数据流赋予相应的数据流优先级信息:定义数据流优先级分为普通、中、高三个级别,根据每一数据流的数据流类型、QoS要求和数据流持续时间的特性完成数据流优先级设定; A2:优先级添加模块对数据流赋予相应的数据流序号:针对任一数据流,提取16位数据流指示信息,对该信息进行hash处理,按照hash处理结果对各个数据流进行编号,若当前数据流的hash处理结果与已完成编号的数据流的hash处理结果相同时,则沿编号顺序查找下一个未被占用的编号赋给当前数据流; B:优先级添加模块将数据流优先级和数据流序号信息置于对应的数据流之前并传输给信息交换模块; C:信息交换模块将优先级添加模块传输过来的数据流以及相应的数据流优先级、数据流序号和实时更新的数据流等待时间信息存储至可编程存储模块:若可编程存储模块中没有当前需存储的数据流的信息,则在可编程存储模块中新建一条对应信息的数据流表项并将数据流等待时间置为零;若可编程存储模块中已存有当前需存储的数据流的信息,则按照当前的数据流信息更新可编程存储模块中的该数据流相应的数据流优先级和数据流等待时间; D:信息交换模块从可编程存储模块中读取数据流的数据流优先级、数据流序号和数据流等待时间信息给交换调度模块,交换调度模块根据数据流的数据流优先级、数据流序号和数据流等待时间信息动态选择待处理的数据流和调整数据流的交换长度; Dl:交换调度模块根据数据流的数据流优先级、数据流序号和数据流等待时间信息动态选择待处理的数据流; Dll:交换调度模块首先根据数据流优先级的级别选中数据流优先级为高的数据流作为待处理的数据流; D12:当数据流优先级相同时,交换调度模块选择数据流等待时间最长的数据流作为待处理的数据流; D13:当数据流优先级和数据流等待时间均相同时,交换调度模块选择数据流序号最小的数据流作为待处理的数据流; D2:交换调度模块根据数据流的数据流优先级、数据流序号和数据流等待时间信息动态调整数据流的交换长度: D21:交换调度模块设定交换长度初始值为一个数据包; D22:交换调度模块对新选择的数据流将其交换长度设为初始值即一个数据包; D23:交换调度模块对连续第k次选择的数据流,将其交换长度设为2k个数据包,当k ≥6时,将其交换长度设为无穷大,其中k为数据流被交换调度模块连续选择的次数;D3:交换调度模块根据信息交换模块的交换指示信号将选中数据流的数据流序号、设定的交换长度信息传输给信息交换模块; E:信息交换模块根据选中的数据流序号信息和设定的交换长度信息从可编程存储模块中读取相应的数据流给单流REM模块,同时根据设定的交换长度信息进行计数,并当计数值达到交换长度时或者当前进行正则表达式匹配的数据流结束时产生交换指示信号传输给交换调度模块; F:单流REM模块对信息交换模块传输过来的数据流进行正则表达式匹配; Fl:单流REM模块首先对输入的正则表达式库进行编译映射转换为FPGA中RTL级实现,从而得到能够处理一条数据流的正则表达式匹配模块; F2:单流REM模块利用正则表达式匹配模块得到包括满足的规则和匹配的位置两部分内容的匹配结果。
全文摘要
本发明公开了一种适用于多流正则表达式匹配的数据流交换复用系统及方法;所述系统包括用于对输入的数据流进行特性判断并赋予相应的数据流优先级和数据流序号信息的优先级添加模块;连接信息交换模块,用于存储数据流以及相应的数据流优先级、数据流序号和数据流等待时间信息的可编程存储模块;分别连接优先级添加模块、可编程存储模块和交换调度模块的信息交换模块;连接信息交换模块,用于动态选择待处理的数据流和调整数据流的交换长度的交换调度模块;连接信息交换模块,用于对信息交换模块传输过来的数据流进行正则表达式匹配的单流REM模块;本发明能够支持多条数据流同时处理、灵活性好、资源利用率高。
文档编号H04L12/851GK103078808SQ20121058997
公开日2013年5月1日 申请日期2012年12月29日 优先权日2012年12月29日
发明者卜佑军, 贺炜, 申涓, 赵靓, 黄万伟, 官福山 申请人:大连环宇移动科技有限公司, 中国人民解放军信息工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1