Hvernig á að takmarka netbandbreiddina sem notuð eru af forritum í Linux kerfi með Trickle


Hefur þú einhvern tíma lent í aðstæðum þar sem eitt forrit réð yfir allri netbandbreidd þinni? Ef þú hefur einhvern tíma verið í aðstæðum þar sem eitt forrit borðaði alla umferðina þína, þá muntu meta hlutverk trickle bandwidth shaper forritsins.

Annað hvort ertu kerfisstjóri eða bara Linux notandi, þú þarft að læra hvernig á að stjórna upphleðslu- og niðurhalshraða fyrir forrit til að tryggja að netbandbreiddin þín sé ekki brennd af einu forriti.

[Þér gæti líka líkað við: 16 Gagnleg bandbreiddarvöktunartæki til að greina netnotkun í Linux]

Hvað er Trickle?

Trickle er netbandbreiddarmótunartæki sem gerir okkur kleift að stjórna upphleðslu- og niðurhalshraða forrita til að koma í veg fyrir að eitthvert þeirra svíni alla (eða flesta) tiltæka bandbreidd.

Í fáum orðum, trickle gerir þér kleift að stjórna netumferðarhraða eftir forriti, öfugt við stjórnun á hvern notanda, sem er klassískt dæmi um mótun bandbreiddar í viðskiptavina-miðlara umhverfi, og er líklega uppsetningin sem við erum meira kannast við.

Hvernig virkar Trickle?

Að auki getur trickle hjálpað okkur að skilgreina forgangsröðun á grundvelli umsóknar þannig að þegar heildarmörk hafa verið sett fyrir allt kerfið munu forgangsforrit samt sem áður fá meiri bandbreidd sjálfkrafa.

Til að ná þessu verkefni setur trickle umferðartakmörk á það hvernig gögn eru send til og móttekin frá, innstungum sem nota TCP tengingar. Við verðum að hafa í huga að, annað en gagnaflutningshraða, breytir trickle ekki á nokkurn hátt hegðun ferlisins sem það mótar á hverri stundu.

Hvað getur Trickle ekki gert?

Eina takmörkunin, ef svo má að orði komast, er sú að trickle mun ekki virka með statískt tengd forrit eða tvístirni með SUID eða SGID bita stillt þar sem það notar kraftmikla tengingu og hleðslu til að staðsetja sig á milli mótaðs ferlis og tengdra nettengis þess. Trickle virkar síðan sem umboð á milli þessara tveggja hugbúnaðarhluta.

Þar sem trickle krefst ekki ofurnotendaréttinda til að geta keyrt, geta notendur sett sín eigin umferðarmörk. Þar sem þetta er kannski ekki æskilegt munum við kanna hvernig á að setja heildarmörk sem kerfisnotendur mega ekki fara yfir. Með öðrum orðum, notendur munu enn geta stjórnað umferðarhlutföllum sínum, en alltaf innan þeirra marka sem kerfisstjórinn setur.

Í þessari grein munum við útskýra hvernig á að takmarka netbandbreiddina sem notuð eru af forritum á Linux netþjóni með trickle.

Til að búa til nauðsynlega umferð munum við nota ncftpput og ncftpget (bæði verkfærin eru fáanleg með því að setja upp ncftp) á biðlaranum (CentOS þjónn – dev1: 192.168.0.17), og vsftpd á þjóninum (Debian – dev2: 192.168.0.15) fyrir sýnikennslu tilgangi. Sömu leiðbeiningar virka einnig á RedHat, Fedora og Ubuntu byggðum kerfum.

Að setja upp ncftp og vsftpd í Linux

1. Fyrir RHEL/CentOS 8/7, virkjaðu EPEL geymsluna. Aukapakkar fyrir Enterprise Linux (EPEL) er geymsla af hágæða ókeypis og opnum hugbúnaði sem er viðhaldið af Fedora verkefninu og er 100% samhæft við aukaefni þess, eins og Red Hat Enterprise Linux og CentOS. Bæði trickle og ncftp eru aðgengileg frá þessari geymslu.

2. Settu upp ncftp sem hér segir:

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

3. Settu upp FTP netþjón á sérstökum netþjóni. Vinsamlegast athugaðu að þó að FTP sé í eðli sínu óöruggt, er það enn mikið notað í þeim tilvikum þegar öryggi við að hlaða upp eða hlaða niður skrám er ekki þörf.

