# Border Gateway Protocol

In telecomunicazioni e informatica il Border Gateway Protocol (BGP) è un protocollo di routing di tipo EGP usato per connettere tra loro più router che appartengono a sistemi autonomi (Autonomous System, AS) distinti e che vengono chiamati router gateway o router di bordo/confine. È quindi un protocollo di routing inter-AS, nonostante possa essere utilizzato anche tra router appartenenti allo stesso AS (nel qual caso è indicato con il nome di iBGP, Interior Border Gateway Protocol), o tra router connessi tramite un ulteriore AS che li separa (eBGP, External Border Gateway Protocol).
In pratica BGP mette a disposizione di ciascun router un modo per:
* Ottenere informazioni sulla raggiungibilità dei prefissi di sottorete da parte dei sistemi confinanti
* Determinare i percorsi ottimali verso le sottoreti sulla base delle politiche del sistema e sulle informazioni di raggiungibilità
* Propagare le informazioni a tutti i router interni ad un AS

## Descrizione

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.

### Selezione delle rotte migliori

Quando un router annuncia un prefisso per una sessione BGP, include anche un certo numero di attributi BGP, formando quella che viene definita rotta (route), formata appunto da un prefisso più gli attributi.
* AS-PATH: elenca gli AS attraverso i quali è passato l'annuncio del prefisso. In questo modo sono evitabili possibili reiterazioni sugli annunci
* NEXT-HOP: indica l'indirizzo IP del router che deve essere usato come next-hop verso la destinazione specificata
Pertanto ogni rotta sarà genericamente descritta da tre elementi: NEXT-HOP, AS-PATH, prefisso x.

### Automa a stati finiti

I peer BGP usano un semplice automa a stati finiti per prendere le decisioni che riguardano l'interazione con altri peer BGP. L'automa è composto da sei stati - Idle (Inattiva), Connect (Connetti), Active (Attivo), OpenSent (Apertura Inviata), OpenConfirm (Apertura Confermata) ed Established (Stabilito). Ciascun peer BGP attraversa gli stati descritti quando cerca di stabilire e mantenere in vita una sessione con un altro peer.

## Inconvenienti e soluzioni
### Volatilità degli instradamenti

Il BGP prevede una procedura di smorzamento (damping) per ridurre gli effetti della volatilità degli instradamenti. Tale fenomeno può essere causato dalla interruzione e dal successivo ripristino dei collegamenti a livello di WAN / WLAN oppure da errori di configurazione o gestione dei router. In assenza di damping può accadere che gli instradamenti vengano inseriti ed eliminati dalle tabelle di routing con grande rapidità, il che può avere un impatto rilevante sul carico di lavoro dei router e di conseguenza sulla stabilità complessiva delle procedure di instradamento.
Nel processo di damping la volatilità di un instradamento subisce una diminuzione esponenziale. La prima volta che un instradamento va e viene in breve tempo, per qualsiasi ragione, il damping non interviene; vengono così conservati i tempi di risposta consueti del BGP. Quando l'evento si presenta una seconda volta, il BGP ignora il prefisso per un certo tempo, e le occorrenze successive vengono ritardate secondo una progressione esponenziale. Quando le anomalie sull'instradamento in questione sono cessate ed è trascorso un opportuno lasso di tempo, i prefissi possono essere ripristinati partendo da zero. Il damping può anche ridurre gli effetti degli attacchi ostili di tipo denial of service, in quanto gli intervalli temporali previsti dal meccanismo sono ampiamente personalizzabili.
A causa della maggiore velocità dei collegamenti delle dorsali e dei processori dei router, alcuni architetti di rete hanno suggerito che il damping non sia più importante come una volta, in quanto i router sono in grado di assorbire molto più rapidamente le modifiche alla tabella di routing. Alcuni hanno persino suggerito che il damping in queste condizioni possa peggiorare la situazione invece di migliorarla. Questo argomento è ancora controverso e oggetto di numerose ricerche.

### Esplosione delle tabelle di routing

Uno dei problemi più gravi del protocollo BGP, ma in realtà dell'intera infrastruttura di Internet, deriva dalla crescita della tabella di routing della stessa Internet. Se la tabella di routing globale crescesse fino al punto in cui la sua gestione dovesse superare le capacità di memoria e di potenza di calcolo dei router meno recenti, questi non sarebbero più in grado di agire adeguatamente da gateway per le parti di Internet collegate ad essi. Inoltre, cosa forse ancor più importante, le tabelle di routing più grandi richiedono tempi più lunghi per stabilizzarsi (vedi sopra) dopo una modifica sostanziale nella connettività, garantendo nel frattempo solo una connettività ridotta, o talvolta assente.
Fino al 2001 la tabella di routing globale era in crescita esponenziale e minacciava di dare luogo, col tempo, a una interruzione generalizzata della connettività. Nel tentativo di contrastare questa eventualità, è in corso uno sforzo congiunto degli ISP per mantenere al minimo le dimensioni della tabella di routing globale, attraverso il ricorso ai meccanismi di Classless InterDomain Routing e aggregazione degli instradamenti. Questi sforzi hanno rallentato la crescita della tabella di routing sino a riportarla a un andamento lineare, allontanando in modo significativo il momento in cui sarà necessario sostituire i router più datati.

### Errori di configurazione

L'errata configurazione del BGP è stata ricondotta quale causa principale del down completo dei social Facebook, Messenger, Whatsapp e Instagram avvenuto il 4 Ottobre 2021 e che ha coinvolto l'intero pianeta. Il risultato dell'errore di configurazione è stato che i name server, cioè i computer che si occupano di tradurre i nomi utilizzati normalmente, come facebook.com, in indirizzi numerici del protocollo IP, sono diventati improvvisamente inaccessibili, insieme al resto di tutta l’infrastruttura. Ciò ha di fatto prodotto un evento inatteso, la totale disconnessione dei servizi della galassia di Facebook: non si è verificato un semplice malfunzionamento di alcuni siti, ma per alcune ore i siti e i servizi online più frequentati del pianeta sono stati letteralmente cancellati dalla rete: cercando il dominio facebook.com sul sito di ricerca di informazioni sui domini domaintools.com, veniva restituita la schermata seguente: “facebook.com is for sale!”. I tentativi di accedere alle piattaforme inaccessibili da parte degli utenti di tutto il mondo ha inoltre provocato un picco di richieste ai server DNS, rallentando di fatto l'intera infrastruttura Internet. Infine, l'errata configurazione del BGP ha prodotto non solo la paralisi totale dei servizi al pubblico di Facebook (il social network, le applicazioni di messaggistica e l’applicazione di condivisione di foto), ma anche la paralisi dei servizi interni, inclusi i lettori di badge che permettono ai dipendenti di entrare e muoversi negli edifici aziendali.