Linux防火墙中RFC算法的应用.doc

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux防火墙中RFC算法的应用

Linux防火墙中RFC算法的应用 [摘要]?随着网络的不断发展,互联网已成为世界上规模最大、拥有用户数最多、数据资源最为丰富的一个超大型计算机网络。互联网的商业化发展也为人们提供着各种各样的服务,随着宽带业务进入人们的日常生活,人们对网络的要求也越来越高,要求它能为人们提供更加安全、可靠、快速和多样化的服务。数据包分类技术也是现在网络多样化服务的基础,并且成为防火墙、路由器等一些网络核心设备中最为关键的技术,它对网络的控制、性能和安全会产生直接的影响。因此,会对高性能数据包分类算法的研究仍然是一个非常重要的课题。 [关键词]?Linux???防火墙???RFC算法 一、Linux防火墙的内核机制 ????????Linux内核从2.4版本开始设计实现了Netfilter框架,该框架使得网络协议代码和防火墙之间有了比较清晰的界限。Linux2.4内核防火墙的底层结构是Netfilter结构,位于Linux网络层和防火墙内核功能模块之间。   虽然Linux2.4内核中的防火墙是在IP层实现的,但它没有对2.4的内核网络结构造成破坏,因为Netfilter结构把防火墙对数据包的处理过程引入IP层,防火墙的代码与实现IP层的代码完全分离,使得防火墙与网络层在结构上很清晰;对防火墙的修改和功能扩充更加容易。   每一种协议都可以设定自己的防火墙。在Linux内核中是由firewall-Ps结构体定义的。firewall-ops可以为各种协议的防火墙提供统一的接口,每个协议可以对应多级防火墙,每个防火墙有各自的优先级,按照从高到低的优先级顺序可以将firewall-ps连接到Linux内核与防火墙接口的链表。当数据包经过IP层进行处理时,对相应的钩子函数链表中是否存在注册的HOOK函数进行检查,如果存在,各级防火墙会顺着其链表一一进行处理。 ????????二、?RFC算法的查找过程   RFC算法被分为P个阶段?(Phase),每一个阶段是由可并行查找的散列表组成。每次查找结果的返回值都比内存数据索引值要小。操作如下:在第一个阶段?(Phase?0),将包头中F个字段分成许多个块,每个块被用来作为并行查找的索引。例如有七个相等的块(chunk),一个数据包的字段在内存中是怎样被划分的。每次查表的输出值被称为eqcID。其中存储?eqcID所需的比特数比索引值的比特数要小,即需要较少的bit。下一个阶段,每次用于查找散列映射表的索引值是由前几个阶段的查找结果按某种方式合并而成,并放入内存中。在最后阶段,所得到的结果就是与数据包相匹配的最佳规则标识符classID。 ????????RFC算法是个通用性强、速度快的多维数据包分类算法,对规则的宽度和维数有较好的扩展性;在进行分类查找时,查找性能不受规则数量和规则特征的影响。处于同一阶段?(Phase)的预处理表或索引交叉乘积表可以被并行地索引,并且这些表又是各自独立的。处于不同阶段的预处理表或索引交叉乘积表也能够互不干扰地并行进行索引。 ????????算法的存储空间消耗会随规则集中规则数量的增加而增大,限制了算法的应用范围。由于索引交叉乘积表的长度等于各预处理表中等价类(eqID)数量的乘积,所以预处理表和索引交叉乘积表中eqID的数量与规则库的规则成正比,其中IPT表中总是存在着相同的eqID连续重复存储的问题。我们从表IPTI中可以看出,前8项中都存放了相同的eqID值。如果相同的元素过多会造成内存中存在大量的冗余信息。虽然在预处理表中也有这样的问题,但它所占空间非常小,如果想解决RFC算占用内存过大的问题,可以从减少索引交叉乘积表中连续相同元素的重复存储这方面进行研究。 ????????三、?L1nox防火墙测试步骤   在生成防火墙的规则集和测试数据包之后,对RFC算法和CRFC算法在Linux防火墙进行功能测试,具体测试步骤如下:   (l)利用上面提到的规则集生成模块生成的过滤规则集,并将其导入到Linux防火墙中。   (2)利用数据包生成模块向Linux防火墙发送测试数据包,Linux防火墙收到数据包后对数据包进行处理,并且获取处理结果。   (3)对Linux防火墙测试数据包的处理结果被存储在了计时模块和存储计数模块中,方便后面对处理结果进行详细的分析。   (4)用RFC算法、CRFC算法替换防火墙中原有的线性搜索算法,重复上面的三步,用相同的方式进行测试,并记录测试结果。   (5)最后对计时模块和存储计数模块中记录的数据进行比较分析,证实改进后防火墙的正确性。? [参考文献] [1]M.Smith,R.Hunt.Network?security?using?NAT?and?NAPT.Networks?2002.10th????

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档