HFSC – Traffic Shapping – Pfsense

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.

1

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

1

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.

1

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.

2

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.

3

5) Poslední věcí je, že musíme fronty propojit pravidly(Rules).

Přesuneme se do Firewall a Rules.

4

6)Přesuneme se do záložky floating, kde musíme frontám přiřadit pravidla.

5

7)Po přidání pravidla stačí nastavit Action na Queue, přidat popisek a vhodný port na kterém fronta pracuje.

6

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:

7

Omezení torrentu přes Layer 7:

V balíčku Traffic Shaper se přesuneme do Layer 7, kde nastavíme:

1

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.

2

Pravidlo nastavíme na Pass přiřadíme mu port, ke které podfrontě bude přiřazen a který Layer7 vybereme.

3

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.