專利名稱:一種調變一體化系統下的網卡狀態監測與tcp通信方法
技術領域:
本發明屬電力系統信息技術領域,涉及到一種調變一體化系統下的網卡狀態監測與TCP通信方法。
背景技術:
在調度自動化系統中,為提供網絡通信的可靠性,服務器節點上一般安裝2塊網卡,連接2臺交換機且2臺交換機級聯。當網卡或通信線路連接出現故障,發生通信異常時,通過網卡切換算法節點能主動切換TCP通信到備份網卡進行通信。目前常用的算法分為兩類:一類是在操作系統層面實現的“網卡聚合”技術,如IBM AIX上的EtherChanneI,HP-UX上的 APA,COMPAQ ALPHA 上的 NetRain,SUN Solaris 上的 MultiPathing 以及 Windows 上的NICExpress等,這些操作系統實現的算法配置各不相同,在TCP通信速度、丟包情況等方面也都不相同,且每種方法只適用于一種操作系統,在各種操作系統上不具有通用性;另一類是在應用層面實現的雙網熱備冗余方法,其特點在于實現方便、部署簡單、通用性好、可靠性高,但其網卡狀態監測需要通過向網絡上的交換機發送ICMP報文,并接收應答報文來實現判斷網絡通斷的情況,因此在無法得知交換機IP地址的情況下該方法無法使用。在變電站自動化系統中,變電站層一般采用雙網不級聯的網絡結構,即每個節點上的兩塊網卡分別連接到2臺交換機上,在2臺交換機之間不連接級聯線。目前國內外廠家主要采用雙網冗余傳送的方式,在雙網不級聯的網絡結構傳輸數據。具體而言,一份數據在雙網上同時發送,其它節點接收雙網數據后,需要先與緩存的已處理數據進行比較,如果緩存中沒有則繼續處理,否則將其丟棄。該方式不但消耗接收節點的CPU資源和緩沖區空間,而且增加了數據處理時間,影響數據實時性,同時該方式適合于UDP報文數據的發送,對于可靠的TCP通信并不適用。綜上所述,調度自動化系統和變電站自動化系統有各自不同的雙網架構,而為了讓調度自動化和變電站自動化更好的結合在一起調度與變電站一體化系統已成為今后發展的趨勢,因此如何能夠在滿足兩者網絡架構需求的前提下,進行TCP的可靠、安全通信是需要解決的重要問題。
發明內容
本發明所要解決的技術問題是提供了一種能夠同時滿足調度自動化系統與變電站自動化系統網絡需要的網卡狀態監測與TCP通信方法。為了實現上述目的,本發明是采取以下的技術方案來實現的:
一種調變一體化系統下的網卡狀態監測與TCP通信方法,其特征在于,包括下列步驟:
1)為調度與變電站一體化系統封裝統一的TCP通信接口模塊,實現在雙網級聯與雙網不級聯兩種網絡架構下的TCP高效、安全、可靠通信;
2)在每個節點上部署網卡監測程序,實現對網絡中所有節點兩塊網卡狀態的監測功能,該網卡監測程序能夠滿足對調度與變電站一體化系統所具有的雙網級聯與雙網不級聯兩種網絡架構的節點網卡監測;
3)創建程序內存與共享內存同時記錄網卡狀態,將頻繁的狀態更新操作在程序內存中完成,共享內存中只進行定時的更新,從而提高系統獲取共享內存中數據的性能;
4)設計共享內存調度算法,實現以不加任何互斥鎖的方式從共享內存中獲取網卡狀態信息,從而進一步提高系統獲取共享內存中數據的性能;
5)節點的兩塊網卡分別對外發送m)P組播報文,報文內容包括系統名、節點名和節點ip地址,在接收時需要驗證系統名,以避免不同系統之間的相互干擾。6)在數據傳輸的過程中,TCP通信模塊會實時獲取共享內存中對端網卡的網卡狀態,一旦網卡狀態變為斷網,則認為通信中斷,保證通信的實效性;
7)對于共享內存中沒有記錄的節點,認為該節點非本系統內節點,將不會進行通信,從而保證整個系統的安全訪問。前述的一種調變一體化系統下的網卡狀態監測與TCP通信方法,其特征在于:在所述步驟4)中,所述共享內存調度算法包括設定共享內存的結構和共享內存的讀取、寫入規則,其中共享內存的結構為,共享內存中的第一行僅存儲有效記錄個數,從第二行開始存儲各節點的網卡狀態信息,從先到后依次存儲節點名、網卡個數、I號網卡名、2號網卡名、I號IP地址、2號IP地址、I號網卡狀態以及2號網卡狀態。前述的一種調變一體化系統下的網卡狀態監測與TCP通信方法,其特征在于:在所述步驟4)中,所述共享內存調度算法包括設定共享內存的結構和共享內存的讀取、寫入規則,其中共享內存的讀取、寫入規則為:在讀取記錄時,先讀取總記錄個數,再讀具體記錄數據,讀取每條記錄數據時,先讀取網卡個數,再讀每塊網卡名、IP地址和網卡狀態。其中節點名、網卡名、IP地址在寫入之后允許發生變化,因此讀取時不需要加互斥鎖;網卡個數和網卡狀態可能會改變,但根據其數據類型特點讀取時也不要加互斥鎖。對于寫入記錄,規則要求共享內存中記錄數和網卡個數只能増加,不能刪除,當増加記錄時需要加互斥鎖(增加記錄允許并發),增加記錄時需先在共享內存中存放具體記錄數據,然后將總記錄個數加
I。通過共享內存調度算法的設計,對于最頻繁的讀取和更新網卡狀態操作可以不需要加互斥鎖,從而保證了系統的實時性。前述的一種調變一體化系統下的網卡狀態監測與TCP通信方法,其特征在于:在所述步驟6)中,所述TCP通信模塊實時獲取共享內存中對端網卡的網卡狀態方法為,將TCP的睡眠等待方式改為半睡眠半輪詢的方式,具體為睡眠等待ー設定時間如600毫秒后從共享內存中讀取一次網卡狀態,如果網卡狀態為正常則繼續睡眠等待ー設定時間如600毫秒,如此循環直到等待結束,如果網卡狀態為斷網則中斷通信,保證通信的實效性。支持系統內節點的動態增加,方便系統的維護與升級,新増加的節點不會影響正在工作的其他系統內節點,也不需要修改任何其他節點的配置文件。調度與變電站一體化系統內節點的動態增加過程為:當系統中有新的節點需要加入時,新增節點向兩個網絡上發送組播報文,當其他節點收到新增節點的組播報文時自動將新節點加入到本機的共享內存中,并實時更新該節點的網卡狀態。本發明所達到的有益效果:
本發明為調度與變電站一體化系統所具有的雙網級聯和雙網無級聯兩中網絡架構,提供了一種網卡狀態監測的方法,通過在調度與變電站一體化系統的各個節點上部署網卡監測程序,接收其他節點發送的組播報文,實現對系統內其他節點上網卡狀態的實時監測,同時通過使用高效算法從共享內存中獲取監測到的對端節點的網卡狀態,同時為調度與變電站一體化系統提供了一套高效、安全、可靠的TCP通信方法。
圖1為本發明的調度與變電站一體化系統網絡架構示意圖。圖2為本發明的網卡監測程序工作流程圖。圖3為本發明的共享內存數據結構圖。圖4為本發明的數據流程示意圖。
具體實施例方式下面是本發明的一個優選實施例,包括了采用本發明的方法實現的一個具體的調度與變電站一體化系統網絡架構下的網卡狀態監測與TCP通信的過程。調度與變電站一體化系統網絡架構如圖1所示,包括雙網級聯網絡架構和雙網無級聯網絡架構。雙網級聯網絡架構需要為網絡上的服務器節點配置2塊網卡,連接2臺交換機且2臺交換機之間使用網線級聯。雙網無級聯網絡架構是在雙網級聯網絡架構下去除2臺交換機之間的級聯線。本發明需要在每臺服務器節點上啟動一個網卡監測程序,該程序的工作流程如圖2所示。網卡監測程序首先從配置文件中獲取系統內所有節點的名稱和IP地址,根據所有節點的名稱和IP地址建立如圖3所示的程序內存和共享內存空間。內存中的第一行僅存儲有效記錄個數,從第二行開始存儲各節點的網卡狀態信息,從先到后依次存儲節點名、網卡個數、I號網卡名、2號網卡名、I號IP地址、2號IP地址、I號網卡狀態以及2號網卡狀態。完成共享內存的創建后,程序將會啟動發送組播過程與接收組播過程。在發送組播過程中需要獲取本機網卡信息并檢查本地網卡狀態,在網卡狀態正常的情況下,分別使用本節點的兩塊網卡對外發送UDP組播報文,報文內容包括系統名、節點名和節點IP地址,在兩次發送完成后將會等待200毫秒再進行重新發送。接收組播過程負責接收其他節點發來的UDP組播報文,解析其中的系統名、節點名和節點IP地址,并過濾掉不是本系統的報文,記錄接收到的系統中其他節點發送的報文時間。網卡監測程序還需要每500毫秒更新一次共享內存中的節點網卡狀態信息,再更新時檢查程序內存中記錄的接收其他節點的報文時間,如果該時間與更新時間相比超過了 600毫秒(即丟失了 2-3次UDP組播報文),則判斷對方該網卡狀態為斷網。網卡監測程序能夠根據網絡實際狀態實時更新本節點共享內存中的各個其他節點的網卡狀態,如圖4所示,在本發明提出的TCP通信模塊中,將使用共享內存中的信息,并為上層應用程序提供一套在調度與變電站一體化系統網絡架構下的可靠TCP通信接口。在TCP通信模塊中創建TCP鏈路之前,會從共享內存中讀取對端節點兩塊網卡的網卡狀態,并與網卡狀態正常的一塊網卡建立TCP連接。在數據傳輸的過程中,TCP通信模塊會實時獲取共享內存中對端網卡的網卡狀態,一旦網卡狀態變為斷網,則認為通信中斷,保證通信的實效性。在從共享內存獲取對端節點網卡狀態的過程中,如果沒有發現對端節點的記錄,則認為該節點非本系統內節點,模塊將會主機拒絕建立鏈路與中斷通信,從而保證整個系統的安全訪問。
本發明支持節點的動態加入,當系統中有新的節點需要加入時,不需要停止系統內其他已經存在的節點的工作,也不需要修改其他節點上的配置文件。新增節點將會向兩個網絡上發送組播報文,當其他節點收到新增節點的組播報文時會自動將新節點加入到本機的共享內存中,并實時更新該節點的網卡狀態。以上僅以最佳實施例對本發明做進一步的說明,然其并非對本發明的限定,本發明的保護范圍以表示在權利要求的內容為準。
權利要求
1.一種調變一體化系統下的網卡狀態監測與TCP通信方法,其特征在于:包括下列步驟: 1)為調度與變電站一體化系統封裝統一的TCP通信接口模塊,調度與變電站一體化系統中包含雙網級聯與雙網不級聯兩種網絡架構; 2)在每個節點上部署網卡監測程序,對網絡中所有節點處兩塊網卡狀態進行監測,該網卡監測程序同時對雙網級聯與雙網不級聯兩種網絡架構的節點網卡監測; 3)創建程序內存與共享內存,同時記錄網卡狀態,共享內存中定時進行更新; 4)采用共享內存調度算法,以不加任何互斥鎖的方式從共享內存中獲取網卡狀態信息; 5)節點的兩塊網卡分別對外發送m)P組播報文,報文內容包括系統名、節點名和節點IP地址,在接收時驗證系統名; 6)在數據傳輸的過程中,TCP通信模塊實時獲取共享內存中對端節點網卡的網卡狀態,網卡狀態變為斷網時,則中斷通信; 7)對于共享內存中沒有記錄的節點,認定為該節點非本系統內節點,拒絕進行通信。
2.根據權利要求1所述的一種調變一體化系統下的網卡狀態監測與TCP通信方法,其特征在于:在所述步驟4)中,所述共享內存調度算法包括設定共享內存的結構和共享內存的讀取、寫入規則,其中共享內存結構為,共享內存中的第一行存儲有效記錄個數,從第二行開始存儲各節點的網卡狀態信息,從先到后依次存儲節點名、網卡個數、I號網卡名、2號網卡名、I號IP地址、2號IP地址、I號網卡狀態以及2號網卡狀態。
3.根據權利要求1所述的一種調變一體化系統下的網卡狀態監測與TCP通信方法,其特征在于:在所述步驟4)中,所述共享內存調度算法包括設定共享內存的結構和共享內存的讀取、寫入規則,其中共享內存的讀取、寫入規則為:對于讀取和更新網卡狀態操作不加互斥鎖,同時支持動態的增加記錄個數。
4.根據權利要求1所述的一種調變一體化系統下的網卡狀態監測與TCP通信方法,其特征在于:在所述步驟6)中,所述TCP通信模塊實時獲取共享內存中對端網卡的網卡狀態的方法為,將TCP的睡眠等待方式設置為半睡眠半輪詢的方式,調度算法每睡眠等待一設定時間后從共享內存中獲取一次網卡狀態,如果網卡狀態為正常則繼續睡眠等待,如此循環直到等待結束,如果網卡狀態為斷網則中斷通信。
5.根據權利要求1所述的一種調變一體化系統下的網卡狀態監測與TCP通信方法,其特征在于:調度與變電站一體化系統內節點的動態增加過程為:當系統中有新的節點需要加入時,新增節點向兩個網絡上發送組播報文,當其他節點收到新增節點的組播報文時自動將新節點加入到本機的共享內存中,并實時更新該節點的網卡狀態。
全文摘要
本發明公開了一種調變一體化系統下的網卡狀態監測與TCP通信方法,通過在調度與變電站一體化系統的各個節點上部署網卡監測程序,接收其他節點發送的組播報文,實現對系統內其他節點上網卡狀態的實時監測,同時通過使用高效算法從共享內存中獲取監測到的對端節點的網卡狀態,實現高效、安全和可靠的TCP通信。
文檔編號H04L29/06GK103139018SQ201310113829
公開日2013年6月5日 申請日期2013年4月3日 優先權日2013年4月3日
發明者萬書鵬, 翟明玉, 葛以踴, 雷寶龍, 馬卓, 高寶山 申請人:國電南瑞科技股份有限公司