LINUXZONE






 >> Hlavní stránka

(1751/28.09.2010)


 >> Administrace

(161/05.08.2010)


 >> Literatura

(312/14.09.2010)


 >> Bezpečnost

(347/17.09.2010)


 >> Programování

(307/19.04.2010)


 >> Distribuce

(98/16.09.2010)


 >> Síťování

(86/03.06.2010)


 >> Lokalizace

(10/15.09.2004)


 >> Aplikace

(176/12.08.2010)


 >> Multimedia

(32/31.03.2006)


 >> Hardware

(45/02.03.2007)


 >> Začínáme

(229/09.09.2010)


 >> Aktuálně

(564/20.09.2010)


 >> RELAX

(213/28.09.2010)


 >> Jinde vyšlo

přehled ostatních serverů




 Coolhousing




Coolhousing - Vas poskytovatel dedikovanych serveru




 Přihlášení




Login:
Heslo:
 uložit v prohlížeči


Nejste-li ješte zaregistrováni, můžete tak učinit zde.





 Vyhledávání




Hledaný výraz:
v klíčových slovech
v titulku
v anotaci
v textu








 Reklama









 Servis




*   Vaše náměty a připomínky
Máte k Linuxzone.cz nějaké připomínky nebo náměty? Našli jste na stránkách chybu? Dejte nám o tom vědět pomocí formuláře nebo v diskuzi.
Komentářů: 60
*   Podpořte Linuxzone.cz
Chcete podpořit náš server umístěním odkazu nebo zveřejněním backendu? Zde najdete vše potřebné.
*   Pište pro Linuxzone.cz
Máte zájem podílet se na obsahu Linuxzone.cz ať už jako redaktoři nebo i jinak? Dejte nám o sobě vědět!





 Aktuálně z bezpečnosti




-- 
6.12.2005, 19:01
Na serveru informit.com vyšla ukázková kapitola týkající se práce s řetězci z knihy Secure Coding in C and C++. (lz)

-- 
3.12.2005, 12:34
Bugtraq: Format String Vulnerabilities in Perl Programs. (lz)

-- 
3.12.2005, 12:32
Linux Advisory Watch December 2nd 2005. (lz)

-- 
23.10.2005, 13:28
Rozhovor na téma klasické zálohování versus CDP. (lz)

-- 
23.10.2005, 13:24
Linux Advisory Watch October 21st 2005. (lz)

další >>





 Aktuálně o software




-- 
6.12.2005, 19:07
Potřebujete-li pod linuxem rozchodit bezdrát založený na čipsetech Broadcom 43xx, konečně existuje linuxový ovladač. (lz)

-- 
6.12.2005, 19:04
Byla uvolněna verze Xen 3.0.0 virtualizační technologie XEN. (lz)

-- 
6.12.2005, 18:59
Byla uvolněna verze X11R6.9/X11R7 RC 3 grafickérho rozhraní X Window System. (lz)

-- 
3.12.2005, 12:45
Co je nového okolo projektu Amanda (open source zálohovací software)? Více na osnews.com. (lz)

-- 
3.12.2005, 12:40
Jak to akuálně v linuxu vypadá s podporou SATA.. (lz)

další >>





 Aktuálně z IT




-- 
3.12.2005, 12:51
Novellu se daří prodej linuxových produktů, oproti loňskému roku se Novell dočkal výrazného nárůstu. (lz)

-- 
3.12.2005, 12:48
Třetí verzi licence GPL by měla být publikována během jara 2007. (lz)

-- 
23.10.2005, 13:20
V Peru nyní mají zákon, který umožňuje nasazení open source software ve vládní správě. (lz)

-- 
23.10.2005, 13:14
Proč se Microsoft bojí Google? (lz)

-- 
27.9.2005, 22:01
Peru má zákon podporující free software. (lz)

další >>





 Nejčtenější články









 Nejlepší články









 Anketa




Používáte nějaké rozšíření bezpečnostního modelu linuxového jádra?

Openwall (17%)

LIDS (11%)

Pax/Grsecurity (3%)

SELinux (6%)

RSBAC (1%)

jiné (1%)

používám standardní jádro (62%)







Linuxzone.cz - server o Linuxu pro programátory, administrátory a fanoušky.
Provozuje společnost Impossible.
ISSN: 1213-8738





Praktické využití CBQ

Stále rostoucí požadavky na přenosovou kapacitu sítí, směřují ke zvyšování nákladů na provoz. Jistou alternativou jak čelit tomuto fenoménu, je zvýšení efektivity využívání již existujících technologií. Jednou z možností jak toho dosáhnout je vyhrazení respektive garantování části přenosové kapacity pomocí CBQ (Class-Based Queueing) pro přenos těch dat, u kterých je z pohledu uživatele nízká přenosová rychlost nejméně přijatelná.

Pozn. redakce: rozšířená a upravená verze původního článku.

Úvod

Tento článek si neklade za cíl podrobně rozebírat teorii CBQ, o tom už bylo publikováno mnoho [1], nýbrž na jednoduchém praktickém příkladu vysvětlit postup návrhu a konfigurace.

