Sulla base di una domanda precedente più di un anno fa ( Multiplexed 1 Gbps Ethernet? ), Sono andato fuori e ho installato un nuovo rack con un nuovo ISP con collegamenti LACP ovunque. Ne abbiamo bisogno perché abbiamo singoli server (una applicazione, un IP) che servono migliaia di computer client su Internet in eccesso di 1 Gbps cumulativi.
Questa idea di LACP dovrebbe consentirci di rompere la barriera da 1 Gbps senza spendere una fortuna in switch e schede di rete 10GoE. Sfortunatamente, ho riscontrato alcuni problemi con la distribuzione del traffico in uscita. (Questo nonostante l'avvertimento di Kevin Kuphal nella domanda sopra collegata.)
Il router dell'ISP è un Cisco di qualche tipo. (L'ho dedotto dall'indirizzo MAC.) Il mio switch è un HP ProCurve 2510G-24. E i server sono HP DL 380 G5 con Debian Lenny. Un server è un hot standby. La nostra applicazione non può essere raggruppata. Ecco un diagramma di rete semplificato che include tutti i nodi di rete rilevanti con IP, MAC e interfacce.
Sebbene abbia tutti i dettagli, è un po 'difficile lavorare con e descrivere il mio problema. Quindi, per semplicità, ecco un diagramma di rete ridotto ai nodi e ai collegamenti fisici.
Quindi sono andato via e ho installato il mio kit sul nuovo rack e ho collegato i cavi del mio ISP dal loro router. Entrambi i server hanno un collegamento LACP al mio switch e lo switch ha un collegamento LACP al router ISP. Fin dall'inizio mi sono reso conto che la mia configurazione LACP non era corretta: i test hanno mostrato che tutto il traffico da e verso ciascun server stava attraversando un collegamento GoE fisico esclusivamente tra server-switch e switch-router.
Con alcune ricerche su Google e un sacco di tempo RTMF per quanto riguarda il legame NIC Linux, ho scoperto che avrei potuto controllare il legame NIC modificando /etc/modules
# /etc/modules: kernel modules to load at boot time.
# mode=4 is for lacp
# xmit_hash_policy=1 means to use layer3+4(TCP/IP src/dst) & not default layer2
bonding mode=4 miimon=100 max_bonds=2 xmit_hash_policy=1
loop
In questo modo il traffico ha lasciato il mio server su entrambe le schede NIC come previsto. Ma il traffico si stava spostando dallo switch al router su un solo collegamento fisico, comunque .
Abbiamo bisogno che il traffico attraversi entrambi i collegamenti fisici. Dopo aver letto e riletto la Guida alla gestione e alla configurazione del 2510G-24 , trovo:
[LACP utilizza] coppie di indirizzi di origine-destinazione (SA / DA) per distribuire il traffico in uscita su collegamenti trunked. SA / DA (indirizzo di origine / indirizzo di destinazione) fa sì che lo switch distribuisca il traffico in uscita ai collegamenti all'interno del gruppo di trunk sulla base delle coppie di indirizzi di origine / destinazione. Cioè, lo switch invia il traffico dallo stesso indirizzo di origine allo stesso indirizzo di destinazione attraverso lo stesso collegamento trunked e invia il traffico dallo stesso indirizzo di origine a un indirizzo di destinazione diverso attraverso un collegamento diverso, a seconda della rotazione delle assegnazioni di percorso tra collegamenti nel bagagliaio.
Sembra che un collegamento collegato presenti un solo indirizzo MAC, e quindi il mio percorso da server a router sarà sempre su un percorso dallo switch al router perché lo switch vede solo un MAC (e non due - uno da ogni porta) per entrambi i collegamenti LACP.
Fatto. Ma questo è quello che voglio:
Uno switch HP ProCurve più costoso è che il 2910al utilizza indirizzi di origine e destinazione di livello 3 nel suo hash. Dalla sezione "Distribuzione del traffico in uscita attraverso i collegamenti trunked" della Guida alla gestione e alla configurazione di ProCurve 2910al :
La distribuzione effettiva del traffico attraverso un trunk dipende da un calcolo che utilizza i bit dell'indirizzo di origine e dell'indirizzo di destinazione. Quando è disponibile un indirizzo IP, il calcolo include gli ultimi cinque bit dell'indirizzo di origine IP e dell'indirizzo di destinazione IP, altrimenti vengono utilizzati gli indirizzi MAC.
OK. Quindi, affinché funzioni nel modo in cui lo voglio, l'indirizzo di destinazione è la chiave poiché il mio indirizzo di origine è fisso. Questo porta alla mia domanda:
Come funziona esattamente e specificamente l'hash LACP di livello 3?
Devo sapere quale indirizzo di destinazione viene utilizzato:
- l'IP del cliente , la destinazione finale?
- O l'IP del router , la prossima destinazione di trasmissione del collegamento fisico.
Non siamo ancora andati a comprare un interruttore sostitutivo. Aiutami a capire esattamente se l'hash dell'indirizzo di destinazione LACP di livello 3 è o non è quello di cui ho bisogno. L'acquisto di un altro interruttore inutile non è un'opzione.