发明名称 一种使用Tilera多核加速卡基于流的数据包过滤系统及数据包过滤方法
摘要 本发明公开了一种使用Tilera多核加速卡基于流的数据包过滤系统及数据包过滤方法,数据包过滤系统包括有数据包采集模块、提取五元组内容模块、规则匹配模块、流表查找与更新模块、PCIe数据传输模块、PCIe数据包接收模块和数据包存储模块。数据包过滤方法是基于Tilera多核处理器与通用主机组成的异构系统的数据包采集、基于流的数据包过滤的方法。利用Tilera多核加速卡的mPIPE中采集到数据包;在Tilera上利用流表实现基于流的数据包过滤;将过滤后的数据包通过PCIe驱动传输到通用计算机上,在通用计算机上实现数据包的存储。本发明适用于万兆网络环境中流量的在线流量分析与存储。
申请公布号 CN105516016A 申请公布日期 2016.04.20
申请号 CN201510834423.8 申请日期 2015.11.25
申请人 北京航空航天大学 发明人 李巍;于秀芬;李云春
分类号 H04L12/813(2013.01)I 主分类号 H04L12/813(2013.01)I
代理机构 北京永创新实专利事务所 11121 代理人 李有浩
主权项 一种使用Tilera多核加速卡基于流的数据包过滤系统,所述Tilera多核加速卡与计算机之间为PCIe总线连接,其特征在于:基于流的数据包过滤系统包括有数据包采集模块(21)、提取五元组内容模块(22)、流表查找模块(23)、PCIe数据传输模块(24)、构建规库模块(31)、规则匹配模块(32)、更新流表模块(33)、PCIe数据包接收模块(11)和数据包存储模块(12);其中,数据包采集模块(21)、提取五元组内容模块(22)、流表查找模块(23)、PCIe数据传输模块(24)、构建规库模块(31)、规则匹配模块(32)和更新流表模块(33)内嵌在Tilera多核加速卡的Tile核内;其中,PCIe数据包接收模块(11)和数据包存储模块(12)内嵌在计算机中;PCIe数据包接收模块11用于接收经Tilera多核加速卡传输的流集FL={flow<sub>1</sub>,flow<sub>2</sub>,…,flow<sub>N</sub>};数据包存储模块12是从PCIe队列当中获得流集FL={flow<sub>1</sub>,flow<sub>2</sub>,…,flow<sub>N</sub>},以PCAP文件格式存储在计算机的存储器中;数据包采集模块21一方面从mPIPE单元中采集数据包PA={packet<sub>1</sub>,packet<sub>2</sub>,packet<sub>3</sub>,packet<sub>4</sub>,packet<sub>5</sub>,packet<sub>6</sub>,…,packet<sub>M</sub>},另一方面将采集的PA={packet<sub>1</sub>,packet<sub>2</sub>,packet<sub>3</sub>,packet<sub>4</sub>,packet<sub>5</sub>,packet<sub>6</sub>,…,packet<sub>M</sub>}放在缓冲区buffer中;提取五元组内容模块22从缓冲区buffer中提取出的任意一数据包packet<sub>M</sub>的五元组信息op={srcPort,dstPort,tran,srcIP,dstIP},具有相同五元组的数据包组成流flow<sub>N</sub>,记为:<math><![CDATA[<mrow><msub><mi>flow</mi><mi>N</mi></msub><mo>=</mo><mo>{</mo><msubsup><mi>packet</mi><mn>1</mn><mrow><msub><mi>op</mi><mi>N</mi></msub></mrow></msubsup><mo>,</mo><msubsup><mi>packet</mi><mn>2</mn><mrow><msub><mi>op</mi><mi>N</mi></msub></mrow></msubsup><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>packet</mi><mi>M</mi><mrow><msub><mi>op</mi><mi>N</mi></msub></mrow></msubsup><mo>}</mo><mo>;</mo></mrow>]]></math><img file="FDA0000857969760000011.GIF" wi="1077" he="119" /></maths>流表查找模块23第一方面先根据提取的五元组内容op<sub>Z</sub>计算出五元组的哈希值,然后根据五元组的哈希值查找流表FTABLE中的流表项;第二方面若流表FTABLE中存在处理该数据包的流表项,同时该流表项的有效位为1,则直接按照流表项对数据包进行过滤;若流表FTABLE中不存在处理该数据包的流表项,则再将该数据包输入到规则过滤匹配模块32中;PCIe数据包传输模块24将Tilera多核加速卡的流集FL={flow<sub>1</sub>,flow<sub>2</sub>,…,flow<sub>N</sub>}采用先进先出方式,传输到计算机上;构建规则库模块31用于保存规则;所述规则R={rule<sub>1</sub>,rule<sub>2</sub>,…,rule<sub>a</sub>};规则匹配模块32中有由过滤规则组成的过滤器filter;将该数据包的五元组内容op<sub>Z</sub>,逐个查找过滤器filter中的规则filter={rule<sub>1</sub>,rule<sub>2</sub>,…,rule<sub>a</sub>},若过滤器filter中存在处理该数据包的规则rule<sub>a</sub>,则按照规则rule<sub>a</sub>进行过滤,同时生成新的流表项,添加到流表FTABLE中;若过滤器filter中不存在处理该数据包的规则rule<sub>a</sub>,则不进行过滤;流表更新模块33用于增加流表项和删除流表项;在对任意一数据包<img file="FDA0000857969760000021.GIF" wi="229" he="79" />过滤时,一方面,当流表中不存在处理该数据包<img file="FDA0000857969760000022.GIF" wi="229" he="79" />的流表项时,仍需要查找规则集合R={rule<sub>1</sub>,rule<sub>2</sub>,…,rule<sub>a</sub>};如果规则集合R={rule<sub>1</sub>,rule<sub>2</sub>,…,rule<sub>a</sub>}中有处理该数据包<img file="FDA0000857969760000023.GIF" wi="231" he="79" />的规则rule<sub>a</sub>,则更新流表模块需要将该规则rule<sub>a</sub>转化成流表项的格式插入到流表中;另一方面,更新流表模块要监视流表中流表项的生命周期;当该流表项的生命周期减为0时,将该流表项的有效位设为0,表示该流表项无效,可以被新的流表项所替代。
地址 100191 北京市海淀区学院路37号