Bonding

Bonjour,

Je me bas depuis 1 semaine pour faire marcher le bonding sur une sarge en kernel 2.6

J’ai suivi ce tuto jai suivi cet excellent tuto :
debianadmin.com/linux-ethern … ation.html

mais ca marche pas

mon premier probleme cest quand je fais mii-probe ma deuxieme carte réseau a No link pourtant cest branché et ca clignote bien ???

ON peut forcer a activer une carte réseau ?

bah éventuellement tu peux ajouter une ligne dans la config de bond0:

ça peut être dans le ‘up’ au lieu du ‘preup’, et ça peut être aussi un ‘ifup’ au lieu du ‘ifconfig … up’.
Et sinon, dans /etc/network/interfaces, avant la definition de ton bond, tu peux aussi essayer une config du genre:auto ethX iface ethX inet manual

Tu utilise quel mode de bonding ? Certain modes nécessitent un switch particulier…

J’ai des ipswitch cisco ca devrait aller ?

Tu m’étonnes qu’AMA Cisco doit être compatible avec le bonding :laughing:
Sinon, le module dispose de plein d’options qu’il faut peut être tweaker:

console@routeur:~$ sudo modinfo bonding Password: filename: /lib/modules/2.6.15-1-686/kernel/drivers/net/bonding/bonding.ko license: GPL version: 2.6.5 description: Ethernet Channel Bonding Driver, v2.6.5 author: Thomas Davis, tadavis@lbl.gov and many others vermagic: 2.6.15-1-686 686 gcc-4.0 depends: srcversion: 7648157D27F4AEF964880CE parm: arp_ip_target:arp targets in n.n.n.n form (array of charp) parm: arp_interval:arp interval in milliseconds (int) parm: xmit_hash_policy:XOR hashing method : 0 for layer 2 (default), 1 for layer 3+4 (charp) parm: lacp_rate:LACPDU tx rate to request from 802.3ad partner (slow/fast) (charp) parm: primary:Primary network device to use (charp) parm: mode:Mode of operation : 0 for round robin, 1 for active-backup, 2 for xor (charp) parm: use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default) (int) parm: downdelay:Delay before considering link down, in milliseconds (int) parm: updelay:Delay before considering link up, in milliseconds (int) parm: miimon:Link check interval in milliseconds (int) parm: max_bonds:Max number of bonded devices (int)

est-ce que l’on peut faire du bonding pour aggréger une bande passante provenant de modem ?

Entre ton pc/routeur et ton modem: non (si c’est bien un simple modem)
Sinon, oui, le routeur peut l’agréer ensuite vers d’autres points d’accès. (Comme tes switchs Cisco)

Entre ton pc/routeur et ton modem: non (si c’est bien un simple modem)
Sinon, oui, le routeur peut l’agréer ensuite vers d’autres points d’accès. (Comme tes switchs Cisco)[/quote]

enfin rien avoir avec ce post mais
est-ce que cest possible de aggréger 2 bandes passantes venant de 2 connections internet adsl différentes avec le bonding debian ?

sinon jai réussi a le faire marcher en mode 0 sur un serveur, ca marche du feu de dieu , les autres serveurs ca marche pas parce que la deuxieme cartes réseaux sont mal reconnu ou le driver et pas assez récent.

Ecoute, depuis tes posts entre mes copies, je me bagarre avec des qemu dans tous les sens:

J’ai pu faire du bonding avec deux cartes réseaux branchées sur un switch, en IP fixe puis avec bond0 servi par un DHCP (un peu bancal mais ça a marché). Là, je suis en train d’essayer de faire en mettant deux routeurs sur chaque brin ethernet:

                      ----- Routeur1 -----
Internet---A---bond|                           |bond----B
                      ----- Routeur2 -----

(C’est l’image). Puis après je regarderais ce que ça donne avec Routeur1 et Routeur2 faisant du masquerading (ce qui est l’exact réplique de de connexions ADSL), mais à priori je ne crois pas que ce soit possible.

Bon, ben dans la configuration indiquée dans mon schéma précédent ça coince, la raison est assez simple, il faut indiquer une route pour aller de A à B et de B à A. Or, si on met les mêmes IP aux deux routeurs, cela permet d’avoir une table de routage cohérente et le réseau semble fonctionner, seulement on s’aperçoit vite que tout le traffic passe par l’un des routeur, en fait celui dont l’adresse arp est associée à l’IP dans la table. En fait le bonding est une agrégation au niveau 0 (au niveau Ethernet) et pas au niveau IP, cela ne marche plus dès qu’on y intercale des routeurs ou n’importe quel dispositif fonctionnant au niveau IP. Il est illusoire d’espérer faire du bonding simplement avec deux connexions modems et de toute façons il faudra que FT fasse quelque chose à l’autre bout. La seule solution consiste donc à remonter aux niveaux TCP et lors de l’établissement du connexion, à choisir via iptables par quelle route faire passer la connexion (jusqu’à la fin de celle ci). C’est peut être ce que faisait le logiciel dont je t’avais parler dans ton autre post.
Voilà. Vérifies quand même ce que je dis parce que c’est aussi neuf pour toit que pour moi :slightly_smiling:

C’est super bien ce que tas fait…mais en fait je vais tester si on peut faire la meme chose mais comme ca


                                               | serveur aggr  |           
Internet --- modem 1 --- routeur 1 |           | eth0  |
                                       | bond0 |                     | eth 2 ---- LAN
Internet --- modem 2 --- routeur 2 |           | eth1  |

Sur mon lan je vais donner comme passerelle eth2
Mon probleme cest comment faire pour faire le routage au sein du serveur d’aggrégation ( je vais l’appeler comme ca ).

