系统吧 - 免费好玩的系统安卓苹果手机游戏推荐下载网站!

当前位置:系统吧 > 系统教程 > 教大家一起认识TC服务器流量控制功能(2)

教大家一起认识TC服务器流量控制功能(2)

编辑:2012-09-24 09:43:36来源于:未知点击:1390次

  ceil: ceil是一个类最大能得到的带宽值。

  3)接着针对不同的应用在各root class下设置不同的类,。示例如下。(如果只有一个类,这个就没有必要了)

  #tc class add dev eth0 parent 1:30 classid 1:31 htbrate 0.5mbit ceil 2mbit prio 3

  同时为了不使一个会话永占带宽,在节点(即本文的各应用结点)添加随即公平队列sfq.(多IP)

  #tc qdisc add dev eth0 parent 1:31 handle 31:sfq perturb 10

  4)接着添加过滤器。

  #tc filter add dev eth0 parent 1: protocol ipprio 31 handle 31 fw flowid 1:31

  4)用iptable打标,也可以使用u32之类

  #iptables -t mangle -I FORWARD -i !eth1 -p tcp –sport 80 -s xxx.xxx.xxx.xxx –j MARK –set-mark 31

  TC对最对高速度的控制

  Rate ceiling 速率限度

  参数ceil指定了一个类可以用的最大带宽, 用来限制类可以借用多少带宽。缺省的ceil是和速率一样

  这个特性对于ISP是很有用的, 因为他们一般限制被服务的用户的总量即使其他用户没有请求服务。(ISPS 很想用户付更多的钱得到更好的服务) ,注根类是不允许被借用的, 所以没有指定ceil

  注: ceil的数值应该至少和它所在的类的速率一样高, 也就是说ceil应该至少和它的任何一个子类一样高

  Burst 突发

  网络硬件只能在一个时间发送一个包这仅仅取决于一个硬件的速率。 链路共享软件可以利用这个能力动态产生多个连接运行在不同的速度。 所以速率和ceil不是一个即时度量只是一个在一个时间里发送包的平均值。 实际的情况是怎样使一个流量很小的类在某个时间类以最大的速率提供给其他类。 burst 和cburst 参数控制多少数据可以以硬件最大的速度不费力的发送给需要的其他类。

  如果cburst 小于一个理论上的数据包他形成的突发不会超过ceil 速率, 同样的方法TBF的最高速率也是这样。

  你可能会问, 为什么需要bursts . 因为它可以很容易的提高向应速度在一个很拥挤的链路上。 比如WWW 流量是突发的。 你访问主页。 突发的获得并阅读。 在空闲的时间burst将再"charge"一次。

  注: burst 和cburst至少要和其子类的值一样大。

  TC命令格式:

  加入

  tc qdisc [ add | change | replace | link ] dev DEV [ parent qdisc-id | root ] [ handle qdisc-id ] qdisc [ qdisc specific parameters ]

  tc class [ add | change | replace ] dev DEV parent qdisc-id [ classid class-id ] qdisc [ qdisc specific parameters ]

  tc filter [ add | change | replace ] dev DEV [ parent qdisc-id | root ] protocol protocol prio priority filtertype [ filtertype specific parameters ] flowid flow-id

  显示

  tc [-s | -d ] qdisc show [ dev DEV ]

  tc [-s | -d ] class show dev DEV tc filter show dev DEV

  查看TC的状态

  tc -s -d qdisc show dev eth0

  tc -s -d class show dev eth0

  删除tc规则

  tc qdisc del dev eth0 root

  实例

  一、下载

  下载限制单个IP

  tc qdisc add dev eth0 root handle 1: htb r2q 1

  tc class add dev eth0 parent 1: classid 1:1 htb rate 30mbit ceil 60mbit

  tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.1.2 flowid 1:1

  就可以限制192.168.1.2的下载速度为30Mbit最高可以60Mbit

  r2q,是指没有default的root,使整个网络的带宽没有限制

  下载整段IP

  tc qdisc add dev eth0 root handle 1: htb r2q 1

  tc class add dev eth0 parent 1: classid 1:1 htb rate 50mbit ceil 1000mbit

  tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.111.0/24 flowid 1:1

  就可以限制192.168.111.0 到255 的带宽为3000k了,实际下载速度为200k左右。

  这种情况下,这个网段所有机器共享这200k的带宽。

  还可以加入一个sfq(随机公平队列)

  tc qdisc add dev eth0 root handle 1: htb r2q 1

  tc class add dev eth0 parent 1: classid 1:1 htb rate 3000kbit burst 10k

  tc qdisc add dev eth0 parent 1:1 handle 10: sfq perturb 10

  tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.111.168 flowid 1:1

  sfq,他可以防止一个段内的一个ip占用整个带宽。

  流量控制有时候算是个大工程了,但是这些主要是给专业人士看的,我们普通用户一般是用不到这些的,不过有兴趣学习一下还是可以的,希望对大家有用。