2010年7月19日 星期一

模擬網路連線的延遲 - Simulating network delay

目的:模擬連線到國外的網路品質。


由於有些新穎的服務都嘛是從國外開始蔓延,有的服務連過去使用時都有點頓頓,慶幸的有的是 Open Source,於是我把他架起來用用,但是,還是要好奇一下連到國外頓頓的感覺是不是完全是因為網路品質的關係,因此,我就要來試試將自己網路品質弄糟的方式。


一開始我只用 iptables 跟 limit 、delay、latency 或 ms 等關鍵字,找了找,最後發現這個應該是要跟 iproute 相關才是,有幾篇文章



最後,我是用 How to simulate a slow
network with 'wanem'
的方法,在 Ubuntu 10.04 環境下,用 tc 這個指令,並且將 eth3 網路卡的連線 dely 200ms


$ sudo tc qdisc add dev eth3 root handle 1:0 netem delay 200msec


假設 eth3 綁定的是 192.168.56.101 的位置,那就用 ping 來觀看,果真變慢囉(過程是一開始沒有設定,之後加上 dely 200ms,最後在拿掉該設定)


$ ping 192.168.56.101
PING 192.168.56.101 (192.168.56.101) 56(84) bytes of data.
64 bytes from 192.168.56.101: icmp_seq=1 ttl=64 time=0.305 ms
64 bytes from 192.168.56.101: icmp_seq=2 ttl=64 time=0.267 ms
64 bytes from 192.168.56.101: icmp_seq=3 ttl=64 time=201 ms
64 bytes from 192.168.56.101: icmp_seq=4 ttl=64 time=200 ms
64 bytes from 192.168.56.101: icmp_seq=5 ttl=64 time=200 ms
64 bytes from 192.168.56.101: icmp_seq=6 ttl=64 time=201 ms
64 bytes from 192.168.56.101: icmp_seq=7 ttl=64 time=203 ms
64 bytes from 192.168.56.101: icmp_seq=8 ttl=64 time=202 ms
64 bytes from 192.168.56.101: icmp_seq=9 ttl=64 time=0.344 ms
64 bytes from 192.168.56.101: icmp_seq=10 ttl=64 time=0.334 ms
64 bytes from 192.168.56.101: icmp_seq=11 ttl=64 time=0.697 ms
64 bytes from 192.168.56.101: icmp_seq=12 ttl=64 time=0.341 ms
64 bytes from 192.168.56.101: icmp_seq=13 ttl=64 time=0.631 ms
^C
--- 192.168.56.101 ping statistics ---
13 packets transmitted, 13 received, 0% packet loss, time 11998ms
rtt min/avg/max/mdev = 0.267/93.241/203.547/100.266 ms


測試完可以在用以下指令清除


$ sudo tc qdisc del dev eth3 root handle 1:0 netem delay 200msec


1 則留言:

  1. 不好意思我比較愚鈍,為什麼要模擬網路延遲的動作呢?
    是模擬國外的人連到我們網路是否lag?不知道這樣可以應用在哪方面

    版主回覆:(06/27/2010 11:32:18 PM)


    有時候使用國外的一些服務很慢, 想要確定到底是因為網路還是其他程式問題, 因此就可能先試試模擬網路延遲囉

    回覆刪除