一种基于fpga的网络流量过滤系统与方法

文档序号:7552614阅读:233来源:国知局
专利名称:一种基于fpga的网络流量过滤系统与方法
技术领域
本发明属于网络应用领域,特别涉及到一种基于FPGA的网络流量过滤系统。本发明还涉及到一种基于FPGA的网络流量过滤的方法
背景技术
目前互联网对人们的影响越来越广泛,网络流量的管理也逾加重要,应用层流量过滤则是流量管理的一个重要实践。流量过滤的基础是流量识别,当前新协议与应用的不断涌现,对传统的流量识别方法提出了严峻的挑战。许多新的协议用随机端口号使得基于端口的识别方法失效,基于负载分析的方法对于一些没有分析出特征字段或采用加密隐藏特征的新应用也无能无力。为了应对挑战,近年来,许多研究人员尝试将数据挖掘技术引入到流量行为识别中,取得了不少研究成果,然而此类方法还不成熟,参数与算法的选择对识别准确率影响很大,且大多不适用于在线的流量识别。流量过滤过程中存在在线的实时识别操作,传统的运行平台如PC平台存在着效率低、实时性差的缺点,而ASIC架构的平台则灵活性低、开发效率低,即使是NP架构平台,其优化内容也只限于网络数据处理的一般性操作,不能对高层次的算法加速。近年来FPGA技术发展迅速,功能与性能越来越强,被广泛应用于各个领域,与前述运行平台比,FPGA平台兼具灵活性好、效率高、速度快的优点,基于FPGA实现的系统具有良好的性能优势。

