Approfondimento tecnico

BGP in pratica: sessioni, attributi e dirottamenti

BGP-4 (RFC 4271) è un protocollo a vettore di percorso che lavora su TCP porta 179. A differenza dei protocolli interni, non cerca il cammino più breve: applica politiche, cioè decisioni commerciali e tecniche di chi gestisce la rete.

Sessioni e tipi di relazione

Una sessione BGP si instaura fra due router configurati esplicitamente l'uno per l'altro: non c'è scoperta automatica dei vicini. Si distinguono eBGP, fra router di sistemi autonomi diversi, e iBGP, fra router dello stesso AS per propagare internamente le rotte apprese all'esterno.

Le relazioni commerciali fra reti sono di tre tipi, e determinano che cosa ciascuna annuncia all'altra:

  • Transito: si paga un operatore perché porti il proprio traffico verso tutta Internet
  • Peering: due reti si scambiano gratuitamente il traffico dei rispettivi clienti, di norma in un punto di interscambio come il MIX di Milano
  • Cliente: si vende transito a una rete più piccola, e le sue rotte vengono annunciate a tutti

La regola pratica che ne deriva: si annunciano ai peer solo le proprie rotte e quelle dei clienti, mai quelle apprese da altri peer o dal transito — altrimenti si finirebbe a trasportare gratuitamente traffico altrui.

Come viene scelto il percorso

Ricevuti più annunci per lo stesso prefisso, il router li confronta in un ordine rigido. I primi criteri decidono quasi sempre:

  • Weight — preferenza locale del singolo router (implementazione Cisco, non propagata)
  • Local preference — preferenza valida in tutto l'AS: è la leva con cui si sceglie l'uscita preferita
  • Rotte originate localmente
  • AS_PATH più corto — meno sistemi autonomi da attraversare
  • Origine, poi MED, poi eBGP preferito a iBGP
  • A parità, il costo interno verso il router di uscita e infine l'identificativo più basso

Da notare: nessuno di questi criteri misura la latenza reale. Il percorso "migliore" per BGP è quello che soddisfa le politiche, non quello più veloce — ed è il motivo per cui un sito può risultare lento da un operatore e rapido da un altro.

Attributi principali

  • AS_PATH — la sequenza di AS attraversati; serve anche a evitare i cicli, perché un AS scarta gli annunci in cui compare già
  • NEXT_HOP — l'indirizzo a cui inoltrare i pacchetti per quel prefisso
  • LOCAL_PREF — propagato solo in iBGP, governa l'uscita preferita dall'AS
  • MED — suggerisce al vicino quale dei propri collegamenti usare per entrare
  • COMMUNITY — etichette convenzionali con cui si chiede al peer un trattamento specifico, per esempio non riannunciare un prefisso

Una tecnica ricorrente è il prepending: ripetere il proprio AS nell'AS_PATH per allungarlo artificialmente e rendere un percorso meno appetibile, spostando così il traffico in entrata su un'altra linea.

Dirottamenti e difese

Un dirottamento di prefisso avviene quando un AS annuncia indirizzi che non gli appartengono. Poiché la scelta privilegia il prefisso più specifico, un annuncio di un /24 attira il traffico destinato al /16 legittimo che lo contiene. Il più delle volte è un errore di configurazione; a volte è deliberato, per intercettare traffico o inviare posta indesiderata da indirizzi altrui.

Le contromisure in uso:

  • RPKI con ROV — il titolare firma crittograficamente l'autorizzazione ad annunciare un prefisso da un certo AS (ROA), e i router scartano gli annunci non validi. È la difesa più efficace disponibile oggi ed è in adozione crescente
  • Filtri sui prefissi costruiti dai database IRR, dove gli operatori registrano cosa possono annunciare
  • Limiti sul numero di prefissi per sessione, che fermano gli incidenti da fuga di rotte prima che si propaghino
  • MANRS — insieme di buone pratiche condivise fra operatori

RPKI protegge dall'annuncio dell'origine sbagliata, non dalla falsificazione dell'intero percorso: per quella servirebbe BGPsec, la cui adozione è oggi marginale.

Osservare il BGP dall'esterno

L'AS che gestisce un indirizzo è pubblico e verificabile — è il dato che questo sito mostra insieme alla geolocalizzazione, disponibile anche via API nel campo asNumber. Per approfondire:

  • whois -h whois.radb.net AS3269 — dati registrati per un sistema autonomo
  • I looking glass pubblici degli operatori mostrano la tabella BGP vista dai loro router
  • RIPE RIS e RouteViews conservano lo storico degli annunci: si può ricostruire cosa è successo durante un disservizio
  • traceroute mostra i router attraversati, ma non gli AS: per quelli servono strumenti che risolvano ogni salto sul suo sistema autonomo

Vuoi vedere il tuo indirizzo IP in questo momento?

Mostra il mio IP