Differences

This shows you the differences between two versions of the page.

Link to this comparison view

freebsd:bonding [2010/01/12 13:29] (current)
Line 1: Line 1:
 +Le bonding consiste à aggréger plusieurs interfaces en une seule afin d'​augmenter sa bande passante lorsqu'​on possède 2 connexions. Sous FreeBSD, le bonding s'​effectue à l'aide du système **NetGraph** extrêmement modulaire. Netgraph permet des manipulations complexes au niveau réseau à l'aide de nodes héritant des particularités de leur type (hooks possibles, traitement du trafic à chaque hook, interprétation des messages de contrôle...) qui peuvent être chaînés à travers des hooks pour constituer un graphe. Pour disposer de netgraph dans FreeBSD, vérifiez que votre kernel a été compilé avec les options suivantes
 +<​code>​
 +options NETGRAPH
 +options NETGRAPH_ONE2MANY
 +options NETGRAPH_ETHER
 +options NETGRAPH_BPF
 +options NETGRAPH_IFACE
 +</​code>​
 +L'un de ces nodes, **ng_one2many** permet de créer une interface unique qui utilisera nos multiples interfaces pour envoyer et recevoir directement des trames. Ce qui va nous permettre de réunir le trafic de nos différentes connexions. Pour manipuler des nodes netgraph, nous utiliserons l'​utilitaire **ngctl** et notamment ses commandes suivantes:
 +  *  connect permet de connecter 2 nodes 
 +  * list liste les informations concernant tous les nodes 
 +  * mkpeer créée et connecte un nouveau node à un existant ​
 +  * msg envoit un message ASCII à un node 
 +  * name assigne un nom à un node 
 +  * read lit et execute les commandes depuis un fichier, qui a aussi pour alias l'​option -f suivi du fichier en ligne de commande
 +  * rmhook deconnecte le hook d'un node show liste les informations à propos d'un node 
 +  * shutdown désactive un node status fournit un statut lisible d'un node types montre les types de nodes installés ​    
 +  * quit quitte ngctl
  
 +De plus, nous utiliserons certains mots-clés tirés de **ng_ether**:​
 +  * lower connecte à un link layer inférieur
 +  * upper connecte à un protocol layer supérieur
 +
 +Pour aggréger nos interfaces, nous exécutons les commandes suivantes:
 +<​code>​
 +# création de l'​interface et connexions avec les autres
 +ngctl mkpeer fxp0: one2many upper one
 +ngctl connect fxp0: fxp0:upper lower many0
 +ngctl connect fxp1: fxp0:upper lower many1
 +ngctl connect fxp2: fxp0:upper lower many2
 +
 +# permettre l'​emission et la réception de trames au nom de l'​interface one
 +# en utilisant les mots clés setpromisc (place en mode promiscuous) et
 +# setautosrc (utilise l'​adresse de l'​interface one) encore tirés de ng_ether
 +ngctl msg fxp1: setpromisc 1
 +ngctl msg fxp2: setpromisc 1
 +ngctl msg fxp1: setautosrc 0
 +ngctl msg fxp2: setautosrc 0
 +
 +# activer les 3 nouvelles interfaces
 +ngctl msg fxp0:upper setconfig "{ xmitAlg=1 failAlg=1 enabledLinks=[ 1 1 1 ] }"
 +
 +# configurer l'​interface
 +ifconfig fxp0 192.168.0.1 netmask 255.255.255.0
 +</​code>​
 +
 +L'IP est donc attribué au groupe d'​interfaces.
 +
 +Plus d'​informations directement à la source
 +http://​www.daemonnews.org/​200003/​netgraph.html
 +http://​www.elischer.org/​netgraph/​
 +
 +--eberkut
freebsd/bonding.txt · Last modified: 2010/01/12 13:29 (external edit)