两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于擁塞控制的非面向連接可靠冗余網絡傳輸方法與流程

文檔序號:12492546閱讀:585來源:國知局
基于擁塞控制的非面向連接可靠冗余網絡傳輸方法與流程

本發(fā)明涉及一種軌道交通信號系統(tǒng)的網絡傳輸技術,尤其是涉及一種基于擁塞控制的非面向連接可靠冗余網絡傳輸方法。



背景技術:

軌道交通信號系統(tǒng)對通信網絡要求具有高穩(wěn)定性和高可靠性,目前通常采用基于Socket底層API維護的通訊方式,傳輸層一般采用傳輸控制協(xié)議TCP或者UDP,底層采用雙網冷備的方式組成冗余通信網,這些方法存在以下的不足:

1)雙網通訊采用冷備的方式,在網絡切換時會出現(xiàn)瞬間的閃斷和設備的重新初始化。

2)UDP是一種無連接的傳輸控制協(xié)議,無法保證數(shù)據的可靠傳輸。

3)TCP協(xié)議是面向連接的傳輸協(xié)議,實時性比較差、效率低、占用系統(tǒng)資源高。

4)當通信過程中發(fā)生故障,無法快速定位故障的問題所在。



技術實現(xiàn)要素:

本發(fā)明的目的就是為了克服上述現(xiàn)有技術存在的缺陷而提供一種安全、冗余、高效的基于擁塞控制的非面向連接可靠冗余網絡傳輸方法。

本發(fā)明的目的可以通過以下技術方案來實現(xiàn):

一種基于擁塞控制的非面向連接可靠冗余網絡傳輸方法,該方法將網絡通信模塊抽象為三層:RUDP層(可靠用戶數(shù)據報協(xié)議層)、RMP層(冗余層)、UDP層(用戶數(shù)據報協(xié)議層),該方法包括以下步驟:

RUDP層負責實現(xiàn)消息的可靠傳輸,增加RUDP層消息頭,通過滑動窗口SWS發(fā)送,并校驗接收包,回復確認序列,實現(xiàn)超時重發(fā)機制;

RMP層負責接收RUDP層傳來的消息,并增加冗余層消息頭,實現(xiàn)了冗余層的管理協(xié)議,接收時負責過濾冗余消息;

UDP層配置紅藍兩個網絡,將每一包RMP消息分別通過紅藍網發(fā)送出去,并負責將收到的消息傳給RMP層。

所述的RUDP層的任務包括鏈接維護任務、發(fā)送任務和接收任務。

所述的鏈接維護任務具體為:

鏈接維護任務周期性判斷各鏈接的狀態(tài),如果狀態(tài)為斷開則發(fā)送建立鏈接請求包,接收方收到后回復鏈接響應包,發(fā)送方回復確認包,通過三次握手建立通信鏈接;建立鏈接后定時發(fā)送心跳包消息維護鏈接,若不能收到對方的心跳回復包則斷開鏈接。

所述的發(fā)送任務具體為:

a1)遍歷所有鏈接狀態(tài)為良好的通道,看是否有消息等待發(fā)送,如果有則執(zhí)行步驟b1),如果沒有則延時繼續(xù)執(zhí)行a1);

b1)判斷是否已收到對方回復的ReplySN,如果沒有則執(zhí)行c1),已收到則執(zhí)行d1);

c1)判斷該通道等待時間是否已超時,如果已超時則判斷重發(fā)次數(shù)是否超過閾值,超過則斷開鏈接,如果未超過閾值則重發(fā)該分組消息;如果未超時,則繼續(xù)等待,并返回步驟a1);

d1)根據回復的ReplySN更新發(fā)送隊列,執(zhí)行擁塞控制算法,更新發(fā)送窗口SWS;

e1)從發(fā)送隊列中讀取SWS包消息發(fā)送;

f1)等待信號量Cond_Send,該信號量由接收任務收到ReplySN時釋放。

所述的接收任務具體為:

a2)接收消息,判斷當前收到消息對應鏈接狀態(tài)是否為良好,若為是則執(zhí)行步驟b2),否則丟棄該消息;

b2)判斷該消息是否為回復序列包,若為是則更新ReplySN=SN,釋放信號量Cond_Send給發(fā)送任務,執(zhí)行步驟a2);如果不是則執(zhí)行步驟c2);

