4.3. UPDATE Message Format (Formato Messaggio UPDATE)
4.3. UPDATE Message Format (Formato Messaggio UPDATE)
I messaggi UPDATE sono utilizzati per trasferire informazioni di routing tra peer BGP. Le informazioni nel messaggio UPDATE possono essere utilizzate per costruire un grafo che descrive le relazioni dei vari Sistemi Autonomi. Applicando le regole che verranno discusse, i loop delle informazioni di routing e alcune altre anomalie possono essere rilevati e rimossi dal routing inter-AS.
Un messaggio UPDATE viene utilizzato per annunciare route fattibili che condividono attributi di percorso comuni a un peer, o per ritirare più route non fattibili dal servizio (vedere 3.1). Un messaggio UPDATE PUÒ simultaneamente annunciare una route fattibile e ritirare più route non fattibili dal servizio. Il messaggio UPDATE include sempre l'intestazione BGP di dimensione fissa, e include anche gli altri campi, come mostrato di seguito (nota, alcuni dei campi mostrati potrebbero non essere presenti in ogni messaggio UPDATE):
+-----------------------------------------------------+
| Withdrawn Routes Length (2 octets) |
+-----------------------------------------------------+
| Withdrawn Routes (variable) |
+-----------------------------------------------------+
| Total Path Attribute Length (2 octets) |
+-----------------------------------------------------+
| Path Attributes (variable) |
+-----------------------------------------------------+
| Network Layer Reachability Information (variable) |
+-----------------------------------------------------+
Withdrawn Routes Length (Lunghezza Route Ritirate):
Questo numero intero senza segno di 2 ottetti indica la lunghezza totale del campo Withdrawn Routes in ottetti. Il suo valore consente di determinare la lunghezza del campo Network Layer Reachability Information, come specificato di seguito.
Un valore di 0 indica che nessuna route viene ritirata dal servizio e che il campo WITHDRAWN ROUTES non è presente in questo messaggio UPDATE.
Withdrawn Routes (Route Ritirate):
Questo è un campo di lunghezza variabile che contiene un elenco di prefissi di indirizzi IP per le route che vengono ritirate dal servizio. Ogni prefisso di indirizzo IP è codificato come una tupla di 2 elementi della forma <lunghezza, prefisso>, i cui campi sono descritti di seguito:
+---------------------------+
| Length (1 octet) |
+---------------------------+
| Prefix (variable) |
+---------------------------+
L'uso e il significato di questi campi sono i seguenti:
a) Length (Lunghezza):
Il campo Length indica la lunghezza in bit del prefisso dell'indirizzo IP. Una lunghezza pari a zero indica un prefisso che corrisponde a tutti gli indirizzi IP (con prefisso, esso stesso, di zero ottetti).
b) Prefix (Prefisso):
Il campo Prefix contiene un prefisso di indirizzo IP, seguito dal numero minimo di bit finali necessari per far cadere la fine del campo su un confine di ottetto. Si noti che il valore dei bit finali è irrilevante.
Total Path Attribute Length (Lunghezza Totale Attributi Percorso):
Questo numero intero senza segno di 2 ottetti indica la lunghezza totale del campo Path Attributes in ottetti. Il suo valore consente di determinare la lunghezza del campo Network Layer Reachability come specificato di seguito.
Un valore di 0 indica che né il campo Network Layer Reachability Information né il campo Path Attribute sono presenti in questo messaggio UPDATE.
Path Attributes (Attributi Percorso):
Una sequenza di lunghezza variabile di attributi di percorso è presente in ogni messaggio UPDATE, ad eccezione di un messaggio UPDATE che trasporta solo le route ritirate. Ogni attributo di percorso è una tripla <tipo attributo, lunghezza attributo, valore attributo> di lunghezza variabile.
Attribute Type (Tipo Attributo) è un campo di due ottetti che consiste nell'ottetto Attribute Flags (Flag Attributo), seguito dall'ottetto Attribute Type Code (Codice Tipo Attributo).
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Attr. Flags |Attr. Type Code|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Il bit di ordine superiore (bit 0) dell'ottetto Attribute Flags è il bit Opzionale (Optional bit). Definisce se l'attributo è opzionale (se impostato a 1) o well-known (se impostato a 0).
Il secondo bit di ordine superiore (bit 1) dell'ottetto Attribute Flags è il bit Transitivo (Transitive bit). Definisce se un attributo opzionale è transitivo (se impostato a 1) o non transitivo (se impostato a 0).
Per gli attributi well-known, il bit Transitivo DEVE essere impostato a 1. (Vedere la Sezione 5 per una discussione sugli attributi transitivi.)
Il terzo bit di ordine superiore (bit 2) dell'ottetto Attribute Flags è il bit Parziale (Partial bit). Definisce se l'informazione contenuta nell'attributo transitivo opzionale è parziale (se impostato a 1) o completa (se impostato a 0). Per gli attributi well-known e per gli attributi opzionali non transitivi, il bit Parziale DEVE essere impostato a 0.
Il quarto bit di ordine superiore (bit 3) dell'ottetto Attribute Flags è il bit Lunghezza Estesa (Extended Length bit). Definisce se la Lunghezza Attributo è un ottetto (se impostato a 0) o due ottetti (se impostato a 1).
I quattro bit di ordine inferiore dell'ottetto Attribute Flags sono inutilizzati. DEVONO essere zero quando inviati e DEVONO essere ignorati quando ricevuti.
L'ottetto Attribute Type Code contiene il Codice Tipo Attributo. I Codici Tipo Attributo attualmente definiti sono discussi nella Sezione 5.
Se il bit Lunghezza Estesa dell'ottetto Attribute Flags è impostato a 0, il terzo ottetto dell'Attributo Percorso contiene la lunghezza dei dati dell'attributo in ottetti.
Se il bit Lunghezza Estesa dell'ottetto Attribute Flags è impostato a 1, il terzo e il quarto ottetto dell'attributo percorso contengono la lunghezza dei dati dell'attributo in ottetti.
Gli ottetti rimanenti dell'Attributo Percorso rappresentano il valore dell'attributo e sono interpretati in base ai Flag Attributo e al Codice Tipo Attributo. I Codici Tipo Attributo supportati, e i loro valori attributo e usi sono i seguenti:
a) ORIGIN (Codice Tipo 1):
ORIGIN è un attributo obbligatorio well-known che definisce l'origine delle informazioni sul percorso. L'ottetto dati può assumere i seguenti valori:
- Valore 0 (IGP) - Network Layer Reachability Information è interno all'AS di origine
- Valore 1 (EGP) - Network Layer Reachability Information apprese tramite il protocollo EGP [RFC904]
- Valore 2 (INCOMPLETE) - Network Layer Reachability Information apprese con qualche altro mezzo
L'uso di questo attributo è definito in 5.1.1.
b) AS_PATH (Codice Tipo 2):
AS_PATH è un attributo obbligatorio well-known composto da una sequenza di segmenti di percorso AS. Ogni segmento di percorso AS è rappresentato da una tripla <tipo segmento percorso, lunghezza segmento percorso, valore segmento percorso>.
Il tipo segmento percorso è un campo lunghezza di 1 ottetto con i seguenti valori definiti:
- Valore 1 (AS_SET): insieme non ordinato di AS che una route nel messaggio UPDATE ha attraversato
- Valore 2 (AS_SEQUENCE): insieme ordinato di AS che una route nel messaggio UPDATE ha attraversato
La lunghezza segmento percorso è un campo lunghezza di 1 ottetto, contenente il numero di AS (non il numero di ottetti) nel campo valore segmento percorso.
Il campo valore segmento percorso contiene uno o più numeri AS, ciascuno codificato come un campo lunghezza di 2 ottetti.
L'uso di questo attributo è definito in 5.1.2.
c) NEXT_HOP (Codice Tipo 3):
Questo è un attributo obbligatorio well-known che definisce l'indirizzo IP (unicast) del router che DOVREBBE essere utilizzato come next hop per le destinazioni elencate nel campo Network Layer Reachability Information del messaggio UPDATE.
L'uso di questo attributo è definito in 5.1.3.
d) MULTI_EXIT_DISC (Codice Tipo 4):
Questo è un attributo opzionale non transitivo che è un numero intero senza segno di quattro ottetti. Il valore di questo attributo PUÒ essere utilizzato dal Processo di Decisione di uno speaker BGP per discriminare tra più punti di ingresso verso un sistema autonomo vicino.
L'uso di questo attributo è definito in 5.1.4.
e) LOCAL_PREF (Codice Tipo 5):
LOCAL_PREF è un attributo well-known che è un numero intero senza segno di quattro ottetti. Uno speaker BGP lo usa per informare i suoi altri peer interni del grado di preferenza dello speaker che annuncia per una route annunciata.
L'uso di questo attributo è definito in 5.1.5.
f) ATOMIC_AGGREGATE (Codice Tipo 6):
ATOMIC_AGGREGATE è un attributo discrezionale well-known di lunghezza 0.
L'uso di questo attributo è definito in 5.1.6.
g) AGGREGATOR (Codice Tipo 7):
AGGREGATOR è un attributo transitivo opzionale di lunghezza 6. L'attributo contiene l'ultimo numero AS che ha formato la route aggregata (codificato come 2 ottetti), seguito dall'indirizzo IP dello speaker BGP che ha formato la route aggregata (codificato come 4 ottetti). Questo DOVREBBE essere lo stesso indirizzo di quello utilizzato per l'Identificatore BGP dello speaker.
L'uso di questo attributo è definito in 5.1.7.
Network Layer Reachability Information (Informazioni di Raggiungibilità del Livello di Rete):
Questo campo di lunghezza variabile contiene un elenco di prefissi di indirizzi IP. La lunghezza, in ottetti, delle Network Layer Reachability Information non è codificata esplicitamente, ma può essere calcolata come:
Lunghezza messaggio UPDATE - 23 - Lunghezza Totale Attributi Percorso - Lunghezza Route Ritirate
dove Lunghezza messaggio UPDATE è il valore codificato nell'intestazione BGP di dimensione fissa, Lunghezza Totale Attributi Percorso e Lunghezza Route Ritirate sono i valori codificati nella parte variabile del messaggio UPDATE, e 23 è una lunghezza combinata dell'intestazione BGP di dimensione fissa, del campo Lunghezza Totale Attributi Percorso e del campo Lunghezza Route Ritirate.
Le informazioni di raggiungibilità sono codificate come una o più tuple di 2 elementi della forma <lunghezza, prefisso>, i cui campi sono descritti di seguito:
+---------------------------+
| Length (1 octet) |
+---------------------------+
| Prefix (variable) |
+---------------------------+
L'uso e il significato di questi campi sono i seguenti:
a) Length (Lunghezza):
Il campo Length indica la lunghezza in bit del prefisso dell'indirizzo IP. Una lunghezza pari a zero indica un prefisso che corrisponde a tutti gli indirizzi IP (con prefisso, esso stesso, di zero ottetti).
b) Prefix (Prefisso):
Il campo Prefix contiene un prefisso di indirizzo IP, seguito da abbastanza bit finali per far cadere la fine del campo su un confine di ottetto. Si noti che il valore dei bit finali è irrilevante.
La lunghezza minima del messaggio UPDATE è 23 ottetti -- 19 ottetti per l'intestazione fissa + 2 ottetti per la Lunghezza Route Ritirate + 2 ottetti per la Lunghezza Totale Attributi Percorso (il valore di Lunghezza Route Ritirate è 0 e il valore di Lunghezza Totale Attributi Percorso è 0).
Un messaggio UPDATE può annunciare, al massimo, un insieme di attributi di percorso, ma più destinazioni, a condizione che le destinazioni condividano questi attributi. Tutti gli attributi di percorso contenuti in un dato messaggio UPDATE si applicano a tutte le destinazioni trasportate nel campo NLRI del messaggio UPDATE.
Un messaggio UPDATE può elencare più route che devono essere ritirate dal servizio. Ogni tale route è identificata dalla sua destinazione (espressa come un prefisso IP), che identifica in modo non ambiguo la route nel contesto della connessione speaker BGP - speaker BGP alla quale è stata precedentemente annunciata.
Un messaggio UPDATE potrebbe annunciare solo route che devono essere ritirate dal servizio, nel qual caso il messaggio non includerà attributi di percorso o Network Layer Reachability Information. Al contrario, può annunciare solo una route fattibile, nel qual caso il campo WITHDRAWN ROUTES non deve essere presente.
Un messaggio UPDATE NON DOVREBBE includere lo stesso prefisso di indirizzo nei campi WITHDRAWN ROUTES e Network Layer Reachability Information. Tuttavia, uno speaker BGP DEVE essere in grado di elaborare messaggi UPDATE in questa forma. Uno speaker BGP DOVREBBE trattare un messaggio UPDATE di questa forma come se le WITHDRAWN ROUTES non contenessero il prefisso dell'indirizzo.