OSPF e BGP

Instradamento interno ai sistemi autonomi
...

Nel nostro studio sugli algoritmi di instradamento abbiamo considerato la rete come semplice interconnessione di router. Ciascun router non era diverso dagli altri, nel senso che tutti eseguivano lo stesso algoritmo di instradamento. Nella pratica questo modello risulta semplicistico, almeno per due motivi:

  1. Scalabilità. Al cresce del numero di router il tempo per eseguire algoritmi di instradamento diventa proibitivo. Internet è formata da centinaia di milioni di host. Archiviare informazioni riguardo numeri di host così alti richiederebbe dimensioni di memoria enormi, inoltre il traffico generato da una comunicazione broadcast saturerebbe tutta la banda, non dando modo ai pacchetti contenti dati di esse spediti.
  2. Autonomia amministrativa. Internet è una rete di ISP, tali ISP, in genere, desiderano gestire liberamente i propri router. L'ideale sarebbe che ciascun ISP fosse in grado di amministrare la propria rete come preferisce, mantenendo la possibilità di comunicare con reti esterne.
    Questi problemi si risolvono con i sistemi autonomi (AS, autonomous system), generalmente composti da gruppi di router posti sotto lo stesso controllo amministrativo. A volte i router e i collegamenti di un ISP formano un unico AS, altri ISP invece preferiscono partizionare la propria rete in più AS. Un AS è identificato da un numero di AS (ASN) assegnato dall'ICANN (proprio come un IP).
    I router facenti parte dello stesso AS usano lo stesso algoritmo di instradamento. L'algoritmo in esecuzione su un AS è detto protocollo di instradamento interno al sistema autonomo (intra-AS routing protocol).

OSPF (Open Shortest Path First)
...

OSPF e il suo stretto parente, IS-IS, sono generalmente impiegati negli ISP di livello superiore. Il termine open indica che le specifiche del protocollo sono pubbliche.
OSPF è un protocollo LS che utilizza il flooding (inondazione) di informazioni riguardo lo stato dei collegamenti e l'algoritmo di Dijkstra per la determinazione del percorso a costo minimo. In OSPF, un router costruisce un grafo dell'intero sistema autonomo e manda in esecuzione (locale) l'algoritmo di Dijkstra per determinare un albero dei percorsi minimi verso tutte le sotto-reti (albero in cui il router stesso rappresenta il nodo radice). I costi dei collegamenti vengono fissati dall'amministratore di rete. L'amministratore di rete può scegliere di impostare i costi di tutti i collegamenti a 1 (ottenendo di conseguenza l'instradamento con il minimo numero di hop), oppure in modo inversamente proporzionale alla capacità del collegamento (al fine di scoraggiare l'uso di collegamenti con poca banda). OSPF non impone una politica sulla scelta dei pesi dei collegamenti (lavoro che compete all'amministratore di rete), ma fornisce invece i meccanismi per determinare l'instradamento con percorso a costo minimo per un dato insieme di pesi dei collegamenti. In OSPF, ogni qualvolta che si verifica un cambiamento nello stato di un collegamento (variazione di costo, o cambiamento di disponibilità), il router manda informazioni di instradamento via broadcast a tutti gli altri ruoter nel sistema autonomo. Inoltre, invia periodicamente lo stato dei collegamenti (almeno, ogni 30 minuti), anche se questo non è cambiato. Gli annunci OSPF sono contenuti in messaggi OSPF che vengono trasportati direttamente da IP come un protocollo di livello superiore con identificativo 89.
OSPF deve implementare il trasferimento affidabile dei messaggi e il broadcast dello stato dei collegamenti. Inoltre, controlla che i collegamenti siano operativi (tramite messaggio HELLO inviato a un vicino connesso) e consente ai router OSPF di accedere ai database sullo stato dei collegamenti della rete, contenuti nei router confinanti.
Tra i vantaggi ricordiamo:

  • Sicurezza. Gli scambi tra router OSPF possono essere autenticati; di conseguenza soltanto router fidati possono prendere parte al protocollo OSPF in un sistema autonomo, evitando che malintenzionati immettano informazioni errate nelle tabelle dei router. Di base, OSPF non autentica i pacchetti e potrebbero essere contraffatti. L'autenticazione può essere di due tipi:
    • semplice: la meno sicura, sui router si configura la stessa password che deve essere inclusa, in chiaro, nei pacchetti OSPF ad essi inviati;
    • tramite MD5: si basa su chiavi segrete condivise, configurate in ogni router. Per ogni pacchetto OSPF che mandano, i router calcolano l'hash MD5 del contenuto a cui è stata aggiunta la chiave segreta e includono il risultato nel pacchetto OSPF. Il router ricevente calcola la funzione hash MD5 del pacchetto, usando la chiave segreta pre-configurata, e lo confronta con quello presente nel pacchetto OSPF per verificare l'autenticità. Insieme all'autenticazione MD5 vengono utilizzati anche i numeri di sequenza come protezione contro gli attacchi di ripetizione.
  • Percorsi con lo stesso costo. Quando più percorsi hanno lo stesso costo non è necessario sceglierne uno, ma possono anche essere scelti tutti.
  • Supporto integrato per l'instradamento unicasti e multicast. Per consentire l'instradamento multicast viene impiegata una semplice estensione di OSPF, MOSPF (multicast OSPF), che utilizza il database dei collegamenti OSPF e aggiunge un nuovo tipo di annuncio sullo stato dei collegamenti al meccanismo di broadcast.
  • Supporto alle gerarchie in un dominio di instradamento. Con OSPF è possibile strutturare i sistemi autonomi in modo gerarchico. Un sistema autonomo può essere configurato in aree che eseguono diversi algoritmi di instradamento OSPF: ciascun router in un'area invia lo stato dei suoi collegamenti agli altri router nell'area. In ogni area, uno o più router di confine (area border router) si fa carico dell'instradamento dei pacchetti indirizzati all'esterno. Un'area di un sistema OSPF è configurata per essere l'area dorsale (backbone area), il cui ruolo principale è quello di instradare il traffico tra le altre aree nel sistema autonomo. La dorsale contiene sempre tutti i router di confine del sistema autonomo, ma non necessariamente soltanto quelli. L'instradamento nell'area di un sistema autonomo richiede che i pacchetti siano instradati dapprima verso il proprio router di confine dell'area (instradamento intra-area) e da questi, attraverso la dorsale, al router di confine dell'area di destinazione, che provvede a farli pervenire alla destinazione finale.

