[原创]用tc+iptables+HTB解决ADSL宽带速度瓶颈技术[5]

[入库:2005年9月19日] [更新:2007年3月24日]

本文简介:

iptables -t mangle -A OUTPUT -p icmp -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -p icmp -j RETURN

#本地small packets (probably just ACKs)
iptables -t mangle -A OUTPUT -p tcp -m length --length :64 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp -m length --length :64 -j RETURN

#(4). 向PREROUTING中添加完mangle规则后,用这条规则结束PREROUTING表:
##也就是说前面没有打过标记的数据包将交给1:24处理。
##实际上是不必要的,因为1:24是缺省类,但仍然打上标记是为了保持整个设置的协调一致,而且这样
#还能看到规则的包计数。

iptables -t mangle -A PREROUTING -i $DEV -j MARK --set-mark 6
echo "标记完毕! mangle mark done!"
}
#-----------------------------------------------------------------------------------------------------

#8.取消mangle标记用的自定义函数
stop_mangle() {

echo -n "停止数据标记 stop mangle table......"
( iptables -t mangle -F && echo "ok." ) || echo "error."
}

#9.取消队列用的
stop_routing() {
echo -n "(删除所有队列......)"
( tc qdisc del dev $DEV root && tc qdisc del dev $DEV ingress && echo "ok.删除成功!" ) || echo "error."
}

#10.显示状态
status() {
echo "1.show qdisc $DEV  (显示上行队列):----------------------------------------------"
tc -s qdisc show dev $DEV
echo "2.show class $DEV  (显示上行分类):----------------------------------------------"
tc class show dev $DEV
echo "3. tc -s class show dev $DEV (显示上行队列和分类流量详细信息):------------------"
tc -s class show dev $DEV
echo "说明:设置总队列上行带宽 $UPLINK k."
echo "1. classid 1:11 ssh、dns、和带有SYN标记的数据包。这是最高优先权的类包并最先类 "
echo "2. classid 1:12 重要数据,这是较高优先权的类。"
echo "3. classid 1:21 web,pop 服务 "
echo "4. classid 1:22 smtp服务 "
echo "5. classid 1:23 ftp-data服务 "
echo "6. classid 1:24 其他服务 "
}

#11.显示帮助
usage() {
echo "使用方法(usage): `basename $0` [start | stop | restart | status | mangle ]"
echo "参数作用:"
echo "start   开始流量控制"
echo "stop    停止流量控制"
echo "restart 重启流量控制"
echo "status  显示队列流量"
echo "mangle  显示mark标记"
}

#----------------------------------------------------------------------------------------------
#12. 下面是脚本运行参数的选择的控制
#
kernel=`eval kernelversion`
case "$kernel" in
   2.2)
      echo " (!) Error: won't do anything with 2.2.x 不支持内核2.2.x"
      exit 1
      ;;
      
   2.4|2.6)
      case "$1" in
         start)
    ( start_routing && start_mangle && echo "开始流量控制! TC started!" ) || echo "error."
         
    exit 0
    ;;

 stop)
    ( stop_routing && stop_mangle && echo "停止流量控制! TC stopped!" ) || echo "error."
    
    exit 0
    ;;
 restart)
    stop_routing
    stop_mangle
    start_routing
    start_mangle
    
    echo "流量控制规则重新装载!"
    ;;
 status)
    status
    ;;
    
 mangle)
    echo "iptables -t mangle -L (显示目前mangle表表标记详细):"
    iptables -t mangle -nL
    ;;

   
 *) usage

本文关键:[原创]用tc+iptables+HTB解决ADSL宽带速度瓶颈技术
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top