Við erum að nota það í þessari grein til að sýna hversu góðar trickle eru og vegna þess að það sýnir flutningshraða í stdout á viðskiptavininum, og við munum skilja eftir umræðuna um hvort það ætti að nota eða ekki fyrir aðra dagsetningu og tíma.

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

Nú skaltu breyta /etc/vsftpd/vsftpd.conf skránni á FTP þjóninum sem hér segir:

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

Gerðu eftirfarandi breytingar:

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

Eftir það, vertu viss um að ræsa vsftpd fyrir núverandi lotu og gera það virkt fyrir sjálfvirka ræsingu á framtíðarstígvélum:

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

4. Ef þú velur að setja upp FTP netþjóninn í CentOS/RHEL dropa með SSH lyklum fyrir fjaraðgang þarftu lykilorðsvarinn notandareikning með viðeigandi möppu og skráarheimildum til að hlaða upp og hlaða niður viðkomandi efni UTAN rótarheimilisins Skrá.

Þú getur síðan flett í heimaskrána þína með því að slá inn eftirfarandi vefslóð í vafranum þínum. Innskráningargluggi mun spretta upp sem biður þig um gildan notandareikning og lykilorð á FTP-þjóninum.

ftp://192.168.0.15

Ef auðkenningin tekst muntu sjá innihald heimaskrárinnar. Síðar í þessari kennslu muntu geta endurnýjað þá síðu til að birta skrárnar sem hafa verið hlaðið upp í fyrri skrefum.

Hvernig á að setja upp Trickle í Linux

Settu nú upp trickle í gegnum yum eða apt.

Til að tryggja árangursríka uppsetningu er talið gott að ganga úr skugga um að pakkarnir sem nú eru uppsettir séu uppfærðir (með því að nota yum uppfærslu) áður en tólið sjálft er sett upp.

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

Staðfestu hvort trickle muni virka með æskilegum tvöfalda. Eins og við útskýrðum áðan mun trickle aðeins virka með tvöfaldur með því að nota kraftmikil eða sameiginleg bókasöfn. Til að sannreyna hvort við getum notað þetta tól með ákveðnu forriti getum við notað hið vel þekkta ldd tól, þar sem ldd stendur fyrir list dynamic dependencies.

Nánar tiltekið munum við leita að tilvist glibc (GNU C bókasafnsins) á listanum yfir kraftmikla ósjálfstæði hvers forrits vegna þess að það er einmitt það bókasafn sem skilgreinir kerfissímtölin sem taka þátt í samskiptum í gegnum fals.

Keyrðu eftirfarandi skipun á tiltekinn tvöfaldur til að sjá hvort hægt sé að nota trickle til að móta bandbreidd þess:

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

Til dæmis,

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

þar sem framleiðsla er:

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

Strenginn á milli sviga í úttakinu getur breyst frá kerfi til kerfis og jafnvel á milli síðari keyrslu á sömu skipun þar sem hann táknar hleðsluvistfang bókasafnsins í líkamlegu minni.

Ef ofangreind skipun skilar engum niðurstöðum þýðir það að tvöfaldurinn sem það var keyrður gegn notar ekki libc og því er ekki hægt að nota trickle sem bandbreiddarmótara í því tilviki.

Lærðu hvernig á að nota Trickle í Linux

Grunnnotkunin á trickle er í sjálfstæðum ham. Með því að nota þessa nálgun er trickle notað til að skilgreina skýrt niðurhals- og upphleðsluhraða tiltekins forrits. Eins og við útskýrðum áðan munum við nota sama forrit til að hlaða niður og hlaða upp prófum til að styttast í.

Við munum bera saman niðurhals- og upphleðsluhraða með og án þess að nota trickle. Valmöguleikinn -d gefur til kynna niðurhalshraðann í KB/s, en -u fáninn segir trickle að takmarka upphleðsluhraðann með sömu einingu. Að auki munum við nota -s fánann, sem tilgreinir að trickle ætti að keyra í sjálfstæðum ham.

Grunnsetningafræðin til að keyra trickle í sjálfstæðum ham er sem hér segir:

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

Til að framkvæma eftirfarandi dæmi á eigin spýtur, vertu viss um að hafa trickle og ncftp uppsett á biðlaravélinni (192.168.0.17 í mínu tilfelli).

