Il software SDLMUX combina due adattatori di rete in un'unica interfaccia IP, fornendo una capacità di fail over se il collegamento sull'adattatore attivo si interrompe o l'adattatore si guasta. Una volta configurato non richiede praticamente nessuna amministrazione, ma ci sono alcune cose di cui si dovrebbe essere consapevoli.
In primo luogo, SDLMUX non fornisce alcun bilanciamento del carico; tutto il traffico viene trasmesso fuori e ricevuto sull'adattatore attivo.
In secondo luogo, sull'hardware della VSeries ftServer l'adattatore attivo ha un indirizzo MAC del modulo 00:00:A8:4v:wx:yz. La 00:00:A8 è l'identificatore univoco dell'organizzazione (OUI) di Stratus , assegnato dall'IEEE. La "v" è un indice basato sull'ordine in cui i dispositivi SDLMUX sono inizializzati, 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. Anche la differenza tra gli indirizzi MAC di due adattatori attivi (o standby) sullo stesso modulo sarà solo nel nibble inferiore del quarto byte. Il modo più semplice per ottenere una lista di tutti gli indirizzi MAC è con la richiesta analyze_system "dump_sdlmux" corrispondente su "MAC", vedi 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 = 0000A8635A8B as: |
Figura 1
I soli indirizzi MAC non sono di grande aiuto; facendo corrispondere su "MAC" o "#" si ottengono gli indirizzi MAC e i nomi dei dispositivi SDLMUX e delle schede di rete. Si noti che questo elenco non contiene adattatori di rete che non fanno parte di una partnership 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-3 as: |
Figura 2
In terzo luogo, gli adattatori di rete SDLMUX inviano ai loro partner i frame Ethernet 802.2 LLC per assicurare il corretto funzionamento del percorso di rete. Cinque serie di questi frame di prova si spengono a intervalli di tre secondi, seguiti da un intervallo di 33 secondi. La traccia 1 mostra tre cicli di questo schema. La traccia 1 mostra anche il frame effettivo dell'adattatore attivo (frame 1) e dell'adattatore di standby (frame 2). Ho evidenziato il fotogramma che segue l'intervallo di 33 secondi solo per facilitare la lettura dei cicli. Questi non sono frame di tipo Ethernet II o pacchetti IP e gli switch collegati alle schede di rete e gli eventuali 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 vedere questi frame di test. I frame vengono inviati sotto il punto in cui packet_monitor entra nello stack e SDLMUX rimuove i frame dallo stack prima che packet_monitor possa leggerli.
Quarto, se ogni adattatore è collegato ad un interruttore diverso e il collegamento tra questi interruttori fallisce o per qualche altro motivo i fotogrammi di prova non ottengono però si vedrà qualcosa che assomiglia alla figura 3 nel syserr_log. A partire dalla release 16.2.1ak e 17.0.0ah se c'è un errore del test frame SDLMUX attiva una richiesta ARP all'ultimo host che è stato ARP'ed eseguito con successo sull'interfaccia sospetta. Se ottiene una risposta sa 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 fotogrammi di prova, il reset dell'adattatore non aiuta e l'adattatore alla fine va in MTBF, vedere la marca temporale 08:08:10 in figura 3. Il comando dlmux_admin riporterà l'adattatore rotto come DOWN, figura 4, e una traccia non mostrerà alcun fotogramma di test poiché a questo punto non c'è nulla da testare. Se non si riceve una risposta ARP o il problema è su una release che non invia la richiesta ARP SDLMUX fallisce sugli adattatori e rompe il nuovo adattatore di standby. Se durante il ciclo successivo i fotogrammi di test falliscono di nuovo e non viene ricevuta alcuna risposta ARP, il fail over e il break saranno fatti di nuovo. Alla fine un adattatore andrà in MTBF.
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 |
Figura 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 |
Figura 4
Per rimettere in servizio l'adattatore è necessario aggiungerlo nuovamente con il comando board_admin. Naturalmente se lo si fa senza correggere il problema di fondo, l'adattatore tornerà semplicemente MTBF.
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. |
Figura 5
Quinto, poiché l'adattatore attivo ha sempre lo stesso indirizzo MAC, l'effetto di un fail over è quello di spostare l'indirizzo MAC da una porta di commutazione all'altra. Qualsiasi impostazione di sicurezza sulle porte dello switch deve consentire questa modifica. Anche le porte dello switch possono essere configurate per parlare con altre porte dello switch, negoziando varie impostazioni. Queste possono essere attivate quando lo switch nota un cambiamento nella topologia, come un nuovo indirizzo MAC o un collegamento in fase di ripristino. Fino a quando queste impostazioni non vengono negoziate, uno switch potrebbe non passare i fotogrammi 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 ad albero di spanning o da saltare le fasi di apprendimento e di ascolto (questo è chiamato portfast da Cisco). Durante le fasi di apprendimento e di ascolto lo switch non passerà i normali frame di dati. In casi estremi il ritardo causato da queste impostazioni può essere così lungo che SDLMUX fa scattare un altro fail over.
Infine, lo stato dei collegamenti degli adattatori deve essere monitorato per essere sicuri che entrambi i collegamenti siano attivi. Il guasto di un link non farà sì che il sistema chiami home e poiché il suo guasto è tollerante non c'è alcuna perdita di connettività del sistema ne ho parlato in un precedente post del blog, vedi Monitoraggio dello stato degli adattatori di rete.