PROTOCOLLI E ARCHITETTURE DI ROUTING Riassunto Indice personalizzato Algoritmi di forwarding e algoritmi di routing..................................................................7 Forwarding e routing...................................................................................................7 Routing...................................................................................................................7 Forwarding..............................................................................................................7 Algoritmi di forwarding................................................................................................8 Routing by network address....................................................................................8 Label swapping.......................................................................................................8 Source routing.........................................................................................................8 Algoritmi di routing.....................................................................................................8 Caratteristiche........................................................................................................8 Metriche..................................................................................................................8 Transitori.................................................................................................................8 Buchi neri............................................................................................................9 Routing loop........................................................................................................9 Classificazione algoritmi di routing..........................................................................9 Non adattativi.....................................................................................................9 Fixed Directory Routing...................................................................................9 Random walk..................................................................................................9 Flooding..........................................................................................................9 Selective flooding........................................................................................9 Adattivi.............................................................................................................10 Routing centralizzato....................................................................................10 Routing isolato..............................................................................................10 Hot potato.................................................................................................10 Backward learning....................................................................................10 Routing distribuito.........................................................................................10 Distance Vector.........................................................................................10 Triggered updates.................................................................................11 Problemi del DV....................................................................................11 Count to infinity................................................................................11 Possibili soluzioni..........................................................................11 Split horizon..................................................................................11 Path hold down.............................................................................11 Route poisoning............................................................................11 Vantaggi e svantaggi............................................................................11 DUAL.........................................................................................................12 Principi..................................................................................................12 Vicino accettabile..................................................................................12 Diffusing Process...................................................................................12 Link State..................................................................................................13 Componenti dell’algoritmo....................................................................13 Neighbor greetings...........................................................................13 Algoritmo Link State.........................................................................13 Algoritmo di flooding.........................................................................13 Algoritmo di Dijkstra.........................................................................13 Generazione dei link state.................................................................14 Riallineamento delle adiacenze.........................................................14 1 Problemi su L2......................................................................................14 Gerarchici.........................................................................................................14 Dominio di routing........................................................................................14 Implementazione..........................................................................................15 Osservazioni generali....................................................................................15 Problema dell’area partizionata.................................................................15 Redistribuzione.............................................................................................15 Routing interdominio.............................................................................................16 RIP: Routing Information Protocol..................................................................................17 Formato pacchetto....................................................................................................17 Timer........................................................................................................................17 Aspetti vari................................................................................................................17 Infinity...................................................................................................................17 Triggered updates.................................................................................................17 Split horizon..........................................................................................................18 Route poisoning....................................................................................................18 Route hold down...................................................................................................18 Autenticazione......................................................................................................18 Multicast...............................................................................................................18 Conclusioni................................................................................................................18 IGRP e EIGRP.................................................................................................................19 IGRP..........................................................................................................................19 EIGRP........................................................................................................................19 OSPF: Open Shortest Path First......................................................................................20 Concetti generali.......................................................................................................20 Terminologia..............................................................................................................20 Area zero...............................................................................................................20 Backbone router....................................................................................................20 Area border router.................................................................................................20 Internal router.......................................................................................................20 Autonomous System Border Router.......................................................................20 Autonomous System.............................................................................................20 Link State Advertisement......................................................................................20 Tipi di aree................................................................................................................20 Tipi di aree................................................................................................................20 Aree normali.........................................................................................................20 Stub area..............................................................................................................20 Totally stubby area................................................................................................20 Not so stubby area................................................................................................20 Not so stubby area................................................................................................20 Metriche e costi.........................................................................................................21 Multipath routing.......................................................................................................21 Aggregazione............................................................................................................21 Router ID...................................................................................................................21 Autenticazione..........................................................................................................21 Propagazione degli LSA sulla rete..............................................................................21 Selective flooding......................................................................................................21 Sequence number.................................................................................................21 2 LSA su reti broadcast................................................................................................21 Designated Router................................................................................................21 Aree partizionate.......................................................................................................21 Area normale........................................................................................................21 Area zero...............................................................................................................22 Timer........................................................................................................................22 Analisi dei messaggi..................................................................................................22 Messaggi...............................................................................................................22 HELLO...............................................................................................................22 LINK STATE UPDATE...........................................................................................22 ROUTER LSA.................................................................................................22 NETWORK LSA..............................................................................................22 LINK STATE ACKNOWLEDGEMENT......................................................................22 DATABASE DESCRIPTION...................................................................................22 LS REQUEST..........................................................................................................23 LS REQUEST......................................................................................................23 Elementi fondamentali..........................................................................................23 Estensione a più aree................................................................................................23 Routing interdominio: peering e transit.........................................................................24 Autonomous System.................................................................................................24 Routing tra AS...........................................................................................................24 Peering e transit........................................................................................................24 Peering..................................................................................................................24 Transit...................................................................................................................24 Tier...........................................................................................................................24 Neutral Access Point..................................................................................................24 Neutralità della rete..................................................................................................25 BGP: Border Gateway Protocol.......................................................................................26 Routing interdominio.................................................................................................26 BGP...........................................................................................................................26 Trasmissione affidabile degli update..........................................................................26 Path vector................................................................................................................26 Costi in BGP..............................................................................................................26 Peers.........................................................................................................................26 Router I-BGP e router E-BGP..................................................................................27 Router E-BGP.....................................................................................................27 Router I-BGP......................................................................................................27 Full-mesh tra router I-BGP.............................................................................27 Alternative................................................................................................27 Route reflector......................................................................................27 Confederation.......................................................................................27 Perchè serve I-BGP?...................................................................................................27 Sincronizzazione IGP-BGP..........................................................................................27 Rotte “speciali”.........................................................................................................27 Rotte overlapped...................................................................................................27 Rotte aggregate....................................................................................................28 Attributi.....................................................................................................................28 Attributi well-known..............................................................................................28 Origin of the route.............................................................................................28 3 AS_PATH............................................................................................................28 NEXT_HOP.........................................................................................................28 Unreachable......................................................................................................28 Altri attributi.........................................................................................................28 Local pref..............................................................................................................28 Atomic aggregate..................................................................................................28 Aggregator............................................................................................................28 Strutture di memorizzazione annunci........................................................................28 Adj-RIBs-In............................................................................................................28 Loc-RIB..................................................................................................................28 Adj-RIBs-Out..........................................................................................................28 Decision process.......................................................................................................28 Formato dei messaggi...............................................................................................29 Tipo dei messaggi.....................................................................................................29 OPEN.....................................................................................................................29 UPDATE.................................................................................................................29 NOTIFICATION.......................................................................................................29 KEEP-ALIVE............................................................................................................29 IP Multicast....................................................................................................................30 Comunicazioni di gruppo...........................................................................................30 Indirizzi multicast......................................................................................................30 Multicast sulle LAN....................................................................................................30 IGMP.....................................................................................................................30 Formato pacchetto................................................................................................30 Inoltro al di fuori delle reti locali................................................................................31 Protocolli di trasporto................................................................................................31 Routing multicast......................................................................................................31 Algoritmi di instradamento....................................................................................31 Selective flooding..............................................................................................31 Reverse Path Forwarding...................................................................................31 Reverse Path Broadcasting................................................................................32 Truncated Reverse Path Broadcasting................................................................32 Reverse Path Multicasting.................................................................................32 Link State Multicast Routing..............................................................................32 Core-based Tree................................................................................................32 Protocolli di routing...............................................................................................32 MBone...............................................................................................................32 DVMRP..............................................................................................................32 MOSPF..............................................................................................................32 PIM....................................................................................................................33 PIM-DM..........................................................................................................33 PIM-SM..........................................................................................................33 BGMP................................................................................................................33 Stato attuale.............................................................................................................33 Cenni sull’architettura degli apparati di rete..................................................................34 Prima generazione....................................................................................................34 Limiti.....................................................................................................................34 Seconda generazione................................................................................................34 Fast e slow path....................................................................................................35 4 Terza generazione.....................................................................................................35 Multi-chassis.............................................................................................................35 Esempi di router commerciali........................................................................................36 Famiglia high-end......................................................................................................36 Caratteristiche comuni..............................................................................................36 Differenze tra apparati high-end e apparati user.......................................................36 CDN: Content Delivery Networks...................................................................................37 Panoramica...............................................................................................................37 Che cosa sono...........................................................................................................37 Caratteristiche tecniche............................................................................................37 DNS Based............................................................................................................37 Limitazioni............................................................................................................37 Akamai......................................................................................................................37 Estensioni.................................................................................................................37 Server load balancer.............................................................................................37 Packet processing con libpcap/WinPcap.........................................................................38 Libpcap/Winpcap.......................................................................................................38 Cosa fanno e cosa non fanno................................................................................38 Polling vs. event-driven.........................................................................................38 Passi comuni.....................................................................................................38 Polling...............................................................................................................38 Event-driven.....................................................................................................38 Parsing..................................................................................................................38 Considerazioni finali..............................................................................................38 Software-based Packet Filtering.....................................................................................39 Packet filter...............................................................................................................39 CSPF.....................................................................................................................39 Implementazione a livello kernel.......................................................................39 Batch processing...............................................................................................39 Virtual machine.................................................................................................39 Controlli di sicurezza.....................................................................................39 WinPcap................................................................................................................40 Architettura.......................................................................................................40 Kernel level...................................................................................................40 User level......................................................................................................40 Migliorie............................................................................................................41 JIT.................................................................................................................41 Prestazioni................................................................................................41 Sicurezza..................................................................................................41 Costo........................................................................................................41 Aumentare le prestazioni..........................................................................................41 Aumentare le prestazioni della cattura..................................................................41 Profiling dettagliato...........................................................................................41 Fare ottimizzazioni architetturali............................................................................42 Network driver..................................................................................................42 Miglioramenti................................................................................................42 Interrupt Mitigation...................................................................................42 5 Interrupt Batching.....................................................................................42 Polling.......................................................................................................42 HW Preprogrammato.................................................................................42 Memoria preallocata.................................................................................42 Capture driver...................................................................................................42 Miglioramenti................................................................................................43 Ulteriori miglioramenti..................................................................................43 Applicazioni.......................................................................................................43 SDN: Software Defined Networks...................................................................................44 Panoramica...............................................................................................................44 Idea.......................................................................................................................44 Slices di rete.........................................................................................................44 Vantaggi e svantaggi.............................................................................................44 OpenFlow..................................................................................................................44 Data Plane Processing...............................................................................................44 Network Service Chaining.....................................................................................45 Network Function Virtualization.............................................................................45 Standardizzazione.....................................................................................................45 6 PROTOCOLLI E ARCHITETTURE DI ROUTING Riassunto #01 – Algoritmi di forwarding e algoritmi di routing • Forwarding e routing ◦ ◦ ◦ ◦ ◦ ◦ Routing ▪ Processo fatto a priori ▪ Decide qual è il percorso globale del pacchetto sulla rete • Per calcolarli, i router inviano e ricevono messaggi di raggiungibilità ◦ Solitamente bidirezionali, ma non è un dogma ▪ Ha come output dei percorsi • L’output è differenziato per ogni nodo, ma c’è comunque coordinazione • Informazioni prodotte utili per il successivo forwarding ▪ Una parte degli algoritmi di routing non è in grado di sapere l’intero percorso, ma solo il prossimo next hop ▪ Processo cooperativo • Non sta mai fermo, al fine di tenere sotto controllo la rete • Normalmente non si scambiano informazioni aggiuntive (es.: RT) a meno che non succeda qualcosa ▪ Cambiamenti di stato più importanti dei cambiamenti di topologia Forwarding ▪ Prende il pacchetto dall’interfaccia di ingresso e lo smista sull’interfaccia di uscita opportuna ▪ Avviene nel nodo singolo • Non vede l’intera rete Ogni nodo ha un numero di indicazioni pari al numero di altri nodi ▪ Alla lunga ci possono essere problemi di scalabilità Algoritmi non legati a un particolare livello applicativo C’è differenza tra routing e forwarding? ▪ Nei router commerciali sono presenti RIB e FIB, rispettivamente per favorire routing e forwarding ▪ In linea di principio sono equivalenti 7 • Algoritmi di forwarding ◦ Routing by network address ▪ Ogni nodo ha l’elenco – in linea di principio – di tutte le destinazioni e per ogni destinazione c’è il next hop • Problema se ci sono molte destinazioni ▪ Semplice ▪ Calcolo del percorso unico e fissato a priori ◦ Label swapping # ▪ Basato sulla tecnica dei percorsi colorati • Il pacchetto non dice dove vuole andare, ma che percorso (combinazione di più link) vuole fare ◦ In reti grandi è impraticabile: servirebbe un ID univoco sulla rete ▪ Si usano ID di percorso decisi su ogni singola tratta • ID swappati quando si passa per un nodo • Fondamentale sapere da che porta sta arrivando il pacchetto • ID a validità locale: se non li usa nessuno sul percorso posso riutilizzarli ▪ Scalabilità, algoritmo più snello, tabelle più piccole, QoS ▪ Path setup • I pacchetti non partono colorati • Affinchè l’algoritmo funzioni è neessario un meccanismo che prenda la destinazione, capisca dov’è, capisca il percorso da fare e crei tutte le etichette ◦ Sistema manuale: percorsi impostati dall’amministratore di rete ◦ On demand: mando pacchetti sulla rete per trovare il percorso (≠ DNS) • Il traffico IP richiederebbe un sacco di path setup ◦ MPLS ha vinto su ATM perché fa un path setup “intelligente” ◦ Source routing 9 ▪ Chi emette il pacchetto indica esattamente il percorso da fare ▪ Abbandonato perché l’host deve fare il lavoro che gli compete • Algoritmi di routing ◦ Non completamente indipendenti dall’algoritmo di forwarding scelto ▪ Nel seguito si assumerà di aver scelto routing by network address ◦ Caratteristiche ▪ Semplice da implementare, da eseguire ▪ Ottimale e stabile ▪ Non deve cambiare a suo piacimento • Se la rete rimane costante, i percorsi restano uguali ▪ Deve rilevare automaticamente i guasti senza dipendere dal livello fisico • Ci si scambia messaggi di segnalazione ▪ Problema della robustezza bizantina • Se uno si identifica come Google, non è possibile contraddirlo ◦ Metriche ▪ Modo con cui si misura l’ottimalità di un percorso ▪ Meglio preferire metriche stabili e sempliciotte a metriche complesse (es.: basate sulla banda) per evitare rotte ballerine (route flapping) ◦ Transitori 8 Momento di incoerenza tra le tabelle dei vari routing ▪ Non sempre dannosi • Se si aggiunge una nuova destinazione, o una migliore di una precedente, per un po’ di tempo verrà ignorata: amen • Problemi in caso di guasti sulla rete: qualcuno se ne accorge, altri no ▪ Possono portare a buchi neri e routing loop • Buchi neri ◦ Un nodo non ha la più pallida idea di come raggiungere una certa destinazione X ◦ Per le altre, tutto bene • Routing loop ◦ Due nodi hanno informazioni tra loro incoerenti e cominciano a rimpallarsi il traffico ◦ Pericolosi perché interferiscono anche col traffico che non dipende dalle informazioni incoerenti Route di backup (?) ▪ Fantastiche nelle tecnologie statiche, non usatissime sulla rete Multipath routing ▪ In teoria dovrebbe essere una miglioria, in pratica genera mal di pancia • TCP ▪ Se esistono rotte secondarie si usano – in maniera proporzionale – se il costo non è troppo superiore a quello della rotta primaria • Meglio ricorrere a multipath equal costing con distribuzione intelligente del traffico, conservandone l’ordine • Usato nei datacenter ▪ ◦ ◦ ◦ Classificazione algoritmi di routing ▪ Non adattativi, statici • Fixed Directory Routing, routing statico ◦ Scriviamo nei dispositivi la tabella di routing ▪ Conveniente in alcune situazioni (es.: rete edge collegata a Internet attraverso un router che fa da default gateway) • Non serve CPU • Durante i transitori non ho routing loop / buchi neri • Evito propagazione di errori di configurazione verso il core • Random walk ◦ Quando un apparato riceve del traffico lo inoltra in maniera randomica verso uno dei link rimanenti ◦ Utilizzabile quando cerco una risorsa (reti P2P) o in reti di sensori ▪ Assenza di routing table ▪ Consumo meno energia rispetto a un routing finissimo • Flooding ◦ Quando un nodo riceve un pacchetto, questo viene mandato su tutte le interfacce di uscita ◦ Buono nelle situazioni in cui mi serve affidabilità al 200% ◦ Selective flooding ▪ Richiede ad ogni nodo di ricordarsi quali pacchetti sono già passati nel nodo stesso 9 Stesso modus operandi del flooding, risparmio qualche copia ▪ Non tiene conto della storia: problemi se cade un host Adattivi, dinamici • Routing centralizzato ◦ Basato su un nucleo di controllo della rete (Routing Control Center) ▪ Tutti devono essere in grado di comunicare con RCC ▪ Ognuno dice a RCC com’è fatta la rete nel suo intorno ▪ RCC elabora le informazioni ricevute e manda ai vari nodi le RT da utilizzare ◦ Facile da controllare ◦ Calcolo delle rotte facile mediante deployment su RCC • Routing isolato ◦ Ragiona in maniera speculare al centralizzato ▪ Tutti uguali, tutti ragionano in maniera isolata ◦ Hot potato ▪ I pacchetti vengono instradati sul link meno carico • Una sorta di random walk, però adattivo ◦ Backward learning ▪ Si impara la strada per ogni destinazione attraverso un esame dei pacchetti da esse provenienti • Routing distribuito ◦ Prendo il buono di quanto visto in precedenza ▪ Centralizzato: gli apparati si parlano, scambiandosi messaggi ▪ Isolato: assenza di single point of failure ▪ ▪ ◦ Distance Vector [ ] ▪ ▪ ▪ Le informazioni sulla rete sono distribuite a tutti i vicini • Ci si scambia dei Distance Vector ◦ Coppie destinazione – costo Ogni nodo manda ai propri vicini un’informazione del tipo: “Ciao, io sono Tizio e mi raggiungo a costo 0. Se prendo Via Roma e faccio 2 Km raggiungo Caio, se prendo Corso Francia o Corso Vinzaglio e faccio 8 Km raggiungo Sempronio” • Il fatto di fare 8 Km su Corso Francia per raggiungere Sempronio non vuol dire che Sempronio abiti in Corso Francia ◦ Il DV dice infatti qual è la direzione con cui raggiungere un 10 ▪ ▪ ▪ ▪ ▪ ▪ nodo, ma non il costo Quando il nodo X riceve i DV degli altri • Si selezionano le informazioni di raggiungibilità “migliori” • Si mettono insieme e si costruisce la routing table • Si estraggono le informazioni dalla RT e si genera il DV di X, inviandolo a tutti gli altri dopo un certo timeout Quando cade un link si invalidano i DV arrivati da quel link, ricalcolando la RT A regime ogni nodo riceve un numero di DV pari al numero dei suoi vicini e ogni DV ha un numero di righe pari al numero di nodi di rete Triggered updates • Se ho un evento che porta al ricalcolo della RT mando subito il DV ai vicini • Non viene resettato il timeout Problemi del DV • Buchi neri • Routing loop • Count to infinity ◦ Nasce dal fatto che DV non sa la topologia dell’intera rete ◦ Si interrompe un link: viene invalidato un DV e si pensa di raggiungere la destinazione facendo un giro alternativo. L’alternativo, però, pensa di farcela passando dal link guasto ▪ Quando i due nodi si scambiano il DV cominciano ad annunciarsi una destinazione che (erroneamente) si allontana un sacco ▪ Il pacchetto comincia a rimbalzare tra due nodi, per TTL volte, saturando la banda ◦ Possibili soluzioni ▪ Appesantiscono il protocollo e non sono funzionanti al 100% ▪ Split horizon • Soluzione principe: se C raggiunge A attraverso B, non ha senso che B raggiunga A attraverso C • Si aggiungono le destinazioni che si raggiungono in una direzione diversa da quella in cui è propagato il DV ▪ Path hold down • Se vedo che il costo verso una destinazione comincia ad aumentare, metto quella riga della RT in “quarantena” fin quando non ho notizie certe • Non esiste implementazione di riferimento ▪ Route poisoning • Nel momento in cui ho una cattiva notizia la inoltro con costo infinito • Le brutte notizie sono meglio dell’assenza di notizie Vantaggi e svantaggi • Semplice da implementare 11 • • • • • • • ◦ Richiede poche risorse Ottimo per reti piccole Convergenza abbastanza lenta ~ O(n³) Difficile da capire su reti grandi perché ogni router ha una visione limitata del suo intorno Routing loop Un protocollo più robusto è ottenibile con tecniche che fanno perdere la semplicità L’utilizzo del valore infinito limita l’uso dell’algoritmo solo su reti piccole DUAL ▪ Si posiziona sopra il DV per migliorarne la scalabilità ▪ Principi • Buone notizie sempre accettate • Notizie peggiorative ignorate se non arrivano dal next-hop che le aveva annunciate • Percorsi alternativi sono scelti solo se sceglierli non causa problemi all’interno della rete ▪ Vicino accettabile • Se mi accorgo che il percorso verso una certa destinazione è aumentato, cerco un nuovo percorso garantito loop-free al 100% • Un nodo K vicino al nostro nodo R è un vicino accettabile per R se d(K, D) < d(R, D) ▪ Diffusing Process • Modalità che si attiva quando non riesco a trovare un nuovo percorso per la destinazione D grazie a un vicino accettabile ◦ Il router congela il percorso verso D ◦ Il router entra nel panico ◦ Parte il diffusing process: si inviano una serie di query ai vicini (tranne al precedente next hop) per cercare di trovare una destinazione migliore ▪ Se anche i vicini non sanno che pesci pigliare si prosegue ricorsivamente ▪ Prima o poi riesco a capire se esiste un percorso alternativo • Interessante perché toglie i loop • Vale la pena complicare DV per avere prestazioni vicine a LS? 12 ◦ Link State [ ] ▪ ▪ ▪ ▪ Le informazioni sulla rete sono distribuite a tutti i router Ogni nodo manda a tutti un’informazione del tipo: “Ciao, io sono Tizio e sono vicino di casa di Caio e Sempronio” • Propagandosi in rete i messaggi disegnano una topologia di rete sempre maggiore ◦ La propagazione è veloce perché non c’è bisogno di processare quanto ricevuto prima di inoltrarlo agli altri • I nodi cooperano per calcolare la mappa dell’intera rete Componenti dell’algoritmo • Neighbor greetings ◦ Un nodo manda sui suoi link l’informazione “Ciao, io sono Tizio”. All’altro capo del link capiscono che: ▪ Dall’altra parte c’è Tizio , ▪ Il link è up ◦ Si possono mandare con periodicità alta perché non sovraccaricano la rete ◦ Non vanno in flooding • Algoritmo Link State ◦ Ogni nodo invia LS a tutti e deve a sua volta memorizzare gli LS che riceve dagli altri ▪ La memorizzazione avviene in una struttura matriciale ◦ Si lavora con identificatori univoci • Algoritmo di flooding ◦ Componente che prende gli LS in arrivo e li manda in broadcast ai nodi della rete ◦ Si usa un selective flooding • Algoritmo di Dijkstra ◦ Componente che serve per calcolare lo spanning tree (percorsi da ogni nodo verso la destinazione) ▪ Si parte definendo un nodo radice ▪ A partire dalla radice si sceglie, tra i nodi immediatamente raggiungibili, il vicino a costo inferiore 13 Una volta allargato “l’insieme” si sceglie il nuovo nodo immediatamente raggiungibile a costo minore ◦ Ogni router calcola un suo albero ricoprente ◦ Complessità algoritmica ~ O(L*logL) • Generazione dei link state ◦ Solo quando qualcosa cambia nell’intorno di un certo nodo ▪ C’è un nuovo vicino ▪ Sono cambiati i costi ▪ Si perde un vicino prima raggiungibile ◦ Nelle implementazioni reali si generano comunque degli LS ogni tanto per questioni di affidabilità ▪ C’è un campo Age per vedere se l’informazione riportata è troppo vecchia ◦ La generazione non periodica richiede un meccanismo affidabile di consegna ▪ Si usano degli ACK di conferma hop by hop ◦ Rete utilizzata meglio, minor spreco di banda • Riallineamento delle adiacenze ▪ Si invia al nuovo nodo il LS, così da fargli conoscere tutta la rete ▪ Il nuovo nodo invia il suo LS a tutta la rete, così gli altri sanno com’è fatta la rete nel suo intorno ▪ Problemi su L2 • LS può lavorare solo su reti punto-punto ◦ Gran problema su reti ad accesso condiviso ▪ Bisogna ricondurle a topologie punto-punto • Il costo computazionale impenna ◦ Soluzione al problema è trasformare il collegamento passivo in una topologia stellata ▪ C’è un’entità net, adiacente verso tutti • Meno adiacenze • Riallineamento più semplice ▪ Conclusioni • Convergenza veloce • Meno traffico scambiato rispetto a DV • Ogni nodo ha la mappa intera della rete: debug più facile • Scalabilità decisamente migliore rispetto a DV • Più complesso del DV perché ha più componenti • Requisiti CPU/MEM pesanti • Configurazione più difficile rispetto a DV Gerarchici • Problemi di quanto visto finora ◦ LS tende a non scalare oltre i 200 router ◦ Se le reti di due ISP sono collegate su un unico dominio LS, eventuali errori dell’ISP1 si propagano sull’ISP 2 ◦ I due ISP possono fare scelte architetturali diverse • Dominio di routing ◦ Porzione di rete gestita dalla stessa istanza di un routing protocol ▪ ▪ 14 Internet è un insieme di domini di routing interconnessi tra loro ▪ Il routing gerarchico dice: “se la destinazione che voglio raggiungere è esterna al mio dominio, devo far arrivare il traffico all’exit point più vicino tra me e il dominio di destinazione, e poi il pacchetto viene preso in carico dall’altra rete” • Spezzo il percorso, scegliendo solo la strada migliore per la frontiera (egress router) che mi separa dalla destinazione ◦ Concetto più ampio di quello di ISP ▪ ISP particolarmente grandi si trovano a gestire più domini Implementazione ◦ Si può scegliere un protocollo che implementa di suo la gerarchia ◦ Si può optare per la redistribuzione manuale ▪ Utile per capire come funziona il tutto Osservazioni generali ◦ Ho meno informazioni, ma la scalabilità aumenta ◦ Il routing gerarchico non entra in gioco se src e dst sono nello stesso dominio ◦ Il percorso risultante è la concatenazione di n percorsi ottimi, quindi globalmente potrebbe non essere ottimo ◦ Il routing gerarchico si usa spesso con la summarizzazione ▪ Se annuncio 10.0.0.0/24 e 10.0.0.1/24 perché non salvarsi una 10.0.0.0/23? ◦ Guasti locali a un’area, o comunque a cavallo tra due aree, non influenzano le altre aree ◦ Problema dell’area partizionata ▪ Ci sono percorsi interrotti che vengono selezionati dal routing gerarchico e che rendono impossibile la consegna anche se ci sarebbe connettività tra sorgente e destinazione • Causata dalla progettazione errata del dominio di routing ◦ Non basta più ridondanza sulla rete, ma ci dev’essere sui domini Redistribuzione ◦ • • • ◦ ◦ ◦ Supponiamo che un router si trovi a cavallo tra due domini, uno LSbased e uno DV-based Si può prendere quanto imparato in LS, trasformarlo in DV e annunciarlo al dominio DV 15 La rete DV avrà una falsa concezione della rete, ma tutto funziona ▪ Non sempre è possibile mantenere i costi originali, specie se si lavora con metriche diverse Routing interdominio ▪ Routing tra domini amministrativi (≃ ISP) differenti • Entrano in gioco fattori decisamente più importanti della topologia • Il percorso migliore è scelto soddisfando vincoli ◦ Economici ◦ Di sicurezza • C’è la possibilità di nascondere alcune rotte agli altri ◦ L’accesso però lo controllo solo con apposite ACL ▪ Protocolli EGP • Ricevono informazioni topologiche e policy e trovano i percorsi • C’è una sola istanza di protocollo EGP su Internet ◦ In caso contrario avrei Internet partizionato ▪ ◦ # 16 #02 – RIP: Routing Information Protocol [ ] • Implementazione a livello reale dell’algoritmo DV • Formato pacchetto (RIP v.2) ◦ Imbustato nei livelli link layer, IP, UDP • Non è un pacchetto di L5 ma è solo una comodità implementativa • Non elegantissimo, ma molto comodo ◦ Resta dunque un protocollo di L3 ◦ Si lavora coi socket: debug facile • Trasmesso sulla porta UDP 520 ◦ Meccanismo di sicurezza in quanto le porte < 1024 possono essere usate solo se si è amministratori ▪ Command • Request introdotto per velocizzare le fasi di start dei nuovi router • Chi riceve un Request rispnde senza aspettare le normali tempistiche ▪ Route tag • Permette di indicare quali sono le rotte imparate all’interno del dominio RIP e quali quelle fuori ▪ Next hop • Serve a “suggerire” la strada ◦ Poco usato Timer ◦ Intervallo tra due DV ▪ Tempo casuale tra 25 e 35 secondi per evitare sincronizzazione ◦ Route invalid timer ▪ Tempo di validità per una entry se non viene confermata: 180 secondi ◦ Route flush timer ▪ Tempo necessario a cancellare la rotta dalla routing table: RIT + 60 secondi • Non subito perché può essere utile annunciare ai vicini che una certa rotta è andata giù Aspetti vari ◦ Infinity ▪ Vale 15 ▪ Un ping da qui agli USA percorre mediamente 20 hop: accettabile ◦ Triggered updates ▪ Nelle TU che vediamo in RIP ci sono solamente le rotte cambiate ▪ Non resettano l’update timer ▪ Non sono inviate subito ma si aspetta dagli 1 ai 5 secondi perché magari c’è un altro evento collegato ◦ • • 17 Split horizon ▪ Implementa quanto visto in #01 ◦ Route poisoning ▪ Implementa quanto visto in #01 ◦ Route hold down ▪ Se il costo di una rotta aumenta non viene più modificata fino alla scadenza del timer ▪ Non chiarissima l’implementazione ◦ Autenticazione ▪ La password passa in chiaro " ◦ Multicast ▪ RIP v1: 255.255.255.255, in broadcast ▪ RIP v2: 224.0.0.9, messaggi mandati solo agli altri router Conclusioni ◦ Molto semplice ◦ Richiede poche risorse ◦ Facile da configurare ◦ Tempi di convergenza non sempre brevissimi ◦ • # 18 #03 – IGRP e EIGRP [ ] • IGRP ◦ Citato per ragioni storiche ▪ Assenza della netmask ▪ Molto più market oriented rispetto a RIP • Per distaccarsi dai competitor, CISCO introduce IGRP. Ovvero DV con: ◦ Metriche più sofisticate ▪ Se siamo esperti possiamo fare del tuning su alcuni parametri ▪ Essendo basate su parametri dinamici si rischia di creare transitori continui ▪ Soglia di infinito altissima • Convergenza lenta ◦ Possibilità di usare più metriche contemporaneamente ◦ Meno traffico generato ◦ Multipath routing ▪ Ben vendibile ▪ Complicato dal punto di vista dell’implementazione ◦ Timer ▪ Cambiano un po’ i valori, ma stessa filosofia di RIP ▪ Tempo di update un po’ più lasco • EIGRP ◦ DV + DUAL ▪ Usando DUAL non ho più i problemi dei loop ◦ Supporta la netmask ◦ Si usano degli Hello per non dover ricalcolare RT ▪ La contropartita è che quando mando i DV di update devo essere certo che vengano inviati, altrimenti lascerei la rete in uno stato incoerente ◦ Conclusioni ▪ Si portano i principi di LS sul DV ▪ Sostituzione dei DV periodici con gli Hello ▪ Funziona bene ed è usato in maniera estensiva ▪ Più risorse rispetto a IGRP ▪ Proprietario ▪ Non gerarchico # 19 #04 – OSPF: Open Shortest Path First [ ] • Concetti generali ◦ E’ basato sui concetti di Link State e gerarchia, utili per la scalabilità ◦ Una rete OSPF è partizionata in tante nuvole ed ogni nuvola è una rete LS ◦ Tutto il traffico da una qualunque area non-0 verso un’altra area non-0 deve passare dall’area 0. • • Terminologia ◦ Area zero ▪ Rete di L2 ▪ Punto critico per il routing ▪ Tipicamente ha un punto di uscita verso Internet ◦ Backbone router ▪ Router nell’area zero ◦ Area border router ▪ Router che ha un piede in area zero e uno in un’altra area ▪ Ha due LS DB per permettere la redistribuzione ◦ Internal router ▪ Vede solamente la sua area OSPF ◦ Autonomous System Border Router ▪ Router di frontiera tra OSPF e resto del mondo ◦ Autonomous System ▪ Routing domain OSPF ◦ Link State Advertisement ▪ Struttura dati che contiene le informazioni utili all’algoritmo Tipi di aree ◦ Aree normali ▪ Gli ABR inoltrano tutti gli LSAs dall’area 0, inclusi quelli esterni ◦ Stub area ▪ Tipi di area che non ricevono route esterne ▪ Serve una rotta di default per contattare rotte esterne al dominio ◦ Totally stubby area ▪ C’è il database dell’area più una rotta di default ▪ Non permette route riassuntive oltre che le route esterne ◦ Not so stubby area ▪ Stub area che può importare route esterne di AS e mandarle al backbone, 20 • • • • • • • • • ma non può ricevere tali route esterne di AS dal backbone o da altre aree Metriche e costi ◦ Metriche ▪ Si possono supportare più metriche sullo stesso link • Questo permette di “scegliere” diverse tabelle di routing • Posso scegliere il percorso più adatto • Più alberi di instradamento da gestire ◦ Costi ▪ Non definiti in OSPF ▪ Controllare cosa è definito sul router per evitare incongruenze Multipath routing ◦ Supportato se i percorsi sono allo stesso costo Aggregazione ◦ Di default non c’è perché se si iniziano a integrare spazi di indirizzamento che non sono sotto il nostro controllo sono problemi Router ID ◦ Indirizzo più alto presente sulle interfacce Autenticazione ◦ Esistente ma farlocca Propagazione degli LSA sulla rete ◦ Esattamente come dalla teoria precedente di LS ◦ Cìè una propagazione periodica ogni 30 minuti Selective flooding ◦ Esattamente come visto in precedenza ◦ Sequence number ▪ Usati in modalità spazio lineare ▪ Se anche si arriva a “dare il giro” la scadenza dopo un’ora risolve i problemi LSA su reti broadcast ◦ Designated Router ▪ Pseudo-nodo con una doppia personalità ▪ Se gli succede qualcosa, la rete si interrompe • Meglio prevedere un vice, che monitora la rete per sapere se entrare ▪ Designato e vice sono, all’atto pratico, “i primi due” che si accendono ▪ Quando un router deve trasmettere un LS sulla LAN viene inviato a un indirizzo multicast che identifica tutti i Designated ▪ Il DR invia l’informazione a tutti i router e tutti i router mandano ACK sia al designato che al router • Se l’ACK non arriva, il designato rimanda al router specifico Aree partizionate ◦ Esistono quando c’è una gerarchia ◦ Area normale ◦ 21 Se BD si interrompe l’area 1 si partiziona ▪ In OSPF il problema si risolve perché si annuncia la raggiungibilità • E è in grado di raggiungere D, e quindi C è comunque in grado di raggiungere B • Se ad E arriva qualcosa per B viene passato a C Area zero ▪ ◦ ▪ ▪ • • Se si rompe CE non riesco più a raggiungere E a partire da C • Bisognerebbe uscire dal backbone e rientrare, ma è vietato dal routing gerarchico • La soluzione è quella di creare un virtual link ◦ Una sorta di tunnel tra C ed E che passa nell’area 1 ◦ I virtual link devono essere originati e terminati sull’area in esame Timer ◦ Tempistiche più basse rispetto ad altri protocolli ▪ Hello ogni 10 secondi ▪ Router dichiarato irraggiungibile dopo 40 secondi Analisi dei messaggi ◦ Analizzando i messaggi è possibile comprendere la struttura della rete ◦ Capisaldi ▪ Tutto è punto-punto ▪ Ci sono due tipi di link • Link tra due entità singole (tipicamente router: router link) • Link tra router ed entità fittizia (network link) ◦ Messaggi ▪ Imbustati in IP ▪ HELLO • Ha alcuni parametri che mi permettono di eleggere il router designato ▪ LINK STATE UPDATE • Quello che abbiamo sempre chiamato LS, inviato in flooding e blabla... • Può essere di diversi tipi ◦ ROUTER LSA ▪ Adiacenze nell’intorno di un router singolo, generate da un router ◦ NETWORK LSA ▪ LSA generato dalla fittizia rete di transito che descrive ▪ LINK STATE ACKNOWLEDGEMENT • ACK a un LSU ▪ DATABASE DESCRIPTION • Supponiamo di avere due router adiacenti tra loro • Se uno dei due fa parte di una rete molto grossa, l’altro vuole sapere il suo DB, ma magari qualcosa già ce l’ha 22 Ci si scambia un riassunto ▪ LS REQUEST • “Voglio quel particolare LS che è arrivato nel Database Description” • La risposta arriva con LSU Elementi fondamentali ▪ Qualunque rete può essere scomposta in questi tre blocchi fondamentali • ◦ • • • • Estensione a più aree ◦ Al di fuori della mia area vedo un set di reti IP agganciate direttamente sul router di frontiera ◦ La realtà però può essere diversa # 23 #05 – Routing interdominio: peering e transit • Autonomous System ◦ Entità amministrativa omogenea ▪ Coincide spesso con un ISP, con le dovute eccezioni • Dovute a esigenze degli ISP di differenziare il traffico della rete • Dovute alla caduta di vincoli sulla struttura della rete ◦ E’ nata la necessità di avere AS estremamente piccoli ◦ Identificato da un numero su 32 bit • Routing tra AS ◦ Routing interno completamente indipendente tra gli AS ◦ Dev’esserci un protocollo comune per scambiarsi esternamente le rotte ▪ Interconnessione mediante router ASBR • Scambio di annunci di routing, che includono: ◦ Rotte interne imparate con uno dei protocolli IGP ◦ Rotte esterne imparate con BGP • L’ASBR assume importanza perché deve avere due protocolli di routing installati e attivi ◦ Redistribuzione ▪ Automatica ▪ Attivabile andando a modificare le opportune policies ◦ Configurazione delle policies principalmente in base a motivi economici • Peering e transit ▪ Peering • Due entità si scambiano traffico su base partitetica senza contropartite economiche ◦ Non si prevede l’utilizzo di entità terze ◦ Accordi fatti quando ci si accorge che passare da un terzo costa di più rispetto a tirare su un link ▪ Transit • Contratto in cui un’entità paga un’altra per trasportare traffico ◦ Può essere soggetto a limiti ▪ Tecnici ▪ Di destinazione ◦ Accordi mai pubblici • Tier ◦ ISP Tier 1 ▪ Reti molto grosse con connettività intercontinentale ◦ ISP Tier 2 ▪ Nel “mezzo” ◦ ISP Tier 3 ▪ Offrono servizi ad aziende e clienti ◦ I collegamenti di peering si hanno tra ISP dello stesso livello • Neutral Access Point ◦ I vari ISP vogliono creare link di peering ◦ Si crea una LAN (= rete unicamente di L2) in cui tutti possono scambiarsi traffico con tutti ▪ … e non è detto che lo facciano 24 • Neutralità della rete ◦ Problema molto attuale ▪ Perchè un network provider dovrebbe lasciare la rete “gratis” a un ContentProvider e non partecipare agli utili? ▪ Non ci sono casi in cui può essere sensato modificare il traffico per ottenere determinati scopi? • Ad esempio QoS ◦ A favore e contro la Network Neutrality ▪ Operatori della rete tendenzialmente contro • Non potendosi fare gli “affari degli altri” ▪ In Europa si è tendenzialmente favorevoli # 25 #06 – BGP: Border Gateway Protocol [ ] • Routing interdominio ◦ Si può usare anche routing statico ▪ Sensato in quanto il routing interdominio è basato su accordi ▪ Le route non cambiano molto spesso • …però se cambiano sono problemi • ...e se devo configurare tanti router c’è pericolo di inconsistenza ◦ Protocolli caduti in disuso ▪ EGP • Non ci potevano essere percorsi ad anello chiuso ◦ Se riesco a raggiungere una destinazione da due parti sono dolori ◦ Non posso scegliere a caso perché potrebbero crearsi loop ▪ IDRP • BGP migliorato per le reti OSI • BGP ◦ Ha dentro le migliorie di IDRP, al netto dei fronzoli ▪ Grezzo se confrontato con quest’ultimo • …ma ci va bene perché a noi interessa imporre le politiche • Trasmissione affidabile degli update ◦ In BGP un router deve mandare annunci ai vicini e deve assicurarsi dell’inoltro ▪ Flooding impraticabile • Si usa comunque un meccanismo di Keep-Alive per sapere se chi c’è dall’altra parte “funziona” ▪ Uso TCP • Semplifica l’implementazione • Rallenta i messaggi di keep-alive (meccanismi controllo traffico) • Se il link è un po’ “ballerino”, eventuali perdite vengono compensate dal TCP ◦ Falso problema perché in realtà i link a questo livello sono molto affidabili • Path vector ◦ Lista degli AS da attraversare ▪ Se devo implementare una politica di routing che non deve passare per un determinato ISP è semplice ▪ Facile individuare loop • Il router annuncia percorso che contiene il mio AS? Non mando niente! • Altrimenti inserisco il mio numero di AS, faccio altre elaborazioni e mando ai vicini ◦ Parente del Distance Vector ▪ …ma più piccolo a parità di destinazioni • Costi in BGP ◦ Assenti nel senso IGP del termine ▪ Il costo non è inteso su tutto il percorso ◦ Scelta delle rotte fatta in base a degli attributi • Peers ◦ Router che parlano BGP tra di loro ◦ Non si scoprono tra di loro, ma vengono configurati ▪ Tuttavia si parlano all’inizio per capire la versione di BGP e il num. di AS 26 Router I-BGP e router E-BGP ▪ Annunci elaborati e propagati diversamente se si lavora internamente o esternamente a un AS • I-BGP e E-BGP hanno stesso protocollo, stesso formato, ma logica diversa ◦ …il che li rende due protocolli “diversi” ▪ Router E-BGP • Collegati direttamente ▪ Router I-BGP • Si parlano per mezzo di una rete IP • Full-mesh tra router I-BGP ◦ Dev’esserci full mesh di I-BGP session tra gli internal router ▪ Questo perché quando ci si scambia annunci tra router interni non viene cambiata la lista degli AS da attraversare • Quando un router riceve un I-BGP lo manda solo all’esterno ◦ Impraticabile con tanti router di bordo ◦ Alternative ▪ Route reflector • Uno dei router di bordo funziona da route reflector, propagando gli annunci a tutti gli altri • Topologia a stella SOLO PER BGP ◦ Continuano a valere le stesse regole per IGP ▪ Confederation • Divido il mio AS in mini-AS • Tra i mini-AS ci sono sessioni esterne ◦ Cade dunque la regola del “non propagare” ◦ Internamente al mini-AS c’è comunque full-mesh, ma la complessità diminuisce ▪ Ogni router BGP annuncia la lista delle destinazioni raggiungibili agli AS • Interne, imparate con protocollo IGP ◦ Quello che un router sa perché è contenuto nella tabella di routing NON è quello che comunica col BGP ▪ Quanto annuncia è comunque un sottoinsieme di quello che usa per raggiungere ◦ Se qualcuno ha la redistribuzione disattivata non includerà le rotte interne nei suoi annunci di routing ▪ Questo può portare a incongruenze • Esterne, imparate con BGP Perchè serve I-BGP? ◦ Da fare Sincronizzazione IGP-BGP ◦ I-BGP è importante per far propagare le informazioni di routing all’interno ▪ Per poter utilizzare rotte arrivate con BGP non basta “vedere” la route dai collegi ma essere sicuro che i router nell’AS sappiano raggiungere quella destinazione, altrimenti non posso usare la route Rotte “speciali” ◦ Rotte overlapped ▪ Con l’inoltro dei pacchetti tutto ok, c’è il Longest Prefix Match ◦ • • • 27 Sotto l’aspetto BGP, invece, si può annunciare solo l’aggregato • Va configurato ◦ Rotte aggregate ▪ Ottime in caso di rotte overlapped o rotte adiacenti con prefisso comune Attributi ◦ Codificati in formato TLV (Type – Length – Value) ▪ Includono una serie di flag che mi dicono come gestire l’attributo se è sconosciuto ◦ Attributi well-known ▪ Origin of the route • Data una certa destinazione, com’è che il router che sta facendo quest’annuncio l’ha scoperta? ◦ Redistribuita con IGP? ◦ EGP? ◦ Incompleta? ▪ Destinazioni non più raggiungibili ▪ AS_PATH • Ordinate: AS_SEQUENCE • Non ordinate: AS_SET ▪ NEXT_HOP • Usato nel caso in cui una rete contiene più router appartenenti a diversi AS ▪ Unreachable • Equivalente migliorato del poison reverse nei protocolli DV ◦ Altri attributi ▪ Local pref • Simile all’Inter-AS Metric, ma è interno all’AS ▪ Atomic aggregate • Quando si fa un’aggregazione bisogna dire che gli attributi specificati valgono solo per alcune destinazioni ▪ Aggregator • Quando un router fa un’operazione di aggregazione diventa un aggregator Strutture di memorizzazione annunci ◦ Adj-RIBs-In ▪ Informazioni ricevute dai peer ◦ Loc-RIB ▪ Annunci usati localmente per calcolare la routing table ◦ Adj-RIBs-Out ▪ Annunci da “buttar” fuori Decision process ◦ Usato per applicare le policies presenti in un DB ▪ Policies • Il BGP non sceglie l’annuncio migliore ◦ Esiste un modo per dire al router come valutare i vari attributi ▪ Nello scegliere il grado di preferenza di A non si guarda B ◦ Non ci interessa come viene implementato, basta che segua un preciso schema ▪ • • • 28 L’esito di applicazione delle politiche è un preference degree Formato dei messaggi ◦ Header ▪ Marker • Una specie di autenticazione un po’ arlocca ▪ Lunghezza ▪ Tipo Tipo dei messaggi ◦ OPEN ▪ Apre una sessione di peering • Serve a “identificarci” e a capire come ci si scambia le informazioni ▪ Campi • Versione • Numero di AS • Hold Time ◦ Periodicità con cui si mandano i Keep-alive • Dati di autenticazione ◦ UPDATE ▪ Messaggio che riguarda tante destinazioni diverse con gli stessi attributi • Ci sarà dunque 1 solo AS_PATH ▪ Attributi TLV ◦ NOTIFICATION ▪ Utile in caso di errori ◦ KEEP-ALIVE ▪ Pacchetto vuoto che contiene solo Marker, Lunghezza e Tipo ▪ Serve per dire che siamo ancora vivi ai vicini ◦ • • # 29 #07 – IP Multicast • Comunicazioni di gruppo ◦ Diverse possibilità ▪ Manda tante copie dello stesso pacchetto a tutti i destinatari • Ingestibile ▪ Usare un multicast server che farà da ricevitore e trasmettitore verso tutti • Funzionalità da aggiungere, single point of failure ▪ Più copie del pacchetto, fatte dove servono • Fatto a livello IP ◦ Serve supporto a livello host ▪ Estensione rispetto a IP tradizionale ◦ Concetto di host group ▪ Insieme di stazioni che ricevono lo stesso pacchetto ▪ Sono i destinatari che possono aderire a n host group • Indirizzi multicast ◦ Classe D ▪ 224.0.0.0 – 239.255.255.255 • 224.0.0.0 non viene usato • 224.0.0.0/24 sono indirizzi che, se usati, non vengno mai inoltrati dai router, restando solo sulla rete locale • 224.0.0.1 è il gruppo permanente che include qualsiasi host che capisce multicast • 224.0.0.2 è il gruppo di router • 239.0.0.0/8: GLOP Address ◦ Numero dell’AS nei 2 byte centrali ◦ Permette di creare gruppi multicast unici globalmente • 232.0.0.0/8: Source-Specific Multicast ◦ Si usano su una variante del protocollo PIM • Non esistono gruppi globali • Multicast sulle LAN ◦ Il software di rete è in grado di dire alla scheda di rete di ricevere i pacchetti per un certo MAC multicast ▪ Gli ultimi 23 bit del MAC devono essere gli ultimi 23 bit dell’IP ▪ I primi 24 bit sono 01:00:5E, il 25° bit è 0 • Le sovrapposizioni non sono un problema ◦ Pacchetti scartati a L3 ◦ IGMP ▪ Protocollo che permette alle stazioni di dire se sono interessate a far parte di un certo gruppo multicast ▪ Formato pacchetto • ◦ Type ▪ Host Membership Query • “C’è qualcuno interessato al gruppo?” 30 ▪ ▪ Host Membership Report • “Io sono interessato a un certo gruppo” Leave Group • “Voglio lasciare il gruppo” (non obbligatorio, c’è timeout) • Facilita la distribuzione dei pacchetti evitando di inviare a parti non più interessate • Max Resp Time ▪ Tempo max. entro cui rispondere (risposta non sempre subito) ◦ Checksum ◦ Group Address ▪ Versioni • v2 ◦ Retrocompatibile, con la possibilità di eleggere Designated Router ◦ Group-Specific Query ▪ “C’è qualche interessato al gruppo X?” • v3 ◦ Report Inclusion/Exclusion ▪ Permettono agli host interessati a un gruppo X di dire se interessano i pacchetti che arrivano dalla stazione S Inoltro al di fuori delle reti locali ◦ I router che supportano multicast ricevono i pacchetti, inoltrandoli ad altri router multicast ▪ Posso usare dei tunnel per passare anche da chi non supporta multicast ▪ Impostando threeshold limito la diffusione del pacchetto su Internet • concetto per ora solo teorico Protocolli di trasporto ◦ Uso UDP ▪ TCP funziona da punto a punto ▪ Dentro UDP si può usare RTP per applicazioni multimediali Routing multicast ◦ Si usano degli alberi di distribuzione ▪ Source Specific Tree • Ottimizzato • Più complicato ▪ Shared Tree • Meno ottimale • Carica meno il router nella fase preparatoria ◦ Algoritmi di instradamento ▪ Selective flooding • Manda (quasi) dappertutto ▪ Reverse Path Forwarding • Se il percorso migliore passa dall’interfaccia da cui ho ricevuto il pacchetto, vuol dire che quel pacchetto ha fatto la strada migliore dalla sorgente a me. Butto fuori. • Se a un certo punto mi arriva un pacchetto multicast da una stessa sorgente ma da un’altra interfaccia scarto il pacchetto. • Mancano meccanismi che si accertino dell’interesse dell’inoltro ◦ • • • 31 Reverse Path Broadcasting • Evoluzione del RPF • Si crea un albero e si introduce il concetto di interfaccia padre e interfaccia figlia ◦ Se il pacchetto arriva da un’interfaccia padre si accetta ed eventualmente si propaga ◦ Se il pacchetto arriva da un’interfaccia figlia si scarta ▪ Truncated Reverse Path Broadcasting • Risolve il problema generato dalla presenza di foglie non interessati al gruppo multicast ▪ Reverse Path Multicasting • Estende il TRPB a interi sottoalberi ▪ Link State Multicast Routing • Ogni router è in grado di calcolare l’albero di distribuzione verso ogni potenziale receiver ◦ Albero calcolato al bisogno, per migliorare le prestazioni • La mappa della rete è colorata grazie ai messaggi IGMP ▪ Core-based Tree • Crea un albero per gruppo • Il traffico va prima al core router e poi dal core router viene redistribuito ◦ Compromesso ◦ Il core diventa un punto nevralgico ◦ Poco adatto a situazioni altamente variabili ◦ Scalabilità dal punto di vista del routing e non dal punto di vista dell’inoltro dei pacchetti • I router periferici che riconoscono degli host interessati a un gruppo multicast inviano un messaggio di Join Request Protocolli di routing ▪ MBone • Non un protocollo di routing, ma una rete che supporta il multicast • Non è andata da nessuna parte, ma ai tempi era una notizia ▪ DVMRP • Basato su Distance Vector • Cerca di fare in modo che i router creino alberi di distribuzione specifici della sorgente e del gruppo multicast • I router cercano di calcolare il percorso verso il mittente per capire quale interfaccia è quella padre, e inoltrano solo i pacchetti che ricevono dall’interfaccia padre • Messaggi di PRUNE ▪ MOSPF • Variante dell’OSPF (Link State) ◦ Retrocompatibile con OSPF • Ci servono delle “bandierine” sulla mappa per identificare i membri di ogni gruppo • Si aggiunge un nuovo LSA (tipo 6) per descrivere rete attorno a un router • Evita di calcolare percorsi e di generare traffico inutile • Molto pesante sui router ▪ ◦ 32 PIM • Idea: calcolare i reverse path utilizzando le informazioni dell’unicast • PIM-DM, dense mode ◦ Sostanzialmente come DVRMP ▪ Inoltra i pacchetti per la nuova coppia (src, grp) su tutte le interfacce figle fino a quando viene ricevuto un prune ◦ Utile quando i membri di un gruppo sono molto vicini ◦ Adatto ad ambiti locali e metropolitani ◦ Non genera traffico di routing ◦ Carica poco la rete ◦ E’ poco efficiente in caso di destinazioni sparse ◦ Non risparmia banda • PIM-SM, sparse mode ◦ Ottimizza quando i membri sono distanti tra loro utilizzando un albero condiviso ◦ Usa un core based tree ◦ Il core si chiama Rendezvous Point e il core based tree è condiviso ◦ L’idea è quella di usare l’albero condiviso in condizioni normali e di cominciare, in un secondo momento, a tirare su un albero specifico se ci si accorge che tra due router ci si scambia un sacco di traffico • Designated Router ◦ Ha percorso migliore verso il rendezvous point ◦ Raccoglie periodicamente le richieste degli host • Bootstrap Router ◦ Letto dinamicamente ◦ Serve per far sì che tutti quanti possano sapere chi è il rendezvous point ▪ BGMP • Estensione del BGP • Usato per fare multicast tra AS Stato attuale ▪ Supportato da tutti, ma non abilitato • ...e se abilitato, mai su scala globale ▪ Farlo in modo affidabile non è facile ▪ Non ha molto successo perché non piace agli ISP ▪ ◦ # 33 #08 – Cenni sull’architettura degli apparati di rete • Prima generazione ◦ Architettura paragonabile a quella di un normale PC ▪ Interfacce di rete, NIC • PHY: componentistica “attaccata al filo” che trasforma il segnale in bit • MAC: passa dai bit alle trame ▪ Bus ▪ Memoria • Con routing table ▪ CPU ◦ Non possiamo fare le stesse cose con una workstation? ▪ No, i PC sono ottimizzati per gestire i programmi applicativi ◦ Limiti ▪ Capacità di processing (~ 500Mbps) ▪ Bus condiviso ▪ Accesso a memoria Seconda generazione ◦ • ◦ ◦ ◦ ◦ ◦ Distribuzione del traffico su N unità di elaborazione Spostamento di intelligenza nelle linecard ▪ NIC ora in grado di fare la maggior parte del processing Routing table e memoria separate CPU oppure ASIC a seconda delle prestazioni 34 Compiti dell’unità centrale di elaborazione • Lavora su pacchetti non gestibili dal packet processor a bordo delle NIC • Coordina il lavoro delle linecard Fast e slow path ▪ ◦ ▪ Slow path • CPU centrale riceve pacchetti quando non riesce a inviarli alla porta di uscita ▪ Fast path • La linecard inoltra direttamente in uscita grazie alla rete di interconnessione ▪ Conviene sempre concentrarci sul miglioramento del fast path Terza generazione ▪ • ◦ Il bus viene rimpiazzato da una matrice di commutazione, switching fabric ◦ Memoria sempre un bottleneck ▪ Gli apparati di fascia più alta dunque hanno diversi di memoria Multi-chassis ◦ Prendono piede grazie al passaggio dalla PSTN a un’architettura IP ◦ Globalmente costano meno, ma ne abbiamo tanti ◦ • # 35 #09 – Esempi di router commerciali • Famiglia high-end ◦ Tante sottofamiglie perché ci sono problematiche di tipo diverso ▪ Focus sull’inoltro del traffico ▪ Focus per l’enterprise • Numero di interfacce estremamente elevato ◦ Ottimi per le piccole-medie aziende che non vogliono comprare tanti apparati ◦ Caratteristiche comuni ▪ Commutazione HW • Per raggiungere velocità superiori ▪ Content networking • Si lavora anche su L4+ ◦ Differenze tra apparati high-end e apparati user ▪ In ambito domestico il SW è preconfigurato e non modificabile ▪ L’HW non fa moltissima differenza # 36 #10 – CDN: Content Delivery Networks • Panoramica ◦ Sono un pilastro portante dei servizi offerti su Internet ◦ Hanno un sacco di problematiche ◦ … ma anche una serie di vantaggi a livello di Quality of Experience ▪ l’utente percepisce un servizio buono con la rete che abbiamo • Che cosa sono ◦ E’ una generalizzazione delle cache del web ▪ Sarebbe bello avere proxy sparsi per il mondo con copie locali • L’utente però deve accedervi senza accorgersene ▪ Le copie del contenuto devono essere allineate al contenuto principale • Problemi con servizi dinamici ◦ Si vuole realizzare una sorta di web hosting distribuito ▪ Migliaia/milioni di clienti che accedono ▪ Basso lavoro del server centrale • Caratteristiche tecniche ◦ CDN è un servizio di overlay ▪ Al di sopra della rete ◦ Come facciamo a selezionare il server più vicino per il cliente X? ▪ DNS Based • L’utente, quando vuole accedere al servizio, ne usa il nome • Il gestore della CDN ha un certo numero di accordi coi gestori di DNS • Il DNS Server quando risponde guarda anche da dove proviene la richiesta ◦ Diverse problematiche da gestire, tra cui caching DNS ◦ Limitazioni ▪ La granularità con cui si sceglie il server è il nome • Non posso mandare a un ottimo “più ottimo” dell’ottimo di cnn.com ▪ Se il sito ha contenuti statici e dinamici, questi ultimi non possono essere distribuiti con una CDN • Devo distribuire i servizi • Akamai ◦ Soluzione di CDN molto flessibile ▪ Modificano la pagina web ▪ Se io scarico polito.it da Torino gli URL puntano a un qualcosa presente a Torino (es.: torino.akamai.net) ▪ Specifico, poco elegante ▪ Funziona • Estensioni ◦ Server load balancer ▪ Faccio generare HTTP/RTSP redirect su altri server in base al traffico • Non tanto semplice • Buono solo per server vicini tra loro ▪ Problemi • Gestione connessioni TCP problematica ▪ Soluzione normalmente adottata a livello data server # 37 #11 – Packet processing con libpcap/WinPcap • Libpcap/Winpcap ◦ Librerie opensource scritte in C che servono per interagire direttamente con la NIC ▪ Non è formalmente corretto, ma immaginiamo che sia così ▪ Possiamo generare e ricevere esattamente gli stessi pacchetti che verranno trasmessi sulla rete ◦ Cosa fanno e cosa non fanno ▪ Catturano pacchetti “crudi” ▪ Filtrano il traffico (es.: “cattura solo pacchetti TCP”) ▪ Kettura di traffico sia da network interface che da file ▪ Salvataggio del traffico catturato su un file ▪ Parsificazione del pacchetto (viene restituita una stringa di caratteri) ▪ Visualizzazione del contenuto del pacchetto (ci andrebbe del parsing) • Vengono in soccorso TCPDump e Wireshark ▪ Specificare un filtro durante la cattura ◦ Polling vs. event-driven ▪ Passi comuni • Ricerca degli adattatori di rete disponibili • Apertura dell’interfaccia di cattura • Compilazione del filtro • Impostazione del filtro ▪ Polling • Lettura dei pacchetti in un ciclo while(1) ◦ pcap_next_ex() ▪ Event-driven • Il programma si ferma su una call di tipo bloccante ◦ pcap_loop() • Processamento fatto con un handler chiamato dal SO ◦ Chiama una funzione user-defined ◦ Parsing ▪ Tutto delegato all’utente • “Facile” se il protocollo ha dimensioni prefissate ▪ Sulle macchine Intel inoltre bisogna considerare il problema del byte order dei numeri ◦ Considerazioni finali ▪ Creare codice che lavora sui pacchetti è relativamente semplice ▪ Scrivere codice efficiente è un altro paio di maniche • Il traffico arriva di continuo dalla rete, devo gestirlo in tempo ▪ Devo gestire un sacco di problemi di basso livello • Segmentazione IP • Tabella sessioni # 38 #12 – Software-based Packet Filtering • Packet filter ◦ CSPF ▪ Primo packet filter definito ▪ Si pone in parallelo agli altri protocol stacks ▪ Idee interessanti • Implementazione a livello kernel ◦ Il modulo che fa early demultiplexing è in parallelo alla pila protocollare ◦ Si è così in grado di recapitare molto velocemente dal kernel al packet filter ▪ Prima del CSPF infatti il demultiplexing si faceva a livello applicativo • Continui context switching tra user e kernel space, un suicidio ▪ Qui si cerca di fare demultiplexing già nel kernel • Bello, ma se ho un crash va in crash tutto il sistema • Batch processing ◦ Processo più pacchetti contemporaneamente ▪ Leggo tanti pacchetti anziché uno e li salvo in un buffer ▪ Il kernel li consegna in user space ▪ Viene effettuato il processing • Virtual machine ◦ Il packet filter non è un pezzo di codice ma un qualcosa che viene interpretato ▪ A seconda del valore del program counter posso, ad esempio, fare il load di una zona di memoria di 32 bit, portandola in un registro • La VM, prima di eseguire l’istruzione, fa alcuni controlli • Controlli di sicurezza ◦ Problema estremamente critico perché siamo a livello kernel ▪ Bytecodes validi ▪ Destinazioni valide ▪ Numero di istruzioni finito ▪ Garanzia di terminazione ▪ Letture e scritture in zone di memoria valide ▪ Consumo di memoria ◦ BPF ▪ Idee simili a CSPF • La virtual machine è register-based, più efficiente della stack-based di CSPF • Architettura globale di interesse ◦ Network Tap ▪ “Aggancio” al NIC Driver • Un pacchetto viene dirottato all’interno della pila protocollare di cattura ◦ Occorre una modifica del protocol stack ◦ libpcap 39 ▪ ◦ Fornisce all’utente tre servizi • Astrazione dell’interfaccia fisica sulla quale lavora • Creazione di un’espressione di filtro a partire da un linguaggio ad alto livello • Astrazione indipendente dal sistema della modalità di filtering WinPcap ▪ Porting di libpcap per Windows • Differenze ◦ Statistic mode ▪ Posso far direttamente calcolare dal kernel alcune statistiche ◦ Packet injection ▪ Posso iniettare pacchetti sulla rete ◦ Cattura remota ▪ Una macchina di monitor lancia la cattura su un determinato server ▪ Architettura • Kernel level ◦ NPF: Netgroup packet filter ▪ Molto simile a quella BPF ▪ Buffer circolare e più grande • Occhio alle racing condition ▪ Protocol stack parallelo • Impensabile una modifica dei driver della scheda di rete User level ◦ Due componenti ▪ packet.dll ▪ • • • OS-depending 40 In Windows non è possibile chiamare direttamente una funzione esportata dal kernel, ci serve un “cuscinetto” ◦ Viene garantita l’indipendenza dal SO: vita facile per il programmatore wpcap.dll ◦ ▪ • • Porting di libpcap sotto Windows ◦ Gestisce il buffer user space ◦ Gestisce le funzionalità che permettono di pilotare NPF ▪ Creazione e iniezione di filtri, etc... Migliorie • Ottimizzazione del processing • JIT • Il filtro viene eseguito in ASM86 all’interno del kernel rimappando l’istruzione BPF con un set di istruzioni X86 e “sistemando” gli offset ◦ Prestazioni ▪ Non ci sono ottimizzazioni globali ▪ Quando identifico una certa istruzione viene generato dell’opportuno Assembler e copiato in memoria ◦ Sicurezza ▪ vedi CSPF > Virtual machine > Controlli di sicurezza ◦ Costo ▪ JIT < codice interpretato < codice nativo Aumentare le prestazioni ◦ Leve ▪ Aumentare le prestazioni della cattura • Preferire il polling agli interrupt garantisce prestazioni migliori • Far “perdere” volontariamente alcuni pacchetti al NIC Driver ◦ Rischia di mangiarsi tutte le risorse ▪ Si va incontro a fenomeni di livelock ◦ Meglio morire da piccoli • Profiling dettagliato ◦ 50% speso tra NIC Driver e kernel ◦ 15% speso in tap processing ▪ Settaggio di bit per comunicare con SO • “Ho ricevuto il pacchetto, libera risorse...” ◦ 10% speso per associare il timestamping ◦ 20% abbondante speso per copie tra kernel space e user space ▪ • 41 5% scarso speso in filtraggio Creare dei componenti di analisi più intelligenti Fare ottimizzazioni architetturali • Modello di riferimento ◦ ▪ ▪ ◦ ▪ ▪ Network driver • Si rende conto che è arrivato un pacchetto, lo legge ed eventualmente manda una notifica al sistema • Miglioramenti ◦ Disaccoppiamento del processing della network card con l’IRQ ◦ Interrupt Mitigation ▪ HW based ▪ Quando arriva un pacchetto può venire recapitato al NIC Driver inviando un IRQ, oppure si possono accodare più pacchetti generando una singola IRQ. ◦ Interrupt Batching ▪ SW based ▪ Quando viene generato un INT per il NIC Driver, gli interrupt non vengono riabilitati subito. I pacchetti che arrivano vengono messi in RAM e memorizzati fino a nuovo ordine. ◦ Polling ▪ La scheda di rete viene preprogrammata per prendere dei pacchetti e metterli in RAM. Un timer scatena INT a intervalli regolari. ▪ Estremamente performante se ho alti carichi di lavoro ◦ HW Preprogrammato ▪ Preprogrammare l’HW può portare a benefici ◦ Memoria preallocata ▪ Risucire a riciclare i buffer senza dover riallocare memoria all’interno del kernel può portare a benefici Capture driver • Prende in consegna il pacchetto, fa un certo numero di operazioni e lo invia alle applicazioni 42 Miglioramenti ◦ Diminuire la quantità di dati da portare all’applicativo ▪ Catture snapshot • Salviamo solo un “riassunto” del pacchetto ▪ Buffer più grandi • Più abbiamo i polmoni grandi e meglio è ▪ Memoria condivisa tra kernel e user space • Come sicurezza non è il massimo • Ulteriori miglioramenti ◦ “Tirare via” il NIC Driver e includerlo nella pila di cattura ▪ La scheda diventa muta e devo riscrivere i driver ▪ Soluzioni commerciali • Entrambe tagliano fuori il SO, lo stack è dedicato alla cattura (no TCP/IP), la modifica è invasiva • Traditional NIC, via SW • Intelligent NIC, via HW Applicazioni • Miglioramenti sono possibili parallelizzando • ▪ # 43 #13 – SDN: Software Defined Networks • Panoramica ◦ Uno degli argomenti più “caldi” del momento ◦ Internet è sostanzialmente sempre lo stesso dal 1980 ▪ Si può paragonare Internet a una conduttura d’acqua in cui non viene aggiunta anidride carbonica ▪ Gli apparati di rete sono monolitici • Nessuno può modificarli tranne il costruttore • Diverso rispetto a quanto accade in altri mondi ▪ Un host a New York è uguale a un host che sta a Torino ▪ Interessa tendenzialmente più agli enterprise che agli end user ◦ Idea ▪ Pilotare le reti via SW • L’utente può modificare l’inoltro dei pacchetti ◦ Controller, load balancer... ▪ Disaccoppiamento dell’HW da tutto il resto • Gli apparati di rete diventano “stupidi” • Tutta l’intelligenza è fatta girare su un server esterno ▪ Centralizzazione del controllo • Facciamo girare (ad esempio) OSPF su un server centrale ◦ Ci piace poco perché in teoria puntiamo al distribuito ◦ In alcuni ambiti è buono ◦ Slices di rete ▪ Cappello per parlare di virtualizzazione e VLAN • L’utente ha il controllo di una porzione della macchina in cui installare il suo SO, sopra ovviamente al SO dell’operatore ◦ Vantaggi e svantaggi ▪ Vantaggi riportati qui sopra ▪ Semplificazione HW non sempre vantaggiosa • OpenFlow ◦ Standard definito per la southbound interface ▪ A nord non ho standard • Valore concentrato dove c’è l’applicazione ◦ Flow based ▪ Lavora sul flusso e non sui singoli pacchetti ◦ Controllo centralizzato ◦ Controllo di tipo reattivo ▪ Arriva del traffico al dataplane che non sa come gestirlo: viene mandato al controller ◦ Vantaggi e svantaggi ▪ Funzionicchia e comunque è una novità ▪ Prestazioni e scalabilità ridicole ▪ Va bene solo per applicazioni control plane • Data Plane Processing ◦ Secondo alcuni più importante del control plane ▪ Specie in ottica utente finale ◦ Uno dei grossi problemi degli operatori è l’utilizzo di tanti box per le varie 44 • funzioni di rete ▪ Costoso ◦ Network Service Chaining ▪ Usa OpenFlow ▪ I moduli sono in cascata sul traffico, ma non fisicamente in cascata sul filo ▪ Passiamo da un’architettura lineare a una di tipo stellato ◦ Network Function Virtualization ▪ Dal punto di vista concettuale simile a NSC ▪ I box sono virtualizzati su un server ▪ Diventa più facile partizionare il carico su server diversi Standardizzazione ◦ Non è chiaro se questa corsa allo standard sia necessaria ▪ C’è una notevole somiglianza all’architettura dei PC • …in cui ci sono pochi standard 45
© Copyright 2024 Paperzz