一種基于ip協(xié)議擴展的網(wǎng)絡(luò)冗余容錯方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種基于IP協(xié)議擴展的網(wǎng)絡(luò)冗余容錯 方法及系統(tǒng)。
【背景技術(shù)】
[0002] 網(wǎng)絡(luò)通信在智能變電站自動化系統(tǒng)中起著重要作用。為了避免通信故障對系統(tǒng)通 信安全造成不良影響,需要進行網(wǎng)絡(luò)冗余通信設(shè)計。
[0003] 現(xiàn)有的冗余通信設(shè)計方案,或?qū)τ布途W(wǎng)絡(luò)拓撲有依賴,導(dǎo)致部署應(yīng)用環(huán)境復(fù)雜 和應(yīng)用成本較高;或在發(fā)生鏈路故障時候,切換時間較長,不能滿足實時性要求。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)的不足,提供一種基于IP協(xié)議擴展 的網(wǎng)絡(luò)冗余容錯方法及系統(tǒng)。
[0005] 本發(fā)明以Linux操作系統(tǒng)為平臺,在內(nèi)核協(xié)議棧的IP網(wǎng)絡(luò)層,通過對IP協(xié)議進行 擴展為冗余網(wǎng)絡(luò)通信提供了一種全新的解決方案。
[0006] 本發(fā)明對IP協(xié)議擴展主要體現(xiàn)在以下三個方面:
[0007] (1) IP選項的擴展。包括專有IP選項的定義及其處理。
[0008] (2)在IP協(xié)議數(shù)據(jù)包的發(fā)送路徑上增加冗余數(shù)據(jù)發(fā)送處理分支。
[0009] (3)在IP協(xié)議數(shù)據(jù)包的接收路徑上增加冗余數(shù)據(jù)接收處理分支。
[0010] 本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種基于IP協(xié)議擴展的網(wǎng)絡(luò)冗余容 錯方法,包括數(shù)據(jù)包發(fā)送端的如下發(fā)送步驟:
[0011] 步驟la,接收傳輸層發(fā)送的數(shù)據(jù)包;
[0012] 步驟2a,判斷所述數(shù)據(jù)包是否屬于冗余通信,如果是執(zhí)行步驟3a,否則執(zhí)行步驟 4a ;
[0013] 步驟3a,通過IP協(xié)議擴展的網(wǎng)絡(luò)冗余流程處理所述數(shù)據(jù)包,執(zhí)行步驟5a;
[0014] 步驟4a,通過協(xié)議棧正常流程處理所述數(shù)據(jù)包,執(zhí)行步驟5a;
[0015] 步驟5a,經(jīng)鏈路層發(fā)送所述數(shù)據(jù)包。
[0016]本發(fā)明的有益效果是:本發(fā)明基于對IP協(xié)議進行擴展,完全基于軟件實現(xiàn),不依 賴特殊設(shè)備,對網(wǎng)絡(luò)拓撲無要求,并具有單條鏈路故障時〇延時切換特性,可滿足智能變電 站等領(lǐng)域?qū)?shù)據(jù)通信的高實時性和可靠性的要求。
[0017] 在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進。
[0018] 進一步,步驟3a的具體實現(xiàn)為:
[0019] 步驟3. la,查看主包路由緩存是否存在,如果是執(zhí)彳丁步驟3. 2a,否則執(zhí)彳丁步驟 3. 4a ;
[0020] 步驟3. 2a,構(gòu)建主包專有IP選項,復(fù)制主包生成從包,經(jīng)主鏈路發(fā)送主包,發(fā)送成 功則更新主包發(fā)送計數(shù),否則記錄主包發(fā)送失??;
[0021] 步驟3. 3a,取從包,為從包進行路由,路由成功則修改從包配置參數(shù),經(jīng)從鏈路發(fā) 送從包,發(fā)送成功則更新從包發(fā)送計數(shù),否則記錄從包發(fā)送失敗,執(zhí)行步驟3. 5a,如果路由 失敗則記錄從包發(fā)送失敗,執(zhí)行步驟3. 5a ;
[0022] 步驟3. 4a,為主包進行路由,路由成功執(zhí)行步驟3. 2a,否則復(fù)制主包生成從包,構(gòu) 建從包專有IP選項,為從包進行路由,路由成功則經(jīng)從鏈路發(fā)送從包,發(fā)送成功則更新從 包發(fā)送計數(shù),否則記錄從包發(fā)送失敗,執(zhí)行步驟3. 5a,路由失敗則記錄從包發(fā)送失敗,執(zhí)行 步驟3. 5a ;
[0023] 步驟3. 5a,判斷主包和從包的發(fā)送情況,如果主包和從包均發(fā)送失敗,則返回發(fā)送 失敗,否則返回發(fā)送成功。
[0024] 采用上述進一步方案的有益效果:通過在IP網(wǎng)絡(luò)層發(fā)送路徑增加冗余發(fā)送分支 來實現(xiàn)冗余發(fā)送功能,實現(xiàn)了數(shù)據(jù)分流處理:普通IP數(shù)據(jù)包走協(xié)議棧正常發(fā)送流程;屬于 冗余通信的IP數(shù)據(jù)包進入冗余發(fā)送分支處理。實現(xiàn)了正常協(xié)議通信和冗余通信相互獨立、 互不干擾。
[0025] 進一步,步驟3. 2a中構(gòu)建主包專有IP選項或步驟3. 4a中構(gòu)建從包專有IP選項 的具體實現(xiàn)為:獲取流水序列號、本半輪發(fā)送時間戳和主從標志按照通用IP選項的格式組 成專有IP選項,相應(yīng)添加到主包IP協(xié)議頭或從包IP協(xié)議頭。
[0026] 進一步,步驟3. 2a中修改從包配置參數(shù)的具體實現(xiàn)為:將從包目的IP替換為接收 端主機從網(wǎng)卡IP,將由主包復(fù)制得來的從包的專有IP選項的主從標志替換為從標志。
[0027] 進一步,還包括數(shù)據(jù)包接收端的如下接收步驟:
[0028] 步驟lb,接收端接收數(shù)據(jù)包,判斷所述數(shù)據(jù)包是否屬于冗余通信,如果屬于則執(zhí) 行步驟2b,否則執(zhí)行步驟5b ;
[0029] 步驟2b,解析接收到的數(shù)據(jù)包的專有IP選項,獲取所述數(shù)據(jù)包的流水序列號、本 半輪發(fā)送時間和主從標志;
[0030] 步驟3b,根據(jù)主從標志,判斷所述數(shù)據(jù)包的類型,如果是主包,執(zhí)行步驟3b,如果 是從包,將從包的目的IP替換為接收端主機的主網(wǎng)卡IP,執(zhí)行步驟3b ;
[0031] 步驟4b,根據(jù)流水序列號和本半輪發(fā)送時間戳判斷所述數(shù)據(jù)包是否為重復(fù)包,如 果是則進行丟棄處理,否則接收所述數(shù)據(jù)包,結(jié)束處理流程;
[0032] 步驟5b,通過協(xié)議棧正常接收所述數(shù)據(jù)包,結(jié)束處理流程。
[0033] 采用上述進一步方案的有益效果:通過在IP網(wǎng)絡(luò)層接收路徑上增加冗余接收分 支來實現(xiàn)冗余接收功能,實現(xiàn)了數(shù)據(jù)分流處理:普通IP數(shù)據(jù)包走協(xié)議棧正常接收流程;屬 于冗余通信的IP數(shù)據(jù)包進入冗余接收分支處理。冗余接收主要目的是為了丟棄重復(fù)包,對 于攜帶同一序列號的兩個數(shù)據(jù)包,對于先到達的進行接收,后到達的予以丟棄,最終實現(xiàn)唯 一接收。
[0034] 進一步,上述技術(shù)方案還包括,
[0035] 步驟6b,對接收的冗余通信的數(shù)據(jù)包進行統(tǒng)計更新;
[0036] 步驟7b,根據(jù)數(shù)據(jù)包統(tǒng)計數(shù)據(jù)對主從鏈路運行狀態(tài)進行檢查,發(fā)現(xiàn)故障進行告 警;
[0037] 步驟8b,將接收的數(shù)據(jù)包向上層協(xié)議投遞。
[0038] 采用上述進一步方案的有益效果:另外在冗余接收中還對主從鏈路運行狀況進行 監(jiān)控,即鏈路故障告警功能。
[0039] 進一步,所述步驟4b的具體實現(xiàn)為:
[0040] 步驟4. lb,獲取所述數(shù)據(jù)包的流水序列號和本半輪發(fā)送時間戳;
[0041] 步驟4. 2b,將本半輪發(fā)送時間戳與本地緩存的接收狀態(tài)緩存位圖比較,當屬于前 半輪時,比較結(jié)果分三種情況,
[0042] 當本半輪發(fā)送時間戳小于JIFFIES_L時,丟棄所述數(shù)據(jù)包,返回1,
[0043] 當本半輪發(fā)送時間戳大于JIFFIES_L時,用本半輪發(fā)送時間戳更新JIFFIES_L,將 接收狀態(tài)緩存位圖前半部所有位清零,序列號對應(yīng)位圖位置置1,接收所述數(shù)據(jù)包,返回〇,
[0044] 當本半輪發(fā)送時間戳等于JIFFIES_L時,根據(jù)流水序列號查詢接收狀態(tài)緩存位圖 的相應(yīng)位,判斷查詢到的位圖位,若為0,則將其置為1,接收所述數(shù)據(jù)包,返回0,若為1,丟 棄所述數(shù)據(jù)包,返回1 ;
[0045] 當屬于后半輪時,比較結(jié)果分三種情況,
[0046] 當本半輪發(fā)送時間戳小于JIFFIES_H時,丟棄所述數(shù)據(jù)包,返回1,
[0047] 當本半輪發(fā)送時間戳大于JIFFIES_H時,用本半輪發(fā)送時間戳更新JIFFIES_H,將 接收狀態(tài)緩存位圖后半部所有位清零,序列號對應(yīng)位圖位置置1,接收所述數(shù)據(jù)包,返回〇,
[0048] 當本半輪發(fā)送時間戳等于JIFFIES_H時,根據(jù)流水序列號查詢接收狀態(tài)緩存位圖 的相應(yīng)位,判斷查詢到的位圖位,若為0,則將其置為1,接收所述數(shù)據(jù)包,返回0,若為1,丟 棄所述數(shù)據(jù)包,返回1。
[0049] 進一步,步驟5b中根據(jù)數(shù)據(jù)包統(tǒng)計數(shù)據(jù)對主從鏈路運行狀態(tài)進行檢查,發(fā)現(xiàn)故障 進行告警的具體實現(xiàn)為:
[0050] 步驟6. lb,判斷接收的數(shù)據(jù)包的類型,如果是主包,執(zhí)行步驟6. 2b,如果是從包, 執(zhí)行步驟6. 3b ;
[0051] 步驟6. 2b,主鏈路收包數(shù)加1,主鏈路報警計