劉新華(上海貝爾股份有限公司 WLPD,上海 201206)
重要的通信與控制設(shè)備,其穩(wěn)定性對(duì)于整個(gè)系統(tǒng)的穩(wěn)定與業(yè)務(wù)至關(guān)重要。因此,為了確保這些重要設(shè)備的穩(wěn)定運(yùn)行,通常在其內(nèi)部使用了備份和冗余網(wǎng)絡(luò)。當(dāng)內(nèi)部網(wǎng)絡(luò)的一部分出現(xiàn)故障時(shí),要求系統(tǒng)能迅速診斷并快速切換到備份和冗余的網(wǎng)絡(luò),從而降低故障對(duì)系統(tǒng)的影響,保證系統(tǒng)的穩(wěn)定運(yùn)行。
在備份和冗余網(wǎng)絡(luò)中,通常采用的冗余方式是冗余鏈路 + 生成樹協(xié)議(如STP/RSTP)。在這種方式下,網(wǎng)絡(luò)出現(xiàn)故障時(shí)的冗余切換速度取決于所使用的生成樹協(xié)議的收斂時(shí)間,在實(shí)時(shí)性要求很高的情況下會(huì)使其應(yīng)用受到一定的限制,同時(shí),這種方式配置比較復(fù)雜,而且對(duì)交換機(jī)需要支持的協(xié)議也提出了要求。
本文針對(duì)一種平面獨(dú)立的內(nèi)部雙交換機(jī)冗余網(wǎng)絡(luò),設(shè)計(jì)了一種實(shí)用的不依賴生成樹協(xié)議(如STP/RSTP)的快速智能冗余切換的方法,網(wǎng)絡(luò)出現(xiàn)故障時(shí),與“冗余鏈路 + 生成樹協(xié)議(如STP/RSTP)”方法相比,冗余切換速度明顯提升,實(shí)驗(yàn)室及現(xiàn)場(chǎng)應(yīng)用驗(yàn)證了該方法的有效性。
圖1是某一核心通信設(shè)備內(nèi)部的雙交換機(jī)冗余網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。如圖1所示,設(shè)備中有多個(gè)控制單元(Control Element,CE),每一個(gè)控制單位都相當(dāng)于一臺(tái)電腦,通過(guò)eth0和eth1分別連接到兩個(gè)交換機(jī)SWITCH-A和SWITCH-B,組成了兩個(gè)互為備份的網(wǎng)絡(luò)交換平面。由于SWITCH-A和SWITCH-B之間沒(méi)有網(wǎng)絡(luò)連接,因此,這兩個(gè)交換機(jī)雖互為備份但彼此獨(dú)立,避免了對(duì)生產(chǎn)樹協(xié)議的要求。通過(guò)在各個(gè)CE上添加不同的網(wǎng)絡(luò)路由(route),可以實(shí)現(xiàn)在兩個(gè)交換平面之間靈活切換。
圖1 某一核心通信設(shè)備內(nèi)部的雙交換機(jī)冗余網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)
由于是在設(shè)備內(nèi)部,每個(gè)交換機(jī)端口所對(duì)應(yīng)CE的內(nèi)部ip和內(nèi)部mac地址都可以預(yù)先定義,如表1所示。
表1 CEi的網(wǎng)絡(luò)端口、IP、Mac-address對(duì)照表(假設(shè))CEi
默認(rèn)情況下,每個(gè)CE都通過(guò)SWITCH-A相互聯(lián)系,或通過(guò)SWITCH-A和CEn與外部網(wǎng)絡(luò)聯(lián)系。默認(rèn)路由(route)如表2、表3所示。
表2 CEi(i≠n)的默認(rèn)路由表CEi(i≠n)
表3 CEn的默認(rèn)路由表CEn
當(dāng)某個(gè)CE的網(wǎng)絡(luò)接口(eth0或eth1),或者某個(gè)SWITCH(SWITCH-A或SWITCH-B)出現(xiàn)故障時(shí),可以通過(guò)更新每個(gè)CE的內(nèi)部路由(route),切換到冗余一側(cè)的交換機(jī)上,使系統(tǒng)的網(wǎng)絡(luò)保持暢通。
(1)交換機(jī)的某個(gè)端口故障
(假設(shè))CEi的eth0對(duì)應(yīng)的交換機(jī)端口出現(xiàn)故障,如圖2所示:
圖2 CEi 的eth0出現(xiàn)故障示意圖
為保持網(wǎng)絡(luò)暢通,需要使CEi上針對(duì)eth0的路由(route)全部切換到另一側(cè)的交換機(jī)上;同時(shí),還需要使其它CE通過(guò)eth0到CEi的路由(route)切換到另一側(cè)的交換機(jī)上。
對(duì)應(yīng)的路由(route)更新如下:
(a)CEi
(b)CEj(j≠i)
如果CEi的eth1對(duì)應(yīng)的交換機(jī)端口出現(xiàn)故障,每個(gè)CE的route也要做類似的切換更新。
(2)整個(gè)交換機(jī)故障
如果某個(gè)交換機(jī)出現(xiàn)故障,為保持網(wǎng)絡(luò)暢通,需要使每個(gè)CE針對(duì)該交換機(jī)的路由全部切換到另一側(cè)的交換機(jī)上。
假設(shè)SWITCH-A出現(xiàn)故障,為保持網(wǎng)絡(luò)暢通,需要使每個(gè)CE上針對(duì)eth0的路由(route)全部切換到eth1上。對(duì)應(yīng)的路由(route)更新如下:
如果SWITCH-B出現(xiàn)故障,每個(gè)CE的route也要做類似的切換更新。
對(duì)于交換機(jī)端口或者整個(gè)交換機(jī)的故障,都表現(xiàn)為某些CE(一個(gè)或多個(gè)CE)的網(wǎng)絡(luò)端口出現(xiàn)故障,因此,都可以通過(guò)檢查各個(gè)CE的網(wǎng)絡(luò)端口狀態(tài)檢查出來(lái)。
圖3 CEi的檢測(cè)點(diǎn)示意圖
如圖3所示,設(shè)備中的每一個(gè)CE(CEi)針對(duì)其對(duì)應(yīng)的網(wǎng)絡(luò)端口(eth0或eth1),都任意選擇其它3個(gè)CE(CEi1,CEi2,CEi3)作為檢測(cè)點(diǎn)。在針對(duì)網(wǎng)絡(luò)端口的每一個(gè)檢測(cè)周期中,CEi依次向每個(gè)檢測(cè)點(diǎn)直接發(fā)送以太網(wǎng)mac包(check包);收到check包的CE將向發(fā)送方回復(fù)確認(rèn)ack包。
如圖4所示:
① CEi向第一個(gè)檢測(cè)點(diǎn)CEi1發(fā)check包;
② 等待CEi1的ack包,如果收到,說(shuō)明端口正常,結(jié)束本次檢測(cè);
③ 等待超時(shí),CEi向第二個(gè)檢測(cè)點(diǎn)CEi2發(fā)check包;
④ 等待CEi2的ack包,如果收到,說(shuō)明端口正常,結(jié)束本次檢測(cè);
⑤ 等待超時(shí),CEi向第二個(gè)檢測(cè)點(diǎn)CEi3發(fā)check包;
⑥ 等待CEi3的ack包,如果收到,說(shuō)明端口正常,結(jié)束本次檢測(cè);
⑦ 等待超時(shí),CEi向該端口(eth0或eth1)廣播一個(gè)check包,其它CE收到之后都會(huì)向CEi發(fā)ack包;
⑧ 等待可能的ack包,如果收到,說(shuō)明端口正常,用新收到的ip/mac地址更新檢測(cè)點(diǎn)(CEi1,CEi2,CEi3),結(jié)束本次檢測(cè);
⑨ 等待超時(shí),CEi的該端口上不能收到任何ack包,則檢查另一側(cè)端口的狀態(tài):如果另一側(cè)端口異常,說(shuō)明CEi在兩側(cè)都不能收到任何ack包,判斷CEi處于孤立運(yùn)行狀態(tài),因此不需要做route更新;如果另一側(cè)端口正常,判斷本側(cè)端口故障,觸發(fā)每一個(gè)CE上的route更新。
圖4 網(wǎng)絡(luò)端口檢測(cè)步驟示意圖
圖5 網(wǎng)絡(luò)端口的檢測(cè)周期與檢測(cè)步驟示意圖(示例)
采用圖5所示的檢測(cè)步驟與檢測(cè)周期(示例),網(wǎng)絡(luò)端口狀態(tài)的最長(zhǎng)檢測(cè)周期為 T = 4×t1+t2。當(dāng)網(wǎng)絡(luò)端口故障時(shí),最長(zhǎng)在時(shí)間T內(nèi)可以檢出網(wǎng)絡(luò)故障。
選擇合適的t1和t2,能使系統(tǒng)在盡可能短的時(shí)間內(nèi)檢測(cè)出交換機(jī)網(wǎng)絡(luò)故障,并做出相應(yīng)的保護(hù)性冗余切換。
當(dāng)t1= 20ms,t2= 100ms時(shí),T = 4×t1+t2= 180ms;
當(dāng)t1= 10ms,t2= 50ms時(shí),T = 4×t1+t2= 90ms。
在每一個(gè)檢測(cè)周期中,
當(dāng)所有網(wǎng)絡(luò)端口正常時(shí),每一個(gè)CE會(huì)收發(fā)2個(gè)mac包(1個(gè)check包,1個(gè)ack包),一共是 2n個(gè)mac包;
當(dāng)某個(gè)網(wǎng)絡(luò)端口異常時(shí),該端口對(duì)應(yīng)的CE最多收發(fā)不超過(guò)n個(gè)包(4個(gè)check包,最多n-4個(gè)ack包),其它CE每一個(gè)最多收發(fā)不超過(guò)3個(gè)包(2個(gè)check包,1個(gè)ack包),一共最大不超過(guò) 4n 個(gè)包;
當(dāng)某個(gè)交換機(jī)故障時(shí),每一個(gè)CE會(huì)收發(fā)4個(gè)包(4個(gè)check包,0個(gè)ack包),由于該交換機(jī)已經(jīng)不能轉(zhuǎn)發(fā)包,因此沒(méi)有真正增加網(wǎng)絡(luò)的負(fù)荷。
當(dāng) 時(shí),由網(wǎng)絡(luò)檢測(cè)引入的mac包的數(shù)量是非常小的。
該策略針對(duì)設(shè)備內(nèi)部的平面獨(dú)立的雙交換機(jī)冗余網(wǎng)絡(luò),可以檢測(cè)每一個(gè)網(wǎng)絡(luò)端口的狀態(tài),在網(wǎng)絡(luò)出現(xiàn)故障的時(shí)候能迅速檢測(cè)出來(lái)并自動(dòng)作冗余切換,而且對(duì)交換機(jī)所支持的協(xié)議沒(méi)有特殊的要求,對(duì)設(shè)備內(nèi)部每個(gè)CE所支持的協(xié)議也沒(méi)有特殊的要求,因而適應(yīng)性較強(qiáng)。通過(guò)選擇合適的檢測(cè)周期,可以使冗余切換時(shí)間限制在100ms~200ms以下,甚至更短。與“冗余鏈路 + 生成樹協(xié)議(如STP/RSTP)”的冗余方式相比,該策略的冗余切換速度更快,而且不需要對(duì)交換機(jī)做額外的配置。
在某一款電信核心設(shè)備中采用了該策略后,經(jīng)過(guò)實(shí)驗(yàn)室和現(xiàn)場(chǎng)的雙重驗(yàn)證,當(dāng)內(nèi)部網(wǎng)絡(luò)出現(xiàn)故障時(shí),實(shí)際冗余切換時(shí)間小于100ms,有效保障了系統(tǒng)的穩(wěn)定性。
本文針對(duì)“冗余鏈路 + 生成樹協(xié)議”的網(wǎng)絡(luò)冗余方式中冗余切換速度依賴所使用的生成樹協(xié)議的收斂時(shí)間、造成實(shí)時(shí)性不高,而且配置復(fù)雜的問(wèn)題,設(shè)計(jì)了不依賴生成樹協(xié)議(如STP/RSTP)的快速智能冗余切換的方法,提升了冗余切換速度,同時(shí)簡(jiǎn)化了網(wǎng)絡(luò)配置。
[1] IEEE 802.1D – Media Access Control(MAC)Bridges, IEEE, 2004.
[2] 付志兵. 通信系統(tǒng)冗余設(shè)計(jì)[J]. 計(jì)算機(jī)與網(wǎng)絡(luò), 2009(08) .
[3] 王隆杰. 虛擬網(wǎng)絡(luò)交換機(jī)技術(shù)[J]. 通信技術(shù), 2009(04).
[4] 劉立. 交換機(jī)鏈路聚合的理論與實(shí)驗(yàn)研究[J]. 信息安全與技術(shù), 2010(09).
[5] 黃文君, 謝東凱, 盧山. 一種高可用性的冗余工業(yè)實(shí)時(shí)以太網(wǎng)設(shè)計(jì)[J]. 儀器儀表學(xué)報(bào), 2010, 31(3).
[6] 李志潔, 姜楠, 王存睿, 劉向東. 生成樹協(xié)議分析及其實(shí)驗(yàn)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 實(shí)驗(yàn)科學(xué)與技術(shù), 2010, 8(2).