So begrenzen Sie die Nutzung der Netzwerkbandbreite unter Linux mit Trickle

So begrenzen Sie die Nutzung der Netzwerkbandbreite unter Linux mit Trickle

Haben Sie jemals Situationen begegnet, in denen eine Anwendung Ihre All Network -Bandbreite dominierte? Wenn Sie jemals in einer Situation waren, in der eine Anwendung Ihren gesamten Verkehr gefressen hat, werden Sie die Rolle der Trickle -Bandbreiten -Shaper -Anwendung bewerten.

Entweder du bist ein System Administrator oder nur a Linux -Benutzer, Sie müssen lernen, wie Sie die Upload- und Download -Geschwindigkeiten für Anwendungen steuern, um sicherzustellen.

[Möglicherweise mögen Sie es auch: 16 nützliche Tools für Bandbreitenüberwachung zur Analyse der Netzwerknutzung unter Linux]

Was ist Trickle?

Rinnsal ist ein Netzwerk -Bandbreiten -Shaper -Tool, mit dem wir die Upload- und Download -Geschwindigkeiten von Anwendungen verwalten können, um zu verhindern.

In wenigen Worten können Sie mit Trickle die Netzwerkverkehrsrate auf der Basis pro Anwendung steuern, im Gegensatz zur Steuerung pro Benutzer. Dies ist das klassische Beispiel für eine Bandbreitenformung in einer Client-Server-Umgebung und ist wahrscheinlich das Setup, das wir mehr sind vertraut mit.

Wie Trickle funktioniert?

Darüber hinaus kann uns ein Rinnsal helfen, Prioritäten auf einer Basis von pro-Anwendung zu definieren.

Um diese Aufgabe zu erfüllen, legt der Trickle Verkehrsbegrenzungen auf die Art und Weise fest, wie Daten mithilfe von TCP -Verbindungen an Sockets gesendet und empfangen werden. Wir müssen beachten, dass Trickle abgesehen von den Datenübertragungsraten das Verhalten des Prozesses zu einem bestimmten Zeitpunkt in keiner Weise ändert.

Was kann nicht rinnen tun?

Die einzige Einschränkung ist sozusagen, dass Trickle nicht mit statisch verknüpften Anwendungen oder Binärdateien mit dem funktioniert Suid oder Sgid Bits eingestellt, da es dynamisches Verknüpfung und Laden verwendet, um sich zwischen dem geformten Prozess und dem zugehörigen Netzwerk -Socket zu setzen. Trickle fungiert dann als Proxy zwischen diesen beiden Softwarekomponenten.

Da Trickle keine Superuser -Berechtigungen benötigt, um auszuführen, können Benutzer ihre eigenen Verkehrsgrenzen festlegen. Da dies möglicherweise nicht wünschenswert ist, werden wir untersuchen. Mit anderen Worten, Benutzer können ihre Verkehrsraten weiterhin verwalten, aber immer innerhalb der vom Systemadministrator festgelegten Grenzen.

Testumgebung

In diesem Artikel erläutert wir, wie die Netzwerkbandbreite, die von Anwendungen in einem Linux -Server verwendet wird.

Um den notwendigen Verkehr zu generieren, werden wir nutzen ncftpput Und ncftpget (Beide Tools sind durch Installation erhältlich NCFTP) auf dem Kunden (Centos Server - Dev1: 192.168.0.17), Und vsftpd auf dem Server (Debian - Dev2: 192.168.0.15) zu Demonstrationszwecken. Die gleichen Anweisungen funktionieren auch Roter Hut, Fedora und Ubuntu -basierte Systeme.

Installation von NCFTP und VSFTPD unter Linux

1. Für Rhel/centos 8/7, Aktivieren Sie das Epel -Repository. Zusätzliche Pakete für Enterprise Linux (Epel) ist ein Repository von hochwertiger freier und offener Software, die vom Fedora-Projekt geführt wird und zu 100% mit seinen Spin-Offs kompatibel ist, wie z Red Hat Enterprise Linux Und Centos. Beide Rinnsal Und NCFTP werden in diesem Repository zur Verfügung gestellt.

2. Installieren NCFTP folgendermaßen:

# yum update && sudo yum install NCFTP [auf Redhat -basierten Systemen] # Aptitude Update && Aptitude Install NCFTP [auf Debian -basierten Systemen] 

