Protocollo BGP

Il protocollo BGP

Il protocollo BGP, Border Gateway Protocol è un protocollo di routing dinamico usato per connettere tra loro più router che appartengono a “sistemi autonomi” (AS) diversi. È quindi un protocollo di routing inter-AS (“Exterior Gateway”), ovvero utilizzato per inviare le proprie route a organizzazioni esterne (e per ricevere le route di organizzazioni esterne). Differisce in questo dai protocolli di “Interior Gateway”, utilizzati per lo scambio di rotte all’interno della stessa organizzazione. (esempio: RIPv2, OSPF, …). Il BGP mette a disposizione di ciascun sistema autonomo un modo per:

  1. Ottenere informazioni sulla raggiungibilità delle sotto reti da parte dei sistemi confinanti;
  2. Propagare le informazioni di raggiungibilità a tutti i router interni a un sistema autonomo;
  3. Determinare percorsi “buoni” verso le sotto reti sulla base delle informazioni di raggiungibilità e delle politiche del sistema autonomo.

In particolare, BGP consente a ciascuna sottorete di comunicare la propria esistenza al resto di Internet.

Tipi di AS

Gran parte del traffico di rete trasportato all’interno di un AS ha origine o termina in nodi che si trovano all’interno dell stesso AS, questo tipo di traffico si chiama “traffico locale”. Il traffico che non rientra in questa descrizione si chiama “traffico di transito”. In base a come un AS tratta il traffico di transito, lo si può classificare in tre modi diversi:

  1. AS di tipo stub: AS che ha una singola connessione verso un altro AS,e quindi trasporta solo traffico locale.
  2. AS di tipo multihomed: AS che ha connessioni con più AS, ma rifiuta di trasportare traffico di transito.
  3. AS di tipo transit: AS che ha connessioni con più AS ed è progettato, sotto certe restrizioni politiche, per trasportare sia traffico locale che traffico di transito.

bgp tra diversi as
I sistemi BGP di scambiano informazioni riguardanti la raggiungibilità di rete con altri sistemi BGP. Queste informazioni di raggiungibilità comprendono informazioni :

  1. Sull’elenco degli AS presenti
  2. Quali AS vengono attraversati da un percorso
  3. L’identificativo dell’AS, ed altre informazioni utili

Questi dati sono sufficienti per la costruzione di un grafo della connettività e raggiungibilità degli AS, dal quale possono essere eliminati cicli di routing. Le informazioni scambiate attraverso un sistema BGP, supportano solo il paradigma basato sulla destinazione d’inoltro, cioè che un router inoltra un pacchetto basato esclusivamente sull’indirizzo di destinazione presente nell’header IP del pacchetto.
Bgp raggiungibilità

Path vector

Si tratta di un protocollo a indicazione di percorso (path vector) che non usa metriche di carattere tecnico (simile al distance vector, però nei DV inviati dai nodi non è indicata una “distanza dalla destinazione”, ma l’intero percorso verso la destinazione) ma prende le decisioni di instradamento basandosi su specifiche politiche. path vector
In realtà un messaggio di path vector che si scambiano due EG vicini non contiene solo un percorso ma una sequenza di “attributi” che si distinguono in attributi obbligatori, che devono essere interpretati da tutte le implementazioni di BGP, e facoltativi. La struttura del percorso che viene scambiata tra router è la seguente:

Network IP Address + Netmask + Path attribute

Il campo Path attribute è costituito da numerosi attributi, dove il più importanti sono:

  • Lista degli AS (AS_PATH): ciascun router memorizza la lista degli AS attraversati e poi invia un aggiornamento agli altri vicini inserendo il proprio AS di appartenenza
  • ORIGIN: protocollo IGP da cui proviene l’informazione (per esempio OSPF, RIP, IGRP);
  • NEXT_HOP: prossimo router.

Il next-hop è un attributo, il cui significato è diverso rispetto al next hop IGP.  Per le sessioni EBGP il next-hop è l’indirizzo IP del peer che ha annunciato la rotta
nest hop

Miglior percorso

Il BGP è un protocollo basato su path-vector, il che significa che il miglior percorso per raggiungere una determinata destinazione si basa principalmente sul numero di AS tra sorgente e destinazione. Ad esempio, nella scelta tra i seguenti due percorsi, verrà scelto il primo (anche se con minore ampiezza di banda):

  •  AS100 → AS 200 → AS 300 → AS 400
  • AS100 → AS 105 → AS 106 → AS 107 → AS 400

è tuttavia possibile utilizzare alcuni “tricks” per determinare il percorso preferito. Un esempio è il cosiddetto “AS prepending”, che consiste sostanzialmente nell’iniettare nel percorso AS più volte il proprio numero AS. Tornando ai percorsi di prima, se il link numero 2 ha maggior capienza trasmissiva, posso “forzare” il transito attraverso di esso annunciando più volte il mio AS (400). Si noti quindi che il link 1 è più lungo del 2, quindi verrà utilizzato come seconda scelta.

  •  AS100 → AS 200 → AS 300 → AS 400 → AS 400 → AS 400
  • AS100 → AS 105 → AS 106 → AS 107 → AS 400

Vediamo un esempio di funzionamento nella rete riportata in figura, dove propaghiamo il percorso per raggiungere la rete x.0.0.0/8 appartenente al AS1.
propagazione path

  • AS1 comunica a AS2 e ad AS4 il percorso per raggiungere x.0.0.0/8
  • AS4 successivamente lo integra e lo ritrasmette ad AS2 (AS_PATH: AS4,AS1)
  •  AS2 può scegliere se raggiungere la rete X.0.0.0/8 attraverso AS4 o AS1: supponiamo che scelga AS4 e quindi inoltra ad AS3 un path vector che riporta il percorso da lui scelto per raggiungere tale rete: AS2-AS4-AS1.

Lo scambio di messaggi BGP è supportato da connessioni TCP sulla porta Porta 179. Quando due router stabiliscono tra loro connessioni TCP per lo scambio di messaggi BGP si parla di sessione BGP e peer BGP che, a seconda del tipo di router, prende anche il nome di; iBGP: sessioni interne, solo tra router interni; eBGP: sessioni esterne, solo tra router di confine.

Tipi DI Messaggio

Possiamo classificare i messaggi che periodicamente si scambiano i router in quattro gruppi:

  1. OPEN: servono per inizializzare la connessione tra router, autenticando il mittente;
  2. UPDATE: sono messaggi di aggiornamento sulle informazioni di raggiungibilità
    • annuncio di un nuovo cammino (PATH);
    • eliminazione di un cammino preesistente (WITHDRAWN);
  3. NOTIFICATION: vengono utilizzati come risposta a un messaggio errato oppure per chiudere una connessione;
  4. KEEPALIVE: permettono di verificare lo stato di un altro router mantenendo attiva la connessioneanche se due router non si scambiano messaggi di UPDATE

Sintesi del funzionamento del protocollo 

  1. Le coppie di BGP speaker stabiliscono per prima cosa una sessione, mediante lo scmabio di messaggi Open
  2. Successivamente, i BGP speaker si scambiano l’intero database BGP, mediante i messaggi Update
  3.  In seguito a modifiche del database BGP, sono inviati update incrementali (nuovi percorsi o cancellazione di percorsi non più validi) 
  4. Periodicamente, i BGP speaker inviano messaggi di keep-alive per veirificare che la sessione sia attiva 
  5. I messaggi di Notification sono inviati in seguito al verificarsi di errori e per chiudere la sessione

Leave a Reply


Latest Posts

AAA