linux中的u32问题,Linux流量控制---过滤规则/U32-

Linux流量控制IV---实例解析

以下二例是工作中用到的,贴出来算对流量控制的一种理解吧..呵呵.

1.PRIO 分类优先算法(从左至右优先发包)

eth0 1:

/ | \

1:11:2 1:3

/ | \

11: 12: 13:

#tc ad add dev eth0 root handle 1: prio hands3 priomap 1---1 16个1(tos比特) 表示所有数据包

注:此命令自动在1:下创建三子类 1:1 1:2 1:3 此例中只用到 1:1

#tc qd add dev eth0 parent 1:1 handle 11:sfq

#tc qdisc add dev eth0 parent 1:1 handle 12: tbf rate 20kbit buffer 1600 limit 3000

#tc qd add dev eth0 parent 1:1 handle 13:sfq

#tc filter add dev eth0 parent 1:1 prio 1003 protocol ip

u32match ip src 192.168.1.0/24flowid 1:13

#tc filter add dev eth0 parent 1:1 prio 1001 protocol ip

u32match ip src 10.0.0.0/8flowid 1:12

#tc filter add deveth0 parent 1:1 protocol ip prio1001

u32 match ip tos 0x10 0xff flowid 1:11交互和最小延迟的数据流

2.HTB分层令牌桶

eth11:

|

1:11:1 2Mbit 1000个包1:12默认

/|\

11: 12: 13:1:11 512kbit 1001:12 1Mbit 1001:13 2Mbit 100

#tc qd del dev eth1 root

#tc qdisc add dev eth1 root handle 1: htb default 12

#tc class add dev eth1 parent 1: classid 1:1 htb rate 2Mbit burst 1500000 在1:下定义子类1:1

#tc class add dev eth1 parent 1:1 classid 1:11 htb rate 512kbit burst 150000 ceil 1Mbit

#tc qd add dev eth1 parent 1:11 handle 111: sfq

#tc class add dev eth1 parent 1:1 classid 1:12 htb rate 1Mbit burst 150000 ceil 1Mbit

#tc qd add dev eth1 parent 1:12 handle 122: sfq 注:亦可不在1:12 class下定义122: qd

#tc class add dev eth1 parent 1:1 classid 1:13 htb rate 2Mbit burst 150000 ceil 2Mbit

#tc qd add dev eth1 parent 1:13 handle 133: sfq

#tc filter add dev eth1 parent 1: prio10001 protocol ip

u32 match ip src 192.168.1.0/24 flowid 1:12其它二类亦如此..

2.ADSL上网流量限控脚本

ADSL带宽是下行3200Kbit,上行只有320Kbit

eth 1:

/ \

1:1 1.2

/ \ / | | \

1:11 1: 12 1:21 1:22 1:23 1:24

优先顺序是1:11 1:12 1:21 1:22 1:23 1:24脚本大致内容下:

tc qdisc add dev eth0 root handle 1: htb default 24tc class add dev eth0 parent 1: classid 1:1 htb rate 300kbit ceil 300kbit prio 0

tc class add dev eth0 parent 1: classid 1:2 htb rate 150kbit prio 3tc class add dev eth0 parent 1:1 classid 1:11 htb rate 300kbit ceil 300kbit prio 1tc class add dev eth0 parent 1:1 classid 1:12 htb rate 150kbit ceil 250kbit prio 2tc class add dev eth0 parent 1:2 classid 1:21 htb rate 100kbit ceil 150kbit prio 4tc class add dev eth0 parent 1:2 classid 1:22 htb rate 30kbit ceil 140kbit prio 5tc class add dev eth0 parent 1:2 classid 1:23 htb rate 15kbit ceil 130kbit prio 6tc class add dev eth0 parent 1:2 classid 1:24 htb rate 5kbit ceil 50kbit prio 7tc qdisc add dev eth0 parent 1:11 handle 111: sfq perturb 5tc qdisc add dev eth0 parent 1:12 handle 112: sfq perturb 5tc qdisc add dev eth0 parent 1:21 handle 121: sfq perturb 10tc qdisc add dev eth0 parent 1:22 handle 122: sfq perturb 10tc qdisc add dev eth0 parent 1:23 handle 133: sfq perturb 10tc qdisc add dev eth0 parent 1:24 handle 124: sfq perturb 10tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 1 fw classid 1:11tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 2 fw classid 1:12tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 3 fw classid 1:21tc filter add dev eth0 parent 1:0 protocol ip prio 4 handle 4 fw classid 1:22tc filter add dev eth0 parent 1:0 protocol ip prio 5 handle 5 fw classid 1:23tc filter add dev eth0 parent 1:0 protocol ip prio 6 handle 6 fw classid 1:24

