我意识到许多类似的问题已经被问到,但到目前为止,我还没有find解决我的问题。
我有一个用于testing网站速度的虚拟linux服务器(运行Debian Squeeze),以测量所述网站的加载时间的增加和减less。 我试图限制这个服务器的带宽和延迟,以便能够接近现实世界的加载时间在网站上,但迄今为止失败了。
我特别想要的是以下几点:
我一直在阅读netem和使用tc
命令,但它仍然在我头上。 我已经设法把这个命令放在一起来控制似乎工作的延迟,但我甚至不确定是否只处理传出延迟或两者:
tc qdisc add dev eth0 root netem delay 50ms
任何networking大师可以帮助我吗?
编辑:
经过进一步的研究,我已经获得了一半的目标,使用这个命令,所有传出的stream量按照我的意愿行事:
tc qdisc add dev eth0 root tbf rate 4.0mbit latency 50ms burst 50kb mtu 10000
但是,我仍然无法正确地遏制stream量。 我了解到,我应该使用“Ingress Policerfilter”,我一直试图用下面的命令来做这件事,玩弄不同的价值观,但没有运气。
tc qdisc add dev eth0 ingress tc filter add dev eth0 parent ffff: protocol ip u32 match ip src 0.0.0.0/0 flowid :1 police rate 1.0mbit mtu 10000 burst 10k drop
带宽受到命令的影响,但是上面的值使速度从2MB / s开始,随着传输的进行,缓慢下降到传输约30秒后达到的80-90kB / s左右。
任何想法,我做错了什么?
我终于决定只是在服务器上设置出站带宽/延迟,然后在客户端做同样的工作,实际上达到了相同的结果。
这些是我在服务器和客户端分别运行的命令,以实现我的目标:
tc qdisc add dev eth0 handle 1: root htb default 11 tc class add dev eth0 parent 1: classid 1:1 htb rate 1000Mbps tc class add dev eth0 parent 1:1 classid 1:11 htb rate 4Mbit tc qdisc add dev eth0 parent 1:11 handle 10: netem delay 50ms
tc qdisc add dev vmnet1 handle 1: root htb default 11 tc class add dev vmnet1 parent 1: classid 1:1 htb rate 1000Mbps tc class add dev vmnet1 parent 1:1 classid 1:11 htb rate 512kbit tc qdisc add dev vmnet1 parent 1:11 handle 10: netem delay 50ms
一些80-90 kByte / s是关于什么期望
tc filter add ... police rate 1.0mbit ...
当传入的数据以1 mBit / s的速度到达时,要求丢弃大约125 KByte / s的数据。 远程服务器将下降到比这大大降低(也许一半,不知道)。 之后,所有数据包都会通过,所以远端的速度会慢慢提升,直到再次达到125kByte / s。 平均吞吐量大大低于125kByte / s,这是入口整形的典型特征。
我感到有些惊讶的是,入口策略filter的速度已经达到了2 MByte / s。 你在哪里测量 – 在下游客户端(程序)还是在某个上游路由器? 或者,也许你是第一次开始连接,只有在你之后你踢入门策略filter?