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
options NETGRAPH options NETGRAPH_ONE2MANY options NETGRAPH_ETHER options NETGRAPH_BPF options NETGRAPH_IFACE
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:
De plus, nous utiliserons certains mots-clés tirés de ng_ether:
Pour aggréger nos interfaces, nous exécutons les commandes suivantes:
# 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
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