3.2流量统计模块
通过捕包模块获取数据包及其信息。通过IP地址,统计出各IP以及各IP网段的网络数据流量,并统计出总的上行和下行流量。通过端口,统计出TCP/UDP源和目的端口的流量。通过应用层payload字段的字符串特征符来统计相应网络应用的流量。当总体流量超过一定的限定值,而引起网络拥塞时,根据具体情况,选择以上流量统计中的一种作为依据,动态地调用TC,对网络流量进行控制。
3.3流量控制模块
流量控制的基本步骤为:(1)针对网卡建立一个队列;(2)取出数据包源/目的地址、源/目的端口、协议类型五元组信息;(3)通过DPI对到达的数据包进行识别;(4)根据用户要求,使用netfilter/iptables匹配功能,为匹配到的数据包打上mark值;(5)在这个建立的队列上再建立分类;(6)设置过滤器为每一分类建立选路,使数据流进人相应队列,并分配带宽;(7)数据包调度。
以下是对BT流量控制〔12]进行设置的一个例子。
iptables设置:
iptables一A PREROUTING一t mangle一p tcp一m BT一J一set一mark 1 //'"} BT连接标记为“1"
TC设置:
tc qdisc add dev eth0 handle 1:0 root htb//创建HTB的根队列策略
tc class add dev eth0 parent 1:0 classid 1:1 htb rate95000kbps cell 95000kbps //设置主类带宽
tc class add dev eth0 parent 1:1 classid 1:2 htb ratelOkbps ceil 80kbps prio 3 //建立一个BT子类,设置带宽在l0k到80k之间
tc qdisc add dev eth0 parent 1:2 handle 1:2:1 pfifo//对BT、子类建立FIFO队列策略
tc filter add dev eth0 parent 1:0 protocol ip prio 100handle 1 fw classid 1:2 //设置过滤器,将标记为“1”的BT包送到1:2这个类中
采用HTB规则为以太网卡绑定一个主队列,并创建根分类,然后可以选择通过IP地址、端口号或网络应用分出子类,之后结合iptables的mark值进行过滤,数据流进人相应分类的队列。但是为了保证网络用户的基本使用,系统对一些常规的业务直接输出,而不作控制。流量控制流程图如图2所示。
4 DD一wRT的流量控制功能定制
定制步骤如下:
1)下载固件解压和压缩工具的源代码fimiware_moc}一tools. tar. gz,解压并编译这个工具;