Požadavky na software

Pro úspěšné zprovoznění CBQ je třeba mít nainstalován následující software:

  • kernel 2.2.x nebo 2.4.x s přeloženou podporou CBQ,
  • konfigurační utilitu tc,
  • inicializační skript cbq.init (není podmínkou, můžete si napsat vlastní nebo volat tc ručně z konzole).

Podpora CBQ v kernelech 2.2.x a 2.4.x

Pro obě verze kernelu (2.2.x a 2.4.x) jsou volby pro překlad stejné. Osobně doporučuji pro experimentování přeložit kernel se všemi volbami v sekci QoS and/or fair queueing. Nicméně pro náš příklad potřebujeme minimálně následující:

CONFIG_NET_SCHED=y
CONFIG_NETLINK=y
CONFIG_RTNETLINK=y
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_CLS=y
CONFIG_NET_CLS_U32=m

To znamená, že pokud máte vše správně přeloženo, měli byste mít k dispozici moduly sch_cbq.o, sch_sfq.o, sch_tbf.o a cls_u32.o.

Konfigurační utilita tc

Konfigurace CBQ se provádí utilitkou tc. Tato utilita Alexeje Kuznětsova je součástí balíku iproute a pokud ji vaše instalace neobsahuje, můžete si ji stáhnout například zde [2].

Inicializační skript cbq.init

A konečně posledním prostředkem k provozování CBQ je inicializační skript. Tento skript volá již zmíněnou utilitu tc s příslušnými parametry. Nejrozšířenějím skriptem tohoto druhu je cbq.init Pavla Golubeva. Pokud se nerozhodnete napsat si vlastní, tak si jej můžete stáhnout zde [3].

Popis konfigurace

Pro podrobné vysvětlení teorie CBQ doporučuji prostudovat dokument [4]. Zde se omezíme pouze na konfiguraci cbq.init. Ta je obsažena v konfiguračních souborech v adresáři /etc/sysconfig/cbq. Syntaxe názvů těchto souborů je následující:

cbq-XXXX.název
kde XXXX jsou dva bajty, určující identifikaci (id) třídy a název je libovolný popis.
Poznámka: při volbě id dbejte na to, aby pořadí tříd odpovídalo prioritám jednotlivých tříd, protože pořadí vytváření tříd je podle jejich id. A pokud se vytvoří třída s nižší prioritou před třídou s vyšší prioritou, může to způsobovat problémy (toto neplatí pro třídy s volbou LEAF=none).

Následuje popis nejdůležitějších voleb (jejich kompletní výpis najdete v úvodní části cbq.init):

DEVICE=ifname,bandwidth,weight
ifname: název rozhraní na kterém se řídí provoz,
bandwidth: fyzická propustnost rozhraní,
weight: 1/10 fyzické propustnosti rozhraní.
RATE
požadovaná rychlost pro třídu.
WEIGHT
1/10 požadované rychlosti pro třídu.
PRIO
priorita třídy od 1 do 8 (nižší číslo znamená vyšší prioritu).
LEAF=none|tbf|sfq
nepovinná volba, zvolení queueing discipline, pokud není specifikováno jinak, používá se tbf. Pro třídy propůjčující svou kapacitu použijte none, pro třídy půjčující si kapacitu od nadřazené třídy použijte sfq.
PARENT
nepovinná volba, určuje id nadřazené třídy v případě, že se od ní bude půjčovat kapacita.
QUANTUM
při použití sfq specifikuje velikost paketu.
BOUNDED=yes|no
nepovinná volba, zakazuje půjčování kapacity od nadřízené třídy (parent), implicitně yes.
RULE=srcip/prefix:srcport,dstip/prefix:dstport
nastavení filtru, určuje, které packety patří do této třídy.

Příklad

A nyní si vše ukážeme na praktickém příkladu, který si jistě dokážete hravě představit. Jste pracovníkem ve firmě XY, která využívá malou LAN připojenou do internetu přes linuxový router linkou 128 kbps (viz obr. 1). Do LAN jsou připojeny pracovní stanice uživatelů. Na těchto stanicích pracujete vy (pro ilustraci vám budeme říkat technik), který se zoufale snažíte přes ssh spojení pracovat na serveru kdesi v internetu a pak několik dalších uživatelů, kteří surfují, stahují mp3, mailují a poslouchají internetové rádio (těm budeme čistě po ilustraci říkat obchodníci). Na vaši žádost o posílení linky do internetu jste od vedení dostal zamítavou odpověd, prý z ekonomickych důvodů... Takže pokud máte rootovské heslo na váš linuxový router, tak vzhůru na obchodníky!

Vaším cílem je nakonfigurovat CBQ na eth1 vašeho routeru tak, aby se pro pakety, které přicházejí z internetu z portu 22 (ssh), garantovala propustnost 64 kbps. V praxi to znamená, že zřídíme třídu pro celou kapacitu internetové linky (A na obr.2), která nebude mít nastaven žádný filtr, ale bude jen propůjčovat svojí nevyužitou kapacitu dvěma podtřídám. Jedna podtřída bude definovat rychlost pro ssh (B na obr.2), druhá pro veškerý ostatní provoz (C na obr.2).

