Nozioni di base su BGP: rotte, peer e percorsi
Progettato prima dell’alba dell’Internet commerciale, il Border Gateway Protocol (BGP) è un protocollo di routing basato su criteri che è stato a lungo parte integrante dell’infrastruttura Internet. La connettività Internet e il multi-homing nel 1996, e due decenni dopo i concetti chiave rimangono sostanzialmente gli stessi. Ci sono stati alcuni cambiamenti al limite (che tratteremo nei prossimi post), ma questi sono stati implementati come previsto dai progettisti, aggiungendo “attributi” alle specifiche e alle implementazioni BGP. In generale, il design originale di BGP è ancora valido oggi, compresi sia i suoi punti di forza (descrivendo e applicando la politica) sia i punti deboli (mancanza di autenticazione o verifica delle richieste di routing).
Perchè una comprensione del BGP è utile per comprendere la connettività e l’interconnettività Internet? Perché un’efficace configurazione BGP fa parte del controllo del proprio destino su Internet. E ciò può giovare alla tua organizzazione in diverse aree chiave:
Preservare e aumentare le entrate in termini economici.
Proteggi la disponibilità e il tempo di attività della tua infrastruttura e delle tue applicazioni.
Usa l’economia di Internet a tuo vantaggio.
Proteggiti dai rischi globali per la sicurezza che possono sorgere quando gli operatori di Internet non concordano su come affrontare i problemi di sicurezza.
La connettività BGP e Internet è un argomento importante, quindi c’è molto terreno da affrontare in questa serie. Il seguente elenco ti darà un’idea della gamma di argomenti che vedremo:
- La struttura e lo stato di Internet;
- Come si è evoluto BGP e che cosa potrebbe riservare il suo futuro;
- Rilevamento e prevenzione DDoS;
- Lungo la strada, argomenti aggiuntivi come MPLS e reti globali, protocolli e applicazioni di routing interni e altri argomenti che clienti, amici e lettori sono interessati a vedere trattati.
Per questo primo post tratteremo alcuni concetti di base relativi a BGP: sistemi autonomi, rotte, peering e AS_PATH.
Percorsi e sistemi autonomi
Per comprendere appieno BGP, dovremo prima familiarizzare con un paio di concetti sottostanti, a partire da ciò che significa effettivamente essere connessi a Internet. Affinché un host sia connesso, deve esserci un percorso o “route” su cui è possibile inviare un pacchetto che alla fine si concluderà su quell’host e che tale host deve disporre di un percorso su cui inviare un pacchetto a te. Ciò significa che il fornitore di connettività Internet per quell’host deve conoscere un percorso verso di te; devono avere un modo per vedere le rotte nella sezione dello spazio IP che si sta utilizzando. Per motivi di offuscamento forzato da parte degli autori di RFC, i percorsi sono anche chiamati Network Layer Reachability Information (NLRI). A dicembre 2015, ci sono oltre 580.000 route IPv4 e quasi 26.000 route IPv6.
Un altro concetto fondamentale è il sistema autonomo (AS), che è un riferimento ad una rete. Tale rete potrebbe essere tua o appartenere a qualsiasi altra azienda, fornitore di servizi . Ogni rete su Internet viene definita AS e ogni AS ha almeno un numero di sistema autonomo (ASN). Ci sono decine di migliaia di ASN in uso su Internet. Normalmente i seguenti elementi sono associati a ciascun AS:
Un’entità (un punto di contatto, in genere chiamato NOC o Network Operations Center) responsabile dell’AS.
Uno schema di routing interno in modo che ogni router in un determinato AS sappia come raggiungere ogni altro router e destinazione all’interno dello stesso AS. Questo sarebbe tipicamente realizzato con un protocollo gateway interno (IGP) come Open Shortest Path First (OSPF) o Intermediate System to Intermediate System (IS-IS).
Uno o più router di confine. Un router perimetrale è un router configurato per il peer con un router in un altro AS, il che significa che crea una sessione TCP sulla porta 179 e mantiene la connessione inviando un messaggio keep-alive ogni 60 secondi. Questa connessione peering viene utilizzata dai router di frontiera in un AS per “pubblicizzare” le rotte verso i router di confine in un AS diverso (approfondire di seguito).
Introduzione al BGP
Come spiegato sopra, le interconnessioni create per trasportare il traffico da e tra i sistemi autonomi comportano la creazione di “rotte” (percorsi da un host a un altro). Ogni percorso è costituito dall’ASN di ogni AS nel percorso verso un determinato AS di destinazione. BGP (più esplicitamente, BGPv4) è il protocollo di routing utilizzato dai router di frontiera per “pubblicizzare” queste rotte da e verso il proprio AS verso gli altri sistemi che ne hanno bisogno al fine di inviare traffico alla propria rete:
Reti peer, che sono gli AS con cui hai stabilito una connessione reciproca diretta;
Reti a monte o di transito, che sono i fornitori che ti collegano ad altre reti.
In particolare, i router di frontiera pubblicizzano le rotte verso le porzioni dello spazio degli indirizzi IPv4 e IPv6 di cui voi e i vostri clienti siete responsabili e che sappiate raggiungere, sulla o attraverso la vostra rete. I percorsi pubblicitari che “coprono” (includono) la tua rete sono ciò che consente ad altre reti di “ascoltare” un percorso verso gli host all’interno della tua rete. In altre parole, tutti gli indirizzi IP che è possibile raggiungere su Internet sono raggiungibili perché qualcuno, da qualche parte, ha pubblicizzato un percorso che lo copre. Se non esiste un percorso generalmente pubblicizzato per coprire un indirizzo IP, almeno alcuni host su Internet non saranno in grado di raggiungerlo.
La pubblicazione dei percorsi aiuta un operatore di rete a fare due cose molto importanti. Uno è prendere decisioni di routing semi-intelligenti relative al percorso migliore per un determinato percorso da portare in uscita dalla propria rete. Altrimenti dovresti semplicemente impostare un percorso predefinito dai tuoi router di confine ai tuoi fornitori, il che potrebbe far sì che parte del tuo traffico prenda un percorso esterno non ottimale verso la sua destinazione. In secondo luogo, e ancora più importante, è possibile annunciare le rotte verso tali fornitori, affinché possano annunciare a loro volta ad altri (transito) o semplicemente utilizzare internamente (nel caso di colleghi).
Oltre al loro ruolo essenziale nell’ottenere il traffico verso la destinazione, le rotte pubblicizzate vengono utilizzate per diversi altri scopi importanti:
Aiutare a tenere traccia dell’origine e del percorso del traffico di rete;
Abilitare l’applicazione delle politiche e le preferenze sul traffico;
Per evitare la creazione di loop, e quindi pacchetti, loop.
Oltre ad essere utilizzato per pubblicizzare le rotte, BGP è utilizzato anche per ascoltare le rotte da altre reti. La somma di tutti gli annunci di route di tutte le reti su Internet contribuisce alla “tabella di routing globale” che è il sistema di directory di pacchetti di Internet. Se disponi di uno o più provider di transito, di solito sarai in grado di ascoltare l’elenco completo delle rotte.
Un’ulteriore complicazione: la BGP si presenta in realtà in due versioni a seconda di cosa viene utilizzata:
BGP esterno (eBGP) è il modulo utilizzato quando i router che non si trovano nello stesso AS si pubblicizzano tra loro. Da qui in avanti puoi presumere che, se non diversamente indicato, stiamo parlando di eBGP.
BGP interno (iBGP) viene utilizzato tra router all’interno dello stesso AS.
L’attributo AS_PATH
mappa del tesoro
BGP supporta numerosi attributi, il più importante dei quali è AS_PATH. Ogni volta che una route viene pubblicizzata da un router BGP a un altro durante una sessione di peering, il router ricevente antepone l’ASN remoto a questo attributo. Ad esempio, quando Verizon sente una rotta da NTT America, Verizon “timbra” la rotta in arrivo con l’ASN di NTT, costruendo così la rotta in AS_PATH. (Si noti che quando un percorso viene pubblicizzato tra router nello stesso AS, usando iBGP, l’ASN per entrambi i router è lo stesso e quindi AS_PATH rimane invariato.)
Quando sono disponibili più percorsi, i router remoti generalmente decideranno quale è il percorso migliore selezionando il percorso con il AS_PATH più breve, ovvero il percorso che attraverserà il minor numero di AS per ottenere il traffico verso un determinato AS di destinazione. Questo potrebbe essere o meno il percorso più veloce, tuttavia, perché non ci sono informazioni sulla rete rappresentata da un determinato AS: nulla sulla larghezza di banda di quella rete, il numero di router interni e il numero di hop o quanto sia congestionato. Dal punto di vista di BGP, ogni AS è praticamente lo stesso.
Ulteriori usi per AS_PATH includono:
Rilevamento loop: quando un router perimetrale riceve un aggiornamento BGP (annuncio di percorso) dai suoi peer, scansiona l’attributo AS_PATH per il proprio ASN; se trovato, il router ignorerà l’aggiornamento e non lo pubblicizzerà ulteriormente ai vicini iBGP. Questa precauzione impedisce la creazione di loop di routing.
Impostazione della politica: BGP è progettato per consentire ai provider di esprimere decisioni “politiche” come la preferenza di Verizon su NTTA per arrivare a Comcast.
Visibilità : AS_PATH fornisce un modo per capire dove sta andando il tuo traffico e come ci arriva.