免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3802 | 回复: 4
打印 上一主题 下一主题

[系统管理] tc 限制下载速度 问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-04 18:43 |只看该作者 |倒序浏览
20可用积分
本人之前没有用过tc这个命令 但是现在需要马上使用tc来限制本地网卡 eth1 的下载速度 并非懒惰不想看文档 实在是来不及了 时间紧迫
哪位能够帮忙一下?写出tc限制下载速度的shell脚本,多谢了!!
(如限速参数 100k 1m 1g )

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
2 [报告]
发表于 2014-12-05 10:46 |只看该作者
网上资料一大堆 。google下的时间也没有?

论坛徽章:
0
3 [报告]
发表于 2014-12-05 21:02 |只看该作者
回复 2# HH106


    哥们说的对!确实太急躁了

论坛徽章:
0
4 [报告]
发表于 2014-12-05 21:06 |只看该作者
本帖最后由 YunThanatos 于 2014-12-05 21:06 编辑

这是我修改自 官网的一个项目 而来的函數,以方便后来者:


function limit_down_rate() {
  #$1 "100" units:kilobits
  #$1 stop
  #$1 status

  #echo limit_down_rate "$limit_down_rate" > /proc/self/fd/2
  # this code above is changed from project : lartc.org/wondershaper
  # Wonder Shaper
  DOWNLINK=8000 # this is our spot
  UPLINK=80000 # do not concern about it
  DEV=eth0
  # low priority OUTGOING traffic - you can leave this blank if you want
  # low priority source netmasks
  NOPRIOHOSTSRC=80
  # low priority destination netmasks
  NOPRIOHOSTDST=
  # low priority source ports
  NOPRIOPORTSRC=
  # low priority destination ports
  NOPRIOPORTDST=
  #########################################################

     if [ "$1" = "status" ]
     then
        tc -s qdisc ls dev $DEV
        tc -s class ls dev $DEV
     else
        # clean existing down- and uplink qdiscs, hide errors
        tc qdisc del dev $DEV root    2> /dev/null > /dev/null
        tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null

        if [ "$1" != "stop" ]
        then

           if [ -n "$1" ] && [ "$1" -ge "0" ]
           then
             echo haha
             DOWNLINK="$1"
             #UPLINK="$1" # kilobits
           fi  

           tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 10mbit
           tc class add dev $DEV parent 1: classid 1:1 cbq rate ${UPLINK}kbit \
           allot 1500 prio 5 bounded isolated
           tc class add dev $DEV parent 1:1 classid 1:10 cbq rate ${UPLINK}kbit \
              allot 1600 prio 1 avpkt 1000

           tc class add dev $DEV parent 1:1 classid 1:20 cbq rate $[9*$UPLINK/10]kbit \
              allot 1600 prio 2 avpkt 1000
           tc class add dev $DEV parent 1:1 classid 1:30 cbq rate $[8*$UPLINK/10]kbit \
              allot 1600 prio 2 avpkt 1000
           tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
           tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
           tc qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10
           tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \
                 match ip tos 0x10 0xff  flowid 1:10
           tc filter add dev $DEV parent 1:0 protocol ip prio 11 u32 \
                   match ip protocol 1 0xff flowid 1:10
           tc filter add dev $DEV parent 1: protocol ip prio 12 u32 \
              match ip protocol 6 0xff \
              match u8 0x05 0x0f at 0 \
              match u16 0x0000 0xffc0 at 2 \
              flowid 1:10
           for a in $NOPRIOPORTDST
           do
              tc filter add dev $DEV parent 1: protocol ip prio 14 u32 \
                 match ip dport $a 0xffff flowid 1:30
           done
           for a in $NOPRIOPORTSRC
           do
              tc filter add dev $DEV parent 1: protocol ip prio 15 u32 \
                 match ip sport $a 0xffff flowid 1:30
           done
           for a in $NOPRIOHOSTSRC
           do
              tc filter add dev $DEV parent 1: protocol ip prio 16 u32 \
                 match ip src $a flowid 1:30
           done
           for a in $NOPRIOHOSTDST
           do
              tc filter add dev $DEV parent 1: protocol ip prio 17 u32 \
                 match ip dst $a flowid 1:30
           done
           tc filter add dev $DEV parent 1: protocol ip prio 18 u32 \
              match ip dst 0.0.0.0/0 flowid 1:20
           tc qdisc add dev $DEV handle ffff: ingress
           tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src \
              0.0.0.0/0 police rate ${DOWNLINK}kbit burst 10k drop flowid :1

        fi
     fi
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP