Jinsi ya Kuweka Kikomo Bandwidth ya Mtandao Inayotumiwa na Programu katika Mfumo wa Linux wenye Trickle


Je, umewahi kukutana na hali ambapo programu moja ilitawala kipimo data cha mtandao wako wote? Ikiwa umewahi kuwa katika hali ambapo programu moja ilikula trafiki yako yote, basi utathamini jukumu la utumaji wa uundaji wa kipimo data.

Ama wewe ni msimamizi wa mfumo au ni mtumiaji wa Linux tu, unahitaji kujifunza jinsi ya kudhibiti kasi ya upakiaji na kupakua kwa programu ili kuhakikisha kuwa kipimo data cha mtandao wako hakichomwi na programu moja tu.

[ Unaweza pia kupenda: 16 Zana Muhimu za Kufuatilia Bandwidth Kuchanganua Matumizi ya Mtandao katika Linux ]

Trickle ni nini?

Trickle ni zana ya kuunda kipimo data cha mtandao ambayo huturuhusu kudhibiti kasi ya upakiaji na upakuaji wa programu ili kuzuia mojawapo ya programu hizo kugusa (au nyingi) za kipimo data kinachopatikana.

Kwa maneno machache, hila hukuruhusu kudhibiti kiwango cha trafiki ya mtandao kwa msingi wa maombi, tofauti na udhibiti wa kila mtumiaji, ambao ni mfano wa kawaida wa uundaji wa kipimo data katika mazingira ya seva ya mteja, na labda ni usanidi tulio nao zaidi. inayofahamika nayo.

Jinsi Trickle Inafanya Kazi?

Kwa kuongeza, hila inaweza kutusaidia kufafanua vipaumbele kwa misingi ya kila ombi ili vikomo vya jumla vimewekwa kwa mfumo mzima, programu za kipaumbele bado zitapata kipimo data kiotomatiki.

Ili kukamilisha kazi hii, hila huweka mipaka ya trafiki kwa njia ambayo data hutumwa na kupokea kutoka, soketi kwa kutumia miunganisho ya TCP. Ni lazima tukumbuke kwamba, zaidi ya viwango vya uhamishaji data, hila haibadilishi kwa njia yoyote tabia ya mchakato unaounda wakati wowote.

Je, Trickle hawezi kufanya nini?

Kizuizi pekee, kwa kusema, ni kwamba trickle haitafanya kazi na programu zilizounganishwa kwa takwimu au jozi zilizo na vijiti vya SUID au SGID vilivyowekwa kwani hutumia uunganisho unaobadilika na upakiaji kujiweka kati ya mchakato wenye umbo na tundu lake la mtandao linalohusika. Trickle kisha hufanya kama wakala kati ya vipengele hivi viwili vya programu.

Kwa kuwa trickle haihitaji haki za mtumiaji mkuu ili kuendesha, watumiaji wanaweza kuweka mipaka yao ya trafiki. Kwa kuwa hii haiwezi kuhitajika, tutachunguza jinsi ya kuweka vikomo vya jumla ambavyo watumiaji wa mfumo hawawezi kuzidi. Kwa maneno mengine, watumiaji bado wataweza kudhibiti viwango vyao vya trafiki, lakini daima ndani ya mipaka iliyowekwa na msimamizi wa mfumo.

Katika nakala hii, tutaelezea jinsi ya kupunguza kipimo data cha mtandao kinachotumiwa na programu kwenye seva ya Linux kwa hila.

Ili kutengeneza trafiki inayohitajika, tutatumia ncftpput na ncftpget (zana zote zinapatikana kwa kusakinisha ncftp) kwenye mteja (seva ya CentOS - dev1: 192.168.0.17), na vsftpd kwenye seva (Debian - dev2: 192.168.0.15) kwa seva madhumuni ya maandamano. Maagizo sawa pia yanafanya kazi kwenye mifumo ya msingi ya RedHat, Fedora na Ubuntu.

Kufunga ncftp na vsftpd katika Linux

1. Kwa RHEL/CentOS 8/7, washa hazina ya EPEL. Vifurushi vya Ziada vya Enterprise Linux (EPEL) ni hifadhi ya programu ya ubora wa juu isiyolipishwa na chanzo huria inayodumishwa na mradi wa Fedora na inaoana kwa 100% na mabadiliko yake, kama vile Red Hat Enterprise Linux na CentOS. Zote mbili za trickle na ncftp zinapatikana kutoka kwa hazina hii.

2. Sakinisha ncftp kama ifuatavyo:

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

