焦利彬 趙波 趙志軍
摘要:針對網(wǎng)絡拓撲動態(tài)變化下的群結(jié)構(gòu)維護問題,提出了群首維護算法和群成員維護算法,詳細介紹了算法流程。群維護算法對群規(guī)模和群數(shù)量進行控制,基于群結(jié)構(gòu)進行自適應調(diào)整,設定離群定時器同時周期性廣播群消息,群首與群成員交互的信息包含節(jié)點的各項屬性信息和資源信息,最終計算出綜合評判值,以此判斷最佳群首和群成員。
關鍵詞:群首維護;群成員維護;離群定時器;廣播群消息
中圖分類號:TP393文獻標志碼:A文章編號:1008-1739(2020)02-57-4
0引言
戰(zhàn)場網(wǎng)絡節(jié)點具有高動態(tài)性,隨時隨地向不同的方向移動導致網(wǎng)絡節(jié)點連接關系頻繁變化、拓撲結(jié)構(gòu)頻繁變化和重組、節(jié)點脫管失效及管理群結(jié)構(gòu)發(fā)生動態(tài)變化,因此有必要研究管理群維護的相關內(nèi)容和算法,使群拓撲結(jié)構(gòu)對群內(nèi)節(jié)點的移動或位置變化具有實時感知和應對能力,并且離群節(jié)點能夠迅速找到并加入新群或自組成群。
群管理維護旨在對動態(tài)變化的管理群結(jié)構(gòu)進行實時調(diào)整和管控,因此群管理維護的研究應該確保變化且調(diào)整后的管理群規(guī)??刂圃诤侠矸秶鷥?nèi),首先要減少高動態(tài)群實時維護和管理的消息開銷,同時動態(tài)群的數(shù)量也要控制在合理范圍內(nèi),確保整個網(wǎng)絡管理控制信息的帶寬占用和消耗。群維護算法主要聚焦管理群內(nèi)局部節(jié)點加入或離開所導致的整個群結(jié)構(gòu)部分或全部失效的現(xiàn)象,重點研究高動態(tài)移動節(jié)點脫離某個群或重新加入某個新群的實時管理方案,避免大規(guī)模節(jié)點移動或離開而引起的大規(guī)模網(wǎng)絡重構(gòu)脫管。另外群管理維護方案也考慮實時性問題,離群節(jié)點需要盡快加入新群或重新自組成群,確保整體網(wǎng)絡結(jié)構(gòu)的穩(wěn)定和完整,進而提升網(wǎng)絡的可靠性和抗毀性。
1群首維護算法
1.1算法消息格式
當群首生成或群首變更引起群結(jié)構(gòu)發(fā)生變化時,網(wǎng)絡管理者需要實時維護并更新群結(jié)構(gòu),確認群首的管理功能及范圍。另外,考慮到網(wǎng)絡中的節(jié)點具有隨機移動性,網(wǎng)絡拓撲也會隨之變化,導致群成員與群首之間的連通關系可能會頻繁變化。需要研究當群首位置發(fā)生變動或由于自身電量等問題而無法承擔管理職能時,該群首需將管理職能委托給具有充足的能量資源、位置穩(wěn)定的群成員,從而維護管理分群的穩(wěn)定。
在群結(jié)構(gòu)中,群節(jié)點通常有不屬于任何群、群首和群節(jié)點成員的3種存在狀態(tài)。在網(wǎng)絡拓撲初始規(guī)劃時,節(jié)點處于獨立存在狀態(tài),基于規(guī)劃進行管理分群或拓撲分群后,節(jié)點的狀態(tài)由獨立節(jié)點變化或升級為群首或群節(jié)點,此后進入正常的群運行狀態(tài)。在群維護中,如果發(fā)生群首故障離群或群節(jié)點移動離群事件,則節(jié)點的狀態(tài)會發(fā)生改變,在未分群、群首和群成員之間切換。
算法中使用的消息定義如下:①群首注銷請求消息由群首生成,用于向管理者通知自身不再為群首;②新群首注冊請求消息;③新群首注冊響應消息由管理者生成,用于向新群首確認其注冊信息;④群查詢請求消息由注冊終端發(fā)給群首,請求查詢?nèi)撼蓡T詳細信息;⑤群查詢響應消息由群首將該群成員列表詳細信息發(fā)送給注冊終端。
1.2群首管理算法
群首一般有屬于或不屬于某個群2種狀態(tài),如果群首不屬于某個群,則設定一個群首離群時間閾值,初始設置為(=1)min,為了保持管理實時性,群首基于線程與群內(nèi)節(jié)點進行信息交互,發(fā)送心跳信息。將群首收到的不同群成員應答消息的時間間隙設為_cnt min,群成員節(jié)點離開群的時間閾值設定為,初始化=1。
通常群成員節(jié)點信息由群首實時管理以列表形式存儲,包括群首與每個群成員的握手、心跳檢測和檢測反饋消息,交互消息的時間記錄信息以數(shù)組形式存儲于_cnt[]消息數(shù)組中,對應的是該群成員節(jié)點確認存活的最新時間。
設定一個接收群維護消息的超時計時器,記作為_cnt,該計時器由群首和群成員共同維護,將計時器的初始值設定為離群時間閾值,最小值初始化為=min( , )。
群管理維護算法的步驟如下:
步驟1:基于固定周期的典型群管理,將群首相關信息進行初始化配置,初始化配置內(nèi)容包括①群首發(fā)送的廣播信息的地址和端口號;②初始化群首離開群的時間計時器,離群時間變量設置為_cnt,初始化設定為當前時間;③群首維護的群節(jié)點成員信息的列表計時數(shù)組設為_cnt[],初始值設定為當前時間。
步驟2:群首向所有群內(nèi)成員節(jié)點廣播群管理維護請求消息,目的是通過心跳消息確認當前所有群成員節(jié)點的實時狀態(tài),即是存活還是死亡。當群成員收到群管理維護的廣播消息后,經(jīng)分析是狀態(tài)確認請求消息,則第一時間以點對點消息通信方式向群首返回群節(jié)點狀態(tài),確認維護響應消息。
步驟3:當群節(jié)點發(fā)送的狀態(tài)確認群維護響應消息被發(fā)送到群首時,群首以消息包攜帶的時間戳信息為依據(jù),更新計時器數(shù)組中對應的_cnt值。如果計時器出現(xiàn)越限情況,則計算超出時間差△=當前時間- _cnt,并判斷超時時間△與時間閾值的大小。
如果超時時間△<,表明群首依然在群中,尚未離群,則轉(zhuǎn)入步驟3.1。在步驟3.1中群首當前電量的實時情況是群首能否繼續(xù)任職的唯一判斷標準,如果群首電量即將耗盡,則群首立即向管理者發(fā)送群首委任卸任申請消息,管理者收到群首發(fā)送的委任申請消息后,立刻進行群節(jié)點狀態(tài)查詢,選擇群節(jié)點狀態(tài)為正常且滿足要求的群成員節(jié)點,發(fā)送群首任命消息,宣布新的群首。
若超時差△>,則表明該群首由于種種原因目前已經(jīng)離開所在群,此時轉(zhuǎn)入步驟3.2。離開的群首在等待管理者發(fā)送的群首委任反饋消息的時間內(nèi),如果收到非本群新成員節(jié)點發(fā)送的入群請求消息,則暫存該請求入群消息。
步驟3.1:判斷群首最新電池電量數(shù)值,比較電池電量與設定的閾值(假設=30%)并選擇不同的操作步驟。如果電池電量低于設定的閾值,則群首轉(zhuǎn)任申請消息由群首向管理者發(fā)送,如果新的接任群首已經(jīng)被指定,則轉(zhuǎn)入步驟3.1.3。
如果即將卸任的群首收到管理者發(fā)送的自主職能委托消息,則轉(zhuǎn)入步驟3.1.1;否則認為群首目前電池電量充足,轉(zhuǎn)入步驟3.1.2。
步驟3.1.1:群首繼任者選擇通過多屬性拍賣方式進行,群首向群成員節(jié)點廣播群首委托邀請信息,同時開啟計時器,等待群成員節(jié)點收到邀請消息后的反饋,即向群首發(fā)送響應信息。
步驟3.1.2:如果群首的電池電量充足,具備能繼續(xù)擔任群首的條件,則轉(zhuǎn)入步驟4。
步驟3.1.3:如果管理者指定新群首,群首委托確認消息由原群首發(fā)送至指定新群首,群首注銷請求消息也由原群首發(fā)送至管理者,目的是宣布自己不再擔任群首,同時釋放清空所存儲的群成員數(shù)組信息、本地線程和緩沖區(qū)中待處理新成員加入請求消息等,標記自身狀態(tài)為群成員。
步驟3.2:若△>,表明群首已經(jīng)離群,注銷請求消息由群首發(fā)送至管理者,宣布自己不再是群首,同時釋放存儲的本地群成員數(shù)組信息、本地線程和緩沖區(qū)中待處理新成員加入請求消息等,此時標記群首為獨立狀態(tài)。
步驟4:群首繼續(xù)執(zhí)行正常管理操作,首先判斷是否有群成員離開,依據(jù)時間差判斷,時間差的計算方式為計算△=當前時間-群成員應答時間數(shù)組值_cnt [ ],如果時間差△大于初始設定的門限閾值,且△[ ],則發(fā)生了節(jié)點離開事件,轉(zhuǎn)入步驟4.1;否則說明尚未發(fā)生節(jié)點離群事件,轉(zhuǎn)入步驟5。
步驟5:群首查看緩沖區(qū)中是否有新成員請求加入消息,如果沒有,則轉(zhuǎn)入步驟6,否則表明有新成員請求事件發(fā)生,此時判斷當前群成員個數(shù),如果個數(shù)達到群規(guī)模規(guī)定的最大閾值(假設每個群規(guī)模閾值為),表明群規(guī)模已經(jīng)達到規(guī)定的范圍,轉(zhuǎn)入步驟5.1,否則表明群還可以再容納新成員,轉(zhuǎn)入步驟5.2。
步驟5.1:將拒絕群成員加入消息反饋發(fā)送至待加入的節(jié)點,轉(zhuǎn)入步驟6。
步驟5.2:待加入的節(jié)點收到群成員加入響應消息。啟動等待計時器_cnt,如果在超時之前收到新成員加入確認消息,則更新本地群成員相關數(shù)組信息和群個數(shù),轉(zhuǎn)入步驟6;若超時仍未收到任何確認消息,則執(zhí)行步驟6。
步驟6:群首向管理者發(fā)送新群成員加入更新消息,轉(zhuǎn)入步驟2,重復執(zhí)行群維護算法。
2群成員維護算法
2.1群成員維護算法
群成員維護算法的詳細步驟如下:
步驟1:離群計時器l_cnt由群成員開啟(計時器將群首發(fā)送群管理消息的周期時長設定為初始值),通過計時器判斷自身與當前所在的群的關系,即在群中還是已經(jīng)離群。與上一次相比,如果群首廣播的群管理請求消息,等待時長越限,則轉(zhuǎn)入步驟3;否則判斷群成員是否已經(jīng)離群,轉(zhuǎn)入步驟2進行判斷操作。
步驟2:群首進行周期性廣播群管理請求消息,如果群成員收到廣播消息,則表明自己尚未離開原始群,群成員向群首發(fā)送群維護響應消息,同時將l_cnt值更新,并轉(zhuǎn)入步驟1。
如果群成員收到群首委托請求消息,將自身各項資源狀態(tài)更新,并發(fā)送響應消息至群首,轉(zhuǎn)入步驟1;如果群成員收到群首委托確認消息,則宣布自己為群首,以群首身份執(zhí)行群管理工作。
步驟3:若l_cnt超出閾值,則群成員處于獨立狀態(tài),此時該群成員查詢距離自身為一跳距離的鄰居節(jié)點的狀態(tài),并進行狀態(tài)判斷,如果這些節(jié)點也處于獨立的未分群狀態(tài),既不是群首也不是群節(jié)點,則轉(zhuǎn)入步驟3.1,否則轉(zhuǎn)入步驟3.2。
步驟3.1:若存在未分群的一跳鄰居節(jié)點,說明當前群脫離管理處于失控狀態(tài),則所有不屬于某個群的獨立節(jié)點重新入群組群。
步驟3.2:查詢鄰居表中是否有群首存在,若群中沒有群首,則未分群的一跳鄰居節(jié)點自組成新的群;若存在群首,則孤立節(jié)點向群首發(fā)送新入群請求消息,并啟動消息接收線程和計時器等待群首響應,轉(zhuǎn)入步驟4。
步驟4:假設群首cluser同意某孤立群節(jié)點加入,當群首收到第一個群節(jié)點反饋的加入響應消息時,將該節(jié)點信息更新存儲至本地群節(jié)點信息數(shù)組中,并轉(zhuǎn)入步驟1。
若在規(guī)定時間內(nèi)請求入群的群成員收到群首的拒絕消息,則該群成員開啟線程計時器,繼續(xù)等待接收新消息;若已經(jīng)超時且未收到任何同意加入響應消息,表明沒有任何群首同意該節(jié)點入群,此時該群節(jié)點繼續(xù)尋找新的距離自己最近的群并申請加入。
群成員開啟離群計時器l_cnt,設定離群計時器初始值為群首發(fā)送群維護消息的周期時長,當離群計時器的值超出計時器的計時上限值時,說明群成員自身已經(jīng)離群,無法接受群首管理,則群成員將自身狀態(tài)標記為離群節(jié)點,進行重新加入另外一個群的入群請求申請操作。
2.2算法核心解析
當有新節(jié)點申請入群時,群首判斷群內(nèi)節(jié)點個數(shù),如未達到所規(guī)定的群規(guī)模上限閾值,則同意該節(jié)點加入,同時更新群節(jié)點數(shù)組信息并上報管理者。
群首進行群維護需要判斷是否離群,離群的群首不能繼續(xù)對群內(nèi)成員進行管理。如果群首已經(jīng)離群,則立刻進入未分群狀態(tài),獲取其他群首的實時信息,設置自身狀態(tài)為新的群成員,同時向新群廣播群成員加入請求信息。
當群首處于自身電量不足、高動態(tài)及受到威脅攻擊不安全時,進行職能委任或者宣布自己不再擔任群首。群首職責委托減少大規(guī)模網(wǎng)絡重構(gòu)所帶來的額外網(wǎng)絡流量,避免節(jié)點失控。另外算法實時性強,提升在高動態(tài)環(huán)境下的管理時效性。
群首維護算法和群成員維護算法設計的核心思想在于以拍賣方式進行,群首可以獲取實時的群成員資源信息狀況,以便選擇出能夠勝任群首職能的最優(yōu)繼任者,實時性較強;其二,相比較于直接選擇某個委任者而言,拍賣方式為群成員提供了公平的競爭機會,最大程度考慮了負載平衡問題;最后,對群首即將轉(zhuǎn)任而進行的拍賣方式,只需耗費一輪競拍交互的網(wǎng)絡流量,避免了大規(guī)模網(wǎng)絡重構(gòu)所導致的節(jié)點失控或脫離管理,大大提升管理效率。
3結(jié)束語
在高動態(tài)的典型應用環(huán)境下,網(wǎng)絡拓撲結(jié)構(gòu)頻繁變化和網(wǎng)絡大規(guī)模重組的情形隨時可見,對網(wǎng)絡穩(wěn)定性和可靠性產(chǎn)生很大影響,同時給網(wǎng)絡管理帶來了極大的影響,導致網(wǎng)絡節(jié)點脫離管理。本文設計的群維護算法,從控制群規(guī)模和群數(shù)量的根本點出發(fā)進行設計控制,一方面可以根據(jù)網(wǎng)絡規(guī)模,控制所劃分的管理群的個數(shù)和每個群的規(guī)模,另一方面在管理群和每個群設定好之后,可以通過設定群首、群成員的狀態(tài),以及判斷每個群節(jié)點的位置、節(jié)點電量、節(jié)點與群的距離(以一跳為基準距離)等自身屬性,進而判斷節(jié)點是入群還是離群問題。通過上述2個設計點,解決了局部節(jié)點移動或離群所引起的群結(jié)構(gòu)失效問題,同時能夠根據(jù)被管網(wǎng)絡的規(guī)模合理劃分管理群,群過多會造成管理信息的海量增加,群過少會導致入群離群的時效性問題,不僅有效控制網(wǎng)絡,同時也大大提高了管理時效性。
參考文獻
[1]薛明.基于SNMP局域網(wǎng)流量監(jiān)測系統(tǒng)的應用研究[D].鄭州:鄭州大學,2006.
[2]李濤,張亞群,劉岱平.面向服務的校園網(wǎng)流量監(jiān)控系統(tǒng)設計與實現(xiàn)[J].現(xiàn)代計算機(專業(yè)版),2009(1):154-156.
[3]宋進紅,沈云琴.使用CactiEZ輕松構(gòu)建校園網(wǎng)絡流量監(jiān)控系統(tǒng)[J].河南城建學院學報,2009,18(4):57-59.
[4]段宗濤,林莎.基于SNMP的網(wǎng)絡流量監(jiān)控系統(tǒng)的設計與實現(xiàn)[J].微型機與應用,2001(11):25-27.
[5]董加敏,王斌.基于SNMP協(xié)議的高校網(wǎng)絡流量監(jiān)控管理系統(tǒng)的研究[J].廣州大學學報(自然科學版),2009,8(1):53-57.
[6]張彤,吳世榮.基于SNMP計算機網(wǎng)絡流量監(jiān)控系統(tǒng)研究[J].計算機技術(shù)與發(fā)展,2011,21(1):88-91.
[7]徐鶴,王汝傳.一種P2P流量監(jiān)控系統(tǒng)的設計及實現(xiàn)[J].計算機技術(shù)與發(fā)展,2009,19(10):6-10.
[8]趙英,黃九梅,董小國,等.網(wǎng)絡流量監(jiān)控系統(tǒng)的設計與實現(xiàn)[J].計算機應用,2004(S1):32-33.
[9]張衛(wèi)東,王偉,韓維桓.網(wǎng)絡流量測量與監(jiān)控系統(tǒng)的設計與實現(xiàn)[J].計算機工程與應用,2005,41(32):160-163.