一种一体化的报文流查找与更新方法

文档序号:9581750阅读:425来源:国知局
一种一体化的报文流查找与更新方法
【技术领域】
[0001]本发明属于高速网络报文流管理领域,具体涉及一种一体化的报文流查找与更新方法。
【背景技术】
[0002]报文流的查找与更新功能在多种网络汇聚分流设备中具有基础性作用,尤其是对于具有深度报文检测DPI (Deep Packet Inspect)功能的设备,直接决定其检测匹配的性能。报文流是指某段时间间隔内经过网络节点的连续报文,这些报文需包含相同的源IP、目的IP、源P0RT(端口号)、目的PORT(端口号)和协议号等流信息。报文流有上行和下行区分,由发起方发出的报文流称为下行流,接收方发出的报文流称为上行流。报文流查找与更新主要是基于匹配上DPI的报文,通过解析记录该报文,对报文流进行一体化的添加、查找、更新、超时检测和删除。
[0003]深度报文检测是指使用预定义的规则对报文负载进行匹配,检测方法是将规则表达式编译成有限状态机,每次处理一个字节以获取下一步要转移到的状态,因此效率较低。所以对匹配上DPI的报文需要建立报文流,后续的报文只要比较流信息是否与建立的报文流一致,如一致则无需再进行DPI的匹配,极大的提高了效率。
[0004]随着网络规模的增加,骨干网络的流量往往达到100G以上,而报文流的规模可达到几百万甚至上千万条,如何实时高效的完成大规模报文流的查找和更新成为了提高系统性能的关键。
[0005]现有的报文流查找与更新方法存在的不足:1、使用多核、多线程和多通道等并行机制来实现,需要占用较大内存。另外通道接口也无法满足高速网络的需求。2、FPGA (Field-Programmable Gate Array,即现场可编程门阵列)查找和更新大规模的报文流非常复杂,难于实现。

【发明内容】

