李 潔,黃婷熙,潘濤濤
(武漢郵電科學(xué)研究院;武漢烽火網(wǎng)絡(luò)有限責(zé)任公司,湖北 武漢 430074)
現(xiàn)在的通信網(wǎng)絡(luò)中,對(duì)于大容量的機(jī)架式通信設(shè)備的業(yè)務(wù)可靠性、穩(wěn)定性有很高的要求,提高其設(shè)備運(yùn)行的穩(wěn)定性、可靠性,是機(jī)架式通信設(shè)備必須解決的重要課題。主備倒換技術(shù)是提高通信設(shè)備可運(yùn)維性的重要解決方案之一。本文提出一種私有的高可靠性通信設(shè)備主備倒換軟件實(shí)現(xiàn)方式,優(yōu)化了主備倒換流程,有效提高了主備倒換數(shù)據(jù)的準(zhǔn)確性,并縮短了主備倒換的時(shí)間。
新主備倒換的方式,從以下兩點(diǎn)進(jìn)行改進(jìn):1)改變了倒換的邏輯,將主備控制卡的數(shù)據(jù)同步過程修改為實(shí)時(shí)同步,使主備控制卡的狀態(tài)隨時(shí)保持一致;2)建立一條私有的二層協(xié)議管理通道,在用套接字保證主備數(shù)據(jù)傳遞準(zhǔn)確性的同時(shí),獨(dú)立的管理通道也保證了主備狀態(tài)倒換的準(zhǔn)確性和及時(shí)性。前者是邏輯的改進(jìn),后者是通信通道的改進(jìn)。
新的實(shí)現(xiàn)方式是將主備倒換過程中的主備數(shù)據(jù)同步和倒換的過程分離開來,在主備倒換時(shí)只需轉(zhuǎn)變主備控制卡的卡狀態(tài)即可。其實(shí)現(xiàn)前提是主備控制卡的數(shù)據(jù)和狀態(tài)是實(shí)時(shí)同步的。下面就介紹其軟件實(shí)現(xiàn)原理。
由協(xié)議HA的狀態(tài)機(jī)維護(hù)主、備控制卡狀態(tài),它們之間的通信不同于控制卡與其業(yè)務(wù)線卡之間的通信方式。HA協(xié)議提供兩條相互獨(dú)立的主備卡控制卡通道:一條為主備卡之間的數(shù)據(jù)傳輸通道,將TCP運(yùn)用在數(shù)據(jù)鏈路層,通過套接字傳送數(shù)據(jù);另一條為主備控制卡之間的HA控制信息傳送通道,建立在數(shù)據(jù)鏈路層上,運(yùn)用一種可靠的點(diǎn)到點(diǎn)的傳輸方法,可以提供QoS保障。如圖1所示。
圖1 HA通道設(shè)計(jì)
數(shù)據(jù)通道采用全雙工方式,采用類似TCP協(xié)議的TCP2來傳輸,擁有TCP通信的特有超時(shí)重傳和捎帶確認(rèn)機(jī)制,保證主備控制卡傳送數(shù)據(jù)的準(zhǔn)確性。IP2通信協(xié)議中地址分別使用主備雙方的帶外MAC地址取代IP地址,并通過三次握手的方式建立連接。
控制通道是由私有的可靠通信協(xié)議HA提供的。它是一條獨(dú)立的專門用來傳輸HA控制報(bào)文的通道。用來防止在數(shù)據(jù)傳輸過程中,系統(tǒng)正常的業(yè)務(wù)數(shù)據(jù)通信影響控制報(bào)文的通信,避免數(shù)據(jù)擁塞致使控制報(bào)文丟失或者延時(shí)后導(dǎo)致HA狀態(tài)機(jī)發(fā)生錯(cuò)誤,從而保證主備狀態(tài)準(zhǔn)確及時(shí)地切換。
基于HA狀態(tài)機(jī),主備數(shù)據(jù)同步分兩種情況,一種是實(shí)時(shí)同步,一種是批量同步。
1)數(shù)據(jù)的實(shí)時(shí)同步
主備數(shù)據(jù)的實(shí)時(shí)同步指的是線卡在業(yè)務(wù)進(jìn)行中,向主控制卡發(fā)送信息。主控制卡會(huì)及時(shí)使用套接字轉(zhuǎn)發(fā)數(shù)據(jù)到備用線卡。收到備控制卡回復(fù)后,確認(rèn)備控制線卡收到數(shù)據(jù),才會(huì)響應(yīng)業(yè)務(wù)線卡。而備用控制卡會(huì)和主控制進(jìn)行同樣的操作,只是這些操作并不下發(fā)給線卡。這樣可以有效地提高同步的效率,保證主備控制卡的數(shù)據(jù)和狀態(tài)的一致,做到真正的無縫倒換。
2)數(shù)據(jù)的批量同步
數(shù)據(jù)的批量同步發(fā)生在控制卡插入系統(tǒng)初期。主控制卡上的配置文件同步到備控制卡的過程,此時(shí)備控制卡只處理來自主控制卡的報(bào)文,其他的控制報(bào)文全部丟棄,并且從軟件上關(guān)閉了備控制卡向業(yè)務(wù)卡發(fā)送數(shù)據(jù)的通道。該過程數(shù)據(jù)同樣是使用套接字在主備控制線卡間的獨(dú)立通道上進(jìn)行傳輸,保證了數(shù)據(jù)的正確性。
本節(jié)從主備倒換條件、主備倒換流程、主備競(jìng)爭(zhēng)、異常倒換處理方式這4方面來論述。
沒有了數(shù)據(jù)同步,整個(gè)步驟的主備倒換過程簡(jiǎn)單了很多,只要滿足主備倒換的條件就可以進(jìn)行正常的倒換,觸發(fā)條件包括:1)后臺(tái)的命令發(fā)起的倒換;2)前臺(tái)按鍵倒換;3)網(wǎng)口故障觸發(fā)的倒換;4)插拔卡引發(fā)的倒換[1-3]。
經(jīng)過以上論述可知,在基于HA的倒換系統(tǒng)里,關(guān)鍵步驟——數(shù)據(jù)同步過程是在倒換步驟外進(jìn)行的,倒換的步驟僅剩下轉(zhuǎn)換主備控制卡標(biāo)識(shí)。
在系統(tǒng)啟動(dòng)初期,會(huì)創(chuàng)建一條控制卡之間消息交互的通道。在滿足倒換條件后,主控制卡會(huì)向備控制卡發(fā)起倒換消息,并會(huì)通知業(yè)務(wù)線卡和軟件層,且軟件層逐層向上層應(yīng)用發(fā)出倒換通知。最后主控制卡轉(zhuǎn)換自己的狀態(tài)到備控制卡,同時(shí)備控制卡轉(zhuǎn)換自己的狀態(tài)到主控制卡,并恢復(fù)正常工作。
協(xié)議規(guī)定,控制卡在系統(tǒng)的狀態(tài)有3種,分別為主控制卡狀態(tài)、備控制卡狀態(tài)和候選卡狀態(tài)。在控制卡插入系統(tǒng)的初期,都為候選卡狀態(tài),此狀態(tài)沒有控制系統(tǒng)的權(quán)限。并且協(xié)議規(guī)定系統(tǒng)正常狀態(tài)下的任何時(shí)刻只允許一個(gè)控制卡控制系統(tǒng),將這個(gè)卡稱為主控制卡,其余的控制卡稱為備份控制卡??刂瓶顟B(tài)轉(zhuǎn)移圖如圖2所示。
圖2 控制卡狀態(tài)轉(zhuǎn)移圖
當(dāng)一塊控制卡插入系統(tǒng)并啟動(dòng)后,狀態(tài)為候選卡。首先向控制通道廣播發(fā)送hello消息,通告自己的存在,如果系統(tǒng)中已經(jīng)存在主控制卡,那么將對(duì)這個(gè)卡發(fā)送hello reply,這塊新插入的控制卡收到該消息后就將自己設(shè)置為備份控制卡。
如果插入的控制卡發(fā)送3次hello消息后,沒有收到來自主控制卡的hello reply,也沒有收到主控制卡發(fā)送的周期性的hello消息,那么這塊控制卡就將自己的角色設(shè)置為主控制卡控制系統(tǒng),并周期性地在控制卡使用的控制通道上廣播hello消息。
如果系統(tǒng)上電時(shí)就具備兩塊控制卡,由于初始時(shí),兩塊控制卡都不是主控卡,通過發(fā)送hello包通信,知道了對(duì)方的存在。此時(shí)需要競(jìng)爭(zhēng)選舉出主控制卡,選舉原則是根據(jù)槽位大小,選槽位號(hào)小的控制卡為主控制卡,發(fā)送hello reply包,通知另一塊候選卡狀態(tài)改變?yōu)閭淇刂瓶?,然后在主控制卡上?zhí)行正常工作。此時(shí)備指控卡只處理來自主控制卡的報(bào)文,并且關(guān)閉備控制卡數(shù)據(jù)轉(zhuǎn)發(fā)的通道。
當(dāng)控制卡成為備份控制卡后,也需要周期地發(fā)送hello消息給主控制卡以通告自己的存在。主控制卡收到備份控制卡發(fā)送的hello消息,不需要回復(fù)hello reply。如果主控制卡在一定時(shí)間內(nèi)接收不到備份控制卡的hello消息,就認(rèn)為備份控制卡已經(jīng)工作不正?;蛘卟淮嬖凇?/p>
如果主控制卡出現(xiàn)故障而沒有周期性地發(fā)送hello消息,當(dāng)備份控制卡在設(shè)定時(shí)間內(nèi)沒有接收到主控制卡的hello消息時(shí),備份控制卡就將變?yōu)橹骺刂瓶?。這樣的協(xié)商方式,即使在控制卡之間通道故障時(shí),也不會(huì)出現(xiàn)雙備控制卡,系統(tǒng)無管理的現(xiàn)象[4]。
如果控制卡之間通道故障,出現(xiàn)雙主控現(xiàn)象。在通道恢復(fù)后,主控制卡收到hello消息時(shí),發(fā)現(xiàn)hello消息的角色也是主控制卡,就會(huì)進(jìn)行雙主控卡的選舉。若自己的槽位號(hào)比較小,那么發(fā)送hello reply包通知另一塊主控制卡狀態(tài)改變?yōu)閭淇刂瓶?,若自己的槽位?hào)比對(duì)方大,那么設(shè)置自己的角色為備份控制卡[3]。
實(shí)驗(yàn)方法:使用Testcenter向高端交換機(jī)上的兩張業(yè)務(wù)線卡發(fā)送固定流量的數(shù)據(jù)包,測(cè)試卡的吞吐量。測(cè)試開始后telent主控制卡,主備倒換,看測(cè)試結(jié)果是否產(chǎn)生丟包。
步驟1:Testcenter上4個(gè)端口連接高端交換機(jī)上的的兩張業(yè)務(wù)線卡以兩兩發(fā)包的模式進(jìn)行吞吐量的測(cè)試。配置如圖3~5所示。
圖3 拓?fù)鋱D
圖4 Testcenter配置1(截圖)
圖5 Testcenter配置2(截圖)
步驟2:telent到主控制卡,show主控狀態(tài)。
S4608#show ha statistic
Ha status:
Local ha:slot is 9,state is master
Peer ha:slot is 10,state is slave
步驟3:主備倒換。
S4608#rsp switch
WARNING:Are you sure to switch RSP!Continue?[y/n]
Switch RSP…
%Switch RSP Successfully.
S4608#
2100/01/01 06:26:37:Local status change:from 〈master〉 to 〈slave〉
2100/01/01 06:26:37:Peer status change:from 〈slave〉 to 〈master〉
S4608#show ha statistic
Ha status:
Local ha:slot is 9,state is slave
Peer ha:slot is 10,state is master
步驟4:測(cè)試停止后生成測(cè)試結(jié)果如圖6所示,查看是否有丟包。
圖6 Testcenter測(cè)試結(jié)果(截圖)
由實(shí)驗(yàn)結(jié)果可知,整個(gè)過程telent沒有斷開,并可以持續(xù)地下配置命令。查看測(cè)試結(jié)果可知并未丟包,且可以完全實(shí)現(xiàn)無縫倒換。
本文介紹的主備倒換方式相較于其他方式進(jìn)行了改進(jìn),避免了主備倒換過程數(shù)據(jù)同步所花費(fèi)的大量時(shí)間,確保了主備控制卡間數(shù)據(jù)的準(zhǔn)確性,做到了整個(gè)系統(tǒng)在倒換前后維護(hù)的數(shù)據(jù)和狀態(tài)一致,使得倒換這個(gè)復(fù)雜的過程高度簡(jiǎn)化,并且可靠性大大提高。
[1] 王繼剛,顧國(guó)昌,蘆東昕.高可靠性通信設(shè)備主備倒換軟件的設(shè)計(jì)[J].電信科學(xué),2003(11):19-22.
[2] 施世華,高西全,靳松杰,等.高可靠性通信設(shè)備的主備倒換設(shè)計(jì)[J].電子科技,2007(7):47-50.
[3] 胡天驕,郭旭靜,王祖林.網(wǎng)管軟件主備切換協(xié)議的設(shè)計(jì)和驗(yàn)證[J].電子質(zhì)量,2011(7):26-29.
[4] 何先波,李志蜀,唐寧九,等.面向通信領(lǐng)域的主備倒換與數(shù)據(jù)同步技術(shù)[J].計(jì)算機(jī)應(yīng)用,2005(10):2312-2314.