Zum Hauptinhalt springen
Die SDLMUX-Software kombiniert zwei Netzwerkadapter zu einer IP-Schnittstelle und bietet eine Ausfallsicherung für den Fall, dass die Verbindung des aktiven Adapters unterbrochen wird oder der Adapter ausfällt. Nach der Einrichtung ist praktisch keine Verwaltung mehr erforderlich, aber es gibt einige Dinge, die Sie beachten sollten.
Erstens bietet SDLMUX keine Lastverteilung; der gesamte Datenverkehr wird über den aktiven Adapter gesendet und empfangen.
Zweitens hat der aktive Adapter auf der ftServer eine MAC-Adresse in der Form 00:00:A8:4v:wx:yz. Die 00:00:A8 ist die von der IEEE zugewiesene Stratus eindeutige Kennung (OUI) Stratus . Das „v“ ist ein Index, der auf der Reihenfolge basiert, in der die SDLMUX-Geräte initialisiert wurden, beginnend bei 0. Der Wert „wx:yz“ basiert auf der Seriennummer des Systems. Die Standby-Adresse unterscheidet sich von der aktiven Adresse nur im oberen Nibble des vierten Bytes, anstelle einer 4 ist es eine 6. Auch der Unterschied zwischen den MAC-Adressen von zwei aktiven (oder Standby-)Adaptern auf demselben Modul besteht nur im unteren Nibble des vierten Bytes. Der einfachste Weg, eine Liste aller MAC-Adressen zu erhalten, ist die analyze_system-Anfrage „dump_sdlmux“ mit der Übereinstimmung „MAC“, siehe Abbildung 1.
as: match 'MAC' ; dump_sdlmux
MAC address               = 0000A8405A8B
MAC address               = 0000A8605A8B
MAC address               = 0000A8415A8B
MAC address               = 0000A8615A8B
MAC address               = 0000A8425A8B
MAC address               = 0000A8625A8B
MAC address               = 0000A8435A8B
MAC address               = 0000A8635A8B
as:
Abbildung 1
Die MAC-Adressen allein sind nicht sehr hilfreich. Durch Abgleichen mit „MAC“ oder „#“ erhalten Sie die MAC-Adressen und die Namen der SDLMUX- und Netzwerkadaptergeräte. Beachten Sie, dass diese Liste keine Netzwerkadapter enthält, die nicht Teil einer SDLMUX-Partnerschaft sind.
as: match 'MAC' -or '#' ; dump_sdlmux
sdlmux device             = #sdlmuxA.m16.10-5-0.11-5-0
MAC address               = 0000A8405A8B
Interface device = %phx_vos#enetA.m16.10-5-0
MAC address               = 0000A8605A8B

Interface device          = %phx_vos#enetA.m16.11-5-0

sdlmux device             = #sdlmuxA.m16.10-5-1.11-5-1
MAC address               = 0000A8415A8B
Interface device = %phx_vos#enetA.m16.10-5-1
MAC address               = 0000A8615A8B

Interface device          = %phx_vos#enetA.m16.11-5-1

 

sdlmux device             = #sdlmux.m16.11-2
MAC address               = 0000A8425A8B
Interface device = %phx_vos#enet.m16.11.11-2
MAC address               = 0000A8625A8B

Interface device          = %phx_vos#enet.m16.10.11-2

 

sdlmux device             = #sdlmux.m16.11-3
MAC address               = 0000A8435A8B
Interface device = %phx_vos#enet.m16.10.11-3
MAC address               = 0000A8635A8B
Interface device          = %phx_vos#enet.m16.11.11-3
as:
Abbildung 2
Drittens senden SDLMUX-Netzwerkadapter Ethernet-802.2-LLC-Frames an ihre Partner, um sicherzustellen, dass der Netzwerkpfad ordnungsgemäß funktioniert. Fünf Sätze dieser Testframes werden in Intervallen von drei Sekunden gesendet, gefolgt von einem Intervall von 33 Sekunden. Trace 1 zeigt drei Zyklen dieses Musters. Trace 1 zeigt auch den tatsächlichen Frame vom aktiven Adapter (Frame 1) und vom Standby-Adapter (Frame 2). Ich habe den Frame nach der 33-Sekunden-Pause hervorgehoben, um die Zyklen besser lesbar zu machen. Es handelt sich hierbei nicht um Ethernet-Typ-II-Frames oder IP-Pakete, und die mit den Netzwerkadaptern verbundenen Switches sowie alle Switches entlang des Pfads zwischen den beiden Adaptern müssen so konfiguriert sein, dass sie diese 802.2 LLC-Frames nicht blockieren.

 

