Indice personalizzato

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