III.2.1.3Route preference
Roberto Bifulco — Sat, 10/18/2008 - 22:11
Abbiamo visto che BGP lavora sostanzialmente con decisioni di tipo amministrativo, quindi, è utile disporre di un meccanismo che dia la possibilità di preferire una rotta piuttosto che un'altra. I sistemi di filtri offrono la possibilità di accettare o negare una rotta, ma se abbiamo due rotte per una stessa destinazione, ad esempio una principale ed una di backup, come indicare quale delle due preferire? Un possibile approccio è impostare un valore di preferenza locale per ciascun canale di comunicazione verso gli altri AS.
Per inserire tale valore è possibile operare una piccola modifica al modello di router BGP presentato in Figure 16. E' sufficiente far si che i filtri in ingresso aggiungano l'informazione del valore di preferenza locale a ciascuna rotta e impostare opportunamente l'algoritmo di decisione in modo che tenga conto di questi valori nella selezione della rotta per una destinazione. Una semplice impostazione è selezionare la rotta con la preferenza locale più alta.
In realtà, per quanto questa possa sembrare una soluzione ottimale, ci sono alcuni problemi all'atto dell'applicazione pratica che rischiano di generare loop nella consegna di alcuni pacchetti:


In questa situazione AS1 dichiara la rotta per 194.100.0.0/24 ad AS2 ed AS3, ed entrambi la dichiarano reciprocamente fra loro. Poiché AS2 preferisce il link con AS3 che non è a pagamento, deciderà di inviare i pacchetti tramite AS3, ma AS3 per raggiungere 194.100.0.0/24 preferirà a sua volta AS2.
In realtà in questa situazione si possono avere tre casi:
Il messaggio di UPDATE di AS1 è inviato ad AS2 ed AS3, ma AS2 invia il messaggio che dichiara la nuova rotta con PATH AS2,AS1 prima che AS3 invii il suo messaggio. In questo modo AS3 impara la rotta per 194.100.0.0/2 tramite AS2 e non invia ad AS2 la rotta attraverso di se per raggiungere la destinazione. Il routing in questo caso è stabile;
Il secondo caso è la situazione duale alla precedente, con AS2 che impara la rotta con path AS3,AS1;
Il terzo caso si ha quando i messaggi con path AS3,AS1 e AS2,AS1 viaggiano in contemporanea, in questo caso, i due AS inviano un messaggio di WITHDRAW della rotta precedentemente dichiarata. Subito dopo poiché verificano la loro connessione diretta con AS1, reinviano i messaggi con i PATH che prima avevano ritirato, e ancora una volta può verificarsi uno di questi tre casi. Il procedimento va avanti fino a quando non ci si trova nel caso 1 o 2.
Purtroppo possono anche esserci casi in cui non si può raggiungere la convergenza:


Figure 23: Esempio di caso in cui BGP non converge
Come è facile vedere, poiché ciascuno degli AS non accede direttamente ad AS0, un pacchetto continuerebbe a percorre in loop un percorso che non raggiunge mai la sua destinazione.

Post new comment