reti60.jpg
Come si vede nella figura sopra, il sistema autonomo è organizzato in modo gerarchico. In questo caso abbiamo 3 aree. La dorsale (backbone) è l'area che consente la comunicazione fra tutte le aree del sistema autonomo. I router delle aree (1, 2 e 3) collegate con la backbone, sono i router di confine dell'area (area border router), mentre quelli all'interno dell'area sono detti router interni. Nella dorsale vi è poi un router connesso con l'esterno che è detto router di confine.

OSPF è un protocollo abbastanza complesso e noi lo abbiamo trattato solo in modo schematico.

Instradamento tra ISP: BGP
...

Abbiamo appena appreso come gli ISP usino OSPF per determinare percorsi ottimali per le coppie sorgente destinazione all'interno dello stesso sistema autonomo. Ma come vengono determinati i percorsi ottimali tra sorgente e destinazione tra sistemi autonomi. La risposta è BGP (border gateway protocol).

Il ruolo di BGP
...

In BGP, i pacchetti non vengono instradati verso uno specifico indirizzo, ma hanno come destinazione delle intere sotto-reti del tipo: 138.16.68/22 che include 1024 indirizzi IP per esempio.
La destinazione dei pacchetti in BGP sono prefissi CIDR che rappresentano una sotto-rete o una collezione di sotto-reti.
BGP mette a disposizione di ciascun router un modo per:

  • consentire a ciascuna sotto-rete di comunicare la propria esistenza al resto delle Internet. Se non fosse per BGP, ogni sotto-rete sarebbe isolata e sconosciuta.
  • Determinare i percorsi "ottimi" verso le sotto-reti. Un router può venire a conoscenza di più cammini verso uno specifico prefisso; per determinare il migliore, esegue localmente BGP, sulla base delle informazioni di raggiungibilità e delle politiche di sistema.
    Adesso vediamo come BGP svolge queste operazioni.
Distribuzione delle informazioni dei cammini in BGP
...