3. Sanidi seva ya FTP katika seva tofauti. Tafadhali kumbuka kuwa ingawa FTP asili yake haina usalama, bado inatumika sana katika hali ambazo usalama katika kupakia au kupakua faili hauhitajiki.

Tunaitumia katika makala haya ili kuonyesha fadhila za hila na kwa sababu inaonyesha viwango vya uhamisho katika stdout kwa mteja, na tutaacha mjadala wa iwapo inafaa au isitumike kwa tarehe na wakati mwingine.

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

Sasa, hariri /etc/vsftpd/vsftpd.conf faili kwenye seva ya FTP kama ifuatavyo:

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

Fanya mabadiliko yafuatayo:

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

Baada ya hayo, hakikisha kuanza vsftpd kwa kipindi chako cha sasa na kuiwasha kwa kuanza kiotomatiki kwenye buti zijazo:

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

4. Ikiwa ulichagua kusanidi seva ya FTP katika droplet ya CentOS/RHEL yenye funguo za SSH kwa ufikiaji wa mbali, utahitaji akaunti ya mtumiaji inayolindwa na nenosiri iliyo na saraka na ruhusa zinazofaa za kupakia na kupakua maudhui yanayohitajika NJE ya nyumba ya mzizi. saraka.

Kisha unaweza kuvinjari kwenye saraka yako ya nyumbani kwa kuingiza URL ifuatayo kwenye kivinjari chako. Dirisha la kuingia litatokea kukuuliza upate akaunti halali ya mtumiaji na nenosiri kwenye seva ya FTP.

ftp://192.168.0.15

Ikiwa uthibitishaji utafaulu, utaona yaliyomo kwenye saraka yako ya nyumbani. Baadaye katika mafunzo haya, utaweza kuonyesha upya ukurasa huo ili kuonyesha faili ambazo zimepakiwa wakati wa hatua za awali.

Jinsi ya Kufunga Trickle kwenye Linux

Sasa sakinisha trickle kupitia yum au apt.

Ili kuhakikisha usakinishaji uliofanikiwa, inachukuliwa kuwa mazoezi mazuri kuhakikisha kuwa vifurushi vilivyosakinishwa kwa sasa ni vya kisasa (kwa kutumia yum update) kabla ya kusakinisha zana yenyewe.

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

Thibitisha kama trickle itafanya kazi na binary unayotaka. Kama tulivyoelezea hapo awali, ujanja utafanya kazi tu na jozi kwa kutumia maktaba zinazobadilika au zilizoshirikiwa. Ili kuthibitisha kama tunaweza kutumia zana hii na programu fulani, tunaweza kutumia matumizi yanayojulikana sana ya ldd, ambapo ldd inasimamia orodha tegemezi zinazobadilika.

Hasa, tutatafuta uwepo wa glibc (maktaba ya GNU C) katika orodha ya utegemezi thabiti wa programu yoyote kwa sababu ni maktaba hiyo ambayo inafafanua simu za mfumo zinazohusika katika mawasiliano kupitia soketi.

Tekeleza amri ifuatayo dhidi ya binary uliyopewa ili kuona ikiwa trickle inaweza kutumika kuunda kipimo data chake:

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

Kwa mfano,

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

ambayo matokeo yake ni:

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

Kamba kati ya mabano kwenye pato inaweza kubadilika kutoka kwa mfumo hadi mfumo na hata kati ya utendakazi unaofuata wa amri sawa kwani inawakilisha anwani ya upakiaji ya maktaba kwenye kumbukumbu ya mwili.

Ikiwa amri iliyo hapo juu hairejeshi matokeo yoyote, inamaanisha kuwa binary iliendeshwa dhidi yake haitumii libc, na kwa hivyo trickle haiwezi kutumika kama kiboresha data katika hali hiyo.

Jifunze Jinsi ya Kutumia Trickle kwenye Linux

Matumizi ya msingi zaidi ya trickle ni katika hali ya pekee. Kwa kutumia mbinu hii, trickle hutumika kufafanua kwa uwazi kasi ya upakuaji na upakiaji wa programu fulani. Kama tulivyoelezea hapo awali, kwa ajili ya ufupi, tutatumia programu sawa kwa ajili ya vipimo vya kupakua na kupakia.

Tutalinganisha kasi ya upakuaji na upakiaji na bila kutumia hila. Chaguo la -d linaonyesha kasi ya upakuaji katika KB/s, huku alama ya -u inaelekeza kupunguza kasi ya upakiaji kwa kitengo sawa. Zaidi ya hayo, tutatumia alama ya -s, ambayo inabainisha kuwa mteremko unapaswa kuendeshwa katika hali ya pekee.