[0006]现有技术中FPGA管理大规模的报文流非常困难,且涉及流的生成、超时等问题,处理过程比较复杂;而利用多核、多通道的并行机制又面临通道接口的瓶颈问题,无法处理100G以上的网络流量。为解决现有报文流查找与更新方面存在的问题,本发明提出了一种基于FPGA和CPU (Central Processing Unit,即中央处理器)的一体化报文流查找与更新发法,具体技术方案如下:
[0007]—种一体化的报文流查找与更新方法,包括以下步骤:
[0008](1) FPGA端口接收输入的报文,并对报文进行解析,提取报文的五元组信息和净荷数据;
[0009](2)将五元组信息通过哈希计算得到用于查询的DDR (Double Data Rate,简称DDR,即双倍速率同步动态随机存储器)地址,根据该地址访问并读出DDR所存储的报文流节点信息;
[0010](3)FPGA比较读取出的报文流节点信息与步骤⑴中输入报文的五元组信息是否一致;如果一致则表示命中,生成命中报文流节点信息;如果不一致则表示未命中,继续对该输入报文的净荷数据进行深度报文检测匹配,若匹配上,则生成新建报文流节点信息;
[0011](4) FPGA通过PCI_E (Peripheral Component Interconnect Express,简称PCI_E)总线接口将步骤(3)生成的命中报文流节点信息或新建报文流节点信息按照PCI_E协议规定的TLP (Transact1n Layer Packet,简称TLP,即处理层报文)数据格式上传至CPU ;
[0012](5)CPU对接收到的TLP数据进行解析,得到命中或新建报文流节点信息;从命中或新建报文流节点信息中获得CPU内存地址值;然后对CPU相应内存地址中的报文流节点信息进行系统管理后生成更新报文流节点信息,并封装成TLP负载数据格式后通过PCI_E总线接口下发至FPGA ;
[0013](6)FPGA解析PCI_E总线接口下发的更新报文流节点信息后,将更新报文流节点信息写入步骤(2)中得到的DDR地址中,完成整个报文流节点信息的查找和更新的过程。
[0014]进一步地,所述步骤(5)中的系统管理过程包括CPU内存地址中报文流节点信息的命中计数条目和老化计数条目的更新、CPU逐一判断报文流节点信息的老化计数条目的值是否大于预设的超时计数值、删除表中超时报文流节点信息;
[0015]具体过程为:解析判断TLP负载数据是命中报文流节点信息还是新建报文流节点信息,如果是命中报文流节点信息,则根据消息中的地址值访问CPU内存地址的相应位置,并将该地址所存储的报文流节点信息中老化计数条目和命中计数条目的值清零,完成更新;如果是新建报文流节点信息,判断此时CPU对应内存地址存储的报文流节点信息中命中计数条目的值是否大于预设值;如果大于预设值,则将新建报文流节点信息替换该内存地址存储的报文流节点信息;反之,则丢弃新建报文流节点信息,不做任何改变;读取CPU中配置的老化时间链表值,逐一比较CPU内存中相同地址存储的报文流节点信息中老化计数条目的值是否大于老化时间链表值,如大于老化时间链表值则删除该报文流节点信息,并生成更新报文流节点信息。
[0016]采用本发明获得的有益效果:1.本发明采用一体化实现方式,CPU只管理和维护上传的报文流节点信息,不需要处理整个完整的输入报文,过程简单,占用的内存少。2.本发明采用FPGA解析输入报文,管理和更新报文流节点信息由CPU完成,高效的解决了 FPGA管理大规模报文流节点信息非常复杂的瓶颈,符合高速网络环境下的复杂报文流节点信息管理需要。
【附图说明】
[0017]图1是本发明方法流程图;
[0018]图2是DDR存储的报文流节点信息格式;
[0019]图3是PCI_E总线中的报文流节点信息格式;
[0020]图4是DMA负载中的报文流节点信息格式;
[0021]图5是CPU内存中存储的报文流节点信息的格式;
[0022]图6是CPU管理内存中存储的报文流节点信息流程图;
[0023]图7是应用本发明的互联网汇聚和分流设备整体结构。
【具体实施方式】
[0024]以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
[0025]如图1所示,基于FPGA和CPU的一体化报文流查找与更新方法,主要步骤如下:
[0026](l)FPGA对端口接收到的报文进行解析,提取五元组信息和净荷数据。解析包括定帧、CRC(Cyclic Redundancy Check,即循环冗余校验)校验、MAC(Media Access Control)头剥离等过程。五元组信息是指源IP地址,源PORT (端口),目的IP地址,目的PORT (端口)和传输层协议。
[0027](2)对五元组信息进行哈希计算,并将所得结果作为查询地址判断是否命中DDR中存储的报文流节点信息;根据该地址访问并读出DDR所存储的报文流节点信息;
[0028](3)FPGA逐一比较读取出的报文流节点信息与输入的报文五元组信息是否一致。如一致则表示命中,生成命中报文流节点信息。如不一致则表示未命中,继续对该输入报文的净荷信息进行深度报文检测(DPI)匹配,匹配方法为现有技术,将报文与已配置的规则进行逐字节的比对;如匹配上则说明该报文是一条带有新流节点信息的报文,匹配上的报文则生成新建报文流节点信息。
[0029]⑷FPGA将生成新建报文流节点信息或命中报文流节点信息按照PCI_E协议规定封装成TLP负载数据格式,并通过PCI_E总线接口上传至CPU ;
[0030](5) CPU对接收到的TLP数据进行解析后得到新建或命中报文流节点信息,根据命令对CPU内存中存储的报文流节点信息进行系统管理后生成更新报文流节点信息,同样封装成TLP负载数据格式后通过PCI_E总线接口下发至FPGA ;
[0031](6)FPGA解析PCI_ES线接口下发的更新硬件报文流节点信息后,将更新报文流节点信息写入步骤(2)中得到的DDR地址中,完成整个报文流节点信息的查找和更新的过程。
[0032]在本实施例中,步骤(1)利用可编程FPGA芯片快速稳定处理的能力对多通道的输入报文进行识别解析,可高效的提取出报文的五元组信息和净荷数据。其中五元组信息指的是报文的协议号、源IP、目的IP、源端口号和目的端口号。净荷数据指的是剥离了所有协议头部后的纯用户数据。
[0033]在本实施例中,五元
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1