I cinque messaggi del protocollo BGP


Clock Icon 4 min Calendar Icon 01-02-2024 Like Icon 8

Border Gateway Protocol (BGP) permette la comunicazione tra reti di Autonomous System, di fatto è la "colla" che tiene insieme la rete Internet. Quando due router eseguono il protocollo BGP, stabiliscono innanzitutto una connessione TCP, di solito sulla porta 179. Successivamente i due router utilizzano cinque tipi di messaggi:

  1. OPEN
  2. UPDATE
  3. NOTIFICATION
  4. KEEPALIVE
  5. ROUTE REFRESH

Tutti i messaggi hanno un header comune che prevede un campo "marker" di 16 byte tutti settati a "1", un campo "length" che indica la lunghezza del pacchetto e il campo "type" che specifica il tipo di messaggio.

Header di un pacchetto BGP
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + + | Marker | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Length | Type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Messaggio OPEN

Il messaggio OPEN (type=1) è il primo pacchetto scambiato tra due router appena stabilita la connessione TCP.

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+                                                
|    Version    |                                                
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                                
|     My Autonomous System      |                                
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                                
|           Hold Time           |                                
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         BGP Identifier                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opt Parm Len  |                                                
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|             Optional Parameters (variable)                    |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Il primo campo indica la versione di BGP che si sta utilizzando. Successivamente troviamo l'Autonomous System Number, di chi ha generato il messaggio. Il terzo campo indica dopo quanto tempo bisogna chiudere la connessione, se non si ricevono più messaggi. Il BGP identifier (di solito è l'indirizzo IP) identifica il router che ha generato il messaggio. Gli ultimi due parametri permettono l'aggiunta di parametri opzionali, ad esempio le Capabilities.

Messaggio UPDATE

Questo messaggio (type=2) viene utilizzato per annunciare i prefissi IP con gli attributi correlati e/o eliminare prefissi precedentemente annunciati.

+-----------------------------------------------------+
|   Withdrawn Routes Length (2 octets)                |
+-----------------------------------------------------+
|   Withdrawn Routes (variable)                       |
+-----------------------------------------------------+
|   Total Path Attribute Length (2 octets)            |
+-----------------------------------------------------+
|   Path Attributes (variable)                        |
+-----------------------------------------------------+
|   Network Layer Reachability Information (variable) |
+-----------------------------------------------------+

Il primo campo indica la lunghezza del campo successivo, infatti il secondo campo contiene i prefissi annunciati precedentemente e non più raggiungibili. Anche il terzo campo indica una lunghezza di un altro campo, ovvero il campo "Path Attributes", che contiene gli attributi associati all'annuncio. Infine, l'ultimo campo contiene la lista dei prefissi raggiungibili. Ogni prefisso, sia nel campo Withdrawn che in Reachability, segue il formato: [Length, Prefix]

Messaggio NOTIFICATION

Questo messaggio (type=3) permette di notificare al router destinatario eventuali condizioni di errore. Il campo "Error code" indica uno dei sette possibili errori, il secondo campo indica ulteriori informazioni riguardo allo specifico errore segnalato nel campo precedente. L'ultimo campo viene utilizzato per questioni di diagnostica e, ovviamente, dipende dai due campi precedenti.

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Error code    | Error subcode |   Data (variable)             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Messaggio KEEPALIVE

I messaggi KEEPALIVE (type=4) vengono scambiati tra i router periodicamente per mantenere attiva la sessione BGP e, quindi, prevenire la scadenza del Hold Time. Questi messaggi sono vuoti e presentano soltanto l'header comune a tutti i tipi di messaggi BGP.

Messaggio ROUTE REFRESH

La funzione Route Refresh permette di richiedere a un router di ritrasmettere i percorsi migliori presenti nella routing table. La richiesta avviene attraverso questo messaggio (type=5).

0       7      15      23      31
+-------+-------+-------+-------+
|      AFI      | Res.  | SAFI  |
+-------+-------+-------+-------+

I due campi, Address Family Identifier (AFI) e Subsequent Address Family Identifier (SAFI), permettono di identificare l'address family per la quale è stata richiesta la ritrasmissione dei percorsi migliori. L'address family indica il tipo di informazioni richieste; ad esempio, AFI pari a 1 indica gli indirizzi IPv4, mentre AFI pari a 2 indica gli indirizzi IPv6. Il campo SAFI indica ulteriori informazioni sull'address family; ad esempio, se è pari ad 1 indica la logica unicast.