Giunsa Limitahan ang Bandwidth sa Network nga Gigamit sa mga Aplikasyon sa Linux System nga adunay Trickle


Nakasinati ka na ba mga sitwasyon diin ang usa ka aplikasyon nagdominar sa imong tanan nga bandwidth sa network? Kung nakaadto ka sa usa ka sitwasyon diin ang usa ka aplikasyon mikaon sa tanan nimong trapiko, nan imong hatagan og bili ang papel sa trickle bandwidth shaper application.

Bisan ikaw usa ka admin sa sistema o usa lang ka tiggamit sa Linux, kinahanglan nimo nga mahibal-an kung giunsa ang pagkontrol sa mga katulin sa pag-upload ug pag-download alang sa mga aplikasyon aron masiguro nga ang bandwidth sa imong network dili masunog sa usa ka aplikasyon.

[ Tingali ganahan ka usab: 16 Mapuslanon nga Bandwidth Monitoring Tools sa Pag-analisar sa Paggamit sa Network sa Linux ]

Unsa ang Trickle?

Ang Trickle usa ka himan sa paghulma sa bandwidth sa network nga nagtugot kanamo sa pagdumala sa mga katulin sa pag-upload ug pag-download sa mga aplikasyon aron mapugngan ang bisan kinsa sa kanila nga mag-hog sa tanan (o kadaghanan) sa magamit nga bandwidth.

Sa pipila ka mga pulong, ang trickle nagtugot kanimo nga makontrol ang rate sa trapiko sa network sa matag aplikasyon nga basehan, sukwahi sa kontrol sa matag user, nga mao ang klasiko nga pananglitan sa paghulma sa bandwidth sa usa ka palibot sa kliyente-server, ug tingali ang pag-setup nga labi pa kita. pamilyar sa.

Giunsa Paglihok ang Trickle?

Dugang pa, ang usa ka pag-agas makatabang kanato sa paghubit sa mga prayoridad sa kada-aplikasyon nga basehan aron kung ang kinatibuk-ang mga limitasyon gitakda na alang sa tibuok nga sistema, ang mga priority nga app makakuha gihapon og mas daghang bandwidth nga awtomatiko.

Aron matuman kini nga buluhaton, ang trickle nagtakda sa mga limitasyon sa trapiko sa paagi diin ang data gipadala ug nadawat gikan sa, mga socket gamit ang mga koneksyon sa TCP. Kinahanglan natong timan-an nga, gawas sa mga rate sa pagbalhin sa datos, ang trickle dili mag-usab sa bisan unsang paagi sa kinaiya sa proseso nga gihulma niini sa bisan unsang panahon.

Unsa ang Dili Mahimo ni Trickle?

Ang bugtong limitasyon, ingnon ta, mao nga ang trickle dili molihok sa statically linked nga mga aplikasyon o binary nga adunay SUID o SGID bits nga gitakda tungod kay kini naggamit sa dinamikong pag-link ug pagkarga aron ibutang ang kaugalingon tali sa porma nga proseso ug sa kauban nga network socket. Ang Trickle naglihok isip usa ka proxy tali niining duha ka sangkap sa software.

Tungod kay ang trickle wala magkinahanglan ug mga pribilehiyo sa superuser aron makadagan, ang mga tiggamit mahimo’g magtakda sa ilang kaugalingon nga mga limitasyon sa trapiko. Tungod kay dili kini gusto, among susihon kung giunsa ang pagtakda sa kinatibuk-ang mga limitasyon nga dili malapas sa mga tiggamit sa sistema. Sa laing pagkasulti, ang mga tiggamit makahimo gihapon sa pagdumala sa ilang mga rate sa trapiko, apan kanunay sulod sa mga utlanan nga gitakda sa system administrator.

Niini nga artikulo, among ipasabut kung giunsa limitahan ang bandwidth sa network nga gigamit sa mga aplikasyon sa usa ka server sa Linux nga adunay usa ka trickle.

Aron makamugna sa gikinahanglan nga trapiko, atong gamiton ang ncftpput ug ncftpget (ang duha ka himan anaa pinaagi sa pag-instalar sa ncftp) sa kliyente (CentOS server – dev1: 192.168.0.17), ug vsftpd sa server (Debian – dev2: 192.168.0.15) para sa mga katuyoan sa demonstrasyon. Ang parehas nga mga panudlo magamit usab sa mga sistema nga nakabase sa RedHat, Fedora ug Ubuntu.

Pag-instalar sa ncftp ug vsftpd sa Linux

1. Para sa RHEL/CentOS 8/7, i-enable ang EPEL repository. Ang Extra Packages for Enterprise Linux (EPEL) usa ka repositoryo sa taas nga kalidad nga libre ug open-source nga software nga gimintinar sa Fedora project ug 100% compatible sa mga spinoffs niini, sama sa Red Hat Enterprise Linux ug CentOS. Ang trickle ug ncftp magamit gikan sa kini nga repository.

