Trickle: rozdělte své připojení

29. 7. 2008
Doba čtení: 3 minuty

Sdílet

Určitě se vám stalo, že jste potřebovali spustit nějakou aplikaci, která ale příliš vytěžovala vaše internetové připojení. Vy jste ale ještě potřebovali dělat s internetem něco jiného a program neměl správnou volbu, která by jej zpomalila. Trickle vám pomůže rozdělit připojení mezi jednotlivé aplikace.

Co je Trickle?

Jistě se vám to někdy stalo: potřebovali jste spustit nějakou aplikaci, která komunikuje po internetu, ale zároveň jste nechtěli, aby „zkonzumovala“ veškerou šířku pásma vašeho připojení.

U některých programů je možno nastavit, jak moc mohou linku využívat, existuje ale i mnoho takových, které tuto volbu nemají a běžně tak neexistuje způsob, jak je omezit.

Program s jednoduchým názvem Trickle. Ten dokáže téměř jakékoliv konkrétní aplikaci omezit rychlost komunikace se zbytkem světa. Původně byla aplikace vyvinuta pro OpenBSD, běží ale i na dalších unixových systémech: Solaris, NetBSD, FreeBSD a Linux.

Typicky se takový postup může hodit ve chvíli, kdy chcete stahovat větší množství dat skrze BitTorrent, ale nechcete omezovat zbytek sítě či svou vlastní linku, kterou potřebujete používat pro další práci. Pokud neexistuje jiná možnost, můžete použít výhod Trickle.

Jak to funguje?

Trickle využívá výhod dynamického linkování knihoven a především „preloadingu“ funkcí. Pomocí této techniky je aplikace schopná vnutit se mezi aplikaci a systémové knihovny a implementovat vlastní funkce pro komunikační API.

Pokud se to stane, prochází veškerý následující datový tok právě přes Trickle, který dokáže tekoucí data sledovat a především ovlivňovat. Dokáže plynule „zaškrcovat“ TCP komunikaci s aplikací a tím ovlivňovat maximální rychlost, jakou program komunikuje a zatěžuje linku.

Výhody a nevýhody

Z výše zmíněného plynou zároveň výhody i nevýhoda programu Trickle.

Výhody:

  • je naprosto univerzální,
  • nevyžaduje práva administrátora,
  • velmi jednoduché použití.

Nevýhoda:

  • nefunguje u staticky linkovaných aplikací.

Jdeme se omezit

Program pravděpodobně naleznete ve své distribuci, pokud ne, budete jej muset přeložit. Zdrojové kódy jsou ke stažení na domovské stránce.

Použití je poměrně jednoduché. Trickle umí běžet samostatně nebo pod dohledem společného démona (trickled). Zatím si popíšeme první, jednodušší variantu. Zajímat nás bude především parametr -d jako download, za který přidáme ještě číslo udávající maximální rychlost downloadu (v KiB/s), kterou může aplikace využít. Dále uvedeme samotný program (i s parametry), který má Trickle obhospodařit. Příklad:

$ trickle -d 50 ftp stroj.sit.cz

Program se normálně spustí a začne pracovat, pokud začne komunikovat s okolím, bude jeho rychlost shora omezena 50 KiB/s. Bohužel tuto hodnotu už nemůžeme během používání aplikace nijak měnit.

Pokud si chcete Trickle jen tak vyzkoušet, můžete použít například wget, který, ačkoliv má sám parametr pro omezení rychlosti, se nechá zpomalit a navíc vám v reálném čase ukáže, jak rychle stahuje.

Kromě této nejjednodušší možnosti můžeme stejně omezit také upload (parametr -u) a nastavit některé další detaily jako intervaly sledování přenosu (pro plynulost běhu) a další.

Démon trickled

Už jsem zmínil možnost centrální správy jednotlivých trickle sezení pomocí centrálního démona. Ten může běžet na stejném stroji jako klienti, kteří jej využívají, může být ale také provozován po vnitřní síti a obsluhovat tak software na mnoha počítačích naráz.

Další příklad: budeme chtít spustit několik různých aplikací pro stahování najednou, ale celkově chceme akci přidělit maximálně 70 KiB/s. Nechceme ale sledovat, kdy které aplikace končí a přerozdělovat složitě zbývající pásmo ostatním. Pustíme tak démona:

$ trickled -d 70

a následně pustíme stahování

$ trickle wget jeden_soubor
$ trickle wget druhy_soubor
$ trickle wget treti_soubor
...

Vše bude fungovat dle očekávání: klienti se dotáží démona, kolik pásma jim přidělí a podle toho se omezí. Dotazování probíhá dynamicky, takže můžeme libovolně jednotlivé úlohy přidávat či odebírat a démon bude stále hlídat celkový strop, který nebude překročen.

Složitější dělení

Výše uvedený příklad ale předpokládá, že všem omezovaným procesům přidělíme stejnou část pásma. Můžeme ale chtít některým aplikacím dát více a některým méně. Proto existuje konfigurační soubor trickled.conf, který je poměrně jednoduchý a dělí procesy podle aplikací. Může vypadat například takto:

bitcoin školení listopad 24

[ssh]
 Priority = 1
 Time-Smoothing = 0.1
 Length-Smoothing = 2
[ftp]
 Priority = 8
 Time-Smoothing = 5
 Length-Smoothing = 20

Cestu k tomuto souboru předáváme démonovi pomocí parametru -c. Vidíte, že ssh dostává vyšší prioritu a kratší čas sledování toku, což je nastavení vhodnější pro interaktivní aplikace. Naopak u ftp je plynulost a rychlost přenosu méně podstatná, takže dostává méně pozornosti a nižší prioritu.

Závěrem

Trickle nabízí velmi jednoduchou cestu omezování rychlostí jednotlivých aplikací, i celých skupin programů, které by neměly využívat vaše připojení k internetu naplno. Velkou výhodou je, že jej může obsluhovat i běžný uživatel bez práv roota a jeho použití je navíc velmi snadné.

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.