Quali sono le differenze tra le modalità di channel bonding in Linux?


8

Sotto Linux è possibile combinare più interfacce di rete in un'interfaccia di rete "legata" per fornire il failover.

Ma ci sono diverse modalità, alcune delle quali non richiedono il supporto switch. Non sono vincolato dal mio passaggio in quanto posso usare una qualsiasi delle modalità.

Tuttavia, nel leggere le diverse modalità non è immediatamente chiaro quali siano i pro e i contro di ciascuna.

  1. Alcune modalità forniscono un failover più veloce?
  2. Che dire dell'impatto sul carico della CPU per ciascuna modalità?
  3. Quali modalità possono combinare la larghezza di banda piuttosto che fornire solo ridondanza?
  4. Ci sono limiti a questo?
  5. Balance-RR richiede il supporto switch?
  6. Affidabilità? Quali sono le tue esperienze a lungo termine?

si hanno letto il legame Kernel HOWTO , non è vero? Dovrebbe rispondere alle tue domande.
the-wabbit

Sì, ti dice cosa fanno in una certa misura. Ma non ti dice quanto bene si comportano in un ambiente di produzione. Alcuni dicono "nessun supporto switch richiesto". Mentre gli altri non hanno commenti e ti lasciano indovinare.
Matt,

Non so perché il downvote. Questa è una domanda perfettamente valida e sull'argomento no?
Matt,

Chiunque abbia espresso il voto negativo e / o il voto vicino, fornisci un motivo, in modo che io possa almeno avere la possibilità di migliorare la domanda.
Matt,

Sospetto che il voto negativo possa essere dovuto al fatto che il modo in cui viene posta la tua domanda sembra che tu non abbia fatto molta ricerca o lettura della documentazione prima di farla. Vedi la descrizione del voto negativo.
Zoredache,

Risposte:


9
  1. Il fattore principale nel failover è la velocità con cui viene rilevato un errore di collegamento. Scollega il cavo dall'host e funzioneranno tutti abbastanza bene. Lascia un collegamento live su un interruttore altrimenti morto e la maggior parte delle modalità (tranne quelle che supportano beacon / keepalive) non invieranno parte del tuo traffico da nessuna parte.

  2. In generale, il traffico di rete è guidato dall'interruzione. I vari algoritmi di hashing non faranno una differenza significativa.

  3. Qualsiasi modalità che non è attiva / in standby o trasmette tutti condividerà il traffico a vari livelli. Alcune modalità possono essere bilanciate in base al pacchetto, altre funzionano in base al flusso. Il primo distribuirà il carico in modo più uniforme mentre il secondo è molto più utile (leggi: funzionale / stabile) nelle reti attuali.

  4. Sì, ci sono limiti per ciascuna modalità, ma dobbiamo sapere molto di più sulla tua applicazione per parlare con loro.

  5. Solo LACP / 802.3ad (modalità 4) richiede esplicitamente il supporto sullo switch. Detto questo, solo perché si invia allo switch con un modello particolare non significa che lo switch invierà -back- allo stesso modo.

  6. L'unica modalità di cui tendo a fidarmi della produzione è 802.3ad che, con uno switch opportunamente configurato, assicurerà che solo i collegamenti corretti finiranno nel canale oltre a fornire una certa simmetria nella condivisione del traffico e una risposta prevedibile quando un il link non è attivo. Questa modalità evita anche alcuni problemi comuni ma cattivi (ovvero inondazioni unicast). Attivo / standby è anche abbastanza comune. Le altre modalità possono essere richieste per determinate circostanze ma, IMO, tendono ad essere più dolorose.

Altre modalità di bilanciamento basate su flusso / MAC / IP o attive / standby possono anche andare bene e possono essere richieste quando si tratta di switch non gestiti.


10

La maggior parte di questi punti sono descritti in modo abbastanza approfondito nel /usr/src/linux/Documentation/networking/bonding.txtfile di documentazione dal pacchetto sorgente linux della tua distribuzione preferita. La velocità di failover è controllata dal parametro "miimon" per la maggior parte delle modalità, ma non dovrebbe essere impostata su un valore troppo basso; i valori normali sono comunque inferiori a un secondo.

