一种软件路由器的数据包模糊匹配方法

文档序号:7553281阅读:360来源:国知局
专利名称:一种软件路由器的数据包模糊匹配方法
技术领域
本发明涉及计算机网络通信领域,尤其涉及一种软件路由器中根据预定义的匹配规则对网络数据包进行模糊匹配的方法。
背景技术
随着互联网技术的普遍应用和互联网用户数的急剧膨胀,各种新的互联网业务形式不断涌现。传统的硬件路由器在很多应用领域已经很难适应灵活、多变的互联网业务需求。因此,很多软件路由器开始获得应用。由于软件路由器的功能可以被快速地更新和替换,因而可以很好地应对互联网中不断提出的新的需求。然而,软件路由器的性能却成为它不能被大规模部署和应用的瓶颈。其中一个制约软件路由器性能的因素就是它的数据包匹配过程。路由器出于安全原因或配置需求需要对数据包进行过检测和过滤。这种检测和过滤是建立在对数据包的各字段与匹配规则进行匹配的基础上的。如何提高数据包匹配的效率是提高软件路由器包处理效率面临的一个重大挑战。数据包匹配技术是指通过在路由器上设置匹配规则表(匹配规则表中存放了若干条匹配规则,每条规则由匹配的协议字段,如协议类型、IP地址、端口号等组成),当路由器收到网络数据包时对该数据包的各协议字段进行解析并在匹配规则表中进行匹配,如果匹配成功则执行规则相应的操作(如丢包、统计等)。如果匹配失败则不进行任何处理。数据包匹配分为精确匹配与模糊匹配。精确匹配指的是每条匹配规则的所有字段都为精确的指定值。模糊匹配指的是每条匹配规则不是所有字段都为精确值,即有部分字段或所有字段为通配符。在软件路由器中,对于精确匹配一般采用对所有匹配字段累计计算哈希值并在匹配表中进行哈希查找的方法来完成,这种方法可以获得很高的匹配效率;而软件路由器常用的模糊匹配需要遍历整个匹配规则表逐条与匹配规则进行匹配。这种方法在匹配规则数目较多时匹配效率非常低,因此导致了软件路由器性能的下降。一些改进的基于决策树的模糊匹配方法虽然在一定程度上提高了模糊匹配的效率,但是实现非常复杂,并且需要消耗大量的资源用于计算决策树,同时,也不适用于频繁变动的匹配规则表。

发明内容
本发明的目的是解决现有的软件路由器数据包模糊匹配方法效率低的不足,提供了一种软件路由器的数据包模糊匹配方法。该方法利用路由器在一段时间内收到的数据包各协议字段具有重复性(即路由器在一段时间内会收到具有相同协议字段的数据包)的特点,利用高效的精确匹配为模糊匹配作缓冲,大大提高了数据包的模糊匹配效率。本发明的目的是通过以下技术方案来实现的:一种软件路由器的数据包模糊匹配方法,该方法包括如下步骤:
(1)软件路由器从网络上接收数据包,对数据包进行解析,提取各协议字段的值;
(2)对步骤I中提取的网络数据包各协议字段的值累计计算哈希值;
(3)根据步骤2中计算的哈希值在精确匹配表中进行哈希匹配;如果匹配成功则执行步骤6;否则执行步骤4;
(4)根据步骤2中提取的各协议字段的值在模糊匹配表中进行线性模糊匹配;如果匹配成功则执行步骤5 ;否则匹配失败,执行步骤7 ;
(5)将步骤4中的匹配结果更新到精确匹配表中;
(6)返回匹配结果;
(7)结束数据包的模糊匹配。进一步地,所述步骤(I)中,所述网络数据包中包含了各协议字段的精确值,包括物理地址、IP地址、协议类型、端口号等信息。本发明的有益效果是:本发明通过将精确匹配与模糊匹配相结合,利用高效的精确匹配为模糊匹配作缓冲。结合模糊匹配规则,从数据包中提取各协议字段的精确值替换模糊匹配规则中的通配符,生成相应的精确匹配规则,计算字段的哈希值后更新到精确匹配表中。当路由器收到具有相同协议字段的数据包时,可以快速地在精确匹配表中找到匹配结果,而不需要在模糊匹配表中逐条匹配,大大提高了路由器的数据包模糊匹配效率。


