当前位置: 技术问答>linux和unix
有没有懂LINUX下流量控制工具TC的高手啊,有点问题请教啊
来源: 互联网 发布时间:2017-01-29
本文导语: 最近在写毕业论文,其中涉及到流量控制这一块。由于资源所限,采用了linux下的TC工具。 现在的问题是配置好了TC的队列、过滤器后,用一台机器向所配置的机子发数据,配置TC的机器上也同时运行一个程序,获取这...
最近在写毕业论文,其中涉及到流量控制这一块。由于资源所限,采用了linux下的TC工具。
现在的问题是配置好了TC的队列、过滤器后,用一台机器向所配置的机子发数据,配置TC的机器上也同时运行一个程序,获取这些数据并同时按照TOS字段的不同转发到不同网卡,TC的过滤器就是按照这些TOS字段来对应的队列。
结果我查看status时,结果都是0,为什么没有反应呢?有没有高手来指点一下啊,网上的资料实在是太少了,也不知道是我研究的太过前沿还是太过落后!
贴一段主要的命令吧:
#建立根分类,默认分类为1:30
tc qdisc add dev $DEV root handle 1: htb default 30
#主干类下面建立子分类EF,编号1:11,保证带宽3M,不可借用
tc class add dev $DEV parent 1: classid 1:1 htb rate 3Mbit ceil 3Mbit prio 1
#根分类下建次干分类AF
tc class add dev $DEV parent 1: classid 1:2 htb rate 7Mbit ceil 7Mbit prio 1
#次干分类下建立AF1-AF4分类
tc class add dev $DEV parent 1:2 classid 1:21 htb rate 2Mbit ceil 7Mbit prio 2
tc class add dev $DEV parent 1:2 classid 1:22 htb rate 2Mbit ceil 7Mbit prio 2
tc class add dev $DEV parent 1:2 classid 1:23 htb rate 2Mbit ceil 7Mbit prio 2
tc class add dev $DEV parent 1:2 classid 1:24 htb rate 1Mbit ceil 7Mbit prio 2
#每个类下附加SFQ规则
tc qdisc add dev $DEV parent 1:11 handle 11: sfq perturb 5
tc qdisc add dev $DEV parent 1:21 handle 21: sfq perturb 5
tc qdisc add dev $DEV parent 1:22 handle 22: sfq perturb 5
tc qdisc add dev $DEV parent 1:23 handle 23: sfq perturb 5
tc qdisc add dev $DEV parent 1:24 handle 24: sfq perturb 5
echo "设置队列规则成功."
#按TOS设置过滤器
echo -n "按TOS设置包过滤器......"
U32="tc filter add dev $DEV parent 1: protocol ip prio 1 u32"
${U32} match ip tos ${DSCP_EF} 0xff flowid 1:1
${U32} match ip tos ${DSCP_AF1} 0xff flowid 1:21
${U32} match ip tos ${DSCP_AF2} 0xff flowid 1:22
${U32} match ip tos ${DSCP_AF3} 0xff flowid 1:23
${U32} match ip tos ${DSCP_AF4} 0xff flowid 1:24
echo "包过滤器设置成功."
}
现在的问题是配置好了TC的队列、过滤器后,用一台机器向所配置的机子发数据,配置TC的机器上也同时运行一个程序,获取这些数据并同时按照TOS字段的不同转发到不同网卡,TC的过滤器就是按照这些TOS字段来对应的队列。
结果我查看status时,结果都是0,为什么没有反应呢?有没有高手来指点一下啊,网上的资料实在是太少了,也不知道是我研究的太过前沿还是太过落后!
贴一段主要的命令吧:
#建立根分类,默认分类为1:30
tc qdisc add dev $DEV root handle 1: htb default 30
#主干类下面建立子分类EF,编号1:11,保证带宽3M,不可借用
tc class add dev $DEV parent 1: classid 1:1 htb rate 3Mbit ceil 3Mbit prio 1
#根分类下建次干分类AF
tc class add dev $DEV parent 1: classid 1:2 htb rate 7Mbit ceil 7Mbit prio 1
#次干分类下建立AF1-AF4分类
tc class add dev $DEV parent 1:2 classid 1:21 htb rate 2Mbit ceil 7Mbit prio 2
tc class add dev $DEV parent 1:2 classid 1:22 htb rate 2Mbit ceil 7Mbit prio 2
tc class add dev $DEV parent 1:2 classid 1:23 htb rate 2Mbit ceil 7Mbit prio 2
tc class add dev $DEV parent 1:2 classid 1:24 htb rate 1Mbit ceil 7Mbit prio 2
#每个类下附加SFQ规则
tc qdisc add dev $DEV parent 1:11 handle 11: sfq perturb 5
tc qdisc add dev $DEV parent 1:21 handle 21: sfq perturb 5
tc qdisc add dev $DEV parent 1:22 handle 22: sfq perturb 5
tc qdisc add dev $DEV parent 1:23 handle 23: sfq perturb 5
tc qdisc add dev $DEV parent 1:24 handle 24: sfq perturb 5
echo "设置队列规则成功."
#按TOS设置过滤器
echo -n "按TOS设置包过滤器......"
U32="tc filter add dev $DEV parent 1: protocol ip prio 1 u32"
${U32} match ip tos ${DSCP_EF} 0xff flowid 1:1
${U32} match ip tos ${DSCP_AF1} 0xff flowid 1:21
${U32} match ip tos ${DSCP_AF2} 0xff flowid 1:22
${U32} match ip tos ${DSCP_AF3} 0xff flowid 1:23
${U32} match ip tos ${DSCP_AF4} 0xff flowid 1:24
echo "包过滤器设置成功."
}
|
TOS字段需要使用netfilter为不同TOS设置MARK。TC再依据过滤规则为不同MARK值得包加入不同的TC队列。应该是你没用iptables为TOS设置过滤规则。