Linux
限制linux中的傳入和傳出頻寬和延遲
我意識到已經提出了許多類似的問題,但到目前為止我還沒有找到解決問題的方法。
我有一個虛擬 linux 伺服器(執行 Debian Squeeze),用於測試網站速度,以測量所述網站載入時間的增加和減少。我正在嘗試限制此伺服器的頻寬和延遲,以便能夠接近網站上的真實載入時間,但到目前為止都失敗了。
我具體想要的是以下內容:
- 將傳入和傳出延遲設置為 50 毫秒。
- 將傳入頻寬限制設置為 512 kbps。
- 將傳出頻寬限制設置為 4096 kbps。
我一直在閱讀 netem 並使用該
tc
命令,但這仍然有點超出我的想像。我已經設法將這個命令放在一起來控制似乎有效的延遲,但我什至不確定它是否只處理傳出延遲或兩者兼而有之:tc qdisc add dev eth0 root netem delay 50ms
周圍的網路專家可以幫助我嗎?
編輯:
經過進一步研究,我的目標已經完成了一半,使用此命令所有傳出流量都按照我的意願行事:
tc qdisc add dev eth0 root tbf rate 4.0mbit latency 50ms burst 50kb mtu 10000
但是,我仍然無法正確限制傳入流量。我了解到我應該使用“Ingress Policer 過濾器”,我一直在嘗試使用下面的命令來做到這一點,使用不同的值,但沒有運氣。
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 開始,隨著傳輸的進行,緩慢下降到大約 80-90kB/s,在傳輸約 30 秒後達到。
關於我做錯了什麼的任何想法?
我最終決定只在伺服器上設置傳出頻寬/延遲,然後在客戶端上做同樣的事情,有效地達到相同的結果。
這些是我分別在伺服器和客戶端上執行以達到我的目標的命令:
伺服器:4 Mbit 50 毫秒
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
客戶端:512 kbit 50 ms
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