Pasted image 20231018163056.png
In questa figura abbiamo tre sistemi autonomi: AS1, AS2, e AS3.
AS3 ha una sotto-rete con prefisso x.
Ogni router in un AS funge sia da router gateway (router di bordo connesso ad altri AS) o come router interno. Prendendo in esempio AS1: 1a, 1b e 1c sono router interni, mentre 1c è di bordo (gateway).
Coppie di router interni si scambiano informazioni su connessioni TCP semi-permanenti usando la porta 179. Di seguito sono mostrate tale connessioni:
Pasted image 20231018164148.png
vi sono sessioni BGP esterne (eBGP) e sessioni BGP interne (iBGP).
Esaminiamo ora come BGP distribuirebbe le informazioni di raggiungibilità del prefisso x ad AS1 e AS2. Il router gateway 3a invia un messaggio eBGP "AS3 x" al router gateway 2c che a sua volta lo invia in una sessione iBGP a tutti i router AS2 compreso il gateway 2a. Quest'ultimo quindi invia un messaggio eBGP "AS2 AS3 x" al router gateway 1c, che infine usa iBGP per inviare il messaggio "AS2 AS3 x" a tutti i router di AS1. Completato tale processo tutti i router dei sistemi autonomi sono a conoscenza di x e del percorso per raggiungerlo.
Ovviamente in una rete reale esistono più percorsi da un router a una destinazione che attraversano AS diversi.

Selezione del rotte migliori
...

Prima di parlare di come fa un router a scegliere il percorso migliore tra i diversi percorsi che riceve attraverso annunci di raggiungibilità, facciamo una panoramica sulla terminologia BGP.
Quando un router annuncia un prefisso per una sessione BGP, include anche un certo numero di attributi BGP. In gergo, un prefisso assieme ai suoi attributi è detto rotta (route). Due dei più importanti attributi sono AS-PATH e NEXT-HOP.

AS-PATH
...

AS-PATH elenca i sistemi autonomi attraverso i quali è passato l'annuncio del prefisso. Quando un prefisso attraversa un sistema autonomo, questi aggiunge il proprio ASN all'attributo AS-PATH.
Pasted image 20231018181628.png
Per esempio considerando la figura precedente ci sono due rotte da AS1 a x, una passa per il sistema autonomo AS2 e l'altra è direttamente collegata ad AS3.
Il primo ha AS-PATH "AS2 AS3", mentre il secondo ha l'AS-PATH "AS3".
I router usano tale attributo per rilevare ed evitare annunci reiterati, nello specifico se un router vede che il proprio AS è presente nella lista dei percorsi rifiuta l'annuncio.

NEXT-HOP
...

L'attributo NEXT-HOP ha un ruolo sottile, ma importante.
In NEXT-HOP è riportato l'indirizzo IP dell'interfaccia del router che inizia l'AS-PATH.
Se l'AS-PATH è "AS2 AS3", NEXT-HOP è l'indirizzo IP dell'interfaccia alla sinistra di 2a (nella figura).
Mentre se l'AS-PATH è "AS3", NEXT-HOP è l'IP dell'interfaccia alla sinistra di 3d.
Quindi ogni router di AS1 conosce ora due rotte per il prefisso x:

  • l'IP dell'interfaccia più a sinistra del router 2a: AS2 AS3; x
  • l'IP dell'interfaccia più a sinistra del router 3d: AS3; x
    Ogni rotta è quindi fatta di tre elementi:
  • NEXT-HOP;
  • AS-PATH;
  • prefisso x.
    In realtà vi sono altri attributi che per il momento tralasciamo.
    Si noti che NEXT-HOP è l'IP di un router che non appartiene ad AS1, ma ad una sotto-rete collegata direttamente ad AS1.
Instradamento hot potato (patata bollente)
...

Siamo ora pronti per discutere di algoritmi di routing BGP in modo preciso.
Inizieremo con uno dei più semplici: hot potato routing.
In un instradamento di questo tipo, il percorso scelto (tra tutti i percorsi possibili) è quello con il minor costo per il router NEXT-HOP che lo inizia. Ovvero il percorso minore verso il router direttamente collegato con l'interfaccia NEXT-HOP.
In questo esempio il router 1b consulterà le sue informazioni di routing intra-AS per trovare il percorso intra-AS a costo minimo verso il router NEXT-HOP 2a e il percorso a costo minimo verso il NEXT-HOP 3d.
Per esempio supponiamo che il costo sia definito come il numero di collegamenti attraversati;
dal router 1b al router 2a il costo è 2,
mentre dal router 1b al router 3d il costo è 3.
Verrebbe, in questo caso, scelto il primo percorso.
Il router 1b consulterebbe la sua tabella di inoltro (configurata dal suo algoritmo intra-AS) per trovare l'interfaccia che si trova sul percorso a costo minimo per il router 2a.
Quindi aggiunge alla sua tabella di inoltro.
Questa riga verrà utilizzata per instradare il traffico destinato al router 2a attraverso l'interfaccia .
Pasted image 20231018183559.png
Il procedimento è riassunto nella figura sopra.
Per aggiungere un prefisso al di fuori di un AS nella tabella di inoltro di un router, utilizzando instradamento a hot potato vengono utilizzati sia protocollo intra-AS (per esempio OSPF) che inter-AS (BGP).
L'idea alla base è che un router direzioni il prima possibile un pacchetto al di fuori dell'AS (col minor costo possibile), senza preoccuparsi dei costi che dovranno essere affrontati dal pacchetto successivamente.
Si noti che due ruoter nello stesso AS potrebbero selezionare percorsi diversi per lo stesso prefisso di destinazione. Per esempio 1d li invierebbe direttamente attraverso AS3 rispetto a 1b che usa 2a.