1:11 最高优先级的数据包通道优先通过,主要为一些ACK SYN确认包..必要时全部占用..全速

1:12 是很重要的数据道,给多点,最少给一半,但需要时可以再多一点.rate 规划 1:2 = 1:21 + 1:22 + 1:23 + 1:24 一般总数在50%-80%左右1:21 http,pop最常用,人数较多,易导致堵塞,不能给得太多,但不益太少.1:22 smtp通道,优先低于1:21 以防发大的附件大量占用带宽1:23 ftp-data数据通道可能大量上传文件,rate不能给得太多,ceil设置大些(其它通道剩余带宽应用)1:24 无所谓通道,就是一般不是平时工作上需要的通道了,给小点,防止这些人在妨碍有正常工作需要的人

其次的工作即在iptables端对相应数据包打上标记...

3.Linux+NAT+TC

脚本是Linux NAT网关实例,根据此脚本思路,可进一步细致的进行针对于数据包的限制..

echo 1 > /proc/sys/net/ipv4/ip_forwardiptables -Fiptables -t nat -Fiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source 124.42.97.36iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 124.42.97.36

iptables -I PREROUTING -t mangle -p tcp -s 192.168.0.0/24 -j MARK --set-mark 1iptables -I PREROUTING -t mangle -p tcp -s 192.168.1.0/24 -j MARK --set-mark 2

注:可分数据包类型标记tc qdisc del dev eth0 root#加一个根队列,速率用网卡的速率10Mbit,也可用上传的速率tc qdisc add dev eth0 root handle 100: cbq bandwidth 10Mbit avpkt 1000#加一个根类tc class add dev eth0 parent 100:0 classid 100:1 cbq bandwidth 10Mbit

rate 10Mbit allot 1514 weight 1Mbit prio 8 maxburst 8 avpkt 1000 bounded#加一个子类用于内网1速率限制为300Kbittc class add dev eth0 parent 100:1 classid 100:2 cbq bandwidth 10Mbit

rate 300Kbit allot 1513 weight 30Kbit prio 5 maxburst 8 avpkt 1000 bounded#加一个子类用于内网2速率限制为320Kbittc class add dev eth0 parent 100:1 classid 100:3 cbq bandwidth 10Mbit

rate 320Kbit allot 1513 weight 32Kbit prio 6 maxburst 8 avpkt 1000 bounded#设置队列规则tc qdisc add dev eth0 parent 100:2 sfq quantum 1514b perturb 15tc qdisc add dev eth0 parent 100:3 sfq quantum 1514b perturb 15#将队列和fw过滤器映射起来 其中hand 1的1是开始用iptables做的标记hand 2的2也是开始用

iptables 做的标记tc filter add dev eth0 parent 100:0 protocol ip prio 1 handle 1 fw classid 100:2tc filter add dev eth0 parent 100:0 protocol ip prio 2 handle 2 fw classid 100:3

流量监测相关命令:

tc -s qdisc/class ls dev eth0tc -s qdisc/class ls dev eth1

上述几例有在工作中用到的,也有网络整理的.对以后的流量控制可以起个参考作用..当然,例子不足以完全体现tc的强大功能,一句话iptables+tc的应用,只有你想不到的,没有做不到的...

12892054_1.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值