SDLMUX软件将两个网络适配器整合为单一IP接口,当活动适配器的链路中断或适配器故障时,可提供故障转移功能。配置完成后几乎无需管理,但仍有几点需注意:
首先,SDLMUX不提供任何负载均衡功能;所有流量均通过活动适配器发送和接收。
其次,ftServer 上,活动适配器的MAC地址格式为00:00:A8:4v:wx:yz。其中00:00:Stratus 唯一标识符(OUI),由IEEE分配。 其中"v"为基于SDLMUX设备初始化顺序的索引值(从0开始计数),"wx:yz"则取自系统序列号。"备用适配器地址"与"活动适配器地址"的区别仅在于第四字节的高半字节:备用地址的该字节为6,而活动地址为4。 此外,同一模块上两个活动(或备用)适配器的MAC地址差异仅存在于第四字节的低半字节。获取所有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帧,以确保网络路径正常运行。每三秒发送五组测试帧,随后间隔33秒。跟踪记录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 从栈中截取数据之前发送的,且在 packet_monitor 读取之前,SDLMUX 已经将这些帧从栈中移除了。
第四,若每个适配器连接到不同的交换机,且这些交换机之间的链路发生故障,或因其他原因导致测试帧无法通过,您将在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再次触发故障转移。
最后,需要监控适配器的链路状态以确保两条链路均处于活动状态。链路故障不会导致系统呼叫主机,且由于其具备容错能力,系统连接性不会中断——我在之前的博文中已对此进行过说明,详见《监控网络适配器状态》。