Il faut que les routeurs aient la meme ip dans le bond ?

apres il suffit de faire des routes avec des metriques adaptés et ca devrait marche.

quest ce que ten pense ?

bon désolé de vous avoir laissé tomber alors que ça m’aurait interressé de tenter ça, mais impossible de trouver le temps de monter la mécanique sur ma machine ce WE.

[quote=“copyme”]C’est super bien ce que tas fait…mais en fait je vais tester si on peut faire la meme chose mais comme ca


                                               | serveur aggr  |           
Internet --- modem 1 --- routeur 1 |           | eth0  |
                                       | bond0 |                     | eth 2 ---- LAN
Internet --- modem 2 --- routeur 2 |           | eth1  |

Sur mon lan je vais donner comme passerelle eth2
Mon probleme cest comment faire pour faire le routage au sein du serveur d’aggrégation ( je vais l’appeler comme ca ).

Il faut que les routeurs aient la meme ip dans le bond ?

apres il suffit de faire des routes avec des metriques adaptés et ca devrait marche.

quest ce que ten pense ?[/quote]
C’est ce que j’ai voulu simuler: Je voulais faire B = ton LAN, A = Internet et les deux routeurs sont les deux modems avec masquerading, mais même sans masquerading ça a coincé. C’est pour ça que ça que je suis pessimiste…

jai trouvé mais cest sans le bonding en fait, avec juste iptable

Expliques…

Oui excuse j’étais occupé

________ +------------+ / | | | +-------------+ Provider 1 +------- __ | | | / ___/ \_ +------+-------+ +------------+ | _/ \__ | if1 | / / \ | | | | Local network -----+ Linux router | | Internet \_ __/ | | | \__ __/ | if2 | \ \___/ +------+-------+ +------------+ | | | | \ +-------------+ Provider 2 +------- | | | +------------+ \________

Voila un schéma mieu que la dernière fois :slightly_smiling:

Alors tu édite tes tables de routage pour donner des noms a tes interfaces
dans /etc/iproute2/rt_tables

200 uplink1
201 uplink2

ensuite dans /etc/network/interfaces

auto lo
iface lo inet loopback
auto eth0

vers LAN

iface eth0 inet static
address 10.0.0.1
netmask 255.255.255.0
#vers routeur 1
auto eth1
iface eth1 inet static
address 10.0.0.1
netmask 255.255.255.0
post-up ip route add 10.0.0.2/32 dev eth1 src 10.0.0.1 table uplink1
post-up ip route add default via 10.0.0.2 table uplink1
post-up ip rule add from 10.0.0.1 table uplink1
post-down ip rule del from 10.0.0.1 table uplink1
#vers routeur 2
auto eth2
iface eth2 inet static
address 20.0.0.1
netmask 255.255.255.0
post-up ip route add 20.0.0.2/32 dev eth2 src 20.0.0.1 table uplink2
post-up ip route add default via 20.0.0.2 table uplink2
post-up ip rule add from 20.0.0.1 table uplink2
post-down ip rule del from 20.0.0.1 table uplink2

cest un mec d’un newgroup debian qui ma explique

donc pour l’instant ca marche pas parce que y a pas de passerelle par default alors tu met des poids sur les passerelles et ca fait le load balancing

ip route add default scope global nexthop via 10.0.0.2 dev eth1 weight 1 nexthop via 20.0.0.2 eth2 weight 1

y a plus qua configurer tes clients , atention tu double pas ton debit ( je croyais au debut ) mais ca fait que du load balancing…en tout cas ca marche…

voila

ah oui jallais oublié, faut que dans ton dhcp ou sur ta machine tu réduise le temps de mise à jour de rafraichissement du cache des dns ca ira mieu apres…parce que des fois y semmele les pedales

:wink:

Non, ça n’est pas iptables mais le routage (iproute en fait). Tu peux me dire ce que donne une fois tout bien configuré les commandes

route -n

ip route show

et

ip rule show

ip est un utilitaire de routage beaucoup plus puissant que route + ifconfig réuni mais je ne le connais pas du tout, du coup cette solution m’intéresse. Apparemment je dirais que c’est la bonne façon de mettre deux routes possibles dans une table de routage (ce que ne semble pas bien faire route qui ne fait que du routage statique) cf doc sur ip. Apparemment tu aurais une table de routage dynamique avec des poinds qui varierait en fonction du débit. Mais pour trouver une doc claire sur iproute, ça n’est pas simple… :frowning:

Oui ip route, j’ai écrit trop vite.
Dès que je rentre o taf je te montre les retour de route -n…
C’est pas exactement ca que je voulais faire du loadbalancing, je voulais aggréger 2 bandes passantes pour augmenter le débit mais la, ca permet de ne pas saturer la bande passante des 2 lignes, cest presque ca mais pas tout à fait… ( enfin je me comprends )

Vu que derrière le LAN jai 200 utilisateurs, la bande passante était vite blindée. Pour l’instant je suis assez content de moi. Ca me permet d’amortir les 2 xDSL, et avec de la QoS derrière jen suis sur que je peux encore améliorer le truc.

Ouais cest avec le weight 1 que le routage en load balancing s’effectue apparement, moi non plus je connaissais. Jai du forcer mes clients à mettre à jour leur route pour que ca marche, des fois on dirait que ca perd un peu le nord.

alors je viens de trouve ca : ssi.bg/~ja/#routes
cest des patches pour le noyau et d’autres trucs qui resolvent pas mal de probleme on dirait.

Ah… J’ai enfin trouvé de la doc traduite: et ton pbm est directement évoqué. Donc si tu veux comprendre, saute sur cet how-to traduit et va au chapitre 4.2