c2)判斷該消息SN是否大于已接收成功ReceivedSN,如果否則丟棄該消息,執(zhí)行步驟a2);如果大于,則執(zhí)行步驟d2);

d2)判斷臨時接收隊列是否已滿,若為是則執(zhí)行e2),未滿則執(zhí)行a2);

e2)處理臨時接收隊列,校驗有序包,將接收成功的消息傳給應用層;

f2)更新接收成功的ReceivedSN,并回復給發(fā)送方,清空臨時接收隊列,執(zhí)行a2)。

所述的擁塞控制算法具體為:

a3)初始化發(fā)送滑動窗口SWS為設定值SWSinit,SWStotal=0,count=0;

b3)更新SWStotal,count,計算平均SWSaver

c3)判斷當前回復序列號ReplySN是否大于已發(fā)送的序列號SendedSN,若為是則執(zhí)行e3),否則執(zhí)行d3);

d3)更新SWS=SWS/2,若SWS<1,則SWS=1,執(zhí)行步驟b3);

e3)判斷若ReplySN>SendedSN+SWS,則重置SWS,執(zhí)行步驟a3),否則執(zhí)行步驟f3);

f3)判斷若ReplySN=SendedSN+SWS,執(zhí)行步驟g3),否則更新SWS=ReplySN-SendedSN,執(zhí)行步驟b3);

g3)判斷若SWS>SWSaver,SWS=SWS+1;否則SWS=SWSaver,執(zhí)行步驟b3)。

所述的RMP層處理消息的具體過程如下:

1)初始化;

2)等待調用接口,判斷是發(fā)送消息還是接收消息,若為發(fā)送消息,執(zhí)行步驟3),若為接收消息,執(zhí)行步驟4);

3)接收應用層消息組包成RMP消息,并復制為紅藍網兩包消息,兩包消息包含的應用數(shù)據、序列號SeqID完全一致,更新序列號SeqID=SeqID+1,調用發(fā)送回調函數(shù)傳給RUDP層;

4)解包RMP消息,并判斷是否為重復的消息,若是則丟棄,若不是則將該消息SeqID寫入接收記錄表,并調用接收回調函數(shù)傳給應用。

所述的UDP層負責將消息發(fā)送到遠端節(jié)點和接收遠端發(fā)來的消息,包括發(fā)送接口和接收任務:

1)發(fā)送消息時根據消息的冗余層消息頭判斷屬于紅網還是藍網,然后通過對應的發(fā)送接口將其發(fā)送到遠端節(jié)點;

2)接收任務循環(huán)偵聽是否有消息到來,收到消息后調用接收回調函數(shù),將該消息傳給RUDP層。

與現(xiàn)有技術相比,本發(fā)明具有以下優(yōu)點:

1)本發(fā)明是一種安全、冗余、高效的通用網絡通信模塊,通過抽象分層實現(xiàn),降低了各層之間的耦合性,同時也提高了靈活性和實用性。

2)本發(fā)明的冗余層實現(xiàn)紅藍網熱備冗余,兩個網絡同時工作,當出現(xiàn)單網故障不會對系統(tǒng)產生任何影響,提高了整個網絡系統(tǒng)的可靠性。

3)本發(fā)明的RUDP層通過引入三次握手建立鏈接,接收校驗、超時重發(fā)、鏈接維護等機制,使面向無連接的UDP具有可靠數(shù)據傳輸,同時根據網絡狀態(tài)采用擁塞控制算法動態(tài)調整滑動窗口,能夠明顯提高通信的效率和速度。

4)本發(fā)明提供錯誤日志追蹤功能,在初始化、發(fā)送、接收消息時,若發(fā)生錯誤,會產生錯誤日志故障樹,同時清晰的層次結構也有助于問題快速定位,使用本發(fā)明可以提高軟件調試的效率。

附圖說明

圖1為本發(fā)明的通信網絡層次結構示意圖;

圖2為本發(fā)明RUDP三次握手建立鏈接示意圖;

圖3為本發(fā)明RUDP發(fā)送任務處理流程圖圖;

圖4為本發(fā)明RUDP接收任務處理流程圖;

圖5為本發(fā)明RUDP擁塞控制算法流程圖;

圖6為本發(fā)明RMP消息處理流程圖;

