Equal-cost multi-path routing
# Equal-cost multi-path routing

Il routing equal-cost multi-path (ECMP) è una strategia di routing in cui i pacchetti instradati verso una singola destinazione possono attraversare "percorsi migliori" multipli, che competono nel calcolo dell'instradamento dei pacchetti. Il routing multi-path può essere usato in congiunzione alla maggior parte dei protocolli di routing esistenti, poiché si tratta di una scelta di instradamento limitata volta per volta ad un solo hop per ogni router. Questa tecnica permette sostanzialmente di incrementare la banda passante grazie al bilanciamento (load-balancing) del traffico attraversando percorsi multipli. E' importante notare che questa tecnica aggiunge nuove complessità nella rete. L'RFC 2991 discute l'instradamento multi-path in maniera più generale.

Nel 2014, L'Institute of Electrical and Electronics Engineers (IEEE) ha incorporato Equal Cost Multiple Paths (ECMP), anche noto come standard IEEE 802.1Qbp, nella specifica IEEE 802.1Q-2014 per lo Shortest Path Bridging. Questo documento stabilisce la simmetricità dei percorsi di rete usati per il traffico unicast e multicast nello shortest path bridging, assicurando in tal modo che i flussi attraversino percorsi deterministici, risolvendo il problema della complessità di configurazione, delle funzionalità di gestione, e il problema delle peratazioni che affliggono le implementazioni originali degli standard.

## Storia

In passato, il load-balancing effettuato tramite instradamento multipath per-pacchetto è stato deprecato a causa di diversi fattori, tra cui:

* l'impatto dovuto a latenze rapidamente variabili
* il riordinamento dei pacchetti
* le differenze di MTU all'interno dello stesso flusso di rete

Questi fattori mettevano potenzialmente a rischio il funzionamento di alcuni protocolli per Internet, in particolare TCP e il path MTU discovery. L'RFC 2992 analizza una particolare strategia di instradamento multipath, basata sull'assegnamento di flussi di rete a delle regioni di uno spazio a 16 bit. Tale assegnamento avviene tramite l'hashing di alcune informazioni contenute nell'header del pacchetto che sono usate specificamente per determinare un flusso di rete. Questa tecnica consente di evitare i problemi visti sopra, instradando tutti i pacchetti di uno specifico flusso di rete attraverso un unico percorso deterministico, e al contempo bilanciando flussi multipli attraverso percorsi differenti.

