论文部分内容阅读
因特网作为一种公共信息载体,已成为人类社会发展中的一项最重要的信息基础设施。统计显示中国网民总数已逾5.6亿,互联网普及率高达42%,这种持续快速的发展不可避免的造成网络流量的急速膨胀,给因特网的传输能力带来了新的挑战。随着光纤和接口技术等高速链路传输速度的突破,路由器等网络设备的数据报文处理能力成为当前高性能网络发展的主要瓶颈。主要表现在两个方面:第一、IP查找作为路由器的最基本和最核心的业务,需要设计新的算法以支持大规模路由表上的高速路由转发,而IPv6的正式启用也要求IP查找算法具有较好的地址可扩展性;第二、为了保证因特网的QoS,需要根据用户的不同需求提供诸如VPN、访问控制、策略路由、流量统计以及基于内容的转发等多种区分服务,这些服务大都以包分类算法为基础,而网络链路上的持续增长的报文速率给包分类算法带来了巨大的挑战。针对上述问题,本文围绕高性能网络的IP报文分类和过滤技术展开研究,主要工作有:(1)提出一种基于B+树的动态IP查找算法:CMPT。依据B+树对所有检索项均在叶子节点命中的特点,基于B+树将路由表构建为一棵多路前缀树MPT,对任意IP地址执行最长前缀匹配时都能在叶子节点匹配到结果,避免了已有算法中的回溯查找问题。利用路由前缀的嵌套特点,提出一种前缀压缩存储技术并构建CMPT,CMPT只需存储路由表中的部分前缀就可执行最长前缀匹配的IP查找,提高了算法的空间利用率。最后基于CMPT结构提出路由规则的动态插入和删除算法,以支持动态的IP查找。理论分析和实验结果表明,本文提出的算法和已有工作相比在保持存储开销相近的前提下,能够有效提高IP查找速度和前缀的动态更新速度。(2)提出一种基于GPU加速技术的IPv6查找算法:GRv6。针对已有的基于GPU加速的IP查找算法只能处理IPv4地址的限制,利用Bloom过滤器的存储高效性,提出一种适用于软件路由器的IPv6查找算法。GRv6将规则集利用Bloom过滤器存储在GPU上,并利用GPU的大规模并行特点设计并行Bloom过滤器结构执行最长前缀匹配。利用CUDA线程融合技术对所提算法进行了优化,优化后的GRv6仅需O(1)的存取复杂度。提出基于计数型Bloom过滤器的前缀动态插入和删除算法支持规则集的动态更新。在实际的IPv6路由表上的实验表明GRv6对于静态路由表可达到60Gbps的吞吐量,对于动态的路由表可达到40Gbps的吞吐量,适用于OC-768链路的数据传输速率。(3)提出一种基于分层全匹配B+树的多维包分类算法HAPT。利用包分类规则中IP前缀的嵌套特性,将规则集的源IP前缀构建为一棵全匹配B+树作为多维包分类引擎的第一层,在第一层叶子节点的关键字上挂载源IP所对应目的IP构成的全匹配B+树作为搜索结构的第二层,从而构建为分层全匹配B+树HAPT。进一步提出了基于HAPT结构的包分类算法和规则动态更新算法,HAPT在每一层上进行多路搜索且均能在叶子节点完成匹配,避免了分层Trie算法中的回溯查找问题,有效提高了分类速度,其时间复杂度可达O(log_mN),规则更新复杂度为O(mlog_m N)。理论分析和实验仿真表明,所提出的多维包分类算法相比典型的H-Trie算法其搜索速度提高了2-4倍。(4)提出一种防火墙规则预处理算法来消除防火墙规则之间的相关性,并对规则集进行优化。首先针对两条防火墙规则之间的相关性,提出一种发现和消除两条规则之间相关性的算法,基于规则检测域的特点,通过计算两条规则的每个检测域的差异对原始规则进行了重写生成不相交的规则;提出一个系统化的优化算法对防火墙规则集进行预处理优化并生成新的防火墙规则集,通过对规则集的遍历,对每一对相关的规则进行重写并删除无效规则,新的规则集中不包含规则之间的相关性,且对于任意一个数据包,在规则集中仅有一条规则与之匹配,摒弃了原始规则集中一个数据包匹配多条规则所带来的防火墙分析异常等问题;在真实的防火墙规则集和模拟规则集上的实验表明所提算法能够有效去除防火墙规则集中的相关性,且保持原始规则集与新规则集的功能一致性。