Il software SDLMUX combina due schede di rete in un'unica interfaccia IP, garantendo una funzionalità di failover nel caso in cui il collegamento sulla scheda attiva si interrompa o la scheda smetta di funzionare. Una volta configurato, non richiede praticamente alcuna gestione, ma è necessario tenere presente alcuni aspetti.
Innanzitutto, SDLMUX non offre alcuna funzione di bilanciamento del carico; tutto il traffico viene trasmesso e ricevuto dall'adattatore attivo.
In secondo luogo, sull'hardware ftServer , l'adattatore attivo ha un indirizzo MAC della forma 00:00:A8:4v:wx:yz. La sequenza 00:00:A8 è l'identificatore univoco Stratus (OUI) Stratus , assegnato dall'IEEE. La "v" è un indice basato sull'ordine in cui sono stati inizializzati i dispositivi SDLMUX, a partire da 0. Il valore "wx:yz" si basa sul numero di serie del sistema. L'indirizzo di standby differisce dall'indirizzo attivo solo nel nibble superiore del quarto byte: invece di un 4, è un 6. Inoltre, la differenza tra gli indirizzi MAC di due adattatori attivi (o in standby) sullo stesso modulo risiede solo nel nibble inferiore del quarto byte. Il modo più semplice per ottenere un elenco di tutti gli indirizzi MAC è utilizzare la richiesta analyze_system “dump_sdlmux” con filtro su “MAC”, come mostrato nella figura 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: |
Figura 1
I soli indirizzi MAC non sono molto utili; effettuando una ricerca per "MAC" o "#" si ottengono gli indirizzi MAC e i nomi dei dispositivi SDLMUX e delle schede di rete. Si noti che questo elenco non conterrà alcuna scheda di rete che non faccia parte di un gruppo 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: |
Figura 2
In terzo luogo, le schede di rete SDLMUX inviano frame Ethernet 802.2 LLC ai propri partner per assicurarsi che il percorso di rete funzioni correttamente. Cinque serie di questi frame di test vengono inviate a intervalli di tre secondi, seguite da un intervallo di 33 secondi. La traccia 1 mostra tre cicli di questo schema. La traccia 1 mostra anche il frame effettivo proveniente dalla scheda attiva (frame 1) e dalla scheda di riserva (frame 2). Ho evidenziato il frame successivo all'intervallo di 33 secondi solo per rendere i cicli più facili da leggere. Questi non sono frame Ethernet di tipo II o pacchetti IP e gli switch collegati alle schede di rete e qualsiasi switch lungo il percorso tra le due schede devono avere una configurazione che non blocchi questi frame 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 |
Traccia 1
Si noti che non è possibile utilizzare packet_monitor per visualizzare questi frame di test. I frame vengono inviati al di sotto del punto in cui packet_monitor si inserisce nello stack e SDLMUX li rimuove dallo stack prima che packet_monitor possa leggerli.
In quarto luogo, se ogni scheda è collegata a uno switch diverso e il collegamento tra tali switch si interrompe o, per qualche altro motivo, i frame di test non riescono a passare, nel syserr_log verrà visualizzato un messaggio simile a quello della figura 3. A partire dalle versioni 16.2.1ak e 17.0.0ah, in caso di errore di un frame di test, SDLMUX invia una richiesta ARP all'ultimo host che è stato raggiunto con successo tramite ARP sull'interfaccia sospetta. Se riceve una risposta, capisce che l'adattatore attivo funziona, quindi resetta l'adattatore di standby per cercare di farlo funzionare. Se c'è un problema di rete che blocca i frame di test, il ripristino dell'adattatore non serve e l'adattatore alla fine va in MTBF, vedi il timestamp 08:08:10 nella figura 3. Il comando dlmux_admin segnalerà l'adattatore guasto come DOWN, figura 4, e una traccia non mostrerà alcun frame di test poiché a questo punto non c'è nulla da testare. Se non viene ricevuta una risposta ARP o il problema si verifica su una versione che non invia la richiesta ARP, SDLMUX eseguirà il failover sugli adattatori e disattiverà il nuovo adattatore di standby. Se durante il ciclo successivo i frame di test falliscono nuovamente e non viene ricevuta alcuna risposta ARP, il failover e la disattivazione verranno eseguiti nuovamente. Alla fine un adattatore entrerà in 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 |
Figura 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 |
Figura 4
Per rimettere in servizio l'adattatore, è necessario aggiungerlo nuovamente tramite il comando board_admin. Ovviamente, se lo si fa senza risolvere il problema di fondo, l'adattatore smetterà di funzionare di nuovo.
board_admin 10/11/2 addboard_admin device_id: 10/11/2 action: addDo you want to continue? (yes, no) yesCommand completed. |
Figura 5
In quinto luogo, poiché l'adattatore attivo ha sempre lo stesso indirizzo MAC, l'effetto di un failover consiste nello spostare l'indirizzo MAC da una porta dello switch a un'altra. Qualsiasi impostazione di sicurezza sulle porte dello switch deve consentire questa modifica. Inoltre, le porte dello switch possono essere configurate per comunicare con altre porte dello switch, negoziando varie impostazioni. Queste operazioni possono essere attivate quando lo switch rileva un cambiamento nella topologia, come un nuovo indirizzo MAC o il ripristino di un collegamento. Finché queste impostazioni non vengono negoziate, lo switch potrebbe non trasmettere i frame regolari. Le porte dello switch collegate agli adattatori SDLMUX devono essere configurate in modo da non eseguire queste negoziazioni. Inoltre, le porte dello switch collegate agli adattatori SDLMUX devono essere configurate in modo da non eseguire il protocollo Spanning Tree o da saltare le fasi di apprendimento e ascolto (questo è chiamato "portfast" da Cisco). Durante le fasi di apprendimento e ascolto, lo switch non trasmetterà i normali frame di dati. In casi estremi, il ritardo causato da queste impostazioni può essere così lungo che SDLMUX attiva un altro failover.
Infine, è necessario monitorare lo stato delle connessioni delle schede di rete per assicurarsi che entrambe siano attive. Il malfunzionamento di una connessione non comporta l'invio di home , grazie alla tolleranza ai guasti del sistema, non si verifica alcuna perdita di connettività. Ho trattato questo argomento in un precedente post del blog; si veda "Monitoraggio dello stato delle schede di rete".