3. Richten Sie einen FTP -Server auf einem separaten Server ein. Bitte beachten Sie, dass FTP zwar von Natur aus unsicher ist, es jedoch in Fällen immer noch häufig verwendet wird, wenn die Sicherheit beim Hochladen oder Herunterladen von Dateien nicht benötigt wird.

Wir verwenden es in diesem Artikel, um die Kopfgelder des Trinkens zu veranschaulichen, und weil es die Übertragungsraten in zeigt Stdout auf den Kunden, und wir werden die Diskussion darüber lassen, ob es für ein anderes Datum und Uhrzeit verwendet werden sollte oder nicht.

# yum update && yum install vsftpd [auf redhat -basierten Systemen] # APT -Update && APT Installieren Sie VSFTPD [auf Debian -basierten Systemen] 

Bearbeiten Sie nun die /etc/vsftpd/vsftpd.Conf Datei auf dem FTP -Server wie folgt:

$ sudo nano/etc/vsftpd/vsftpd.conf oder $ sudo /etc /vsftpd.Conf 

Folgende Änderungen vornehmen:

anonymous_enable = no local_enable = yes chroot_local_user = yes degling_writable_chroot = yes 

Stellen Sie danach sicher, dass Sie VSFTPD für Ihre aktuelle Sitzung starten und für den automatischen Start in zukünftigen Stiefeln aktivieren:

# Systemctl Start VSFTPD [für systemd-basierte Systeme] # SystemCTL aktivieren VSFTPD # Service VSFTPD START [für init-basierte Systeme] # Chkconfig VSFTPD ON 

4. Wenn Sie sich für die Einrichtung des FTP -Servers in a entschieden haben Centos/Rhel Droplet mit SSH-Schlüssel für Remote-Zugriff benötigen ein kennwortgeschütztes Benutzerkonto mit dem entsprechenden Verzeichnis und den Dateiberechtigungen zum Hochladen und Herunterladen der gewünschten Inhalte außerhalb des Home-Verzeichnisses von Roots.

Sie können dann zu Ihrem Heimverzeichnis suchen, indem Sie die folgende URL in Ihrem Browser eingeben. In einem Anmeldungsfenster werden Sie für ein gültiges Benutzerkonto und ein gültiges Kennwort auf dem FTP -Server aufgefordert.

ftp: // 192.168.0.15 

Wenn die Authentifizierung erfolgreich ist, sehen Sie den Inhalt Ihres Heimverzeichnisses. Später in diesem Tutorial können Sie diese Seite aktualisieren, um die Dateien anzuzeigen, die in früheren Schritten hochgeladen wurden.

FTP -Verzeichnisbaum

So installieren Sie Trinle unter Linux

Installieren Sie nun Trinkel über Yum oder geeignet.

Um eine erfolgreiche Installation zu gewährleisten, wird es als gute Praxis angesehen, um sicherzustellen, dass die derzeit installierten Pakete auf dem neuesten Stand sind (mit Verwendung yum Update) Vor der Installation des Werkzeugs selbst.

# yum -y -update && yum install trickle [on Redhat -basierte Systeme] # APT -y -Update && APT Install trickle [on Debian -basierte Systeme] 

Überprüfen Sie, ob Trickle mit der gewünschten Binärdatei funktioniert. Wie wir bereits erläutert haben, funktioniert das Trinken nur mit Binärdateien mit dynamischen oder gemeinsam genutzten Bibliotheken. Um zu überprüfen, ob wir dieses Tool mit einer bestimmten Anwendung verwenden können, können wir das bekannte verwenden LDD Nützlichkeit, wo LDD steht für List Dynamic Abhängigkeiten.

Insbesondere werden wir nach der Anwesenheit von suchen Glibc (Die GNU C -Bibliothek) In der Liste der dynamischen Abhängigkeiten eines bestimmten Programms, da genau diese Bibliothek die Systemaufrufe definiert.

Führen Sie den folgenden Befehl gegen eine bestimmte Binärin aus, um festzustellen, ob Trickle verwendet werden kann, um seine Bandbreite zu formen:

# LDD $ (was [binär]) | Grep libc.So 

Zum Beispiel,

# LDD $ (welche NCFTP) | Grep libc.So 

deren Ausgabe ist:

# libc.So.6 => /lib64 /libc.So.6 (0x00007eff2e6c000) 