发明内容
本发明从流量属性特征角度出发,采用K-means聚类算法来识别在线流量,进而构建高准确率的流量过滤系统,FPGA实现的高效性使得K-means算法所需的重要参数K能直接明确。同时本发明基于FPGA来实现流量过滤系统,使得系统能高效实时的过滤网络流量。本发明解决其技术问题采取的技术方案:一种基于FPGA的网络流量过滤系统,其特征在于:包括以太网驱动器、FPGA、USB串口桥模块、DDR3存储器、Nor Flash存储器、SD卡存储器、RTC模块,其连接关系为:以太网驱动器、USB串口桥模块的串口端、DDR3存储器、Nor Flash存储器、SD卡存储器、RTC模块均与FPGA直接相连,USB串口桥模块的USB端与PC相连。FPGA内包含SOC (System On programmable Chip)系统及流量过滤IP,流量过滤操作由FPGA内的流量过滤IP核完成;流量过滤IP核包括2个数据通路模块、2个地址映射模块、TCP会话状态双口 RAM模块、2个控制模块、2个距离计算模块、2个知识库RAM模块、AXI总线接口模块;其连接关系为:数据通路模块与控制模块、地址映射模块输入端相连,地址映射模块输出端与TCP会话状态双口 RAM模块的地址线相连,TCP会话状态双口 RAM模块数据与控制线与控制模块相连,知识库RAM写入端与AXI总线接口模块相连,知识库RAM读取端与距离计算模块相连,距离计算模块与控制模块相连,AXI总线接口模块与控制模块相连。
进一步,所述以太网驱动器是DP83848CVV芯片;所述FPGA是XC6SLX45-2芯片;所述DDR3存储器是MT41J64M16JT-15E芯片;所述Nor Flash存储器是JS28F128J3D75芯片。一种基于FPGA的网络流量过滤方法,其特征在于包括以下步骤:首先是生成流量类别知识库;生成知识库需要使用流量的特征属性集,特征属性集是各条流量的特征属性的集合;所述流量的特征属性为TCP会话的前四个包括应用数据的报文的载荷大小及方向;根据特征属性的定义,从采集的网络数据文件中提取特征属性生成特征属性集,再在流量特征属性集上运行K-means聚类算法,指定K-means算法的K参数为k,k是流量过滤IP核能实时计算的最大知识库记录条目数,流量过滤IP核计算这些条目的时间不超过网络中两个包的传输时间间隙;对每个簇所对应的原始流量数据运用DPI即Deep Packet Inspection工具可知簇所包含的流量类别,定义比率最大的那类流量为簇对应的流量类别;各个簇的中心点组成的集合既为流量类别知识库,同时在知识库各记录尾部追加过滤标识字段用来标识此类流量是否需要过滤;其次是在线识别与过滤流量;运行在SOC上的软件将类别知识库数据通过AXI总线写入到流量过滤IP核的知识库RAM中;IP核实时的处理每个网络数据报文,提取每一个TCP会话的特征属性,计算特征属性与类别知识库中的所有记录间的欧式距离,选取最小值所对应的类别知识库记录作为流量识别的结果,再根据记录的过滤标识确定是否拦截此TCP会话的后续数据报文;流量过滤IP核采用并行结构,两路处理单元分别处理全双工网络两个方向上的数据包。数据通路模块、址映射模块、控制模块、距离计算模块、知识库RAM模块组成一路处理单元,通过TCP会话状态双口 RAM共享TCP会话的状态与特征属性信息;流量过滤IP核中的数据通 路模块完成网络数据包的接收与转发工作,同时还提取TCP数据包的载荷大小、四元组与标志位属性,四元组即源IP地址、目的IP地址、源端口、目的端口 ;控制模块根据当前TCP数据包的属性数据,在会话状态双口 RAM中更新其对应的TCP会话的状态数据;地址映射模块根据TCP数据包的四元组数据获得此数据包所属会话状态双口 RAM的存储地址,地址映射模块基于Hash算法实现;而Hash冲突的处理策略为:发生冲突时,如果数据包是TCP会话的第一个包,则新建会话状态信息并覆盖冲突地址中原有信息;如果不是第一个包则对比当前数据包的Hash检验值与存储在TCP会话状态RAM中的校验值是否相等,如相等就表明当前数据包属于此流量,否则将当前数据包直接转发;Hash检验值的计算采用求余Hash法,既对四元组数据使用求余函数进行计算得到检验值;在获得特征属性后控制模块调用距离计算模块,计算流量与知识库RAM中各记录间的欧氏距离,距离计算模块使用并行计算结构,能在下一个数据包到达前识别出当前数据包所属TCP会话的种类;距离计算模块同时使用了四组独立的减法与乘法单元并行计算每一维的数据,再串联求和即得到欧氏距离的平方值,根据此值找出与流量特征属性最近的知识库记录,识别出流量的种类;流量所属种类对应的知识库记录中的拦截标识字段决定TCP会话状态是否更改为拦截;在!1^数据包的四元组字段传输完后,控制模块既可从TCP会话状态双口 RAM中得到此包所属TCP会话的状态,再根据TCP会话的拦截状态禁止数据通路转发此包后续字节实现流量的拦截;流量拦截消息由AXI总线接口模块传送到SOC上的软件,SOC上的软件将消息记录在SD卡上并通过USB串口桥模块发送至PC上显示。本发明的优点:基于FPGA的流量过滤系统具有很高的实时性,网络数据包通过本系统增加的延时理论值仅为80ns,实际的带宽测试结果表明本系统未对网络带宽产生明显的影响。本发明所采用的流量过滤方法不仅具有过滤新型应用协议的能力还具有很高的准确率,测试结果表明识别准确率在90%之上。本发明基于FPGA的实现使K-means算法所需的重要参数K得以明确,无需再使用其它相对复杂的方法如遗传聚类、实验尝试等去确定最优解,提闻了知识库的获取速度。下面结合附图和实施例对本发明作详细说明。


