HFSC – Hierarchical fair-service curve
Jedná se o plánovací algoritmus, který umí nejlépé podporovat – hierarchical link-sharing service (vztah mezi nadřízeností a dopřízeností)
– guaranteed real-time service (garantovaný realný čas)
– decoupled delay and bandwidth allocation (oddělené zpoždění a přidělování šířky pásma)
V PfSense se jedná o nastavení a přiřezení různých priorit k různým rozhraním jak nám ukáže tento obrázek.
Vidíme, že máme internet rozdělený do 3. skupin (A,B, nastavené určité priority C má nejvyšší a A má nejnižší.
Dále jsou tyto skupiny dále rozděleny a mají přiřazený určitý limit. Dohromady tady máme 4Mb/s sít rozdělenou tak, aby každý měl svou prioritu(což znamená pokud bude síť přehlcena tak síť s vyšší přioritou pojede bez problémů a ostatní sítě budou omezeny) a také svůj limit pro stahování a uplouadování.
Praktické použití v Pfsense:
Princip použití – Traffic Shapper používáme pro nastavení rozhraní(LAN,WAN). Např: rozhraní LAN si rozdělíme na podfrontu Internet, které nastavíme určitou rychlost a pod ní nastavíme ještě HTTP a SSH, a každé znich přiřadíme prioritu a kolik procent z jejich nadřazení sítě Interent si můžou vzít.
1) V záložce Firewall se přesenume do Traffic Shapper
2)Ve výchozím nastavení máme v záložce nastavené dvě rozhraní (LAN a WAN), jako vzorový příklad si ukážeme jak nastavit http a ssh pro Pfsense.
Vybereme si rozhraní LAN, zde se můžeme nastavit:
Scheduler Type – nachází se zde HFSC(Hierarchical Fair Service Curve), CBQ(Class Based Queueing – můžeme vytvořit stromovou hierarchii tříd a každé přiřadit prioritu a omezit šířku pásma), PRIQ(Priority Queueing -je nejednodušší formou nastavování priorit, princip zavísí na prioritách, čím vyšší prioritu má fronta tím dříve bude zpracována),
Bandwidth – Šířka pásma
Queue Limit – pakety za sekundu
TBR size – Upravuje velikost v bajtech pro bucker reglátor, pokud není nastaveno, nastaví se sama podle šířky pásma.
A políčka uložit, přidat další podfronty, nebo vymazat.
3) Po přidání další podsítě, můžeme nastavit další parametry:
Queue Name – Název fronty
Priority – Priorita fronty, čím vyšší tím víc bude upřednostňován (rozmezí 0-7)
Scheduler options – Random Early Detection(Používá se pouze pro TCP), Random Early Detection In and Out(Ve frontě jsou kontrolovány pakety), Explicit Congestion Notification(umožňuje odesílání kontrolních zpráv).
Description – popisek
Bandwidth – šířka pásma
Service Curve – m1(maximální rychlost)[musíme zadat jednotky např.Mb], m2(minimální rychlost)[musíme zadat jednotky např.Mb], d(kontrola pásma v milisekundách)[automaticky v ms]
A políčka uložit, přidat další podfrontu, nebo vymazat.
4) Po přídání dalších podfront(HTTP a SSH)
Jsou naše nastavení stejná jako i fronty Internet, ale šířku pásmu můžeme nastavit v procentecha zadat kolik procent z nadfronty může fronta používat.
Příklad nastavení dalších podfront.
5) Poslední věcí je, že musíme fronty propojit pravidly(Rules).
Přesuneme se do Firewall a Rules.
6)Přesuneme se do záložky floating, kde musíme frontám přiřadit pravidla.
7)Po přidání pravidla stačí nastavit Action na Queue, přidat popisek a vhodný port na kterém fronta pracuje.
Ještě ve spodní části v záložce Queue musíme nadefinovat odkud kam naše fronta funguje (Internet, HTTP)
Zde je příklad pravidel:
Omezení torrentu přes Layer 7:
V balíčku Traffic Shaper se přesuneme do Layer 7, kde nastavíme:
Enable/Disable – Povolíme nebo zakážáme
Name – Jméno
Description – Popisek
Rule(s) – Protocol (Zde vybereme co má bát náš limiter nastaven např. bittorrent), Structure (nastavení jestli chceme zakázat nebo omezit a přidek k nějaké naší podfrontě např. SSH), Behaviour (přiřazení k podfrontě)
Musíme Layer 7 přiřadit do pravidel (Rules) a vytvořit nové pravidlo.
Pravidlo nastavíme na Pass přiřadíme mu port, ke které podfrontě bude přiřazen a který Layer7 vybereme.
Vysvětlení: Torrent funguje na stejném portu jako HTTP, ale chceme-li omezit ho více než HTP stahování tak musíme vytvořit Layer 7, a v pravidlech ho nastavit k podfrontě SSH, které má jiné omezení než podfronta HTTP, ale musíme nastavit, že pracuje na stejním portu jako HTTP.