Az internet ökoszisztémája és evolúciója
Tartalom Az IP routerek felépítése routerek általános felépítése, linecard/ ackplane/control, a csomagtováítás menete, IP router generációk FIB keresés a legspecifikusa prefix keresési feladat hardver és szoftver megvalósítások: a TCAMek, a prefix fa és FIB aggregáció
Az IP routerek felépítése
Routerek: csomagtováítás lépései IP csomag ellenőrzése: formátum, verzió, headerhossz, opciók, fejrész-ellenőrzőösszeg FIB keresés: a cél IP címéhez tartozó next-hop keresése a FIBen A legspecifikusa ejegyzést keressük! TTL állítása: ha TTL=0 a csomag eldoása és ICMP üzenet a küldőnek, egyéként TTL TTL Fejrész-ellenőrzőösszeg újraszámolása Opcionálisan: fragmentáció, source routing, st.
Nagyteljesítményű routerek Cisco GSR 246 Kapacitás: 60 G/s Felvett teljesítmény: 4.2kW Kapacitás: 80 G/s Felvett teljesítmény: 2.6kW Juniper M60
Routerek típusai (RFC4098) Edge/order router: ASek közti forgalom továítása más ASek edge routerei felé (ibgp+ebgp+igp) Core router: ASen elüli router POPok közti forgalomátvitelre (IGP+iBGP) Access router: az Internet edge forgalmának koncentrációja a core felé Access AS 2 Core Edge AS 3 AS
Routerek típusai Soft router: szoftveren, általános célú CPUn megvalósított router például PC + Linux + Quagga kise teljesítmény (Intel DPDK!) főleg kis ISP-k, IXP-k(!), BGP monitorok HW router: speciális célú HW-t tartalmazó nagy teljesítményű router nagy ISPk core és edge routerei sok előfizetőt kiszolgáló access routerek
Általános felépítés Vezérlőkártya menedzsment, CLI, konfiguráció, st Control CPU DRAM Control plane Data plane linecard # linecard #3 interfész ASIC SRAM ASIC SRAM interfész linecard #2 linecard #4 interfész ASIC SRAM Interconnect ASIC SRAM interfész
Általános felépítés Vezérlőkártya: a router logikája routing protokollok futtatása, menedzsment hozzáférés (CLI (Command Line Interface), SNMP, st.), monitoring, extra szolgáltatások vezérli az interconnect-et, eállítja a FIBet általános célú CPU/DRAM, néha általános célú operációs rendszer (pl. Linux!) Vezérlőkártya menedzsment, CLI, konfiguráció, st Control CPU DRAM Control plane
Általános felépítés Interfészkártya (linecard): csomag adás/vétel egy vagy tö fizikai csatoló (interfész) a linkre (Serial/FastEthernet/GigaitEthernet) alapvető csomagtováítási funkciók speciális célú HW és gyors statikus memória legtö router ővíthető új kártyákkal linecard interfész ASIC, network processzor, st. SRAM
Általános felépítés Interconnect/ackplane: kapcsolólogika interfészkártyák és a control CPU közti kommunikáció + pufferelés osztott usz/első switch (akár Ethernet) input puffer (head of line locking!)/output puffer/osztott memória Interconnect
Fast path Fast path: a csomagtováítás Data plane-en megvalósított lépései (nagy seesség!) HWen könnyen megvalósítható műveletek célcím olvasása, ellenőrzőösszeg számítása sokszor a FIB keresés is (de ehhez le kell tölteni a FIBeket az interfészkártyákra!) linecard # Interconnect linecard #3 Data plane interfész ASIC SRAM ASIC SRAM interfész linecard #2 linecard #4 interfész ASIC SRAM ASIC SRAM interfész
Slow path Slow path: a vezérlősík eavatkozását igénylő onyolulta funkciók (csökkent seesség!) IP opciók, fragmentáció, protokollüzenetek kezelése, ARP, ICMP generálás, st. Vezérlőkártya CPU RAM Control plane linecard linecard Data plane linecard linecard
Routerek fejlődése:. generáció A hálózati csatoló kivételével minden a slow path-en, minden csomag igényli a vezérlősík eavatkozását adatusz CPU FIB Puffer memória linecard # linecard #2 linecard #3 MAC MAC MAC interfész interfész interfész
Routerek fejlődése: 2. generáció Az interfészkártyán: input puffer + FIB cache Fast path továítás, ha a célcím a cache-en adatusz CPU FIB Puffer memória linecard # FIB cache Input queue MAC linecard #2 FIB cache Input queue MAC linecard #3 FIB cache Input queue MAC interfész interfész interfész
Routerek fejlődése: 3. generáció Az interfészkártyán a teljes FIB, szinte minden csomag marad a fast path-en A CPU csak egy másik kártya a chassis-en switched ackplane linecard # CPU card linecard #2 FIB Input queue MAC CPU RIB FIB Input queue MAC interfész interfész
Routerek fejlődése: a jövő? A mai általános célú CPUk gyakran vannak olyan gyorsak, mint egy ASIC ráadásul sokkal olcsóak is Moore-törvénye miatt gyorsan fejlődnek a csomagtováítás masszívan párhuzamos feladat: csomagonként akár külön CPU végzi A fejlődés az olcsó, masszívan parallel, virtualizált szoftver-routerek felé mutat Akár nem is különálló dooz, hanem a cloudan fut (Intel DPDK)!
FIB keresés
FIB keresés Az IP csomagtováítás legidőigényese feladata: a csomagan található célcím alapján meg kell találni a megfelelő next-hopot a legspeficikusa ejegyzés kell (LPM) FIB (Forwarding Information Base): a csomagtováítási szaályok összessége Az útvonalválasztó protokollok adatai alapján a control CPU tölti le az interfészkártyákra Így azok a control CPU igényevétele nélkül, fast path-en továítják a csomagokat
FIB keresés: LPM A LPM megvalósítása nem triviális Egy naiv megközelítés végigkeresné az összes ejegyzést a FIBen és megjegyezné a legtö iten illeszkedőt O(N) komplexitás, ha a ejegyzések száma N A gyakorlatan N 0 6, a rendelkezésre álló időkeret pedig 500 yte-os csomagokkal számolva 0Git/s seességen GHz-es órajelen alig 400 órajel A naiv módszer használhatatlan
Tartalomcímezhető memóriák Content Addressale Memory (CAM) Pontosan a klasszikus memóriák ellentéte: RAM: cím alapján megadja a tárolt adatot CAM: az adathoz megkeresi annak címét ha tö adat stimmel, az első címét adja meg Cím: pl. 0 RAM Adat: pl. 000 CAM Cím Adat Cím Adat 000 0 00 0 000 Adat: 00 000 0 00 0 000 Cím: 0 000 000
Háromállapotú CAM: TCAM Ternary Content Addressale Memory: a CAM csak 0 és értékű iteket ismer, a TCAM mintákan eállítható "Don't care" it is (*) Például az 0** TCAM minta illeszkedik 000, 00, 00 és 0 lekérdezésekre * árhol szerepelhet, nemcsak a minta végén! Alacsonya címen levő minták elő illesztve Illeszkedő minta esetén kiszállás a címmel Az alacsonya címen levő minták felülírálják a magasa címen levő mintákat: prioritás
Háromállapotú CAM: TCAM A 000 keresésre a 00 és az címen levő minta is illeszkedik, az első preferált, output: 00 Az keresésre az eredmény: 0 00 keresésre a 0 és az címen levő minta is illeszkedik, output: 0 Adat Cím Adat 00 *0** 0 00* 0 ** 0*0 TCAM Cím
TCAM: megvalósítása (Mintaszám * itszélesség) számú cella, mindegyiken 0//* tárolva és egy komparátor A cellák egyszerre végzik az összehasonlítást Kimeneti logika választja ki a legkise címet TCAM Adat: 00 Cím Adat 00** 0 00* 0 0** 00 Cím: 0 pagiamtzis.com
TCAM: a LPM megvalósítása Tekintsük az alái FIBet IP prefix Bináris prefix Next-hop 60.0.0.0/3 0 0.0.0. 96.0.0.0/4 00.0.0.2 96.0.0.0/3 0 0.0.0.3 84.0.0.0/5 0 0.0.0.2 Minden csomaghoz a cél IP címére a legtö iten illeszkedő FIB-ejegyzést keressük A 96.28.59.2 IP címre a 2. és 3. ejegyzés is illeszkedik, de a 2. tö iten, így az preferált LPM eredménye: a 2. ejegyzés-eli next-hop
TCAM: a LPM megvalósítása Használjunk az LPM megvalósítására TCAMet Az alhálózati prefix itjeit pontosan megadjuk Ezeket a iteket a TCAM pontosan illeszti A hoszt-azonosítót * itekkel helyettesítjük Hisz ezen itek nem számítanak az LPM-en Így csak az utolsó pozíciókan állhat * Cím IP prefix Illesztendő TCAM minta Next-hop 060.0.0.0/3 0***** ******** ******** ******** 0.0.0. 0 96.0.0.0/4 00**** ******** ******** ******** 0.0.0.2 0 96.0.0.0/3 0***** ******** ******** ******** 0.0.0.3 84.0.0.0/5 0*** ******** ******** ******** 0.0.0.2
TCAM: a LPM megvalósítása Proléma: ha een a sorrenden írjuk a TCAMe a mintákat, egy kevésé specifikus prefix felülírhatja a specifikusaat (pl. a 84... címre az. minta lenne a kimenet, de a 4. a jó LPM találat, hiszen hossza) Megoldás: rendezzük át a ejegyzéseket a prefix-hossz szerinti csökkenő sorrende a legspecifikusa ejegyzésekhez tartozó minták (vagyis a leghossza prefixek) kerülnek alacsony címekre = magas prioritás kevésé specifikus prefixek: magasa cím
TCAM: a LPM megvalósítása A FIB ejegyzések szaadon átrendezhetők Hiszen pontos prioritást ad a prefix-hossz A prefix-hossz szerinti csökkenő sorrende rendezés után kapott tálázat Cím IP prefix Illesztendő TCAM minta Next-hop 084.0.0.0/5 0*** ******** ******** ******** 0.0.0.2 0 96.0.0.0/4 00**** ******** ******** ******** 0.0.0.2 0 96.0.0.0/3 0***** ******** ******** ******** 0.0.0.3 60.0.0.0/3 0***** ******** ******** ******** 0.0.0. A pirossal jelzett oszlopok TCAMe írhatók A maradék oszlopokat RAMan tároljuk
TCAM: a LPM megvalósítása HW FIB: TCAM és RAM összekapcsolása A TCAMől kiolvasott címmel címezzük a RAMot, amelyől kiolvassuk a next-hop címét Elég 5 it széles TCAM (max. prefix-hossz) Input: IP cím ináris formáan FIB Cím Adat 00 0 00* Cím Cím Adat 00.0.0.2 0 0.0.0.2 Output: a legtö iten illeszkedő FIB ejegyzéshez tartozó next-hop IP címe 0 0** 0.0.0.3 0** 0.0.0. TCAM RAM
TCAM: a LPM megvalósítása A 84...=0... IP címre a TCAM a 00 címet adja A RAMól a 00 címen kiolvassuk a next-hopot Input: 0... FIB Cím: 00 Cím Adat 00 0 00* 0 0** 0** TCAM Cím Adat 00.0.0.2 0 0.0.0.2 0.0.0.3 0.0.0. RAM Output: 0.0.0.2
TCAM: a LPM megvalósítása A 97.2.24.45=000... IP címre a 2. és a 3. TCAM ejegyzés is illeszkedik A TCAM a 0 címet adja, a next-hop: 0.0.0.2 Input: 000... FIB Cím: 0 Cím Adat 00 0 00* 0 0** 0** TCAM Cím Adat 00.0.0.2 0 0.0.0.2 0.0.0.3 0.0.0. RAM Output: 0.0.0.2
TCAM: a LPM megvalósítása A routereken alkalmazott HW ASICek a TCAMet és a RAMot is tartalmazzák (egyen) Pár órajel alatt kész az LPM keresés: nagyon gyors fast-path IP csomagtováítás Elterjedt egyé feladatokra is: Ethernet MAC learning tála, firewall szaályok kódolása, st. De a TCAM onyolult: 6 tranzisztor/cella (SRAM: 6, DRAM: 2 tranzisztor/cella): drága! Magas a fogyasztása (9MB TCAM csip, 00 MHz órajel, 0 5W disszipáció): melegszik!
A LPM megvalósítása SWen Nem minden felhasználásra célszerű a TCAM soft routerek, egyszerű access routerek (pl. SOHO router), virtualizált routerek (cloud) Hasznos lenne egy olyan FIB adatstruktúra, amely gyors keresést tesz lehetővé általános célú CPUn implementálva Egy általános CPUn a legköltségese művelet a memóriahozzáférés Cél: a LPM megvalósításához szükséges RAM olvasások számának minimalizálása
A (ináris) prefix fa LPM keresésre optimalizált adatstruktúra A prefix fa a következő műveleteket támogatja: keresés: adott mintára legtö iten illeszkedő prefix megtalálása és a hozzá tárolt címke kiolvasása eszúrás: (prefix címke) páros eillesztése törlés: prefix és hozzá tartozó címke törlése módosítás: prefix címkéjének módosítása
A prefix fa Tekintsük a korái FIBet és ontsuk két részre A next-hopokat azonosítsuk egyedi címkékkel és tároljuk külön egy next-hop index táláan FIB IP prefix Prefix Címke 60.0.0.0/3 0 a 96.0.0.0/4 00 96.0.0.0/3 0 c 84.0.0.0/5 0 c a Next-hop index Címke Next-hop a 0.0.0. Prefix fa 0.0.0.2 c 0.0.0.3
A prefix fa Gyökér Üres pont IP cím első itje IP cím második itje Élcimke IP cím harmadik itje c a Belső pont IP cím negyedik itje IP cím ötödik itje Levélpont Címkével ellátott pont
A prefix fa Prefix=ponta vezető út élcímkéinek sorozata A fáan a prefixeknek megfelelő pontokat a prefixhez tartozó next-hop címkével jelöljük FIB IP prefix Prefix Címke 60.0.0.0/3 0 a 96.0.0.0/4 00 96.0.0.0/3 0 c 84.0.0.0/5 0 c a Next-hop index Címke Next-hop a 0.0.0. 0.0.0.2 c 0.0.0.3
A prefix fa Prefix=ponta vezető út élcímkéinek sorozata A fáan a prefixeknek megfelelő pontokat a prefixhez tartozó next-hop címkével jelöljük FIB IP prefix Prefix Címke 60.0.0.0/3 0 a 96.0.0.0/4 00 96.0.0.0/3 0 c 84.0.0.0/5 0 c a Next-hop index Címke Next-hop a 0.0.0. 0.0.0.2 c 0.0.0.3
A prefix fa Prefix=ponta vezető út élcímkéinek sorozata A fáan a prefixeknek megfelelő pontokat a prefixhez tartozó next-hop címkével jelöljük FIB IP prefix Prefix Címke 60.0.0.0/3 0 a 96.0.0.0/4 00 96.0.0.0/3 0 c 84.0.0.0/5 0 c a Next-hop index Címke Next-hop a 0.0.0. 0.0.0.2 c 0.0.0.3
A prefix fa Az üres levélpontokat elhagyhatjuk, az üres pontoka mutató pointerek: NULL Kise fa, kevese memória FIB IP prefix Prefix Címke 60.0.0.0/3 0 a 96.0.0.0/4 00 96.0.0.0/3 0 c 84.0.0.0/5 0 c a Next-hop index Címke Next-hop a 0.0.0. 0.0.0.2 c 0.0.0.3
A prefix fa: keresés Keressük a 84...=0... IP címre a legspecifikusa találatot a prefix fáan Start a gyökérpontól, output érvénytelen output: érvénytelen 0 c 0 a 84...=0... FIB IP prefix Prefix Címke 60.0.0.0/3 0 a 96.0.0.0/4 00 96.0.0.0/3 0 c 84.0.0.0/5 0
A prefix fa: keresés A 84...=0... keresési cím első itje értékű, így a gyökéről az -es élcímkével ellátott élen lépünk a következő ponta 84...=0... 0 FIB c 0 a IP prefix Prefix Címke 60.0.0.0/3 0 a 96.0.0.0/4 00 96.0.0.0/3 0 c 84.0.0.0/5 0
A prefix fa: keresés Az új pontan nincs címke, output változatlan A második it 0, így az 0 élcímkén haladunk tová a következő ponta 84...=0... 0 c output: érvénytelen 0 a FIB IP prefix Prefix Címke 60.0.0.0/3 0 a 96.0.0.0/4 00 96.0.0.0/3 0 c 84.0.0.0/5 0
A prefix fa: keresés A harmadik it ismét, az élcímkén haladunk to a következő ponta Az új pont címkéje a, ezért: output a 84...=0... 0 FIB c 0 a output: a IP prefix Prefix Címke 60.0.0.0/3 0 a 96.0.0.0/4 00 96.0.0.0/3 0 c 84.0.0.0/5 0
A prefix fa: keresés A 4. és 5. it, az élcímkéken egy, címkével ellátott ponta jutunk, ezért: output A kapott pont levél, így kilépés: output = 84...=0... 0 FIB c 0 a IP prefix Prefix Címke 60.0.0.0/3 0 a 96.0.0.0/4 00 96.0.0.0/3 0 c 84.0.0.0/5 0 output:
A prefix fa: keresés Algoritmus: soran olvassuk a keresett IP cím itjeit, és az olvasott itnek megfelelően mindig a 0 vagy élcímkével ellátott élen lépünk tová egy következő ponta Az iteráció közen az output változóan tároljuk a legutoljára olvasott címkét (kezdeten: érvénytelen) Ha levélpontot vagy NULL pointert találunk: kilépés A kapott címkéhez (output) kiolvasuk a next-hop indexől a megfelelő next-hop címet és visszaadjuk Esetünken az LPM eredmény: 0.0.0.2
A prefix fa: keresés LPM a 69.2.75.54=0000... IP címre Nem találkozunk érvényes címkéjű ponttal: output = érvénytelen 0 0 NULL c 0 a
A prefix fa: keresés LPM a 78.4.66.9=00... IP címre Utolsó látott címke: a, output = a 0 c 0 a 0 NULL
A prefix fa: eillesztés Illesszük e a 20.0.0.0/5 0.0.0.3 ejegyzést Kövessük a itek által kijelölt utat, hozzuk létre a hiányzó pontokat, és a kapott ponta írjunk c-t 20.0.0.0/5=0... 0 0 c a c
A prefix fa: egyé műveletek A módosítás is hasonló: kövessük a itek által kijelölt utat, írjuk felül a kapott pontan a címkét A törlés is hasonló, de kitöröljük a címkét a kapott pontól és felfelé haladva a fán rekurzívan kitöröljük az üres levélpontokat Legfelje annyi lépést kell tennünk a fáan, ahány itől egy IP cím állhat Tétel: a prefix fán a LPM keresés, eillesztés, törlés és módosítás, legfelje O(W) lépésen végez, ahol W a címtér itszélessége (IPv4: 32, IPv6: 28)
A prefix fa Általánosságan: N prefix tárolása esetén a LPM keresés, eillesztés, törlés és módosítás műveletek komplexitása O(log N) A tálázatos tárolási módszerrel az összes prefixen végig kellene keresni: O(N) lépés De 32 it RAM olvasás (főleg ha nem cache-ől történik) időigényes: lassú LPM FIB aggregáció: a prefix fa konverziója kise, de az eredetivel keresés szempontjáól teljesen ekvivalens formáa Feltétel: LPM csak teljesen specifikált IP címekre (32 it), tetszőleges prefixekre nem feltétlenül működik!
FIB aggregáció a c c c Bináris prefix fa c a c c Levélcímkézett normalizált prefix fa 0 c c a 0 0 Optimalizált ináris prefix fa 0 00 0 a c c Szinttömörített prefix fa 0 c