李鵬
摘要:為保證實時信息的穩定可靠傳輸,設計了雙網實時信息收發系統。采用雙工熱備設計保證系統可靠性;提出端口自動遷移UDP協議,設計環形數據交換緩沖區,解決了內部信息交換過程中數據包丟失問題;設計系統軟件結構、劃分功能模塊,實現系統信息收發功能。實際工程應用表明,該系統設計科學合理,可靠性高,實時性強,能夠保證信息穩定可靠傳輸。
關鍵詞:系統設計;雙工熱備;信息收發;穩定可靠
中圖分類號:TN915.04 文獻標識碼:A 文章編號:1007-9416(2018)04-0158-03
通常,一個完整的實時信息系統大體上由信息收發、信息處理、信息顯示等系統組成[1]。信息收發系統主要負責接收外部系統或設備的信息并向信息處理系統轉發,同時接收信息處理系統的信息并向外部系統或設備發送;信息處理系統主要負責信息的快速準確處理;信息顯示系統主要負責信息的監視顯示。作為整個實時信息系統的門戶,信息收發系統的可靠性以及信息傳輸的穩定性、信息本身的完整性都顯得極為重要,也是系統設計中需要重點關注的問題。
本文提出了雙網實時信息收發系統設計方案,進行了系統硬件設計和軟件設計,保證了系統的可靠性和信息傳輸的穩定性,在實時信息系統中具有良好的應用價值。
1 系統總體設計
雙網實時信息收發系統由2臺服務器、3臺操作終端及IP信息收發軟件和雙工控制軟件組成,為保證系統可靠性,系統網絡聯接均采用雙網設計[2]。
每臺服務器通過2個千兆以太網口連接到2臺對外接入交換機,實現對外通信;每臺服務器通過2個千兆以太網口連接到2個高速主干網,實現系統內部信息交換;服務器通過2個千兆以太網口連接到2個外設網,操作終端通過2個千兆以太網口連接到2個外設網,實現服務器與操作終端信息交換。系統結構如1所示。
為確保系統可靠性,對影響系統可靠性的關鍵部件采用余度設計(冗余設計)技術,以減少單點故障[3]。余度設計的主要思想是當系統中某一部件發生故障時,因該部件余度單元正常工作而能保證系統正常運行。在進行余度設計時應注意以下問題:
(1)只有在其它可靠性設計不能滿足系統可靠性要求時,或者用其它方法所需的費用比冗余配置更高時,方可采用余度設計。
(2)要保證采用余度設計技術獲得的可靠性,不致因構成余度結構所增加的部件而可能增加的故障所抵消。
實時信息收發系統的服務器采用“雙工熱備”設計,即兩臺服務器構成一個雙工熱備的系統,一臺為主機,另一臺為副機,主副機之間通過專用連接進行互連,專用連接用于傳輸主副機之間交互的信息,采用雙連接可以保證系統的可靠性,同樣的信息將在兩個專用連接上同時傳輸。專用連接采用兩臺服務器的千兆以太網口直接連接的方式。
服務器上運行雙工控制軟件,雙工控制軟件由建立雙工狀態、故障監測與切換、故障服務器重入、請求切換、事件記錄等功能模塊組成。雙工控制軟件負責確定并維護兩臺服務器的雙工狀態(主機或副機),實現系統級的雙工熱備,為上層的應用軟件提供支持。雙工控制軟件還為雙工熱備系統維護了一個虛擬IP地址,虛擬IP地址由主機擁有,當實施雙工切換時,虛擬IP地址也隨之漂移到新的主機上。
2 系統內部通信
信息收發系統對內與原系統內部其他分系統通過雙主干網進行信息傳輸,為保證信息穩定可靠傳輸,避免在通信故障需重建鏈路時造成信息包丟失,設計了端口自動遷移UDP協議,在鏈路重建時,能夠以自適應方式遷移到新端口鏈路上進行通信,保證實時信息不丟失[4]。自適應方式根據通信情況分為主動和被動兩種遷移方式。協議的格式分如圖2所示。
2.1 通信流程
信息收發系統與內部系統之間進行通信時,發送方作為服務端,接收方作為客戶端。首先在客戶端和服務端分配3個端口(分別為n1=4001,n2=4002,n3=4003),并使用整型數組portstatus[n]來記錄各端口的通信狀態情況[5]。進入通信流程前端口進行通信的始化。
(1)客戶端通信流程。在3個端口上分別發送通信包請求建立連接,收到服務器回復的通信包后,將portstatus [n]置為1(初始為0),表示相應端口的通信鏈路已經建立。客戶端首先在n1鏈路發送通信包開始通信,同時監聽n2和 n3端口。當客戶端收到回復通信包的包號與發送通信包的包號相等時,則表示數據包發送成功,可繼續發送下一包并把包號加1。如果回復的通信包的包號不正確或者回復超時,則重發該通信包。若重發超過3次時,將portstatus [n]置為0,主動將通信遷移到新的端口鏈路上,同時重新建立n1鏈路。當在n2或n3端口上監聽到通信包時,表明服務端主動將鏈路遷移到了n2或n3上,客戶端以被動方式將通信遷移到相應端口,同時重建n1鏈路。
(2)服務端通信流程。在端口收到通信包后,分別向客戶端進行回復,同時將portstatus[n]分別置為1(初始為0)。服務端首先通過n1鏈路進行通信,同時監聽n2和 n3端口。若當前接收的包號是上次接收包號加1時,則表示收到正確的通信包。服務端向客戶端回復的通信包包號要與接收的包號相同,如果接收的包號不正確或者超時未收到通信包,則重發上次通信包。若重發超過3次時,采取主動方式遷移鏈路,過程同客戶端。當在n2或 n3端口上監聽到通信包時,表明客戶端主動遷移了鏈路,服務端采取被動方式遷移到相應端口。
2.2 環形緩沖區
為了能夠保證收發數據以及鏈路遷移過程中數據不會被覆蓋丟失,設計中在客戶端和服務端分別增加了環形緩沖區,結構如圖3所示。
初始狀態下緩沖區為空,緩沖區的讀指針rptr和寫指針wptr指向起始地址MIN;當有數據發送時,移動wptr指針將數據寫入緩沖區中;當wptr與rptr指針不相等時,說明緩沖區中有數據寫入,移動rptr將數據從緩沖區讀走;當wptr和rtpr指向MAX時表示緩沖已滿,將指針重置為初始地址MIN,實現緩沖區的循環讀寫。
3 軟件設計
服務器上運行信息收發軟件,兩臺服務器同時工作,主機和副機上的信息收發軟件,接收相同的信息,各自進行相同的處理,主副機得到相同的處理結果,但輸出任務只由主機完成,即由主機向外發送信息包,副機只是作為備份機工作。
信息收發軟件主要是實現接收外部系統及設備的信息并經過格式轉換等處理后對內轉發;接收內部各軟件發送的信息,經過格式轉換等處理后對外發送。信息收發軟件由外部信息接收、雙路由接收重復數據包過濾、對內信息轉發、內部信息接收、對外信息發送、數據記錄、通信狀態及統計信息顯示、時間同步等功能模塊組成,如圖4所示。
(1)外部信息接收功能。根據配置,在約定IP、端口上接收來自外部系統或設備的信息,根據信息來源、信息類型將信息傳送給雙路由接收重復數據包過濾、對內信息轉發、對外信息發送、數據記錄、通信狀態監視等模塊做進一步的處理。
(2)雙路由接收重復數據包過濾功能。接收外部信息接收模塊傳送的來雙網信息,根據要求進行處理,送出一路數據信息給對內信息轉發模塊。
(3)對內信息轉發功能。接收外部信息接收模塊、雙路由接收重復數據包過濾模塊傳送的信息,根據信息來源、信息類型將信息轉發給實時數據處理軟件、指顯服務軟件。
(4)內部信息接收功能。根據配置,在約定的IP、端口上接收來自內部各軟件的信息,信息傳送給對外信息發送模塊做進一步處理。
(5)對外信息發送功能。接收來自內部信息接收、外部信息接收、對內信息轉發模塊的信息,按照要求通過雙網發送給外部系統或設備,并將信息傳送給數據記錄模塊、指顯服務軟件。根據設定的間隔時間,定期產生鏈監信息,發送給外部系統和設備。
(6)數據記錄功能。接收來自外部信息接收、對外數據發送模塊的信息,按照收發方向、信息來源/目的將信息分類記錄到不同文件中。
(7)通信狀態及統計信息顯示功能。顯示通信狀態、數據收發統計、檢查結果等信息。
(8)時間同步功能。接收內部系統發送的絕對時間信息幀,根據設定的間隔時間,定期校準本機的系統時間。
4 結語
本文研究了雙網實時信息收發系統設計問題,采用雙網聯接、雙工熱備技術實現系統高可靠性;提出端口自動遷移UDP協議,在通信故障需重建鏈路時,能夠以自適應方式遷移到新端口鏈路上進行通信,可避免數據包丟失;設計環形數據交換緩沖區,解決了內部信息交換過程中數據包覆蓋丟失問題;設計了系統軟件結構,劃分了功能模塊,實現了雙網實時信息收發系統功能。實際工程應用表明,該系統設計科學合理,保證了實時信息收發系統的可靠性和信息傳輸的穩定性,在實時信息系統中具有良好的應用價值。
參考文獻
[1]李丹,陳貴海,任豐原,等.數據中心網絡的研究進展與趨勢[J].計算機學報,2014,37(2):259-274.
[2]朱桂明,謝向輝,郭得科,陸菲菲,陶志榮.一種高吞吐量、高可擴展數據中心網絡結構[J]. 軟件學報,2014,25(6):1339-1351.
[3]吳俊,段東立,趙娟.網絡系統可靠性研究現狀與展望[J].復雜系統與復雜性科學,2011,8(2):77-86.
[4]張新,饒若楠,郭 寧.多端口自適應UDP通信協議的設計與實現[J].計算機工程與設計,2017,38(4):846-851.
[5]趙小歡,夏靖波,朱長虹.高速網絡UDP流超時策略研究[J].合肥工業大學學報,2013,36(2):176-180.