圖7為本發(fā)明UDP層消息處理流程圖。

具體實施方式

下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明的一部分實施例,而不是全部實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都應屬于本發(fā)明保護的范圍。

本發(fā)明的結構如圖1所示,網絡通信模塊可以抽象為三層:RUDP層、冗余層(RMP)、UDP層。RUDP層負責實現(xiàn)消息的可靠傳輸,增加RUDP層消息頭,通過滑動窗口(SWS)發(fā)送,并校驗接收包,回復確認序列,實現(xiàn)超時重發(fā)機制;RMP層負責接收RUDP層傳來的消息,并增加冗余層消息頭,實現(xiàn)了冗余層的管理協(xié)議,接收時負責過濾冗余消息;UDP層配置紅藍兩個網絡,將每一包RMP消息分別通過紅藍網發(fā)送出去,并負責將收到的消息傳給RMP層。

一、RUDP層主要由鏈接維護任務、發(fā)送任務和接收任務組成,具體過程如下:

1)鏈接維護任務周期性判斷各鏈接的狀態(tài),如果狀態(tài)為斷開則發(fā)送建立鏈接請求包,接收方收到后回復鏈接響應包,發(fā)送方回復確認包,通過三次握手建立通信鏈接;建立鏈接后定時發(fā)送心跳包消息維護鏈接,若不能收到對方的心跳回復包則斷開鏈接。如圖2所示。

2)發(fā)送任務的處理流程如圖3所示:

a1)遍歷所有鏈接狀態(tài)為良好的通道,看是否有消息等待發(fā)送,如果有則執(zhí)行步驟b1),如果沒有則延時繼續(xù)執(zhí)行a1);

b1)判斷是否已收到對方回復的ReplySN,如果沒有則執(zhí)行c1),已收到則執(zhí)行d1);

c1)判斷該通道等待時間是否已超時,如果已超時則判斷重發(fā)次數(shù)是否超過閾值,超過則斷開鏈接,如果未超過閾值則重發(fā)該分組消息;如果未超時,則繼續(xù)等待,并返回步驟a1);

d1)根據回復的ReplySN更新發(fā)送隊列,執(zhí)行擁塞控制算法,更新發(fā)送窗口SWS;

e1)從發(fā)送隊列中讀取SWS包消息發(fā)送;

f1)等待信號量Cond_Send,該信號量由接收任務收到ReplySN時釋放。

3)接收任務的處理流程如圖4所示:

a2)接收消息,判斷當前收到消息對應鏈接狀態(tài)是否為良好,若為是則執(zhí)行步驟b2),否則丟棄該消息;

b2)判斷該消息是否為回復序列包,若為是則更新ReplySN=SN,釋放信號量Cond_Send給發(fā)送任務,執(zhí)行步驟a2);如果不是則執(zhí)行步驟c2);

c2)判斷該消息SN是否大于已接收成功ReceivedSN,如果否則丟棄該消息,執(zhí)行步驟a2);如果大于,則執(zhí)行步驟d2);

d2)判斷臨時接收隊列是否已滿,若為是則執(zhí)行e2),未滿則執(zhí)行a2);

e2)處理臨時接收隊列,校驗有序包,將接收成功的消息傳給應用層;

f2)更新接收成功的ReceivedSN,并回復給發(fā)送方,清空臨時接收隊列,執(zhí)行a2)。

4)RUDP擁塞控制算法流程如圖5所示:

a3)初始化發(fā)送滑動窗口SWS為設定值SWSinit,SWStotal=0,count=0;

b3)更新SWStotal,count,計算平均SWSaver;

c3)判斷當前回復序列號ReplySN是否大于已發(fā)送的序列號SendedSN,若為是則執(zhí)行e3),否則執(zhí)行d3);

d3)更新SWS=SWS/2,若SWS<1,則SWS=1,執(zhí)行步驟b3);

e3)判斷若ReplySN>SendedSN+SWS,則重置SWS,執(zhí)行步驟a3),否則執(zhí)行步驟f3);

f3)判斷若ReplySN=SendedSN+SWS,執(zhí)行步驟g3),否則更新SWS=ReplySN-SendedSN,執(zhí)行步驟b3);

g3)判斷若SWS>SWSaver,SWS=SWS+1;否則SWS=SWSaver,執(zhí)行步驟b3)。

