袁鳴驍,戴錦友
(1.光纖通信技術(shù)和網(wǎng)絡(luò)國家重點(diǎn)實(shí)驗(yàn)室,湖北武漢430074;2.武漢烽火網(wǎng)絡(luò)有限責(zé)任公司,湖北武漢430074)
虛擬化堆疊系統(tǒng)實(shí)時(shí)數(shù)據(jù)同步實(shí)現(xiàn)方法
袁鳴驍1,2,戴錦友1,2
(1.光纖通信技術(shù)和網(wǎng)絡(luò)國家重點(diǎn)實(shí)驗(yàn)室,湖北武漢430074;2.武漢烽火網(wǎng)絡(luò)有限責(zé)任公司,湖北武漢430074)
堆疊是一種將多臺(tái)設(shè)備虛擬成一臺(tái)設(shè)備來管理和使用的技術(shù),它能夠簡化交換機(jī)管理,提高其可用性和性能。在堆疊技術(shù)的實(shí)現(xiàn)過程中,堆疊各成員在實(shí)時(shí)運(yùn)行過程中動(dòng)態(tài)表項(xiàng)、協(xié)議狀態(tài)、實(shí)時(shí)配置、鏈路變化等事件的同步是一個(gè)亟待解決的問題。提出了一種在堆疊成員間建立同步通道來實(shí)現(xiàn)實(shí)時(shí)信息同步,從而解決了上述問題。
堆疊;虛擬化;網(wǎng)絡(luò)設(shè)備;數(shù)據(jù)同步
固定端口交換機(jī)配置簡單、成本低,在網(wǎng)絡(luò)邊緣和企業(yè)中得到越來越廣泛的應(yīng)用,因此對(duì)交換機(jī)運(yùn)營維護(hù)管理所需的工作量也越來越大,交換機(jī)的OAM能力越來越受重視,在此背景之下,ISS(Intellectual Switch Stack,智能交換機(jī)堆疊)技術(shù)被提出,將多臺(tái)交換機(jī)虛擬化成一個(gè)邏輯上的單臺(tái)高密度端口交換機(jī),改善了對(duì)單個(gè)交換機(jī)運(yùn)營維護(hù)的時(shí)候需要逐臺(tái)配置和調(diào)試的問題的同時(shí),提升了交換機(jī)的可用性、性能以及端口密度,使原本沒有高可用性支持,無法應(yīng)用于重要場(chǎng)合的盒式交換機(jī)具備了框式交換機(jī)的高可靠性和高性能[1]。
堆疊系統(tǒng)由多臺(tái)分布設(shè)備虛擬而成,為了其自身能夠在網(wǎng)絡(luò)中穩(wěn)定運(yùn)行,通常在此系統(tǒng)中選舉出一臺(tái)主設(shè)備作為Master管理整個(gè)堆疊系統(tǒng)的運(yùn)行,而堆疊系統(tǒng)在實(shí)際應(yīng)用中可能存在Master設(shè)備脫離原堆疊系統(tǒng)的情況出現(xiàn),為了使新形成的堆疊系統(tǒng)能接替原堆疊系統(tǒng)在網(wǎng)絡(luò)中的任務(wù),則要求堆疊系統(tǒng)各成員有相同的實(shí)時(shí)配置和動(dòng)態(tài)表項(xiàng)以及狀態(tài),因此堆疊成員之間的信息同步是堆疊功能實(shí)現(xiàn)過程必須解決的問題。
堆疊角色分為Master與Slave,其中Master負(fù)責(zé)管理整個(gè)堆疊,而Slave則作為Master的備份設(shè)備運(yùn)行,當(dāng)Master故障時(shí),系統(tǒng)會(huì)自動(dòng)從Slave中選舉一個(gè)新的Master接替原Master工作,堆疊中的Master和Slave均由角色選舉產(chǎn)生,一個(gè)堆疊系統(tǒng)中同時(shí)只能存在一臺(tái)Master,其他成員設(shè)備都是Slave。堆疊成員具有堆疊域、成員編號(hào)、成員優(yōu)先級(jí)、是否指定Master等屬性,只有域ID相同的成員設(shè)備才能組成堆疊;而同一個(gè)域中的每一個(gè)堆疊成員具有惟一的成員編號(hào);成員優(yōu)先級(jí)用于角色選舉過程中確定成員設(shè)備的角色,優(yōu)先級(jí)越高當(dāng)選為Master的可能性更大[2]。
堆疊系統(tǒng)中成員通過專用堆疊端口進(jìn)行連接,每個(gè)堆疊成員至少使能一個(gè)堆疊口。堆疊成員的運(yùn)行狀態(tài)有:Init(設(shè)備的缺省值狀態(tài)),Collection(拓?fù)涫占癄顟B(tài)),Election(選舉狀態(tài)),Loading(配置文件同步狀態(tài))和Done(站點(diǎn)穩(wěn)定運(yùn)行狀態(tài))[3]。在多臺(tái)交換機(jī)使能堆疊協(xié)議連接成環(huán)形或者鏈型拓?fù)浜螅ㄒ妶D1),首先需建
立堆疊端口的協(xié)議狀態(tài),在堆疊設(shè)備通過堆疊口相連后,會(huì)互通keepalive報(bào)文,只有兩端同時(shí)收到了對(duì)端的keepalive報(bào)文后,各堆疊口的協(xié)議狀態(tài)才為up,才能進(jìn)行hello報(bào)文的發(fā)送,進(jìn)入collection階段。在collection狀態(tài)中,堆疊中每個(gè)成員設(shè)備都周期性地通過堆疊端口向所有堆疊成員發(fā)送hello報(bào)文,每個(gè)成員設(shè)備都根據(jù)收到的hello報(bào)文在本地記錄收到的拓?fù)湫畔?,hello報(bào)文中只攜帶自己的信息(域編號(hào)、成員編號(hào)、是否指定Master、優(yōu)先級(jí)、運(yùn)行時(shí)間和MAC地址等),發(fā)送hello報(bào)文時(shí)跳數(shù)設(shè)定為1,hello報(bào)文每經(jīng)過一個(gè)成員跳數(shù)加1,每個(gè)成員收到hello報(bào)文后判斷其源是否自己,如果是自己則終結(jié),如果源不是自己則接收并更新自己的拓?fù)涑蓡T表,然后從另一個(gè)堆疊端口轉(zhuǎn)發(fā)hello報(bào)文并增加報(bào)文中的跳數(shù)。在堆疊系統(tǒng)初始啟動(dòng)后,經(jīng)過一段時(shí)間的拓?fù)涫占總€(gè)成員都可以得到整個(gè)拓?fù)浣Y(jié)構(gòu)的信息。堆疊系統(tǒng)在完成拓?fù)涫占筮M(jìn)入角色選舉階段,根據(jù)角色選舉原則選出一個(gè)Master,其他成員設(shè)備都是Slave。選舉完成后,Master設(shè)備在選舉完成后,直接執(zhí)行本地配置文件,進(jìn)入站點(diǎn)穩(wěn)定運(yùn)行的Done狀態(tài),而Slave設(shè)備則需要從Master站點(diǎn)Load配置文件進(jìn)行同步,在同步完成之前,站點(diǎn)一直處于Loading狀態(tài)。各Slave站點(diǎn)配置文件同步完成后依次進(jìn)入Done狀態(tài)。當(dāng)堆疊系統(tǒng)中所有的站點(diǎn)均進(jìn)入了Done狀態(tài)后,整個(gè)堆疊系統(tǒng)進(jìn)入穩(wěn)定運(yùn)行狀態(tài)[4],如圖2所示。
圖1 ISS拓?fù)涫疽鈭D
為了保證堆疊系統(tǒng)能作為單臺(tái)站點(diǎn)在網(wǎng)絡(luò)中進(jìn)行配置和管理,以及當(dāng)Master出現(xiàn)故障時(shí)新Master被選舉出來后能接替原Master管理整個(gè)堆疊。要求堆疊各個(gè)子系統(tǒng)在實(shí)時(shí)運(yùn)行過程中具有相同的配置、協(xié)議狀態(tài)和動(dòng)態(tài)表項(xiàng),能夠協(xié)商處理普通業(yè)務(wù)報(bào)文的轉(zhuǎn)發(fā)以及外部事件。對(duì)此,堆疊系統(tǒng)分批量同步和實(shí)時(shí)同步兩種方案解決堆疊子系統(tǒng)間的同步問題,批量同步即如圖3表示的配置文件同步,而實(shí)時(shí)配置同步則依賴于同步通道的建立。
堆疊成員配置文件同步的方式如圖3所示,在堆疊系統(tǒng)選舉結(jié)束后,Slave向Master發(fā)出同步請(qǐng)求申請(qǐng)同步配置文件,Master收到了該請(qǐng)求后向Slave發(fā)出同步請(qǐng)求應(yīng)答,在Slave收到此應(yīng)答后Master和Slave即可進(jìn)行配置文件同步的相關(guān)處理,最終Slave會(huì)獲得Master提供的一份配置文件,并替換掉自己本地配置文件后執(zhí)行,實(shí)現(xiàn)批量配置的同步。
圖2 堆疊狀態(tài)機(jī)
圖3 成員配置文件同步過程圖
堆疊成員間實(shí)時(shí)同步方式如圖4所示,堆疊系統(tǒng)在堆疊成員間建立了同步通道,當(dāng)成員1上有收包,命令字、協(xié)議表項(xiàng)需同步以及鏈路linkup/down等外部事件發(fā)生時(shí),成員1均會(huì)將所需同步的內(nèi)容填入buffer并封裝上堆疊包頭后利用同步通道發(fā)送至目的成員,目的成員根據(jù)堆疊包頭中的子類型選擇對(duì)應(yīng)的函數(shù)解包并處理。
圖4 同步通道示意圖
堆疊同步通道報(bào)文格式如圖5所示。
圖5 報(bào)文格式
同步通道包頭:
SessionID:4 b字段,整數(shù)值,Socket服務(wù)器通過此標(biāo)識(shí)尋找相應(yīng)會(huì)話文件。
pktType:2 b字段,整數(shù)值,標(biāo)識(shí)同步通道報(bào)文的子類型,分為L2DATA_REQUEST_PKT,L2DATA?SYNC_TYPE,L2DATA_MAX_TYPE三種類型,其中類型為L2DATASYNC_TYPE的報(bào)文裝載同步信息。
destMemberID:1 b字段,整數(shù)值,標(biāo)識(shí)目的成員編號(hào)。
srcMemberID:1 b字段,整數(shù)值,標(biāo)識(shí)源成員號(hào)。
cmdType:2 b字段,整數(shù)值,標(biāo)識(shí)堆疊同步包的子類型,分為STACK_L2PKT_IFNOTIFY,STACK_L2PKT_ RECVPKT,STACK_L2PKT_SENDPKT,STACK_L2PKT_ SENDPKT,STACK_L2PKT_SENDPKT,STACK_L2PKT_ SYNCAPI,STACK_L2PKT_SYNCAPI等類型,其中STACK_L2PKT_SYNCAPI類型標(biāo)識(shí)命令字同步[5]。
dataLen:2 b字段,整數(shù)值,標(biāo)識(shí)同步包凈荷部分長度。
填充內(nèi)容:
SyncType:1 b字段,整數(shù)值,標(biāo)識(shí)需同步的命令字子類型,分為FUNC_HWIFSET,F(xiàn)UNC_HWSYSTEMSET等類型,其中FUNC_HWIFSET標(biāo)識(shí)對(duì)接口下硬件設(shè)置。
cmd:4 b字段,整數(shù)值,標(biāo)識(shí)硬件適配層命令字子類型。
mark:1 b字段,整數(shù)值,標(biāo)識(shí)instanceRef參數(shù)的類型,1標(biāo)識(shí)指針,0表示整數(shù)。
size:2 b字段,整數(shù)值,標(biāo)明cmd參數(shù)大小。
instanceRef:4 b字段,整數(shù)值,標(biāo)識(shí)交換機(jī)端口索引號(hào)。
flag:4 b字段,整數(shù)值,標(biāo)識(shí)同步local或remote,其中同步remote表明此配置需要同步到堆疊子系統(tǒng)。
len:4 b字段,整數(shù)值。標(biāo)明instanceRef參數(shù)長度。
堆疊在實(shí)際中的應(yīng)用如圖6所示,3臺(tái)交換機(jī)通過堆疊端口互聯(lián),在堆疊同步的支持下,等效為一臺(tái)設(shè)備在網(wǎng)絡(luò)中運(yùn)行?,F(xiàn)以在成員1(Master)上配置成員2的接口shutdown為例說明堆疊成員間是如何通過同步通道同步實(shí)時(shí)配置的。如圖7所示,當(dāng)用戶通過console口或Telnet登陸成員1并對(duì)成員2的接口配下“shutdown”時(shí),網(wǎng)管層會(huì)記下用戶shutdown接口的接口號(hào)并將此參數(shù)傳入U(xiǎn)SP層,USP作為軟件平臺(tái),提供了統(tǒng)一的事件通告、接口管理、數(shù)據(jù)狀態(tài)配置同步、協(xié)議管理等功能,此時(shí)平臺(tái)識(shí)別用戶對(duì)成員2接口進(jìn)行配置,于是交給USP內(nèi)接口管理模塊并標(biāo)明flag參數(shù)為remote,接著下HwApi層接口對(duì)上層傳入的syncType,cmd,instanceRef,flag等信息封裝入buffer并傳給同步通道接口,同步通道再將SessionID,pktType,destMemberID,srcMemberID等信息裝入包頭后加在buffer前封裝成同步包通過Socket發(fā)送至成員2。
圖6 ISS實(shí)際應(yīng)用圖
成員2搜到成員1發(fā)來的同步包后,由HwApi層先從同步包頭中解析出pktType,若確定是L2DATA?SYNC_TYPE再解析出cmdType,根據(jù)cmdType的子類型,選擇相應(yīng)的函數(shù)解析出同步包凈荷中的SyncType、cmd、instanceRef、flag等信息,再根據(jù)SyncTpe和cmd子類型,調(diào)用相應(yīng)的驅(qū)動(dòng)層接口并傳入上層交托的instan?ceRef信息等下硬件設(shè)置,于是成員1上的配置成功同步到成員2,到此配置同步結(jié)束。
圖7 函數(shù)層次調(diào)用關(guān)系
現(xiàn)有烽火網(wǎng)絡(luò)S4800?S?E交換機(jī)3臺(tái)組成堆疊系統(tǒng),并在其中的站點(diǎn)1上對(duì)站點(diǎn)2的5號(hào)接口配置shutdown以驗(yàn)證此配置是否能生效并同步至堆疊成員2和3。
如圖8所示,堆疊系統(tǒng)形成。
圖8 堆疊系統(tǒng)穩(wěn)定示意圖
在站點(diǎn)1上對(duì)站點(diǎn)2的2/1/0/5口配置“shutdown”之前show interface,如圖9所示。
圖9 “shutdown”配置前接口狀態(tài)示意圖
可以看到成員2的2/1/0/5口的管理(a)和鏈路狀態(tài)(o)均為up態(tài)。
在站點(diǎn)1上對(duì)站點(diǎn)2的5號(hào)口“shutdown”,如圖10所示。
圖10 Linkdown信息打印示意圖
站點(diǎn)1立即打印鏈路斷開信息。
在站點(diǎn)2和站點(diǎn)3上show interface,查看接口均如圖11所示。
發(fā)現(xiàn)2/1/0/5接口為down狀態(tài),站點(diǎn)1的配置成功生效并同步到站點(diǎn)2和3。
堆疊成員間通過配置文件的同步可以有效地批量同步配置,但是卻無法解決交換機(jī)在實(shí)時(shí)運(yùn)行過程中變化的動(dòng)態(tài)表項(xiàng)、協(xié)議狀態(tài)、實(shí)時(shí)配置,鏈路變化等事件的同步。本文提出了在堆疊成員間建立同步通道的方法,使得堆疊成員間能通過收發(fā)同步包來及時(shí)有效地獲取其他設(shè)備上變化的信息,解決了堆疊成員間實(shí)時(shí)信息同步的問題,經(jīng)過實(shí)驗(yàn)測(cè)試證實(shí),該方法切實(shí)可行。
圖11 “shutdown”配置后接口狀態(tài)示意圖
[1]王隆杰.虛擬網(wǎng)絡(luò)交換技術(shù)[J].通信技術(shù),2009(4):82?87.
[2]楊續(xù)波.交換機(jī)的級(jí)聯(lián)與堆疊[J].企業(yè)技術(shù)開發(fā),2006(6):17?19.
[3]錢歡.虛擬化堆疊技術(shù)研究與實(shí)現(xiàn)[J].虛擬儀器技術(shù),2013(18):70?71.
[4]馬博峰.VMware,Citrix和Microsoft虛擬化技術(shù)詳解與應(yīng)用實(shí)踐[M].北京:機(jī)械工業(yè)出版社,2012.
[5]ANDERSON T,PETERSON L,SHENKER S,et al.Overcoming the Internet impasse through virtalization[J].Computer,2005,38(4):34?41.
[6]朱偉,李紀(jì)云,江慧,等.基于分布式內(nèi)存數(shù)據(jù)的數(shù)據(jù)同步設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2014,37(2):77?79.
Method of real?time data synchronization for virtual stack system
YUAN Ming?xiao1,2,DAI Jin?you1,2
(1.State Key Laboratory of Fibre Optic Communication Technologies and Networks,Wuhan 430074,China;2.Wuhan FiberHome Networks Co.,Ltd.,Wuhan 430074,China)
Stack is a kind of technology that virtualizes multiple devices into a single device for management and use.It can simplify the management of exchanger,and improve its availability and performance.Synchronization of dynamic entry,real?time configuration,protocol state,link change of the stacked devices is an urgent thing to be solved during the process of reali?zing the stacking technology.That′s why a method is presented in this paper to solve the above problem by establishing a syn?chronization channel among stacked devices to achieve real?time information synchronization.
stack;virtualization;network device;data synchronization
TN911?34
A
1004?373X(2015)03?0009?04
袁鳴驍(1990—),男,碩士生。主要研究方向?yàn)閿?shù)字通信。
2014?08?08