Sintaksia ya msingi ya kuendesha trickle katika hali ya pekee ni kama ifuatavyo:

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

Ili kutekeleza mifano ifuatayo peke yako, hakikisha kuwa na trickle na ncftp imewekwa kwenye mashine ya mteja (192.168.0.17 katika kesi yangu).

Tunatumia faili ya PDF ya Misingi ya Linux inayoweza kusambazwa bila malipo (inapatikana kutoka hapa) kwa majaribio yafuatayo.

Unaweza kupakua faili hii kwa saraka yako ya sasa ya kufanya kazi na amri ifuatayo:

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

Sintaksia ya kupakia faili kwenye seva yetu ya FTP bila hila ni kama ifuatavyo:

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

Ambapo /remote_directory ndio njia ya saraka ya upakiaji inayohusiana na nyumba ya jina la mtumiaji, na jina la faili la eneo ni faili katika saraka yako ya kazi ya sasa.

Hasa, bila hila tunapata kasi ya juu ya upakiaji ya 52.02 MB/s (tafadhali kumbuka kuwa hii sio wastani wa kasi ya upakiaji, lakini kilele cha kuanzia papo hapo), na faili hupakiwa karibu mara moja:

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

Pato:

LinuxFun.pdf:                                        	2.79 MB   52.02 MB/s

Kwa ujanja, tutapunguza kiwango cha uhamishaji cha upakiaji kuwa 5 KB/s. Kabla ya kupakia faili kwa mara ya pili, tunahitaji kuifuta kwenye saraka ya marudio; vinginevyo, ncftp itatufahamisha kuwa faili iliyo kwenye saraka lengwa ni ile ile tunayojaribu kupakia, na haitafanya uhamishaji:

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

Kisha:

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

Pato:

LinuxFun.pdf:                                        	2.79 MB	4.94 kB/s

Katika mfano hapo juu, tunaweza kuona kwamba kasi ya wastani ya upakiaji imeshuka hadi ~5 KB/s.

Kwanza, kumbuka kufuta PDF kutoka kwa saraka ya chanzo asili:

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

Tafadhali kumbuka kuwa kesi zifuatazo zitapakua faili ya mbali kwenye saraka ya sasa kwenye mashine ya mteja. Ukweli huu unaonyeshwa na kipindi (‘.‘) kinachotokea baada ya anwani ya IP ya seva ya FTP.

Bila hila:

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

Pato:

LinuxFun.pdf:                                        	2.79 MB  260.53 MB/s

Kwa ujanja, kupunguza kasi ya upakuaji kwa 20 KB/s:

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

Pato:

LinuxFun.pdf:                                        	2.79 MB   17.76 kB/s

Kuendesha Trickle katika Hali Inayosimamiwa [isiyodhibitiwa]

Trickle pia inaweza kufanya kazi katika hali isiyodhibitiwa, kufuatia msururu wa vigezo vilivyobainishwa katika /etc/trickled.conf. Faili hii inafafanua jinsi daemon inavyofanya kazi na kudhibiti ujanja.

Kwa kuongeza, ikiwa tunataka kuweka mipangilio ya kimataifa kutumika, kwa ujumla, na programu zote, tutahitaji kutumia amri ya hila. Amri hii huendesha daemon na huturuhusu kufafanua vikomo vya upakuaji na upakiaji ambavyo vitashirikiwa na programu zote zinazoendeshwa kwa hila bila sisi kuhitaji kubainisha vikomo kila wakati.

Kwa mfano, kukimbia:

# trickled -d 50 -u 10

Itasababisha kwamba kasi ya upakuaji na upakiaji wa programu yoyote inayoendeshwa kupitia mkunjo iwe mdogo hadi 30 KB/s na 10 KB/s, mtawalia.

Tafadhali kumbuka kuwa unaweza kuangalia wakati wowote ikiwa trickled inaendeshwa na kwa hoja zipi:

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

Pato:

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

Katika mfano huu tutatumia video ya Yeye ndiye zawadi inayoweza kusambazwa kwa uhuru, inayopatikana kwa kupakuliwa kutoka kwa kiungo hiki.

Hapo awali tutapakua faili hii kwenye saraka yako ya sasa ya kufanya kazi kwa amri ifuatayo:

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

Kwanza, tutaanzisha daemon iliyodanganywa na amri iliyoorodheshwa hapo juu:

# trickled -d 30 -u 10

Bila hila:

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

Pato:

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

Kwa hila:

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

Pato:

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

