论文部分内容阅读
随着网络技术的飞速发展,网络安全问题已经逐渐引起人们的关注,在网络安全中,防火墙成为建立网络边界、加强网络安全的重要设备。过去一段时间,防火墙开发主要有两种解决方案,其一是基于ASIC结构的纯硬件解决方案,其二是基于通用处理器的纯软件解决方案,前者能满足高速网络的性能要求,但是设计困难,开发周期长,而且难以修改,后者开发相对容易,设计也更加灵活,但是性能不高,事实上,在千兆环境下,基于通用处理器的解决方案已经不能满足性能要求。网络处理器是专门为高速网络数据处理设计的处理器,用它来开发防火墙不仅能达到高的性能,而且能够体现软件编程的灵活性,使得开发基于网络处理器的防火墙开发成为新的热点。IXP2400是Intel公司推出的一款具有代表性的网络处理器,它具有针对网络数据优化的指令系统、多个数据处理单元、硬件多线程以及多级存储等特性,能够达到较高的网络处理速度,适合用于千兆防火墙开发。与X86等通用的处理器相比,开发基于网络处理器的防火墙存在不少问题和难点。首先,通用处理器上有成熟的操作系统和大量的库函数,开发者可以利用现有的库函数或系统调用进行快速开发,而网络处理器的主要数据处理单元微引擎上只有少量的示例代码可以参考;其次,目前基于网络处理器的防火墙开发直接面对硬件编程,需要考虑大量的硬件细节,这与通用处理器上的应用软件开发有所不同;第三,网络处理器本身是一个相当复杂的系统,只有分配与调度好各部分资源,使其得到有效利用,才能充分体现网络处理器的性能优势;最后,由于网络处理器自身的特点,一些常用的数据结构需要进行优化以达到更好的效果。
本文通过建立一个基于IXP2400的软件开发平台可扩展层次化微码编程框架SLMPF来解决上述问题,使得在该编程框架的基础上能够快速进行防火墙开发,我们设计该框架的目标是:通过大量的宏抽象出硬件操作,使开发者不用过多关注硬件细节而专注于软件功能的实现:提出资源分配与调度模型与算法实现供开发者直接使用;实现一些常用的数据结构和功能模块;该框架本身具有可扩展性,能够方便地增加和删除模块。工作主要包括:
(1)建立了一个基于IXP2400的软件开发平台可扩展层次化微码编程框架SLMPF,该框架克服了Intel提供的IXA编程框架的一些弱点,降低了模块间的藕合度,具有更好的扩展性。
(2)研究了构建网络处理器软件开发平台的关键技术。提出了微引擎分配与调度策略,使数据处理任务能够得到合理的分配;开发了存储管理系统,包括静态存储自动分配工具和动态存储管理工具;对线程间通信机制进行了研究,使得多个微引擎之间和多个线程之间能够高效地协同工作;实现了防火墙应用最常用到的数据结构如队列、线性表和哈希表等,特别地提出了一种新型的哈希表结构——双链哈希表,能够有效提高查询效率。
(3)开发了一个基于网络处理器IXP2400的状态包过滤防火墙原型,实现了访问控制、状态检测、网络地址转换和安全管理等功能,对状态检测和网络地址转换的实现原理进行了详细的说明。