首先,发送ping请求cyberciti.biz你本地的
Linux工作站,并注意下ping的时间,输入:
# ping cyberciti.biz
样本输出:
PING cyberciti.biz (74.86.48.99) 56(84)
bytes of data.
64 bytes from txvip1.simplyguide.org (74.86.48.99): icmp_seq=1
ttl=47 time=304 ms
64 bytes from txvip1.simplyguide.org (74.86.48.99):
icmp_seq=2 ttl=47 time=304 ms
64 bytes from txvip1.simplyguide.org
(74.86.48.99): icmp_seq=3 ttl=47 time=304 ms
64 bytes from
txvip1.simplyguide.org (74.86.48.99): icmp_seq=4 ttl=47 time=304 ms
64 bytes
from txvip1.simplyguide.org (74.86.48.99): icmp_seq=5 ttl=47 time=304 ms
64
bytes from txvip1.simplyguide.org (74.86.48.99): icmp_seq=6 ttl=47 time=304 ms
键入下面的TC命令减慢200毫秒
# tc qdisc add dev eth0 root netem delay 200ms
现在,再次运行ping 请求
# ping
cyberciti.biz
输出样本:
PING cyberciti.biz (74.86.48.99) 56(84) bytes of
data.
64 bytes from txvip1.simplyguide.org (74.86.48.99): icmp_seq=1 ttl=47
time=505 ms
64 bytes from txvip1.simplyguide.org (74.86.48.99): icmp_seq=2
ttl=47 time=505 ms
64 bytes from txvip1.simplyguide.org (74.86.48.99):
icmp_seq=3 ttl=47 time=505 ms
64 bytes from txvip1.simplyguide.org
(74.86.48.99): icmp_seq=4 ttl=47 time=505 ms
64 bytes from
txvip1.simplyguide.org (74.86.48.99): icmp_seq=5 ttl=47 time=505 ms
64 bytes
from txvip1.simplyguide.org (74.86.48.99): icmp_seq=6 ttl=47 time=505 ms
64
bytes from txvip1.simplyguide.org (74.86.48.99): icmp_seq=7 ttl=47 time=505
ms
64 bytes from txvip1.simplyguide.org (74.86.48.99): icmp_seq=8 ttl=47
time=505 ms
^C
--- cyberciti.biz ping statistics ---
8 packets
transmitted, 8 received, 0% packet loss, time 7006ms
rtt min/avg/max/mdev =
504.464/505.303/506.308/0.949 ms
要列出当前规则,请输入
# tc -s qdisc ls dev eth0
输出样本:
qdisc netem 8001: root
limit 1000 delay 200.0ms
Sent 175545 bytes 540 pkt (dropped 0, overlimits 0
requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
想删除全部规则,请输入
# tc qdisc del dev eth0 root
# tc -s qdisc ls dev
eth0
TBF的范例
要附加一个持续的最大速率1Mbit / s的,peakrate2.0mbit/
S,10kilobyte缓冲区一个TBF的计算,使TBF的原因最多70ms的延迟,与完美的peakrate行为,与前斗队列大小限制,,输入:
# tc qdisc add dev eth0 root tbf rate 1mbit burst 10kb latency 70ms peakrate
2mbit minburst 1540
HTB – 层次令牌桶
要控制在一个给定的链接使用HTB的出口带宽的使用:
1.rate – 您可以设置允许的带宽。
2.ceil –
您可以设置的突发带宽时,允许桶。
3.prio – 您可以设置额外的带宽优先级。
prios较低的类所提供的带宽。例如,您可以给DNS流量和HTTP下载PRIO较低。
4.iptables和TC:你需要使用iptables和TC如下:控制出站HTTP流量。
示例:
HTTP 出站
流量整形
首先,删除eth1 网卡上已存在的规则:
# /sbin/tc qdisc del dev eth1 root
打开队列规则,输入:
#
/sbin/tc qdisc add dev eth1 root handle 1:0 htb default
10
定义类的限制,即允许的带宽为512千字节到640千字节的端口80和突发带宽:
# /sbin/tc class add dev eth1 parent 1:0 classid 1:10 htb rate 512kbps ceil
640kbps prio 0
请注意,端口80是不是在上面的类中定义的任何地方。您将使用iptables裂伤规则如下:
# /sbin/iptables -A OUTPUT -t mangle -p tcp --sport 80 -j MARK --set-mark
10
要保存iptables 规则,请输入下列命令,(RHEL 为例):
# /sbin/service iptables
save
最后,将其分配给 qdisc:
# tc filter add dev eth1 parent 1:0 prio 0 protocol
ip handle 10 fw flowid 1:10
下面是端口80和22的另一个例子:
/sbin/tc qdisc add dev eth0 root handle 1: htb
/sbin/tc class add dev eth0
parent 1: classid 1:1 htb rate 1024kbps
/sbin/tc class add dev eth0 parent
1:1 classid 1:5 htb rate 512kbps ceil 640kbps prio 1
/sbin/tc class add dev
eth0 parent 1:1 classid 1:6 htb rate 100kbps ceil 160kbps prio 0
/sbin/tc
filter add dev eth0 parent 1:0 prio 1 protocol ip handle 5 fw flowid
1:5
/sbin/tc filter add dev eth0 parent 1:0 prio 0 protocol ip handle 6 fw
flowid 1:6
/sbin/iptables -A OUTPUT -t mangle -p tcp --sport 80 -j MARK
--set-mark 5
/sbin/iptables -A OUTPUT -t mangle -p tcp --sport 22 -j MARK
--set-mark 6
我如何监控和
测试速度呢?
使用一下工具
# /sbin/tc -s -d class show dev eth0
# /sbin/iptables -t mangle -n -v
-L
# iptraf
# watch /sbin/tc -s -d class show dev
eth0
要测试下载速度使用LFTP或者wget命令行工具。
转载:http://blog.sina.com.cn/s/blog_61c07ac5010189nt.html