首頁 > 軟體

指南:使用 Trickle 限制應用程式頻寬佔用

2020-06-16 17:59:37

有沒有遇到過系統中的某個應用程式獨佔了你所有的網路頻寬的情形?如果你有過這樣的遭遇,那麼你就會感受到Trickle這種頻寬調整應用的價值。不管你是一個系統管理員還只是普通Linux使用者,都需要學習如何控制應用程式的上下行速度,來確保你的網路頻寬不會被某個程式霸占。

在 Linux 上安裝 Trickle 頻寬限制 

什麼是 Trickle?

Trickle是一個網路頻寬調整工具,可以讓我們管理應用程式的網路上下行速度,使得可以避免其中的某個應用程式霸佔了全部或大部分可用的頻寬。換句話說,Trickle可以讓你基於單個應用程式來控制網路流量速率,而不是僅僅針對與單個使用者——這是在用戶端網路環境中經典的頻寬調整情況。 

Trickle 是如何工作的?

另外,trickle 可以幫助我們基於應用來定義優先順序,所以當對整個系統進行了全域性限制設定,高優先順序的應用依然會自動地獲取更多的頻寬。為了實現這個目標,trickle 對 TCP 連線上的通訊端的資料傳送、接收設定流量限制。我們必須注意到,除了影響傳輸速率之外,在這個過程中,trickle任何時候都不會以任何方式來改變其中的資料。 

Trickle不能做什麼?

這麼說吧,唯一的限制就是,trickle不支援靜態連結的應用程式或者具有SUID或SGID位設定的二進位制程式,因為它使用動態連結的方式將其載入到需要調整的進程和其關聯的網路通訊端之間。 Trickle此時會在這兩種軟體元件之間扮演代理的角色。

由於trickle並不需要超級使用者的許可權來執行,所以使用者可以設定他們自己的流量限制。可能這並不是你想要的,我們會探索如何使用全域性設定來限制系統中的所有使用者的流量限制。也即是說,此時系統中的每個使用者具有管理各自的流量速率,但是無論如何,都會受到系統管理員給他們設定的總體限制。

在這篇文章中,我們會描述如何通過trickle在linux平台上管理應用程式使用的網路頻寬。為了生成所需的流量,在此會在用戶端(CentOS 7 server – dev1: 192.168.0.17)上使用 ncftpput 和 ncftpget, 在伺服器(Debian Wheezy 7.5 – dev2: 192.168.0.15)上使用vsftpd 來進行演示。 相同的指令也可以在RedHatFedoraUbuntu等系統使用。 

前提條件

  1. 對於 RHEL/CentOS 7/6, 開啟EPEL倉庫。這些用於企業版 Linux 的額外軟體包是一個由Fedora專案維護的高品質、開源的軟體倉庫,而且百分之百與其衍生產品相相容,如企業版本Linux和CentOS。 在這個倉庫中trickle和ncftp兩者都是可用的。

  2. 按照如下方式安裝ncftp:

    1. # yum update && sudo yum install ncftp [基於 RedHat 的系統]
    2. # aptitude update && aptitude install ncftp [基於 Debian 的系統]
  3. 在單獨的伺服器上設定一個FTP伺服器。需要注意的是,儘管FTP天生就不安全,但是仍然被廣泛應用在安全性無關緊要的檔案上傳下載中。 在這篇文章中我們使用它來演示trickle的優點,同時它也會在用戶端的標準輸出流中顯示傳輸速率。我們將是否在其它時間使用它放在一邊討論。

    1. # yum update && yum install vsftpd [基於 RedHat 的系統]
    2. # aptitude update && aptitude install vsftpd [基於 Debian 的系統]

    現在,在FTP伺服器上按照以下方式編輯 /etc/vsftpd/vsftpd.conf 檔案。

    1. anonymous_enable=NO
    2. local_enable=YES
    3. chroot_local_user=YES
    4. allow_writeable_chroot=YES

    在此之後,確保在你的當前對談中啟動了vsftpd,並在之後的啟動中讓其自動啟動。

    1. # systemctl start vsftpd [基於 systemd 的系統]
    2. # systemctl enable vsftpd
    3. # service vsftpd start [基於 init 的系統]
    4. # chkconfig vsftpd on
  4. 如果你選擇在一個使用 SSH 金鑰進行遠端存取的 CentOS/RHEL 7中搭建FTP伺服器,你需要一個密碼受保護的使用者賬戶,它能存取root目錄之外的某個目錄,並有能在其中上傳和下載檔案的許可權。

    你可以通過在你的瀏覽器中輸入以下的URL來瀏覽你的家目錄。一個登入視窗會彈出來提示你輸入FTP伺服器中的有效的使用者名稱和密碼。

    1. ftp://192.168.0.15

    如果驗證成功,你就會看到你的家目錄中的內容。該教學的稍後部分中,你將可以重新整理頁面來顯示在你之前上傳過的檔案。

    FTP 目錄樹

 

如何在Linux中安裝 trickle

  1. 通過yum或aptitude來安裝trickle.

    為了確保能夠成功安裝,最好在安裝工具之前,保證當前的安裝包是最新的版本。

    1. # yum -y update && yum install trickle [基於 RedHat 的系統]
    2. # aptitude -y update && aptitude install trickle [基於 Debian 的系統]
  2. 確認trickle是否對特定的二進位制包有用。

    之前我們解釋過,trickle只對使用動態或共用的庫的二進位制包有用。為了確認我們是否可以對某個特定的應用使用trickle,我們可以使用著名的ldd(列出動態依賴)工具。 特別地,我們會檢視任何給定程式的動態依賴中其當前使用的glibc,因為其準確地定義了通過通訊端通訊所使用的系統呼叫。

    對一個給定的二進位制包執行以下命令來檢視是否能對其使用trickle進行頻寬調整:

    1. # ldd $(which [binary]) | grep libc.so

    例如,

    1. # ldd $(which ncftp) | grep libc.so

    其輸出是:

    1. # libc.so.6 => /lib64/libc.so.6 (0x00007efff2e6c000)

    輸出中的括號中的字元可能在不同的系統平台有所不同,甚至相同的命令在不同的時候執行也會不同,因為其代表包載入到實體記憶體中的地址。

    如果上面的命令沒有返回任何的結果,就說明這個二進位制包沒有使用libc包,因此trickle對其不能起到頻寬調整的作用。

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2015-05/118090p2.htm


IT145.com E-mail:sddin#qq.com