2. I-install ang ncftp ingon sa mosunod:

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

3. Paghimo og FTP server sa lain nga server. Palihug timan-i nga bisan og ang FTP kay kinaiyanhon nga walay kasegurohan, kini kaylap nga gigamit sa mga kaso nga ang seguridad sa pag-upload o pag-download sa mga file wala gikinahanglan.

Gigamit namo kini niining artikuloha aron ihulagway ang mga bounties sa trickle ug tungod kay kini nagpakita sa mga rate sa pagbalhin sa stdout sa kliyente, ug biyaan namo ang diskusyon kung kinahanglan ba kini o dili gamiton sa laing petsa ug oras.

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

Karon, usba ang /etc/vsftpd/vsftpd.conf file sa FTP server sama sa mosunod:

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

Paghimo sa mosunod nga mga pagbag-o:

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

Pagkahuman niana, siguruha nga magsugod ang vsftpd alang sa imong karon nga sesyon ug aron mahimo kini alang sa awtomatikong pagsugod sa umaabot nga mga botas:

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

4. Kung gipili nimo nga i-set up ang FTP server sa usa ka CentOS/RHEL droplet nga adunay mga SSH key para sa hilit nga pag-access, kinahanglan nimo ang usa ka account sa user nga giprotektahan sa password nga adunay angay nga direktoryo ug mga pagtugot sa file alang sa pag-upload ug pag-download sa gitinguha nga sulud sa gawas sa balay sa gamut direktoryo.

Mahimo nimong tan-awon ang imong home directory pinaagi sa pagsulod sa mosunod nga URL sa imong browser. Ang usa ka window sa pag-login mo-pop up nga mag-aghat kanimo alang sa usa ka balido nga account sa gumagamit ug password sa FTP server.

ftp://192.168.0.15

Kung molampos ang panghimatuud, imong makita ang sulud sa imong direktoryo sa balay. Sa ulahi niini nga panudlo, mahimo nimong i-refresh ang panid aron ipakita ang mga file nga gi-upload sa miaging mga lakang.

Giunsa ang Pag-install sa Trickle sa Linux

Karon i-install ang trickle pinaagi sa yum o apt.

Aron masiguro ang usa ka malampuson nga pag-instalar, kini giisip nga maayong praktis aron masiguro nga ang kasamtangan nga gi-install nga mga pakete mao ang pinakabag-o (gamit ang yum update) sa dili pa i-install ang himan mismo.

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

Sutaa kung ang trickle molihok sa gusto nga binary. Sama sa among gipasabut sa sayo pa, ang trickle magamit ra sa mga binary gamit ang dinamiko o gipaambit nga mga librarya. Aron mapamatud-an kung mahimo ba naton gamiton kini nga himan sa usa ka piho nga aplikasyon, mahimo naton gamiton ang ilado nga ldd utility, diin ang ldd nagpasabut sa lista nga dinamikong mga dependency.

Sa partikular, atong pangitaon ang presensya sa glibc (ang GNU C library) sa listahan sa mga dinamikong dependency sa bisan unsang programa tungod kay kini mao ang tukma nga librarya nga naghubit sa sistema sa mga tawag nga nalambigit sa komunikasyon pinaagi sa mga socket.

Pagdalagan ang mosunud nga mando batok sa usa ka gihatag nga binary aron makita kung ang trickle magamit aron maporma ang bandwidth niini:

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

Pananglitan,

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

kansang output mao ang:

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

Ang hilo tali sa mga bracket sa output mahimong mausab gikan sa sistema ngadto sa sistema ug bisan tali sa sunod nga mga dagan sa samang sugo tungod kay kini nagrepresentar sa load address sa librarya sa pisikal nga memorya.

Kung ang mando sa ibabaw wala magbalik sa bisan unsang mga resulta, kini nagpasabut nga ang binary nga gipadagan niini wala mogamit libc, ug sa ingon ang trickle dili magamit ingon bandwidth shaper sa kana nga kaso.

Pagkat-on Giunsa Paggamit ang Trickle sa Linux

Ang labing sukaranan nga paggamit sa trickle anaa sa standalone mode. Gigamit kini nga pamaagi, gigamit ang trickle aron klaro nga mahibal-an ang mga katulin sa pag-download ug pag-upload sa usa ka gihatag nga aplikasyon. Sama sa among gipatin-aw sa sayo pa, alang sa kadali, gamiton namon ang parehas nga aplikasyon alang sa pag-download ug pag-upload sa mga pagsulay.

