[successivo] [precedente] [indice]

Border Gateway Protocol

Algoritmi di Path Vector

Un algoritmo di Path Vector e' molto simile in concetto ad un algoritmo Distance Vector, ma anziche diffondere solo l'informazione di raggiungibilita' finale, propaga la lista completa di reti transitate verso la destinazione finale, o meglio dei Sistemi Autonomi (SA).

Purtroppo i requisiti di banda per la trasmissione di percorsi che passano da A sistemi autonomi per raggiungere N reti finali varia come (A log A + N). La presenza al 1996 di almeno 30000 reti in Internet significa che un algoritmo di Path Vector non e' applicabile senza semplificazioni.

I percorsi tra sistemi autonomi sono descritti da una serie di attributi, tra cui i piu' importanti sono la Lista di SA Attraversati, l'Origine, la Destinazione Successiva, il Marchio di Irraggiungibilita', la Metrica tra SA.

Ogni attributo e' descrirro da due byte.

Il primo byte contiene quattro flag:

I router intermedi non devono capire tutti gli attributi in transito ma devono almeno propagare quelli con il flag transitivo settato.

Il secondo byte porta il Codice dell'Attributo. Seguono campi variabili di lunghezza e dei dati dell'attributo stesso.

Pari Interni ed Esterni

L'informazione di Path Vector contiene solo indirizzi di gateway di Sistema Autonomo. Non e' possibile effettuare lo smistamento tra il gateway d'ingresso e quello d'uscita da un SA affidandosi ad un protocollo di routing interno.

E' un requisito che ogni router esterno di SA stabilisca una connessione BGP interna con tutti gli altri router esterni del SA. I router BGP si dicono configurati in un "grafo a connettivita' completa"

Caratteristiche di BGP

Il protocollo BGP e' implementato su TCP e non su IP direttamente.

Il vantaggio principale e' la delega al TCP di tutte le funzioni di controllo errore. Per mantenere la garanzia di connettivita' BGP invia messaggi sonda ad intervalli regolari.

Lo svantaggio di sensitivita' di TCP a congestioni di rete e' mitigato nelle nuove versioni da algoritmi di "inizio lento" e di "finestra controllo congestione". Il problema e' che TCP rallenterebbe la trasmissione proprio dei pacchetti BGP che potrebbero ridurre la congestione di rete. Per questo e' un requisito che i pacchetti TCP con carico BGP abbiano priorita' molto aumentata, a livello Precedenza di Controllo Rete.

Testata BGP

Ogni messaggio BGP e' preceduto da una testata, lunga 19 byte.

Il campo Lunghezza porta la lunghezza dell'intero messaggio inclusa la testata. Il Tipo puo' essere:

  1. Open - apertura
  2. Update - aggiornamento
  3. Notification - notifica
  4. Keepalive

Il campo Marker e' usato per sicurezza ed il particolare algoritmo di generazione del marker e' negoziato durante lo scambio iniziale.

Scambio Dati Iniziale

Lo scambio avviene sul porto TCP 179. Al termine dello stabilimento connessione TCP i conversanti in BGP scambiano un messaggio di Open.

Dopo il campo Versione segue il Numero di Sistema Autonomo del router mittente, quindi un Tempo di Hold, che viene usato dalla procedura keepalive.

Segue un campo Identificativo BGP, che tipicamente e' dato da un indirizzo IP di una interfaccia del router (il router deve scegliere una sola interfaccia come identificativo).

Il campo Codice Autenticazione specifica il tipo di autenticazione usata nel campo di Autenticazione successivo e nel campo Marker di ogni messaggio successivo a quello corrente. Nel primo messaggio di Open il campo Marker ha tutti i bit settati a 1.

Il ricevente del messaggio di Open autentica i campi del messaggio ricevuto. Se accetta l'apertura invia un messaggio Keepalive, se la rifiuta invia un messaggio di Errore e quindi chiude la connessione TCP.

Aggiornamenti

Lo scambio di messaggi di aggiornamento e' l'equivalente dello scambio di messaggi di raggiungibilita' del protocollo EGP. I messaggi di aggiornamento sono composti da una testata BGP standard, seguita da un insieme di Attributi di Percorso e quindi da una lista di Reti Raggiungibili.

Il messaggio di Update da' informazioni su un singolo percorso. I primi due byte sono la lunghezza della sezione Attributi, la lunghezza totale e' deducibile dalla testata.

Gli attributi di percorso sono codificati ciascuno come Tipo, Lunghezza, Valore ed hanno un allineamento arbitrario. I campi successivi, invece, di indirizzi di Reti Raggiungibili, sono allineati a confini di 32 bit con tanti byte di pad a zero quanti sono necessari a seconda della classe di indirizzo rete.

La gestione dei messaggi ricevuti e' del tutto simile a quella nel caso degli algoritmi Distance Vector.

Dopo un cambiamento delle tabelle di routing il messaggio di aggiornamento e' propagato a tutti i router adiacenti con una eccezione: un aggiornamento ricevuto su un link interno al sistema autonomo non viene inviato agli altri router dello stesso sistema autonomo.

Funzioni Keep-Alive

I messaggi Keepalive sono sonde per monitorare costantemente la raggiungibilita' di router vicini. Sono indipendenti e talvolta aggiuntivi alla funzionalita' keepalive di TCP.

I messaggi Keepalive sono costituiti da una sola testata di 19 byte. Vengono inviati ad intervalli inferiori al Tempo di Hold indicato nel messaggio di Open (molto minore, per prevenire incostanze del TCP, tipicamente 2 minuti).

Un router che smette di ricevere messaggi di Keepalive per piu' di un periodo di Hold dichiara perduta la raggiungibilita' del vicino, anche se la connessione TCP e' ancora aperta.

Notifiche di Errori

Una notifica di Errore e' causata dalla malformazione di un messaggio ricevuto ed e' seguita dalla chiusura della connessione TCP.

La testata BGP e' seguita da un campo Codice ed un campo Sottocodice di errore, definiti come segue.

Sincronizzazione coi Protocolli Interni

Sono definite tutta una serie di regole di importazione ed esportazione messaggi tra i protocolli BGP ed OSPF ed anche tra BGP ed EGP.

Non e' raro che in una rete moderna complessa vi siano aree amministrate da OSPF che devono coesistere con domini sottoposti a RIP. Vi sono molti programmi di conversione parziale disponibili, con vari gradi di successo, ma nessuno standard di rete in questo campo.