图1为本发明基于FPGA的网络流量过滤系统的系统结构2为本发明基于FPGA的网络流量过滤系统的流量过滤IP核结构3为本发明基于FPGA的网络流量过滤方法的流程4为本发明基于FPGA的网络流量过滤系统的距离计算模块结构图
具体实施例方式参见附图1,本发明实施例提供的基于FPGA的流量过滤系统包括以太网驱动器、FPGA, USB串口桥模块、DDR3存储器、Nor Flash存储器、SD卡存储器、RTC模块。本发明实施例的工作过程首先是系统通过100M以太网驱动器接收网络数据包,接收到的数据包被送至FPGA模块,FPGA内部的流量过滤IP核以硬件的方式运行识别算法对数据包进行实时处理以识别流量类别,计算的中间结果及状态存放在存储器中,计算的最终结果确定数据包所属的流量类别,并根据对此类流量的预定义拦截标识确定此数据包是被拦截还是被转发。流量识别所需的知识库由运行在SOC上的软件进行设定,流量的拦截消息以日志保存在SD卡上并由USB串口桥模块传送到PC显示。流量拦截日志所需要的时间信息由RTC提供。Nor Flash用于保存FPGA配置数据与SOC软件。参见附图2,本发明实施例提供的流量过滤IP核包含2个数据通路模块、2个地址映射模块、TCP会话状态双口 RAM模块、2个控制模块、2个距离计算模块、2个知识库RAM模块、AXI总线接口模块。其中数据通路模块与控制模块、地址映射模块输入端相连,地址映射模块输出端与TCP会话状态双口 RAM模块的地址线相连,TCP会话状态双口 RAM模块数据与控制线与控制模块相连,知识库RAM写入端与AXI总线接口模块相连,知识库RAM读取端与距离计算模块相连,距离计算模块与控制模块相连,AXI总线接口模块与控制模块相连。流量过滤IP核采用并行结构,两路处理单元无冲突的同时工作,处理全双工网络两个方向上的数据包。数据通路模块、址映射模块、控制模块、距离计算模块、知识库RAM模块组成一路处理单元,通过TCP会话状态双口 RAM共享TCP会话的状态与特征属性信息。运行在SOC上的软件将类别知识库数据通过AXI总线写入到流量过滤IP核的知识库RAM中。IP核实时的处理每个网络数据报文,提取每一个TCP会话的特征属性,计算特征属性与类别知识库中的所有记录间的欧式距离,选取最小值所对应的类别知识库记录作为流量识别的结果,再根据记录的过滤标识确定是否拦截此TCP会话的后续数据报文。
参见附图3,应用上述系统的基于FPGA的网络流量过滤方法,主要包括两个过程。第一,在PC平台上运行的离线训练过程主要用来生成类别知识库。对历史数据集中的每一条TCP会话,提取其特征属性,并保存下来形成特征属性集。特征属性为TCP会话的前四个包括应用数据的报文的载荷大小及方向,其中方向的表示用正负数表示,正的载荷大小表不此包的传输方向与TCP握手信号的起始SYN包方向相同,负数则相反。在特征属性集上运行K-menas聚类算法,参数K选取256,根据聚类的结果将历史数据集进行分组。如聚类结果中第13个簇包含TCP会话1、4、7……等,则从历史数据集中提取1、4、7……等TCP会话的数据单独存放为一组。对分好组的数据运用DPI工具分析,选择含量最高的那类流量定义为此组流量所对应的簇的流量类别。如第30组流量中,HTTP流量含量最高,则聚类结果中的第30号簇的流量类别被定义为HTTP。确定好每个簇所对应的流量后,提取簇的中心形成类别知识库。知识库中的每条记录均包含三个字段,编号字段、特性属性字段、拦截标识字段。编号字段用于查询簇所对应的流量类别名称,拦截标识用来定义此簇所对应的流量在识别出来后是否进行拦截操作。第二,运行于FPGA平台的在线流量识别与过滤过程。运行在SOC上的软件将类别知识库数据通过AXI总线写入到流量过滤IP核的知识库RAM中。IP核实时的处理每个网络数据报文,提取每一个TCP会话的特征属性,计算特征属性与类别知识库中的所有记录间的欧式距离,选取最小值所对应的类别知识库记录作为流量识别的结果,再根据记录的过滤标识确定是否拦截此TCP会话的后续数据报文。以单条TCP会话为例详细说明此过程的具体情况。参见附图2,定义TCP会话状态双口 RAM左边的IP核单元标号为0,右边的IP核单元标号为I。TCP会话发起方首先发送一个SYN包,当此包经过数据通路模块O时,数据通路模块O检测到它是一个有效的TCP包进而提取此包的四元组、载荷大小与标志位属性数据,地址映射模块O通过四元组数据得到TCP会话状态双口 RAM访问地址A,控制模块O根据标志位数据中的SYN置位、ACK复位确定此为一条新的TCP会话,控制模块O在TCP会话状态双口 RAM的地址A中新建一条TCP会话状态数据记录,记录中起始方向字段设为0,状态设为SYN,并写入Hash校验值。TCP会话的接收方同意建立TCP连接后将返回SYN应答数据包,此数据包经数据通路模块I传输,地址映射模块I通过SYN应 答数据包的四元组属性得到相同的TCP会话状态双口 RAM访问地址A,控制模块I先检测此数据包的Hash检验值是否与A地址中的检验值字段数据相同,如不等则不作处理,如相等,改写TCP会话状态为SYNACK。TCP会话发起方收到SYN应答包后会返回一个ACK确认包,此包经数据通路模块O传输,控制模块O将TCP会话状态修改为READY,表示TCP会话建立的三次握手阶段已经完成,准备传输数据。TCP会话发起方开始发送第一个数据包,此包经数据通路模块O传输,控制模块O检查双口 RAM地址A中起始方向字段是否为0,为O则写入正的载荷大小,为I则写入负的载荷大小,控制模块O将TCP会话状态修改为LENl,表示获取第一个载荷大小。TCP会话接收方返回来一个数据包,此包经数据通路模块I传输,控制模块I检查双口 RAM地址A中起始方向字段是否为1,为I则写入正的载荷大小,为O则写入负的载荷大小,控制模块I根据前一 TCP会话状态为LENl修改当下TCP会话状态为LEN2。当TCP会话状态成为LEN4时,控制模块启动距离计算模块依次计算当前TCP会话的特征属性数据与知识库中各记录的欧式距离,选择距离最小的记录为流量识别结果。
在IOOM以太网中,64字节最小以太网帧加上7字节前导码与I字节帧起始定界符后的传输时间为5760ns,而100M以太网的IPG (Inter Packet Gap)时间为960ns,因此两个TCP包间的最小传输时间间隔为6720ns。计算模块的计算时间应少于6720ns才能实现实时处理。流量的属性点空间是四维的,点与点之间的欧式距离计算式为HF-91! = υ:):(I)参见附图4,根据式(1),为提高计算速度使用四个独立的减法与乘法单元并行完成式(I)中的Σ:^^-QJ2计算,Σ =1(Ρ5-Qi)2的结果既可用来比较大小,距离计算模块不用再实现开方运算。距离计算模块在FPGA芯片(XC6SLX45-2)上完成一次计算需要14.693ns。当IP核运行在IOOMHz频率时,完成一次计算需要两个时钟周期,完成256条知识库记录的计算过程需要256x2xl0ns=5120ns,小于6720ns,达到实时处理的性能。此外在100M网络中,假定TCP流量的种类小于256是合理的,即256作为K-means算法的K参数是合理的。计算完成后,控制模块读取识别结果记录中的拦截标识字段,如果此字段置位则修改TCP会话状态为BLOCK,否则从TCP会话状态双口 RAM清除此TCP会话状态数据。在TCP会话状态被修改为BLOCK后,TCP会话的数据包的TCP头部字段通过数据通路后,控制模块将根据BLOCK装备禁此数据通路继续转发数据包的后继字节,从而拦截了流量。在TCP会话状态数据清除后,控制模块检查到后续的TCP会话数据包的Hash检验值不相同将不对TCP会话做任何处理,从而不影响TCP会话的正常进行。当多个TCP会话同时进行时,在同一时刻,IP核中的每一路处理单元只面对一个TCP会话,其运行过程与单个TCP会话相同`。
权利要求
1.一种基于FPGA的网络流量过滤系统,其特征在于:包括以太网驱动器、FPGA、USB串口桥模块、DDR3存储器、Nor Flash存储器、SD卡存储器、RTC模块,其连接关系为:以太网驱动器、USB串口桥模块的串口端、DDR3存储器、Nor Flash存储器、SD卡存储器、RTC模块均与FPGA直接相连,USB串口桥模块的USB端与PC相连; FPGA内包含SOC系统及流量过滤IP,流量过滤操作由FPGA内的流量过滤IP核完成;流量过滤IP核包括2个数据通路模块、2个地址映射模块、TCP会话状态双口 RAM模块、2个控制模块、2个距离计算模块、2个知识库RAM模块、AXI总线接口模块;其连接关系为:数据通路模块与控制模块、地址映射模块输入端相连,地址映射模块输出端与TCP会话状态双口 RAM模块的地址线相连,TCP会话状态双口 RAM模块数据与控制线与控制模块相连,知识库RAM写入端与AXI总线接口模块相连,知识库RAM读取端与距离计算模块相连,距离计算模块与控制模块相连 ,AXI总线接口模块与控制模块相连。
2.根据权利要求1所述的基于FPGA的网络流量过滤系统,基特征在于:所述以太网驱动器是DP83848CVV芯片;所述FPGA是XC6SLX45-2芯片;所述DDR3存储器是MT41J64M16JT-15E 芯片;所述 Nor Flash 存储器是 JS28F128J3D75 芯片。
3.应用权利要求1所述的基于FPGA的网络流量过滤系统的网络流量过滤方法,其特征在于包括以下步骤: 首先是生成流量类别知识库;生成知识库需要使用流量的特征属性集,特征属性集是各条流量的特征属性的集合;所述流量的特征属性为TCP会话的前四个包括应用数据的报文的载荷大小及方向;根据特征属性的定义,从采集的网络数据文件中提取特征属性生成特征属性集,再在流量特征属性集上运行κ-means聚类算法,指定K-means算法的K参数为k,k是流量过滤IP核能实时计算的最大知识库记录条目数,流量过滤IP核计算这些条目的时间不超过网络中两个包的传输时间间隙;对每个簇所对应的原始流量数据运用DPI即Deep Packet Inspection工具可知簇所包含的流量类别,定义比率最大的那类流量为簇对应的流量类别;各个簇的中心点组成的集合既为流量类别知识库,同时在知识库各记录尾部追加过滤标识字段用来标识此类流量是否需要过滤; 其次是在线识别与过滤流量;运行在SOC上的软件将类别知识库数据通过AXI总线写入到流量过滤IP核的知识库RAM中;IP核实时的处理每个网络数据报文,提取每一个TCP会话的特征属性,计算特征属性与类别知识库中的所有记录间的欧式距离,选取最小值所对应的类别知识库记录作为流量识别的结果,再根据记录的过滤标识确定是否拦截此TCP会话的后续数据报文; 流量过滤IP核采用并行结构,两路处理单元分别处理全双工网络两个方向上的数据包;数据通路模块、址映射模块、控制模块、距离计算模块、知识库RAM模块组成一路处理单元,通过TCP会话状态双口 RAM共享TCP会话的状态与特征属性信息; 流量过滤IP核中的数据通路模块完成网络数据包的接收与转发工作,同时还提取TCP数据包的载荷大小、四元组与标志位属性,四元组即源IP地址、目的IP地址、源端口、目的端口 ;控制模块根据当前TCP数据包的属性数据,在会话状态双口 RAM中更新其对应的TCP会话的状态数据;地址映射模块根据TCP数据包的四元组数据获得此数据包所属会话状态双口 RAM的存储地址,地址映射模块基于Hash算法实现;而Hash冲突的处理策略为:发生冲突时,如果数据包是TCP会话的第一个包,则新建会话状态信息并覆盖冲突地址中原有信息;如果不是第一个包则对比当前数据包的Hash检验值与存储在TCP会话状态RAM中的校验值是否相等,如相等就表明当前数据包属于此流量,否则将当前数据包直接转发;Hash检验值的计算采用求余Hash法,既对四元组数据使用求余函数进行计算得到检验值; 在获得特征属性后控制模块调用距离计算模块,计算流量与知识库RAM中各记录间的欧氏距离,距离计算模块使用并行计算结构,能在下一个数据包到达前识别出当前数据包所属TCP会话的种类;距离计算模块同时使用了四组独立的减法与乘法单元并行计算每一维的数据,再串联求和即得到欧氏距离的平方值,根据此值找出与流量特征属性最近的知识库记录,识别出流量的种类; 流量所属种类对应的知识库记录中的拦截标识字段决定TCP会话状态是否更改为拦截;在!1^数据包的四元组字段传输完后,控制模块既可从TCP会话状态双口 RAM中得到此包所属TCP会话的状态,再根据TCP会话的拦截状态禁止数据通路转发此包后续字节实现流量的拦截;流量拦截消息由AXI总线接口模块传送到SOC上的软件,SOC上的软件将消息记录在SD卡上并通过USB串口桥模块发送至PC上显示。
全文摘要
一种基于FPGA的网络流量过滤系统与方法属于网络应用领域。本发明首先利用遗传K-means算法对网络历史流量进行离线训练生成流量类别知识库,再结合流量类别知识库利用遗传K-means算法进行在线识别辨别流量的种类,根据辨别结果确定流量是否需要过滤。基于遗传K-means的识别方法解决了传统识别方法在识别新型应用协议流量时准确率低的问题。本发明的在线识别与过滤过程基于FPGA技术实现,运行于FGPA内的在线识别与过滤IP核能实时的处理网络数据包,提取每条流量的特征属性,实时的计算识别流量的类别,并根据识别结果实时的过滤流量。本发明具有良好的实时性,它的实施不会对网络的有效带宽造成显著影响。
文档编号H04L29/06GK103209169SQ20131005756
公开日2013年7月17日 申请日期2013年2月23日 优先权日2013年2月23日
发明者李 杰, 赖英旭 申请人:北京工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1