Protocollo BGP (Border Gateway Protocol)

(If you want to read this article in english you can check this link)

Filippo Favaron
9 min readApr 27, 2022

In questo articolo viene descritto il funzionamento del protocollo BGP (Border Gateway Protocol) il quale permette a due router appartenenti a diversi autonomous systems di comunicare tra loro.

Utilizzo del BGP

Come già detto il BGP è un protocollo di routing, il quale consente la comunicazione tra due router appartenenti a due diversi autonomous systems.

Esempio di sistema autonomo può essere quello che contraddistingue gli utenti di un unico provider (Vodafone, TIM, Fastweb, ecc.) oppure, più in piccolo, quello che costituisce la rete interna di un’azienda.

Definizione di A.S

Per autonomous system (o sistema autonomo) si intende un gruppo di router e reti sotto il controllo di una singola e ben definita autorità amministrativa.

All’interno di un sistema autonomo i singoli router comunicano tra loro, per scambiarsi informazioni relative alla creazione delle tabelle di routing, attraverso uno specifico protocollo IGP (Interior Gateway Protocol).

I principali protocolli di routing IGP per IPv4 sono RIP, OSPF, IS-IS e EIGRP.

Lo scambio di informazioni tra router appartenenti a sistemi autonomi differenti avviene attraverso un protocollo EGP e punti di interscambio fisici tra i diversi sistemi (NAP o IXP).

Internet Exchange Point (IXP)

La comunicazione tra due AS può avvenire in due modi:

  • Attraverso un collegamento diretto tra le due parti interessate (private peering).
  • Attraverso un’infrastruttura fisica chiamata Internet Exchange Point (IXP).

L’IXP di fatto è un’infrastruttura di rete utilizzata dai principali provider per lo scambio di dati.

Internet Exchange Point

Gli IXP hanno come scopo principale quello di facilitare lo scambio di informazioni nella rete fornendo un punto di interscambio che collega in modo diretto più AS (generalmente i principali ISP) senza far passare i dati attraverso ulteriori provider.

L’utilizzo degli IXP comporta numerosi vantaggi tra cui una riduzione del traffico internet, quindi un guadagno netto in velocità ed efficienza.

Inoltre considerando che generalmente gli accordi di peering (public peering) tra gli AS connessi ad un IXP sono gratuiti ed essendo i percorsi più brevi i costi sono notevolmente ridotti.

L’architettura generica di un IXP è costituita da uno o più switch ai quali vengono collegati i router degli AS partecipanti.

La tipologia di switch più utilizzata fin dal 1993–94 è l’ethernet per una quasi totalità del mercato (circa il 95%).

Dopo aver configurato adeguatamente ogni router gli ISP collegati potranno scambiarsi il traffico Internet.

Architettura generica IXP

Principali Internet Exchange Points in Italia:

Ad oggi il MIX (Milan Internet eXchange) è il principale IXP pubblico italiano.

Architettura Spine and Leaf

Nonostante gli IXP generalmente seguano un modello di architettura simile, le topologie possono variare.

Prendiamo in esame per esempio il modello Spine and Leaf (architettura adottata da NAMEX).

Nell’architettura Spine and Leaf troviamo 2 “livelli” di switch: Spine e Leaf.

  • Gli Spine Switch interconnettono tutti i Leaf Switch tra di loro creando così una topologia full-mesh (topologia in cui ogni nodo è collegato direttamente ad ogni altro nodo).
  • I Leaf Switch invece fungono da switch di accesso che hanno il compito di collegare i dispositivi finali (che possono essere per esempio dei server) agli Spine Switch.

Questa architettura è stata sviluppata per superare i limiti riscontrati con la Three-Tier Architecture.

