Wéi Limitéiert d'Netzwierkbandbreedung benotzt vun Uwendungen an engem Linux System mat Trickle


Hutt Dir jeemools Situatiounen begéint wou eng Applikatioun Är ganz Netzwierkbandbreed dominéiert? Wann Dir jeemools an enger Situatioun war wou eng Applikatioun all Äre Traffic giess huet, da wäert Dir d'Roll vun der Trickle Bandwidth Shaper Applikatioun schätzen.

Entweder Dir sidd e System Admin oder just e Linux Benotzer, Dir musst léieren wéi Dir d'Upload an d'Downloadgeschwindegkeet fir Uwendungen kontrolléiert fir sécherzestellen datt Är Netzwierkbandbreedung net vun enger eenzeger Applikatioun verbrannt gëtt.

[Dir kënnt och gären hunn: 16 Nëtzlech Bandbreedungs-Iwwerwaachungsinstrumenter fir d'Netzwierkverbrauch am Linux ze analyséieren]

Wat ass Trickle?

Trickle ass en Netzwierk Bandbreed Shaper Tool dat eis erlaabt d'Eroplueden an d'Download Geschwindegkeet vun Uwendungen ze managen fir ze verhënneren datt eng eenzeg vun hinnen all (oder déi meescht) vun der verfügbarer Bandbreedung hog.

A wéinege Wierder, Trickle léisst Iech den Netzverkéiersquote op enger Applikatioun Basis kontrolléieren, am Géigesaz zu der Per-Benotzer Kontroll, wat dat klassescht Beispill vu Bandbreedung an engem Client-Server Ëmfeld ass, an ass méiglecherweis de Setup dee mir méi sinn. kennt mat.

Wéi funktionnéiert Trickle?

Zousätzlech kann e Trickle eis hëllefen Prioritéite pro Applikatioun ze definéieren, sou datt wann allgemeng Limite fir de ganze System gesat goufen, Prioritéit Apps ëmmer automatesch méi Bandbreed kréien.

Fir dës Aufgab z'erreechen, setzt d'Trickle Verkéiersgrenze fir d'Art a Weis wéi d'Donnéeën geschéckt ginn an aus Sockets mat TCP Verbindunge geschéckt ginn. Mir mussen bemierken datt, ausser den Datenübertragungsraten, Trickle op kee Fall d'Behuele vum Prozess ännert deen et zu all Moment formt.

Wat kann Trickle net maachen?

Déi eenzeg Beschränkung, souzesoen, ass datt d'Trickle net mat statesch verlinkten Uwendungen oder Binären mat den SUID oder SGID Bits funktionnéiert, well et dynamesche Verknëppung a Luede benotzt fir sech tëscht dem geformte Prozess a sengem assoziéierten Netzwierksocket ze placéieren. Trickle handelt dann als Proxy tëscht dësen zwee Softwarekomponenten.

Zënter Trickle erfuerdert keng Superuser Privilegien fir ze lafen, kënnen d'Benotzer hir eege Verkéiersgrenze setzen. Well dëst vläicht net wënschenswäert ass, wäerte mir entdecken wéi mir allgemeng Limiten setzen déi de System Benotzer net kënnen iwwerschreiden. An anere Wierder, d'Benotzer kënnen nach ëmmer hir Verkéiersraten verwalten, awer ëmmer bannent de Grenzen, déi vum Systemadministrator festgeluecht goufen.

An dësem Artikel wäerte mir erkläre wéi Dir d'Netzbandbreedung limitéiert, déi vun Uwendungen an engem Linux Server benotzt gëtt mat engem Trickel.

Fir den néidege Traffic ze generéieren, benotze mir ncftpput an ncftpget (béid Tools si verfügbar andeems ncftp installéiert gëtt) um Client (CentOS Server - dev1: 192.168.0.17), a vsftpd um Server (Debian - dev2: 192.168.0.15) fir Demonstratioun Zwecker. Déi selwecht Instruktioune funktionnéieren och op RedHat, Fedora an Ubuntu baséiert Systemer.

Installéiert ncftp a vsftpd op Linux

1. Fir RHEL/CentOS 8/7, aktivéiert den EPEL Repository. Extra Packages fir Enterprise Linux (EPEL) ass e Repository vu qualitativ héichwäerteg gratis an Open Source Software, déi vum Fedora Projet erhale gëtt an ass 100% kompatibel mat sengen Spinoffs, wéi Red Hat Enterprise Linux an CentOS. Béid trickle an ncftp ginn aus dësem Repository verfügbar.

2. Installéiert ncftp wéi follegt:

# yum update && sudo yum install ncftp		[On RedHat based systems]
# aptitude update && aptitude install ncftp	[On Debian based systems]	

3. Ariichten engem FTP Server an engem separat Server. Notéiert w.e.g. datt och wann FTP inherent onsécher ass, et ass ëmmer nach wäit benotzt a Fäll wou Sécherheet beim Eroplueden oder Download vun Dateien net gebraucht gëtt.

Mir benotzen et an dësem Artikel fir eng illustréieren der Bounties vun trickle a well et der Transfermaart Tariffer am stdout op de Client weist, a mir wäerten d'Diskussioun verloossen ob et soll oder net fir en aneren Datum an Zäit benotzt ginn.

# yum update && yum install vsftpd 		[On RedHat based systems]
# apt update && apt install vsftpd 	[On Debian based systems]

Elo, änneren d' /etc/vsftpd/vsftpd.conf Datei um FTP Server wéi follegt:

$ sudo nano /etc/vsftpd/vsftpd.conf
OR
$ sudo /etc/vsftpd.conf

Maacht déi folgend Ännerungen:

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES

Duerno gitt sécher datt Dir vsftpd fir Är aktuell Sessioun starten an et fir automatesch Start op zukünfteg Stiwwelen aktivéieren:

# systemctl start vsftpd 		[For systemd-based systems]
# systemctl enable vsftpd
# service vsftpd start 			[For init-based systems]
# chkconfig vsftpd on

4. Wann Dir gewielt hutt den FTP-Server an engem CentOS/RHEL Droplet mat SSH-Schlësselen fir Fernzougang opzestellen, braucht Dir e Passwuert-geschützte Benotzerkont mat dem passenden Verzeichnis an Dateierechter fir de gewënschten Inhalt AUSSEN Root's Heem eropzelueden an erofzelueden. Verzeechnes.

Dir kënnt dann an Ären Heemverzeichnis duerchsichen andeems Dir déi folgend URL an Ärem Browser aginn. Eng Login-Fënster erschéngt Iech fir e gültege Benotzerkont a Passwuert um FTP-Server ze froen.

ftp://192.168.0.15

Wann d'Authentifikatioun geléngt, gesitt Dir den Inhalt vun Ärem Heemverzeichnis. Méi spéit an dësem Tutorial kënnt Dir dës Säit erfrëschen fir d'Fichier'en ze weisen, déi während de fréiere Schrëtt eropgeluede goufen.

Wéi installéiere mir Trickle op Linux

Installéiert elo trickle iwwer yum oder apt.

Fir eng erfollegräich Installatioun ze garantéieren, gëtt et als gutt Praxis ugesinn fir sécher ze stellen datt déi aktuell installéiert Packagen aktuell sinn (mat yum Update) ier Dir den Tool selwer installéiert.

# yum -y update && yum install trickle 		        [On RedHat based systems]
# apt -y update && apt install trickle 	[On Debian based systems]

Vergewëssert Iech ob Trickle mat der gewënschter Binär funktionnéiert. Wéi mir virdru erkläert hunn, funktionnéiert d'Trickle nëmme mat Binäre mat dynamesche oder gemeinsame Bibliothéiken. Fir z'iwwerpréiwen ob mir dëst Tool mat enger bestëmmter Applikatioun benotze kënnen, kënne mir de bekannte ldd Utility benotzen, wou ldd fir listdynamesch Ofhängegkeete steet.

Speziell wäerte mir no der Präsenz vu glibc (d'GNU C Bibliothéik) an der Lëscht vun dynamesche Ofhängegkeete vun all bestëmmte Programm kucken, well et ass genee déi Bibliothéik déi de System Uriff definéiert, déi an der Kommunikatioun duerch Sockets involvéiert sinn.

Fëllt de folgende Kommando géint eng gegebene Binär fir ze kucken ob Trickle ka benotzt ginn fir seng Bandbreed ze formen:

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

Zum Beispill,

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

deem seng Ausgang ass:

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

D'String tëscht Klammern am Ausgang ka vu System zu System änneren an och tëscht spéider Runen vum selwechte Kommando well et d'Laaschtadress vun der Bibliothéik an der kierperlecher Erënnerung duerstellt.

Wann den uewe genannte Kommando keng Resultater zréckkënnt, heescht et datt de Binäre géint deen et ausgeführt gouf, net libc benotzt, an dofir kann d'Trickle net als Bandbreedungsformer an deem Fall benotzt ginn.

Léiert wéi Dir Trickle a Linux benotzt

Déi meescht Basis Notzung vum Trickle ass am Standalone Modus. Mat dëser Approche gëtt Trickle benotzt fir d'Download- an Eropluedsgeschwindegkeet vun enger bestëmmter Applikatioun explizit ze definéieren. Wéi mir virdru erkläert hunn, fir Kuerzegkeet benotze mir déiselwecht Applikatioun fir Tester erofzelueden an eropzelueden.

Mir vergläichen d'Download- an d'Uploadgeschwindegkeet mat an ouni Trickle ze benotzen. D'Optioun -d weist d'Downloadgeschwindegkeet a KB/s un, während de -u Fändel seet, datt d'Uploadgeschwindegkeet vun der selwechter Eenheet limitéiert ass. Zousätzlech wäerte mir de -s Fändel benotzen, deen spezifizéiert datt d'Trickle am Standalone Modus lafen soll.

D'Basis Syntax fir Trickle am Standalone Modus ze lafen ass wéi follegt:

# trickle -s -d [download rate in KB/s] -u [upload rate in KB/s]

Fir déi folgend Beispiller eleng auszeféieren, gitt sécher datt Dir Trickle an ncftp op der Clientmaschinn installéiert hutt (192.168.0.17 a mengem Fall).

Mir benotzen déi fräi verdeeltbar Linux Fundamentals PDF Datei (verfügbar vun hei) fir déi folgend Tester.

Dir kënnt ursprénglech dës Datei an Ären aktuellen Aarbechtsverzeechnes eroflueden mat dem folgenden Kommando:

# wget http://linux-training.be/files/books/LinuxFun.pdf 

D'Syntax fir eng Datei op eise FTP-Server eropzelueden ouni Trickle ass wéi follegt:

# ncftpput -u username -p password 192.168.0.15  /remote_directory local-filename 

Wou /remote_directory de Wee vum eropluede Verzeechnes relativ zum Benotzernumm Heem ass, a lokal Dateinumm ass eng Datei an Ärem aktuellen Aarbechtsverzeechnes.

Speziell, ouni Trickle kréie mir eng Peak-Upload-Geschwindegkeet vun 52,02 MB/s (kuckt w.e.g. datt dëst net déi richteg duerchschnëttlech Eropluedsgeschwindegkeet ass, awer en instant Startpeak), an d'Datei gëtt bal direkt eropgelueden:

# ncftpput -u username -p password 192.168.0.15  /testdir LinuxFun.pdf 

Ausgang:

LinuxFun.pdf:                                        	2.79 MB   52.02 MB/s

Mat Trickle limitéiere mir den Upload-Transferrate bei 5 KB/s. Ier Dir d'Datei fir d'zweete Kéier eropluet, musse mir se aus dem Destinatiounsverzeichnis läschen; soss informéiert ncftp eis datt d'Datei am Destinatiounsverzeichnis d'selwecht ass wéi mir probéieren eropzelueden, a wäert den Transfer net ausféieren:

# rm /absolute/path/to/destination/directory/LinuxFun.pdf 

Dann:

# trickle -s -u 5 ncftpput -u username -p password 111.111.111.111 /testdir LinuxFun.pdf 

Ausgang:

LinuxFun.pdf:                                        	2.79 MB	4.94 kB/s

Am Beispill hei uewen kënne mir gesinn datt déi duerchschnëttlech Uploadgeschwindegkeet op ~5 KB/s erofgaang ass.

Als éischt, erënnert un de PDF aus dem ursprénglechen Quellverzeechnes ze läschen:

# rm /absolute/path/to/source/directory/LinuxFun.pdf 

Notéiert w.e.g. datt déi folgend Fäll d'Ferndatei an den aktuellen Verzeechnes an der Clientmaschinn eroflueden. Dës Tatsaach gëtt duerch d'Period ('.') uginn, déi no der IP Adress vum FTP-Server erscheint.

Ouni Schlag:

# ncftpget -u username -p  password 111.111.111.111 . /testdir/LinuxFun.pdf 

Ausgang:

LinuxFun.pdf:                                        	2.79 MB  260.53 MB/s

Mat Trickle, limitéiert d'Downloadgeschwindegkeet op 20 KB/s:

# trickle -s -d 30 ncftpget -u username -p password 111.111.111.111 . /testdir/LinuxFun.pdf 

Ausgang:

LinuxFun.pdf:                                        	2.79 MB   17.76 kB/s

Lafen Trickle am iwwerwaachte [onmanéiert] Modus

Trickle kann och am net verwalteten Modus lafen, no enger Serie vu Parameteren definéiert an /etc/trickled.conf. Dëse Fichier definéiert wéi trickled (den Daemon) sech behuelen a trickle geréiert.

Zousätzlech, wa mir global Astellunge wëllen astellen fir ze benotzen, allgemeng, vun all Uwendungen, musse mir de trickled Kommando benotzen. Dëse Kommando leeft den Daemon an erlaabt eis d'Download- an d'Upload-Limiten ze definéieren, déi vun allen Uwendungen gedeelt ginn, déi duerch Trickle lafen, ouni datt mir all Kéier Limiten musse spezifizéieren.

Zum Beispill lafen:

# trickled -d 50 -u 10

Verursaacht datt d'Download- an Eropluedsgeschwindegkeet vun all Applikatioun duerch Trickle leeft limitéiert op 30 KB/s respektiv 10 KB/s.

Notéiert w.e.g. datt Dir zu all Moment kontrolléiere kënnt ob trickled leeft a mat wéi enge Argumenter:

# ps -ef | grep trickled | grep -v grep

Ausgang:

root 	16475 	1  0 Dec24 ?    	00:00:04 trickled -d 50 -u 10

An dësem Beispill benotze mir de fräi verdeeltbare Hien ass de Kaddo Video, verfügbar fir erofzelueden vun dësem Link.

Mir lueden dës Datei ufanks an Ären aktuellen Aarbechtsverzeechnes mat dem folgenden Kommando erof:

# wget http://media2.ldscdn.org/assets/missionary/our-people-2014/2014-00-1460-he-is-the-gift-360p-eng.mp4 

Als éischt starten mir den trickled Daemon mam Kommando uewen opgezielt:

# trickled -d 30 -u 10

Ouni Schlag:

# ncftpput -u username -p password 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

Mat Trick:

# trickle ncftpput -u username -p password 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

Wéi mir am Ausgang hei uewen gesinn, ass den Upload-Transferrate op ~10 KB/s erofgaang.

Wéi am Beispill 2 wäerte mir d'Datei an den aktuellen Aarbechtsverzeechnes eroflueden.

Ouni Schlag:

# ncftpget -u username -p password 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

Mat Trick:

# trickle ncftpget -u username -p password 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

Wat ass am Aklang mat der Downloadlimit, déi virdru festgeluecht gouf (30 KB/s).

Notiz: Dass wann den Daemon gestart ass, ass et net néideg individuell Limite fir all Applikatioun ze setzen déi Trickle benotzt.

Wéi mir virdru scho gesot hunn, kann een d'Trickle seng Bandbreedformung weider personaliséieren duerch trickled.conf. Eng typesch Sektioun an dësem Fichier besteet aus de folgenden:

[service]
Priority = <value>
Time-Smoothing = <value>
Length-Smoothing = <value>

Wou,

  1. [Service] weist den Numm vun der Applikatioun un, där hir Bandbreedungsverbrauch mir wëlle formen.
  2. Prioritéit erlaabt eis e Service ze spezifizéieren fir eng méi héich Prioritéit relativ zu engem aneren ze hunn, sou datt eng eenzeg Applikatioun net erlaabt all d'Bandbreedung ze hogen déi den Daemon geréiert. Wat méi niddereg d'Zuel ass, wat méi Bandbreedung fir [Service] zougewisen ass.
  3. Time-Smoothing [a Sekonnen]: definéiert mat wéi enger Zäitintervaller déi trickled probéieren d'Applikatioun ze transferéieren an/oder Daten ze kréien. Méi kleng Wäerter (eppes tëscht dem Gamme vun 0.1 - 1s) sinn ideal fir interaktiv Uwendungen a wäerten zu enger méi kontinuéierlecher (glat) Sessioun resultéieren, während e bësse méi grouss Wäerter (1 - 10 s) besser si fir Uwendungen déi Bulktransfer brauchen. Wa kee Wäert uginn ass, gëtt de Standard (5 s) benotzt.
  4. Längt-Smoothing [a KB]: d'Iddi ass d'selwecht wéi an Time-Smoothing, awer baséiert op der Längt vun enger I/O Operatioun. Wa kee Wäert uginn ass, gëtt de Standard (10 KB) benotzt.

D'Ännere vun de Glättungswäerter iwwersetzen an d'Applikatioun spezifizéiert vum [Service] mat Transferraten bannent engem Intervall amplaz vun engem fixe Wäert. Leider gëtt et keng Formel fir déi ënnescht an iewescht Grenze vun dësem Intervall ze berechnen, well et haaptsächlech vun all spezifesche Fall Szenario hänkt.

Déi folgend ass eng trickled.conf Probe Datei am CentOS 7 Client (192.168.0.17):

[ssh]
Priority = 1
Time-Smoothing = 0.1
Length-Smoothing = 2

[ftp]
Priority = 2
Time-Smoothing = 1
Length-Smoothing = 3

Mat dësem Setup, trickled wäert SSH Verbindungen iwwer FTP Transfere prioritär. Bedenkt datt en interaktiven Prozess, wéi SSH, méi kleng Zäit-Gléckwäerter benotzt, wärend e Service dee Bulk Datenübertragungen (FTP) e méi grousse Wäert benotzt.

D'Glätterungswäerter si verantwortlech fir d'Download- an d'Uploadgeschwindegkeet an eisem viregte Beispill entspriechen net dem genaue Wäert, dee vum trickled Daemon spezifizéiert ass, awer an engem Intervall no bei him bewegt.

[Dir kënnt och gären hunn: Wéi sécheren an Harden OpenSSH Server]

Conclusioun

An dësem Artikel hu mir exploréiert wéi d'Bandbreedung limitéiert gëtt, déi vun Uwendungen benotzt gëtt, mat Trickle op Fedora-baséiert Verdeelungen an Debian/Derivate. Aner méiglech Benotzungsfäll enthalen, awer sinn net limitéiert op:

  • D'Downloadgeschwindegkeet limitéieren iwwer e System Utility wéi zum Beispill Torrent Client.
  • D'Geschwindegkeet limitéieren mat där Äre System iwwer \aptitude\ aktualiséiert ka ginn, wann Dir an engem Debian-baséierte System sidd), de Package Management System.
  • Wann Äre Server zoufälleg hannert engem Proxy oder Firewall steet (oder de Proxy oder Firewall selwer ass), kënnt Dir Trickle benotze fir Limiten op den Download an d'Upload oder d'Kommunikatiounsgeschwindegkeet mat de Clienten oder dobaussen ze setzen.

Froen a Kommentarer sinn häerzlech wëllkomm. Benotzt de Formulaire hei drënner fir se op eise Wee ze schécken.