Algoritmo di selezione delle rotte
...

BGP utilizza un algoritmo più complesso di quello appena descritto. Per la selezione vengono considerate l'insieme delle rotte apprese e accettate dal router. Se ne esistono due o più, vengono applicate alcune regole di filtraggio:

  1. Alle rotte viene assegnato come attributo un valore di preferenza locale, che potrebbe esser stato impostato direttamente in ogni router dell'AS. Valori di preferenza locale più alti sono preferiti.
  2. Tra le rotte con lo stesso valore di preferenza locale, si sceglie la rotta con AS-PATH più breve.
  3. Tra le rotte con stesso valore di preferenza locale e stessa lunghezza di AS-PATH si seleziona quella il cui router di NEXT-HOP è più vicino. In questo caso, con più vicino si intende quello che presenta il percorso con costo minore, calcolato dall'algoritmo intra-AS.
  4. Se rimane ancora più di una rotta il router si basa sugli identificator BGP.

Nel caso precedente (hot potato) da 1b veniva scelto come NEXT-HOP 2a, in questo caso invece verrebbe scartato 2a a favore di 3b, il motivo è che l'AS-PATH è più breve.

Anycast IP
...

Il protocollo BGP, oltre a esse il protocollo inter-AS di internet, viene spesso usato per implementare il servizio IP anycast che è comunemente utilizzato in DNS. Per capire l'utilità di anycast si consideri che in molte applicazioni si è interessati a:

  1. replicare lo stesso contenuto su server differenti sparsi in diverse aree geografiche;
  2. che un utente accede al contenuto dal serve che gli è più vicino.
    Per esempio, una CDN può replicare oggetti sui suoi server in diversi paesi.
    Allo stesso modo, il sistema DNS può replicare i record DNS sui server DNS sparsi in tutto il mondo. Quando un utente vuole accedere ad un contenuto è preferibile che l'utente acceda al server a lui più vicino. L'algoritmo di selezione delle rotte di BGP fornisce un meccanismo semplice e naturale per tale operazione.

Consideriamo un caso concreto di come una CDN possa utilizzare l'anycast IP.
Pasted image 20231018200552.png
Consideriamo la figura sopra.
Durante la configurazione dell'anycast IP, la CDN assegna lo stesso IP a ognuno dei suoi server e utilizza BGP per annunciare tale indirizzo IP da ognuno dei suoi server.
Quando un router BGP riceve l'annuncio di più percorsi da questo IP, lo tratta come se fossero forniti diversi percorsi verso la stessa area fisica, anche se nella realtà sono percorsi diversi verso luoghi diversi. Ogni router, quando configura la sua tabella di inoltro, utilizza localmente l'algoritmo di selezione dei cammini BGP per scegliere il percorso migliore (per esempio il più vicino in base al conteggio degli hop AS) per quell'IP.
Per esempio, se un cammino BGP, corrispondente a un luogo, è solo un hop AS lontano dal router, e tutti gli altri percorsi BGP corrispondenti ad altri luoghi sono distanti più di un hop AS, il router BGP sceglierebbe di inviare i pacchetti al luogo distante un solo hop AS.
Dopo la fase iniziale di annuncio degli indirizzi BGP, la CDN può dedicarsi alla distribuzione dei contenuti.
Quando un client richiede un video alla CDN, la CDN gli fornisce (indipendentemente dal luogo in cui si trovi effettivamente il client) l'indirizzo IP usato da tutte le CDN. Quando il client inoltra la richiesta a tale IP, i router Internet inoltrano il pacchetto richiesto al server più vicino come definito da BGP.
Tale esempio illustra come le CDN potrebbero usare anycast IP, di fatto, le CDN non lo utilizzano perché cambiamenti nell'instradamento BGP potrebbero portare ad avere sulla stessa connessione TCP pacchetti differenti che arrivano a differenti istanze del server web.