Die Zeichenfolge zwischen Klammern in der Ausgabe kann sich von System zu System und sogar zwischen nachfolgenden Läufen desselben Befehls ändern, da sie die Lastadresse der Bibliothek im physischen Speicher darstellt.

Wenn der obige Befehl keine Ergebnisse zurückgibt, bedeutet dies, dass die binäre Binärin, gegen die es ausgeführt wurde, nicht verwendet wird libc, und daher kann Trickle in diesem Fall nicht als Bandbreitenschaper verwendet werden.

Erfahren Sie, wie Sie Trickle unter Linux verwenden

Die grundlegendste Verwendung von Trickle ist im eigenständigen Modus. Mit diesem Ansatz wird Trickle verwendet, um die Download- und Hochladengeschwindigkeiten einer bestimmten Anwendung explizit zu definieren. Wie wir bereits erläutert haben, werden wir aus Gründen der Kürze dieselbe Anwendung zum Download- und Upload -Tests verwenden.

Laufen Rinnle im Standalone -Modus

Wir werden die Download- und Hochladengeschwindigkeiten mit und ohne Trinken vergleichen. Der -D Die Option gibt die Download -Geschwindigkeit in KB/s an, während die -u Flag fordert Trinkle an, die Upload -Geschwindigkeit durch das gleiche Gerät zu begrenzen. Außerdem werden wir die verwenden -S Flag, das angibt, dass Trickle im Standalone -Modus ausgeführt werden sollte.

Die grundlegende Syntax zum Ausführen von Trickle im Standalone -Modus lautet wie folgt:

# Trickle -s -d [Download -Rate in KB/S] -U [Upload -Rate in KB/S] 

Um die folgenden Beispiele selbst durchzuführen, stellen Sie sicher Rinnsal Und NCFTP auf dem Client -Computer installiert (192.168.0.17 in meinem Fall).

Beispiel 1: Hochladen eines 2.8 MB PDF -Datei mit und ohne Rinnsal.

Wir verwenden die frei verteilte Linux -Grundlagen PDF -Datei (von hier aus) für die folgenden Tests verfügbar.

Sie können diese Datei zunächst mit dem folgenden Befehl in Ihr aktuelles Arbeitsverzeichnis herunterladen:

# WGet http: // linux-training.BE/Dateien/Bücher/Linuxfun.PDF 

Die Syntax zum Hochladen einer Datei auf unseren FTP -Server ohne Trickle lautet wie folgt:

# NCFTPPUT -U -Benutzername -P Passwort 192.168.0.15 /Remote_Directory Local-FileName 

Wo /remote_directory ist der Weg des Upload -Verzeichnisses im Vergleich zum Haus von Benutzername, und Lokalfilename ist eine Datei in Ihrem aktuellen Arbeitsverzeichnis.

Insbesondere erhalten wir ohne Trick eine Spitzen -Upload -Geschwindigkeit von 52.02 MB/s (Bitte beachten Sie, dass dies nicht die reale durchschnittliche Upload -Geschwindigkeit ist, sondern ein sofortiger Startpeak) und die Datei wird fast sofort hochgeladen:

# NCFTPPUT -U -Benutzername -P Passwort 192.168.0.15 /TestDir Linuxfun.PDF 

Ausgang:

Linuxfun.PDF: 2.79 MB 52.02 MB/s 

Mit Trickle werden wir die Upload -Übertragungsrate um einschränken 5 kb/s. Bevor wir die Datei zum zweiten Mal hochladen, müssen wir sie aus dem Zielverzeichnis löschen. ansonsten, NCFTP Wird uns informieren, dass die Datei am Zielverzeichnis das gleiche ist, das wir hochladen versuchen, und die Übertragung nicht durchführen:

# RM/Absolute/Path/TO/Destination/Directory/Linuxfun.PDF 

Dann:

# trickle -s -u 5 ncftpput -U username -P Passwort 111.111.111.111 /testdir linuxfun.PDF 

Ausgang:

Linuxfun.PDF: 2.79 MB 4.94 kb/s 

Im obigen Beispiel sehen wir, dass die durchschnittliche Upload -Geschwindigkeit auf die Geschwindigkeit gesunken ist ~ 5 kb/s.

Beispiel 2: das gleiche 2 herunterladen 2.8 MB PDF -Datei mit und ohne Rinnsal