No. delta Time       Source              Destination   Protocol Info
1 0.000000   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
0000 00 00 a8 62 5a 8b 00 00 a8 42 5a 8b 00 1b ac ac   ...bZ....BZ.....
0010 03 31 32 39 2e 31 2e 30 00 00 00 00 00 00 00 00   .129.1.0........
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0030 00 00 00 00 00 00 00 00 00 00 00 00 b1 60 74 48   .............`tH
2 0.000007   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
0000 00 00 a8 42 5a 8b 00 00 a8 62 5a 8b 00 1b ac ac   ...BZ....bZ.....
0010 03 31 32 39 2e 31 2e 30 00 00 00 00 00 00 00 00   .129.1.0........
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
0030 00 00 00 00 00 00 00 00 00 00 00 00 45 23 24 c0   ............E#$.
3 2.999945   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
4 0.000007   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
5 2.999943   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
6 0.000007   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
7 2.999882   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
8 0.000007   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
9 2.999946   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command

10 0.000009   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command

11 32.99900   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
12 0.000007   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
13 2.999945   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
14 0.000007   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
15 2.999938   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
16 0.000007   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
17 2.999942   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
18 0.000007   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
19 2.999943   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
20 0.000008   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
21 32.99900   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
22 0.000007   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
23 2.999944   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
24 0.000007   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
25 2.999947   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
26 0.000007   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
27 2.999938   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
28 0.000007   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
29 2.999946   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
30 0.000010   StratusC_62:5a:8b     StratusC_42:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
31 32.99900   StratusC_42:5a:8b     StratusC_62:5a:8b LLC   U, func=UI; DSAP 0xac Individual, SSAP 0xac Command
Spur 1
Beachten Sie, dass Sie packet_monitor nicht verwenden können, um diese Testframes anzuzeigen. Die Frames werden unterhalb des Punktes gesendet, an dem packet_monitor in den Stack eingreift, und SDLMUX entfernt die Frames aus dem Stack, bevor packet_monitor sie lesen kann.
Viertens: Wenn jeder Adapter mit einem anderen Switch verbunden ist und die Verbindung zwischen diesen Switches ausfällt oder die Testframes aus einem anderen Grund nicht durchkommen, sehen Sie im syserr_log etwas, das wie Abbildung 3 aussieht. Ab den Versionen 16.2.1ak und 17.0.0ah löst SDLMUX bei einem Testframe-Fehler eine ARP-Anfrage an den letzten Host aus, der erfolgreich über die verdächtige Schnittstelle ARP-vermittelt wurde. Wenn es eine Antwort erhält, weiß es, dass der aktive Adapter funktioniert, und setzt den Standby-Adapter zurück, um zu versuchen, ihn zum Laufen zu bringen. Wenn ein Netzwerkproblem die Testframes blockiert, hilft das Zurücksetzen des Adapters nicht und der Adapter geht schließlich in den MTBF-Modus über, siehe Zeitstempel 08:08:10 in Abbildung 3. Der Befehl dlmux_admin meldet den defekten Adapter als DOWN (Abbildung 4), und eine Ablaufverfolgung zeigt keine Testframes an, da zu diesem Zeitpunkt nichts zu testen ist. Wenn keine ARP-Antwort empfangen wird oder das Problem bei einer Version auftritt, die keine ARP-Anfrage sendet, führt SDLMUX ein Failover der Adapter durch und unterbricht den neuen Standby-Adapter. Wenn während des nächsten Zyklus die Testframes erneut fehlschlagen und keine ARP-Antwort empfangen wird, werden das Failover und die Unterbrechung erneut durchgeführt. Schließlich wird ein Adapter MTBF erreichen.
08:05:02 WARNING(64): SDLMUX: the devices in group #sdlmux.m16.11-2
08:05:02 WARNING(65): SDLMUX: are not exchanging test packets with each other
08:05:02 WARNING(66): SDLMUX: but the active adapter is able to communicate wi
+th other hosts!
08:05:02 WARNING(67): SDLMUX: This indicates some sort of network or cabling i
+ssue!
08:05:02 WARNING(68): SDLMUX: breaking adapter %phx_vos#enet.m16.10.11-2: XID
+communication issue
08:05:02 PCI 10/11/2           enet.m16.10.11-2 Break Requested
08:05:02 WARNING(69): SDLMUX: device name %phx_vos#enet.m16.10.11-2 is broken
08:05:02 PCI 10/11/2           enet.m16.10.11-2 Adding
08:05:04 PCI 10/11/2           enet.m16.10.11-2 Online
08:05:04 WARNING(70): genet in (10/11/2) Link is Up.
08:05:04 WARNING(71): SDLMUX: device %phx_vos#enet.m16.10.11-2 back to servic
+e
08:05:49 WARNING(72): SDLMUX: breaking adapter %phx_vos#enet.m16.10.11-2: XID
+communication issue
08:05:49 PCI 10/11/2           enet.m16.10.11-2 Break Requested
08:05:49 WARNING(73): SDLMUX: device name %phx_vos#enet.m16.10.11-2 is broken
08:05:49 PCI 10/11/2           enet.m16.10.11-2 Adding
08:05:52 PCI 10/11/2           enet.m16.10.11-2 Online
08:05:52 WARNING(74): genet in (10/11/2) Link is Up.
08:05:52 WARNING(75): SDLMUX: device %phx_vos#enet.m16.10.11-2 back to servic
+e
08:07:22 WARNING(76): SDLMUX: the devices in group #sdlmux.m16.11-2
08:07:22 WARNING(77): SDLMUX: are not exchanging test packets with each other
08:07:22 WARNING(78):  SDLMUX: but the active adapter is able to communicate wi
+th other hosts!
08:07:22 WARNING(79): SDLMUX: This indicates some sort of network or cabling i
+ssue!
08:07:22 WARNING(80): SDLMUX: breaking adapter %phx_vos#enet.m16.10.11-2: XID
+communication issue
08:07:22 PCI 10/11/2           enet.m16.10.11-2 Break Requested
08:07:22 WARNING(81): SDLMUX: device name %phx_vos#enet.m16.10.11-2 is broken
08:07:22 PCI 10/11/2           enet.m16.10.11-2 Adding
08:07:25 PCI 10/11/2           enet.m16.10.11-2 Online
08:07:25 WARNING(82): genet in (10/11/2) Link is Up.
08:07:25 WARNING(83): SDLMUX: device %phx_vos#enet.m16.10.11-2 back to servic
+e
08:08:10 WARNING(84): SDLMUX: breaking adapter %phx_vos#enet.m16.10.11-2: XID
+communication issue
08:08:10 PCI 10/11/2           enet.m16.10.11-2 Break Requested
08:08:10 PCI 10/11/2                             MTBF Failure
08:08:10 WARNING(85): SDLMUX: device name %phx_vos#enet.m16.10.11-2 is broken
Abbildung 3
dlmux_admin #sdlmux.m16.11-2 sdlmux_status
Group Name:          #sdlmux.m16.11-2
Device Name:         %phx_vos#enet.m16.11.11-2
Adapter State:       ACTIVE   UP
Partner:             %phx_vos#enet.m16.10.11-2
Partner State:       DOWN
Abbildung 4
Um den Adapter wieder in Betrieb zu nehmen, müssen Sie ihn mit dem Befehl board_admin erneut hinzufügen. Wenn Sie dies tun, ohne das zugrunde liegende Problem zu beheben, wird der Adapter natürlich erneut ausfallen.
board_admin 10/11/2 add
board_admin
device_id:    10/11/2
action:       add
Do you want to continue? (yes, no) yes
Command completed.
Abbildung 5
Fünftens: Da der aktive Adapter immer dieselbe MAC-Adresse hat, bewirkt ein Failover, dass die MAC-Adresse von einem Switch-Port zu einem anderen verschoben wird. Alle Sicherheitseinstellungen an den Switch-Ports müssen diese Änderung zulassen. Außerdem können Switch-Ports so konfiguriert werden, dass sie mit anderen Switch-Ports kommunizieren und verschiedene Einstellungen aushandeln. Diese können ausgelöst werden, wenn der Switch eine Änderung in der Topologie feststellt, z. B. eine neue MAC-Adresse oder die Wiederherstellung einer Verbindung. Bis diese Einstellungen ausgehandelt sind, darf ein Switch keine regulären Frames weiterleiten. Die mit den SDLMUX-Adaptern verbundenen Switch-Ports sollten so konfiguriert werden, dass sie diese Verhandlungen nicht durchführen. Darüber hinaus sollten die mit den SDLMUX-Adaptern verbundenen Switch-Ports so konfiguriert werden, dass sie das Spanning-Tree-Protokoll nicht ausführen oder die Lern- und Abhörschritte überspringen (dies wird von Cisco als „Portfast“ bezeichnet). Während der Lern- und Abhörschritte leitet der Switch keine regulären Datenframes weiter. In extremen Fällen kann die durch diese Einstellungen verursachte Verzögerung so lang sein, dass SDLMUX ein weiteres Failover auslöst.
Schließlich muss der Verbindungsstatus der Adapter überwacht werden, um sicherzustellen, dass beide Verbindungen aktiv sind. Der Ausfall einer Verbindung führt nicht dazu, dass das System einen Anruf home tätigt home da es fehlertolerant ist, kommt es zu keinem Verlust der Systemkonnektivität. Ich habe dies in einem früheren Blogbeitrag behandelt, siehe Überwachen des Netzwerkadapterstatus.