Oltre a risolvere i problemi del modello precedente Spine and Leaf offre numerosi vantaggi tra cui:

  • Bassa latenza.
  • Elevata larghezza di banda.
  • Costi ridotti.
  • Ridondanza maggiore.
  • Migliore scalabilità`.
  • Basso consumo energetico.

Ciò nonostante esso non è esente da alcune problematiche:

  • Considerando che ogni Spine Switch deve essere collegato a tutti gli Leaf Switch sarà necessaria un grande quantità di cavi.
  • Essendo il numero di porte degli Spine Switch direttamente proporzionale ad il numero di host supportati si può avere una limitazione in termini di dispositivi collegati.
3 Tier Architecture e Spine and Leaf a confronto

Protocolli EGP

A differenza dei protocolli IGP che permettono di comunicare all’interno di un AS, l’EGP permette la comunicazione tra dispositivi appartenenti ad AS differenti.

Questo protocollo non è più in uso oggi, tuttavia nel tempo il suo nome è stato generalizzato al termine generale per la classe di protocolli di routing descritti sopra.

EGP è simile ad un algoritmo distance vector, ma invece del concetto di costo specifica solo se la destinazione è raggiungibile oppure no. Questo ne impedisce il funzionamento su topologie di rete a maglia.

I limiti di EGP sono molti e gravi: EGP non ha una metrica associata alle linee e quindi basa le sue decisioni esclusivamente sulla raggiungibilità.

Il successore dell’EGP originale è il Border Gateway Protocol (BGP), che è ancora in uso oggi.

Funzionamento del BGP nel dettaglio

Il BGP funziona attraverso la gestione di una tabella di reti IP, o prefissi, che forniscono informazioni sulla raggiungibilità delle diverse reti tra più AS.

A differenza del suo predecessore il BGP è in grado di eseguire l’ottimizzazione dei percorsi sulla base dei dati EGP già esistenti e quindi ridurre al minimo le perdite di tempo quando si stabiliscono nuovi percorsi.

Il collegamento che permette la comunicazione e lo scambio di informazioni tra due router appartenenti a diversi AS viene chiamato peering.

Per stabilire un collegamento di peering è necessario che entrambi i router coinvolti siano configurati adeguatamente.

Ogni peering deve essere configurato in modo statico dal sistemista, i router collegati comunicano tra di loro per ricevere nuove informazioni come nei protocolli IGP.

Per costruire la propria BGP table, ogni router riceve i percorsi memorizzati nelle tabelle dei router collegati attraverso un peering e da ulteriori router di frontiera presenti nell’AS.

L’algoritmo del BGP esegue diversi controlli che permettono di:

  • Trovare il miglior percorso per uno specifico AS tra quelli nella memoria del router.
  • Analizzare se una route è valida o meno.

Infine il router condivide la sua BGP table aggiornata con i suoi vicini.

Esempio applicativo con Cisco Packet Tracer

Qui di seguito viene spiegato come creare una semplice configurazione BGP su Cisco Packet Tracer.

Per una spiegazione completa e più dettagliata potete consultare questo video.

Configurazione su Packet Tracer.

Qui di seguito viene illustrata la configurazione da utilizzare per ogni router di frontiera negli AS.

N.B: i pezzi di codice evidenziati fanno riferimento ad IP di reti o prefissi, che variano a seconda della configurazione della rete.

  • Attiva il protocollo BGP, crea e immetti un’istanza BGP con il numero di autonomous system specificato utilizzando il comando router bgp.
router bgp AS_NUMBER
  • Utilizza il comando neighbor … remote as … per aggiungere una voce alla tabella BGP
neighbor NEIGHBOR_IP remote-as NEIGHBOR_AS_NUMBER
  • Per specificare le reti che devono essere annunciate dal Border Gateway Protocol e dai processi di routing BGP multiprotocollo, utilizzare il comando network.
network NETWORK_ADDRESS mask NETWORK_SUBNETS

Per terminare la configurazione utilizzare il comando end.

end

Sviluppi futuri

Nonostante il protocollo BGP sia stato creato per risolvere le problematiche del suo predecessore EGP, non significa che esso non sia soggetto ad ulteriori problemi.

Per molto tempo infatti ci siamo affidati al “Transport Layer Security” (che permette la crittografia a livello di presentazione del modello ISO/OSI) e alle “Domain Name System Security Extensions” (La Internet Engineering Task Force (IETF) ha sviluppato un set di specifiche di estensione per la protezione dei dati trasferiti nei sistemi DNS su reti IP).

Tuttavia ciò non basta a garantire una completa sicurezza, in quanto negli ultimi anni si è presentato un nuovo problema: il BGP Hijacking.

Il dirottamento avviene quando gli aggressori reindirizzano intenzionalmente il traffico internet.

Gli aggressori ottengono ciò annunciando falsamente la proprietà di gruppi di indirizzi IP noti come prefissi IP che non possiedono, controllano o verso cui non instradano.

Questo problema si verifica perché BGP non può verificare se le reti interconnesse sono veramente proprietari di questi indirizzi IP, il dirottamento di BGP di fatti sembra quasi impossibile da fermare.

Ma il dirottamento di BGP necessita che gli aggressori controllino o violino un router abilitato a BGP che connette due AS, ergo non è un’operazione che chiunque può fare.

Tuttavia, se il dirottamento avviene con successo, si verificherà un’interruzione di Internet a causa di un indirizzo IP irraggiungibile.

BGP ha incluso miglioramenti della sicurezza nel corso degli anni. L’aggiunta di sicurezza più importante è la Resource Public Key Infrastructure (RPKI), un framework di sicurezza del routing che, nonostante la sua utilità, deve ancora essere implementato su larga scala.

RPKI fornisce fondamentalmente la convalida dell’origine, quindi il router controlla se gli AS hanno l’autorizzazione RPKI.

Sfortunatamente ciò non è abbastanza, un AS può ancora inviare un percorso sbagliato verso un AS a cui non è connesso.

Il dirottamento di BGP può dirottare, monitorare o intercettare il traffico internet:

  • Essere “black holed”, cioè il traffico viene inviato a un “buco nero nella rete”, di conseguenza perso.
  • Essere indirizzati a siti Web falsi come parte di un “on-path attack”.

Nella migliore delle ipotesi, gli utenti potrebbero riscontrare una maggiore latenza o non essere in grado di navigare nel Web a causa della perdita di pacchetti; nella peggiore delle ipotesi, un utente malintenzionato può lanciare un attacco di routing o reindirizzare gli utenti a siti Web fasulli per ottenere le loro identità.

Gli utenti e le reti possono fare ben poco per proteggersi dal dirottamento di BGP:

Oltre all’ispezione regolare di come viene inoltrato il traffico Internet, altre soluzioni possibili includono i controlli di rete per l’hijacking e il blocco/filtraggio dei prefissi IP.

L’unica opzione valida sarebbe migliorare la sicurezza dell’attuale protocollo BGP implementando soluzioni di routing più sicure come BGPsec.

BGPsec

Ogni volta che un router BGP inserisce un prefisso, aggiunge all’AS PATH solo il numero dell’AS locale. Quando un router invia un aggiornamento BGP a un vicino in un altro AS, inserisce il numero dell’AS locale nell’AS PATH. Ciò permette ai router di valutare se un aggiornamento è già stato notato dall’AS locale e, in tal caso, rifiutarlo per evitare eventuali loop.

Più prefissi possono condividere lo stesso AS PATH e altre informazioni di un percorso in un aggiornamento BGP. Ogni volta che è necessario distribuire un aggiornamento ai membri di un peer, il router crea l’aggiornamento una sola volta e lo inoltra a tutti i membri del gruppo.

Il BGPsec Path viene creato allo stesso modo dell’AS PATH, con la differenza che il router aggiunge il numero dell’AS a cui viene consegnato l’aggiornamento al BGPsec-path, le informazioni che ha aggiunto al percorso dell’AS vengono quindi crittografate.

Per garantire l’integrità di queste crittografie, i router non possono combinare più prefissi insieme in un unico aggiornamento e ogni vicino riceverà un aggiornamento separato poiché il suo AS number è incluso nell’aggiornamento.

Anche se questo sistema sembra ottimale, l’implementazione di BGPsec non è così facile, infatti a causa della grande quantità di risorse utilizzate dal protocollo, l’elaborazione degli aggiornamenti richiederà molta CPU e memoria. Poiché la crittografia e le informazioni di percorso sono incluse, gli aggiornamenti BGP saranno più grandi. Saranno anche più frequenti dato che ogni aggiornamento può avere un solo prefisso.

Anche se ha un costo più elevato in termini di prestazioni e complessità, BGPsec renderebbe Internet indubbiamente più sicuro.

Fonti

[1] BGP Configuration Example on Packet Tracer: https://ipcisco.com/lesson/bgp-configuration-example-on-packet-tracer

[2] IXP: https://www.mix-it.net/2022/03/25/come-le-grandi-aziende-possono-accelerare-la-digital-transformation-grazie-al-peering-negli-ixp/

[3] Private and Public Peering: https://www.internetsociety.org/resources/doc/2020/explainer-what-is-internet-peering/#:~:text=There%20are%20two%20main%20types,traffic%20at%20a%20private%20facility.

[4] Architettura IXP: https://it.frwiki.wiki/wiki/Internet_Exchange_Point

[5] Spine and Leaf: https://study-ccna.com/spine-and-leaf-architecture/#:~:text=Spine%20and%20Leaf%20Architecture%20is,than%20north%2Dsouth%20traffic%20flow

[6] https://blog.namex.it/2021/04/switching-to-ip-fabrics/

[7] Video sintesi funzionamento protocollo BGP: https://www.youtube.com/watch?v=0QGTw4h1SeU

[8] https://didattica-2000.archived.uniroma2.it/rat/deposito/backbone-ip-telecom.pdf

[9] Sicurezza BGP: https://blog.cloudflare.com/is-bgp-safe-yet-rpki-routing-security-initiative/

[10] BGP Hijacking: https://www.cloudflare.com/learning/security/glossary/bgp-hijacking/#:~:text=BGP%20hijacking%20is%20a%20malicious%20rerouting%20of%20Internet,of%20BGP%2C%20the%20routing%20protocol%20of%20the%20Internet

[11] TLS: https://www.youtube.com/watch?v=0TLDTodL7Lc

[12] DNSSEC: https://www.cloudflare.com/it-it/dns/dnssec/how-dnssec-works/

[13] BGPsec: https://www.ietf.org/proceedings/interim-2014-sidr-01/slides/slides-interim-2014-sidr-1-0.pdf

[14] https://www.anapaya.net/blog/why-rpki-wont-save-bgp

[15] Michele Stecca (follow him)

--

--