V adresáři /etc/sysconfig/cbq vytvořte následující čtyři soubory:

cbq-1001.internet.all
definuje kapacitu linky do internetu, která se propůjčuje podřízeným třídám:
DEVICE=eth1,10Mbit,1Mbit
RATE=128Kbit
WEIGHT=13Kbit
PRIO=8
LEAF=none
cbq-3001.local
tento soubor sice nepatří do popisovaného příkladu, ale pokud na linuxovém routeru provozujete jakékoliv aplikační služby, tak je žádoucí, aby se provoz mezi routerem a LAN nijak nebrzdil (následující konfigurace předpokládá, že IP adresa eth1 je 10.0.0.1):
DEVICE=eth1,10Mbit,1Mbit
RATE=10Mbit
WEIGHT=1Mbit
PRIO=3
RULE=10.0.0.1/32,10.0.0.0/24
cbq-4001.internet.ssh
zde definujete propustnost pro ssh. Tato definice zachytává veškeré pakety z portu 22 (ssh) do LAN. Rychlost je zde sice definována 64 kbps, ale protože je zde odkaz na cbq-1001.internet.all (direktiva PARENT=1001), tak výsledná rychlost bude od 64 do 128 kbps dle vytížení linky do internetu:
DEVICE=eth1,10Mbit,1Mbit
RATE=64Kbit
WEIGHT=6Kbit
PRIO=4
PARENT=1001
LEAF=sfq
QUANTUM=1514
PERTURB=15
BOUNDED=no
RULE=:22,10.0.0.0/24
cbq-5001.internet.other
tak už zbývá jen definovat pravidla pro všechny ostatní pakety, které nespadají do výše uvedených pravidel. Všimněte si, že tato definice má nižší prioritu (PRIO=5) než cbq-4001.internet.ssh. Je to proto, že množina paketů z portu 22 do LAN je podmnožinou všech paketů do LAN. Kdyby tomu tak nebylo (například byste místo garantování rychlosti pro ssh versus zbytek chtěl garantovat rychlost pro technické oddělení versus obchodní oddělení dle cílových IP), tak by mohla být priorita stejná jako u cbq-4001.internet.ssh:
DEVICE=eth1,10Mbit,1Mbit
RATE=64Kbit
WEIGHT=6Kbit
PRIO=5
PARENT=1001
LEAF=sfq
QUANTUM=1514
PERTURB=15
BOUNDED=no
RULE=10.0.0.0/24

Konfigurační soubory máte vytvořeny. Nyní můžete spustit inicializační script /etc/rc.d/init.d/cbq.init start invalidate

Pro kontrolu a ladění funkčnosti je možné opět využít utilitu tc. Například zadáním tc -s class show dev eth1 obdržíte výpis jednotlivých tříd, včetně počtu přenesených paketů, podle kterého se dá snadno určit zda CBQ pracuje podle vašich představ.

Odkazy na použité zdroje

  1. Teorie CBQ:http://www.aciri.org/floyd/cbq.html
  2. Balík iproute:ftp://ftp.inr.ac.ru/ip-routing/
  3. Skript cbq.init:https://sourceforge.net/projects/cbqinit
  4. Floyd, S., and Jacobson, V., Link-sharing and Resource Management Models for Packet Networks:http://www.icir.org/floyd/papers/link.pdf

Autor: Petr Kadlec, 27. 03. 2002, 12:00
Sekce Síťování, Komentářů: 10
Průměrné hodnocení: 0,15

o Poslat e-mailem
o Tisk článku
o Uložit do profilu


 Přispějte nám




Líbil se Vám tento článek? Můžete ho ocenit zavoláním na tel. číslo 906 460 134.
Cena hovoru za 1 minutu je 46 Kč.





 Hodnocení článku




Článek hodnotím jako:  [1] výborný   [2] dobrý   [3] průměr   [4] špatný   [5] hrůza  





 Komentáře




--

Fuzo, 10. 12. 2004 15:56
LAMA












--

Mates, 06. 07. 2003 16:47
A co proxy?












--

jaykay, 20. 05. 2003 16:49
CBQ přes Bridge???












--

Boris, 11. 04. 2003 11:47
CBQ je super












--

Tomáš Macourek, 30. 01. 2003 09:26
jak nastavit základní rychlost












--

Glottis, 14. 12. 2002 20:20
local mi nefunguje tak jak ma












--

Spec, 06. 06. 2002 12:06
Jsem zacatecnik a taky jsem to moc nepochopil












--

Pavel, 21. 04. 2002 20:13
Moc jsem to nepochopil












--

Jarda, 28. 03. 2002 11:33
pokracovani












--

Václav Kořánek, 18. 03. 2002 08:24
popis parametrů + nedokončený odstavec















PŘIDAT KOMENTÁŘ ZOBRAZ VŠE >>










2002 © Impossible, s.r.o.   >> Kontaktujte redakci >> Právní upozornění >> Reklama