BGP (Border Gateway Protocol o protocollo per gateway di confine) è un protocollo di routing per il routing tra sistemi autonomi, tra gateway esterni.
Il routing tra sistemi autonomi non deve solo instradare i pacchetti nel modo più efficiente possibile (come fanno i protocolli tra gateway interni) ma deve affrontare situazioni politiche, di sicurezza ed economiche.
In ogni router vengono configurati dall’amministratore dei vincoli sui percorsi possibili; il router esamina i percorsi per una data destinazione, assegna loro un punteggio (che rappresenta la “distanza”) e sceglie il percorso con la distanza più breve; il metodo di assegnazione del punteggio non è definito dal protocollo BGP ma viene scelto dall’amministratore; qualsiasi percorso che non soddisfi uno dei vincoli assume automaticamente un punteggio infinito.
Dato che BGP si occupa del traffico in transito tra sistemi autonomi le reti sono suddivise in tre categorie: reti con una sola connessione (reti stub) che non possono essere usate, reti con molte connessioni che potrebbero essere usate a meno che rifiutino, e reti di transito come le backbone disponibili a trasportare pacchetti di altri.
BGP è un protocollo di tipo distance vector modificato in modo da risolvere il problema del conteggio all’infinito: ogni router non registra solo il costo per ogni destinazione, ma l’intero percorso e scambia queste informazioni con i vicini; quindi un router che non può più raggiungere una destinazione si accorge dei percorsi suggeriti dagli altri router che passano attraverso di lui e li elimina dalla tabella di instradamento.
Il BGP usa il protocollo TCP per trasferire i messaggi di instradamento; due router stabiliscono una connessione TCP sulla porta 179; inizialmente si scambiano l’intera tabella, poi solo le modifiche.