Ecco le parti migliori, completate da me:

   balance-rr or 0
       Round-robin policy: Transmit packets in sequential
       order from the first available slave through the
       last. This mode provides load balancing and fault
       tolerance. 


   active-backup or 1
       Active-backup policy: Only one slave in the bond is
       active.  A different slave becomes active if, and only
       if, the active slave fails. The bond's MAC address is
       externally visible on only one port (network adapter)
       to avoid confusing the switch.

       This mode provides fault tolerance. The "primary"
       option affects the behavior of this mode.

   balance-xor or 2
       XOR policy: Transmit based on the selected transmit
       hash policy.  The default policy is a simple [(source
       MAC address XOR'd with destination MAC address) modulo
       slave count].  Alternate transmit policies may be
       selected via the xmit_hash_policy option.

       This mode provides load balancing and fault tolerance.

   broadcast or 3
       Broadcast policy: transmits everything on all slave
       interfaces.  This mode provides fault tolerance.

   802.3ad or 4
       IEEE 802.3ad Dynamic link aggregation.  Creates
       aggregation groups that share the same speed and
       duplex settings.  Utilizes all slaves in the active
       aggregator according to the 802.3ad specification.

       Slave selection for outgoing traffic is done according
       to the transmit hash policy, which may be changed from
       the default simple XOR policy via the xmit_hash_policy
       option. Note that not all transmit policies may be 802.3ad
       compliant, particularly inregards to the packet mis-ordering
       requirements of section 43.2.4 of the 802.3ad standard.
       Differing peer implementations will have varying tolerances for
       noncompliance.

       Note: Most switches will require some type of configuration
       to enable 802.3ad mode.

   balance-tlb or 5
       Adaptive transmit load balancing: channel bonding that
       does not require any special switch support.  The
       outgoing traffic is distributed according to the
       current load (computed relative to the speed) on each
       slave.  Incoming traffic is received by the current
       slave.  If the receiving slave fails, another slave
       takes over the MAC address of the failed receiving
       slave.

   balance-alb or 6
       Adaptive load balancing: includes balance-tlb plus
       receive load balancing (rlb) for IPV4 traffic, and
       does not require any special switch support.

       When a link is reconnected or a new slave joins the
       bond the receive traffic is redistributed among all
       active slaves in the bond by initiating ARP Replies
       with the selected MAC address to each of the
       clients. The updelay parameter must
       be set to a value equal or greater than the switch's
       forwarding delay so that the ARP Replies sent to the
       peers will not be blocked by the switch.

balance-rr, active-backup, balance-tlb e balance-alb non necessitano del supporto switch.

balance-rr aumenta le prestazioni al prezzo della frammentazione, funziona male con alcuni protocolli (CIFS) e con più di 2 interfacce.

balance-alb e balance-tlb potrebbero non funzionare correttamente con tutti gli switch; ci sono spesso alcuni problemi arp (alcune macchine potrebbero non riuscire a connettersi tra loro per esempio). Potrebbe essere necessario modificare varie impostazioni (miimon, updelay) per ottenere una rete stabile.

balance-xor può o meno richiedere la configurazione dello switch. È necessario impostare un gruppo di interfacce ( non LACP) sugli switch HP e Cisco, ma a quanto pare non è necessario sugli switch D-Link, Netgear e Fujitsu.

802.3ad richiede assolutamente un gruppo LACP sul lato switch. È l'opzione complessivamente migliore supportata per aumentare le prestazioni.

Nota: qualunque cosa tu faccia, una connessione di rete passa sempre attraverso uno e un solo collegamento fisico. Pertanto, quando si aggregano le interfacce GigE, un trasferimento di file dalla macchina A alla macchina B non può superare 1 gigabit / s, anche se ogni macchina ha 4 interfacce GigE aggregate (qualunque sia la modalità di bonding in uso).


Si noti che 802.3ad non impone l'uso di LACP. LACP è solo un protocollo di controllo per la configurazione dell'aggregazione dei collegamenti dinamici , è possibile avere perfettamente una configurazione LA statica senza LACP.
the-wabbit

1
Questo è vero, tuttavia la maggior parte degli switch non consente la configurazione dell'aggregazione dei collegamenti statici e chiama gli aggregati "modalità LACP".
Wazoox,

802.3ad definisce sia LA statica che LACP. Se uno switch afferma di essere conforme a 802.3ad, deve implementare entrambi. Ogni modello di switch che avevo tra le mani che implementava LACP, implementava anche LA statica.
the-wabbit

1

I documenti del kernel rispondono ad alcune di queste domande:

Collegamento Ethernet


1
Per favore, dedica un po 'di tempo a migliorare questa risposta oltre a fornire un link. Il collegamento è utile, ma le risposte qui dovrebbero essere più di un semplice collegamento alla documentazione.
Zoredache,

Grazie per quel link. La sezione 12.1.1 Selezione della modalità di legame MT per la topologia a singolo interruttore è ciò che cercavo.
Matt,

Sì, è per questo che ho incollato il link solo senza alcun commento ;-)
FINESEC
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.