Malá učebnice OpenFlow (14) – tabulky a OpenFlow pipeline

Část 14 z celkových 15 v seriálu Malá učebnice OpenFlow

V minulém díle jsme si hráli s OpenFlow tabulkami v rámci pipeline. Jak to celé funguje?

Pipeline

Všechny hardwarové implementace data plane a vlastně i ty softwarové pracují jako montážní linka. Jak jsme v minulém díle sami vyzkoušeli, přílišná univerzálnost (snaha v jednom kroku zvládnout úplně všechno) vede k vysoké složitosti, nízké efektivitě a nadměrné spotřebě zdrojů. Větvící se algoritmus má celkově nižší spotřebu a lépe se udržuje jeho stav. Právě takhle fungují síťové prvky – je to montážní linka, která ze vstupních surovin uplácá výsledek tak, že na každém stanovišti se něco odehraje. Podobně jako ve výrobní hale nemají implementace rády vracení se zpět, vše se buduje jednosměrně. To platí i pro velké množství implementací (zejména v ASIC), jen někdy máte možnost v nějaký okamžik poslat paket o dvě stanoviště dozadu (občas v software nebo NPU). OpenFlow pipeline je v aktuální verzi striktně jednosměrná – všechny skoky z jedné tabulky do jiné jsou dovoleny jen z nižší čísla na vyšší.

Data plane přijme paket a vypreparuje jeho hlavičky a obvykle samotná data bez hlaviček uloží kamsi do paměti (typicky cell-based buffer). K vykoštěným hlavičkám přidá některé další údaje, třeba číslo fyzického portu, z kterého paket přišel, a odešle do první tabulky s číslem 0. Jak jsme viděli, ta se může zabývat jen malou částí celého problému. Její rozhodnutí se projeví v paketu (předá slovo dál, modifikuje nějakou hlavičku, přidá nějakou výstupní akci) a tak to pokračuje až na konec celého řetězce. Skutečné zpracování v ASIC je dost složité a těch fází je tam hodně – o tom později v seriálu. Pro mnoho aktuálních nasazení vám výrobce dodal jistou míru abstrakce, takže se budete potýkat s jednotkami tabulek (a často dokonce jen jednou, což ovšem není efektivní).

To, že mít jednu tabulku není efektivní, můžete dobře vidět na prvcích s podporou jen OpenFlow 1.0. Ty mohou mít jen jednu tabulku a tak výrobce obvykle umožní programovat TCAM, protože ten je nejmocnější (umí nejvíce políček). Současně je ale nejdražší a tak je ho málo. Pokud máte v prvku třeba 1000 ACL, tak obvykle ten stejný model podporuje třeba 16K záznamů v IP tabulce a 64K v MAC tabulce. Ty zůstanou pro OpenFlow 1.0 zbytečně nevyužitelné.

Tabulka

Taková OpenFlow tabulka kromě identifikátoru obsahuje hlavně Match, tedy seznam polí (hlavičky, metadata) a jejich hodnoty (nebo wildcard) a k tomu přiřazená priorita (pakliže paket odpovídá vícero záznamům vybere se ten s vyšší prioritou). K tomuto se eviduje čitač a příslušné instrukce. Důležité je pravidlo, které má všechna pole nastavena jako ANY a prioritu má 0 – jde o table-miss. Co se má dát v okamžiku, kdy se paket nechytne ani na jedno pravidlo? Můžeme chtít paket zahodit, poslat do jiné tabulky, do kontroleru – podle toho co odpovídá našim záměrům. Dále u záznamu najdete hard a idle timeout a pár vlaječek s informacemi – například při zadávání pravidla si můžete říct, jestli má být kotroler explicitně informován v okamžiku, kdy je pravidlo zrušeno (třeba mu vyprší platnost). U pravidel ještě najdete sušenku, Cookie, jejímž smyslem je usnadnit SDN aplikacím nalezení pravidel, které je zajímají (v zásadě si aplikace může pravidlo „pojmenovat“ a podle této hodnoty ho pak snadno najít – a více pravidel se může jmenovat stejně).

Jak si povídají?

Jak už padlo, na začátku prvek vypreparuje hlavičky a přidá další informace. Tento set údajů je předáván mezi jednotlivými stanovišti montážní linky. Jak už jsme v minulých dílech rozebírali, ty mohou hlavičky rovnou modifikovat (Apply-Actions – změny se provedou ihned, takže další stanoviště už pracuje s novou hodnotou), přidat svoje návrhy na akce (Write-Actions – shromážděný zápis se provede před odesláním paket ven) nebo přidat metadata.

V příštím díle se podíváme na zjednodušené pipeline v reálných prvcích, později pak na hardcore implementaci v Broadcom ASIC a pak se budeme věnovat tomu, jak se v tom má vyznat vývojář aplikace.

Series Navigation<< Malá učebnice OpenFlow (13) – tabulky v praxi OpenvSwitchMalá učebnice OpenFlow (15) – tabulky s HP switche Comware >>
Similar posts
  • L3 a kontejnery bez overlay: Project ... Část 6 z celkových 6 v seriálu L3 a kontejnery bez overlay: Project Calico praktickyL3 a kontejnery bez overlay: Project Calico praktickyL3 a kontejnery bez overlay: Project Calico prakticky (1) – architekturaL3 a kontejnery bez overlay: Project Calico prakticky (2) – rozjezdL3 a kontejnery bez overlay: Project Calico prakticky (3) – BGPL3 a kontejnery bez [...]
  • L3 a kontejnery bez overlay: Project ... Část 5 z celkových 6 v seriálu L3 a kontejnery bez overlay: Project Calico praktickyL3 a kontejnery bez overlay: Project Calico praktickyL3 a kontejnery bez overlay: Project Calico prakticky (1) – architekturaL3 a kontejnery bez overlay: Project Calico prakticky (2) – rozjezdL3 a kontejnery bez overlay: Project Calico prakticky (3) – BGPL3 a kontejnery bez [...]
  • HPE Networking na GitHub – skri... Zaměstnanci HPE publikovali zajímavé skripty a celé knihovny jako open source v licenci Apache2, tedy k volnému použití včetně jakýchkoli modifikací. https://github.com/HPENetworking/scriptsonly Obsah se bude jistě dost rozšiřovat… přidejte si záložku [...]
  • L3 a kontejnery bez overlay: Project ... Část 4 z celkových 6 v seriálu L3 a kontejnery bez overlay: Project Calico praktickyL3 a kontejnery bez overlay: Project Calico praktickyL3 a kontejnery bez overlay: Project Calico prakticky (1) – architekturaL3 a kontejnery bez overlay: Project Calico prakticky (2) – rozjezdL3 a kontejnery bez overlay: Project Calico prakticky (3) – BGPL3 a kontejnery bez [...]
  • L3 a kontejnery bez overlay: Project ... Část 3 z celkových 6 v seriálu L3 a kontejnery bez overlay: Project Calico praktickyL3 a kontejnery bez overlay: Project Calico praktickyL3 a kontejnery bez overlay: Project Calico prakticky (1) – architekturaL3 a kontejnery bez overlay: Project Calico prakticky (2) – rozjezdL3 a kontejnery bez overlay: Project Calico prakticky (3) – BGPL3 a kontejnery bez [...]

No Comments Yet

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *