胡 鵬,康 敏
(中國電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
隨著通信技術(shù)的發(fā)展和高帶寬需求,通信設(shè)備往大容量和高性能方向發(fā)展。現(xiàn)代高性能通信設(shè)備一般基于分布式處理的體系架構(gòu)進(jìn)行設(shè)計,設(shè)備內(nèi)部由多個功能相對獨立的板卡組成,而這些板卡和軟硬件模塊間存在大量的通信。為確保模塊間數(shù)據(jù)交互的可靠性,同時由于板卡種類繁多,終端用戶缺乏相關(guān)通信系統(tǒng)等知識帶來的不足,需滿足對整機(jī)零配置和板卡即插即用的需求。本文提出了一套高效易用的即插即用內(nèi)部通信機(jī)制(Internal Communication Protocol,ICP),以保證各板卡以及模塊間安全有效地進(jìn)行通信。
目前,設(shè)備內(nèi)部通信機(jī)制沒有標(biāo)準(zhǔn)可供遵循,基本是按設(shè)備具體情況進(jìn)行設(shè)計,總的可以分為2種方式。
方式1:數(shù)據(jù)總線+消息隊列方式。系統(tǒng)中板卡采用統(tǒng)一的數(shù)據(jù)總線連接,制定私有的內(nèi)部通信消息格式,輔以收、發(fā)消息隊列。接收信息時內(nèi)部通信實時監(jiān)聽通信接口,收取信息到相應(yīng)消息隊列。發(fā)送信息時由模塊向發(fā)消息隊列寫入相應(yīng)消息,內(nèi)部通信監(jiān)聽到后,將該消息發(fā)送到對應(yīng)通信接口。
方式2:以太網(wǎng)+內(nèi)部通信消息格式方式。系統(tǒng)中板卡間采用以太網(wǎng)連接,制定私有的內(nèi)部通信消息格式,消息接收和發(fā)送可按需要定義于鏈路層、IP協(xié)議層或者TCP/UDP協(xié)議之上。
這2種方式都是單一的通信機(jī)制,僅提供了內(nèi)部通信的消息傳送途徑,不支持對板卡加入和離開的自動檢測,對板卡運(yùn)行過程中可能出現(xiàn)的異常無處理機(jī)制,需要以疊加方式加入板卡檢測、異常處理等功能。內(nèi)部通信接口眾多且格式不一,新增模塊對整個系統(tǒng)影響大,擴(kuò)展性差,無法滿足復(fù)雜通信設(shè)備的要求。
目前,設(shè)備間通信機(jī)制存在以下2種方式。
方 式 1: 閃 聯(lián)(Intelligent Grouping Resource Sharing,IGRS)是一種技術(shù)體系標(biāo)準(zhǔn),解決各種信息終端設(shè)備的互聯(lián)互通、資源共享和協(xié)同工作的問題。IGRS標(biāo)準(zhǔn)為IGRS應(yīng)用提供統(tǒng)一的網(wǎng)絡(luò)資源發(fā)現(xiàn)、使用和管理機(jī)制,由3部分構(gòu)成——IGRS基礎(chǔ)協(xié)議、IGRS智能應(yīng)用框架和IGRS基礎(chǔ)應(yīng)用。
IGRS協(xié)議確定了IGRS設(shè)備間相互發(fā)現(xiàn)及資源共享的機(jī)制,包括設(shè)備相互發(fā)現(xiàn)、設(shè)備間管道創(chuàng)建、服務(wù)發(fā)現(xiàn)、設(shè)備組管理、會話管理和服務(wù)訪問機(jī)制。
方式2:即插即用(Universal Plug and Play,UPnP)主要用于實現(xiàn)設(shè)備的智能互聯(lián)互通,實現(xiàn)智能設(shè)備端到端網(wǎng)絡(luò)連接,是一種架構(gòu)在TCP/IP和HTTP技術(shù)之上的分布式開放網(wǎng)絡(luò)結(jié)構(gòu)[1]。通過UPnP技術(shù),設(shè)備可以自主加入網(wǎng)絡(luò)并向網(wǎng)絡(luò)中其他設(shè)備宣告自己所具有的能力,同時能了解網(wǎng)絡(luò)中其他設(shè)備具有的能力。
這2種方式僅提供了設(shè)備間相互發(fā)現(xiàn)、會話管理等機(jī)制,并不支持設(shè)備內(nèi)部板卡間及模塊之間的消息傳送途徑,不能有效支撐設(shè)備整機(jī)的可靠運(yùn)行,進(jìn)而無法滿足復(fù)雜通信設(shè)備的要求。
復(fù)雜通信設(shè)備系統(tǒng)結(jié)構(gòu)如圖1所示,設(shè)計有多種功能板卡。例如,網(wǎng)管板支持將整機(jī)設(shè)備數(shù)據(jù)上傳給網(wǎng)管服務(wù)器;主控板進(jìn)行整機(jī)控制管理;交換板用于信令業(yè)務(wù)數(shù)據(jù)的轉(zhuǎn)發(fā);接入板完成各種終端設(shè)備的接入功能等[2]。
圖1 復(fù)雜通信設(shè)備系統(tǒng)結(jié)構(gòu)
通過研究現(xiàn)有的設(shè)備內(nèi)部、設(shè)備間通信機(jī)制,發(fā)現(xiàn)其存在不足,并不能有效地在復(fù)雜通信設(shè)備上實現(xiàn)各板卡內(nèi)部與外部之間信令、業(yè)務(wù)、管理數(shù)據(jù)通信以及板卡的即插即用等功能。因此,將現(xiàn)有的內(nèi)部通信、設(shè)備間發(fā)現(xiàn)等技術(shù)相結(jié)合并加以改進(jìn),形成了一套用于復(fù)雜通信設(shè)備內(nèi)部高效易用的通信機(jī)制(ICP),從而實現(xiàn)整機(jī)設(shè)備功能的高效可靠運(yùn)行。
復(fù)雜通信設(shè)備中各板卡的動態(tài)插拔、自動識別、管理信令等消息均通過下層的ICP服務(wù)框架進(jìn)行傳遞,從而實現(xiàn)板卡的即插即用和系統(tǒng)的可靠運(yùn)行。
通過對IGRS設(shè)備間相互發(fā)現(xiàn)機(jī)制和UPnP工作過程的研究,可以將設(shè)備之間的互聯(lián)互通、即插即用通信技術(shù)加以改進(jìn),應(yīng)用于復(fù)雜設(shè)備內(nèi)各板卡功能模塊間,實現(xiàn)設(shè)備內(nèi)各板卡及功能模塊間的互聯(lián)互通和即插即用。設(shè)備各獨立板卡可以動態(tài)加入到內(nèi)部通信網(wǎng)絡(luò)中,并自動獲得通信地址、發(fā)布本地服務(wù)以及發(fā)現(xiàn)其他板卡提供的服務(wù)。
這樣的主要目的是向上層應(yīng)用屏蔽通信設(shè)備內(nèi)部物理連接關(guān)系,不用關(guān)心提供的服務(wù)模塊在那塊板卡上以及通過什么物理接口,各板卡可通過靈活配置支持不同的功能。
ICP相關(guān)術(shù)語定義如下。
服務(wù):ICP實體提供的功能。
服務(wù)標(biāo)識:ICP實體提供服務(wù)的標(biāo)識,每類服務(wù)唯一分配一個服務(wù)標(biāo)識,供應(yīng)用協(xié)議調(diào)用。
服務(wù)提供者:提供ICP服務(wù)的ICP實體,簡稱服務(wù)者。
服務(wù)使用者:使用ICP服務(wù)的ICP實體,簡稱使用者。
通信對等體:進(jìn)行內(nèi)部通信的服務(wù)者和使用者。服務(wù)者和使用者具有相對意義,一個內(nèi)部通信實體在提供某服務(wù)的時候是服務(wù)者,在使用某服務(wù)的時候是使用者。
即插即用內(nèi)部通信技術(shù)通過自定義協(xié)議操作,根據(jù)通信設(shè)備內(nèi)部通信需求,對通信實體預(yù)分配服務(wù)標(biāo)識,建立起通信對等體間的通信關(guān)系,為通信對等體間傳輸數(shù)據(jù)提供傳輸通道。協(xié)議架構(gòu)如圖2所示,內(nèi)部通信技術(shù)為上層應(yīng)用提供對端邏輯通信地址(服務(wù)標(biāo)識和會話號),屏蔽下層通信細(xì)節(jié)。通過進(jìn)行邏輯通信地址和物理通信地址的映射,為上層應(yīng)用協(xié)議完成信息收發(fā)[3]。
圖2 即插即用內(nèi)部通信在協(xié)議體系的位置
即插即用內(nèi)部通信技術(shù)將通信設(shè)備內(nèi)通信實體分為ICP服務(wù)者和ICP使用者。服務(wù)者是通信的服務(wù)方,能夠同時與多個使用者進(jìn)行通信;使用者是通信的客戶方,能夠同時與多個服務(wù)者進(jìn)行通信。通信體制模型如圖3所示,各軟件模塊可以靈活布置到任意板卡,而無需通知其通信對等體。
圖3 即插即用內(nèi)部通信體制模型
內(nèi)部通信協(xié)議通過收發(fā)內(nèi)部通信ICP消息實現(xiàn)。內(nèi)部通信協(xié)議的消息由消息頭和消息體構(gòu)成。消息頭格式如圖4所示。
圖4 ICP報文格式
VER:當(dāng)前協(xié)議版本。
CODE:標(biāo)識ICP不同的報文類型。不同的報文,消息體的內(nèi)容不同。
SESSION:用于標(biāo)識ICP同時存在的不同會話以及服務(wù)發(fā)現(xiàn)、服務(wù)連接時監(jiān)聽的會話。
SEQ:基于會話的遞增數(shù),可區(qū)分不同的消息。
OPT:比特位7為多播比特(M),表明是否需使用多播或廣播的下層協(xié)議來傳輸本消息;比特位6為確認(rèn)比特(C),表明是否接收到本消息需要用傳輸確認(rèn)消息進(jìn)行確認(rèn);比特位5(S)為服務(wù)方標(biāo)志。
LEN:用于標(biāo)識負(fù)載消息長度。
ICP協(xié)議包括10個自定義的消息數(shù)據(jù)報文,分別為服務(wù)者通告消息(SrAdvMsg)、服務(wù)者探測消息(SrAskMsg)、服務(wù)會話消息(SeSesMsg)、服務(wù)注冊消息(SeRegMsg)、服務(wù)注銷消息(SeOutMsg)、服務(wù)受理消息(SeAccMsg)、服務(wù)拒絕消息(SeRefMsg)、通信探測消息(CDetMsg)、傳輸數(shù)據(jù)消息(TDatMsg)和傳輸確認(rèn)消息(TConMsg)。
SrAdvMsg由服務(wù)者發(fā)送,服務(wù)者通過服務(wù)者通告消息對外通報服務(wù)者能夠使用的ICP通信的下層線路和協(xié)議,以及能夠提供的ICP服務(wù)、ICP參數(shù)等信息。
SrAskMsg由ICP使用者發(fā)送,ICP使用者通過服務(wù)者探測消息詢問網(wǎng)絡(luò)或線路上是否存在能夠提供自己所需服務(wù)的ICP服務(wù)者。
SeSesMsg由ICP使用者發(fā)送,ICP使用者通過本消息向ICP服務(wù)者發(fā)出一個會話申請,申明自己需要與特定的ICP服務(wù)進(jìn)行ICP通信。
SeRegMsg由使用者發(fā)送,使用者通過本消息向ICP服務(wù)者發(fā)出申請,聲明自己需要特定服務(wù)者提供的特定服務(wù)。
SeOutMsg由ICP通信雙方任意一方發(fā)送,聲明自己不再需要進(jìn)行由服務(wù)會話消息(SeSesMsg)和服務(wù)注冊消息(SeRegMsg)申請的服務(wù)會話。
SeAccMsg由服務(wù)者發(fā)送,服務(wù)者通過本消息應(yīng)答收到的服務(wù)會話消息(SeSesMsg)和服務(wù)注冊消息(SeRegMsg),表明ICP服務(wù)者相應(yīng)申請成功。
SeRefMsg由服務(wù)者發(fā)送,服務(wù)者通過本消息應(yīng)答收到的服務(wù)會話消息(SeSesMsg)和服務(wù)注冊消息(SeRegMsg),表明服務(wù)者拒絕相應(yīng)申請。
CDetMsg,服務(wù)者和使用者都可以發(fā)送。使用者存在與服務(wù)者的ICP通信關(guān)系,則可以使用本消息探測服務(wù)者是否還在正常工作;服務(wù)者也通過本消息進(jìn)行應(yīng)答。服務(wù)者存在有通過服務(wù)注冊方式或服務(wù)會話建立的ICP通信關(guān)系的使用者,則可以使用本消息探測使用者是否還在正常工作;使用者通過本消息進(jìn)行應(yīng)答。
TDatMsg,ICP服務(wù)者和ICP使用者都可以傳輸數(shù)據(jù)消息來發(fā)送ICP通信數(shù)據(jù)。具體數(shù)據(jù)的內(nèi)容由ICP服務(wù)和ICP客戶具體實現(xiàn)決定。
TConMsg,使用者和服務(wù)者都必須支持。ICP協(xié)議的接收方一旦接收到除本消息外的任何選項字段的C比特置為1的消息時,接收方必須立即使用本消息向發(fā)送方進(jìn)行確認(rèn),表明消息成功接收到。
內(nèi)部通信實體互操作流程如圖5所示,主要過程分為3個階段——服務(wù)發(fā)現(xiàn)、會話建立/拒絕、業(yè)務(wù)傳輸及狀態(tài)維護(hù)。
4.5.1 服務(wù)發(fā)現(xiàn)
服務(wù)發(fā)現(xiàn)主要完成服務(wù)者通告和服務(wù)探測2個內(nèi)容。
服務(wù)者通告:應(yīng)用協(xié)議加載后,向服務(wù)者注冊該服務(wù)相關(guān)信息;服務(wù)者收集服務(wù)信息后,向內(nèi)部通信網(wǎng)絡(luò)中發(fā)送服務(wù)者通告消息。服務(wù)者通告消息包含本地的內(nèi)部通信實體信息、服務(wù)標(biāo)識以及內(nèi)部通信地址等信息,此時通告方式為多播或廣播。服務(wù)者收到使用者的服務(wù)者探測消息時,發(fā)送服務(wù)者通告消息,此時通告方式為單播。
服務(wù)者探測:應(yīng)用協(xié)議加載后,向使用者注冊該服務(wù)相關(guān)信息。使用者需要使用某種服務(wù)時,檢測本地是否有提供該服務(wù)的服務(wù)者信息。如果沒有,須進(jìn)行服務(wù)者探測。服務(wù)者探測通過向內(nèi)部通信網(wǎng)絡(luò)中發(fā)送服務(wù)者探測消息實現(xiàn)。服務(wù)者探測消息以廣播形式發(fā)送。
4.5.2 會話建立/拒絕
使用者需要和服務(wù)者進(jìn)行內(nèi)部通信時,通過服務(wù)會話消息建立會話關(guān)系。服務(wù)會話消息需攜帶使用者的服務(wù)標(biāo)識、通信類型、通信地址、客戶信息以及本地會話號等信息。
服務(wù)者收到該服務(wù)會話消息,根據(jù)自身是否提供其申請的服務(wù)判斷是否處理該消息。如果可以提供該服務(wù),記錄使用者信息,生成本地會話號,并與服務(wù)會話消息攜帶的客戶會話號一同生成完整的會話號,發(fā)送服務(wù)受理消息給使用者。如果由于某種原因不與使用者建立會話,則發(fā)送服務(wù)拒絕消息。
4.5.3 狀態(tài)維護(hù)
內(nèi)部通信對等體間實時維護(hù)服務(wù)者與使用者之間的通信信道狀態(tài),檢測通信雙方是否能正常通信。通信狀態(tài)維護(hù)通過收發(fā)通信檢測消息來實現(xiàn)。雙方在計時器周期后沒有收到任何對方發(fā)送的傳輸數(shù)據(jù)或者通信檢測消息,則認(rèn)為對方故障,清除會話。
4.6.1 服務(wù)者狀態(tài)機(jī)
內(nèi)部通信協(xié)議的服務(wù)者有4個狀態(tài),分別是IDLE、SERVER ADV、CONNECT/ACCEPT和CONNECT/PROBING,如圖6所示。
IDLE:服務(wù)者初始狀態(tài)。
SERVER ADV:服務(wù)者通告狀態(tài)。服務(wù)者加載,應(yīng)用協(xié)議向服務(wù)者注冊服務(wù)后,服務(wù)者進(jìn)入該狀態(tài)。在該狀態(tài)下發(fā)送服務(wù)者通告消息,處理服務(wù)者探測消息。當(dāng)服務(wù)者失效時,進(jìn)入IDLE狀態(tài)。
圖5 內(nèi)部通信實體互操作流程
圖6 內(nèi)部通信協(xié)議服務(wù)者狀態(tài)機(jī)
CONNECT/ACCEPT:服務(wù)會話成功且通信正常狀態(tài)。服務(wù)者接納使用者會話連接后,從SERVER ADV狀態(tài)進(jìn)入該狀態(tài)。該狀態(tài)下服務(wù)者可以和其他使用者通信,提供其所能提供的服務(wù)。該狀態(tài)下維持一個計時器,狀態(tài)在計時器有效的時間內(nèi)維持。計時器超時,狀態(tài)轉(zhuǎn)為CONNECT/PROBING,進(jìn)行通信檢測操作;服務(wù)者收到服務(wù)注銷或者發(fā)送服務(wù)注銷消息后,回到SERVER ADV狀態(tài)。
CONNECT/PROBING:服務(wù)會話成功且需要進(jìn)行探測狀態(tài)。此狀態(tài)下,服務(wù)者仍然可以與使用者通信,但是要進(jìn)行通信探測。在規(guī)定時間內(nèi)收到使用者的業(yè)務(wù)消息或者通信探測消息,狀態(tài)返回CONNECT/ACCEPT,并發(fā)送探測應(yīng)答;否則,狀態(tài)轉(zhuǎn)為SERVER ADV。
4.6.2 使用者狀態(tài)機(jī)
內(nèi)部通信協(xié)議的使用者有4個狀態(tài),分布是IDLE、SERVER DETECT、CONNECT/ACCEPT 和CONNECT/PROBING,如圖7所示。
IDLE:使用者初始狀態(tài)。
SERVER DETECT:服務(wù)者探測狀態(tài)。使用者加載,需要使用內(nèi)部通信協(xié)議提供通信時,使用者進(jìn)入該狀態(tài)。在該狀態(tài)下使用者檢測服務(wù)者信息,如果沒有服務(wù)者信息,發(fā)送服務(wù)者探測消息,處理服務(wù)者探測消息。當(dāng)使用者失效時,進(jìn)入IDLE狀態(tài)。該狀態(tài)下,使用者進(jìn)行會話連接。在進(jìn)行服務(wù)者探測或者收到服務(wù)拒絕消息時,狀態(tài)不變。
圖7 內(nèi)部通信協(xié)議使用者狀態(tài)機(jī)
CONNECT/ACCEPT:服務(wù)會話成功且通信正常狀態(tài)。服務(wù)者接納使用者會話連接后,從SERVER DETECT狀態(tài)進(jìn)入該狀態(tài)。該狀態(tài)下使用者可以與服務(wù)者通信,使用服務(wù)者提供的服務(wù)。該狀態(tài)下有維持一個計時器,狀態(tài)在計時器有效的時間內(nèi)維持。計時器超時,狀態(tài)轉(zhuǎn)為CONNECT/PROBING,進(jìn)行通信探測操作;使用者收到服務(wù)注銷或者發(fā)送服務(wù)注銷消息后,回到SERVER DETECT狀態(tài)。
CONNECT/PROBING:服務(wù)會話成功且需要進(jìn)行探測。此狀態(tài)下,使用者仍然可以與服務(wù)者通信,但是要進(jìn)行通信探測。在規(guī)定時間內(nèi)收到服務(wù)者的業(yè)務(wù)消息或者通信探測消息,狀態(tài)返回CONNECT/ACCEPT,并發(fā)送探測應(yīng)答;否則,狀態(tài)轉(zhuǎn)為SERVER DETECT。
即插即用內(nèi)部通信技術(shù)提供通信對等體的跨平臺自動發(fā)現(xiàn)和控制,支持零配置和“不可見”聯(lián)網(wǎng),實現(xiàn)功能模塊到服務(wù)的自動映射、控制點管理以及內(nèi)部通信實體異常處理等全過程,具備智能化設(shè)計思想、擴(kuò)展性好、內(nèi)部通信接口統(tǒng)一、模塊化和擴(kuò)展性好等特點,在多個設(shè)備上已推廣應(yīng)用。