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