防火墙带宽控制技术的研究与实现(1)(2)
2015-06-26 01:05
导读:图1 队列规定、分类和过滤模块三者的关系 2.2 TC的实现原理 TC将流经网络接口的数据放入一个队列中,对它们进行分类,并根据过滤规则把数据包放入每个

图1 队列规定、分类和过滤模块三者的关系
2.2 TC的实现原理 TC将流经网络接口的数据放入一个队列中,对它们进行分类,并根据过滤规则把数据包放入每个分类的分队列中,通过控制每个分队列数据包发送的速率来限制每个分类的带宽。 首先,TC在网络接口处绑定一个队列规定,并为这个队列创建多个分类,如果需要,还可以为每个分类创建多个子分类,每个子分类都有一个数据包分队列,它们形成了一个树型的结构(如图1)。同属一个父类的各个分类之间可以互相共享带宽,当然在创建分类时也可以设置为不共享自己的带宽。 其次,针对每个分类,设置一条或多条过滤规则与它相对应。当数据包进入分类后,相应的过滤规则根据数据包的各个字段或者标志位进行匹配,这些字段或者标志位中,有的是数据包创建的时候就有的,如源、目的端口,源、目的地址等;有些是在数据包进入系统时由iptables命令设置的(用以区分不同的数据流),如mark值。当一个数据包被匹配后就会对它执行相应的判决,决定这个数据包是丢弃、延迟还是继续流入下一层分类。 最后,所有没有被丢弃,需要通过网络接口发送的数据包都会被放入某个子类的分队列中等待发送。TC按照不同的速率到每个队列中取出数据包,交给网络接口进行发送。每个分队列都有它的优先级,优先级高(设置的数值低)的队列先发送,当优先级高的队列中的数据包全部发送完毕后,再发送优先级低的。也可以为分队列设置其它排队方法,防止优先级高的队列长期占用网络接口。3 带宽控制在防火墙中的实现3.1 队列的选择 对于防火墙来说,选择一个功能强大,适合具体应用环境的队列规定有助于提高系统实现带宽控制的成功率和精确度。相对于其它的队列规定,CBQ和HTB提供了分类、链路共享、限速等丰富的功能,是构建带宽控制模块的首选队列。 CBQ作为一个经历长久考验的排队算法,它功能强大,且较早地被Linux所支持,有许多成功的实例。CBQ队列在内核中依靠粗糙的计时信息来固定带宽,虽然在一个较长的时间段内,可以维持很好的精度,但是在以秒为单位进行计量的时间段内,其结果就不准确了。CBQ是通过计算连接的空闲时间来限制带宽的,如果要把某个应用的带宽限制为整个带宽的10%,则这个应用的相关连接的空闲时间应为90%。其空闲时间的计算标准是数据包离队事件发生的频率和下层连接(数据链路层)的带宽。当一个连接长期处于空闲时,就会造成对空闲时间计算的偏差,导致带宽限制失效。虽然CBQ中也可以通过设定某些参数(如maxidle,minburst等)来纠正这个问题,但是由于纠正参数不止一个,且每一个参数的改变都会影响到其它参数,较为复杂。所以在这个问题上,CBQ始终无法很好地解决。 HTB是一个更好理解更容易掌握的可以快速替换CBQ队列规定的队列,它是CBQ的一个精简改进版,继承了CBQ的多项功能,去掉了一些复杂且不实用的部分。HTB可以实现带宽分类、带宽共享、设置优先级、设定突发流量等功能。更重要的是,HTB改变了限制带宽的方法。它通过限制每个分队列上数据包的发送速率来限制每个分类的带宽。提高了带宽限制的精确度。对于每一个网络接口来说,同一时刻只能发送一个数据包,所以网络接口处数据包的发送速率是一定的。HTB队列规定通过在一个固定时间段内从每个分类的分队列中取出的数据包个数来决定该分类的带宽。取的数据包数越多,则分配给它的带宽就越大。这就很好地解决了CBQ对带宽限制不精确的问题。所以说,在防火墙的带宽控制模块中,选择HTB作为队列规定是高效而且实用的。3.2 TC实现的位置 共2页: 1 [2] 下一页 论文出处(作者):
(转载自http://www.NSEAC.com中国科教评价网)
渗透测试技术与模型研究
基于AES-CCM模式的IPsec应用及其安全机制的分析