|
BGP (Border Gateway Protocol) e' un protocollo di routing tra domini, correntemente utilizzato sul backbone di Internet ed e' in pratica il successore del protocollo EGP (Exterior Gateway Protocol). In effetti questo protocollo viene usato soprattutto su Internet dove diversi AS sono collegati a questa grande rete attraverso strutture chiamate Internet Service Provider (ISP). Il protocollo BGP costruisce un grafo di autonomous system basato sulle informazioni che si scambiano i router : questo grafo viene chiamato anche albero in cui ciascun AS viene identificato con un numero univoco. La connessione tra due AS si chiama percorso e una collezione di percorsi forma a sua volta un percorso che viene utilizzato per raggiungere la destinazione BGP e' definito nelle RFC 1105, 1163 e 1267 ed è ormai giunto alla versione BGP-4, con estensioni che ne permettono di trasportare più protocolli. CARATTERISTICHE DEL PROTOCOLLO
L’utilizzo del TCP semplifica notevolmente la specifica di BGP in quanto si evita totalmente di dover considerare i problemi di ritrasmissione. Tuttavia si può creare qualche problema se un link non è totalmente affidabile (il TCP maschera momentanei fuori servizio del link). Inoltre e' necessario prestare attenzione al fatto che il router sia in grado di privilegiare eventualmente i pacchetti BGP in quanto il TCP, in caso di congestione, riduce il bit rate. Questo puo' essere dannoso per la velocita' di propagazione delle informazioni di routing.
Una delle principali criticita' del protocollo Distance Vector consiste nella possibilita' che si verifichino fenomeni di non convergenza, quando non viene sempre scelto, da tutti i nodi, il percorso più breve Il protocollo Path Vector, che e' comunque una variante dell’algoritmo DV, permette la memorizzazione dell’intero percorso tra due reti. Ne consegue che è immediato il riconoscimento dei loop. Inoltre, il PV non obbliga tutti gli AS ad usare la stessa metrica (in ogni AS ci possono essere esigenze diverse e quindi metriche diverse). E' comunque necessario considerare che i messaggi BGP sono molto più grandi rispetto ai DV. Uno stesso router puo' ricevere annunci che dichiarano alcune destinazioni raggiungibili attraverso percorsi diversi. Si possono avere:
I router devono scegliere per default la route maggiormente specifica. Se un router sceglie la route meno specifica lo segnala quando la propaga. In questo modo si notifica che non è garantito che i pacchetti seguiranno il percorso annunciato. Il router da cui arrivano le route sovrapposte, invierà alcuni pacchetti sul percorso della route più specifica e altri su quella meno specifica (l’unica annunciata). Inoltre, la route non può essere disaggregata per cui i router che ricevono l’annuncio non possono a loro volta annunciare percorsi differenti per sottoinsiemi delle destinazioni. Per la descrizione di un percorso verso una destinazione vengono utilizzati dei campi detti attributi. I più importanti sono la "lista degli AS attraversati" e la "lista delle reti raggiungibili" A questo scopo, BGP utilizza due ottetti nei quali una serie di opportuni flag permettono di discriminare il significato dei vari attributi.
Ogni attributo è classificato da un primo ottetto, nel quale sono previsti 4 flags e 4 bit riservati (a zero):
Il secondo ottetto riporta il tipo di attributo; la seguente tabella riporta invece un elenco degli attributi previsti, con il valore assunto dai flag ed il significato dell'attributo:
Possiamo distinguere:
L’ideale sarebbe un grafo completamente connesso; in pratica ci si accontenta di un grafo ben connesso. Ogni router stabilisce così una serie di connessioni (definite da management) con gli altri router BGP dello stesso AS. Permettono al router di stilare una classifica dei possibili percorsi e scegliere il migliore; vengono configurate manualmente. Sono necessarie in quanto non sono diffusi costi per il raggiungimento delle destinazioni. Si possono imporre politiche molto complesse Deve comunque esistere un metodo locale per costruire una funzione che dato un percorso restituisca un numero intero Prima di vedere gli aspetti legati alla ricezione e alla propagazione dei pacchetti, e' necessario introdurre la definizione di RIB (Routing Information Base). Esistono 3 tipologie di RIB, di seguito descritte:
Quando viene ricevuto un annuncio:
Il processo di decisione applica le politiche contenute nella Policy Information Base (PIB) per selezionare le route da propagare. È una funzione che, dati gli attributi di una route, restituisce un intero (grado di preferenza) Il processo di decisione non considera:
Applicata la funzione a tutte le route per una destinazione, si sceglie quella con grado di preferenza maggiore Il processo agisce su tutte le route contenute in Adj-RIB-In e si occupa di selezionare le route da propagare sia all’interno che all'esterno dell’Autonomous System; inoltre, aggrega le route e riduce le informazioni da trasmettere. Il seguente grafico riassume una parte dei concetti sinora espressi, in particolare per cio' che riguarda politiche, ricezione e propagazione e processo di decisione:
|