QoS命令和脚本例子

来源:互联网 发布:oracle nvl mysql 编辑:程序博客网 时间:2024/06/05 23:17

----以下是典型的QoS脚本例子----




#!/bin/sh


#--------------------------------


#tc规则


#--------------------------------


#下载部分


#定义下载设备
DDEV="br-lan"


#定义下载总带宽
TDOWN="3400kbps"


#清除旧规则,这行命令也可以停止QoS功能
tc qdisc del dev $DDEV root 2>/dev/null
 
#定义根队列规则,指定未标记数据(default类别)的编号为90
tc qdisc add dev $DDEV root handle 10: htb default 90


#以下rate值为保证带宽,ceil值为最大带宽,prio值为优先级


#定义第一层的10:1类别(总带宽)
tc class add dev $DDEV parent 10: classid 10:1 htb rate $TDOWN ceil $TDOWN
 
#定义第二层的10:X0类别
tc class add dev $DDEV parent 10:1 classid 10:10 htb rate 4kbps ceil 6kbps prio 0
tc class add dev $DDEV parent 10:1 classid 10:20 htb rate 2kbps ceil 4kbps prio 1
tc class add dev $DDEV parent 10:1 classid 10:30 htb rate 0kbps ceil 2kbps prio 2


#队列规则
tc qdisc add dev $DDEV parent 10:10 handle 101: pfifo
tc qdisc add dev $DDEV parent 10:20 handle 102: pfifo
tc qdisc add dev $DDEV parent 10:30 handle 103: pfifo


#过滤规则
tc filter add dev $DDEV parent 10: protocol ip prio 100 handle 10 fw classid 10:10
tc filter add dev $DDEV parent 10: protocol ip prio 100 handle 20 fw classid 10:20
tc filter add dev $DDEV parent 10: protocol ip prio 100 handle 30 fw classid 10:30


#--------------------------------


#上传部分


#定义上传设备
UDEV="pppoe-wan"


#定义上传总带宽
TUP="3400kbps"


#清除旧规则,这行命令也可以停止QoS功能
tc qdisc del dev $UDEV root 2>/dev/null
 
#定义根队列规则,指定未标记数据(default类别)的编号为90
tc qdisc add dev $UDEV root handle 10: htb default 90


#定义第一层的10:1类别(总带宽的规则)
tc class add dev $UDEV parent 10: classid 10:1 htb rate $TUP ceil $TUP


#以下rate值为保证带宽,ceil值为最大带宽,prio值为优先级
 
#定义第二层的10:X0类别
tc class add dev $UDEV parent 10:1 classid 10:10 htb rate 4kbps ceil 6kbps prio 0
tc class add dev $UDEV parent 10:1 classid 10:20 htb rate 2kbps ceil 4kbps prio 1
tc class add dev $UDEV parent 10:1 classid 10:30 htb rate 0kbps ceil 2kbps prio 2


#定义队列规则
tc qdisc add dev $UDEV parent 10:10 handle 101: pfifo
tc qdisc add dev $UDEV parent 10:20 handle 102: pfifo
tc qdisc add dev $UDEV parent 10:30 handle 103: pfifo


#定义过滤规则
tc filter add dev $UDEV parent 10: protocol ip prio 100 handle 10 fw classid 10:10
tc filter add dev $UDEV parent 10: protocol ip prio 100 handle 20 fw classid 10:20
tc filter add dev $UDEV parent 10: protocol ip prio 100 handle 30 fw classid 10:30


#--------------------------------




#!/bin/sh


#iptables规则:


#--------------------------------


#下载规则,为特定IP的数据包打上指定标志
iptables -t mangle -A POSTROUTING -d 192.168.1.128 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -d 192.168.1.128 -j RETURN
iptables -t mangle -A POSTROUTING -d 192.168.1.160 -j MARK --set-mark 20
iptables -t mangle -A POSTROUTING -d 192.168.1.160 -j RETURN


#--------------------------------


#上传规则,为特定IP的数据包打上指定标志
iptables -t mangle -A POSTROUTING -s 192.168.1.128 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -s 192.168.1.128 -j RETURN
iptables -t mangle -A POSTROUTING -s 192.168.1.160 -j MARK --set-mark 20
iptables -t mangle -A POSTROUTING -s 192.168.1.160 -j RETURN






----以下是可直接执行的命令----


tc qdisc del dev br-lan root 2>/dev/null
tc qdisc add dev br-lan root handle 10: htb default 90
tc class add dev br-lan parent 10: classid 10:1 htb rate 2800kbit ceil 2800kbit
tc class add dev br-lan parent 10:1 classid 10:10 htb rate 1000kbit ceil 2000kbit prio 0
tc class add dev br-lan parent 10:1 classid 10:20 htb rate 240kbit ceil 1280kbit prio 1
tc class add dev br-lan parent 10:1 classid 10:30 htb rate 0kbit ceil 1000kbit prio 2
tc qdisc add dev br-lan parent 10:10 handle 101: pfifo
tc qdisc add dev br-lan parent 10:20 handle 102: pfifo
tc qdisc add dev br-lan parent 10:30 handle 103: pfifo
tc filter add dev br-lan parent 10: protocol ip prio 100 handle 10 fw classid 10:10
tc filter add dev br-lan parent 10: protocol ip prio 100 handle 20 fw classid 10:20
tc filter add dev br-lan parent 10: protocol ip prio 100 handle 30 fw classid 10:30
tc qdisc del dev pppoe-wan root 2>/dev/null
tc qdisc add dev pppoe-wan root handle 10: htb default 90
tc class add dev pppoe-wan parent 10: classid 10:1 htb rate 400kbit ceil 400kbit
tc class add dev pppoe-wan parent 10:1 classid 10:10 htb rate 160kbit ceil 320kbit prio 0
tc class add dev pppoe-wan parent 10:1 classid 10:20 htb rate 80kbit ceil 320kbit prio 1
tc class add dev pppoe-wan parent 10:1 classid 10:30 htb rate 0kbit ceil 320kbit prio 2
tc qdisc add dev pppoe-wan parent 10:10 handle 101: pfifo
tc qdisc add dev pppoe-wan parent 10:20 handle 102: pfifo
tc qdisc add dev pppoe-wan parent 10:30 handle 103: pfifo
tc filter add dev pppoe-wan parent 10: protocol ip prio 100 handle 10 fw classid 10:10
tc filter add dev pppoe-wan parent 10: protocol ip prio 100 handle 20 fw classid 10:20
tc filter add dev pppoe-wan parent 10: protocol ip prio 100 handle 30 fw classid 10:30
iptables -t mangle -A POSTROUTING -d 192.168.1.160 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -d 192.168.1.160 -j RETURN
iptables -t mangle -A POSTROUTING -d 192.168.1.161 -j MARK --set-mark 20
iptables -t mangle -A POSTROUTING -d 192.168.1.161 -j RETURN
iptables -t mangle -A POSTROUTING -s 192.168.1.160 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -s 192.168.1.160 -j RETURN
iptables -t mangle -A POSTROUTING -s 192.168.1.161 -j MARK --set-mark 20
iptables -t mangle -A POSTROUTING -s 192.168.1.161 -j RETURN


停止QoS功能的命令是:


tc qdisc del dev br-lan root 2>/dev/null
tc qdisc del dev pppoe-wan root 2>/dev/null
原创粉丝点击