Il protocollo BGP (Border Gateway Protocol) è un protocollo dinamico usato per connettere tra loro più router che appartengono a “sistemi autonomi” AS diversi. È quindi un protocollo di routing inter-AS, classificato come protocollo di “exterior Gateway”, ovvero utilizzato per inviare le proprie route a organizzazioni esterne (e per ricevere le route di organizzazioni esterne).
Il BGP è il protcollo di routing per antonomasia, sul quale è basato il funzionamento di internet.
Di seguito un esempio di base di configurazione del BGP.
Il Border Gateway Protocol è un protocollo di instradamento (routing) che agisce nel ‘cuore’ della rete Internet. Il BGP funziona attraverso la gestione di una tabella di reti IP, o prefissi, che forniscono informazioni sulla raggiungibilità delle diverse reti tra più sistemi autonomi. Si tratta di un protocollo di routing a indicazione di percorso (path vector), che non usa metriche di carattere tecnico ma prende le decisioni di instradamento basandosi su politiche (regole) determinate da ciascuna rete. La versione corrente, BGP-4, è definita nella specifica RFC 4271.
Il BGP supporta il routing indipendente dalle classi (Classless InterDomain Routing) e usa un meccanismo di aggregazione degli instradamenti per diminuire le dimensioni delle relative tabelle. Nella rete Internet viene usata la versione 4 del protocollo a partire dal 1994; tutte le versioni precedenti sono considerate obsolete.
Il protocollo BGP è stato creato per sostituire il protocollo di routing EGP e consentire un instradamento completamente decentralizzato, eliminando così gli ostacoli che impedivano la soppressione della dorsale Internet NSFNET. In tal modo Internet è divenuta un sistema pienamente decentralizzato.
Anche le reti IP private di maggiori dimensioni possono trovare benefici dall’uso del BGP, ad esempio nel caso del collegamento di un gran numero di reti OSPF, una situazione in cui il protocollo OSPF non è in grado di scalare in modo efficiente. Un altro motivo che può spingere all’uso del BGP è la configurazione di una rete in multihoming per offrire una maggiore ridondanza.
Gli utenti di Internet, nella maggior parte dei casi, non utilizzano il protocollo BGP direttamente. Tuttavia, poiché quasi tutti i provider Internet (ISP) sono obbligati a usarlo per stabilire i criteri di routing reciproci, si tratta di uno dei protocolli più importanti di Internet.
Funzionamento
Nel protocollo BGP le coppie di sistemi autonomi adiacenti, detti peer, vengono stabilite mediante configurazione manuale dei router stabilendo una sessione TCP sulla porta 179. L’iniziatore della sessione BGP (speaker) invia periodicamente (per default ogni 60 secondi) dei messaggi keepalive da 19 byte per mantenere attiva la connessione. Tra i protocolli di routing, il BGP è l’unico a utilizzare il TCP come protocollo di trasporto.
Quando viene usato all’interno di uno stesso AS il protocollo BGP viene chiamato BGP Interno (IBGP, Interior Border Gateway Protocol); nell’uso tra AS distinti viene chiamato BGP Esterno (eBGP, Exterior Border Gateway Protocol). I router che svolgono compiti di instradamento del traffico iBGP vengono chiamati router di transito; quelli che si trovano sul margine esterno di un AS e utilizzano il protocollo eBGP per scambiare informazioni con il proprio ISP vengono chiamati router di bordo o di confine.
Tutti i router all’interno di un dato AS che partecipano all’instradamento via BGP devono essere configurati secondo una topologia a maglie completamente connesse: ciascun router deve essere configurato come peer di tutti gli altri. Naturalmente ciò pone seri problemi di scalabilità , poiché il numero di connessioni necessarie cresce con il quadrato del numero dei router coinvolti. Per ovviare a questo problema il protocollo BGP prevede due soluzioni: i route reflector (RFC 2796) e le confederazioni (RFC 3065).
I route reflector riducono il numero di connessioni necessarie nell’ambito di un AS. È possibile designare in tal modo un solo router (o due, per ridondanza) e configurare gli altri router appartenenti all’AS come peer soltanto di quest’ultimo.
Le confederazioni vengono usate nel caso di reti particolarmente estese, nelle quali un AS di grandi dimensioni può essere configurato in modo da comprendere vari AS interni di più facile gestione. È possibile usare le confederazioni anche contemporaneamente ai route reflector.