Við erum að nota ókeypis dreifanlega Linux Fundamentals PDF skjalið (fáanlegt héðan) fyrir eftirfarandi próf.

Þú getur upphaflega hlaðið niður þessari skrá í núverandi vinnuskrá með eftirfarandi skipun:

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

Setningafræðin til að hlaða upp skrá á FTP netþjóninn okkar án þess að drekka er sem hér segir:

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

Þar sem /remote_directory er slóð upphleðsluskrárinnar miðað við heimili notandanafns og local-filename er skrá í núverandi vinnumöppu þinni.

Nánar tiltekið fáum við hámarkshraða upphleðslu upp á 52,02 MB/s (vinsamlegast athugið að þetta er ekki raunverulegur meðalupphleðsluhraði, heldur strax upphafshraðinn), og skránni er hlaðið upp nánast samstundis:

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

Framleiðsla:

LinuxFun.pdf:                                        	2.79 MB   52.02 MB/s

Með trickle munum við takmarka upphleðsluflutningshraðann við 5 KB/s. Áður en skránni er hlaðið upp í annað sinn þurfum við að eyða henni úr áfangaskránni; annars mun ncftp upplýsa okkur um að skráin í áfangaskránni sé sú sama og við erum að reyna að hlaða upp og mun ekki framkvæma flutninginn:

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

Þá:

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

Framleiðsla:

LinuxFun.pdf:                                        	2.79 MB	4.94 kB/s

Í dæminu hér að ofan getum við séð að meðalupphleðsluhraði fór niður í ~5 KB/s.

Mundu fyrst að eyða PDF úr upprunalegu upprunaskránni:

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

Vinsamlegast athugaðu að eftirfarandi tilvik munu hlaða niður ytri skránni í núverandi möppu í biðlaravélinni. Þessi staðreynd er gefin til kynna með punktinum (‘.‘) sem birtist á eftir IP tölu FTP netþjónsins.

Án flæðis:

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

Framleiðsla:

LinuxFun.pdf:                                        	2.79 MB  260.53 MB/s

Með trickle, takmarka niðurhalshraðann við 20 KB/s:

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

Framleiðsla:

LinuxFun.pdf:                                        	2.79 MB   17.76 kB/s

Að keyra Trickle í eftirlitsham [óstýrður]

Trickle getur líka keyrt í óstýrðum ham, eftir röð af breytum sem eru skilgreindar í /etc/trickled.conf. Þessi skrá skilgreinir hvernig trickled (púkinn) hegðar sér og stjórnar trickle.

Að auki, ef við viljum stilla alþjóðlegar stillingar til að nota, á heildina litið, af öllum forritum, þurfum við að nota trickled skipunina. Þessi skipun keyrir púkann og gerir okkur kleift að skilgreina niðurhals- og upphleðslumörk sem verða deilt af öllum forritum sem keyra í gegnum trickle án þess að við þurfum að tilgreina takmörk í hvert skipti.

Til dæmis, hlaupandi:

# trickled -d 50 -u 10

Mun valda því að niðurhals- og upphleðsluhraði hvers kyns forrits sem keyrir í gegnum trickle takmarkast við 30 KB/s og 10 KB/s, í sömu röð.

Vinsamlegast athugaðu að þú getur athugað hvenær sem er hvort trickled sé í gangi og með hvaða rökum:

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

Framleiðsla:

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

Í þessu dæmi munum við nota ókeypis dreifingarmyndbandið „Hann er gjöfin“ sem hægt er að hlaða niður á þessum hlekk.

Við munum upphaflega hlaða niður þessari skrá í núverandi vinnuskrá með eftirfarandi skipun:

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

Í fyrsta lagi munum við ræsa trickled púkann með skipuninni sem talin er upp hér að ofan:

# trickled -d 30 -u 10

Án flæðis:

# ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4 

Framleiðsla:

2014-00-1460-he-is-the-gift-360p-eng.mp4:           	18.53 MB   36.31 MB/s

Með druslu:

# trickle ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4 

Framleiðsla:

2014-00-1460-he-is-the-gift-360p-eng.mp4:           	18.53 MB	9.51 kB/s

Eins og við sjáum í úttakinu hér að ofan lækkaði flutningshraði upphleðslunnar í ~10 KB/s.

