Routing: trattazione dei protocolli RIP, OSPF e BGP
1. Routing: RIP, OSPF, BGP
Università degli studi dell'Aquila
Facoltà di Scienze Matematiche Fisiche e Naturali
Dipartimento di Informatica
Reti di Calcolatori, A.A. 20062007
Routing:
trattazione dei protocolli
RIP, OSPF e BGP
Lorenzo Sfarra, 159645
1
2. Routing: RIP, OSPF, BGP
Indice
1 Introduzione e concetti basilari
1 Introduzione
2 Routing
3 Routing table
2 Routing Statico e Dinamico
1 Routing Statico
2 Routing Dinamico
3 Protocolli di routing Classful e Classless
4 Autonomous System
3 RIP: Routing Information Protocol
1 Convergenza
2 Il problema delle subnet
3 Percorso predefinito
4 Punti chiave del RIP e compatibilità tra le diverse versioni
4 OSPF: Open Shortest Path First
1 Introduzione
2 Costi e metrica
3 Tipi di area
4 Tipi di router
5 Formato dei pacchetti e scoperta dei router vicini
6 Il protocollo Hello
7 Scambio di informazioni
8 Gestione dei percorsi
9 Link virtuali
5 BGP: Border Gateway Protocol
1 Funzionamento del BGP
2
3. Routing: RIP, OSPF, BGP
2 Messaggi BGP
3 Attributi
4 Load Balancing
5 Connessione a Internet
6 Possibili problematiche ed eventuali soluzioni
7 Implementazioni Open Source del BGP
6. Fonti
3
4. Routing: RIP, OSPF, BGP
Introduzione e concetti basilari
Introduzione
Il metodo utilizzato nel documento è quello di partire da concetti espressi in maniera poco
formale e, eventualmente, poco completa, per poi formalizzare e completare i concetti
espressi nel corso del documento.
Termini e concetti saranno specificati e spiegati più o meno dettagliatamente in base
all'importanza che ricoprono nell'argomento trattato.
Senza entrare nel merito di argomenti non strettamente inerenti all'argomento trattato,
verranno brevemente descritti in questa prima parte del documento alcuni termini e
concetti indispensabili in quanto collegati ai concetti trattati.
4
5. Routing: RIP, OSPF, BGP
Routing
Una prima definizione informale di Routing:
Con il termine routing ci si riferisce alla selezione dei percorsi
sui quali mandare i dati in una rete di computer.
Per cui, se uno studente dal laboratorio dell'Università dell'Aquila vuole effettuare il
download della cartina della città di Londra da un sito web locale (quindi, “fisicamente”
collocato a Londra), i diversi pacchetti IP che occorre acquisire per questa operazione
devono seguire un certo percorso da Londra al computer del laboratorio dell'Università
dell'Aquila dal quale lo studente sta compiendo questa operazione.
Il percorso stesso è composto in linea generale dalle due macchine interessate
nell'operazione e da diversi router che si trovano “nel mezzo” del percorso.
Quindi, cambiando la definizione precedente, possiamo ottenerne una leggermente più
accurata:
Con il termine routing si indica la selezione dei percorsi
sui quali mandare i dati in una rete di computer
in termini di operazioni per muovere un pacchetto
da un router all'altro per raggiungere la destinazione finale,
secondo determinate regole.
Routing Table
È stato introdotto il concetto di router perchè ha un'importanza centrale nell'argomento
trattato.
Un caso basilare: prendiamo un router con alcune reti direttamente connesse ad esso.
Il router avrà un accesso “immediato” a queste reti, senza bisogno di operazioni o
meccanismi per scoprire come accedere ad esse.
Possiamo dire che, una volta che queste reti sono connesse al router e attivate, sono
automaticamente visibili nella routing table del router in questione.
5
6. Routing: RIP, OSPF, BGP
Nella sua forma basilare, una routing table deve contenere almeno due informazioni:
1. la rete di destinazione;
2. il prossimo “passo” da compiere verso questa rete.
Queste informazioni sono entrambe indispensabili: un router non conosce il percorso
completo per raggiungere una destinazione, ma solamente il passo successivo per
raggiungerla.
Come la routing table possiede o acquisisce queste informazioni?
Routing Statico e Dinamico
La definizione di routing finora fornita è ancora ben lontana dall'essere completa.
Prima di definire il routing statico e quello dinamico e rispondere alla domanda
precedente è bene citare un concetto essenziale:
cosa si intende per percorso più corto.
Ci sono diversi elementi che porteranno a definire un determinato percorso come il più
corto; uno di questi, intuitivamente, è il numero di passi (hops) tra la posizione corrente e
la destinazione. Il solo conteggio del numero di passi spesso può non essere un buon
metodo, in quanto alcuni dei passi del percorso scelto potrebbero includere tratti in quel
momento inutilizzabili, o saturi dato il traffico di dati intenso.
Quindi la scelta del percorso più corto dipende da diversi fattori:
● Numero di passi;
● Traffico;
● Throughput, ovvero la capacità di trasmissione effettivamente utilizzata;
● affidabilità;
● altro
Routing Statico
Immaginando di essere in una città che non conosciamo, e di dover raggiungere un luogo
6
9. Routing: RIP, OSPF, BGP
Protocolli di routing
Classful e Classless
Nei protocolli classful, la netmask dell'indirizzo IP non è richiesta perchè la lunghezza
della maschera è parte dell'indirizzo IP stesso: una ispezione dei primi n bit dei 32 bit
dell'indirizzo IP permettevano di capire a quale classe apparteneva l'indirizzo (classi A, B,
C, o molto raramente anche D ed E). Il Classful Networking è considerato obsoleto
nell'attuale internet.
Protocolli meno recenti, quali RIP e IGRP, appartengono alla famiglia dei protocolli
classful. Protocolli più recenti, quali OSPF e RIP2, sono classless.
Con la parola “classless” si indica che le decisioni di routing non sono legate alla classe
dell'indirizzo IP (A, B o C), ma potrebbero essere basate su qualunque porzione dei 32 bit
dell'indirizzo IP, come specificato dalla mask.
Questo implica che nelle comunicazioni interne alla rete, i pacchetti dei protocolli
classless devono fornire almeno una informazione aggiuntiva rispetto ai protocolli
classful, ovvero la subnet mask. Un'altra caratteristica dei protocolli classless è il
supporto di CIDR, il cui uso primario è quello di ridurre la grandezza della routing table
aggregando diversi indirizzi in un unica voce. Ad esempio, tutti gli indirizzi tra
192.168.0.0 e 192.168.255.0 possono essere così rappresentati con 192.168.0.0/16.
Autonomous System
Si definisce Autonomous System (AS) una rete sotto una singola autorità amministrativa,
che ne deciderà in tutto e per tutto il comportamento e le caratteristiche: si definiscono
Interior Gateway Protocols (IGPs) i protocolli di routing che agiscono all'interno di un AS.
Al contrario, i protocolli che supportano il routing tra i diversi AS rappresentano gli
Exterior Gateway Protocols (EGPs). Ad ogni AS è assegnato un numero, chiamato AS
number (ASN). Gli ASN rappresentano una informazione estremamente importante in
quanto identificano univocamente la rete a cui sono assegnati.
L'entità responsabile dell'assegnazione degli ASN è la Internet Assigned Numbers
Authority (IANA), responsabile anche di altre assegnazioni, come gli indirizzi IP.
Si può fare una suddiviosione in tre tipologie di Autonomous System:
9
10. Routing: RIP, OSPF, BGP
● multihomed AS: è un AS che mantiene connessioni tra più ISP. Può quindi
rimanere connesso a internet anche nell'eventualità di un malfunzionamento
completo di uno dei suoi ISP. Non permette invece il traffico tra un ISP e l'altro al
suo interno;
● stub AS: è un AS che è connesso ad un unico ISP. Dati spediti/ricevuti a/da una
destinazione al di fuori dell'AS devono attraversare questa connessione. Un
esempio di stub AS è la rete di un campus;
● transit AS: è un AS che fornisce una connessione attraverso se stesso tra diverse
reti ad esso connesse. Una qualsiasi rete P può connettersi ad una qualsiasi rete S
attraverso un transit AS. Gli ISP sono sempre dei transit AS, dovendo “per
definizione” (e per business) connettere diverse reti.
RIP: Routing
Information Protocol
Il RIP è un esempio di Distance Vector e fa parte della famiglia degli IGP.
In realtà il RIP vanta tre versioni, RIPv1 (definito nel RFC 1058), RIPv2 (RFC 2453) e
RIPng (RFC 2080), delle quali si documenterà l'idea di base, comune, ed eventualmente
evidenziate le differenze.
Come già detto, un router ha nella sua routing table tutte le reti direttamente connesse
ad esso, e questo ancor prima di qualsiasi aggiornamento con altri router.
A questo punto, il router può scambiare con i router vicini varie informazioni sui percorsi,
tramite “interrogazioni” ogni <tot> secondi (30 secondi di default).
In particolare, c'è un preciso formato del pacchetto RIP, ed i pacchetti vengono spediti e/o
ricevuti usando il protocollo UDP.
Quindi, il pacchetto RIP ha un formato predefinito, di 9 campi come mostrato n ella
figura che segue, che associa un numero che rappresenta la grandezza in byte ad ogni
campo.
La figura è presa direttamente dal RFC 1058.
La grandezza in byte è specificata tra parentesi, e ad ogni campo è associata una breve
descrizione. L'unica aggiunta alla figura del RFC è la lettera scritta tra parentesi prima
della descrizione del campo, aggiunta per far riferimento al campo stesso nel corso del
documento con maggiore facilità.
10
11. Routing: RIP, OSPF, BGP
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| (A)command(1) | (B)version (1)| (C)must be zero (2) |
+---------------+---------------+-------------------------------+
|(D)address family identifier(2)| (C)must be zero (2) |
+-------------------------------+-------------------------------+
| (E) IP address (4) |
+---------------------------------------------------------------+
| (C) must be zero (4) |
+---------------------------------------------------------------+
| (C) must be zero (4) |
+---------------------------------------------------------------+
| (F) metric (4) |
+---------------------------------------------------------------+
.
.
● A: rappresenta il comando, ovvero se il pacchetto è una richiesta o una risposta. La
prima richiede, appunto, ad un router di inviare la parsing table (tutta o parte di
essa); la seconda potrebbe essere la risposta ad una richiesta o può rappresentare
un regolare aggiornamento, contenente informazioni della routing table;
● B: rappresenta il numero di versione del RIP;
● C: rappresenta un campo non usato;
● D: AddressFamily Identifier (AFI): rappresenta l'address family usata, poichè RIP
è designato per mantenere informazioni dei percorsi per diversi protocolli. Per
esempio, l'AFI per IP è 2;
● E: specifica l'indirizzo IP;
● F: specifica la metrica, ovvero quanti router sono stati attraversati (in gergo,
quanti passi (hop) sono stati fatti). Un valore tra 1 e 15 indica un percorso valido,
16 indica un percorso non raggiungibile.
Sono permesse fino a 25 occorrenze di AFI, indirizzo IP e metrica in un singolo pacchetto
RIP.
Le cose sono leggermente diverse per quanto riguarda le versioni più recenti del RIP: ad
esempio, il RIPv2 permette di includere maggiori informazioni in un singolo pacchetto e
fornisce un semplice meccanismo di autenticazione che non è supportato nel RIPv1; una
breve descrizione del RIPv2 è presente alla fine della sezione dedicata al RIP,
sottolineando soprattutto la relazione tra le due versioni.
Un router che riceve uno di questi pacchetti, lo interpreterà per aggiornare
eventualmente i dati che già possiede: se il pacchetto contiene il percorso per una rete di
11
14. Routing: RIP, OSPF, BGP
Il problema delle subnet
Come già detto, gli algoritmi di routing si differenziano anche come classful e classless.
Riassumendo brevemente, i primi operano nei classful boundaries, cioè non gestiscono le
subnet (detti anche FLSM, Fixed Lenght Subnet Mask); i secondi gestiscono
pienamente le subnet, quindi operano senza le limitazioni date dalle classi di
appartenenza, e supportano VLSM, Variable Lenght Subnet Mask.
Il RIP fa parte della prima categoria descritta, e questa è una limitazione non
indifferente: la probabile causa è il fatto che RIP è il più datato tra i protocolli di routing
dinamico oggi in uso, in quanto le specifiche risalgono al 1988. Non a caso, nel 1995 è
stato pubblicato l'RFC 1388 che specifica il successore di RIP, RIPv2, che presenta una
valida alternativa in ambienti in cui non si possono ignorare le subnet.
In realtà, se pur con pesanti limitazioni, si può affrontare questa situazione anche con il
RIP. Poichè, come abbiamo detto, il RIP è FLSM, consente di utilizzare il subnetting
mantenendo però la netmask fissa per tutta la rete.
Se un aggiornamento è della stessa major class della interfaccia da cui proviene il router
assegna la stessa netmask dell’interfaccia; se un aggiornamento è di major class
differente assumerà una maschera naturale ma se nella tabella di routing vi è un’altra
sottorete qualsiasi della stessa major class, scarta l’aggiornamento.
Percorso Predefinito
Una routing table non deve necessariamente contenere tutti i percorsi nella rete per
raggiungere tutte le destinazioni.
Questa affermazione è possibile grazie alla presenza del default route.
Quando un router non possiede un percorso specifico per arrivare ad una certa
destinazione, controlla di avere un default route nella routing table, e se è così invia ad
esso i pacchetti per quella destinazione. Milioni di percorsi in internet possono essere
rappresentati da una semplice voce, corrispondente al default route.
In RIP, il default route è rappresentato con l'indirizzo IP 0.0.0.0, conveniente anche per la
sua assenza di ambiguità che si potrebbe creare con le classi di indirizzi IP.
I vantaggi di un percorso predefinito sono evidenti. In particolare, la routing table non
dovrà contenere migliaia di percorsi: questo implica che la banda della rete e la CPU del
router stesso sono notevolmente allegeriti per quanto riguarda le operazioni di
aggiornamento.
Tuttavia, presenta anche alcuni svantaggi: se il router deve inviare dei dati ad una
14
15. Routing: RIP, OSPF, BGP
destinazione non attiva, non funzionante o non ancora definita, i pacchetti sono inviati
ugualmente nella rete, attraverso il percorso predefinito.
Punti chiave del RIP e
compatibilità tra le diverse versioni
RIP è un protocollo relativamente semplice, affidabile e facilmente configurabile.
La struttura è molto consistente, testimoniato dal fatto che le diverse versioni che lo
hanno caratterizzato lavorano bene insieme.
Tuttavia, a causa di alcune problematiche introdotte precedentemente, rappresenta
un'ottima scelta per reti di piccole dimensioni ed omogenee, ma per reti di grandi
dimensioni la scelta migliore difficilmente ricadrà su di esso.
Alcune ragioni sono:
● La gestione della banda e dei ritardi è pressoché nulla;
● Lo scambio di aggiornamenti ogni 30 secondi sui percorsi non è efficiente,
soprattutto per reti di grandi dimensioni;
● Il tempo di convergenza può essere molto (troppo) alto;
● Variable Length Subnet Mask (VLSM) non è supportato, in quanto non vengono
scambiate informazioni sulla subnet mask tramite gli aggiornamenti;
● il diametro della rete viene ristretto a 15 passi.
Il RIPv2 non è trattato in questo documento, ma per rafforzare la tesi della struttura
robusta del RIP e della compatibilità tra le versioni, possiamo notare alcuni concetti
chiave.
Innanzitutto, RIPv2 non è un protocollo basato sulla prima versione ma rielaborato
completamente dal principio: in sostanza, è il RIPv1 con alcuni campi addizionali nel
pacchetto di aggiornamento, che forniscono alcune funzionalità in più.
È quindi inevitabile che anche il RIPv2 soffrirà degli stessi problemi sulla convergenza e
erediterà molti limiti del predecessore, come il limite di 16 hops.
Ad ogni modo, contiene anche diversi miglioramenti.
Un primo miglioramento, che fornisce un servizio necessario all'evoluzione delle reti in
questi anni, è l'integrazione delle informazioni sulla subnet mask, che lo rende un
protocollo classless, che supporta il VLSM. Un'altra aggiunta importante è
15
20. Routing: RIP, OSPF, BGP
Un area border router (ABR) è un router che connette una o più aree OSPF alla principale
rete backbone. È considerato un membro di tutte le aree a cui è connesso. Un ABR
possiede diverse copie del linkstate database in memoria, una per ogni area.
Autonomous system boundary router
Un autonomous system boundary router (ASBR) è un router connesso a più di un AS e
scambia informazioni con router in altri AS. ASBR solitamente eseguono un protocollo di
routing nonIGP, come il BGP.
Un ASBR è utilizzato per distribuire i percorsi ricevuti da altri AS all'interno del proprio
AS; ci si riferisce a questi percorsi importati con il nome di percorsi esterni (external
routes).
Internal Router
In questo caso, la descrizione è molto breve e semplice: un internal router (IR) ha
interfacce in una sola area.
Backbone Router
Ci si riferisce ad un router con un'interfaccia nell'area 0 con la definizione backbone
router. Un backbone router può avere interfacce su altre aree. La definizione include
quindi tutti gli area border router, ma un backbone router potrebbe anche essere un
router che è connesso solamente ad altri backbone router, e che non è parte di nessuna
altra area escludendo l'area zero. Quindi, un ABR è sempre anche un backbone router, ma
un backbone router non è necessariamente un area border router.
Designated Router e
Backup Designated Router
20
21. Routing: RIP, OSPF, BGP
Il designated router (DR) e il Backup Designated Router (BDR) sono eletti tra tutti i
router di una rete multiaccesso.
Il DR è eletto in base a diversi criteri:
1. vengono scartati tutti i router OSPF con priorità 0, che non potranno quindi mai
diventare un DR o BDR;
2. viene segnato l'ID del DR e del BDR attuali;
3. tra tutti i router che dichiarano loro stessi come Backup Designated Router viene
eletto il nuovo BDR. Tutti i router candidati ad essere DR automaticamente
escludono loro stessi dal candidarsi ad essere BDR. Tra i router candidati, quello
con priorità più alta verrà eletto BDR; se nessun router dichiara di essere BDR
sono esaminati tutti i router che che non hanno già dichiarato se stessi come DR;
4. tra tutti i router che dichiarano loro stessi come Designated Router viene eletto il
nuovo DR. Se non ci sono candidati ad essere DR, viene automaticamente scelto il
BDR appena eletto;
5. deve essere assicurato che nessun router dichiari se stesso sia come DR che come
BDR. A tal proposito si ripetono i passi precedenti se:
● il router che sta effettuando il calcolo è il nuovo DR;
● il router che sta effettuando il calcolo è il nuovo BDR;
● il router che sta effettuando il calcolo non è più il DR;
● il router che sta effettuando il calcolo non è più il BDR;
6. lo stato dell'interfaccia sarà propriamente impostato; se ad esempio il router che
sta effettuando il calcolo è il nuovo Designated Router lo stato sarà DR, se è il
nuovo Backup Designated Router lo stato sarà Backup, DRother altrimenti;
7. se l'identita' del Router Designato o del Router Designato di Backup e' cambiata
viene invocato l'evento AdjOk? su tutti i vicini il cui stato è almeno 2Way: questo
causerà una situazione in cui le adiacenze potrebbero dover essere riesaminate.
Perchè eleggere DR e BDR?
Se consideriamo una rete di diversi router e che in un router cambia il database che
mantiene le informazioni topologiche della rete, se questo scambia con tutti gli altri
router della rete le nuove informazioni ci sarà un grande traffico di pacchetti OSPF
(overhead).
Con la presenza del DR e del BDR, invece, ogni router dialoga solamente con essi, dato
che il DR e il BDR provvedono a inoltrare le informazioni a tutti i router.
21
22. Routing: RIP, OSPF, BGP
Il DR quindi possiede una completa conoscenza della topologia della rete. È per questo
che il DR può farsi carico di inviare ai vari router gli eventuali aggiornamenti, evitando
così l'overhead causato se ogni router dovesse mandare aggiornamenti a tutti gli altri.
L'elezione del DR e del BDR avviene in ogni rete multiaccesso, per cui un router potrebbe
essere un DR su una interfaccia ma non su un'altra.
Formato dei Pacchetti e
Scoperta dei Router Vicini
I router OSPF devono scoprire l'esistenza di ogni altro router prima di poter scambiare le
informazioni con essi. Una volta che un router ha completato il suo database topologico,
può utilizzare l'algoritmo SPF per calcolare il percorso più breve per ogni destinazione.
Le informazioni “viaggiano” all'interno dei pacchetti OSPF.
I pacchetti OSPF sono incapsulati direttamente in IP, con il campo per il protocollo
impostato a 89. L'indirizzo IP di destinazione in OSPF dipende dal tipo di rete.
OSPF utilizza due indirizzi IP multicast sulle reti broadcast e pointtopoint: 224.0.0.5
per tutti i router OSPF e 224.0.0.6 per i router DR e BDR.
Utilizzare indirizzi multicast è più efficiente dell'utilizzo di IP broadcast, in quanto, se
fossero usati questi ultimi, tutti i dispositivi connessi dovrebbero ricevere il pacchetto
broadcast, aprirlo ed eventualmente scartarlo se non stanno eseguendo OSPF.
L'intestazione di tutti i pacchetti OSPF è comune. La seguente figura, presa direttamente
dall' RFC 2328, mostra il formato dell'intestazione dei pacchetti OSPF:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | Type | Packet length |
+---------------+---------------+-------------------------------+
| Router ID |
+---------------------------------------------------------------+
| Area ID |
+-------------------------------+-------------------------------+
| Checksum | AuType |
+-------------------------------+-------------------------------+
| Authentication |
+---------------------------------------------------------------+
22
23. Routing: RIP, OSPF, BGP
| Authentication |
+---------------------------------------------------------------+
Una breve descrizione dei campi:
1. Version #: La versione di OSPF in uso. La versione corrente è la 2.
2. Type: Il tipo di pacchetto OSPF. I tipi di pacchetto sono 5 (che verranno descritti in
seguito):
● Tipo 1: Hello;
● Tipo 2: Database Description;
● Tipo 3: Link State Request;
● Tipo 4: Link State Update;
● Tipo 5: Link State Ack;
3. Packet length: la grandezza del pacchetto OSPF, includendo l'intestazione;
4. Router ID: l'ID del router che ha originato il pacchetto OSPF;
5. Area ID: l'ID dell'area della rete in cui questo pacchetto è stato mandato;
6. Checksum: il checksum per l'intero pacchetto, inclusa l'intestazione;
7. Au Type: il tipo dello schema di autenticazione in uso. I possibili valori per questo
campo sono:
● 0: nessuna autenticazione;
● 1: autenticazione con testo in chiaro;
● 2: MD5 checksum;
8. Authentication: i dati per l'autenticazione.
Il Protocollo Hello
Ogni router genera pacchetti hello su ogni sua interfaccia abilitata per farlo.
I router quindi scoprono i rispettivi vicini (neighbors) rimanendo in ascolto di tali
pacchetti.
Il formato di un pacchetto hello, così come mostrato nell'RFC 2328, è il seguente:
23
24. Routing: RIP, OSPF, BGP
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | 1 | Packet length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Router ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Area ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | AuType |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Network Mask |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HelloInterval | Options | Rtr Pri |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RouterDeadInterval |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Designated Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Backup Designated Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Neighbor |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
Tralasciando delle spiegazioni date precedentemente, i campi significativi sono:
● Router ID: è il nome univoco che distinguerà il router nel grafo della rete. La
prima volta che OSPF verrà eseguito in un router, proverà ad assegnargli un
Router ID: se non può essere stabilito, il processo termina immediatamente. Per
scoprire il router ID, si sceglie l'indirizzo IP più alto per quanto riguarda le
interfacce di loopback; se non ci sono interfacce di loopback, sceglie l'indirizzo più
alto tra le interfacce attive. Il router ID viene scelto una volta per tutte, e se ad
esempio l'interfaccia che ha fornito tale ID non è più attiva, il router ID non
cambia;
● Checksum: il checksum per il pacchetto hello;
● Network Mask: la maschera della rete dell'interfaccia su cui viene mandato il
pacchetto hello;
● HelloInterval: il tempo che deve passare tra un pacchetto hello e il successivo. Il
valore predefinito è 10 secondi;
24
25. Routing: RIP, OSPF, BGP
● Options: le capacità opzionali supportate dal router;
● Rtr Pri: la priorità del router. Utilizzata nel calcolo del DR; se il valore di questo
campo è 0, il router è escluso dalla possibilità di diventare DR o BDR;
● RouterDeadInterval: il numero di secondi prima di dichiarare il router dead
(significato letterale: morto). Il numero di secondi rappresenta il tempo in cui il
router non riceve pacchetti hello;
● Designated Router: l'identità del DR per questa rete. In questo caso è
identificato dal suo indirizzo IP. Se questo campo contiene il valore 0.0.0.0 non c'è
alcun Designated Router;
● Backup Designated Router: l'identità del BDR per questa rete, identificato dal
suo indirizzo IP. Se questo campo contiene il valore 0.0.0.0 non c'è alcun Backup
Designated Router;
● Neighbor: i Router ID di ogni router da cui si è ricevuto un pacchetto hello
all'interno dell'ultimo deadinterval.
Per quanto riguarda le relazioni tra neighbor, possiamo distinguere:
● reti pointtopoint: i router in queste reti stabiliscono sempre una adiacenza;
● reti broadcast: i router in questa rete mantengono una adiacenza solo con il DR e
con il BDR, mantenendo una relazione bidirezionale (2way) con gli altri router;
● Nonbroadcast multiaccess (NBMA) networks: i router in queste reti
stabiliscono adiacenze solo con il DR e il BDR;
● Virtual Link: i router su link virtuali stabiliscono sempre un'adiacenza.
Scambio di informazioni
Per descrivere i contenuti del database LinkState tra i router viene usato il pacchetto
database description (DD); potrebbero essere usati diversi pacchetti per descrivere il
database. OSPF richiede che solo i router adiacenti debbano rimanere sincronizzati sul
database topologico che descrive l'area cui appartengono. Questo porta ad una riduzione
del traffico sulla rete. Il processo di sincronizzazione del database parte non appena si
cerca di stabilire una adiacenza. Per questo scopo è usata una procedura pollresponse, in
cui un router è designato come master e l'altro come slave. Il master manda pacchetti DD
(polls) ai quali verrà “risposto” con pacchetti DD mandati dallo slave (response). Per
assicurare che la risposta ricevuta sia effettivamente corrispondente alla domanda
effettuata, viene utilizzato un numero di sequenza, ovvero un intero di 32 bit.
Concluso l'intero processo di sincronizzazione, l'adiacenza viene considerata pienamente
funzionante e mantenuta attiva tramite l'invio ad intervalli regolari di pacchetti Hello.
25
26. Routing: RIP, OSPF, BGP
Il formato del pacchetto Database Description, così come mostrato nell'RFC 2328, è molto
simile ai pacchetti Link State Request e Link State Acknowledgement, ed è il seguente:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | 2 | Packet length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Router ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Area ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | AuType |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface MTU | Options |0|0|0|0|0|I|M|MS
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DD sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+- -+
| |
+- An LSA Header -+
| |
+- -+
| |
+- -+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
I campi chiave nell'header LSA sono: advertising router, LS type e link state ID: questi
campi insieme univocamente identificano l'LSA. Il primo è l'ID del router che ha generato
l'header LSA, il secondo identifica l'LSA che segue e il terzo dipende dal tipo di LS. Una
volta ricevuti gli headers LSA dei pacchetti DD, entrambi i router controllano se questa
parte della rete è già contenuta nei loro database LS. Per fare ciò vengono confrontati i
campi appena citati dell'header LSA nel database LS del router: se non viene trovato
alcun risultato, o se il risultato trovato ha un numero di sequenza più basso, viene
richiesto l'LSA completo, usando il pacchetto link state request. In risposta a questo
pacchetto, un router invia un link state update contenente l'LSA, che descrive la parte
della rete in questione. Tutti i link state update vengono “riscontrati” tramite i pacchetti
link state acknowledgment.
Ci sono diversi tipi di LSA, differenti per struttura, funzione e per il nome che assumono
a seconda del tipo. Sono brevemente riassunti nella seguente tabella:
26
27. Routing: RIP, OSPF, BGP
Tipo LS descrizione LSA
tipo 1 Sono i router LSA.
Descrivono gli stati delle interfacce del
router.
tipo 2 Sono i network LSA.
Descrivono l'insieme dei router collegati
alla rete.
tipo 3 / tipo 4 Sono i summary LSA.
Descrivono i percorsi tra le aree.
Originati dagli ABR, i summary LSA di
tipo 3 descrivono i percorsi per le reti,
mentre i summary LSA di tipo 4 descrivono
i percorsi per i ASBR
tipo 5 Sono gli ASexternalLSA. Originati dagli
ASBR, descrivono i percorsi per le
destinazioni esterne all'AS. Un route di
default per l'AS può essere descritto anche
da un ASexternalLSA.
Gestione dei percorsi
Al contrario dei RIP, l'OSPF non raggruppa automaticamente i percorsi: i meccanismi per
farlo devono essere impostati manualmente su un ABR o ASBR. Ma, sempre al contrario
del RIP che gestiva solo numeri di rete classful, permette un raggruppamento su un
qualunque numero di bit. Sebbene necessario per ridurre la grandezza del database che
mantiene la topologia della rete, questo processo in OSPF è molto dispendioso in termini
di risorse quali la memoria del router, e soprattutto in reti molto grandi questo rallenta
tutti gli altri processi, incluso il calcolo del percorso più corto.
L'interarea route summarization è attuata sugli ABR ed è applicata ai percorsi
all'interno dall'AS; L'external route summarization agisce invece per i percorsi esterni ed
27
31. Routing: RIP, OSPF, BGP
Ci sono quattro tipologie di messaggi BGP: Open, update, notification e keepalive.
Un messaggio open è spedito subito dopo che il threeway handshake TCP è completato.
Il suo compito è aprire una sessione di comunicazione tra peer; i messaggi open sono
confermati utilizzando un messaggio keepalive e deve essere confermato prima che i
pacchetti update, notification e keepalive possano essere scambiati.
Ogni messaggio open spefica diversi parametri:
● il numero che rappresenta la versione del BGP;
● il numero che rappresenta l'AS;
● l'hold timer, ovvero la durata dell'inattività ammessa prima che il peer che ha
spedito il messaggio open chiuda la sessione;
● identificatore BGP: è rappresentato dell'indirizzo di loopback più alto del router e
la sua funzione è quella di identificare univocamente il router che ha spedito il
messaggio open;
● Lunghezza dei parametri opzionali.
Ogni peer BGP potrebbe autenticare ogni altro peer utilizzando l'algoritmo MD5,
utilizzando il campo dei parametri opzionali.
Un messaggio update è utilizzato per fornire aggiornamenti di routing ad altri sistemi
BGP, permettendo di costruire una visione consistente della topologia della rete:
annunciano prefissi ad un peer BGP. Questi aggiornamenti sono effettuati mediante TCP
per assicurare un trasferimento affidabile e per assicurarsi, appunto, che le informazioni
arrivino a destinazione. Prima o poi un malfunzionamento della rete o alcuni
cambiamenti faranno sì che il peer che annuncia un prefisso perderà il suo percorso per il
prefisso che annuncia, per cui c'è la necessità, da parte dei messaggi update, di fornire
anche la possibilità di “ritirare” i prefissi annunciati precedentemente.
Un messaggio notification è inviato quando viene individuata una condizione di errore.
L'utilizzo principale è quello di chiudere una sessione attiva e informare tutti i router
connessi del perchè la sessione è stata chiusa: per fare ciò viene utilizzato il campo error
code che identifica il tipo di errore.
Un messaggio keepalive notifica i peer BGP che un dispositivo è attivo; questo tipo di
messaggio è spedito in un periodo di tempo tale da assicurare che la sessione non scada
(ad esempio, i router Cisco utilizzano un valore pari a 60 secondi).
Attributi
31
33. Routing: RIP, OSPF, BGP
Load Balancing
BGP è un protocollo Distance Vector che utilizza la metrica più bassa per selezionare il
percorso migliore per una certa destinazione, analogamente al RIP, ma al contrario di
quest'ultimo, il processo per decidere il percorso migliore è decisamente più complesso, in
quanto entrano in gioco diversi fattori quali gli attributi definiti.
Il caso più semplice si ha quando c'è un solo percorso per un dato prefisso, e se questo è il
caso, il processo di decisione termina immediatamente.
Se invece non è questo il caso, l'algoritmo per decidere il percorso prende come input il
numero dei percorsi verso lo stesso prefisso. Ogni percorso possiederà una serie di
attributi, e l'output di questo algoritmo è il percorso migliore per quel prefisso, e sarà il
candidato per essere aggiunto nella routing table.
Secondo quanto specificato nell'RFC 1771, BGP mantiene solo un percorso per una certa
destinazione. Questo porta ad uno scenario in cui è impossibile bilanciare il carico del
traffico dei dati su percorsi diversi. Ad ogni modo, è possibile usare un protocollo della
famiglia IGP per tener conto del bilanciamento tra AS.
Prendiamo il caso di un router che deve selezionare un percorso tra altri percorsi con la
stessa distanza amministrativa: in questo il router sceglie il percorso con la metrica
inferiore. Ogni processo di routing calcola i costi differentemente e i costi potrebbero
essere manipolati per ottenere un bilanciamento del carico.
Se il router riceve e installa diversi percorsi con lo stesso costo per una destinazione, è
possibile avere un bilanciamento del carico.
Connessione a Internet
Ci sono diverse considerazioni che devono essere fatte prima di implementare una
connessione reale ad internet, che ne riguarderanno performance, affidabilità e costi.
Possiamo elencare alcune alternative per quanto riguarda la connessione fisica tra un
client e un ISP.
La prima è chiamata Singlyhomed. Un circuito singono potrebbe essere adeguato per una
piccola organizzazione con un traffico limitato. L' organizzazione quindi deciderà un ISP e
deciderà la velocità dell'accesso al circuito. Ovviamente, il problema principale è che se
33
35. Routing: RIP, OSPF, BGP
Possibili problematiche ed
eventuali soluzioni
Il BGP prevede una procedura di smorzamento, chiamata damping, che permette di
ridurre gli effetti della volatilità degli instradamenti. Tale fenomeno può essere causato
dall'interruzione e dal successivo ripristino dei collegamenti a livello di WAN / WLAN
oppure da errori di configurazione o gestione dei router. In assenza di damping è possibile
che gli instradamenti vengano inseriti ed eliminati dalle routing table con grande
rapidità e questo può avere un impatto rilevante sul carico di lavoro dei router e di
conseguenza sulla stabilità complessiva delle procedure di instradamento.
Nel processo di damping la volatilità di un instradamento subisce una diminuzione
esponenziale. La prima volta che un instradamento và e viene in breve tempo per la
prima volta, per qualsiasi ragione, il damping non interviene; vengono così conservati i
tempi di risposta consueti del BGP. Quando l'evento si presenta una seconda volta, il BGP
ignora il prefisso per un certo tempo, e le occorrenze successive vengono ritardate secondo
una progressione esponenziale. Quando le anomalie sull'instradamento in questione sono
cessate ed è trascorso un opportuno lasso di tempo, i prefissi possono essere ripristinati
partendo da zero.
A causa della maggiore velocità dei collegamenti delle dorsali e dei processori dei router,
alcuni architetti di rete hanno immesso una voce riguardante il fatto che il damping non
sia più importante come una volta, in quanto i router sono in grado di assorbire molto più
rapidamente le modifiche alla routing table. Alcuni hanno persino suggerito che il
damping in queste condizioni possa peggiorare la situazione invece di migliorarla. Questo
argomento è ancora controverso e oggetto di numerose ricerche.
Uno dei problemi più gravi del protocollo BGP, ma in realtà dell'intera infrastruttura di
Internet, deriva dalla crescita della routing table della stessa Internet. Se la routing table
globale crescesse fino al punto in cui la sua gestione dovesse superare le capacità di
memoria e di potenza di calcolo dei router meno recenti, questi non sarebbero più in
grado di agire adeguatamente da gateway per le parti di Internet collegate ad essi.
Inoltre, cosa forse ancor più importante, le routing table più grandi richiedono tempi più
lunghi per stabilizzarsi dopo una modifica sostanziale nella connettività, garantendo nel
frattempo solo una connettività ridotta, o talvolta assente.
Fino al 2001 la routing table globale era in crescita esponenziale e minacciava di dare
luogo, col tempo, ad una interruzione generalizzata della connettività. Nel tentativo di
35
37. Routing: RIP, OSPF, BGP
Fonti
Il documento si basa su diverse fonti. Le principali sono:
● Cisco TCP/IP Routing Professional Reference Chris Lewis (McGrawHill)
● IP Routing – Ravi Malbotra (O'REILLY)
● RFC 1058 (RIPv1)
● RFC 2453 (RIPv2)
● RFC 4271 (BGP versione 4)
● RFC 2328 (OSPF versione 2 aggiornata)
●
http://en.wikipedia.org
37