Routing: trattazione dei protocolli RIP, OSPF e BGP

  • 10,626 views
Uploaded on

Breve documento che spiega il routing statico e dinamico, analizzando i protocolli RIP, OSPF, BGP.

Breve documento che spiega il routing statico e dinamico, analizzando i protocolli RIP, OSPF, BGP.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
10,626
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
422
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. 2006­2007 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
  • 7.  Routing: RIP, OSPF, BGP preciso, chiediamo telefonicamente a qualche amico (che ha la possibilità di consultare  una cartina su internet, per esempio) di indicarci la strada dal luogo in cui siamo fino al  luogo in cui vogliamo arrivare. L'amico ci fornirà informazioni sul percorso da seguire, sulla strada da percorrere,  quando cambiare strada, ecc...  A prescindere dalle scelte fatte dal nostro informatore per individuare il percorso, non  possedeva alcuna informazione sulla situazione attuale, come ad esempio la possibilità  che una strada da lui indicata fosse chiusa per lavori in quel giorno. Con le giuste proporzioni possiamo dire che c'è un'analogia tra la situazione descritta e  l'impostazione di percorsi statici per la nostra rete. Un amministratore di rete, come il nostro informatore, indica un percorso che deve essere  seguito per raggiungere una determinata rete: ad esempio, potrebbe impostare che per  raggiungere la rete 192.168.1.0/24 si debba passare per un determinato router piuttosto  che altri. Questa impostazione è permanente, statica: l'amministratore non sa che in un  determinato istante di tempo il percorso indicato non è percorribile, così come il nostro  amico consultando la cartina e indicandoci la strada non poteva sapere dei lavori in corso. Anche in presenza di un percorso alternativo e perfettamente funzionante che potrebbe  portare alla stessa destinazione, non potrebbe essere usato a meno che l'amministratore  di rete imposti con un altro comando di utilizzare questo percorso al posto di quello non  funzionante. Questo chiaramente rappresenta un notevole svantaggio. Un altro degli evidenti svantaggi del routing statico è che, al crescere della rete, la  manutenzione della stessa diventa sempre più problematica. Routing Dinamico I protocolli che permettono il routing dinamico si basano sull'idea di permettere ad ogni  router di scoprire automaticamente i percorsi da seguire per raggiungere la destinazione. Se alcuni percorsi vengono aggiunti e/o altri percorsi non sono più utilizzabili, con il  routing dinamico la routing table è automaticamente modificata per riflettere questo  cambiamento.  Questo porta alla necessità di un aggiornamento frequente per scoprire i cambiamenti  avvenuti in tempi ragionevolmente rapidi. Gli algoritmi in uso maggiormente rilevanti per questo scopo sono: Distance Vector (DV) e  Link State. Per quanto riguarda il primo, ogni router “interroga” tutti i router a lui vicini per  carpirne i percorsi conosciuti. Ogni router, quindi, può carpire i percorsi conosciuti di tutti  7
  • 8.  Routing: RIP, OSPF, BGP i router vicini: se un percorso che ottiene da un router non è nella routing table, questo  percorso verrà aggiunto, se invece il percorso è già presente, i due vengono confrontati e  verrà tenuto quello di minor lunghezza. Un grave problema del DV è la possibilità che un errore abbia una espansione molto  rapida e su larga scala: se un router ha delle informazioni errate, l'errore non  condizionerà solamente il router in questione ma tutti, dato che le informazioni verranno,  prima o poi, acquisite dagli altri router della rete (se non si interviene per evitarlo o se  non c'è un metodo che può prevenire o risolvere automaticamente una situazione di  questo tipo). Per quanto riguarda il secondo, si tratta del routing basato sullo stato del colegamento, e  viene utilizzato un tipo di algoritmo in cui la topologia dell'intera rete e tutti i costi dei  collegamenti sono noti. In un protocollo link state ogni nodo della rete acquisisce informazioni sullo stato dei  collegamenti adiacenti ed inoltra queste informazioni a tutti gli altri nodi della rete  tramite un pacchetto Link State trasmesso tramite un algoritmo di link state   broadcast.Quando un nodo riceve un Pacchetto Link State confronta il numero di  sequenza del pacchetto con quello dell'ultimo pacchetto ricevuto da quel nodo: • se il numero di sequenza indica che il pacchetto è più recente di quello  memorizzato, il nuovo pacchetto viene memorizzato e inoltrato a tutti i nodi  collegati, eccetto quello da cui è stato ricevuto;  • se il numero di sequenza è invariato il pacchetto viene scartato;  • se il numero di sequenza indica che il pacchetto ricevuto è meno recente di quello  memorizzato, quest'ultimo viene trasmesso al nodo mittente.  Ogni nodo memorizza i pacchetti ricevuti e costruisce una mappa completa e aggiornata  della rete: il Link State Database, ottenendo così gli stessi risultati. Ogni router, usando l'argoritmo di Dijkstra, calcola il percorso più corto per una  determinata destinazione. Con il routing dinamico, quindi, oltre a scoprire il percorso migliore, si ha la possibilità di  scoprire automaticamente un eventuale percorso alternativo se quello migliore per  qualche ragione risulta non utilizzabile. Questo libera gli amministratori di rete dal  compito di indicare manualmente il percorso di ogni rete e intervenire prontamente  cambiando manualmente un determinato percorso che non è più utilizzabile, almeno  temporaneamente. 8
  • 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 RIP­2, 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: Address­Family 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
  • 12.  Routing: RIP, OSPF, BGP destinazione sconosciuta, si aggiunge il percorso; se il percorso è conosciuto ma  l'aggiornamento ne contiene uno con una metrica inferiore, viene modificata la routing  table, sostituendo al vecchio percorso quello appena ricevuto; se il percorso è conosciuto e  la metrica è maggiore di quella del percorso attualmente utilizzato, semplicemente si  ignora l'aggiornamento, o si aggiorna solamente nel caso in cui l'aggiornamento provenga  dalla stessa fonte del percorso più breve attualmente in uso. Cosa succede se ci sono due percorsi di costo equivalente? Alcuni particolari sono  direttamente collegati al router in questione e relativa implementazione, ma si possono  certamente indicare delle linee guida per casi come questo. La routing table conterrà entrambi i percorsi, e la divisione del traffico tra i due sarà  decisa dalla modalità di switching, tra cui il Process Switching e il Fast Switching. Il primo semplicemente bilancia il traffico pacchetto dopo pacchetto tra i due percorsi;  richiede un uso della CPU intenso perchè esamina la routing table ad ogni pacchetto e  decide su quale percorso indirizzare il pacchetto stesso. Con il Fast Switching invece la routing table è consultata solo per il primo pacchetto, in  quanto le informazioni necessarie sono salvate in una cache; tutti gli altri pacchetti che  devono arrivare alla medesima destinazione seguiranno il percorso indicato nella cache. Convergenza I cambiamenti nella rete sono molto comuni, sia a causa di un intervento prestabilito, sia  per cause del tutto inaspettate. Un collegamento fisicamente danneggiato, un nuovo  collegamento introdotto, malfunzionamenti di alcuni router, sono solo alcune delle cause  di cambiamento. I router della rete non rifletteranno i cambiamenti immediatamente,  poichè con il RIP la loro conoscenza della rete stessa si basa sui dati che man mano  apprendono dai router vicini. Per cui ci sarà un periodo di tempo in cui i router dovranno  man mano aggiornare le loro informazioni per riflettere questi cambiamenti; quando tutti  i router avranno portato a termine questo aggiornamento, si dice che la convergenza è  completata; una definizione parallela indica che, quando tutti i router in una rete operano  con le stesse informazioni, la rete stessa si dice converged. Questo implica che durante la convergenza, alcune parti della rete potrebbero non essere  raggiungibili a causa dei percorsi non ancora aggiornati in alcune routing table e rende  un argomento molto importante la rapidità con cui viene portata a termine la procedura  di aggiornamento.  Uno dei metodi che velocizzano questa procedura è chiamato triggered update, che indica  che un router che scopre un cambiamento nella metrica di un percorso manda un  aggiornamento ai suoi vicini senza aspettare il prossimo ciclo di aggiornamento:  l'aggiornamento non contiene la routing table completa, ma solo le informazioni sul  percorso cambiato. Grazie al triggered update, la convergenza tra due router può  12
  • 13.  Routing: RIP, OSPF, BGP risultare più veloce fino a 30 secondi. Ci sono divere problematiche da risolvere durante la convergenza. Prendiamo l'esempio di un router A che perde la connessione a una rete ad esso  direttamente connessa, e che prima che riesca a comunicare il cambiamento al router B  vicino, quest'ultimo gli spedisca la sua routing table. Questa routing table conterrà anche  il percorso non più funzionante e rimosso da A, al costo di un hop poichè passante per A  stesso. Dato che il primo router ora non ha più nessuna voce che indichi come arrivare a  quel percorso, salva la voce relativa poichè “pensa” che il router comunicante (B) abbia il  percorso per raggiungere la destinazione: il costo ora è 2 hop. Ma ora, il secondo router  aggiorna il suo percorso, che diventa di 3 hop, e il procedimento continuerebbe così fino al  raggiungimento del valore 16 della metrica. Una soluzione a questo problema è quella di  non permettere ad un router di mandare un aggiornamento attraverso una certa  interfaccia su qualsiasi percorso che è stato appreso attraverso quell'interfaccia stessa  (split horizon). In altre parole, la regola dello split horizon proibisce ad un router di annunciare una  rete attraverso un'interfaccia che il router stesso utilizza per raggiungere quella  destinazione. Questo meccanismo cerca di prevenire la formazione di anelli di routing, e  nell'esempio precedente, il ciclo non si sarebbe creato. Eliminare un percorso errato a volte richiede di scambiare diversi pacchetti di  aggiornamenti finchè il costo del percorso raggiunge la cifra 16. Questo è chiamato  counting to infinity perchè RIP incrementa il costo del percorso finchè questo non  diviene più grande della metrica valida (quindi, finchè non raggiunge il valore 16).  Comunemente si afferma che queste condizioni rallentano la convergenza di routing, in  quanto ci vuole molto tempo per riflettere un cambiamento di uno stato in una rete. La scelta del numero 16 è un compromesso tra il tempo di convergenza e il diametro della   rete. Per diametro della rete si intende la misura delle dimensioni della rete in termini di  hop (o di altri tipi di metrica). Se fosse stato scelto un numero più alto, la convergenza  della rete sarebbe stata molto lunga, mentre un numero più basso implicherebbe una  convergenza più rapida ma il valore del diametro della rete RIP sarebbe più piccolo. La tecnica del triggered update può essere combinata con il poison reverse, che prevede  che, quando un router trova un link non più funzionante, il suo prossimo aggiornamento  per quel percorso conterrà una metrica di 16, e tutti gli altri router al prossimo  aggiornamento rifletteranno questa situazione; se, appunto, combiniamo i due metodi,  una volta trovato un collegamento non funzionante o la metrica di un percorso cambiata a  16, verrà subito spedito un aggiornamento a tutti i router vicini che a loro volta  metteranno il percorso in questione nello stato hold­down, che assicura che informazioni  non corrette non verranno propagate nella rete. 13
  • 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
  • 16.  Routing: RIP, OSPF, BGP l'autenticazione: ogni pacchetto può tenere traccia delle informazioni sull'autenticazione  per convalidare la fonte dei pacchetti ricevuti; questa è una caratteristica completamente  assente nel RIPv1, che automaticamente riteneva affidabile qualsiasi vicino che  trasmettesse attraverso il protocollo UDP sulla porta 520, senza alcun vincolo o controllo  di alcun genere. L'autenticazione è importante per due ragioni principali. Prima di tutto per una questione di sicurezza: se un intruso riesce ad accedere alla rete, e  comincia ad annunciare percorsi RIP, potrebbe creare danni molto seri. Il secondo motivo è prevenire alcuni tipi di malfunzionamento. Ad esempio, se un router  viene erroneamente connesso alla rete, non potrà comunque partecipare nelle operazioni  che riguardano il routing se viene prevista una password. Inoltre, RIPv2 prevede un tag per ogni percorso che non è usato da RIP, ma potrebbe  essere usato per fornire diverse informazioni, come ad esempio la fonte del percorso  quando il percorso stesso è importato da un altro AS. Queste informazioni addizionali rispetto al RIPv1 sono possibili utilizzando quei campi  del pacchetto che erano inutilizzati o per scelta tecnica impostati per non contenere  nessun altro valore oltre lo zero (must be zero, come mostrato nella figura riportata  precedentemente). Questa scelta ha un ruolo fondamentale anche nella compatibilità tra le due versioni: il  RIPv1 può in questo modo processare anche gli aggiornamenti provenienti dal RIPv2,  semplicemente ignorando il valore di questi campi. OSPF: Open  Shortest Path First Introduzione L'OSPF è un protocollo Link State appartenente alla “famiglia” dei protocolli IGP. Il nome SPF deriva dall'algoritmo SPF di Dijkstra mentre il significato della “O” iniziale  è “open”, ovvero liberamente descritto in una fonte a cui tutti possono accedere  liberamente, l'RFC 2328. 16
  • 17.  Routing: RIP, OSPF, BGP È un protocollo di routing gerarchico come vedremo in seguito, mentre il RIP è un  protocollo flat, ovvero non vi è nessuna gerarchia nella rete e ogni router possiede i  percorsi per ogni destinazione della rete. Una architettura gerarchica permette il supporto di sistemi notevolmente estesi, poichè  ogni area è responsabile solamente dei propri percorsi; il RIP ad esempio non aveva un  supporto adeguato per reti estese, in quanto al crescere della rete corrispondeva un  overhead nel routing. Il percorso più breve viene calcolato tramite l'algoritmo di Dijkstra  applicato alla topologia della rete, descritta matematicamente sottoforma di grafo, che  viene appresa tramite pacchetti LSA (Link State Advertisement). Ponendo se stesso come radice, ogni router esegue l'algoritmo SPF per calcolare il  percorso più breve per ogni rete nel grafo, e la routing table è costruita a partire  dall'albero che viene ottenuto come output dall'algoritmo. Questo algoritmo è estremamente potente ed efficace, ma è estremamente dispendioso in  termini di utilizzo della CPU, e questo costo cresce rapidamente, parallelamente alla  crescita della topologia della rete. Il problema è certamente da non sottovalutare, ma non  è un problema critico, in quanto come già detto l'OSPF si basa su una struttura  gerarchica che permette la suddivisione della rete in sottoreti più piccole a cui verrà  applicato l'algoritmo. In seguito si vedrà come avviene la comunicazione tra le varie sottoreti. Costi e Metrica Ogni router esegue l'algoritmo SPF di Dijkstra per calcolare il percorso più breve. Ad ogni modo, nell'RFC 2328 non viene specificato come un router dovrebbe calcolare i  costi di una rete connessa, pertanto il compito viene lasciato all'associazione/ente che  implementerà le caratteristiche. Ad esempio, Cisco calcola questa cifra nel modo seguente: 10 8 Costo = _________________________________________________________________ bandwith dell'interfaccia in bit per secondo con il risultato arrotondato per difetto; analizzando alcuni casi comuni, possimo notare  che in questo modo il costo per Ethernet a 10 Mbps è 10, per Fast Ethernet (100 Mbps) è  1, per un 56 kbps è 64. Con queste premesse, l'algoritmo SPF di Dijkstra calcola il percorso più corto per ogni  17
  • 18.  Routing: RIP, OSPF, BGP rete nel grafo, il quale, usando la terminologia di OSPF, viene chiamato topological   database o link state database. Ogni router esegue questo algoritmo con se stesso come  nodo sorgente e il risultato rappresenta i percorsi per ogni rete dal router stesso; per  questo motivo, queso costituisce la routing table per il router. I cambiamenti in una rete sono sempre possibili, e per ognuno di questi cambiamenti  l'algoritmo SPF di Dijkstra deve essere eseguito di nuovo. Il tempo di esecuzione dell'algoritmo è E log E, dove E è il numero degli archi del grafo  (che rappresentano i collegamenti tra i vertici, rappresentanti i router). Per quanto riguarda l'applicazione dell'algoritmo, al crescere della rete corrisponde un  consumo sempre più elevato di memoria e CPU in ogni router: non è pertanto indicata la  gestione di reti estese. Comunque, come già detto, la soluzione è suddividere la rete in  aree più piccole e applicare l'algoritmo su di esse. Tipi di area Un'area è composta da un insieme di router che condividono lo stesso ID dell'area, che è  univoco. Grazie alla possibilità di raggruppare router e reti in un'area, l'OSPF può confrontarsi  anche con reti molto grandi, superando i limiti descritti precedentemente: una rete può  crescere teoricamente senza limiti, suddividendola in aree, e se un'area diventa troppo  grande, può essere a sua volta suddivisa in una o più aree. Al contrario delle reti flat (RIP, IGRP) nella quali ogni router ha le stesse responsabilità e  gli stessi compiti, lo schema gerarchico di una rete OSPF impone una struttura nella  quale router e aree sono differenziati in base ai ruoli che ricoprono. In seguito si formalizzerà quanto detto, indicando i diversi tipi di aree e di router. Backbone Area È il cuore di una rete OSPF. È conosciuta anche con il nome di  area zero. Tutte le altre  aree sono connesse ad essa, e il routing tra le aree avviene attraverso un router connesso  alla backbone area. La backbone area è responsabile della distribuzione di informazioni  tra aree nonbackbone. L'area ID di valore 0 (0.0.0.0) è riservato per la backbone area. Tutte le aree OSPF devono essere connesse alla backbone area. Stub Area 18
  • 19.  Routing: RIP, OSPF, BGP Una  stub area è un'area che non riceve percorsi esterni, fuori dai limiti dell'autonomous  system, ma riceve i percorsi dal AS, anche se il percorso proviene da un'altra area. Una stub area tipicamente ha bisogno di un percorso di default a cui mandare i dati per  destinazioni esterne. Tra le limitazioni derivanti da queste caratteristiche, una stub area  ha comunque il vantaggio di ridurre l'utilizzo delle risorse, quali CPU e memoria. Totally stubby Area Una totally stubby area (TSA) è simile alla stub area appena discussa, ma non dà  informazioni sui percorsi che conosce, ovvero non manda nessun Link­State   Advertisement. L'unico percorso che una totally stubby area riceve è il percorso di default  da un'area esterna, la backbone area. Questo percorso permette alla TSA di comunicare  con il resto della rete. Not­so­stubby Area Una not­so­stubby area (NSSA) è un tipo di stub area che ha una restrizione in meno: può  supportare connessioni esterne. Per ogni altro aspetto hanno le stesse caratteristiche  delle stub area. Per cui, ogni area configurata come stub area che ha bisogno del supporto per connessioni  esterne può essere cambiata in una NSSA. Cisco ne implementa una versione proprietaria chiamata NSSA totally stubby area. Tipi di router OSPF definisce diversi tipi di router. Le distinzioni che seguono sono logiche, nel senso  che un router può anche ricadere in più di una delle classificazioni riportate. Area border router 19
  • 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 link­state 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 non­IGP, 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 2­Way: 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 point­to­point: 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 dead­interval. Per quanto riguarda le relazioni tra neighbor, possiamo distinguere: ● reti point­to­point: 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 (2­way) con gli altri router; ● Non­broadcast multi­access (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 Link­State 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 poll­response, 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 AS­external­LSA. 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 AS­external­LSA. 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'inter­area 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
  • 28.  Routing: RIP, OSPF, BGP è attuata sugli ASBR. Per tutti i motivi già detti, per mettere la summarization negli  ABR e negli ASBR, gli indirizzi IP devono essere assegnati attentamente: innanzitutto,  bisogna allocare abbastanza indirizzi ad ogni area per permettere l'espansione della  stessa; inoltre, impostare un limite di bit su cui effettuare il raggruppamento dei percorsi. Questa è la descrizione di una situazione ideale, ma spesso non possibile, in quanto ci  sono delle situazioni in cui, per esempio, un amministratore di rete si trova a gestire una  rete ereditata da una gestione precedente che è ben lontana da quella ideale appena  descritta. Link Virtuali Lo standard OSPF richiede che tutte le aree non­zero siano connesse alla backbone area.  Nella maggior parte dei casi si tratta di un collegamento fisico attraverso un ABR. In  alcuni casi invece una connessione fisica non permette a tutte le aree di collegarsi  direttamente alla backbone, ma è possibile per un'area collegarsi fisicamente solamente  ad un'altra area non­zero. In questo caso, deve essere usato un Virtual Link che permette  di collegare l'area sprovvista di un collegamento fisico all'area zero con la backbone stessa  attraverso la seconda area non­zero (chiamata Transit Area). Ci sono alcune limitazioni e raccomandazioni a proposito dei Virtual Link: ● La transit area deve essere Normal o NSSA. Non può essere Stub o TSA; ● i virtual links riducono l'intuitività della rete e dovrebbero essere evitati. Sono  indicati per soluzioni temporanee o per impossibilità di implementare una  connessione fisica. BGP: Border Gateway Procol Al contrario del RIP e dell'OSPF, della famiglia degli IGP, che sono designati per il  routing intra­AS, il BGP è un Exterior Gateway Protocol (EGP), designato per il routing  inter­AS. Quindi il BGP è utilizzato per impostare il routing tra una coppia qualunque di AS, per  connettere una rete client ad un ISP, e collegare tra loro gli ISP. 28
  • 29.  Routing: RIP, OSPF, BGP Una differenza sostanziale rispetto ai protocolli precedenti è che il BGP è un protocollo di  routing a indicazione di percorso (path vector), che non usa metriche di carattere tecnico  ma prende le decisioni di instradamento basandosi su politiche (regole) determinate da  ciascuna rete. Il BGP ha diverse versioni, maturate nel corso del tempo. Fu definito per la prima volta  nel RFC 1105, nell'anno 1989. Fu aggiornato nel 1990, definendo nell'RFC 1163 il BGP­2. Ancora, il BGP­3 fu definito nell'RFC 1267 nell'anno 1991, e il BGP­4 nell'RFC 1771  (1995). Quest'ultima versione è la prima che supporta dei meccanismi molto importanti  spiegati in seguito, che potrebbero assicurargli un “ciclo di vita” più lungo delle versioni  precedenti, in quanto si adatta all'evoluzione di Internet: tutte le versioni precedenti sono  ormai considerate obsolete. Il protocollo BGP è stato creato per sostituire il protocollo di routing EGP e consentire un  instradamento completamente decentralizzato, concetto molto importante per internet. Anche le reti IP private di maggiori dimensioni possono trovare benefici dall'uso del BGP,  ad esempio nel caso del collegamento di un gran numero di reti OSPF, una situazione in  cui il protocollo OSPF non è in grado di scalare in modo efficiente. Un altro motivo che  può spingere all'uso del BGP è la configurazione di una rete in multihoming (termine che  implica la capacità di comunicare utilizzando più di una interfaccia network alla volta,  usando lo stesso protocollo di rete) per offrire una maggiore ridondanza. Tra i protocolli di routing, il BGP è l'unico a utilizzare il TCP come protocollo di trasporto. Funzionamento del BGP Lo scopo del BGP è la trattazione del routing inter­AS, molto diverso dal routing intra­AS  visto con il RIP, per esempio. Sono state create nuove strutture per il supporto del routing  inter­AS. Al contrario dei protocolli della famiglia degli IGP, nel BGP non c'è alcun metodo per  scoprire automaticamente i router vicini; l'amministratore di rete deve definirli  manualmente. Protocolli quali RIP e OSPF scambiano numerosi aggiornamenti. BGP opera in un modo  molto diverso da essi, e gli aggiornamenti sono strettamente controllati. Il BGP funziona attraverso la gestione di una tabella di reti IP, o prefissi, che forniscono  informazioni sulla raggiungibilità delle diverse reti tra più Autonomous System. Per supportare la routing table di Internet, BGP deve supportare un numero di prefissi  superiore a 70000. Con questa cifra, aggiornare ogni 30 secondi (come il RIP) la routing table con gli  29
  • 30.  Routing: RIP, OSPF, BGP attributi associati sarebbe davvero molto costoso. Per questo motivo, la tabella dei prefissi  viene scambiata solamente una volta, ovvero quando i neighbor vedono per la prima volta  ogni altro neighbor. Gli aggiornamenti BGP quindi annunciano solamente nuovi prefissi o  “eliminano” prefissi precedentemente annunciati, portando ad un overhead piuttosto  ridotto. Questo però introduce un nuovo problema. Se un router A perde un collegamento  con un router B, tutti i percorsi conosciuti attraverso B saranno eliminati; se il router A  ha un secondo percorso migliore attraverso un altro neighbor, C, non lo scoprirà mai in  quanto non vi sono aggiornamenti periodici in BGP. Questo potrebbe essere risolto  mantenendo tutti i prefissi conosciuti nella BGP table. Il problema così è risolto, ma ne  introduce a sua volta un altro: la BGP table potrebbe richiedere una quantità di memoria  elevata, proporzionalmente al numero di neighbor. In reti complesse quali appunto quelle inter­AS, una metrica singola (come gli hop per il  RIP) non è sufficiente, per cui vengono introdotti diversi attributi che descrivono i  percorsi per le diverse destinazioni, permettendo agli amministratori di rete di  implementare varie policy di routing. Per quanto riguarda la relazione tra neighbor, si possono distinguere due tipologie di  BGP, ovvero External­BGP (E­BGP) e Internal­BGP (I­BGP), che rispettivamente  vengono applicati sui neighbor in diversi AS, oppure nello stesso AS. La presenza  dell'IBGP potrebbe rappresentare un controsenso rispetto alla “definizione” del BGP,  ovvero di un protocollo che si occupa del routing inter­AS. L'I­BGP, invece, è utilizzato per  propagare le tabelle BGP attraverso l'AS per mantenere una policy di routing consistente. IGP come il RIP, implementano relazioni con tutti i neighbor direttamente connessi,  mentre queste relazioni in BGP­4 sono una relazione uno­a­uno tra due gateway. Una volta avviato il processo BGP, ogni gateway deve specificare i suoi neighbor, o peer. I peer E­BGP hanno una restrizione che impone loro di essere connessi direttamente, al  contrario degli I­BGP. Quando un peer esegue un aggiornamento, l'indirizzo IP NEXT­HOP è modificato  nell'indirizzo IP dell'interfaccia del router che lo ha originato, mentre questo non avviene  per l'I­BGP. Poichè tutti gli scambi BGP sono tra una coppia di speaker BGP, è possibile basarsi su  una connessione affidabile, per cui viene utilizzato il protocollo di trasporto TCP sulla  porta 179. Un router BGP che instrada il traffico IBGP è chiamato un transit router. I router che si  trovano ai confini di un AS e che usano EBGP per scambiare informazioni con l'ISP sono i  border o edge router. Messaggi BGP 30
  • 31.  Routing: RIP, OSPF, BGP Ci sono quattro tipologie di messaggi BGP: Open, update, notification e keep­alive. Un messaggio open è spedito subito dopo che il three­way handshake TCP è completato. Il suo compito è aprire una sessione di comunicazione tra peer; i messaggi open sono  confermati utilizzando un messaggio keep­alive e deve essere confermato prima che i  pacchetti update, notification e keep­alive 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 keep­alive 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
  • 32.  Routing: RIP, OSPF, BGP Ogni prefisso in un messaggio di aggiornamento BGP è accompagnato da una lista di  attributi, che permettono all'AS di implementare delle policy di routing. Il numero degli attributi è variabile, in quanto si distinguono in attributi obbligatori  (mandatory) e attributi discrezionali (discretionary): per cui, ogni messaggio di  aggiornamento avrà sicuramente il numero di attributi mandatory ma gli attributi  discretionary potrebbero essere anche non inviati. Ancora, si possono suddividere gli attributi in due categorie: well­known e optional. I primi rappresentano gli attributi che devono essere riconosciuti da tutte le  implementazioni del BGP, mentre quelli optional non hanno bisogno di essere supportati  da tutte le implementazioni. Una ulteriore suddivisione mostra altre due categorie di attributi: transitive e non­ transitive. Un attributo non­transitive ha significato solo per l'AS che riceve l'aggiornamento;  l'attributo non viene “fatto notare” agli altri AS. Per quanto riguarda un attributo  transitive, invece, si tratta di un attributo con significato globale ed è inoltrato negli  aggiornamenti agli altri AS. Elencando alcuni attributi, abbiamo: Local Preference, usato per scegliere un punto di  uscita preferito dall'AS locale. Origin è un attributo che permette i indicare come il BGP  ha conosciuto un percorso particolare. Il valore potrebbe essere: • IGP: il percorso è interno all'AS d'origine; • EGP: il percorso è conosciuto tramite BGP; • Incomplete: l'origine del percorso non è conosciuto o è stato appreso in un altro  modo. AS_path è un attriubuto rappresentato da una lista ordinata di numeri di AS: quando un  "avvertimento" per un percorso passa attraverso un AS, il numero di questo AS è  aggiunto alla lista. Next­hop è l'attributo che definisce l'indirizzo IP del border router  che dovrebbe essere usato come next­hop per le destinazioni elencate nel campo network   layer reachibility field. L'attributo Community fornisce un modo per raggruppare alcune  destinazioni, chiamate comunità, alle quali possono essere applicate decisioni di routing.  32
  • 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 Singly­homed. 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
  • 34.  Routing: RIP, OSPF, BGP questo circuito singolo diventa non funzionante, l'intera organizzazione non potrà  usufruire di internet. Una soluzione è la scelta del multi­homed allo stesso ISP. Facendo  questa scelta, l'organizzazione può implementare circuiti multipli tra se stessa e l'ISP,  garantendo così una certa affidabilità. Il prezzo da pagare è una gestione più complessa: i  collegamenti devono essere della stessa velocità?E quale velocità?Come distribuire il  traffico nei collegamenti? Una terza possibilità è il multi­homed a ISP differenti. Una organizzazione potrebbe  considerare di affidarsi a più ISP per una affidabilità ancora maggiore, garantendo da  eventuali malfunzionamenti nel collegamento al singolo ISP. Se distinguiamo il traffico tra outbound, ovvero il traffico dal client a Internet, e inbound,  ovvero il traffico da internet al client, possiamo vedere opzioni distinte che caratterizzano  l'uno e l'altro. Innanzitutto, bisogna specificare che questi flussi di dati non devono assere  simmetrico. Per quanto riguarda le opzioni che possiamo vedere riguardo al traffico outbound,  troviamo: • il default route. Il metodo più semplice per definire percorsi a destinazioni esterne.  Il default route (0.0.0.0) sarà per qualunque destinazione se non possediamo un  percorso specifico per la destinazione stessa.; • routing table parziale insieme al default route. Prendiamo il caso di un client  multi­homed a due ISP differenti. è molto probabile che i due percorsi outbound  non sono uguali, perchè ad esempio alcune reti sono più vicine attraverso un  percorso, altre sono più vicine attraverso l'altro percorso. Le opzioni di scelta sono  due: o il router client sceglie di importare un set di percorsi parziale da ogni ISP e  usare il default route per i percorsi rimanenti, oppure di importare la routing table  completa. • routing table completa. Avere a disposizione una quantità di dati così elevata  assicurata una scelta molto accurata. Ma, come già detto, ci sono più di 70000  prefissi in internet, e quindi verrebbero richieste quantità di risorse come memoria  e CPU davvero elevate. Le decisione per quanto riguarda il traffico inbound sono prese nelle routing table in AS  esterni. Il client può impostare alcuni attributi BGP per "influenzare" la scelta, anche se  spesso gli ISP hanno le loro policy di routing e potrebbe ignorare o sovrascrivere questi  campi, per cui un procedimento come quello descritto deve essere "concordato" tra  clientISP. 34
  • 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
  • 36.  Routing: RIP, OSPF, BGP contrastare questa eventualità, è in corso uno sforzo congiunto degli ISP per mantenere al  minimo le dimensioni della routing table globale, attraverso il ricorso ai meccanismi di  Classless InterDomain Routing (CIDR) e aggregazione degli instradamenti. Questi sforzi hanno rallentato la crescita della tabella di routing sino a riportarla a un  andamento lineare, allontanando in modo significativo il momento in cui sarà necessario  sostituire i router più datati. Un'altra eventualità è il network black hole, che può avvenire intenzionalmente o essere  una conseguenza di una configurazione errata. Il network black hole intenzionale è una  tecnica per “scartare” il traffico attraverso un AS. Per quanto riguarda una  configurazione errata, è dovuta comunemente a una routing table non completa. Un Autonomous System con IBGP deve avere tutti i suoi peer IBGP connessi ad ogni altro  in una “grande maglia” (full mesh) dove appunto ogni peer può “dialogare” con ogni altro  direttamente. Questa configurazione richiede che ogni router mantiene una sessione  aperta a ogni altro router. In reti grandi, questo numero di sessioni potrebbe degradare la  performance dei router, con un ampio utilizzo della memoria o richieste eccessiva a carico  della CPU. Per ovviare a questo problema sono state introdotte relativamente di recente  nel BGP alcune tecniche, come ad esempio Route reflectors e BGP confederation, che sono  state designate come alternative al BGP full­mesh, anche se esse stesse introducono altri  problemi. Implementazioni Open Source del BGP Ci sono numerose implementazioni del BGP. Questo elenco rappresenta alcune di esse,  con la caratteristica di essere open source: ● GNU Zebra, suite rilasciata con licenza GPL che supporta BGP4; ● Quagga, un fork di GNU Zebra per sistemi Unix­like; ● OpenBGPD, con licenza BSD, implementato dal team di OpenBSD; ● XORP, eXtensible Open Router Platform, suite con licenza BSD; ● BIRD, per sistemi Unix­like, con licenza GPL. 36
  • 37.  Routing: RIP, OSPF, BGP Fonti Il documento si basa su diverse fonti. Le principali sono: ● Cisco TCP/IP Routing Professional Reference ­ Chris Lewis (McGraw­Hill) ● 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