4. Funzionamento
Un membro di una confederazione BGP DEVE (MUST) usare il suo Identificatore di Confederazione AS in tutte le transazioni con peer che non sono membri della sua confederazione. Questo Identificatore di Confederazione AS è il numero AS "visibile esternamente", e questo numero è usato nei messaggi OPEN e annunciato nell'attributo AS_PATH.
Un membro di una confederazione BGP DEVE (MUST) usare il suo Numero Member-AS in tutte le transazioni con peer che sono membri della stessa confederazione dello speaker BGP locale.
Uno speaker BGP che riceve un attributo AS_PATH contenente un sistema autonomo che corrisponde al proprio Identificatore di Confederazione AS DEVE (SHALL) trattare il percorso nello stesso modo come se avesse ricevuto un percorso contenente il proprio numero AS.
Uno speaker BGP che riceve un attributo AS_PATH contenente un AS_CONFED_SEQUENCE o AS_CONFED_SET che contiene il proprio Numero Member-AS DEVE (SHALL) trattare il percorso nello stesso modo come se avesse ricevuto un percorso contenente il proprio numero AS.
4.1. Regole di modifica dell'AS_PATH
Quando si implementano le confederazioni BGP, la Sezione 5.1.2 di [BGP-4] è sostituita dal seguente testo:
AS_PATH è un attributo obbligatorio ben noto. Questo attributo identifica i sistemi autonomi attraverso i quali le informazioni di routing trasportate in questo messaggio UPDATE sono passate. I componenti di questa lista possono essere AS_SET, AS_SEQUENCE, AS_CONFED_SET o AS_CONFED_SEQUENCE.
Quando uno speaker BGP propaga una route che ha appreso dal messaggio UPDATE di un altro speaker BGP, modifica l'attributo AS_PATH della route in base alla posizione dello speaker BGP a cui la route verrà inviata:
a) Quando un dato speaker BGP annuncia la route a un altro speaker BGP situato nel proprio Member-AS, lo speaker annunciante NON DEVE (SHALL NOT) modificare l'attributo AS_PATH associato alla route.
b) Quando un dato speaker BGP annuncia la route a uno speaker BGP situato in un sistema autonomo vicino che è membro della confederazione locale, lo speaker annunciante aggiorna l'attributo AS_PATH come segue:
-
se il primo segmento di percorso dell'AS_PATH è di tipo AS_CONFED_SEQUENCE, il sistema locale antepone il proprio Numero Member-AS come ultimo elemento della sequenza (lo mette nella posizione più a sinistra rispetto alla posizione degli ottetti nel messaggio del protocollo). Se l'atto di anteporre causerà un overflow nel segmento AS_PATH (cioè più di 255 AS), DOVREBBE (SHOULD) anteporre un nuovo segmento di tipo AS_CONFED_SEQUENCE e anteporre il proprio numero AS a questo nuovo segmento.
-
se il primo segmento di percorso dell'AS_PATH non è di tipo AS_CONFED_SEQUENCE, il sistema locale antepone un nuovo segmento di percorso di tipo AS_CONFED_SEQUENCE all'AS_PATH, includendo il proprio Numero Member-AS in quel segmento.
-
se l'AS_PATH è vuoto, il sistema locale crea un segmento di percorso di tipo AS_CONFED_SEQUENCE, inserisce il proprio Numero Member-AS in quel segmento e inserisce quel segmento nell'AS_PATH.
c) Quando un dato speaker BGP annuncia la route a uno speaker BGP situato in un sistema autonomo vicino che non è membro della confederazione locale, lo speaker annunciante DEVE (SHALL) aggiornare l'attributo AS_PATH come segue:
-
se qualsiasi segmento di percorso dell'AS_PATH è di tipo AS_CONFED_SEQUENCE o AS_CONFED_SET, quei segmenti DEVONO (MUST) essere rimossi dall'attributo AS_PATH, lasciando l'attributo AS_PATH sanificato per essere elaborato dai passi 2, 3 o 4.
-
se il primo segmento di percorso dell'AS_PATH rimanente è di tipo AS_SEQUENCE, il sistema locale antepone il proprio Identificatore di Confederazione AS come ultimo elemento della sequenza (lo mette nella posizione più a sinistra rispetto alla posizione degli ottetti nel messaggio del protocollo). Se l'atto di anteporre causerà un overflow nel segmento AS_PATH (cioè più di 255 AS), DOVREBBE (SHOULD) anteporre un nuovo segmento di tipo AS_SEQUENCE e anteporre il proprio numero AS a questo nuovo segmento.
-
se il primo segmento di percorso dell'AS_PATH rimanente è di tipo AS_SET, il sistema locale antepone un nuovo segmento di percorso di tipo AS_SEQUENCE all'AS_PATH, includendo il proprio Identificatore di Confederazione AS in quel segmento.
-
se l'AS_PATH rimanente è vuoto, il sistema locale crea un segmento di percorso di tipo AS_SEQUENCE, inserisce il proprio Identificatore di Confederazione AS in quel segmento e inserisce quel segmento nell'AS_PATH.
Quando uno speaker BGP origina una route, allora:
a) lo speaker originante include il proprio Identificatore di Confederazione AS in un segmento di percorso, di tipo AS_SEQUENCE, nell'attributo AS_PATH di tutti i messaggi UPDATE inviati a speaker BGP situati in sistemi autonomi vicini che non sono membri della confederazione locale. In questo caso, l'Identificatore di Confederazione AS del sistema autonomo dello speaker originante sarà l'unica voce nel segmento di percorso, e questo segmento di percorso sarà l'unico segmento nell'attributo AS_PATH.
b) lo speaker originante include il proprio Numero Member-AS in un segmento di percorso, di tipo AS_CONFED_SEQUENCE, nell'attributo AS_PATH di tutti i messaggi UPDATE inviati a speaker BGP situati in Sistemi Autonomi Membri vicini che sono membri della confederazione locale. In questo caso, il Numero Member-AS del sistema autonomo dello speaker originante sarà l'unica voce nel segmento di percorso, e questo segmento di percorso sarà l'unico segmento nell'attributo AS_PATH.
c) lo speaker originante include un attributo AS_PATH vuoto in tutti i messaggi UPDATE inviati a speaker BGP residenti nello stesso Member-AS. (Un attributo AS_PATH vuoto è uno il cui campo lunghezza contiene il valore zero).
Ogni volta che la modifica dell'attributo AS_PATH richiede di includere o anteporre l'Identificatore di Confederazione AS o il Numero Member-AS del sistema locale, il sistema locale PUÒ (MAY) includere/anteporre più di un'istanza di quel valore nell'attributo AS_PATH. Questo è controllato tramite la configurazione locale.