Plánovač sítě - Network scheduler

A plánovač sítě, také zvaný plánovač paketů, disciplína ve frontě, qdisc nebo algoritmus řazení do fronty, je rozhodce na uzel v přepínání paketů komunikační síť. Spravuje sekvenci síťové pakety ve vysílání a příjmu fronty z řadič síťového rozhraní. Existuje několik síťových plánovačů dostupných pro různé operační systémy, které implementují mnoho stávající sítě plánovací algoritmy.
Logika plánovače sítě rozhoduje o tom, který síťový paket předat dále. Síťový plánovač je přidružen k systému řazení do fronty a dočasně ukládá síťové pakety, dokud nejsou přeneseny. Systémy mohou mít jednu nebo více front, v takovém případě může každý obsahovat balíčky jedné tok, klasifikace nebo priorita.
V některých případech nemusí být možné naplánovat všechny přenosy v rámci omezení systému. V těchto případech je plánovač sítě zodpovědný za rozhodování o tom, který provoz předat a co získá upustil.
Terminologie a odpovědnosti
Plánovač sítě může mít odpovědnost za implementaci konkrétních řízení síťového provozu iniciativy. Řízení síťového provozu je zastřešujícím pojmem pro všechna opatření zaměřená na snížení přetížení, latence a ztráty paketů. Konkrétně aktivní správa front (AQM) je selektivní upuštění síťových paketů ve frontě k dosažení většího cíle, kterým je prevence nadměrného zahlcení sítě. Plánovač musí vybrat, které pakety se mají zahodit. Dopravní formování vyhlazuje požadavky na šířku pásma provozních toků zpožděním přenosových paketů, když jsou zařazeny do řady. Časový plán pro přenášené pakety určuje plánovač. kvalita služeb (QoS) je stanovení priorit provozu na základě třídy služby (Diferencované služby ) nebo vyhrazené připojení (Integrované služby ).
Algoritmy
Postupem času bylo vyvinuto mnoho oborů pro síťové fronty. Každý z nich poskytuje specifické přeskupování nebo rušení síťových paketů uvnitř různých přenosů nebo přijímání Nárazníky.[1][2]Disciplíny zařazování do fronty se běžně používají jako pokusy o kompenzaci různých síťových podmínek, jako je redukce latence pro určité třídy síťových paketů a obvykle se používají jako součást opatření QoS.[3][4][5]
Mezi příklady algoritmů vhodných pro správu síťového provozu patří:
- AVQ (adaptivní virtuální fronta )[6]
- CBQ (třídění na základě tříd ) disciplína
- CHOKe (CHOose a Keep pro responzivní toky, CHOose a Kill pro nereagující toky) je varianta ČERVENÉ
- CoDel (řízené zpoždění) a fronta Fair / Flow CoDel
- DORT (Common Applications Kept Enhanced), implementováno v linuxovém jádře[7]
- Férové fronty založené na úvěrech
- DRR (deficit každý s každým ) a DWRR, implementace např. napsal Patrick McHardy pro Linuxové jádro[8] a zveřejněna pod GNU General Public License.
- FaQ (FavourQueue)[9]
- FQ-PIE (Flow Queue Proportional Integral controller Enhanced)
- GCRA (obecný algoritmus buněčné rychlosti )
- HFF (těžký-hitter filtr )[10]
- HFSC (hierarchická křivka spravedlivých služeb )
- HTB (hierarchický token kbelík )[11]
- QFQ (rychlé spravedlivé řazení do fronty )[12]
- FQ (spravedlivé řazení do fronty ) a WFQ (vážené spravedlivé řazení do fronty )
- FIFO (první dovnitř, první ven )
- pkt_sched: fq: plánovač paketů spravedlivé fronty [13]
- Síťový emulátor NETEM[14]
- PIE (proporcionální integrální ovladač vylepšen )[15]
- ČERVENÉ (náhodná včasná detekce )
- ARED (pokročilá náhodná včasná detekce )
- GRED (zobecněná náhodná včasná detekce )
- RRED (robustní náhodná včasná detekce )
- WRED (vážená náhodná včasná detekce )
- RR (každý s každým ) a WRR (vážený každý s každým )
- SFB (stochastická světlá modrá ) a také RSFB (odolný SFB)
- SFQ (stochastická fronta spravedlnosti)[16]
- TBF (filtr kbelíku tokenů )[17]
- TEQL (triviální linkový ekvalizér )
Několik z výše uvedených bylo implementováno jako Moduly jádra Linuxu[18] a jsou volně dostupné.
Bufferbloat
Bufferbloat je fenomén v sítích s přepojováním paketů, v nichž je nadbytek ukládání do vyrovnávací paměti paketů způsobuje vysoké latence a variace zpoždění paketu. Bufferbloat lze řešit plánovačem sítě, který strategicky zahodí pakety, aby se předešlo zbytečně vysokému nevyřízenému bufferu. Mezi příklady patří CoDel a Náhodná včasná detekce.
Implementace
![]() | Tato sekce potřebuje expanzi. Můžete pomoci přidávat k tomu. (Říjen 2018) |
Linuxové jádro

