多媒介通信系統(tǒng)鏈路管理的設計和實現(xiàn) 作者: 時間:2007-03-09 來源:網(wǎng)絡 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對面交流海量資料庫查詢 收藏 摘要:軍事通信系統(tǒng)和某些民和領域?qū)νㄐ趴煽啃院涂箽缘男枨笫沟命c到點的鏈路傾向于建立在多種通信媒介、多種協(xié)議上。介紹了一種借鑒OPC規(guī)范,基于COM技術(shù),在多協(xié)議、多種協(xié)議上。介紹了一種借鑒OPC規(guī)范,基于COM技術(shù),在多協(xié)議、多通信媒介上進行鏈路管理和調(diào)度的解決方案,并給出了具體實現(xiàn)。關鍵詞:多種通信媒介 多協(xié)議 鏈路調(diào)度 COM 在許多應用中,如軍事通信中的C4I系統(tǒng)、政府部門和特殊行業(yè)中的某些重要通信系統(tǒng),對通信網(wǎng)絡的可靠性、抗毀性有著非??量痰囊螅纫笤谡G闆r下有較高的通信效率,又要求在惡劣環(huán)境下能保證基本的通信,因此僅僅依賴單一通信媒介難以達到可靠性的要求。在C4I系統(tǒng)中,把現(xiàn)有的和未來的全部傳輸媒介資源綜合到通信系統(tǒng)中已經(jīng)成為通信網(wǎng)絡追求的目標之一。在民用領域,例如高速公路聯(lián)聯(lián)網(wǎng)收費系統(tǒng)中,因為需要一個24%26;#215;7的可靠通信平臺,亦采用了不同類型的通信媒介(如圖1),它通常把專線作為主用線路,把公眾電信網(wǎng)提供的撥號線(普通調(diào)制解調(diào)順或ISDN)連接作為臨時備用線路。不同通信媒介的效率和經(jīng)濟性差別很大。對不同類型的通信鏈路必須進行綜合調(diào)度,做到自適應不同的網(wǎng)絡環(huán)境,自動在主用鏈路和多條備用鏈路間進行切換。這樣才能適應這些系統(tǒng)對網(wǎng)絡生存能力的要求。 傳統(tǒng)開過程中,常把最上端的應用程序直接建立在多種通信設備上,在應用程序中直接對不同類型鏈路進行管理和調(diào)度,這對整個系統(tǒng)的開發(fā)、升級、擴展帶來了很大問題。一方面應用軟件開發(fā)者需要耗費大量精力在不同的通信設備上,而這些工作在別的同類項目中無法復用;另一方面,當系統(tǒng)需要升級通信設備,或者擴展新的通信媒介時,幾乎相當于重新開發(fā)整個系統(tǒng)。同時,在多個應用程序共享通信設備時容易產(chǎn)生沖突。借鑒超鏈思想以及微軟和工業(yè)控制界共同推出的OPC(OLE for process control)規(guī)范的設計思路,提出了基于COM技術(shù)的解決方案。圖1 節(jié)點間的多種通信媒介綜合使用1 系統(tǒng)設計 1.1 設計思想 可以把所有媒介所提供的通信資源看作單一的邏輯數(shù)據(jù)鏈,即超鏈,它表示每一個節(jié)點到相鄰點的連接,而并不關心具體的通信媒介OPC規(guī)范通過提供標準接口的方法,使下層設備無需了解上層應用,上層標準接口的方法,使下層設備無需了解上層應用,上層應用亦無需關心下層設備的細節(jié)。借鑒二者的思想,在應用軟件和通訊設備間增加了一層類似中間件的通信平臺,使得應用軟件和通信設備間的無關性得以實現(xiàn),并把對通信設備的訪問進行統(tǒng)一管理,解決了并發(fā)沖突問題。 1.2 系統(tǒng)結(jié)構(gòu) 根據(jù)ISO七層網(wǎng)絡體系定義,在傳送(Transport)層之上對底層進行封裝,是因為在多媒介情況下,多種協(xié)議是分布式網(wǎng)絡體系的一個基本要求。一方面,一般情況下,不同的通信媒介適用的傳送層協(xié)議是完全不同的;另一方面,系統(tǒng)中所傳輸?shù)牟煌瑪?shù)據(jù)類型對通信性能(如一次可傳輸消息大小、實時性等指標)的要求差別很大。針對不同數(shù)據(jù)類型,設計具有不同性能的傳送層協(xié)議,并實現(xiàn)自適應調(diào)度,是實際應用的需求。只有在傳送層之上進行封裝才有可能屏蔽不同媒介所帶來的差異。系統(tǒng)整體描述如圖2所示。 鏈路的調(diào)度管理層對不同協(xié)議、不同通信媒介以及不同鏈路進行一管理和調(diào)度。通信媒介1~n表示諸如專線網(wǎng)絡、撥號線-MODEM、無線調(diào)制解調(diào)器-無線電臺及與此類似層次、將來擴展的不同通信媒介,鏈路調(diào)度管理層對這些通信媒介進行初始化、激活、配置,并獲得它們的數(shù)據(jù)接口和所有應該得到的狀態(tài)。協(xié)議1~n表示諸如基于TCP的協(xié)議、基于UDP的協(xié)議、半雙工高速短波協(xié)議以及將來擴展的各種不同協(xié)議,它們的管理同樣由鏈路調(diào)度管理層進行,接口并不直接暴露給上層,而是由管理層封裝后向上層提供統(tǒng)一的接口。協(xié)議模塊在需要發(fā)送數(shù)據(jù)或者有數(shù)據(jù)到來時并不直接與各通信媒介模塊通信,而是通過鏈路管理層訪問通信媒介模塊所提供的接口。這是因為許多通信模塊(與物理設備聯(lián)系緊密)并不支持并發(fā)訪問,鏈路管理層把對它們的訪問串行化。 1.3 模塊化和可擴展性 在不同的應用中,所用的協(xié)議和通信組件不盡相同,要求在鏈路管理層不做過多的改動,既能加入新的協(xié)議模塊和通信媒介模塊。這樣就需要設計和實現(xiàn)做到模塊化,且各模塊和鏈路調(diào)度模塊之間必須隔離開。鏈路調(diào)度模塊通過盡量統(tǒng)一的接口對各模塊進行調(diào)度和管理。微軟的組件對象模型技術(shù)(COM)就提供了這種特性。OPC規(guī)范應用COM/OLE技術(shù)實現(xiàn)了模塊化和可擴展性,但OPC規(guī)范主要針對工業(yè)控制領域,在本設計中無法完全實現(xiàn),故直接采用COM技術(shù),借鑒OPC的設計思想構(gòu)建本設計。每個協(xié)議模塊和通信媒介模塊均是一個單獨COM組件,通過接口和回調(diào)接口與鏈路調(diào)度模塊進行通信,鏈路管理模塊以總線方式實現(xiàn)對協(xié)議模塊和媒介模塊的管理。而協(xié)議組件和通信媒介組件之間的通信則由鏈路調(diào)度模塊轉(zhuǎn)發(fā)。所面臨的難點之一在于協(xié)議組件和通信媒介組件可以有相同的數(shù)據(jù)接口,但是這些組件的特性千差萬別,在設置參數(shù)和獲得當前狀態(tài)方面無法做到大致統(tǒng)一的接口,可以通過組件自解析的方式解決。鏈路管理模塊和這些組件之間的參數(shù)用字符串或數(shù)組的方式傳遞,各組件在得到這些字符串后根據(jù)本身的情況進行解析,得到特定的參數(shù)。 難點之二,如前文所述,通信媒介組件與物理層密切相關,很難做到支持并行化的輸入。在多條獨立鏈路不同的線程中同時使用同一通信媒介時,各鏈路對物理層的操作將產(chǎn)生沖突,必須對通信媒介組件的數(shù)據(jù)輸入進行串行化處理(排隊),使同一時刻,只處理一個輸入。在COM組件的多線程模型中,單線程套間(STA)模型有如下特點:如果某COM組件的對象生成在單線程套間中,則只有與同在一個套間特定的線程可以訪問該對象不在同一套間的其他線程必須通過列集(marshal)技術(shù)才能訪問該對象。這種技術(shù)基于COM ORPC協(xié)議和消息階列機制,自動把對該對象的訪問串行化了。所以如果每個通信媒介組件都只有一個對象且生存在STA中,則通過列集技術(shù)它的訪問自動被串行化。 1.4 媒介模塊和協(xié)議模塊的設計 媒介組件封裝了與網(wǎng)絡平有關的操作,向上提供了建鏈、斷鏈、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)(回調(diào))、參數(shù)設置、狀態(tài)改變報告(回調(diào))、參數(shù)查詢、狀態(tài)查詢等接口。 例如在高速公路網(wǎng)絡中,專線網(wǎng)絡和撥號線后備鏈路都基于IP網(wǎng)絡,Windows套接字接口(Winsock)提供了一個基本與協(xié)議無關的傳送接口從而封裝了基本操作。但是對于不同協(xié)議,具體操作仍稍有不同,如面連接的TCP和面向無連接的UDP向上層暴露的SOCKET連接過程就很不相同,同時對不同協(xié)議參數(shù)信息的查詢和設置接口差別也很大;而撥號線后備鏈路在SOCKET連接之外還有撥號、掛斷等操作。媒介組件在Winsock基礎上又給出了一層封裝,把建立鏈路、撤銷鏈路、等差別較大的操作在此層完成,向上層暴露統(tǒng)一的建鏈方法。對于參數(shù)的設置和信息查詢,媒介組件同外界通過不定長度的數(shù)組或字符串交換,這樣就形式了掩蓋了差異,保持了接口的統(tǒng)一性。 對于特殊的后備媒介,如無線MODEM-無線電臺方式,媒介組件必須提供與IP網(wǎng)絡相一致的接口,而對設備的操作(串口、MODEM、電臺)進行封裝。節(jié)點ID系統(tǒng)(與IP系統(tǒng)類似)也在此組件中進行管理。 在媒介模塊之上完成的協(xié)議控制以獨立的COM組件方式存在。這是考慮到媒介類型與協(xié)議并非一一對應,一種協(xié)議可能適用于多種媒介,一種媒介亦可能使用多種協(xié)議。 2 鏈路的管理、維護和調(diào)度 鏈路的管理、維護和調(diào)度是本設計的重點內(nèi)容之一,可從運行角度和維護測試角度分別考慮。在運行中,系統(tǒng)的每個節(jié)點都可能通過多條鏈路與多個節(jié)點通信,每條鏈路所使用的通信媒介和協(xié)議又不盡相同。與同一節(jié)點通信的過程中,有可能在不同的通信媒介和協(xié)議間切換。同時,鏈路管理層必須實時獲得各條鏈路的運行狀態(tài)和當前參數(shù),如通斷情況、吞吐量等,以作出正確的調(diào)度決策。從維護測試角度,需要設置各條鏈路所涉及的協(xié)議參數(shù)和涉及通信媒介的參數(shù);新節(jié)點必須能夠自動加入,成為任一節(jié)點的客戶端。 2.1 多鏈路管理 鏈路管理層必須維護一張鏈路表,以記錄各條鏈路的情況(如表1)。表1 鏈路管理表結(jié)構(gòu) 目的ID通信媒介鏈路標識對應目的地址優(yōu)先紡鏈路狀態(tài)000001"U"0001192.169.0.11NO目的ID是節(jié)點的全網(wǎng)唯一標總值,通信媒介用字符標識,鏈路標識是鏈路的唯一標識。對應目的地址為下一層(特定通信媒介)的地址:若基于UDP/IP或TCP/IP,則為IP地址;若基于短波或者別的通信媒介,則為在下一層約定的地址。優(yōu)先級表示與同一目的ID通信時優(yōu)先采用哪條鏈路。與同一節(jié)點間的鏈路可能有數(shù)條,它們互相獨立且對等,只是優(yōu)先級不相同。鏈路狀態(tài)包括中止和激活兩種。中止狀態(tài)指鏈路保持在偵聽態(tài),能接收數(shù)據(jù)幀關上報鏈路管理組件,而發(fā)送線程中止運行;激活狀態(tài)指兩節(jié)點在此鏈路上進行通信。鏈路由中止狀態(tài)到激活狀態(tài)轉(zhuǎn)換的過程稱為激活,包括啟動發(fā)送線程,通過發(fā)送握手幀和接收握手成功幀與目的ID進行握手等過程。 鏈路表包括了所有可能使用的鏈路,在本節(jié)點啟動時,只激活優(yōu)先級最高的鏈路。若優(yōu)先級最高鏈路無法激活,則激活次高的鏈路,以此類推,直到連接上。若激活了非最高優(yōu)先級鏈路,則保持高優(yōu)先級鏈路的“試圖連接狀態(tài)”。若均無法激活,則停止主動激活,等待被動激活。在所有激活的鏈路上,服務器主動發(fā)出“心跳信號”,偵測鏈路狀態(tài),包括鏈路是否中斷、心跳信號回應時間等,并實時反映到鏈路表上。圖3 鏈路切換(自動切換、非自動切換)流程圖本節(jié)點與主服務器(即主父節(jié)點)和備份服務器(如有)之間的鏈路必須在本節(jié)點運行之前配置,與各客戶端(子節(jié)點)之間的鏈路可在運行中動態(tài)配置,由客戶端主動發(fā)起,申請加入。 2.2 鏈路間切換 在與一個節(jié)點通信的過程中,當主用鏈路(優(yōu)先級高)斷鏈或擁塞時,必須自動切換到備用鏈路上進行數(shù)據(jù)通信,稱為自適應切換;亦可禁止自適應切換而由上層控制,稱為非自動切換。在許多網(wǎng)絡中,父節(jié)點備用鏈路通信是公用的,無法由某兩個節(jié)點永久占用,只能在需要時申請激活。 在自動切換模式下,切換原則是:盡量使用高優(yōu)先級鏈路進行通信。分五種情況討論:(1)網(wǎng)絡層交給鏈路層一系列待發(fā)送消息,此消息結(jié)構(gòu)中包含了目的ID。鏈路層通過鏈路列表打到此目的ID對應的已經(jīng)激活的鏈路中優(yōu)先級最高者進行通信。(2)當正在通信的鏈路中斷時,保持該鏈路的試圖連接狀態(tài)。激活優(yōu)先級次之的鏈路,若無,則再次之(此鏈路應在切換鏈路集內(nèi))。如果沒有鏈路可以被激活,則認為通信中斷;若激活優(yōu)先級鏈路,則從未被ACK的消息開始發(fā)送。(3)在通信中,高優(yōu)先級的鏈路被激活時,中斷正在使用的鏈路,轉(zhuǎn)移到高優(yōu)先級的鏈路上,從未被ACK的消息開始發(fā)送。(4)末在通信中的鏈路中斷時(由心跳信號偵測得知),保持該鏈路試圖連接狀態(tài),激活優(yōu)先級次之的鏈路,若無,則再次之(在切換鏈路信內(nèi))。如果沒有鏈路可以被激活,則認為通信中斷。(5)末在通信中,高優(yōu)先級的鏈路被激活時,中斷低優(yōu)先級鏈路。 非自動切換模式下的要點是保證在切換過程中數(shù)據(jù)的安全性,不丟失也不重復。向上層提供的非自動切換接口提供三個功能:a.激活某條鏈路;b.將當前通信切換至某條鏈路;c.中止(disable)某條鏈路。在產(chǎn)生通信動作前,上層可以指定目前激活的鏈路(同時中止其它鏈路,使激活鏈路保持在1);如果不能激活指定鏈路,則報告到上層,由上層繼續(xù)進行調(diào)度。激活鏈路只有一條,有通信動作產(chǎn)生時,鏈路層自然采用條鏈路進行通信。如果需要從鏈路A切換到鏈路B,上層必須先激活鏈路B,此時有A/B兩條鏈路激活。但是通信仍在鏈路A進行;然后上層將當前通信切換至鏈路B;鏈路管理層待上條消息發(fā)送成功或失敗后,再切換至鏈路B;最后上層disable鏈路A,使激活鏈路仍然只保持一條。在這種模式下,盡管是非自動切換,但是鏈路管理層仍然對其過程進行干預,保證了數(shù)據(jù)的安全性。鏈路切換流程如圖3。 2.3 節(jié)點動態(tài)加入 新的節(jié)點希望成為某節(jié)點的子節(jié)點時,配置與該節(jié)點(服務器)之間的鏈路,并向該節(jié)點發(fā)出加入申請幀,等待對應回傳,從回傳信息中判斷對方是否允許本節(jié)點加入。與服務器之間有可能多鏈路,申請幀中必須包含所有這些鏈路的信息。 本節(jié)點收到新的客戶端加入本網(wǎng)絡的申請幀時,由服務器操作員審核是否允許該客戶端加入。若允許,從申請幀中獲得與該節(jié)點間所有鏈路的信息寫入鏈路表,并把對方發(fā)送申請幀所使用的鏈路設為激活狀態(tài),然后發(fā)送“成功”應答幀至該節(jié)點,至此,即加入了一個新的子節(jié)點。若未通過審核,則發(fā)送“失敗”應答幀至該節(jié)點。 本系統(tǒng)的優(yōu)點在于:(1)基于超鏈思想,對點到點的多種類型鏈路、多條鏈路進行統(tǒng)一管理,使具體通信事務不必關心鏈路調(diào)度;對外接口簡單,易于二次開發(fā);(2)基于COM技術(shù)和OPC規(guī)范設計思想,把協(xié)議、媒介驅(qū)動、鏈路管理作為獨立的組件,使系統(tǒng)的可擴展性大大增強,可以在基本不改變其他要素的情況下,獨立地升級或增加協(xié)議或媒介驅(qū)動協(xié)議,系統(tǒng)的靈活性和適用范圍大大增加。
評論