# Piattaforme e Software per la rete - lezione 15 #### Giacomo Verticale ###### 24 May 2016 ## BGP - Border Gateway Protocol I due protocolli piú complessi di internet che tengono in piedi la rete sono TCP e BGP. Permette di esprimere delle esigenze di collegamento degli operatori di tipo economico e non solo di ottimalitá del percorso. ### Scopo > Comunicare informazioni sulle reti Per IPv4 rete=a.b.c.d/n Da quando non esiste piú l'indirizzamento a classi, si usa il termine rete per indicare un blocco di indirizzi, a prescindere che questo corrisponda ad una rete fisica o meno. agisce - tra Sistemi autonomi (AS) - __eBGP__ (BGP esterno) - entro un sistema autonomo - __iBGP__ (BGP interno) ### Architettura di internet Un insieme di reti forma un __sistema autonomo__ é un insieme di reti gestiti dalla stessa entitá organizzativa o piú specificatamente, un insieme di reti in cui il routing viene effettuato in modo uniforme. Protocolli di routing interni: - RIP - OSPF Distribuiscono all'interno della rete le informazioni sulla raggiungibilitá. Un approccio di questo tipo non scala per reti molto grandi perché: - Diverse reti magari concorrenti non vogliono diffondere informaizoni sulla topologia interna I sistemi autonomi comunicano tra di loro tramite il protocollo eBGP. Le informazioni vengono propagate da un sistema autonomo verso i propri vicini e cosí via. Un informazione BGP comprende tutti i sistemi autonomi da attraversare per raggiungere una destinazione, non vengono fornite informazioni sul routing all'interno del sistema autonomo. Le Informazioni BGP vengono comunicate all´ interno dell'autonomous system tramite iBGP. __Come fa a funzionare BGP se esso stesso serve al routing__ - eBGP funziona solo tra nodi next-hop collegati a livello 2, quindi non servono particolari informazioni di routing. - iBGP lavora all'interno del sistema autonomo dove sono giá presenti informazioni di routing, fornite ad esempio da OSPF. __Fasi del routing completo__ - Protocolli interni (OSPF,RIP) effettuano il routing interno - iBGP si instaura sul sistema autonomo - eBGP propaga le informazioni tra sistemi autonomi. BGP usa TCP, e ne ricava una indicazione di affidabilitá del percorso: Se la connessione TCP non é in piedi, il percorso non é disponibile. BGP usa un approccio DV_like (distance vector) chiamato __path vector__ perché sarebbe complicato distribuire informazioni su miliardi di nodi e alcuni agenti non vogliono distribuire informazioni sulla topologia di rete. A differenza del distance vector vengono inviate informazioni sulla lista di sistemi autonomi da attraversare per raggiungere la destinazione. ### Esempio di comunicazione BGP Destinazione | S.A. da attraversare ---|--- N1 | {R1,ASx,ASy,..} N2 | router di entrata nell'AS costo rotta = n' AS attraversati Il costo di attraversameto di un sistema autonomo é cosí alto che si contano solo i sistemi autonomi attraversati. Per scoraggiare un percorso, il sistema autonomo puó inserire se stesso piú volte nella lista, in modo che il percorso risulti piú lungo (usato per rotte di backup magari tariffate a consumo) ### Messaggi BGP Esistono messaggi chiave e messaggi opzionali che possono essere implementati o meno - OPEN - __apre sessione__: viene dichiarato il numero del sistema autonomo, e se i numeri dei due interlocutori sono uguali si usa BGP interno, altrimenti esterno - UPDATE - __propaga o ritira informazioni su un prefisso__: viene usato per distribuire informazioni sulle rotte. - KEEPALIVE - __verifica raggiungibilitá dell'host__: TCP non é in grado di capire se l'host remoto é ancora vivo, questa cosa viene lasciata al protocollo applicativo. - NOTIFICATION - __chiude la sessione__: Notifica che l'entitá sta andando in *mainteinance* - ROUTE REFRESH... Nel momento in cui un BGP speaker (router che usa BGP) riceve un update, deve ridistribuirlo ai suoi vicini, e questo avviene in modo differente tra eBGP e iBGP. Una funzionalitá importante di BGP sono le politiche di __filtering__ che permettono di distribuire in modo selettivo o non distribuire alcune informazioni. __Regole__: - regola 0: Quando si redistribuisce con eBGP si aggiunge in testa al percorso il proprio _numero di AS_. - regola 1: 1. Si redistribuiscono via iBGP i percorsi ottenuti tramite eBGP 2. Si redistribuiscono via eBGP i percorsi ottenuti tramite iBGP - regola 2: Non si redistribuiscono via iBGP i percorsi ottenuti tramite iBGP (evita che un router riceva un informazione piú volte). Questo implica che tutti i router di un A.S siano connessi a maglia completa, altrimenti il pacchetto non raggiungerebbe tutti i router. ### Path attributes Vengono propagati insieme all'annuncio __Struttura annuncio__ Prefisso | contenuto ---|--- PATH | lista di AS + router di entrata ATTRIBUTI | ... __Path attributes__ - ORIGIN: - IGP: inserito da un IGP (Gateway = vecchio nome dei router) - EGP: inserito da EGP (non usato piú da anni) - incompleto: inserito a mano - AS-PATH - NEXT-HOP - MULTI-EXIT DISCRIMINATOR (solo in eBGP): esprime la preferenza di inviare pacchetti nella strada con MED piú basso. - LOCAL PREF (solo in iBGP): é l'analogo del MED internamente al S.A. permette di usare il link tra A.S che si preferisce (LOCAL PREF piú alta). I pacchetti seguono il percorso inverso dell'annuncio, perché questo consiste nella disponibilitá a ricevere pacchetti entranti. ### BGP speaker - Adjacent RIB-IN: Memorizza i dati in una tabella diversa per interlocutore, (memorizza tutte le informazioni ricevute, non é la tabella di routing, ad esempio puó contenere doppioni). - Import: esegue filtraggi specificati dall'amministratore - Route selection. - Tabella di routing. - Export (filtrano le informazioni da propagare) - RIB-OUT Filtri di export usati ad esempio per accordi di *peering* che sono gratuiti e permettono a due ISP di scambiarsi i pacchetti diretti per l'altro ma non quelli diretti a terzi.