Atong itandi ang mga katulin sa pag-download ug pag-upload nga adunay ug wala gamit ang trickle. Ang -d nga opsyon nagpaila sa katulin sa pag-download sa KB/s, samtang ang -u nga bandila nagsulti sa trickle aron limitahan ang gikusgon sa pag-upload sa samang yunit. Dugang pa, atong gamiton ang -s nga bandila, nga nagtino nga ang trickle kinahanglan nga modagan sa standalone mode.

Ang sukaranan nga syntax aron modagan ang trickle sa standalone mode mao ang mosunod:

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

Aron mahimo ang mosunod nga mga pananglitan sa imong kaugalingon, siguruha nga adunay trickle ug ncftp nga na-install sa makina sa kliyente (192.168.0.17 sa akong kaso).

Gigamit namo ang libre nga maapod-apod nga Linux Fundamentals PDF file (anaa gikan dinhi) para sa mosunod nga mga pagsulay.

Mahimo nimong i-download kini nga file sa imong kasamtangan nga direktoryo sa pagtrabaho gamit ang mosunod nga sugo:

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

Ang syntax sa pag-upload og file sa among FTP server nga walay tulo mao ang mosunod:

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

Diin ang /remote_directory mao ang agianan sa upload directory nga may kalabotan sa balay sa username, ug ang local-filename usa ka file sa imong direktoryo karon nga nagtrabaho.

Sa espesipiko, sa walay pag-agas kita makakuha og peak upload speed nga 52.02 MB/s (palihug timan-i nga dili kini ang tinuod nga average nga upload speed, apan usa ka instant nga pagsugod sa peak), ug ang file ma-upload hapit dayon:

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

Output:

LinuxFun.pdf:                                        	2.79 MB   52.02 MB/s

Uban sa trickle, among limitahan ang upload transfer rate sa 5 KB/s. Sa dili pa i-upload ang file sa ikaduhang higayon, kinahanglan natong papason kini gikan sa destinasyon nga direktoryo; kung dili, ang ncftp magpahibalo kanamo nga ang file sa destinasyon nga direktoryo parehas nga among gisulayan nga i-upload, ug dili buhaton ang pagbalhin:

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

unya:

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

Output:

LinuxFun.pdf:                                        	2.79 MB	4.94 kB/s

Sa panig-ingnan sa ibabaw, atong makita nga ang kasagaran nga upload speed mikunhod ngadto sa ~5 KB/s.

Una, hinumdomi nga tangtangon ang PDF gikan sa orihinal nga direktoryo sa gigikanan:

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

Palihug timan-i nga ang mosunod nga mga kaso mag-download sa hilit nga file ngadto sa kasamtangan nga direktoryo sa makina sa kliyente. Kini nga kamatuoran gipakita sa panahon (‘.‘) nga makita human sa IP address sa FTP server.

Sa walay pagtulo:

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

Output:

LinuxFun.pdf:                                        	2.79 MB  260.53 MB/s

Uban sa trickle, limitahan ang katulin sa pag-download sa 20 KB/s:

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

Output:

LinuxFun.pdf:                                        	2.79 MB   17.76 kB/s

Pagdagan sa Trickle sa Supervised [unmanaged] Mode

Ang Trickle mahimo usab nga modagan sa dili madumala nga mode, nga nagsunod sa usa ka serye sa mga parameter nga gihubit sa /etc/trickled.conf. Kini nga payl naghubit kung giunsa paggawi ug pagdumala sa trickled (ang daemon).

Dugang pa, kung gusto namon nga itakda ang global nga mga setting nga gamiton, sa kinatibuk-an, sa tanan nga mga aplikasyon, kinahanglan namon nga gamiton ang trickled command. Kini nga sugo nagpadagan sa daemon ug nagtugot kanamo sa paghubit sa mga limitasyon sa pag-download ug pag-upload nga ipaambit sa tanan nga mga aplikasyon nga modagan pinaagi sa trickle nga dili kinahanglan nga itakda ang mga limitasyon matag higayon.

Pananglitan, pagdagan:

# trickled -d 50 -u 10

Mahimong hinungdan nga ang mga katulin sa pag-download ug pag-upload sa bisan unsang aplikasyon nga gipadagan pinaagi sa trickle limitado sa 30 KB/s ug 10 KB/s, matag usa.

Palihug timan-i nga mahimo nimong susihon bisan unsang oras kung nagdagan ang trickled ug kung unsang mga argumento:

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

Output:

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

Niini nga pananglitan atong gamiton ang libre nga maapod-apod nga Siya ang gasa nga video, nga ma-download gikan niini nga link.

Sa sinugdan among i-download kini nga file sa imong kasamtangan nga direktoryo sa pagtrabaho uban ang mosunod nga sugo:

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

Una, atong sugdan ang trickled daemon sa command nga gilista sa ibabaw:

# trickled -d 30 -u 10

Sa walay pagtulo:

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

Output:

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

Uban sa tulo:

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

Output:

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

