在Linux中限制網絡帶寬使用

限制網絡流量速率的一種方法是經過一個名爲trickle的命令行工具。經過在程序運行時,預先加載一個速率限制 socket 庫 的方法,trickle 命令容許你改變任意一個特定程序的流量。 trickle 命令有一個很好的特性是它僅在用戶空間中運行,這意味着,你沒必要須要 root 權限就能夠限制一個程序的帶寬使用。要能使用 trickle 程序控制程序的帶寬,這個程序就必須使用非靜態連接庫的套接字接口。當你想對一個不具備內置帶寬控制功能的程序進行速率限制時,trickle 能夠幫得上忙。
在 Ubuntu,Debian 及其衍生髮行版中安裝 trickle :
$ sudo apt-get install trickle
在 Fdora 或 CentOS/RHEL (帶有 EPEL 軟件倉庫):
$ sudo yum install trickle
trickle 的基本使用方法以下。僅需簡單地把 trickle 命令(及速率參數)放在你想運行的命令以前。
$ trickle -d <download-rate>-u <upload-rate>
這就能夠將  的下載和上傳速率限定爲特定值(單位 KBytes/s)。
例如,將你的 scp 會話的最大上傳帶寬設定爲 100 KB/s:
$ trickle -u 100 scp backup.tgz alice@remote_host.com:
如若你想,你能夠經過建立一個自定義啓動器的方式,使用下面的命令爲你的 Firefox 瀏覽器設定最大下載速率(例如, 300 KB/s)。
trickle -d 300 firefox %u
最後, trickle 也能夠以守護進程模式運行,在該模式下,它將會限制全部經過 trickle 啓動且正在運行的程序的總帶寬之和。 啓動 trickle 使其做爲一個守護進程(例如, trickled):
$ sudo trickled -d 1000
一旦 trickled 守護進程在後臺運行,你即可以經過 trickle 命令來啓動其餘程序。假如你經過 trickle 啓動一個程序,那麼這個程序的最大下載速率將是 1000 KB/s, 假如你再經過 trickle 啓動了另外一個程序,則每一個程序的(下載)速率極限將會被限制爲 500 KB/s,等等。
 
在 Linux 中限制一個網絡接口的速率
另外一種控制你的帶寬資源的方式是在每個接口上限制帶寬。這在你與其餘人分享你的網絡鏈接的上行帶寬時尤其實用。同其餘同樣,Linux 有一個工具來爲你作這件事。wondershaper就是幹這個的。
wondershaper 其實是一個 shell 腳本,它使用 tc 來定義流量調整命令,使用 QoS 來處理特定的網絡接口。外發流量經過放在不一樣優先級的隊列中,達到限制傳出流量速率的目的;而傳入流量經過丟包的方式來達到速率限制的目的。
事實上, wondershaper 的既定目標不單單是對一個接口增長其帶寬上限;當批量下載或上傳正在進行時,wondershaper 還試圖去保持互動性會話如 SSH 的低延遲。一樣的,它還會控制批量上傳(例如, Dropbox 的同步)不會使得下載「窒息」,反之亦然。
在 Ubuntu Debian 及其衍生髮行版中安裝 wondershaper:
$ sudo apt-get install wondershaper
在 Fdora 或 CentOS/RHEL (帶有 EPEL 軟件倉庫) 中安裝 wondershaper:
$ sudo yum install wondershaper
wondershaper 的基本使用以下:
$ sudo wondershaper <download-rate><upload-rate>
舉個例子, 將 eth0 的最大下載/上傳帶寬分別設定爲 1000Kbit/s 和 500Kbit/s:
$ sudo wondershaper eth0 1000500
你也能夠經過運行下面的命令將速率限制進行消除:
$ sudo wondershaper clear eth0
假如你對 wondershaper 的運行原理感興趣,你能夠閱讀其 shell 腳本源文件(/sbin/wondershaper)。
 
總結
在本教程中,我介紹了兩種不一樣的方法,來達到如何在 Linux 桌面環境中,控制每一個應用或每一個接口的帶寬使用的目的。 這些工具的使用都很簡單,都爲用戶提供了一個快速且容易的方式來調整或限制流量。 對於那些想更多地瞭解如何在 Linux 中進行速率控制的讀者,請參考 the Linux bible.shell

相關文章
相關標籤/搜索