一種基于低速率無線網(wǎng)絡(luò)的蔓延式廣播方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及無線低速率網(wǎng)絡(luò)的通信方法,具體是一種基于低速率無線網(wǎng)絡(luò)的蔓延式廣播方法。
【背景技術(shù)】
[0002]隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展及普及,無線網(wǎng)絡(luò)應(yīng)用越來越廣泛。現(xiàn)有無線網(wǎng)絡(luò)主要存在點(diǎn)播、組播及廣播三種基本的通信方式,其中,點(diǎn)播是指某一網(wǎng)絡(luò)節(jié)點(diǎn)向網(wǎng)絡(luò)中的另一節(jié)點(diǎn)發(fā)送一次數(shù)據(jù)的行為,組播是指某一網(wǎng)絡(luò)節(jié)點(diǎn)同時(shí)向網(wǎng)絡(luò)中指定的多個(gè)節(jié)點(diǎn)發(fā)送相同數(shù)據(jù)的行為,廣播是指某一網(wǎng)絡(luò)節(jié)點(diǎn)同時(shí)向網(wǎng)絡(luò)中所有的節(jié)點(diǎn)發(fā)送相同數(shù)據(jù)的行為。
[0003]點(diǎn)播的優(yōu)勢在于可精準(zhǔn)的傳遞消息,但是在實(shí)際使用環(huán)境中,由于干擾的存在,兩節(jié)點(diǎn)之間的鏈路常常存在不穩(wěn)定的情況,點(diǎn)與點(diǎn)之間直接的通信鏈路有時(shí)候不能建立。廣播能克服點(diǎn)播所存在的缺陷,其應(yīng)用時(shí),任一節(jié)點(diǎn)收到來自其他節(jié)點(diǎn)的廣播消息后都會立即處理并將本條廣播消息再傳遞出去。
[0004]在傳統(tǒng)的星型網(wǎng)絡(luò)(如W1-Fi網(wǎng)絡(luò))中,因?yàn)槲挥谕負(fù)淠┒说墓?jié)點(diǎn)發(fā)出的廣播信號必須由路由器處理并尋找到信號通路之后才會轉(zhuǎn)發(fā),且同一廣播包路由節(jié)點(diǎn)不會再次轉(zhuǎn)發(fā)。因此,廣播不僅可確保信息能傳遞出去,且能避免信道阻塞的發(fā)生。然而,在無線低速率網(wǎng)絡(luò)(如基于802.15.4的通信技術(shù)和基于SublG無線通信技術(shù)及其衍生技術(shù)都是屬于低速率無線技術(shù)。)中沿用傳統(tǒng)網(wǎng)絡(luò)的廣播方法(即數(shù)據(jù)包直接發(fā)送到信號傳遞介質(zhì)中,所有符合廣播協(xié)議的數(shù)據(jù)包一旦被路由節(jié)點(diǎn)接收就被轉(zhuǎn)發(fā)出去。)時(shí),由于無線低速率網(wǎng)絡(luò)中網(wǎng)絡(luò)節(jié)點(diǎn)一般是無中心的(網(wǎng)絡(luò)中的任一節(jié)點(diǎn)都是網(wǎng)絡(luò)中的路由節(jié)點(diǎn)),網(wǎng)絡(luò)中的任一節(jié)點(diǎn)在收到廣播消息以后都會進(jìn)行轉(zhuǎn)發(fā),很容易出現(xiàn)多個(gè)節(jié)點(diǎn)同時(shí)發(fā)射出轉(zhuǎn)發(fā)數(shù)據(jù)包的信號,而無線低速率網(wǎng)絡(luò)中一個(gè)數(shù)據(jù)包的傳遞需要耗費(fèi)大量的時(shí)間,這就易導(dǎo)致信道阻塞(多個(gè)節(jié)點(diǎn)同時(shí)廣播)的產(chǎn)生。而且無線低速率傳感網(wǎng)絡(luò)往往伴隨的是動(dòng)態(tài)組網(wǎng)(即路由表是不斷更新),網(wǎng)絡(luò)閑置時(shí)依舊會有大量的網(wǎng)絡(luò)維護(hù)信息在網(wǎng)絡(luò)中傳遞,一旦信道阻塞現(xiàn)象出現(xiàn),整個(gè)網(wǎng)絡(luò)信道都會被相干的信號疊加充滿,且沒有多余的時(shí)隙可以用于無線網(wǎng)絡(luò)維護(hù),這將會導(dǎo)致網(wǎng)絡(luò)漸漸崩潰,最終導(dǎo)致組網(wǎng)失敗,網(wǎng)絡(luò)的功能不復(fù)存在。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供了一種基于低速率無線網(wǎng)絡(luò)的蔓延式廣播方法,其應(yīng)用時(shí)能避免信道阻塞的發(fā)生。
[0006]本發(fā)明解決上述問題主要通過以下技術(shù)方案實(shí)現(xiàn):一種基于低速率無線網(wǎng)絡(luò)的蔓延式廣播方法,包括以下步驟:
步驟一、根據(jù)待廣播區(qū)域內(nèi)節(jié)點(diǎn)的分布狀態(tài)建立具有多個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)的轉(zhuǎn)發(fā)節(jié)點(diǎn)列表,其中,轉(zhuǎn)發(fā)節(jié)點(diǎn)用于轉(zhuǎn)發(fā)廣播命令,在轉(zhuǎn)發(fā)節(jié)點(diǎn)列表建立時(shí)應(yīng)保證待廣播區(qū)域內(nèi)任一節(jié)點(diǎn)發(fā)送廣播命令時(shí),通過轉(zhuǎn)發(fā)節(jié)點(diǎn)列表中的轉(zhuǎn)發(fā)節(jié)點(diǎn)能使得待廣播區(qū)域內(nèi)所有節(jié)點(diǎn)均接收到該廣播命令; 步驟二、發(fā)送廣播命令的節(jié)點(diǎn)將打包好的廣播命令發(fā)至其附近的節(jié)點(diǎn);
步驟三、每一個(gè)收到廣播命令的節(jié)點(diǎn)遍歷轉(zhuǎn)發(fā)節(jié)點(diǎn)列表并判斷其是否在轉(zhuǎn)發(fā)節(jié)點(diǎn)列表之內(nèi),若不在轉(zhuǎn)發(fā)節(jié)點(diǎn)列表內(nèi),則直接解析命令內(nèi)容并執(zhí)行命令;若在轉(zhuǎn)發(fā)節(jié)點(diǎn)列表內(nèi),其不僅解析命令內(nèi)容并執(zhí)行命令,而且將廣播命令再次打包發(fā)至其附近未接收該廣播命令的節(jié)點(diǎn);
步驟四、轉(zhuǎn)發(fā)節(jié)點(diǎn)列表中所有轉(zhuǎn)發(fā)節(jié)點(diǎn)都已執(zhí)行過一次轉(zhuǎn)發(fā)后結(jié)束廣播。其中,本發(fā)明所述的節(jié)點(diǎn)為網(wǎng)絡(luò)中存在的可以進(jìn)行通信的設(shè)備。
[0007]本發(fā)明在具體實(shí)施時(shí),可由中央控制器對待廣播區(qū)域內(nèi)所有節(jié)點(diǎn)進(jìn)行集中控制,中央控制器接收和處理節(jié)點(diǎn)上報(bào)的信息,然后做出決策并下發(fā)控制命令至各個(gè)節(jié)點(diǎn)。其中,節(jié)點(diǎn)發(fā)送廣播命令時(shí),轉(zhuǎn)發(fā)節(jié)點(diǎn)列表包含在廣播命令包內(nèi)進(jìn)行發(fā)送。
[0008]進(jìn)一步的,所述轉(zhuǎn)發(fā)節(jié)點(diǎn)列表中轉(zhuǎn)發(fā)節(jié)點(diǎn)選取時(shí),任意相鄰兩個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)分別為位于彼此通信距離內(nèi)的節(jié)點(diǎn)。
[0009]進(jìn)一步的,所述轉(zhuǎn)發(fā)節(jié)點(diǎn)列表的數(shù)量為多個(gè),任意兩個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)列表之間至少有一個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)不同;所述步驟一還包括選取任意一個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)列表來轉(zhuǎn)發(fā)廣播命令,并判斷選取的轉(zhuǎn)發(fā)節(jié)點(diǎn)列表中轉(zhuǎn)發(fā)節(jié)點(diǎn)是否存在故障,若是則切換轉(zhuǎn)發(fā)節(jié)點(diǎn)列表并再次判斷,直至確認(rèn)選取的轉(zhuǎn)發(fā)節(jié)點(diǎn)列表中所有轉(zhuǎn)發(fā)節(jié)點(diǎn)無故障時(shí)進(jìn)行下一步驟,若否則直接進(jìn)入下一步驟。其中,步驟一中判斷選取的轉(zhuǎn)發(fā)節(jié)點(diǎn)列表中轉(zhuǎn)發(fā)節(jié)點(diǎn)故障的方式是通過與待判斷節(jié)點(diǎn)進(jìn)行一次雙向通信來確定的。
[0010]綜上所述,本發(fā)明具有以下有益效果:本發(fā)明應(yīng)用時(shí)通過預(yù)先定義轉(zhuǎn)發(fā)節(jié)點(diǎn)列表,限定采用的轉(zhuǎn)發(fā)節(jié)點(diǎn)列表中的轉(zhuǎn)發(fā)節(jié)點(diǎn)才進(jìn)行廣播,其余節(jié)點(diǎn)只接收并執(zhí)行廣播命令的內(nèi)容且不再將廣播轉(zhuǎn)發(fā)出去,如此,本發(fā)明可以用最少的轉(zhuǎn)發(fā)次數(shù)完成廣播命令的覆蓋,能節(jié)省無線信道的占用時(shí)間,避免信道阻塞的發(fā)生。
【附圖說明】
[0011]圖1為本發(fā)明一個(gè)具體實(shí)施例的流程圖。
【具體實(shí)施方式】
[0012]下面結(jié)合實(shí)施例及附圖,對本發(fā)明做進(jìn)一步地的詳細(xì)說明,但本發(fā)明的實(shí)施方式不限于此。
[0013]實(shí)施例:
如圖1所示,一種基于低速率無線網(wǎng)絡(luò)的蔓延式廣播方法,包括以下步驟:步驟1、建立多個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)列表;步驟2、選擇任意一個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)列表作為廣播命令轉(zhuǎn)發(fā)表;步驟3、判斷選取的轉(zhuǎn)發(fā)節(jié)點(diǎn)列表中轉(zhuǎn)發(fā)節(jié)點(diǎn)是否存在故障,若是則切換轉(zhuǎn)發(fā)節(jié)點(diǎn)列表并再次判斷,若否則進(jìn)入下一步驟;步驟4、發(fā)送廣播命令的節(jié)點(diǎn)發(fā)出廣播命令;步驟5、判斷收到廣播命令的節(jié)點(diǎn)是否在轉(zhuǎn)發(fā)節(jié)點(diǎn)列表內(nèi),若是解析命令內(nèi)容并執(zhí)行命令,而且將廣播命令再次打包發(fā)出,然后進(jìn)入下一步驟,若否則直接解析命令內(nèi)容并執(zhí)行命令;步驟6、轉(zhuǎn)發(fā)節(jié)點(diǎn)列表中所有轉(zhuǎn)發(fā)節(jié)點(diǎn)都已執(zhí)行過一次轉(zhuǎn)發(fā)后結(jié)束廣播。
[0014]本實(shí)施例的步驟I在具體實(shí)施時(shí)需獲取待廣播區(qū)域內(nèi)每一個(gè)節(jié)點(diǎn)的物理分布狀態(tài),轉(zhuǎn)發(fā)節(jié)點(diǎn)列表根據(jù)待廣播區(qū)域內(nèi)節(jié)點(diǎn)的分布狀態(tài)建立,每個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)列表均具有多個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn),轉(zhuǎn)發(fā)節(jié)點(diǎn)用于轉(zhuǎn)發(fā)廣播命令,在轉(zhuǎn)發(fā)節(jié)點(diǎn)列表建立時(shí)應(yīng)保證待廣播區(qū)域內(nèi)任一節(jié)點(diǎn)發(fā)送廣播命令時(shí),通過一個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)列表中的轉(zhuǎn)發(fā)節(jié)點(diǎn)能使得待廣播區(qū)域內(nèi)所有節(jié)點(diǎn)均接收到該廣播命令。本實(shí)施例每個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)列表中轉(zhuǎn)發(fā)節(jié)點(diǎn)選取時(shí),任意相鄰兩個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)分別優(yōu)選為位于彼此通信距離內(nèi)的節(jié)點(diǎn),即假如存在A、B兩個(gè)相鄰的節(jié)點(diǎn),A節(jié)點(diǎn)為B節(jié)點(diǎn)通信范圍內(nèi)所有節(jié)點(diǎn)中距離最遠(yuǎn)的節(jié)點(diǎn),B節(jié)點(diǎn)為A節(jié)點(diǎn)通信范圍內(nèi)所有節(jié)點(diǎn)中距離最遠(yuǎn)的節(jié)點(diǎn)。本實(shí)施例建立的多個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)列表中,任意兩個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)列表之間至少有一個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)不同。
[0015]本實(shí)施例步驟3在判斷轉(zhuǎn)發(fā)節(jié)點(diǎn)列表存在故障時(shí),切換轉(zhuǎn)發(fā)節(jié)點(diǎn)列表并再次判斷,直至確認(rèn)選取的轉(zhuǎn)發(fā)節(jié)點(diǎn)列表中所有轉(zhuǎn)發(fā)節(jié)點(diǎn)無故障時(shí)才進(jìn)入下一步驟。本實(shí)施例步驟4中發(fā)送廣播命令的節(jié)點(diǎn)發(fā)出廣播命令時(shí),具體將打包好的廣播命令發(fā)至其附近的節(jié)點(diǎn)。本實(shí)施例步驟5的具體實(shí)施如下:每一個(gè)收到廣播命令的節(jié)點(diǎn)遍歷轉(zhuǎn)發(fā)節(jié)點(diǎn)列表并判斷其是否在轉(zhuǎn)發(fā)節(jié)點(diǎn)列表之內(nèi),若不在轉(zhuǎn)發(fā)節(jié)點(diǎn)列表內(nèi),則直接解析命令內(nèi)容并執(zhí)行命令;若在轉(zhuǎn)發(fā)節(jié)點(diǎn)列表內(nèi),其不僅解析命令內(nèi)容并執(zhí)行命令,而且將廣播命令再次打包發(fā)至其附近未接收該廣播命令的節(jié)點(diǎn)。本實(shí)施例在具體實(shí)施時(shí),對轉(zhuǎn)發(fā)次數(shù)進(jìn)行預(yù)設(shè),則本實(shí)施例的步驟6通過判斷轉(zhuǎn)發(fā)次數(shù)是否已經(jīng)達(dá)到預(yù)設(shè)值來判斷轉(zhuǎn)發(fā)節(jié)點(diǎn)列表中的節(jié)點(diǎn)都已經(jīng)執(zhí)行過一次轉(zhuǎn)發(fā)。
[0016]以下為本實(shí)施例應(yīng)用時(shí)的一個(gè)具體案例:在同一區(qū)域網(wǎng)絡(luò)中具有I?50號共50個(gè)節(jié)點(diǎn),其排布時(shí)按5行10列矩陣式排布,編號時(shí)第一排從左至右按I?10順次編號,第二排從左至右按11?20順次編號,第三