Ethernet Bonding: come garantire ridondanza e/o massimizzare la banda disponibile: differenze tra le versioni

nessun oggetto della modifica
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 5: Riga 5:


=Requisiti=
=Requisiti=
Prima di iniziare, e' altamente raccomandata una verifica sull'integrità e la funzionalità delle singole schede di rete. Lanciando il comando 'mii-tool' dovreste vedere qualcosa di simile:
Prima di iniziare, è altamente raccomandata una verifica sull'integrità e la funzionalità delle singole schede di rete. Lanciando il comando 'mii-tool' dovreste vedere qualcosa di simile:
<pre>
<pre>
# mii-tool
# mii-tool
Riga 11: Riga 11:
eth1: negotiated 100baseTx-FD, link ok
eth1: negotiated 100baseTx-FD, link ok
</pre>
</pre>
Per far si' che il bonding funzioni, il kernel deve avere il supporto per il bonding delle periferiche:
Per far che il bonding funzioni, il kernel deve avere il supporto per il bonding delle periferiche:
<pre>
<pre>
# modprobe --list | grep bonding
# modprobe --list | grep bonding
Riga 19: Riga 19:
=Tipi di bonding=
=Tipi di bonding=
Esistono diversi tipi di bonding, relativi a come il kernel gestirà i flussi di dati in entrata e in uscita dal sistema:
Esistono diversi tipi di bonding, relativi a come il kernel gestirà i flussi di dati in entrata e in uscita dal sistema:
* <code> '''mode=0 (balance-rr)'''</code>: viene configurato un round-robin tra le due interfacce. I pacchetti vengono trasmessi attraverso la scheda di rete scarica e se una delle due va ko viene usata solo la scheda di rete funzionante. Questa  modalità fornisce sia il load balance e sia il fault tolerance e non prevede switch di rete con particolari funzionalità;
* <code> '''mode=0 (balance-rr)'''</code>: viene configurato un round-robin tra le due interfacce. I pacchetti vengono trasmessi attraverso la scheda di rete scarica e se una delle due va KO viene usata solo la scheda di rete funzionante. Questa  modalità fornisce sia il load balance e sia il fault tolerance e non prevede switch di rete con particolari funzionalità;
* <code>'''mode=1 (active-backup)'''</code>: una sola schede di rete viene usata. Se questa si rompe il MAC address viene associato all’altra funzionante (di backup) e quindi il flusso di rete viene garantito. Questa modalità fornisce un sistema di fault tolerance e non è necessario uno switch che abbia funzionalità avanzate;
* <code>'''mode=1 (active-backup)'''</code>: una sola schede di rete viene usata. Se questa si rompe il MAC address viene associato all'altra funzionante (di backup) e quindi il flusso di rete viene garantito. Questa modalità fornisce un sistema di fault tolerance e non è necessario uno switch che abbia funzionalità avanzate;
* <code>'''mode=2 (balance-xor)'''</code>: il traffico di rete viene inoltrato sulla scheda in base a questa regola di XOR: ((source MAC) XOR (dest MAC)).  Questa modalità garantisce load balance e fault tolerance e non necessità di particolati switch;
* <code>'''mode=2 (balance-xor)'''</code>: il traffico di rete viene inoltrato sulla scheda in base a questa regola di XOR: ((source MAC) XOR (dest MAC)).  Questa modalità garantisce load balance e fault tolerance e non necessità di particolati switch;
* <code>'''mode=3 (broadcast)'''</code>: vengono usate tutte le interfacce per trasmettere e ricevere. Il fault tolerance è garantito senza switch preposti;
* <code>'''mode=3 (broadcast)'''</code>: vengono usate tutte le interfacce per trasmettere e ricevere. Il fault tolerance è garantito senza switch preposti;
* <code>'''mode=4 (802.3ad)'''</code>: è una modalità si supporto allo standard IEEE 802.3ad Dynamic link aggregation. È necessario uno switch che supporti lo standard 802.3ad;
* <code>'''mode=4 (802.3ad)'''</code>: è una modalità si supporto allo standard IEEE 802.3ad Dynamic link aggregation. È necessario uno switch che supporti lo standard 802.3ad;
Riga 27: Riga 27:
* <code>'''mode=6 (balance-alb)'''</code>: Adaptive Load Balancing. Fornisce bilanciamento del carico sia in ricezione che in trasmissione. Non necessita di switch particolari, ma richiede la capacità di cambiare l’indirizzo MAC del dispositivo di rete senza che questo interrompa il traffico.
* <code>'''mode=6 (balance-alb)'''</code>: Adaptive Load Balancing. Fornisce bilanciamento del carico sia in ricezione che in trasmissione. Non necessita di switch particolari, ma richiede la capacità di cambiare l’indirizzo MAC del dispositivo di rete senza che questo interrompa il traffico.
=Installazione=
=Installazione=
Il bonding su Linux è gestito dal programma <tt>ifenslave</tt>:
Il bonding su Linux è gestito dal programma <code>ifenslave</code>:
<pre>
<pre>
apt-get install ifenslave-2.6
apt-get install ifenslave-2.6
</pre>
</pre>
La configurazione vera e propria del networking viene fatta, come sempre, tramite il file <tt>/etc/network/interfaces</tt>. Supponendo che eth0 ed eth1 siano le schede ethernet presenti sulla nostra Debian box:
La configurazione vera e propria del networking viene fatta, come sempre, tramite il file <code>/etc/network/interfaces</code>. Supponendo che eth0 ed eth1 siano le schede ethernet presenti sulla nostra Debian box:
<pre>
<pre>
auto bond0
auto bond0
Riga 43: Riga 43:
</pre>
</pre>
Commentate eventuali riferimenti alle schede fisiche presenti nel file, quindi salvate.
Commentate eventuali riferimenti alle schede fisiche presenti nel file, quindi salvate.
Aprite ora il file <tt>'''/etc/modprobe.d/arch/i386'''</tt> (per architetture i386), oppure <tt>'''/etc/modprobe.d/arch/x86_64'''</tt> (per architetture a 64 bit) e aggiungete le seguenti righe:
Aprite ora il file <code>'''/etc/modprobe.d/arch/i386'''</code> (per architetture i386), oppure <code>'''/etc/modprobe.d/arch/x86_64'''</code> (per architetture a 64 bit) e aggiungete le seguenti righe:
<pre>
<pre>
alias bond0 bonding
alias bond0 bonding
options bonding mode=1 miimon=100 downdelay=200 updelay=200
options bonding mode=1 miimon=100 downdelay=200 updelay=200
</pre>
</pre>
Aggiornate la lista dei moduli caricati
Aggiornate la lista dei moduli caricati:
<pre>
<pre>
# update-modules
# update-modules
Riga 58: Riga 58:


=Installazione alternativa=
=Installazione alternativa=
Il bonding su Linux è gestito dal programma <tt>ifenslave</tt>:
Il bonding su Linux è gestito dal programma <code>ifenslave</code>:
<pre>
<pre>
# apt-get install ifenslave-2.6
# apt-get install ifenslave-2.6
</pre>
</pre>
La configurazione vera e propria del networking viene fatta, come sempre, tramite il file <tt>/etc/network/interfaces</tt>. Supponendo che eth0 ed eth1 siano le schede ethernet presenti sulla nostra Debian box:
La configurazione vera e propria del networking viene fatta, come sempre, tramite il file <code>/etc/network/interfaces</code>. Supponendo che eth0 ed eth1 siano le schede ethernet presenti sulla nostra Debian box:
<pre>
<pre>
auto bond0
auto bond0
Riga 70: Riga 70:
network <indirizzo_di_rete>
network <indirizzo_di_rete>
gateway <ip_del_gateway>
gateway <ip_del_gateway>
bond_mode <modalita_di_bonding_preferita>
bond_mode <modalità_di_bonding_preferita>
bond_miimon 100
bond_miimon 100
bond_downdelay 200
bond_downdelay 200
6 999

contributi