Suite au HS18 le Linux Magazine, j'ai voulu tester la mise en place du Channel Bonding (le petit nom du 802.3ad sous Linux).

Après quelques adaptations, ça marche mais j'ai un petit problème : je suis obligé d'exécuter un script routefix.sh pour générer une table de routage correcte...

Je pense qu'il s'agit d'un problème d'activation des interfaces réseaux ? Comment la table de routage est-elle générée au départ et à quel moment ?

Voici ma démarche, elle fonctionne mais le script routefix.sh ça fait bricolage :

* contrôle des interfaces.
ethtool (package ethtool)
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 32
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: d
Current message level: 0x00000007 (7)
Link detected: yes
mii-tool (package net-tools)
eth0: negotiated 100baseTx-FD, link ok
eth1: negotiated 100baseTx-FD flow-control, link ok

* Modifier le fichier /etc/modprobe.conf.
alias bond0 bonding

* Activer le channel bonding manuellement.
modprobe bonding mode=active-backup miimon=100

* Activer l'interface réseau.
ifconfig bond0 10.1.28.50 netmask 255.255.0.0 broadcast 10.1.255.255 up
ifenslave bond0 eth0 eth1

* Modification du routage.
route del -net 10.1.0.0 netmask 255.255.0.0 dev eth0
route del -net 10.1.0.0 netmask 255.255.0.0 dev eth1
route add -net 169.254.0.0 netmask 255.255.0.0 dev bond0
route add default gw 10.1.50.254
route

Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
10.1.0.0 * 255.255.0.0 U 0 0 0 bond0
169.254.0.0 * 255.255.0.0 U 0 0 0 bond0
default 10.1.50.254 0.0.0.0 UG 0 0 0 bond0

* Contrôle.
cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v2.6.0 (January 14, 2004)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0d:61:ae:42:43

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:04:75:ed:ed:23

ip link show bond0

3: bond0: <BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue
link/ether 00:0d:61:ae:42:43 brd ff:ff:ff:ff:ff:ff

* script du service bonding.

#!/bin/bash
#
# Bonding configuration
#
# chkconfig: 23 20 80
# description: Channel Bonding
#
## BEGIN INIT INFO
# Provides: bonding
# Required-Start: $network
# Required-Stop:
# Default-Start: 3 5
# Default-Stop:
# Description: configurer le channel bonding
## END INIT INFO

BOND_ADDR="10.1.28.50/16"
LISTE_ETH="eth0 eth1"
#ETHER_ADDR="XX:XX:XX:XX:XX:XX"

case "$1" in
start)
ip link set dev bond0 down

# ne fonctionne pas, mis en commentaire
# if ["$ETHER_ADDR" != ""] ; then
# ip link set dev bond0 addr ${ETHER_ADDR}
# fi
ip addr add ${BOND_ADDR} brd + dev bond0
ip link set dev bond0 up
ifenslave bond0 ${LISTE_ETH}
;;
stop)
ip link set dev bond0 down
;;
*)
echo "Usage: $0 [start|stop]"
exit 1
esac


* activation du script.

Les deux lignes suivantes permettent de gérer le script bonding avec chkconfig (cf man).
# chkconfig: 23 20 80
# description: Channel Bonding

chkconfig ?add bonding
chkconfig bonding off
chkconfig bonding 35 on

🙂
2 mois plus tard
Salut,

Je n'ai jamais mis en oeuvre de bonding, mais vu ce que tu veux faire, je ferai les manips suivantes si j'étais dans ton cas.
J'ai complété avec une doc de chez redhat, j'espère que si cela fonctionne tu me le communiquera 😉

Modifier /etc/sysconfig/network et ajouter ( ou modifier ) les valeurs suivantes
GATEWAY=10.1.50.254
GATEWAYDEV=bond0

Aller dans le dossier /etc/sysconfig/network-scripts

Editer ifcfg-bond0 comme ceci

DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.1.28.50
NETMASK=255.255.0.0

Editer ifcfg-eth0 comme ceci

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

Editer ifcfg-eth1 comme ceci

DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no


Ensuite pour la route bizarre :
touch /etc/sysconfig/network-scripts/route-bond0

Edite le fichier /etc/sysconfig/network-scripts/route-bond0
et tapes ceci:
169.254.0.0/16

redémarre ton réseau ou ta machine si tu veux être sûr que cela fonctionne a chaque démarrage.

A plus,
Merci pour ta réponse
Il ne faut jamais désespéré ! je n'attendais plus d'aide sur le bonding !
Je vais tester tes suggestions d'autant que je pensais tester une solution dans le même style. Mais bon une question quand même concernant ton fichier contenant les routages statiques :

/etc/sysconfig/network-scripts/route-bond0
169.254.0.0/16

bon 169.254.0.0/16 c'est un adresse d'autodétermination ?
quel est la logique ? si tu as un lien vers une doc je suis preneur. :-D
Salut,

J'ai reproduit bètement l'ajout des routes que tu avais écris mais sans trop chercher à comprendre, désolé.

La route vers 169.254.0.0/16 est une route qui se met automatiquement sur certains systèmes.
Cela se nomme APIPA (Automatic Private IP Addressing)

Breve explication copiée du net :
Automatic Private IP Addressing

Fonctionnalité destinée à assurer qu'un ordinateur puisse toujours se connecter à un réseau même si une adresse IP n'est pas disponible.

APIPA possède les deux principales fonctions suivantes :
? Permettre aux utilisateurs d'utiliser le TCP/IP sur des petits réseaux même si il ne connaissent rien de l'adressage IP.
? Fournir un moyen aux clients DHCP d'accéder au réseau quand le serveur DHCP est hors service.

Une machine fonctionnant en APIPA n'est pas en mesure d'utiliser les services DNS ou WINS. Mais si le DHCP se remet en route, APIPA s'arrête pour donner sa place à celui-cI.
--- Fin copie du net

Les postes créent un réseau "virtuel" au cas où ils n'arrivent pas à obtenir d'adresse en dhcp. Ce qui est bizarre, c'est qu'ils l'ajoutent même si on est en adresse statique.

Pour que cette route ne se crée pas, modifier le fichier /etc/sysconfig/network et ajouter la ligne suivante :
NOZEROCONF=yes

Redémarre le réseau pour prendre la modif en compte (/sbin/service network restart)

Pour info :
http://www.abc-reseaux.com/index.php?page=Systemes/Windows_2000/adressage_apipa.php
http://www.webopedia.com/TERM/A/APIPA.html

A plus,