SDLMUXソフトウェアは、2つのネットワークアダプタを1つのIPインターフェースに統合し、アクティブアダプタのリンクがダウンした場合やアダプタ自体が故障した場合にフェイルオーバー機能を提供します。設定後は実質的に管理が不要ですが、留意すべき点がいくつかあります。
まず、SDLMUXはロードバランシングを提供しません。すべてのトラフィックはアクティブアダプタから送信され、アクティブアダプタで受信されます。
第二に、ftServer ハードウェアにおいて、アクティブアダプタのMACアドレスは00:00:A8:4v:wx:yzの形式です。00:00:A8はIEEEによって割り当てられたStratusの組織固有識別子(OUI)です。 「v」はSDLMUXデバイスが初期化された順序に基づくインデックスで、0から始まります。「wx:yz」の値はシステムのシリアル番号に基づいています。スタンバイアドレスはアクティブアドレスと異なり、第4バイトの上位ニブルのみが4ではなく6となります。 また、同一モジュール上の2つのアクティブ(またはスタンバイ)アダプタのMACアドレスの差異は、第4バイトの下位ニブルのみに存在します。全MACアドレスのリストを取得する最も簡単な方法は、analyze_systemリクエスト「dump_sdlmux」で「MAC」をマッチさせることです(図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 = 0000A8635A8Bas: |
図1
MACアドレスだけではあまり役に立ちません。「MAC」または「#」で一致させると、MACアドレスとSDLMUX、ネットワークアダプタのデバイス名を取得できます。このリストには、SDLMUXパートナーシップの一部ではないネットワークアダプタは含まれないことに注意してください。
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
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
sdlmux device = #sdlmux.m16.11-2 MAC address = 0000A8425A8B Interface device = %phx_vos#enet.m16.11.11-2 MAC address = 0000A8625A8B
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-3as: |
図2
第三に、SDLMUXネットワークアダプタは、ネットワーク経路が正常に機能していることを確認するため、パートナーに対してイーサネット802.2 LLCフレームを送信します。これらのテストフレームは5セットが3秒間隔で送信され、その後33秒の間隔が設けられます。トレース1はこのパターンの3サイクルを示しています。トレース1には、アクティブアダプタからの実際のフレーム(フレーム1)とスタンバイアダプタからのフレーム(フレーム2)も表示されています。 33秒間隔の直後のフレームを強調表示したのは、サイクルの判読を容易にするためです。これらはイーサネットタイプIIフレームやIPパケットではなく、ネットワークアダプタに接続されたスイッチおよび両アダプタ間の経路上のスイッチは、これらの802.2 LLCフレームをブロックしない設定である必要があります。
|
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
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 |
トレース1
注意:これらのテストフレームは packet_monitor では確認できません。フレームは packet_monitor がスタックをタップするポイントより下流で送信され、SDLMUX が packet_monitor が読み取る前にスタックからフレームを削除します。
第四に、各アダプタが異なるスイッチに接続されており、それらのスイッチ間のリンクが故障した場合、またはその他の理由でテストフレームが通過しない場合、syserr_logに図3のような出力が記録されます。 リリース16.2.1akおよび17.0.0ah以降では、テストフレームの失敗が発生した場合、SDLMUXは問題のあるインターフェース経由で最後に正常にARP応答を得たホストに対してARPリクエストをトリガーします。応答が得られれば、アクティブアダプタが動作中であることを認識し、スタンバイアダプタをリセットして動作を回復させようと試みます。 テストフレームをブロックするネットワーク障害が存在する場合、アダプタのリセットは無効であり、アダプタは最終的にMTBF状態になります(図3のタイムスタンプ08:08:10参照)。dlmux_adminコマンドは故障したアダプタをDOWN状態として報告し(図4)、トレースにはテスト対象が存在しないためテストフレームが記録されません。 ARP応答を受信できない場合、またはARP要求を送信しないリリースで問題が発生した場合、SDLMUXはアダプタのフェイルオーバーを実行し、新しいスタンバイアダプタを故障状態とします。次のサイクルでテストフレームが再び失敗しARP応答を受信できない場合、フェイルオーバーと故障状態化が再度行われます。最終的にいずれかのアダプタがMTBF状態になります。
08:05:02 WARNING(64): SDLMUX: the devices in group #sdlmux.m16.11-208:05:02 WARNING(65): SDLMUX: are not exchanging test packets with each other08: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 issue08:05:02 PCI 10/11/2 enet.m16.10.11-2 Break Requested08:05:02 WARNING(69): SDLMUX: device name %phx_vos#enet.m16.10.11-2 is broken08:05:02 PCI 10/11/2 enet.m16.10.11-2 Adding08:05:04 PCI 10/11/2 enet.m16.10.11-2 Online08: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+e08:05:49 WARNING(72): SDLMUX: breaking adapter %phx_vos#enet.m16.10.11-2: XID+communication issue08:05:49 PCI 10/11/2 enet.m16.10.11-2 Break Requested08:05:49 WARNING(73): SDLMUX: device name %phx_vos#enet.m16.10.11-2 is broken08:05:49 PCI 10/11/2 enet.m16.10.11-2 Adding08:05:52 PCI 10/11/2 enet.m16.10.11-2 Online08: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+e08:07:22 WARNING(76): SDLMUX: the devices in group #sdlmux.m16.11-208:07:22 WARNING(77): SDLMUX: are not exchanging test packets with each other08: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 issue08:07:22 PCI 10/11/2 enet.m16.10.11-2 Break Requested08:07:22 WARNING(81): SDLMUX: device name %phx_vos#enet.m16.10.11-2 is broken08:07:22 PCI 10/11/2 enet.m16.10.11-2 Adding08:07:25 PCI 10/11/2 enet.m16.10.11-2 Online08: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+e08:08:10 WARNING(84): SDLMUX: breaking adapter %phx_vos#enet.m16.10.11-2: XID+communication issue08:08:10 PCI 10/11/2 enet.m16.10.11-2 Break Requested08:08:10 PCI 10/11/2 MTBF Failure08:08:10 WARNING(85): SDLMUX: device name %phx_vos#enet.m16.10.11-2 is broken |
図3
dlmux_admin #sdlmux.m16.11-2 sdlmux_statusGroup Name: #sdlmux.m16.11-2Device Name: %phx_vos#enet.m16.11.11-2Adapter State: ACTIVE UPPartner: %phx_vos#enet.m16.10.11-2Partner State: DOWN |
図4
アダプタを再稼働させるには、board_adminコマンドで再度追加する必要があります。もちろん、根本的な問題を修正せずにこれを行うと、アダプタは再びMTBF(平均故障間隔)に達するだけです。
board_admin 10/11/2 addboard_admin device_id: 10/11/2 action: addDo you want to continue? (yes, no) yesCommand completed. |
図5
第五に、アクティブアダプタは常に同一のMACアドレスを持つため、フェイルオーバーの効果はMACアドレスをあるスイッチポートから別のポートへ移動させることにあります。スイッチポート上のセキュリティ設定は、この変更を許可する必要があります。またスイッチポートは、他のスイッチポートと通信し様々な設定をネゴシエーションするよう設定可能です。これらは、新しいMACアドレスやリンクの復旧など、スイッチがトポロジの変化を検知した際にトリガーされます。これらの設定がネゴシエーションされるまで、スイッチは通常のフレームを通過させない場合があります。 SDLMUXアダプタに接続されたスイッチポートは、これらのネゴシエーションを実行しないよう設定すべきである。さらに、SDLMUXアダプタに接続されたスイッチポートは、スパニングツリープロトコルを実行しないか、学習およびリスニングステップをスキップするよう設定すべきである(Ciscoではポートファストと呼ばれる)。学習およびリスニングステップ中は、スイッチは通常のデータフレームを通過させない。極端な場合、これらの設定による遅延が非常に長くなり、SDLMUXが別のフェイルオーバーをトリガーする可能性がある。
最後に、アダプタのリンク状態を監視し、両方のリンクが稼働していることを確認する必要があります。リンクの障害が発生してもシステムはホームコールを行わず、耐障害性があるためシステム接続性が失われることはありません。これについては以前のブログ記事「ネットワークアダプタの状態監視」で取り上げています。
