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