====== Směrování a filtrování dat v Internetu ====== [[wp>Routing]] * **[[wp>Router|Směrovač]]** je zařízení, které spojuje dvě počítačové (paketové) sítě. * **Směrovací protokol** je protokol, který definuje, jakým způsobem si směrovače vyměňují směrovací informace a jakým způsobem směrovače podle těchto informací vybírají cestu, kterou pošlou data. ===== Link-state směrování ===== [[wp>Link-state routing protocol]] Každý uzel (směrovač) v link-state síti nejdřív identifikuje všechny své přímé sousedy. Pak informace o svých sousedech pošle do celé sítě. Když má každý směrovač tyto údaje ode všech ostatních směrovačů v síti, vytvoří si lokální mapu sítě. Jde o graf, kde každý uzel znamená jeden směrovač a spojení uzlů jsou cesty mezi směrovači. Podle tohoto grafu pak směrovač pomocí hledání nejkratší cesty (založené na [[wp>Dijkstra's algorithm|Dijkstrově algoritmu]]) sestaví tabulku, kde ke každé jednotlivé síti přiřadí cestu, kterou se má paket vydat. Každý směrovač pak rozhoduje na základě této tabulky, kam paket pošle. ==== OSPF ==== [[wp>Open Shortest Path First]] OSPF je zkratka pro Open Shortest Path First a jde o link-state směrovací protokol. OSPF funguje v rámci definovaného autonomního systému (všechny routery, které mají v OSPF nastavený stejný autonomní systém a jsou propojeny, si vyměňují routovací informace). Rozesílání směrovacích informací do sítě (flooding) je řešený posíláním těchto paketů na multicastovou adresu (OSPF si pro tyto účely rezervuje v IPv4 adresu 224.0.0.5). Pro routování multicastových paketů se používá varianta MOSPF (Multicast OSPF). OSPF umí pracovat s CIDR -- podsítě nejsou limitovány pouze na třídy A, B, C, D, ale mohou být libovolně dlouhé (lze použít masky sítě třeba o 30ti bitech). ===== Distance-vector směrování ===== [[wp>Distance-vector routing protocol]] Narozdíl od link-state si při použití distance-vector směrovače nevytvářejí celou mapu sítě. Každý směrovač pravidelně informuje své sousedy o jakých sítích ví (jaké sítě umí směrovat). Spolu s tím je posílána metrika, což je vyjádření toho, jak dobrá je cesta do této sítě přes tento směrovač. Směrovače si pak tyto informace mezi sebou vyměňují -- pokud přeposílají síť, kterou znají od jiného routeru, zvyšují metriku. Když jsou informace o celé síti povyměňovány, říkáme, že je síť **konvergovaná**. Každý směrovač má pak informace o tom, do kterých sítí znají jeho sousedi cestu spolu s metrikou. Směrovač pak paket posílá směrem, kde je nejvýhodnější metrika. Pomůcka: - distance-vector = vektor vzdálenosti, tzn. známe metriku (vzdálenost) - link-state = stav sítě, tzn. známe mapu celé sítě ==== RIP ==== [[wp>Routing Information Protocol]] RIP je zkratkou pro Routing Information Protocol a jde o distance-vector směrovací protokol. Existuje ve dvou verzích: RIPv2 umí oproti RIPv1 směrovat CIDR sítě. RIPv2 používá k rozesílání paketů na sousedící směrovače multicastovou adresu 224.0.0.9. Jako metriku používá RIP **hop-count**, čili počet skoků. Je to jednoduše počet routerů, přes které musí paket projít, aby se dostal do cílové sítě. Směrovače s RIPem tedy vybírají cestu do cílové sítě přes směrovač, který do této sítě má nejmenší hop-count. Minimální hop-count je 0 (síť je na tomto směrovači přímo dostupná), maximální hop-count je 15 a více je považováno za chybu. Pro IPv6 směrování existuje varianta RIPu pojmenovaná RIPng. ===== Klasifikace paketů ===== Klasifikace paketů znamená jejich dělení do **tříd** na základě jejich vlastností. Pro pakety určité třídy pak můžeme definovat filtrovací pravidla, můžeme na ně aplikovat Quality of Service nebo je můžeme jednoduše použít pro získávání statistik sítě (viz například [[isz:sluzby_aplikacni_vrstvy#netflow|netflow]]). Rozdělovat do tříd můžeme například podle: - zdrojové nebo cílové IP adresy nebo síťě - portu, ze kterého komunikace přišla nebo kam míří - protokolu -- ať už transportní vrstva: UDP/TCP atd., nebo např. aplikační vrstva: HTTP, BitTorrent, SSH, ... ===== Filtrování paketů ===== Filtrování paketů je záležitostí, o kterou se stará **firewall**. Může jít o hardware i software. Firewall používá výše zmíněné rozdělení do tříd a podle nastaených pravidel nepropouští (tzn. zahazuje) pakety některých tříd. Firewally mohou mít **inkluzivní přístup**, kdy nepropouští nic kromě definovaných tříd, nebo **exkluzivní přístup**, kdy pouští naopak všechno až na definované třídy. Linuxový firewall [[man>ipfw]] může mít definována následující pravidla: 12190 deny tcp from any to any 65535 allow ip from any to any První číslo znamená pořadí. Tento firewall propustí všechny IP pakety ven i dovnitř a vyfiltruje veškerou komunikaci používající protokol TCP. ===== Shrnutí ===== * směrovač, síťová vstva (L3), směrování, směrovací protokol, metrika * distance-vector: zná své sousedy a jaké sítě vidí, ale nemá kompletní topografii sítě * RIP: jako metriku hop count, max 15 hopů, v2 umí CIDR * link-state: zná celou topologii, nejdřív zjistí sousedy a pak zaplaví síť (s touto informací), po určité době síť konverguje a může se směrovat * OSPF: flooding na multicastu, autonomní systém, CIDR * klasifikace, QoS, filtrování