二、RMP處理消息如圖6所示,具體過程如下:

1)初始化;

2)等待調用接口,判斷是發(fā)送消息還是接收消息,若為發(fā)送消息,執(zhí)行步驟3),若為接收消息,執(zhí)行步驟4);

3)接收應用層消息組包成RMP消息,并復制為紅藍網兩包消息,兩包消息包含的應用數(shù)據、序列號SeqID完全一致,更新序列號SeqID=SeqID+1,調用發(fā)送回調函數(shù)傳給RUDP層;

4)解包RMP消息,并判斷是否為重復的消息,若是則丟棄,若不是則將該消息SeqID寫入接收記錄表,并調用接收回調函數(shù)傳給應用。

三、UDP層負責將消息發(fā)送到遠端節(jié)點和接收遠端發(fā)來的消息,如圖7所示,主要由發(fā)送接口和接收任務組成:

1)發(fā)送消息時根據消息的冗余層消息頭判斷屬于紅網還是藍網,然后通過對應的發(fā)送接口將其發(fā)送到遠端節(jié)點。

2)接收任務循環(huán)偵聽是否有消息到來,收到消息后調用接收回調函數(shù),將該消息傳給RUDP層。

具體實施例

1)配置:本地節(jié)點A(RUDP層msgType=0x01,滑動窗口SWSinit=5,RMP層msgType=0x01,紅網IP=192.168.1.11,PORT=20000,藍網IP=192.168.2.11,PORT=30000)。遠程節(jié)點B(RUDP層msgType=0x01,滑動窗口SWSinit=5,RMP層msgType=0x01,紅網IP=192.168.1.12,PORT=20001,藍網IP=192.168.2.12,PORT=30001)。

2)初始化:調用RUDP層、RMP層、UDP層初始化接口完成初始化,如果失敗則生成故障樹日志。

3)發(fā)送消息:

a)應用A將msgType=0x01的10包消息寫入RUDP發(fā)送隊列。鏈接維護任務判斷msgType=0x01的鏈接狀態(tài)是否為良好,如果為斷開則發(fā)起三次握手建立鏈接。從發(fā)送隊列中取出SWSinit=5包消息,SN=1,2,3,4,5,傳給RMP層發(fā)送。若收到對方回復的ReplySN為5,則更新SWS=5,繼續(xù)發(fā)送SN=6,7,8,9,10。超時未收到回復繼續(xù)發(fā)送該分組消息。

b)RMP組包消息并將每包消息復制成2包(SeqID相同),共10包消息,調用發(fā)送回調函數(shù)將消息傳給UDP層。

c)UDP層首先判斷RMP消息所屬網絡,再調用UDP發(fā)送函數(shù)將消息發(fā)出。

d)發(fā)送過程中若出現(xiàn)錯誤,則生成故障樹日志,能很快定位問題。

4)接收消息:

a)應用B的UDP層任務收到10包消息,將消息通過接收回調函數(shù)傳給RMP層。

b)RMP依次判斷這10包消息的SeqID號,過濾冗余消息后將5包傳給RUDP層。

c)RUDP依次解析并處理5包消息。判斷msgType=0x01的鏈接狀態(tài)為正常,且該通道ReceivedSN=0,5包消息的SN=1,2,3,4,5均為有效消息,寫入臨時接收隊列并處理,將這5包消息送到應用層。回復ReplySN=5給A。

d)接收過程中若出現(xiàn)錯誤,則生成故障樹日志,快速定位問題。

以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內,可輕易想到各種等效的修改或替換,這些修改或替換都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應以權利要求的保護范圍為準。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
闽清县| 宁阳县| 景谷| 襄城县| 连城县| 泰顺县| 肥东县| 宽城| 涿鹿县| 绥芬河市| 南岸区| 前郭尔| 昌乐县| 衡山县| 武隆县| 光泽县| 清水县| 醴陵市| 满洲里市| 广汉市| 上饶县| 兰考县| 郯城县| 沈丘县| 彰化市| 廊坊市| 石台县| 收藏| 青岛市| 平邑县| 朝阳区| 太保市| 宜黄县| 宜昌市| 沙田区| 高台县| 安仁县| 宁河县| 濮阳市| 顺义区| 两当县|