Esempio

Supponiamo che una CDN che utilizza l'anycast IP per distribuire contenuti a livello globale. La CDN ha server distribuiti in diverse posizioni geografiche ed è configurata in modo che lo stesso indirizzo IP anycast sia assegnato a ciascuna di queste posizioni.
Consideriamo la seguente situazione: un utente sta cercando di accedere a un sito web ospitato sulla CDN. Questo utente si trova negli Stati Uniti e sta inviando richieste HTTP a un indirizzo IP anycast della CDN.
Inizialmente, il traffico dell'utente è instradato verso un server CDN negli Stati Uniti, poiché è il più vicino.
Nel frattempo, ci sono cambiamenti nell'instradamento BGP a livello globale, che potrebbero essere causati da varie ragioni, come la manutenzione di una rete o un evento di congestione.
A causa di questi cambiamenti, la rotta BGP verso il server CDN negli Stati Uniti subisce una modifica. Invece di essere instradato verso il server negli Stati Uniti, il traffico dell'utente viene ora instradato verso un server CDN in Europa.
Il problema è che la connessione TCP dell'utente è ancora aperta, e le richieste successive dell'utente vengono ora inviate al server CDN in Europa invece del server negli Stati Uniti.
Questo cambio improvviso potrebbe portare a problemi di coerenza e prestazioni. Ad esempio, il server CDN in Europa potrebbe non avere le stesse informazioni di cache del server negli Stati Uniti, il che potrebbe influire sulla velocità di risposta e sulla coerenza dei dati.

Tuttavia anycast IP è ampiamente usato dai DNS per redirigere la richiesta al server root DNS più vicino.

Politiche di instradamento
...

Quando un router sceglie una rotta, le politiche di instradamento dell'AS possono intervenire facendo saltare qualsiasi altra considerazione riguardante per esempio la brevità del percorso.
Si osservi la seguente figura che illustra dei sistema autonomi:
Pasted image 20231020150810.png
W, X, Y sono reti stub, ovvero reti che hanno una sola via di uscita, come una rete domestica (esempio molto comune).
A, B, C sono reti di provider di dorsale.
Ipotizziamo che A, B, C siano provider l'uno dell'altro. Tutto il traffico che entra in una rete di accesso di un ISP è destinato a tale rete e tutto il traffico che esce da tale rete è originato in essa.
Esempio: tutto il traffico che entra va da A verso W è destinato a W, mentre tutto il traffico che esce da W ha origine solo in W.
X è è un ISP di accesso multihomed, dato che è connessa a due provider (B, C).
Come W e Y anche X deve essere sorgente o destinazione di tutto il traffico in uscita o in ingresso in attraverso X. Ma come viene implementato è imposto tale comportamento? Come si impedirà a X di smaltire traffico tra B e C? Una risposta risiede nel controllo degli annunci delle rotte BGP.
In particolare, X opererà come rete stub se annuncia ai suoi vicini B e C di non avere percorsi verso altre destinazione se non sé stessa. Anche se X fosse a conoscenza di un percorso XCY, non lo annuncerà a B. In questo modo, B, non inoltrerà mai traffico destinato a Y (né a C) attraverso X.
Consideriamo ora la rete di un provider, per esempio B e supponiamo che questo abbia appreso (da A) che A presenta un percorso AW verso W. Allora B può installare il percorso BAW nella sua struttura dati per l'instradamento. Chiaramente B vuole annunciare il percorso BAW anche al suo cliente X, per permettergli di raggiungere W tramite B.
Ma dovrebbe annunciarlo anche a C? In questo modo C potrebbe instradare anche attraverso B verso W con il percorso CBAW.
B, di suo, potrebbe pensare, giustamente, di non dover prendersi carico di tutto il peso (e costo) del traffico in transito tra A e C e che dovrebbe essere compito di A e C assicurarsi che C possa instradare da e verso i clienti di A tramite una connessione diretta tra A e C. Attualmente non esistono standard ufficiali per gestire l'instradamento reciproco degli ISP di dorsale. Una regola pratica seguita dagli ISP commerciali è quella per cui tutto il traffico che fluisce attraverso la rete di dorsale di un ISP deve avere origine e/o destinazione in una sua rete cliente. Accordi individuali di peering (e confidenziali) vengono negoziati tra coppie di ISP.