Undeterministische Verbindungsverluste mit Linuxfirewall, Bonding und Ciscoswitch
Maximilian Wilhelm
max at rfc2324.org
Fri Sep 15 14:38:04 CEST 2006
Hi!
Ich bin gestern ueber ein interessantes Problem gestolpert, dass ich
noch nicht ganz zuordnen kann.
Hintergrund:
Wir haben vor ein paar Wochen unsere Haupt-Firewall auf eine neue
Maschine umgezogen, die per Bonding (beide Anschluesse einer e1000
PCI-X-Karte (64Bit x 133MHz)) an einen Cisco 3560. Ueber den Channel
laeuft ein Trunk mit im Moment 12 Vlans mit unseren internen Netzen.
Der externe Anschluss haengt an ner anderen e1000 PCI-X-Karte (64Bit
x 100MHz) und noch nen Heartbeat-Cross-Link ueber eine der onBoard
e1000 (32Bit x 66MHz).
Seitdem wir von einer einzelnen Strippe zum Channel gewechselt haben,
haben wir Probleme mit unserem Symantec Live State Delivery Server.
(Windows Installationsserver und Softwareverteilung)
Wenn zwei Interfaces im Bonding aktiv sind, schafft es der PC-DOS
basierte LSD Client nicht mehr ueber ein vermutlich eigenes Protokoll
Logdaten an den Server zu schreiben. Macht man manuell in 'net use'
bekommt man eine Verbindung und kann auch Problemlos Daten schreiben.
Das gleiche Verhalten tritt undeterministisch ueber TCP und UDP auf
(zwei verschiedene LSD-Client Versionen).
Gleichzeitig braucht das LSD-Admin-Tool, mit dem man den Server verwalten
kann, 5 - 15 Sekunden um eine Verbindung mit dem Server herzustellen.
All diese Probleme sind schlagartig weg, wenn man das zweite Interface
aus den Bonding nimmt.
Auf Firewallseite sieht das so aus:
| auto bond0
| iface bond0 inet manual
| pre-up ifconfig bond0 up
| post-up ifenslave bond0 eth2 eth3
| pre-down ifenslave -d bond0 eth2 eth3
| post-down ifconfig bond0 down
|
| iface bond0.xxx
| [...]
Auf Ciscoseite sieht das so aus:
----- schnipp ------
| interface GigabitEthernet0/45
| description TR_Chan_fw2
| switchport access vlan 101
| switchport trunk encapsulation dot1q
| switchport trunk allowed vlan <liste>
| switchport mode trunk
| channel-group 1 mode on
| spanning-tree portfast
| end
| !
| interface GigabitEthernet0/46
| description TR_Chan_fw2
| switchport access vlan 101
| switchport trunk encapsulation dot1q
| switchport trunk allowed vlan <liste>
| switchport mode trunk
| channel-group 1 mode on
| spanning-tree portfast
| end
| !
| interface Port-channel1
| description Channel-fw2-int
| switchport access vlan 101
| switchport trunk encapsulation dot1q
| switchport trunk allowed vlan <liste>
| switchport mode trunk
| end
----- schnipp ------
| cat3560-d2#show etherchannel 1 detail
| Group state = L2
| Ports: 2 Maxports = 8
| Port-channels: 1 Max Port-channels = 1
| Protocol: -
| Ports in the group:
| -------------------
| Port: Gi0/45
| ------------
|
| Port state = Down Not-in-Bndl
| Channel group = 1 Mode = On/FEC Gcchange = -
| Port-channel = null GC = - Pseudo port-channel = Po1
| Port index = 0 Load = 0x00 Protocol = -
|
| Age of the port in the current state: 00d:21h:15m:13s
|
| Port: Gi0/46
| ------------
|
| Port state = Up Mstr In-Bndl
| Channel group = 1 Mode = On/FEC Gcchange = -
| Port-channel = Po1 GC = - Pseudo port-channel = Po1
| Port index = 0 Load = 0x00 Protocol = -
|
| Age of the port in the current state: 29d:17h:18m:57s
|
| Port-channels in the group:
| ---------------------------
|
| Port-channel: Po1
| ------------
|
| Age of the Port-channel = 29d:20h:50m:36s
| Logical slot/port = 10/1 Number of ports = 1
| GC = 0x00000000 HotStandBy port = null
| Port state = Port-channel Ag-Inuse
| Protocol = -
|
| Ports in the Port-channel:
|
| Index Load Port EC state No of bits
| ------+------+------+------------------+-----------
| 0 00 Gi0/46 On/FEC 0
|
| Time since last port bundled: 00d:21h:15m:13s Gi0/45
| Time since last port Un-bundled: 00d:21h:12m:56s Gi0/45
----- schnapp ------
Google hat mir einiges von zwei Channel Protokollen:
| cat3560-d2(config-if)#channel-protocol ?
| lacp Prepare interface for LACP protocol
| pagp Prepare interface for PAgP protocol
Ich habe einige Configbeispiele gesehen, dass die lacp aktivieren.
Mir hat sich leider noch nicht erschlossen, was die beiden Protokolle
bewirken und welches ich ggf. nutzen will.
Lange Rede kurzer Sinn:
Hat wer ne Idee, wie man das ganze Setup in einen deterministisch
funktionierenden Zustand bringt bzw. wo/warum es so nicht geht?
Ciao
Max
More information about the Linux
mailing list