Nei giorni scorsi vi abbiamo parlato dell’irraggiungibilità di Facebook, Instagram e WhatsApp, problema durato circa 6 ore che ha interessato utenti in tutto il mondo impossibilitati a usare i servizi dell’azienda di Mark Zuckerberg.
Nell’articolo sull’incidente occorso a Facebook abbiamo parlato brevemente di BGP (Border Gateway Protocol), protocollo di routing essenziale per le comunicazioni sulla rete Internet.
A vari livelli sono state utilizzate tante metafore per descrivere l’accaduto. BGP è un protocollo che descrive quale percorso (“rotta”) devono seguire i pacchetti dati per raggiungere un determinato server. Cloudflare ha calcolato che esistono oltre 800.000 possibili rotte che i pacchetti dati possono seguire sulla rete Internet e controllarle tutte diventa davvero problematico.
BGP permette di selezionare la tratta più efficiente per raggiungere la destinazione tra tutte quelle disponibili.
Per fare un esempio estremo, quando un utente a Singapore sceglie di visitare un sito web il cui server è fisicamente posizionato in Argentina, il browser web si appoggia a un DNS per ottenere l’indirizzo IP pubblico del sistema da raggiungere: nell’articolo in cui spieghiamo cosa sono i DNS di Google parliamo del funzionamento del sistema in generale.
“Dietro le quinte”, una volta stabilito l’indirizzo IP pubblico da raggiungere, è il protocollo BGP che decide qual è il percorso migliore per giungere a destinazione.
In rete sono chiamati autonomous system quei gruppi di router e reti sotto il controllo diretto di un soggetto ben definito, ad esempio un operatore di telecomunicazioni, un ente pubblico o governativo, una grande impresa privata come possono essere Facebook o Google.
Come si vede nell’immagine (fonte: Cloudflare) i segmenti di collegamento che si vedono tra un “agglomerato” di sistemi e l’altro (autonomous systems) sono proprio le tratte che vengono gestite dal protocollo BGP.
Provate a visitare la pagina per verificare il vostro indirizzo IP pubblico. Di solito è quello assegnato al vostro router dall’operatore di telecomunicazioni “locale” che avete scelto.
Incollate quell’indirizzo IP nel servizio WHOIS di Domain Tools: leggerete da quale soggetto è gestito l’indirizzo IP e a quale segmento appartiene.
Accanto alla voce ASN (Autonomous System Number) troverete l’identificativo univoco a livello globale che definisce un gruppo di uno o più prefissi IP gestiti da uno o più operatori di rete che mantengono una politica di routing unica e chiaramente definita.
Provate adesso a usare ASN Tool incollando il valore ASN nella casella di ricerca: troverete i segmenti di indirizzi IP appartenenti all’autonomous systems corrispondente. E saprete anche quanti IP ne fanno parte.
Si parla di External BGP (eBGP) per riferirsi al protocollo usato su larga scala quindi sulla rete Internet nel suo complesso; Internal BGP (iBGP) per stabilire come i dati possono muoversi tra autonomous systems afferenti allo stesso soggetto o a soggetti strettamente correlati.
Diversi fattori possono influenzare il percorso che i dati seguono attraverso la rete Internet: il costo può essere uno di questi, dato che alcuni provider fanno pagare l’accesso ai loro sistemi. La natura mutevole di Internet è un altro.
Si pensi a un’impresa che decide di cambiare fornitore di connettività passando da un operatore a un altro: in questi casi le rotte BGP devono essere regolarmente aggiornate per evitare che i pacchetti dati “cadano nel vuoto” e non raggiungano la destinazione corretta.
Gli autonomous systems effettuano continuamente aggiornamenti BGP ma se qualcosa dovesse andare storto gli effetti potrebbero rivelarsi catastrofici. BGP è progettato in maniera tale che le tabelle di routing si diffondano rapidamente da sistema a sistema: un errore può scatenare un effetto a catena come quello che abbiamo visto nel caso del problema lamentato da Facebook il 4 ottobre 2021.
In passato è accaduto più volte che aggiornamenti BGP scorretti richiesti da qualche provider, anche di dimensioni non particolarmente importanti, abbia provocato gravi danni sul piano della raggiungibilità di siti, applicazioni e servizi su scala internazionale.
È capitato ad esempio che per un errore di configurazione un provider si sia auto-impostato come migliore soluzione per raggiungere destinazioni che non erano di sua competenza provocando gravi ritardi e addirittura l’irraggiungibilità di molteplici servizi.
C’è poi il problema della sicurezza di BGP: nel corso degli anni si sono anche verificati degli attacchi BGP hijacking: malintenzionati modificano le tabelle di routing per fare in modo che soggetti non autorizzati possano ricevere il traffico dati originariamente destinato ai server legittimi.
Cloudflare sottolinea che il metodo per mettere in sicurezza il protocollo BGP almeno dalla minaccia hijacking esiste da tempo e si basa sul meccanismo di certificazione RPKI (Resource Public Key Infrastructure). Il fatto è che molti provider non lo hanno ancora implementato, compresi tanti operatori di telecomunicazione italiani com’è facile verificare con questo test.
Nel caso dell’incidente di Facebook del 4 ottobre 2021, come spiegato dall’azienda in questa pagina tutto ha avuto origine da un intervento di manutenzione ordinaria: i tecnici hanno inviato un comando con l’intenzione di valutare la capacità della dorsale globale (backbone) di Facebook. Tale operazione ha però avuto come conseguenza l’interruzione di tutte le interconnessioni sulla rete di Facebook disconnettendo i data center dell’azienda su scala internazionale.
Dal momento che i server DNS di Facebook non riuscivano, loro stessi, a comunicare con i data center è stata disposta in automatico la rimozione delle rotte via BGP. Un’operazione che ha amplificato il problema: l’aggiornamento delle rotte è stato annunciato a livello globale e Facebook si è di fatto “auto-cancellata” dalla rete Internet.
I tecnici hanno poi lavorato per un progressivo ripristino: si è partiti dalla dorsale per poi riabilitare progressivamente i server per non causare problemi sugli impianti elettrici che alimentano le macchine.
Incidenti come questi evidenziano alcune debolezze di BGP: gli autonomous systems si fidano reciprocamente di quello che il protocollo stesso dichiara come migliore percorso per raggiungere una certa destinazione.
Fortunatamente incidenti come quelli descritti non si verificano spesso ma sono molti i tecnici a richiedere un aggiornamento di BGP affinché possa diventare più sicuro e affidabile. L’implementazione di radicali aggiornamenti a livello di protocollo sarebbe in ogni caso cosa molto impegnativa perché presupporrebbe un update contemporaneo di ciascun autonomous systems.