Eins og í dæmi 2 munum við hlaða niður skránni í núverandi vinnuskrá.

Án flæðis:

# ncftpget -u username -p password 192.168.0.15 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4 

Framleiðsla:

2014-00-1460-he-is-the-gift-360p-eng.mp4:           	18.53 MB  108.34 MB/s

Með druslu:

# trickle ncftpget -u username -p password 111.111.111.111 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4 

Framleiðsla:

2014-00-1460-he-is-the-gift-360p-eng.mp4:           	18.53 MB   29.28 kB/s

Sem er í samræmi við niðurhalsmörkin sem sett voru áðan (30 KB/s).

Athugið: Að þegar púkinn hefur verið ræstur er engin þörf á að setja einstök mörk fyrir hvert forrit sem notar trickle.

Eins og við nefndum áðan er hægt að sérsníða bandbreiddarmótun trickle enn frekar í gegnum trickled.conf. Dæmigerður hluti í þessari skrá samanstendur af eftirfarandi:

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

Hvar,

  1. [þjónusta] gefur til kynna heiti forritsins sem við ætlum að móta bandbreiddarnotkun á.
  2. Forgangur gerir okkur kleift að tilgreina þjónustu þannig að hún hafi hærri forgang miðað við aðra og leyfir þannig ekki einu forriti að svína alla bandbreiddina sem púkinn stjórnar. Því lægri sem talan er, því meiri bandbreidd sem [þjónusta] er úthlutað.
  3. Tímajöfnun [í sekúndum]: skilgreinir með hvaða millibili sem lát er reynt að láta forritið flytja og/eða taka á móti gögnum. Minni gildi (eitthvað á bilinu 0,1 - 1s) eru tilvalin fyrir gagnvirk forrit og munu leiða til samfelldrar (sléttari) lotu á meðan aðeins stærri gildi (1 - 10 s) eru betri fyrir forrit sem þurfa magnflutning. Ef ekkert gildi er tilgreint er sjálfgefið (5 s) notað.
  4. Lengdarjöfnun [í KB]: Hugmyndin er sú sama og í Time-smoothing, en byggist á lengd I/O aðgerð. Ef ekkert gildi er tilgreint er sjálfgefið (10 KB) notað.

Breyting á jöfnunargildunum mun þýða í forritinu sem [þjónusta] tilgreinir með því að nota flutningshraða innan bils í stað fasts gildis. Því miður er engin formúla til til að reikna út neðri og efri mörk þessa bils þar sem það fer aðallega eftir hverju tilviki.

Eftirfarandi er trickled.conf sýnishornsskrá í CentOS 7 biðlaranum (192.168.0.17):

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

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

Með því að nota þessa uppsetningu mun trickled forgangsraða SSH tengingum umfram FTP flutninga. Athugaðu að gagnvirkt ferli, eins og SSH, notar minni tímajöfnunargildi, en þjónusta sem framkvæmir magngagnaflutninga (FTP) notar hærra gildi.

Jöfnunargildin eru ábyrg fyrir því að niðurhals- og upphleðsluhraðinn í fyrra dæminu okkar samsvarar ekki nákvæmlega gildinu sem tilgreint er af trickled púknum heldur hreyfist á bili nálægt því.

[Þér gæti líka líkað við: Hvernig á að tryggja og herða OpenSSH Server ]

Niðurstaða

Í þessari grein höfum við kannað hvernig á að takmarka bandbreiddina sem notuð eru af forritum sem nota trickle á Fedora-undirstaða dreifingar og Debian/afleiður. Önnur möguleg notkunartilvik eru ma, en takmarkast ekki við:

  • Takmörkun á niðurhalshraða með kerfisforriti eins og straumforriti, til dæmis.
  • Að takmarka hraðann sem hægt er að uppfæra kerfið þitt á í gegnum \aptitude\, ef þú ert í Debian kerfi), pakkastjórnunarkerfinu.
  • Ef þjónninn þinn er á bak við proxy eða eldvegg (eða er proxy eða eldveggurinn sjálfur), geturðu notað trickle til að setja takmarkanir á bæði niðurhal og upphleðslu eða samskiptahraða við viðskiptavinina eða utan.

Fyrirspurnir og athugasemdir eru vel þegnar. Ekki hika við að nota formið hér að neðan til að senda þá leið okkar.