Sama sa atong makita sa output sa ibabaw, ang upload transfer rate mikunhod ngadto sa ~10 KB/s.

Sama sa Pananglitan 2, among i-download ang file sa kasamtangan nga direktoryo sa pagtrabaho.

Sa walay pagtulo:

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

Output:

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

Uban sa tulo:

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

Output:

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

Nga nahiuyon sa limitasyon sa pag-download nga gitakda sa sayo pa (30 KB/s).

Mubo nga sulat: Nga sa higayon nga ang daemon nasugdan na, dili na kinahanglan nga magtakda og indibidwal nga mga limitasyon alang sa matag aplikasyon nga naggamit sa trickle.

Sama sa among nahisgutan sa sayo pa, ang usa mahimo pa nga ipasadya ang pagporma sa bandwidth sa trickle pinaagi sa trickled.conf. Ang kasagarang seksyon niini nga payl naglangkob sa mosunod:

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

asa,

    Ang
  1. [serbisyo] nagpaila sa ngalan sa aplikasyon kansang paggamit sa bandwidth gusto namong pormahon.
  2. Ang
  3. Priority nagtugot kanamo sa pagpiho sa usa ka serbisyo nga adunay mas taas nga prayoridad nga may kalabotan sa lain, sa ingon dili pagtugot sa usa ka aplikasyon nga mag-hog sa tanan nga bandwidth nga gidumala sa daemon. Kon mas ubos ang numero, mas daghan ang bandwidth nga gi-assign sa [serbisyo].
  4. Pagpahapsay sa Oras [sa mga segundo]: naghubit kung unsa nga mga agwat sa oras ang mosulay sa pagtugot sa aplikasyon sa pagbalhin ug/o pagdawat sa datos. Ang gagmay nga mga kantidad (usa ka butang tali sa sakup nga 0.1 - 1s) maayo alang sa mga interactive nga aplikasyon ug moresulta sa usa ka labi nga padayon (hapsay) nga sesyon samtang ang gamay nga mas dako nga kantidad (1 - 10 s) mas maayo alang sa mga aplikasyon nga nanginahanglan daghang pagbalhin. Kung walay bili ang gipiho, ang default (5 s) gigamit.
  5. Length-Smoothing [sa KB]: ang ideya parehas sa Time-Smoothing, pero base sa gitas-on sa usa ka I/O operation. Kung walay gipiho nga kantidad, gigamit ang default (10 KB).

Ang pagbag-o sa pagpahapsay nga mga kantidad maghubad sa aplikasyon nga gitakda sa [serbisyo] gamit ang mga rate sa pagbalhin sa sulod sa usa ka agwat imbes sa usa ka piho nga kantidad. Ikasubo, walay pormula sa pagkalkulo sa ubos ug taas nga limitasyon niini nga agwat tungod kay kini nag-agad sa matag partikular nga sitwasyon sa kaso.

Ang mosunod usa ka trickled.conf sample file sa CentOS 7 nga kliyente (192.168.0.17):

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

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

Gamit ang kini nga setup, ang trickled mag-una sa mga koneksyon sa SSH kaysa mga pagbalhin sa FTP. Timan-i nga ang usa ka interactive nga proseso, sama sa SSH, naggamit sa mas gamay nga time-smoothing values, samtang ang usa ka serbisyo nga naghimo sa bulk data transfers (FTP) naggamit ug mas dako nga bili.

Ang pagpahapsay nga mga kantidad ang responsable sa pag-download ug pag-upload sa mga katulin sa among miaging pananglitan nga dili katumbas sa eksaktong kantidad nga gitino sa trickled nga daemon apan naglihok sa usa ka agwat nga duol niini.

[ Tingali ganahan ka usab: Unsaon Pagsiguro ug Paggahi sa OpenSSH Server ]

Konklusyon

Sa kini nga artikulo among gisuhid kung giunsa limitahan ang bandwidth nga gigamit sa mga aplikasyon gamit ang trickle sa mga distribusyon nga nakabase sa Fedora ug Debian/derivatives. Ang uban nga posible nga mga kaso sa paggamit naglakip, apan dili limitado sa:

  • Paglimite sa katulin sa pag-download pinaagi sa usa ka sistema nga utility sama sa torrent client, pananglitan.
  • Paglimite sa gikusgon sa imong sistema mahimong ma-update pinaagi sa \\aptitude\\, kung naa ka sa Debian-based system), ang package management system.
  • Kon mahitabo nga ang imong server anaa sa luyo sa proxy o firewall (o ang proxy o firewall mismo), mahimo nimong gamiton ang trickle aron magtakda og mga limitasyon sa pag-download ug pag-upload o katulin sa komunikasyon sa mga kliyente o sa gawas.

Ang mga pangutana ug komento kay giabi-abi. Mobati nga gawasnon sa paggamit sa porma sa ubos sa pagpadala kanila sa among paagi.