Toon posts:

[Gentoo] redunante netwerklink met 3Com 3c985

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,

Ik ben wat aan het spelen met de bonding driver in Linux. Dit doe ik specifiek op een Gentoo Linux x86 install (die helemaal geupdate is). Het idee wat ik heb is hetvolgende:
Afbeeldingslocatie: http://cybertinus.nl/temp/netwerk_switch_en_server.png
uiteraard is dit niet het gehele netwerk :+ er hangen aan beide VLANs nog andere machines, maar die zijn voor dit probleem niet interessant.

Ik ben nu bezig met de 192.168.1.2 link. Het probleem is dat er gewoon niet gedetecteerd wordt wanneer de primaire link down gaat. De server blijft maar over die netwerkkaart heen verkeer sturen. HIj schakelt nooit over naar de backuplijn.
Echter, als ik de configuratie omdraai (dus de primaire lijn wordt backup en de backuplijn wordt de primaire lijn) dan werkt alles probleemloos en schakelt hij netjes over van primair naar backup en als de primaire lijn weer in de lucht komt, dat schakelt hij ook weer terug.

De gebruikte hardware is:
Primaire link: 3Com 9c985 PCI-X 1000BASE-SX netwerkkaart
Backup connectie: Intel Pro/100 onboard netwerkkaart
Switchstack: 3Com Superstack II 3300 (met 3x16975 1000BASE-SX module) en een 3Com Superstack 3 3300 XM. Alle netwerkkabels lopen naar de Superstack II.

De switches maken gebruik van een Resilent Link (dit is de term die in de webinterface van die switches staat) om ervoor te zorgen dat de correcte switchpoort gebruikt wordt. Deze staat in de switchback modus.

De redundantie heb ik op de server ingesteld met de bonding driver die in de Linux kernel zit. Aan de hand van deze howto en nog wat gepruts, geprobeer en checken welke files ik nu heb in /sys, ben ik uiteindelijk op de volgende config uit gekomen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d.  To create a more complete configuration,
# please review /etc/conf.d/net.example and save your configuration
# in /etc/conf.d/net (this file :]!).

preup() {
    # Adjusting the bonding mode / MII monitor
    # Possible modes are : 0, 1 ,2 ,3 4, 5, 6
    #   OR
    #  balance-rr, active-backup, balance-xor, broadcast,
    #  802.3ad, balance-tlb, balance-alb

    # MII monitor time interval typically: 100 milliseconds

    if [ ${IFACE} == "bond0" -o ${IFACE} == "bond1" ] ; then
        if [[ ${IFACE} == "bond0" ]] ; then
            BOND_MODE="active-backup"
        elif [[ ${IFACE} == "bond1" ]] ; then
            BOND_MODE="balance-rr"
        fi
        BOND_MIIMON="100"
        echo ${BOND_MODE} > /sys/class/net/${IFACE}/bonding/mode
        echo ${BOND_MIIMON} > /sys/class/net/${IFACE}/bonding/miimon
        einfo "Bonding mode is set to ${BOND_MODE} on ${IFACE}"
        einfo "MII monitor interval is set to ${BOND_MIIMON} ms on ${IFACE}"
    else
        einfo "Doing nothing on ${IFACE} regarding to bonding"
    fi
    return 0
}

postup()
{
    if [[ ${IFACE} == "bond0" ]] ; then
        BOND_PRIMARY="eth0"
        BOND_UPDELAY="61500"
        echo ${BOND_PRIMARY} > /sys/class/net/bond0/bonding/primary
        echo ${BOND_UPDELAY} > /sys/class/net/bond0/bonding/updelay
        einfo "Primary interface is set to ${BOND_PRIMARY} on ${IFACE}"
        einfo "Timeout before switching to primary link is set to ${BOND_UPDELAY} milliseconds on ${IFACE}"
    fi
}


# Configure the data bonding interface (bond0)
slaves_bond0="eth0 eth1"
config_bond0=( "192.168.1.2 netmask 255.255.255.0" )
routes_bond0=( "default via 192.168.1.1" )

# Configure the management bonding interface (bond1)
slaves_bond1="eth2 eth3"
config_bond1=( "10.13.37.3 netmask 255.255.255.0" )

# Disabeling all physical interface, because they are part of bonding interfaces
config_eth0=( "null" )
config_eth1=( "null" )
config_eth2=( "null" )
config_eth3=( "null" )


Zoals je kan zien staan er 2 bonding interfaces in die config. bond0 is de interface waar ik nu het probleem mee heb, bond1 is de 2e bonding interface die ik nog werkend moet krijgen voor de 2e redundante link (10.13.37.3) die ook in het plaatje te zien is. (eth2 en eth3 zijn overigens 2 doodsimpele Realtek 8139 PCI kaartjes)

Wat ik zelf denk, is dat die 3Com 3c985 op een andere manier dan die Intel Pro/100 doorgeeft dat de link down is. En dat snapt die bonding driver dus niet. Hoe kan ik ervoor zorgen dat die bonding driver het wel snapt? Moet ik nu met arp_interval en arp_ip_target gaan werken ipv miimon? Of is d'r nog een andere oplossing? In /usr/src/linux/Documentation/networking/bonding.txt vond ik ook niet echt iets wat licht op deze zaak schijnt.

Alvast bedankt voor alle antwoorden.

Verwijderd

Topicstarter
Iemand toevallig nog een idee? Ik weet zelf niet meer waar ik het kan vinden.