[bglug] utilizzare pił eth() x massimizzare thoughtput

Simone Tiraboschi tira@sonic.it
Lun 19 Lug 2004 12:29:09 CEST


Samuele Locatelli ha scritto:
> Ciao a tutti,
> 
> mi chiedevo se esiste un modo, utilizzando + schede di rete, x
> massimizzare la banda passante che un server possa erogare su una lan...

etherchannel

> ammettiamo di aggiungere altre 2 eth... ammettiamo di avere uno switch e
> 3 utenti...
> 
> diciamo che la config sia
> eth0-> 172.20.1.1
> eth1-> 172.20.2.1
> eth2-> 172.20.3.1

e poi useresti netmask a 16 o 24 bit? non capisco perché vuoi creare 3 
sottoreti IP distinte.


> in attesa dei graditi suggerimenti... saluti!

Io ti consiglio etherchannel: č una tecnologia Cisco supportata anche 
dal driver bonding di Linux.

Di fatto tramite il driver bonding puoi gestire, con pił schede di rete, 
sia il failover che il load balancing; per fare il load balancing 
supporta sia Cisco etherchannel che 802.3ad (Link Aggregation Control 
Protocol - LACP: Intel lo chiama teaming).

Sostanzialmente da due a otto schede di rete sono viste come un'unica 
interfaccia virtuale con banda massima da due a otto volte superiore; a 
quest'unica interfaccia virtuale assegni un unico IP, chiaramente questa 
configurazione deve essere supportata ad entrambi i capi della 
connessione (server e switch con etherchannel). Se provi ad usare questa 
configurazione con uno switch che non supporta etherchannel combini un 
disastro perché questo si vedrą apparire continuamente lo stesso 
indirizzo HW da porte distinte ed andrą parecchio in confusione!

In realtą etherchannel lavora calcolando un hash dell'indirizzo sorgente 
o destinatario poi usa i primi bit di questo hash per determinare quale 
interfaccia usare per inviare la trama corrente. Quindi se il tuo server 
parla con una macchina per volta etherchannel aiuta poco o nulla (ma 
comunque a meno che anche l'altra macchina non avesse pił NIC non 
sarebbe servito). Se invece il tuo server serve contemporaneamente pił 
client etherchannel aiuta e molto.

Fra i vantaggi del bonding poi va ricordato che aumenta  la 
disponibilitą del sistema: se uno de tre link della trunk fosse fuori 
servizio questo continua tranquillamente a funzionare usando solo gli 
altri due senza dover essere riconfigurato.


Come fare:

devi compilare il Kernel abilitando il bonding (se gią non lo avesse)

modifica /etc/modules.conf inserendo
alias bond0 bonding
options bond0 miimon=1

poi semplicemente devi assegnare l'indirizzo IP all'interfaccia bond0 ed 
assegnare eth0 e eth1 al bonding bond0
/sbin/ifconfig bond0 $ipaddress netmask $netmask broadcast $broadcast
/sbin/ifenslave bond0 eth0
/sbin/ifenslave bond0 eth1
/sbin/ifenslave bond0 eth2

oppure puoi ottenere lo stesso risultato modificando alcuni file in 
/etc/sysconfig/network-scripts/ (su RH)

/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
IPADDR=$ipaddress
NETMASK=$netmask
NETWORK=$network
BROADCAST=$broadcast
GATEWAY=$gateway
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none


spero di esserti stato utile

ciao

Simone



Maggiori informazioni sulla lista bglug