Border Gateway Protocol (BGP) è il protocollo di routing per l'Internet. Proprio come un ufficio postale gestisce la posta, il BGP sceglie i percorsi più efficienti per la consegna del traffico Internet.
Dopo aver letto questo articolo sarai in grado di:
Argomenti correlati
Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.
Copia link dell'articolo
Il Border Gateway Protocol (BGP) è l'ufficio postale di Internet. Quando qualcuno lascia una lettera in una cassetta della posta, il servizio postale elabora quel pezzo di posta e sceglie un percorso rapido ed efficiente per consegnare quella lettera al destinatario. Allo stesso modo, quando qualcuno invia dati tramite Internet, il BGP è responsabile dell'esame di tutti i percorsi disponibili che i dati potrebbero utilizzare e della scelta del percorso migliore, il che di solito significa saltare da un sistema autonomo all'altro.
Il BGP è il protocollo che fa funzionare Internet tramite il routing dei dati. Se un utente a Singapore carica un sito Web con server di origine in Argentina, il BGP è il protocollo che consente una comunicazione rapida ed efficiente.
Internet è una rete di reti. È suddiviso in centinaia di migliaia di reti più piccole note come sistemi autonomi (AS, autonomous system). Ognuna di queste reti è essenzialmente un grande pool di router gestiti da un'unica organizzazione.
Se continuiamo a pensare al BGP come al servizio postale di Internet, i sistemi autonomi possono essere considerati come le singole filiali degli uffici postali. Una città può avere centinaia di uffici postali, ma la posta in quegli uffici deve passare attraverso la filiale locale prima di essere indirizzata a un'altra destinazione. I router interni all'interno di un sistema autonomo sono come gli uffici postali. Inoltrano le loro trasmissioni in uscita al sistema autonomo, che quindi utilizza il routing BGP per portare queste trasmissioni alle loro destinazioni.
Il diagramma precedente illustra una versione semplificata del BGP. In questa versione sono presenti solo sei sistemi autonomi su Internet. Se il sistema autonomo AS1 deve indirizzare un pacchetto al sistema autonomo AS3, ha due diverse opzioni:
Hop a AS2 e poi a AS3:
AS2 → AS3
Oppure hop a AS6, quindi a AS5, AS4 e infine a AS3:
AS6 → AS5 → AS4 → AS3
In questo modello semplificato, la decisione sembra semplice. Il percorso AS2 richiede meno hop rispetto al percorso AS6 e quindi è il percorso più rapido ed efficiente. Ora immagina che ci siano centinaia di migliaia di sistemi autonomi e che il conteggio degli hop sia solo una parte di un complesso algoritmo di selezione del percorso. Questa è la realtà del routing BGP su Internet.
La struttura di Internet è in continua evoluzione, con la comparsa di nuovi sistemi e l'indisponibilità dei sistemi esistenti. Per questo motivo, ogni sistema autonomo deve essere aggiornato con le informazioni relative a nuovi percorsi e percorsi obsoleti. Questo viene fatto attraverso sessioni di peering in cui ogni AS si connette agli AS vicini con una connessione TCP/IP per condividere le informazioni sul percorso. Utilizzando queste informazioni, ogni AS è attrezzato per instradare correttamente le trasmissioni di dati in uscita provenienti dall'interno.
Qui è dove parte della nostra analogia cade a pezzi. A differenza delle filiali degli uffici postali, i sistemi autonomi non fanno tutti parte della stessa organizzazione. In effetti, spesso appartengono ad aziende concorrenti. Per questo motivo, i percorsi di BGP a volte tengono conto di considerazioni commerciali. Gli AS spesso si addebitano l'un l'altro per trasportare il traffico attraverso le loro reti e il prezzo dell'accesso può essere preso in considerazione in base al percorso selezionato.
Gli AS in genere appartengono a provider di servizi Internet (ISP) o altre grandi organizzazioni, come aziende tecnologiche, università, agenzie governative e istituzioni scientifiche. Ogni AS che desidera scambiare informazioni di routing deve acvere un numero di sistema autonomo registrato (ASN). Internet Assigned Numbers Authority (IANA) assegna gli ASN ai registri Internet regionali (RIR, Regional Internet Registry), che poi li assegna agli ISP e alle reti. Gli ASN sono numeri a 16 bit compresi tra 1 e 65534 e numeri a 32 bit compresi tra 131072 e 4294967294. A partire dal 2018, ci sono circa 64.000 ASN in uso in tutto il mondo. Questi ASN sono necessari solo per il BGP esterno.
I percorsi vengono scambiati e il traffico viene trasmesso su Internet utilizzando BGP esterno (eBGP). I sistemi autonomi possono anche utilizzare una versione interna di BGP per instradare attraverso le loro reti interne, nota come BGP interno (iBGP). Va notato che l'utilizzo di BGP interno NON è un requisito per l'utilizzo di BGP esterno. I sistemi autonomi possono scegliere tra una serie di protocolli interni per connettere i router sulla loro rete interna.
Il BGP esterno è come la spedizione internazionale. Ci sono alcuni standard e linee guida che devono essere seguiti quando si spedisce qualcosa a livello internazionale. Una volta che quel pacco raggiunge il suo paese di destinazione, deve passare attraverso il servizio di posta locale del paese di destinazione per raggiungere la sua destinazione finale. Ogni paese ha il proprio servizio di posta interna che non segue necessariamente le stesse linee guida di quelle di altri paesi. Allo stesso modo, ogni sistema autonomo può avere il proprio protocollo di routing interno per il routing dei dati nella propria rete.
Overall, BGP tries to find the most efficient path for network traffic. But as noted above, hop count is not the only factor BGP routers use for finding those paths. BGP assigns attributes to each path, and these attributes help routers select a path when there are multiple options. Many routers allow administrators to customize attributes for more granular control over how traffic flows on their networks. Some examples of BGP attributes are:
There are several other BGP attributes as well. All these attributes are ordered by priority for BGP routers — so that, for example, a BGP router first checks to see which route has the highest weight, then checks local preference, then checks to see if the router originated the route, and so on. (So, if all routes received have an equal weight, the router selects a path based on local preference instead.)
Nel 2004, un ISP turco chiamato TTNet ha accidentalmente pubblicizzato percorsi BGP errati ai suoi vicini. Questi percorsi sostenevano che TTNet stesso fosse la migliore destinazione per tutto il traffico su Internet. Man mano che questi percorsi si diffondevano sempre di più verso altri sistemi autonomi, si verificava un'enorme interruzione, creando una crisi di un giorno in cui molte persone in tutto il mondo non sono state in grado di accedere a parte o a tutta Internet.
Allo stesso modo, nel 2008, un ISP pakistano ha tentato di utilizzare un percorso BGP per impedire agli utenti pakistani di visitare YouTube. L'ISP ha quindi pubblicizzato accidentalmente questi percorsi con i suoi AS vicini e il percorso si è diffuso rapidamente attraverso la rete BGP di Internet. Questo percorso ha portato gli utenti a tentare di accedere a YouTube in un vicolo cieco, che ha reso YouTube inaccessibile per diverse ore.
Another incident along these lines occurred in June 2019, when a small company in Pennsylvania became the preferred path for routes through Verizon's network, causing much of the Internet to become unavailable to users for several hours.
Questi sono esempi di una pratica chiamata dirottamento BGP, che non sempre avviene accidentalmente. Nell'aprile 2018, gli aggressori hanno deliberatamente creato percorsi BGP errati per reindirizzare il traffico a cui era destinato al servizio DNS di Amazon. Gli aggressori sono stati in grado di rubare criptovaluta per un valore di oltre $ 100.000 reindirizzando il traffico a se stessi.
BGP hijacking can be used for several kinds of attacks:
Incidenti come questi possono verificarsi perché la funzione di condivisione del percorso di BGP si basa sulla fiducia e i sistemi autonomi si fidano implicitamente dei percorsi condivisi con loro. Quando i peer annunciano informazioni di percorso errate (intenzionalmente o meno), il traffico va dove non dovrebbe, potenzialmente con risultati dannosi.
Fortunatamente, sono stati compiuti alcuni progressi nella protezione del BGP. In particolare, nel 2008 è stato introdotto un framework di sicurezza per il routing chiamato Resource Public Key Infrastructure (RPKI). RPKI utilizza record firmati crittograficamente chiamati Route Origin Authorization (ROA) per convalidare quale operatore di rete è autorizzato ad annunciare gli indirizzi IP di un'organizzazione utilizzando il BGP. Ciò garantisce che solo le parti autorizzate annuncino i prefissi di un'organizzazione.
But RPKI’s existence alone is not enough. If large networks do not follow BGP security best practices, they can spread large-scale hijacking attacks. Currently, over 50% of the top Internet providers support RPKI to some extent, but a larger majority is needed to fully secure BGP. Network operators can protect their networks by implementing RPKI and using network alerting technology like Cloudflare Route Leak Detection. This feature helps prevent BGP hijacking attacks by letting customers know when unauthorized parties are advertising their prefixes.