Kama tunavyoweza kuona katika matokeo hapo juu, kasi ya uhamishaji wa upakiaji imeshuka hadi ~10 KB/s.

Kama ilivyo katika Mfano wa 2, tutakuwa tukipakua faili kwenye saraka ya sasa ya kufanya kazi.

Bila hila:

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

Pato:

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

Kwa hila:

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

Pato:

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

Ambayo ni kwa mujibu wa kikomo cha upakuaji kilichowekwa mapema (30 KB/s).

Kumbuka: Kwamba mara tu daemoni imeanzishwa, hakuna haja ya kuweka mipaka ya mtu binafsi kwa kila programu inayotumia trickle.

Kama tulivyotaja hapo awali, mtu anaweza kubinafsisha zaidi uundaji wa kipimo data cha trickle kupitia trickled.conf. Sehemu ya kawaida katika faili hii inajumuisha yafuatayo:

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

Wapi,

  1. [huduma] inaonyesha jina la programu ambayo matumizi yake ya kipimo data tunakusudia kuunda.
  2. Kipaumbele huturuhusu kubainisha huduma ili kuwa na kipaumbele cha juu ikilinganishwa na nyingine, hivyo basi kutoruhusu programu moja kugusa kipimo data ambacho daemoni inadhibiti. Kadiri nambari inavyopungua, ndivyo kipimo data kinachotolewa kwa [huduma].
  3. Time-Smoothing [katika sekunde]: inafafanua ni kwa muda gani vipindi vilivyopita vitajaribu kuruhusu uhamishaji wa programu na/au kupokea data. Thamani ndogo zaidi (kitu kati ya masafa ya 0.1 - 1) ni bora kwa programu wasilianifu na zitasababisha kipindi chenye kuendelea (laini) huku zile kubwa kidogo (sekunde 1 - 10) ni bora kwa programu zinazohitaji uhamishaji wa wingi. Ikiwa hakuna thamani iliyobainishwa, chaguo-msingi (sekunde 5) hutumiwa.
  4. Kulainisha Urefu [katika KB]: wazo ni sawa na la Time-Smoothing, lakini kulingana na urefu wa operesheni ya I/O. Ikiwa hakuna thamani iliyobainishwa, chaguo-msingi (KB 10) hutumiwa.

Kubadilisha thamani za ulainishaji kutatafsiriwa katika programu iliyobainishwa na [huduma] kwa kutumia viwango vya uhamishaji ndani ya muda badala ya thamani isiyobadilika. Kwa bahati mbaya, hakuna fomula ya kukokotoa mipaka ya chini na ya juu ya muda huu kwani inategemea sana kila hali maalum ya kesi.

Ifuatayo ni sampuli ya faili ya trickled.conf katika mteja wa CentOS 7 (192.168.0.17):

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

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

Kwa kutumia usanidi huu, trickled itatapa miunganisho ya SSH juu ya uhamisho wa FTP. Kumbuka kuwa mchakato wa mwingiliano, kama vile SSH, hutumia thamani ndogo za kupunguza muda, ilhali huduma inayotuma uhamishaji data kwa wingi (FTP) hutumia thamani kubwa zaidi.

Thamani za kulainisha zinawajibika kwa kasi ya upakuaji na upakiaji katika mfano wetu wa awali usiolingana na thamani kamili iliyobainishwa na daemoni iliyochezewa lakini inasogezwa kwa muda karibu nayo.

[ Unaweza pia kupenda: Jinsi ya Kulinda na Kuimarisha Seva ya OpenSSH ]

Hitimisho

Katika nakala hii tumegundua jinsi ya kupunguza kipimo data kinachotumiwa na programu kutumia ujanja kwenye usambazaji wa msingi wa Fedora na Debian/derivatives. Kesi zingine zinazowezekana za utumiaji ni pamoja na, lakini sio mdogo kwa:

  • Kupunguza kasi ya upakuaji kupitia matumizi ya mfumo kama vile mteja wa torrent, kwa mfano.
  • Kupunguza kasi ambayo mfumo wako unaweza kusasishwa kupitia \\uwezo\\, ikiwa uko katika mfumo wa Debian), mfumo wa usimamizi wa kifurushi.
  • Iwapo seva yako iko nyuma ya proksi au ngome (au ni proksi au ngome yenyewe), unaweza kutumia hila kuweka vikomo vya upakuaji na upakiaji au kasi ya mawasiliano na wateja au nje.

Maswali na maoni yanakaribishwa sana. Jisikie huru kutumia fomu iliyo hapa chini ili kuwatumia njia yetu.