# Gateway Load Balancing Protocol

Il Gateway Load Balancing Protocol (GLBP) è un protocollo di rete proprietario Cisco che unisce le caratteristiche di ridondanza del gateway predefinito tipiche dell'HSRP con la possibilità di effettuare load balancing del traffico in uscita da una sede. Analogamente all'HSRP, il protocollo GLBP utilizza i meccanismi di ARP ed indirizzi IP e MAC virtuali per reindirizzare gli host della LAN verso un gateway di uscita. A differenza dell'HSRP, il gateway di uscita non sarà lo stesso per tutti gli host.
Il GLBP definisce le seguenti entità:
* un gateway predefinito virtuale (AVG - Active Virtual Gateway). Coincide con uno dei router fisici, ma ha un indirizzo IP ad esso dedicato e diverso da quello dei router fisici. Tutti gli utenti della LAN dovranno scegliere questo indirizzo IP come gateway predefinito.
* almeno due (e massimo 4) forwarder virtuali (AVF - Active Virtual Forwarder). Coincidono con i router fisici, ma ad ognuno è assegnato (automaticamente dal protocollo) un indirizzo MAC virtuale. Sono i router da cui esce il traffico della sede. Un AVG può essere anche AVF.
Quindi ogni router fisico su cui è configurato il GLBP si vedrà assegnati:
* un indirizzo MAC fisico, come tutti i router
* un indirizzo MAC virtuale, che lo identifica come AVF
* un indirizzo IP di LAN fisico, come tutti i router
* un indirizzo IP di LAN virtuale, ma solo sul router che funge da AVG

## Funzionamento

Una volta configurato il GLBP, quando un utente sulla LAN invia traffico diretto fuori dalla LAN stessa:
* il PC dell'utente invia il traffico al proprio gateway predefinito, cioè all'indirizzo IP del router virtuale AVG
* il PC dell'utente invia in broadcast una richiesta ARP per conoscere l'indirizzo MAC corrispondente all'indirizzo IP del router virtuale AVG
* il router che agisce da AVG risponde all'ARP indicando l'indirizzo MAC virtuale del router da cui deve uscire il traffico (cioè uno degli AVF, scelto secondo le logiche di load-balancing impostate)
* il PC dell'utente invia il traffico in LAN al router AVF con il'indirizzo MAC virtuale così scelto, pensando che sia il suo gateway predefinito. Quindi il funzionamento del GLBP è trasparente all'utente finale.
Il GLBP non influenza il comportamento del traffico in ingresso in una sede.

## Fault tolerance

In caso di fault dell'AVG, uno degli altri router su cui è configurato il GLBP diventerà il nuovo AVG. L'indirizzo IP "virtuale" dell'AVG non cambierà, perché il nuovo AVG acquisisce l'indirizzo IP "virtuale" dell'AVG precedente, quindi il cambio è trasparente agli utenti sulla LAN. Il passaggio avviene in modo automatico grazie a dei pacchetti di hello che sono scambiati periodicamente tra tutti i router su cui è configurato il GLBP.
In caso di fault di uno degli AVF, accade quanto segue:
* uno degli altri AVF si prende la responsabilità dell'indirizzo MAC virtuale dell'AVF guasto, inoltrando sia i pacchetti destinati al suo MAC virtuale che al MAC virtuale dell'AVF guasto.
* trascorso un certo tempo, configurato tramite i timer del protocollo, l'AVG non ridirige più gli host al MAC address virtuale dell'AVF guasto, ma quell'indirizzo MAC risulta ancora valido (per quegli utenti che ancora ce l'hanno nella cache dell'ARP)
* trascorso un ulteriore periodo di tempo, configurato tramite i timer del protocollo, il virtual MAC dell'AVF guasto viene rimosso anche dall'AVF e diventa disponibile per essere nuovamente assegnato dall'AVG.