发个Linux tc qos控制的配置

ingpj 2015-06-29 05:55:26
这个不是提问帖,,之前提问的问题我现在解决了,把自己的配置发上来,供有用tc对局域网QOS的朋友参考
我没用htb 因为一直失败,倒不是htb不能qos 而是我遇到2个问题,1 htb 时速率不准,2 htb下载时开始正常,之后慢慢没速度。。 当然也没用HFSC ,听说可以控制lag 。。
我的功能比较简单,对网段进行限速,每个IP(在范围内的) 。iptable 转发的我就没贴了,自己加就是了.

#!/bin/bash

##清空所有的mangle 表
iptables -t mangle -F
###
##清空vlan和外网网卡的规则根队列
tc qdisc del dev eth0 root
tc qdisc del dev eth1.20 root
tc qdisc del dev eth1.23 root
tc qdisc del dev eth1.24 root

#IP起始位置
IPS=1
#IP结束位置
IPE=241
##下载带宽 实际大概170KB/S 转换/8即可
DOWNLOAD=1500kbit
##上传带宽 实际20KB/S
#UPLOAD=150Kbit
##最大上传 实际50KB/S
MAXUP=500Kbit
##外网网卡
ODEV=eth0

##########################设置根规则
##上传根
tc qdisc add dev $ODEV root handle 50: cbq bandwidth 100Mbit avpkt 1000

#####download
net_rule(){
##下载根
tc qdisc add dev $1 root handle 10: cbq bandwidth 100Mbit avpkt 1000
tc class add dev $1 parent 10:0 classid 10:$2 cbq bandwidth 100Mbit rate 100Mbit allot 1514 weight 1Mbit prio 8 maxburst 20 avpkt 1000
#####upload
tc class add dev $ODEV parent 50:0 classid 50:$2 cbq bandwidth 100Mbit rate 100Mbit allot 1514 weight 1Mbit prio 8 maxburst 20 avpkt 1000
}

###下载队列和子队列以及过滤函数
net_down(){
COUNTER=$IPS
while [ $COUNTER -le $IPE ]
do
tc class add dev $1 parent 10:$3 classid 10:$3$COUNTER cbq bandwidth 100Mbit rate $DOWNLOAD allot 1514 weight 20Kbit prio 5 maxburst 20 avpkt 1000 bounded
tc qdisc add dev $1 parent 10:$3$COUNTER sfq quantum 1514b perturb 15
tc filter add dev $1 parent 10: protocol ip prio 99 u32 match ip dst $2$COUNTER flowid 10:$3$COUNTER
#############################
COUNTER=` expr $COUNTER + 1 `
done
}
#############################
##上传队列初始化
net_up(){
COUNTER=$IPS
while [ $COUNTER -le $IPE ]
do
##给需要上传的限制的IP做mangle 标记
iptables -t mangle -A PREROUTING -s $1$COUNTER -j MARK --set-mark $2$COUNTER
iptables -t mangle -A PREROUTING -s $1$COUNTER -j RETURN

tc class add dev $ODEV parent 50:$3 classid 50:$3$COUNTER cbq bandwidth 100Mbit rate $MAXUP allot 1514 weight 20Kbit prio 5 maxburst 20 avpkt 1000 bounded
#添加支类规则队列
tc qdisc add dev $ODEV parent 50:$3$COUNTER sfq quantum 1514b perturb 15
#建立网络包过滤器
tc filter add dev $ODEV parent 50: protocol ip prio 100 handle $2$COUNTER fw classid 50:$3$COUNTER

COUNTER=` expr $COUNTER + 1 `
done
}

##限速控制函数
net_rate(){
net_rule $1 $3
net_down $1 $2 $3
net_up $2 $4 $3
}


#net_rate "eth1.20" "192.168.20." "1" "100"
#对应的参数$1 $2 $3 $4 { "下载网卡" "下载网卡IP网段" "初始规则序号,请递增" "mangle 表初始规则,也请递增" }

net_rate "eth1.20" "192.168.20." "1" "100"
net_rate "eth1.23" "192.168.23." "2" "101"
net_rate "eth1.24" "192.168.24." "3" "102"
...全文
259 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
LouisScola 2015-06-30
  • 打赏
  • 举报
回复
路过接分
内容概要:本文详细介绍了Linux内核QoS(服务质量)功能及其测试方法,强调了在网络管理和优化中的重要性。文章首先解释了QoS的功能和作用,特别是在带宽有限或网络拥塞时,如何通过设定规则对不同类型的流量进行优先级管理,确保关键业务的正常运行。接着,深入探讨了tc命令作为流量控制工具的使用,包括基础语法、常见队列类型(如pfifo_fast、htb、netem等)及其应用场景,并通过具体实例展示了如何使用tc命令限制带宽、模拟网络延迟和丢包。此外,文章还介绍了iperf3命令作为网络性能测试工具的功能和优势,涵盖了TCP和UDP带宽测试、多线程和双向测试等内容。最后,结合实际案例,阐述了tc与iperf3联手测试QoS功能的具体步骤和效果,展示了两者在优化网络性能方面的重要作用。 适合人群:网络管理员、系统工程师、网络开发人员、对网络性能优化感兴趣的IT技术人员。 使用场景及目标:①理解Linux内核QoS功能及其在网络管理和优化中的应用;②掌握tc命令的使用,包括配置队列规则、流量分类和过滤器设置;③学会使用iperf3进行网络性能测试,评估带宽、延迟和丢包率等关键指标;④通过实际案例学习如何结合tc和iperf3优化网络配置,提升服务质量。 其他说明:本文不仅提供了理论知识,还结合了大量实际操作命令和案例,帮助读者更好地理解和应用QoS技术。随着网络技术的发展,QoS技术将在5G、物联网等领域发挥更重要的作用,为构建高效、稳定的网络环境提供支持。

19,620

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