Linux

限制linux中的傳入和傳出頻寬和延遲

  • June 8, 2016

我意識到已經提出了許多類似的問題,但到目前為止我還沒有找到解決問題的方法。

我有一個虛擬 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

引用自:https://serverfault.com/questions/507658