Denken Sie zunächst daran, das PDF aus dem ursprünglichen Quellverzeichnis zu löschen:

# RM/Absolute/Path/TO/Source/Directory/Linuxfun.PDF 

Bitte beachten Sie, dass die folgenden Fälle die Remotedatei in das aktuelle Verzeichnis im Client -Computer herunterladen. Diese Tatsache wird durch den Zeitraum angezeigt ('.') Dies erscheint nach der IP -Adresse des FTP -Servers.

Ohne Rinnsel:

# NCFTPGet -U -Benutzername -P Passwort 111.111.111.111 . /testdir/linuxfun.PDF 

Ausgang:

Linuxfun.PDF: 2.79 MB 260.53 MB/s 

Mit Trickle die Download -Geschwindigkeit bei der Begrenzung der Geschwindigkeit bei 20 kb/s:

# Trickle -s -d 30 NCFTPGet -U Benutzername -P Passwort 111.111.111.111 . /testdir/linuxfun.PDF 

Ausgang:

Linuxfun.PDF: 2.79 MB 17.76 kb/s 

Laufen Rinnle im beaufsichtigten [nicht verwalteten] Modus

Trickle kann auch im nicht verwalteten Modus ausgeführt werden, folgt einer Reihe von Parametern, die in definiert werden /etc/trickled.Conf. In dieser Datei wird definiert.

Wenn wir insgesamt nach allen Anwendungen globale Einstellungen festlegen möchten, müssen wir den Trickled -Befehl verwenden. Dieser Befehl führt den Daemon aus und ermöglicht es uns, Download- und Hochladen von Grenzen zu definieren, die von allen Anwendungen geteilt werden.

Zum Beispiel Laufen:

# Trickled -d 50 -u 10 

Führt dazu 30 kb/s Und 10 kb/s, bzw.

Bitte beachten Sie, dass Sie jederzeit überprüfen können, ob Trickled ausgeführt wird und welche Argumente:

# ps -f | Grep tröpfelte | Grep -v Grep 

Ausgang:

Wurzel 16475 1 0 Dez24 ? 00:00:04 tröpfelte -d 50 -u 10 
Beispiel 3: Hochladen einer 19 -MB -MP4 -Datei auf unseren FTP -Server mit und ohne Trinken.

In diesem Beispiel werden wir die frei destributierbare „H verwendene ist das Geschenk"Video, zum Download von diesem Link zum Download verfügbar.

Wir werden diese Datei zunächst mit dem folgenden Befehl in Ihr aktuelles Arbeitsverzeichnis herunterladen:

# WGet http: // Media2.LDSCDN.org/assets/missionary/uremople-2014/2014-00-1460-He-is-the-the-the-gift-360p-Eng.MP4 

Zunächst einmal werden wir den Trickled Dämon mit dem oben aufgeführten Befehl starten:

# Trickled -d 30 -u 10 

Ohne Rinnsel:

# NCFTPPUT -U -Benutzername -P Passwort 192.168.0.15 /TestDir 2014-00-1460-He-is-the-Gift-360P-Eng.MP4 

Ausgang:

2014-00-1460-HE-is-the-gift-360p-Eng.MP4: 18.53 MB 36.31 MB/s 

Mit Trickle:

# Trickle NCFTPPUT -U -Benutzername -P Passwort 192.168.0.15 /TestDir 2014-00-1460-He-is-the-Gift-360P-Eng.MP4 

Ausgang:

2014-00-1460-HE-is-the-gift-360p-Eng.MP4: 18.53 MB 9.51 kb/s 

Wie wir in der obigen Ausgabe sehen können, fiel die Upload -Übertragungsrate auf ~ 10 kb/s.

Beispiel 4: Laden Sie dasselbe Video mit und ohne Trickle herunter

Wie in Beispiel 2, Wir werden die Datei in das aktuelle Arbeitsverzeichnis herunterladen.

Ohne Rinnsel:

# NCFTPGet -U -Benutzername -P Passwort 192.168.0.15 . /testdir/2014-00-1460-He-is-the-gift-360p-Eng.MP4 

Ausgang:

2014-00-1460-HE-is-the-gift-360p-Eng.MP4: 18.53 MB 108.34 MB/s 

Mit Trickle:

