# Bridge (informatica)

Il bridge (letteralmente ponte) è un dispositivo di rete che si colloca al livello datalink del modello ISO/OSI che connette e gestisce il flusso di dati tra due rete locali o tra due segmenti di una stessa rete locale. Esso è quindi in grado di riconoscere, nei segnali elettrici che riceve dal mezzo trasmissivo, dei dati organizzati in strutture a pacchetto dette trame (in inglese frame) e di individuare all'interno di esse l'indirizzo del nodo mittente e quello del nodo destinatario. In base a queste informazioni, il bridge può operare un indirizzamento delle trame tra più LAN ad esso connesse.

## Funzionamento

Tipicamente un bridge è munito di porte attraverso le quali è collegato a diversi segmenti della rete locale; il bridge esegue l'indirizzamento inoltrando un pacchetto attraverso una porta oppure un'altra.
Quando il bridge riceve un frame su una porta, cerca di capire dall'indirizzo del destinatario se questo si trova nello stesso segmento del mittente oppure no. Nel caso in cui mittente e destinatario si trovino sullo stesso segmento, il bridge evita di inoltrare il frame in quanto, a meno di errori, il destinatario l'ha già ricevuto per via della condivisione del bus di comunicazione. Altrimenti, il bridge inoltra la trama verso il segmento in cui si trova effettivamente il destinatario. Se il bridge non sa su quale segmento si trova il destinatario (cosa che accade per esempio quando viene collegato un nuovo nodo alla rete), il bridge inoltra il frame su tutte le porte tranne quella da cui l'ha ricevuta. Queste operazioni sono definite rispettivamente operazioni di filtraggio, inoltro o flooding.
Nell'attraversare il bridge, la trama subisce un ritardo aggiuntivo oltre a quello di propagazione nel mezzo fisico, dovuto ai tempi di elaborazione che il bridge opera sul pacchetto per decidere su quale porta di uscita inoltrarlo.

### Tabelle di indirizzi

Il bridge mantiene una tabella (detta di forwarding) di indirizzi MAC per ciascuna porta grazie alla quale è in grado di capire verso quale porta (e quindi su quale segmento) inoltrare il frame. La tabella può essere creata manualmente dall'amministratore di rete attraverso apposito software residente, oppure può essere creata automaticamente tramite un meccanismo di auto-apprendimento (auto-learning) tramite il traffico progressivo di pacchetti sul bridge associando porta di provenienza con l'indirizzo del mittente.
Tale apprendimento può essere reso ancora più sofisticato ed efficiente prevedendo la cancellazione da parte del bridge stesso dell'indirizzo MAC dopo un certo periodo di tempo in cui non viene usato (tempo di invecchiamento) evitando così l'aggiornamento manuale e problemi di scalabilità all'aumentare del numero di host nella rete. Questo permette alla rete di continuare a funzionare anche quando i nodi collegati vengono spostati o vengono rimossi senza che vi sia bisogno di intervento umano.
Questo rende i bridge dispositivi plug-and-play, ovvero che non richiedono configurazione da parte di un utente per poter essere utilizzati. Per questa ragione si parla anche di bridge trasparenti.

### Domini di collisione

Ciascun segmento di rete, collegato ad una porta di un bridge, costituisce un dominio di collisione separato. Ciò ottimizza notevolmente le trasmissioni sulla rete locale diminuendo il numero di collisioni. Grazie a questa sua caratteristica il bridge consente di costruire una LAN di dimensioni teoricamente infinite.
Se un bridge individua un problema di collisione su un altro segmento di rete su cui deve trasmettere, è in grado di bufferizzare i dati e di ritrasmetterli non appena il segmento si libera. Il bridge è pertanto in grado di eseguire la trasmissione con il protocollo CSMA/CD operando come un qualsiasi host della rete.
Un bridge può quindi essere usato per collegare a livello datalink due domini di collisione senza aumentare il rischio di collisioni o, viceversa, per dividere un dominio di collisione in due domini più piccoli per aumentare la performance.

### Differenze bridge/switch

Il comportamento del bridge è sia simile a quello dello switch per via della capacità di indirizzamento, che a quello del repeater grazie alla capacità di inoltrare un pacchetto verso un altro segmento di rete.
La differenza fisica con lo switch risiede nel numero di porte: un bridge possiede al massimo una decina di porte, mentre uno switch può averne fino ad alcune centinaia nei modelli più complessi. Un bridge viene quindi utilizzato per connettere diversi segmenti di rete, due per ogni bridge; lo switch, invece, connette fra di loro più rami della rete. I segmenti di rete connessi dal bridge, il quale opera anche come repeater, sono potenzialmente costituiti da molti host. Lo switch, invece, viene collegato direttamente ai singoli host.
Questa differenza sul numero di porte ha a sua volta effetto sulla dimensione dei domini di collisione: entrambi i dispositivi riducono la dimensione dei domini di collisione, ma lo switch arriva all'estremo di ridurre una parte della rete ad un insieme di domini di collisione di dimensioni minime, al limite costituiti ciascuno da un singolo nodo. Questa situazione consente di ridurre drasticamente le collisioni, ma la contropartita è la grande quantità di cavi necessari a collegare ogni singolo nodo allo switch, oppure i nodi ad alcuni hub e questi ultimi allo switch.
Altre differenze importanti tra switch e bridge sono:
* Quando lo switch non conosce la linea di uscita per il frame, inoltra i dati su tutte le sue linee compresa quella di entrata. Lo switch realizza un broadcast, al contrario del bridge che esegue un inoltro.
* Lo switch è un dispositivo full duplex quindi non opera contesa sul canale, non implementa CSMA/CD (ma è comunque supportato e utilizzato in caso di connessioni half duplex) ed è considerato Ethernet in quanto è in grado di gestire il frame 802.3.

## Punti deboli

Il bridge rappresenta una debolezza dal punto di vista dell'affidabilità della rete. Se un bridge si guasta, infatti, tutti i segmenti di rete ad esso connessi vengono scollegati dal resto della rete.

### Spanning tree

Per ovviare a questo inconveniente si possono creare percorsi multipli ridondanti, ma si ricade in un altro problema perché i frame rischiano di seguire dei percorsi ciclici e moltiplicarsi. Il problema si evita con la creazione automatica di uno spanning tree, cioè di un sottogruppo della rete privo di anelli.
Gli algoritmi di spanning tree sono soliti impostare le porte dello switch o del bridge a tre differenti stati, a seconda dell'occorrenza.
* blocking;
* listening;
* learning;
* forwarding;
* disabled.
I possibili passaggi da uno stato all'altro sono i seguenti:
* da inizializzazione a blocking;
* da blocking a listening o disabled;
* da listening a learning o disabled;
* da learning a forwarding o disabled;
* da forwarding a disabled.

### Shortest Path Bridging

Il protocollo IEEE 802.1aq (Shortest Path Bridging SPB) rende attivi tutti gli instradamenti possibili con molteplici a costo uguale. Questo protocollo permette di avere reti di livello 2 molto più estese, accelerando i tempi di riconvergenza e migliorando l'utilizzazione di reti magliate tramite l'aumento della banda passante. Inoltre prevede la ridondanza tra i vari nodi permettendo al traffico di essere distribuito su tutti gli instradamenti possibili della rete magliata.

## Router

Il router assomiglia molto a un bridge nella sua funzionalità, ma il livello su cui opera è differente. Mentre il bridge è un dispositivo di livello due (data link), il router opera al livello tre (network).