Portchannels mit ASA
Die ASAs von Cisco können ja Portchannels, d.h. mehrere Leitungen zu Einer bündeln. Außerdem können Sie Failover, ein Gerät kann für ein anderes einspringen. Beides zusammen ist allerdings trickreich, da es im ungünstigen Fall zu Verbindungsabbrüchen führt.
Aufbau
Zwei ASAs im Active/Standby-Failover sind an getrennte Switche angeschlossen. Zur Erhöhung der Bandbreite wird ein Interface als LACP-Bündel zum übergeben. Ist die primäre ASA aktiv, funktioniert es prächtig.
asa# sh port-channel summary Group Port-channel Protocol Span-cluster Ports ------+-------------+---------+------------+------------------------------------ 1 Po1(U) LACP No Gi0/0(P) Gi0/1(P) asa# failover exec mate show port-channel summary Group Port-channel Protocol Span-cluster Ports ------+-------------+---------+------------+------------------------------------ 1 Po1(U) LACP No Gi0/0(P) Gi0/1(P)
Die Interfaces haben folgende Eigenschaften:
asa# sh interface | in Interface|MAC Interface GigabitEthernet0/0 "", is up, line protocol is up MAC address 00.01.01, MTU 1500 Interface GigabitEthernet0/1 "", is up, line protocol is up MAC address 00.01.02, MTU 1500 Interface Port-channel1 "outside", is up, line protocol is up MAC address 00.01.01, MTU 1500
und
asa# fail exec mate sh interface | in Interface|MAC Interface GigabitEthernet0/0 "", is up, line protocol is up MAC address 00.02.01, MTU 1500 Interface GigabitEthernet0/1 "", is up, line protocol is up MAC address 00.02.02, MTU 1500 Interface Port-channel1 "outside", is up, line protocol is up MAC address 00.02.01, MTU 1500
Wie man sieht übernimmt der Port-Channel die MAC Adresse des ersten Interfaces. Soweit so dokumentiert.
Wie man sieht, tauchen die beiden MAC Adressen der Interfaces am jeweiligen Switch auf. Die ASA antwortet im ARP mit der MAC Adresse des Port-Channels und alles ist gut.
Failover
Bei Umbauten kam es vor, dass die ASAs umschalteten. Das ist beabsichtigt und stellt kein Problem dar.
Die aktive ASA ist einfach das andere Gerät, der Status incl. der IPs und MAC Adressen wechselt zwischen den beiden ASAs und es funktioniert.
Man sieht sehr schön, wie die Haupt-MAC des Portchannel wechselt und nun zur aktiven ASA zeigt.
Ein Blick in die ASA selbst bestätigt den Wechsel:
asa# sh interface | in Interface|MAC Interface GigabitEthernet0/0 "", is up, line protocol is up MAC address 00.02.01, MTU 1500 Interface GigabitEthernet0/1 "", is up, line protocol is up MAC address 00.02.02, MTU 1500 Interface Port-channel1 "outside", is up, line protocol is up MAC address 00.01.01, MTU 1500
und
asa# fail exec mate sh interface | in Interface|MAC Interface GigabitEthernet0/0 "", is up, line protocol is up MAC address 00.02.01, MTU 1500 Interface GigabitEthernet0/1 "", is up, line protocol is up MAC address 00.02.02, MTU 1500 Interface Port-channel1 "outside", is up, line protocol is up MAC address 00.01.01, MTU 1500
Achtung! Da die Funktion der ASAs gewechselt hat ist jetzt die aktive ASA auf der Hardware des zweiten Geräts. Deswegen haben sich die Hardware-MAC der Interfaces nicht verschoben, wohl aber die Funktion (mate ist jetzt das, was vorher aktiv war).
Probleme
Denkt man genauer über das nach, was da zu sehen ist, bleiben Fragen:
- Warum wechseln die MAC Adressen der realen Interfaces nicht? Die MACs aller anderen Interfaces wechseln nämlich.
- Warum erscheinen die MAC Adressen der Interfaces beim Switch? Eigentlich sollte doch nur die MAC des Port-Channels auftauchen.
Tatsächlich gibt es zeitweise Ausfälle, bei denen keine Außenkommunikation mehr möglich ist. Und da sieht es real so aus:
Die MAC Adresse des aktiven Port-Channels zeigt wieder auf die alte ASA, die aktuell passiv ist. Und die verwirft natürlich alle Pakete.
Wenn kurze Zeit später die aktive ASA ein Paket aussendet, lernen die Switche wieder um und es funktioniert wieder alles. Bis zum nächsten Vorfall.
Lösung
Ganz offensichtlich sendet eine ASA neben dem Port-Channel auch Daten über die Interfaces selbst aus. Und dabei benutzt sie die nicht wechselnden MAC-Adressen der Interfaces!
Man kann darüber diskutieren, ob es sich um einen Bug handelt. Man kann auch anfangen zu untersuchen, welche Art von Paketen die ASA auf den individuellen Ports eines LACP-Bundles aussendet. Das ist alles spannend, aber nicht zielführend.
Man muss die MAC des Port-Channels von der MAC der Interfaces trennen, und das geht!
asa(conf)# int Po1 asa(config-if)# mac-address 00.01.00 standby 00.02.00
Und das schaut dann so aus:
Cool nicht?!
Die neue MAC taucht separat von den Interface-MACs auf und damit sollte ein Umschalten auch klappen:
Tatsächlich springt nur die virtuelle, manuell gesetzte MAC des Port-Channels um.
Und die Probleme sind weg.
Total 2 comments