張憲軍,劉 穎,余華武,陳新之
(國電南京自動化股份有限公司,江蘇 南京210003)
智能變電站在GOOSE、SV、MMS三網(wǎng)合一測試中,核心交換機冗余備份較引人注目。通信備份雙向網(wǎng)絡,故障恢復通常需要時延。PRP(并行冗余協(xié)議)以零丟包、零切換時間在智能變電站眾多設備廠商中獲得高支持,文獻[1-3]介紹了PRP/HSR(高可靠性無縫冗余)是理想智能變電站網(wǎng)絡冗余方案。文獻[4-9]使用基于序列號雙窗口丟棄算法,文獻[10]使用基于源MAC、目的MAC、序列號表查找算法,對設備重啟、老化、時序異常情形考慮較少。文獻[11]未具體指定,說明節(jié)點表、哈希表、FIFOs、基于序列蹤跡均可,同時改進PRP與HSR裝置雙網(wǎng)序列號共用;在RCT(冗余控制尾綴)引入新后綴字段更好標識PRP協(xié)議幀;針對丟棄算法刪除所有實現(xiàn)上約束,特別是連接方向限制,這個連接方向字段在哈希算法中未使用;刪除重復表清除代之以任何老化舊表項的機制都可以,保障裝置恰當重啟。實現(xiàn)過濾丟棄算法需滿足:不能丟棄任何合法報文;容忍偶爾接收個別重復包;面向無連接序列號;序號按遞增順序但不必連續(xù);過濾丟棄重復報文;亂序報文正常接收;效率高邏輯簡單;超時老化處理;本地設備重啟處理;對端設備重啟處理;單條鏈路斷開處理。
圖1顯示丟棄算法時間約束,twrapMin是最小可能時間在序列號65536回滾之后兩個相同序列號重復合法報文接收之間。在100 Mbit/s以太網(wǎng)絡,twrapMin大約是400 ms理論上從相同源接收到幀重復最小時間。tskew是同一個幀的兩份拷貝到達的時間差。tresideMax是一個表項保留在重復表中的最大駐留時間,應不大于EntryForgetTime(表項老化時間,缺省為400 ms)。taliasRepMin是別名幀重復接收最小時間,應不大于twrapMin和對端系統(tǒng)重啟加等待時間兩者最小值??煽縼G棄原則是tskew< tresideMin,安全接收原則是tresidenceMax<taliasRepMin。裝置重啟避免產(chǎn)生別名幀在EntryForgetTime時間之內(nèi)不要發(fā)送報文,在這個時間之后,接收方將老化重復表中表項。別名幀是指序列號相同但幀數(shù)據(jù)內(nèi)容不同。實際上支持嵌入式操作系統(tǒng)的裝置重啟時間一般在5~10 s,功能復雜裝置約在15 s,缺省重啟約定時間是500 ms,EntryForgetTime足夠小這些裝置重啟之后是可以直接發(fā)送數(shù)據(jù)包的。為避免別名幀產(chǎn)生,無軟件或啟動時間極短系統(tǒng)重啟需等待約定時間不發(fā)送數(shù)據(jù)報文然后才開始工作。
圖1 重復丟棄算法邊界Fig.1 Duplicate discard algorithm boundaries
圖2是PRP幀格式,RCT(6字節(jié))擴展:16位序列號(SeqNr),4位LAN ID,12位幀長度(LSDU長度),16位PRP類型。SeqNr 由發(fā)送方按遞增順序標識重復數(shù)據(jù)包,同一份報文序列號相同,接收方通過序列號來區(qū)分報文是否重復。LAN ID用來區(qū)分端口連接LAN方向。LSDU長度是原來數(shù)據(jù)長度加上6個字節(jié)后綴。類型后綴為0x88FB常值。發(fā)送時在原有報文基礎(chǔ)上增加RCT,對不支持PRP原始報文按接收模式處理。DANP(雙連接支持PRP節(jié)點)中LRE(鏈路冗余實體)負責發(fā)送和接收冗余處理,兩個端口使用相同IP和MAC地址,參見圖3。DANH(雙連接支持HSR節(jié)點)LRE增加了非本設備接收報文轉(zhuǎn)發(fā)功能,包含發(fā)送和接收過濾丟棄。文獻[12-13]對智能變電站網(wǎng)絡可靠性進行分析,在裝置中合理采用PRP/HSR能夠滿足智能變電站的可靠性需求。
圖2 PRP幀RCT擴展Fig.2 PRP frame extended by an RCT
圖3 PRP雙DANP通信Fig.3 PRP with two DANPs communicating
對雙HSR環(huán)網(wǎng)拓撲,本方法是基于點對點,當QB處于兩個節(jié)點中間位置時,需配置節(jié)點(基于MAC地址識別)路徑轉(zhuǎn)發(fā)信息,在接收端要過濾掉重復報文,在發(fā)送端按新序列號加入HSR標簽向環(huán)網(wǎng)兩側(cè)發(fā)送,此時QB是代理角色,性能相對較低,但端口故障處理方式靈活。代理模式是缺省必須支持的HSR標簽轉(zhuǎn)發(fā)模式;模式N是非轉(zhuǎn)發(fā)模式,兩個環(huán)網(wǎng)各自獨立轉(zhuǎn)發(fā)環(huán)內(nèi)數(shù)據(jù);模式T是透明轉(zhuǎn)發(fā),刪去HSR標簽,向另一個環(huán)的兩個端口未經(jīng)重復過濾轉(zhuǎn)發(fā)非標簽數(shù)據(jù);模式M是混合模式,基于HSR標簽報文處理同代理模式,非HSR標簽報文是否加入標簽依據(jù)本地配置,若不加入HSR標簽則根據(jù)IEEE802.1D規(guī)則轉(zhuǎn)發(fā);模式U是單播轉(zhuǎn)發(fā)模式,處理同代理模式僅轉(zhuǎn)發(fā)單播數(shù)據(jù)報文。
接收報文目的地址分單播、組播、廣播,在環(huán)網(wǎng)內(nèi)組播和廣播轉(zhuǎn)發(fā)沒有本質(zhì)區(qū)別。當接收到是自己所發(fā)送報文必須要丟棄避免風暴。接收到目的地址是自身MAC或是自身訂閱了的組播(或廣播),節(jié)點會根據(jù)源MAC地址表建立節(jié)點表。因這些表在數(shù)據(jù)收發(fā)路徑上頻繁查找,建議初始化時分配一定空間,老化刪除時設置標志為無效,新建只需使能標志為即可??梢曰贛AC地址作一次哈希(HASH)處理再查找,如基于最后一個字節(jié)分類,這樣可大大減少順序查找耗時,提高傳輸性能。本發(fā)明算法是在節(jié)點表之內(nèi),占用一定空間記憶序列號的接收狀態(tài),利用固定丟棄窗口進行老化,(源MAC,序列號SeqNr)是唯一標識報文信息,與之一一對應的狀態(tài)信息可以有效防止重復報文的接收。超過一定時限,序列號相同,報文內(nèi)容未必相同。在同一個時限內(nèi),F(xiàn)CS(幀校驗序列)完全一樣,報文內(nèi)容未必相同。
序列號范圍0~65535,起始是0,終點是65535(SEQNUM),中間點是32767,對于節(jié)點發(fā)送起始序列號沒有任何影響?;诿總€MAC定義一個整型數(shù)組,每個成員是一個32位或64位(SEQBITS)變量,利用每一個位存儲一個序列號的狀態(tài),1表示首報文新近接收到(重復丟棄),0表示未接收到首報文,接收到首報文上傳本地上層應用處理。SeqNr和狀態(tài)位之間是通過HASH進行索引,具體的就是從開始的第0個字節(jié)的0位算起,SeqNr的狀態(tài)位正好對應SeqNr個總數(shù)位的值,例如SeqNr/SEQBITS是對應位所在的整數(shù)在數(shù)組中的位置,SeqNr%SEQBITS是對應位在所在整數(shù)的具體位的位置,便于索引、查找、設置、清除狀態(tài)信息?;瑒哟翱谠O置是為了減少窗口內(nèi)阻塞的序列號個數(shù),通常是在當前接收數(shù)據(jù)序列號附近的報文重復較多,丟棄窗口大?。―WS)可配置,缺省設置為64,范圍1~65535。在窗口外的將作為新報文處理,直接上傳報文到應用層。窗口內(nèi)的駐留時間為256 ms,每隔這個時間間隔,將強制老化窗口內(nèi)的所有已設置位為0,此時所有接收到的報文將按照新報文來處理,窗口大小固定不變。窗口設置三個變量,MinSeq是當前窗口中接收到的最小序列號;MaxSeq是窗口上限至少比當前窗口中接收到的最大值大1個,這是方便計算窗口大小;CurSeq是當前接收到的序列號。若不設置這個滑動窗口,按照固定周期(如256 ms)老化也能滿足要求,要老化整個位狀態(tài)表,老化占用時間相對稍長且不利于將來擴展。本方法增加了這個滑動窗口,使其具有HASH算法的快捷和滑動窗口的優(yōu)點,老化DWS窗口占用時間相對很小,缺陷是每次接收到報文增加了判斷和計算的時間。
對接收到的序列號分三種情形:在窗口內(nèi)、小于MinSeq、大于等于MaxSeq,而對于丟棄窗口也有兩種情形,起始序列0和終點序列65535在窗口內(nèi)和不在窗口,判斷的依據(jù)稍有不同。如圖4,起止序列不在窗口內(nèi),CurSeq在窗口內(nèi),則依據(jù)記錄的序列號對應的狀態(tài)位進行判斷,已接收則丟棄,否則接收報文然后序列號狀態(tài)置位為1。按照約定序列號是遞增順序增加的,當CurSeq大于等于MaxSeq時,窗口向前移動Δf = MaxSeq-CurSeq,CurSeq位狀態(tài)置為1,MinSeq同步向前移動Δf,同時在這個Δf內(nèi)的所有序列號對應的位清0。當CurSeq小于MinSeq時,此時有可能是窗口大小設置較小網(wǎng)絡延時很大、網(wǎng)絡擁塞、或是對端設備重新啟動,同時向后移動固定丟棄窗口大小DWS,可以保留原來窗口中位狀態(tài)但不建議這樣做,本方法清除窗口中保留的位狀態(tài)使所有報文都進入新報文接收狀態(tài)。圖5為起止序列在窗口內(nèi)的處理情形。
常量及變量定義:
圖4 起止序列不在窗口中丟棄算法Fig.4 Beginning and end sequence number not in the window discard algorithm
圖5 起止序列在窗口中丟棄算法Fig.5 Beginning and end sequence number in the window discard algorithm
位清除函數(shù)描述:參數(shù)beginpos是數(shù)組中的起始位位置,endpos是結(jié)束位位置,本函數(shù)實現(xiàn)數(shù)組prpseqbits[SEQLEN]中兩個位(含beginpos,endpos這兩位本身)中間位的清零工作。同樣分起始序列0和終點序列65535是否在這個區(qū)間。在兩個位置都在同一個SEQBITS位整數(shù)中,可以定義常量二維數(shù)組掩碼,數(shù)組大小為SEQBITS * SEQBITS,例如,(10,20),值為0xff801fff(32位為例),中間第10~20位是0的掩碼,借助這個掩碼可以快速清零,然后再分beginpos,endpos是在1、2、多個整數(shù)情形中處理。可不寫成函數(shù),在偽碼中利用已有的判斷做宏定義,就是位清零分段宏來實現(xiàn)。最簡單是通過For循環(huán)位清零,位寬較大時計算量稍大。
基于序列號雙丟棄窗口算法,當發(fā)送端單網(wǎng)口發(fā)送時(假定另一個端口故障),或者另一側(cè)網(wǎng)絡連續(xù)丟包若干個,此時重啟,若不增加老化機制,將產(chǎn)生別名報文連續(xù)丟棄;針對亂序報文將不斷產(chǎn)生重復報文接收;超過兩路報文將難于處理。當多端口中僅有一個在接收狀態(tài),此時關(guān)閉冗余丟棄算法,降低接收延時,當檢測到僅有一個端口可發(fā)送時,關(guān)閉冗余發(fā)送處理。檢測到兩條鏈路同時連接正常接收報文時,開始運行算法?;诙丝跔顟B(tài)檢測宜采用較快方式,如中斷處理。當兩個HSR環(huán)網(wǎng)通過QB連接時,單裝置故障將徹底斷開兩個環(huán)的連接,一般推薦采用兩個QB互相冗余備份,但這不能提高性能可提高可靠性。本地設備重新啟動,序列號從初始狀態(tài)重新開始,丟棄窗口最低序列號從零開始,任何一個報文都是首包直接進入冗余丟棄算法處理。
HASH表的老化,約定每隔256 ms進行窗口內(nèi)所有狀態(tài)老化,這也是報文在這個表中的最大駐留時間,當數(shù)據(jù)接收時若老化正在處理則按首包處理,此輪狀態(tài)信息不記錄??稍O置標識來檢查,不建議使用信號量,系統(tǒng)調(diào)用花費較多時間。當檢查到上次老化與本次老化之間沒有數(shù)據(jù)包接收將不必老化。老化時間與滑動窗口大小可配置,方便根據(jù)流量大小進行調(diào)整。目前所有裝置的數(shù)據(jù)處理是CPU完成的,不具備全千兆發(fā)送和接收的處理能力,本算法在裝置處理器具有百兆帶寬處理能力時適用,此處指CPU處理能力而不是發(fā)送和接收帶寬。具備全千兆數(shù)據(jù)通信處理能力的處理器算法需改進,如增加特定流量的報文(或唯一特征)記錄以便進行HASH比對,或考慮使用報文接收時間參數(shù)作間隔,或在發(fā)送端加入基于發(fā)送時間的隨機數(shù)作為報文的唯一關(guān)鍵特征等。
文獻[14]中2.2“基于雙重哈希的監(jiān)測和過濾算法”一節(jié),指出“要找到散列為同一個值的兩個不同的輸入,在計算上是不可能的”是錯誤的,就是整篇文章的理論依據(jù)不正確。文獻[15]第一節(jié)“循環(huán)冗余校驗碼(CRC)”指出,CRC校驗可以100%地檢測出所有奇數(shù)個隨機錯誤和長度小于等于K(K為g(x)的階數(shù))的突發(fā)錯誤,通信中K取值32。這個問題不需復雜高深證明,根據(jù)抽屜原理,32位的校驗和如何保障1 500字節(jié)(12 000位)的數(shù)據(jù)報文內(nèi)容完全不同,一定會有不同的輸入數(shù)據(jù)報文內(nèi)容產(chǎn)生相同的32位校驗和。
在智能變電站中丟棄任何一個合法報文的嚴重程度比多接收幾個重復報文的危害性要大得多,使用HASH算法采用的關(guān)鍵字理論上需證明是準確無誤的,體現(xiàn)技術(shù)嚴謹可用性。
本文發(fā)明算法可在32位、64位字節(jié)設備上實現(xiàn),在滿足可靠性基礎(chǔ)上做性能優(yōu)化,在接收報文路徑上處理占用時間越少越好。不僅支持接收兩路報文,四路報文同樣可以過濾接收。對重復風暴報文有免疫力?;诖鎯D(zhuǎn)發(fā)無連接報文亂序是交換網(wǎng)絡一個固有問題,本方法能對亂序報文做過濾處理。檢測到單鏈路斷開、恢復進行處理。對本地、對端設備重啟進行處理。短暫不運行過濾丟棄算法是全數(shù)據(jù)報文都接收,對正常運行影響不會很大。需從理論上證明重復丟棄算法是可靠的才能提高智能變電站冗余可靠性,HASH算法關(guān)鍵字FCS需謹慎選用。本文發(fā)明方法為智能變電站電力裝置快速實現(xiàn)PRP/HSR奠定堅實算法基礎(chǔ),為改善智能變電站高可靠性冗余提供設計參考。
[1] 易永輝, 王雷濤, 陶永健.智能變電站過程層應用技術(shù)研究[J].電力系統(tǒng)保護與控制, 2010, 38(21): 1-5.
YI Yong-hui, WANG Lei-tao, TAO Yong-jian.Process level application scheme in smart substation[J].Power System Protection and Control, 2010, 38(21): 1-5.
[2] 謝志迅, 鄧素碧, 藏德?lián)P.數(shù)字化變電站通信網(wǎng)絡冗余技術(shù)[J].電力自動化設備, 2011, 31(9): 100-103, 120.
XIE Zhi-xun, DENG Su-bi, ZANG De-yang.Redundancy technique of digital substation communication network[J].Electric Power Automation Equipment, 2011, 31(9):100-103, 120.
[3] 何鐘杰, 黃險峰, 崔春, 等.幾種智能變電站冗余通信協(xié)議分析比較[J].廣東電力, 2011, 24(4): 5-8.
HE Zhong-jie, HUANG Xian-feng, CUI Chun, et al.Analysis and comparison of redundancy communication protocols for smart substations[J].Guangdong Electric Power, 2011, 24(4): 5-8.
[4] IEC-62439 high availability automation networks[S].2008.
[5] IEC 62439-3-2010 high availability automation networkspart 3: parallel redundancy protocol (PRP)and highavailability seamless redundancy (HSR)[S].
[6] 程子敬, 李富, 李周.一種高可靠并行環(huán)網(wǎng)的研究與實現(xiàn)[J].電子設計工程, 2011, 19(23): 99-101.
CHENG Zi-jing, LI Fu, LI Zhou.Research and implementation of a high available parallel ring ethernet[J].Electronic Design Engineering, 2011, 19(23):99-101.
[7] 李俊剛, 宋小會, 狄軍峰, 等.基于IEC 62439-3的智能變電站通信網(wǎng)絡冗余設計[J].電力系統(tǒng)自動化,2011, 35(10): 70-73.
LI Jun-gang, SONG Xiao-hui, DI Jun-feng, et al.Communication network redundancy design of intelligent substation based on IEC 62439-3[J].Automation of Electric Power Systems, 2011, 35(10): 70-73.
[8] 李俊剛, 張愛民, 宋小會, 等.并行冗余協(xié)議在智能變電站網(wǎng)絡的應用[J].南方電網(wǎng)技術(shù), 2013, 7(4): 92-96.
LI Jun-gang, ZHANG Ai-min, SONG Xiao-hui, et al.The application of parallel redundancy protocol in smart substation network[J].Southern Power System Technology, 2013, 7(4): 92-96.
[9] 陳原子, 徐習東.基于并行冗余網(wǎng)絡的數(shù)字化變電站通信網(wǎng)絡構(gòu)架[J].電力自動化設備, 2011, 31(1):105-108.
CHEN Yuan-zi, XU Xi-dong.Communication network structure of digital substation based on parallel redundancy[J].Electric Power Automation Equipment,2011, 31(1): 105-108.
[10] 許鐵峰, 徐習東.高可用性無縫環(huán)網(wǎng)在數(shù)字化變電站通信網(wǎng)絡的應用[J].電力自動化設備, 2011, 31(10):121-125.
XU Tie-feng, XU Xi-dong.Application of high-availability seamless ring in substation communication network[J].Electric Power Automation Equipment, 2011, 31(10):121-125.
[11] IEC 62439-3-2012 high availability automation networks part 3 parallel redundancy protocol (PRP)and highavailability seamless redundancy (HSR)[S].
[12] 侯偉宏, 張沛超, 胡炎.數(shù)字化變電站系統(tǒng)可靠性與可用性研究[J].電力系統(tǒng)保護與控制, 2010, 38(14):34-38.
HOU Wei-hong, ZHANG Pei-chao, HU Yan.Reliability and availability study of the digital substation system[J].Power System Protection and Control, 2010, 38(14):34-38.
[13] 孫曉明.智能變電站自動化系統(tǒng)網(wǎng)絡可靠性分析及優(yōu)化[J].水電能源科學, 2012, 30(10): 167-171.
SUN Xiao-ming.Reliability analysis and optimization strategy for smart substation SAS communication network[J].Water Resources and Power, 2012, 30(10):167-171.
[14] 黃曙, 馬文霜, 陳炯聰, 等.智能變電站網(wǎng)絡風暴的監(jiān)測和過濾算法研究[J].電力系統(tǒng)保護與控制, 2013,41(18): 68-72.
HUANG Shu, MA Wen-shuang, CHEN Jiong-cong, et al.Research on the network storm monitoring and filtering algorithm in smart substation[J].Power System Protection and Control, 2013, 41(18): 68-72.
[15] 邱繼濤.循環(huán)冗余校驗碼(CRC)[C] // 第八屆工業(yè)儀表與自動化學術(shù)會議, 2007.
QIU Ji-tao.Cyclic redundancy code (CRC)[C] // The Eighth Industrial Instrumentation and Automation Conference, 2007.