29 - Základní funkce směrovače, zpracování paketů ve směrovači, typy architektur.
15. června 2017
19:20
směrování (routing)
přeposílání paketů (přepínání paketů, packet forwarding)
packet, který mi přišel na vstupu musím dát na výstup, záleží na technologii - minimálně L2 technologie, pokud datování tak přepočítávání...pak na výstupní rozhraní a to to musí zase zapouzdřit dle technologie
Má více rozhraní - někdy se může stát, že z více vstupních rozhraní chtějí packety na 1 výstupní nebo naopak (multicast) - potřebujeme přesouvat na síťové  karty - větší směrovače, které jsou součástí výpočetních center nebo sítí providera
Funkce směrovače
Základní funkce při přeposílání
Validace IP hlavičky
kontrola formátu, verze, délky, kontrolního součtu
Kontrola doby expirace TTL
Přepočítání kontrolního součtu
jedničkový 16-bitový doplněk součtu všech polí v hlavičce (inverzní kód)
i když s packetem nic nedělám musím spočítat
v případě že měním jen něco, vezmu starou hodnotu a počítám rozdíl od hodnoty, kt.eráse změnila od nové hodnoty - inkrementální algoritmus
Fragmentace
pokud MTU výstupního portu je menší než MTU vstupního portu
Zpracování rozšířených voleb IP protokolu
timestamp, record route, strict source route
Vyhledání cesty paketu
destination-based forwarding
lokální doručení
přeposlání na jeden port (unicast)
přeposlání na více portů (multicast)
Pokročilé funkce při přeposílání
Klasifikace paketů
Třídění provozu:
klasifikace paketů
různé akce podle předem definovaných pravidel
Podle jakých položek hlavičky probíhá klasifikace?
Jaké akce se aplikují na pakety?
Překlad NAT
Přepisování položek v hlavičce - přepisujeme hodnoty v L3 hl. a u přetěžování provozu i u L4
Prioritizace provozu
Různé priority pro zápis paketů na výstupní rozhraní
kt. packety se budou přeposílat, pokud dojde k přetížení na výstupu
VPN, packety kt. mi jdou z nějakého rozhraní přepisuji a předávám na výstupní r.
Funkce pro směrování
nejjednodušší způsob: implementovat softwarově - většina software směrovačů, v hardwarových určitým způsobem taky musí být implementované
Směrovací protokoly
implementace směrovacích protokolů – OSPF, BPG, RIP
udržování sousedství (keep-alives)
modifikace směrovací a přepínací tabulky
Nastavení systémové konfigurace
rozhraní – IP adresy, rychlost linky, L2 protokol
konfigurace směrovacích protokolů (časovače)
pravidla pro klasifikaci paketů
Administrace zařízení
monitorování a správa zařízení – SNMP
Zpracování packetu ve směrovači
Způsob zpracování packetu ve směrovači
přímo na sít. karte/modulu nebo forwarding engine
Časově kritické operace
Zpracování v síťovém modulu (v hardware, data plane)
Týká se většiny paketů
Nutné optimalizovat a urychlit
Implementace v HW – obvody ASIC
Zpracování hlavičky IP – ověření verze, délky, kontrolního součtu, snížení TTL
Přeposlání paketu – lokální cíl, unicast, multicast
Klasifikace paketu – výpočet třídy, aplikace pravidel
Uložení do front, plánování - řízení výstupních front
Časově nekritické operace
Částečně zpracovány v síťovém modulu v hardwaru
Většinou předáno do softwaru (control plane)
Zpracování ARP – zjištění L2 adresy na výstupu
Fragmentace a defragmentace – přeskládání, zpracování
Pokročilé volby IP – zdrojové směrování, čas. razítka, ICMP
Správa a monitorování sítě – SNMP
Směrovací informace – zpracování keep-alive, aktualizace
Typy přepínání ve směrovači
Softwarové přepínání
Směrovač využívá standardní mechanismus přepínání procesů v OS.
Postup:
IO procesor detekuje paket na vstupu
IO procesor vygeneruje přerušení. Během přerušení určí CPU typ paketu a zkopíruje ho do centrální paměti
Plánovač naplánuje jeho zpraocvání procesem
Po zpracování IO procesor detekuje paket ve výstupní frontě a zapíše ho na výstupní médium
Nevýhoda: pro každý paket se zjišťují všechny informace
Přerušené přepínání kontextu
Vylepšená verze softwarového přepínaní. Nečekám na plánovač. 
Jakmile přijde paket, tak generuji přerušení a tím řeknu, že je zde nový paket a CPU mě přepne a nečekám na plánovač
Předbíhám tak ostatní procesy
Rychlé přepínání
První paket toku se dělá softwarově (přes CPU) a ostatní jsou rychlou cestou
Obsahuje rychlou vyrovnávací paměť Route Cache, která obsahuje předpočítanou L2 hlavičku
Cache implementována pomocí prefixového stromu
Postup:
Přijde paket a ten je vyhledán v Route cache
Pokud to najde, tak si vezme odpovídající info a jde rychlou cestou
Pokud ne, tak jde na CPU, kde se zpracuje. Výsledek se potom uloží do Route chache, a tam to zůstane nějakou určenou dobu
Expresní přepínání
Pro páteřní směrovače
CEF tabulka: čtyřúrovňový strom s až 256 větvemi z každého uzlu. Listy obsahují odkaz do tabulky sousedů
Tabulka sousedů: Obsahuje info pro vytvoření L2 hlavičky. 
Postup:
Podle směrovací tabulky se spočítá CEF tabulka a tabulka sousedů
V CEF se vyhledá pro daný cíl ukazatel do tabulky sousedů
V tabulce sousedů se vyhledá L2 hlavička
Rozdělení směrovačů podle provozu a operací
Páteřní směrovače (Core Routers)
Hraniční směrovače (Edge Routers)
Podnikové směrovače (Enterprise Routers)
Typy architektur směrovačů
Architektura se sdíleným procesorem (Shared CPU)
Varianta s vyrovnávací pamětí na kartě
Architektura s nezávislými moduly FE (Shared Forwarding Engine)
Varianta s přepínanou sběrnicí
 Distribuovaná architektura (Shared Nothing)
 Modulární architektura (Clustered Architecture)