图1是本发明软件路由器的数据包模糊匹配方法流程图。
具体实施例方式下面根据附图详细说明本发明,本发明的目的和效果将变得更加明显。如图1所示,本发明软件路由器的数据包模糊匹配方法包括如下步骤:
步骤1:软件路由器从网络上接收数据包,对数据包进行解析,提取各协议字段的值。网络数据包中包含了各协议字段的精确值,如物理地址、IP地址、协议类型、端口
号等信息。步骤2:对步骤I中提取的网络数据包各协议字段的值累计计算哈希值。哈希值的计算方法可以采用简单的哈希算法,如将各协议字段的值异或。这样可以减少哈希值的计算复杂度,以适用于路由器这样的高速设备中。步骤3:根据步骤2中计算的哈希值在精确匹配表中进行哈希匹配。如果匹配成功则执行步骤6 ;否则执行步骤4。精确匹配表作为模糊匹配表的缓冲,表中的每一条匹配项包含哈希值和匹配结果两部分。由于哈希的方法存在冲突,因而每一条匹配项的匹配结果都需要包括对应的原始模糊匹配规则集(不同的模糊匹配规则匹配的数据包可能计算得到相同的哈希值)。当由哈希值匹配成功时需要将数据包与相应匹配结果中的每一条模糊匹配规则进行线性模糊匹配,如果存在成功的匹配则执行步骤6,否则执行步骤4。步骤4:根据步骤2中提取的各协议字段的值在模糊匹配表中进行线性模糊匹配。如果匹配成功则执行步骤5 ;否则匹配失败,执行步骤7。对模糊匹配表中的匹配规则逐条与当前数据包进行匹配,如果匹配成功则执行步骤5 ;如果遍历完整个模糊匹配表都没有找到成功的匹配,则模糊匹配失败,执行步骤7。步骤5:将步骤4中的匹配结果更新到精确匹配表中。将模糊匹配结果以及相应的哈希值添加到精确匹配表中所对应匹配项的匹配结果集中。以便下一个具有相同协议字段的数据包可以在精确匹配表中快速匹配。步骤6:返回匹配结果。步骤7:结束数据包的模糊匹配。本发明通过将精确匹配与模糊匹配相结合,利用高效的精确匹配为模糊匹配作缓冲,而不是直接通过传统的逐条匹配的方法进行线性模糊匹配。当数据包第一次进入路由器时将进行模糊匹配,并将匹配结果更新到精确匹配表中,当之后路由器收到相同字段的数据包时,可以非常高效地从精确匹配表中获得匹配结果。这种匹配方法大大提高了软件路由器的数据包模糊匹配效率。
权利要求
1.一种软件路由器的数据包模糊匹配方法,其特征在于,该方法包括如下步骤: (1)软件路由器从网络上接收数据包,对数据包进行解析,提取各协议字段的值; (2)对步骤I中提取的网络数据包各协议字段的值累计计算哈希值; (3)根据步骤2中计算的哈希值在精确匹配表中进行哈希匹配;如果匹配成功则执行步骤6;否则执行步骤4; (4)根据步骤2中提取的各协议字段的值在模糊匹配表中进行线性模糊匹配;如果匹配成功则执行步骤5 ;否则匹配失败,执行步骤7 ; (5)将步骤4中的匹配结果更新到精确匹配表中; (6)返回匹配结果; (7)结束数据包的模糊匹配。
2.根据权利要求1所述软件路由器的数据包模糊匹配方法,其特征在于,所述步骤I中,所述网络数据包中包含了各协议字段的精确值,包括物理地址、IP地址、协议类型、端口号等信息。
全文摘要
本发明公开了一种软件路由器的数据包模糊匹配方法,本发明通过将精确匹配与模糊匹配相结合,利用高效的精确匹配为模糊匹配作缓冲;结合模糊匹配规则,从数据包中提取各协议字段的精确值替换模糊匹配规则中的通配符,生成相应的精确匹配规则,计算字段的哈希值后更新到精确匹配表中;当路由器收到具有相同协议字段的数据包时,可以快速地在精确匹配表中找到匹配结果,而不需要在模糊匹配表中逐条匹配,大大提高了路由器的数据包模糊匹配效率。
文档编号H04L12/743GK103179040SQ20131007796
公开日2013年6月26日 申请日期2013年3月12日 优先权日2013年3月12日
发明者吴春明, 叶靖, 周伯阳, 姜明 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1