Plánovač paketů linuxového jádra je nedílnou součástí síťového zásobníku linuxového jádra a spravuje vysílání a příjem prstenové nárazníky všech NIC, prací na vrstva 2 z OSI model a manipulace Ethernetové rámečky, například.
Plánovač paketů se konfiguruje pomocí volaného nástroje tc
(zkratka pro „řízení dopravy“). Jako výchozí disciplína řazení do fronty používá plánovač paketů implementaci FIFO s názvem pfifo_fast,[19] Ačkoli systemd protože jeho verze 217 mění výchozí disciplínu zařazování do fronty na fq_codel.[20]
The ifconfig
a ip
nástroje umožňují správcům systému konfigurovat velikosti vyrovnávací paměti txqueuelen
a rxqueuelen
pro každé zařízení zvlášť z hlediska počtu ethernetových rámců bez ohledu na jejich velikost. Síťový zásobník jádra Linuxu obsahuje několik dalších vyrovnávacích pamětí, které nejsou spravovány plánovačem sítě.[A]
Filtr paketů Berkeley filtry lze připojit ke klasifikátorům plánovače paketů. The eBPF funkce, kterou přináší jádro Linuxu ve verzi 4.1 v roce 2015, rozšiřuje klasické programovatelné klasifikátory BPF na eBPF.[21] Ty lze sestavit pomocí LLVM eBPF backend a načteno do běžícího jádra pomocí tc
nástroj.[22]
BSD a OpenBSD
ALTQ je implementace plánovače sítě pro BSD. Od verze OpenBSD verze 5.5 byl ALTQ nahrazen plánovačem HFSC.
Viz také
- Přetížení sítě
- Fronta (abstraktní datový typ)
- Teorie řazení
- Statistické multiplexování s časovým dělením
- Dopravní formování
- Klasifikace provozu
- Typ služby
Poznámky
- ^ Celková velikost všech nárazníků byla bodem kritiky ze strany Bufferbloat projekt, který poskytl dílčí řešení s CoDel, které bylo primárně testováno v OpenWrt.
Reference
- ^ „Řízení dopravy JAK: Beztřídní fronty (qdiscs)“. tldp.org. Citováno 24. listopadu 2013.
- ^ Saravanan Radhakrishnan (30. září 1999). „Podpora QoS v Linuxu: Řízení disciplín“. qos.ittc.ku.edu. Citováno 18. března 2014.
- ^ „Traffic Control HOWTO: Součásti Linux Traffic Control“. tldp.org. Citováno 24. listopadu 2013.
- ^ „Řízení dopravy JAK: Tradiční prvky řízení provozu“. tldp.org. Citováno 24. listopadu 2013.
- ^ „Řazení disciplín: pořadí přenosu a vyřazování paketů“ (PDF). tau.ac.il. 25. října 2006. Citováno 18. března 2014.
- ^ http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.108.4477&rep=rep1&type=pdf
- ^ "Nechte je běžet CAKE". LWN.net.
- ^ „DRR Linux kernel network scheduler module“. kernel.org. Citováno 2013-09-07.
- ^ „FavorQueue: Bezparametrová aktivní správa front ke zlepšení výkonu přenosu TCP“ (PDF).
- ^ "Filtr těžkých filtrů qdisc". kernel.org.
- ^ „HTB Linux kernel network scheduler module“. kernel.org. Citováno 2013-09-07.
- ^ „Modul síťového plánovače sítě QFQ Linuxu“. kernel.org. Citováno 2013-09-07.
- ^ „Fair Queue packet scheduler závazek k linuxovému jádru 3.12“.
- ^ „Network emulator Linux kernel network scheduler module“. kernel.org. Citováno 2013-09-07.
- ^ „Proporcionální integrální řadič vylepšený (PIE)“. kernel.org.
- ^ „SFQ Linux kernel network scheduler module“. kernel.org. Citováno 2013-09-07.
- ^ „TBF Linux kernel network scheduler module“. kernel.org. Citováno 2013-09-07.
- ^ „Plánovač sítě jádra Linuxu“. kernel.org. 2012-12-26. Citováno 2013-09-07.
- ^ „Linux Advanced Routing and Traffic Control HOWTO, Oddíl 9.2.1. Pfifo_fast“. lartc.org. 2012-05-19. Citováno 2014-09-19.
- ^ "systemd System and Service Manager: NEWS file". freedesktop.org. 2015-05-22. Citováno 2015-06-09.
- ^ „Linux kernel 4.1, Oddíl 11. Síťování“. kernelnewbies.org. 2015-06-21.
- ^ „Referenční příručka BPF a XDP“. Webové stránky dokumentace Cilium.