Architektura se sdíleným procesorem
Podobné klasickým počítačům (softwarový směrovač)
Procesor s pamětí
Obsahuje modul FE, správce front, provozu
Zpracování L2/L3, směrování, správu a monitorování
Přídavné karty propojené sdílenou sběrnicí (backplane)
Sdílejí procesor i sběrnici
Vlastnosti
Každý paket přenášen dvakrát po sběrnici
Cykly CPU rozděleny mezi přeposílání paketů, zpracování směrovacích informací a další operace
Nízký výkon – použití pro menší sítě
Propustnost < 1 Gb/s
jednoduchá architektura – levné
flexibilní implementace – vše v softwaru
nižší výkonnost
rychlost procesoru - každý paket zpracováván v CPU
pomalý přístupu do paměti
uložení paketu
propustnost sdílené sběrnice redukována na polovinu
Architektura se sdíleným procesorem - varianta s vyrovnávací pamětí
Funkcionalita FE přenesena na síťový modul
Paket přenášen po sběrnici pouze jednou při přenosu na výstup
Dotazy na směrování lokálně ukládány v síťovém modulu
Síťové modul obsahuje
Specializovaný procesor na zpracování hlaviček
Paměť pro ukládání paketů
Kopii přepínací tabulky
První paket toku na nový cíl zpracován v CPU
Používá se centrální přepínací tabulka
Výsledek uložen do kopií na síťových modulech
Následující pakety poslány přímo na výstupní rozhraní
Příklad:
Cílová adresa nenalezena v lokální paměti: cesta 1 -> 16
Cílová adresa uložena v lokální paměti: cesta 17 -> 27
Vyrovnávací paměť
Záznamy pravidelně obměňovány – mechanismus LRU, FIFO
Agregovaný provoz na páteřní síti – velké množství sítí (cílů)
Architektura s nezávislými moduly FE
Implementovány na speciálních kartách ve směrovači
Forwarding Engine Cards
Nejsou součástí síťového modulu (Line Card)
Karta obsahuje
Dedikovaný specializovaný procesor – není sdílení
Paměť pro uložení přepínací tabulky
Pakety mohou být zpracovávány paralelně – vyšší propustnost
Dvě nezávislé sdílené sběrnice
Sběrnice pro přenos paketů mezi rozhraními
Sběrnice pro komunikaci s moduly FE
každé rozhraní může zpracovávat ve vst. a výst. rozhraní nezávisle, můžeme packety dávat na vystup a zároveň dotazovat co s jiným packetem 
Vlastnosti architektury
Paralelní zpracování paketů
může docházet k přeskládání paketů – zpomalení TCP
Řešení přeskládání
každý tok zpracován ve stejném modulu FE
Rozšiřitelná architektura
lze přidávat moduly FE
Slabým místem sdílená sběrnice (shared backplane)
možné nahradit přepínanou sběrnicí (switched backplane)
stačí jediná sběrnice
Architektura s nezávislými moduly FE - varianta s přepínanou sběrnicí
Vyšší propustnost
Stačí pouze jedna sběrnice
Síťové moduly i přepínací moduly přímo připojeny ke sběrnici
Přepínání řízeno specializovaným procesorem (řadičem)
Propustnost až 50 Gb/s [4]
Distribuovaná architektura
Zpracování paketů přesunuto do síťového modulu
Jednotka FE přemístěna na síťovou kartu
vs. sdílený procesor a moduly FE
Každý funkční modul implementován v hardware
specializované technologie ASIC a FPGA
propojení hw komponent rychlými sběrnicemi
Modul pro směrování implementován odděleně
zpracovává směrovací informace
Vlastnosti
Oddělení procesu směrování a přeposílání
Směrování probíhá na obecném procesoru
Při aktualizaci směrovací tabulky se změny přenesou i do přepínací tabulky
Propustnost směrovače až 640 Gbps
Rozšiřování omezeno počtem slotů pro síťové moduly
Páteřní přepínače
velký počet portů pro připojené sítě
rychlost optických sítí i 2.4 Gbps (OC-48)
Modulární směrovač – popis architektury
Několik směrovačů připojených k centrálnímu přepínači
Síťové moduly umístěny ve více chassis
Centrální přepínač
Propojení modulů pomocí vysokorychlostních optických linek
Klastr se chová se jako jeden směrovač
Přepínání probíhá mezi síťovými moduly v různých chassis
Důraz na redundanci a zálohování
Záložní přepínač (single point of failure)
Notes*
Kdo me primarne zkousel: Veselý
Co jsem k tomu rekl(a)/na co se ptali/co mne vytkli: Na papieriku bolo niekoľko podotázok, ale začal som tou prvou a to je cesta paketu cez smerovač. Tak som to popísal, že to ide cez vstupne rozhranie, kde prebieha kontrola checksumov (opýtal sa ma čo sa stane ak checksum nesedí -> zahodí sa) a hlavičiek L2, L3, TTL a vytvorí sa kontext paketu. Odtiaľ to ide do forwarding enginu, používa sa forwarding tabuľka (spýtal sa ma čo tam je -> prefix siete, výstupné rozhranie a MAC adresa), backplane, queue manager, traffic manager (opýtal sa ma čo znamená policing a shaping) a výstupné rozhranie. Nakoniec sme sa bavili o tom čo je v routing tabuľke (prefix siete, adresa next hopu a metrika, metrika buďto na základe hop countu alebo vzdialenosti). Tie podotázky čo som tu popísal v zátvorkách som len cca tušil, ale nikdy som to nevedel naisto. Keď však stále prikyvoval tak som si hovoril v hlave, že dobre tipujem. Nakoniec ešte chcel počuť rozdiel medzi slow path a fast path a šiel som von.
From <[link]> 