# Trickle NCFTPGet -U -Benutzername -P Passwort 111.111.111.111 . /testdir/2014-00-1460-He-is-the-gift-360p-Eng.MP4 

Ausgang:

2014-00-1460-HE-is-the-gift-360p-Eng.MP4: 18.53 MB 29.28 kb/s 

Das entspricht dem früher festgelegten Download -Limit (30 kb/s).

Notiz: Sobald der Daemon gestartet wurde, müssen für jede Anwendung, die Trickle verwendet.

Wie wir bereits erwähnt haben, kann man Trickle die Bandbreite von Trickle weiter anpassen.Conf. Ein typischer Abschnitt in dieser Datei besteht aus folgenden:

[Service] Priority = Time-Smoothing = Länge glätselt =  

Wo,

  1. [Service] Zeigt den Namen der Anwendung an, deren Bandbreitennutzung wir beabsichtigen zu formen.
  2. Priorität Ermöglicht es uns, einen Dienst anzugeben, um eine höhere Priorität im Verhältnis zu einem anderen zu haben, sodass eine einzelne Anwendung die gesamte Bandbreite, die der Daemon verwaltet. Je niedriger die Zahl ist, desto mehr Bandbreite wird der [Service] zugewiesen, um zugewiesen zu sein.
  3. Zeitverlagerung [In Sekunden]: Definiert sich mit den Zeitintervallen, die versuchen, die Anwendungsübertragung und / oder Daten zu empfangen. Kleinere Werte (etwas zwischen dem Bereich von 0.1 - 1s) sind ideal für interaktive Anwendungen und führen zu einer kontinuierlicheren (glatten) Sitzung, während geringfügige größere Werte (1 - 10 s) für Anwendungen besser sind. Wenn kein Wert angegeben ist, wird der Standard (5 s) verwendet.
  4. Länge glatt [in KB]: Die Idee ist die gleiche wie beim Zeitverlagerungen, aber basierend auf der Länge einer E/A-Operation. Wenn kein Wert angegeben ist, wird der Standard (10 kb) verwendet.

Das Ändern der Glättungswerte wird in die von angegebene Anwendung übersetzt [Service] Verwenden von Übertragungsraten innerhalb eines Intervalls anstelle eines festen Werts. Leider gibt es keine Formel, um die unteren und oberen Grenzen dieses Intervalls zu berechnen, da sie hauptsächlich von jedem spezifischen Fall abhängt.

Das Folgende ist a ausgestattet.Conf Beispieldatei im CentOS 7 Client (192.168.0.17):

[ssh] priority = 1 Zeitverlagerung = 0.1 Längenglättung = 2 [FTP] Priorität = 2 Zeitvergliederung = 1 Länge-glatt = 3 

Mit diesem Setup priorisieren Trickled SSH -Verbindungen vor FTP -Überweisungen. Beachten Sie, dass ein interaktiver Prozess wie SSH kleinere Zeitverlagerungswerte verwendet, während ein Dienst, der Massendatenübertragungen (FTP) durchführt, einen größeren Wert verwendet.

Die Glättungswerte sind in unserem vorherigen Beispiel für die Download- und Hochladengeschwindigkeiten verantwortlich.

[Möglicherweise gefallen Sie auch: Wie Sie den OpenSSH -Server sichern und härten]

Abschluss

In diesem Artikel haben wir untersucht. Andere mögliche Anwendungsfälle umfassen, ohne darauf beschränkt zu sein, auf:

  • Begrenzung der Download -Geschwindigkeit über ein System -Dienstprogramm wie WGet oder einen Torrent -Client beispielsweise ein Torrent -Client.
  • Begrenzen Sie die Geschwindigkeit, mit der Ihr System über 'yum' (oder 'Eignung', wenn Sie sich in einem Debian-basierten System befinden, das Paketverwaltungssystem aktualisiert werden.
  • Wenn Ihr Server zufällig hinter einem Proxy oder einer Firewall steht (oder der Proxy oder die Firewall selbst ist), können Sie Trickle verwenden, um Grenzen sowohl für die Download- als auch für das Hochladen oder die Kommunikationsgeschwindigkeit mit den Clients oder der Außenseite festzulegen.

Fragen und Kommentare sind sehr willkommen. Fühlen Sie sich frei, das folgende Formular zu verwenden, um sie unseren Weg zu senden.