一種無(wú)線傳感器網(wǎng)絡(luò)多流競(jìng)爭(zhēng)場(chǎng)景下的數(shù)據(jù)傳輸方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種多流競(jìng)爭(zhēng)場(chǎng)景下的無(wú)線傳感網(wǎng)絡(luò)數(shù)據(jù)傳輸方法。其采用數(shù)據(jù)量感知的自適應(yīng)喚醒機(jī)制以及接收節(jié)點(diǎn)發(fā)放令牌機(jī)制,根據(jù)接收節(jié)點(diǎn)回復(fù)的ACK幀指定下一次發(fā)送節(jié)點(diǎn)的ID號(hào),減少了網(wǎng)絡(luò)退避延時(shí);同時(shí)根據(jù)ACK幀中攜帶的數(shù)據(jù)量來(lái)設(shè)定競(jìng)爭(zhēng)節(jié)點(diǎn)休眠時(shí)長(zhǎng),解決了競(jìng)爭(zhēng)節(jié)點(diǎn)長(zhǎng)時(shí)間喚醒問(wèn)題,降低競(jìng)爭(zhēng)節(jié)點(diǎn)的能耗,延長(zhǎng)網(wǎng)絡(luò)壽命。本發(fā)明提出的數(shù)據(jù)傳輸方法,特別適用于多流高負(fù)載傳輸場(chǎng)景,在低流量負(fù)載場(chǎng)景下依然具有較好的性能表現(xiàn)。
【專(zhuān)利說(shuō)明】一種無(wú)線傳感器網(wǎng)絡(luò)多流競(jìng)爭(zhēng)場(chǎng)景下的數(shù)據(jù)傳輸方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種無(wú)線傳感器網(wǎng)絡(luò)中優(yōu)化多流競(jìng)爭(zhēng)傳輸?shù)腗AC層方法設(shè)計(jì),尤其涉 及解決低功耗競(jìng)爭(zhēng)問(wèn)題的MAC層方法設(shè)計(jì)。
【背景技術(shù)】
[0002] 無(wú)線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks, WSN)是由部署在監(jiān)測(cè)區(qū)域內(nèi)大 量的微型傳感器節(jié)點(diǎn)通過(guò)無(wú)線電通信形成的一個(gè)多跳自組織網(wǎng)絡(luò)系統(tǒng),其目的是協(xié)作地感 知、采集和處理網(wǎng)絡(luò)覆蓋區(qū)域內(nèi)被監(jiān)測(cè)對(duì)象的信息,并且發(fā)送給觀察者。隨著無(wú)線傳感器網(wǎng) 絡(luò)理論和技術(shù)的不斷成熟,其應(yīng)用也由最初的軍事領(lǐng)域擴(kuò)張到環(huán)境監(jiān)測(cè)、交通管理、醫(yī)療健 康、工商服務(wù)、反恐抗災(zāi)等諸多領(lǐng)域。無(wú)線傳感器網(wǎng)絡(luò)的各個(gè)節(jié)點(diǎn)是由電池供電,由于節(jié)點(diǎn) 數(shù)目龐大和地理位置嚴(yán)峻,電池的頻繁更換是不現(xiàn)實(shí)的,因此降低各個(gè)節(jié)點(diǎn)的能耗是無(wú)線 傳感網(wǎng)絡(luò)設(shè)計(jì)的主要目標(biāo)。當(dāng)面向洪水監(jiān)控、森林防火等特定應(yīng)用時(shí),由于某一區(qū)域突發(fā)事 件的產(chǎn)生,網(wǎng)絡(luò)呈現(xiàn)出一種突發(fā)高負(fù)載狀態(tài)。多個(gè)節(jié)點(diǎn)會(huì)在監(jiān)測(cè)到這一事件后向網(wǎng)關(guān)節(jié)點(diǎn) 傳輸大量數(shù)據(jù)包,越靠近網(wǎng)關(guān)節(jié)點(diǎn)處,節(jié)點(diǎn)競(jìng)爭(zhēng)越激烈。在傳統(tǒng)的無(wú)線傳感器網(wǎng)絡(luò)中,未競(jìng) 爭(zhēng)到信道的節(jié)點(diǎn)會(huì)一直喚醒等待直到競(jìng)爭(zhēng)到信道的節(jié)點(diǎn)完成傳輸后放棄信道,所有有數(shù)據(jù) 傳輸任務(wù)的節(jié)點(diǎn)會(huì)再一次競(jìng)爭(zhēng)信道。當(dāng)網(wǎng)絡(luò)中存在多條競(jìng)爭(zhēng)流時(shí),這種競(jìng)爭(zhēng)機(jī)制會(huì)使得未 競(jìng)爭(zhēng)到信道的節(jié)點(diǎn)持續(xù)喚醒較長(zhǎng)時(shí)間,造成節(jié)點(diǎn)功耗急劇上升,降低網(wǎng)絡(luò)性能。因此,在多 流競(jìng)爭(zhēng)場(chǎng)景下盡可能減少競(jìng)爭(zhēng)節(jié)點(diǎn)的喚醒等待時(shí)間,降低節(jié)點(diǎn)的功耗至關(guān)重要。
[0003] MAC層處于無(wú)線傳感器網(wǎng)絡(luò)協(xié)議棧的底層部分,決定了無(wú)線信道的使用方式,對(duì)無(wú) 線傳感網(wǎng)絡(luò)性能有極大影響。其主要負(fù)責(zé)信道接入、控制節(jié)點(diǎn)的數(shù)據(jù)傳輸對(duì)無(wú)線共享信道 的占用,以及通過(guò)一組規(guī)則和過(guò)程來(lái)更有效、有序和公平使用共享信道以保證網(wǎng)絡(luò)的整體 性能,針對(duì)特定場(chǎng)景設(shè)計(jì)適合的MAC協(xié)議是解決數(shù)據(jù)傳輸問(wèn)題的有效方法,因此MAC協(xié)議是 無(wú)線傳感器網(wǎng)絡(luò)中最重要的技術(shù)之一。
[0004] 多流競(jìng)爭(zhēng)是無(wú)線傳感網(wǎng)絡(luò)應(yīng)用中經(jīng)常存在的問(wèn)題。針對(duì)上述問(wèn)題,人們提出了多 種MAC協(xié)議解決方案。在基于TDMA的MAC協(xié)議中,不同的用戶按照預(yù)先分配好的順序占用 信道的辦法來(lái)共享同一頻帶,每個(gè)用戶占用一個(gè)周期性重復(fù)的時(shí)隙。這種接入方式,由于 TDMA的發(fā)射被時(shí)隙化,就要求接收機(jī)與每個(gè)數(shù)據(jù)分組保持同步,因此系統(tǒng)需要較高的同步 開(kāi)銷(xiāo)。
[0005] 在基于CSMA的MAC協(xié)議中,通常使用二進(jìn)制指數(shù)退避策略解決多流競(jìng)爭(zhēng)產(chǎn)生的碰 撞問(wèn)題,即當(dāng)碰撞發(fā)生后,每個(gè)節(jié)點(diǎn)為了降低再次碰撞的概率,等待一個(gè)隨機(jī)時(shí)間后再次發(fā) 送數(shù)據(jù)。這種方法雖然沒(méi)有控制開(kāi)銷(xiāo),但是隨著網(wǎng)絡(luò)中數(shù)據(jù)流增加,數(shù)據(jù)包碰撞概率越來(lái)越 大,消耗能量的同時(shí)增加了數(shù)據(jù)傳輸延時(shí),使網(wǎng)絡(luò)性能迅速降低。
【發(fā)明內(nèi)容】
[0006] 鑒于上述問(wèn)題,本發(fā)明將針對(duì)多流競(jìng)爭(zhēng)的無(wú)線傳感網(wǎng)絡(luò)應(yīng)用場(chǎng)景,進(jìn)行低功耗傳 輸?shù)腗AC協(xié)議設(shè)計(jì)與實(shí)現(xiàn)。本發(fā)明的能夠避免每次數(shù)據(jù)幀傳輸完畢后的重新信道競(jìng)爭(zhēng)和未 競(jìng)爭(zhēng)到信道節(jié)點(diǎn)的持續(xù)喚醒等待問(wèn)題,同時(shí)能避免隱藏節(jié)點(diǎn)競(jìng)爭(zhēng)產(chǎn)生的碰撞,降低網(wǎng)絡(luò)節(jié) 點(diǎn)的功耗,提升網(wǎng)絡(luò)性能。
[0007] 技術(shù)方案:為實(shí)現(xiàn)上述目的,本發(fā)明采取以下技術(shù)方案:
[0008] 1、一種無(wú)線傳感器網(wǎng)絡(luò)多流競(jìng)爭(zhēng)場(chǎng)景下的數(shù)據(jù)傳輸方法,采用數(shù)據(jù)量感知的自適 應(yīng)喚醒機(jī)制以及接收節(jié)點(diǎn)發(fā)放令牌機(jī)制。根據(jù)接收節(jié)點(diǎn)回復(fù)的ACK幀指定下一次發(fā)送節(jié)點(diǎn) 的ID號(hào),避免了指定發(fā)送節(jié)點(diǎn)的隨機(jī)退避,減少了網(wǎng)絡(luò)延時(shí),同時(shí)根據(jù)ACK幀中攜帶的數(shù)據(jù) 量來(lái)設(shè)定競(jìng)爭(zhēng)節(jié)點(diǎn)休眠的時(shí)長(zhǎng),解決了競(jìng)爭(zhēng)節(jié)點(diǎn)長(zhǎng)時(shí)間喚醒問(wèn)題,降低競(jìng)爭(zhēng)節(jié)點(diǎn)的能耗,延 長(zhǎng)網(wǎng)絡(luò)壽命。具體為:首先對(duì)加入網(wǎng)絡(luò)的節(jié)點(diǎn)進(jìn)行初始化,發(fā)送節(jié)點(diǎn)建立接收列表和鄰居列 表,當(dāng)接收節(jié)點(diǎn)檢測(cè)到碰撞時(shí),接收節(jié)點(diǎn)發(fā)送一個(gè)帶有競(jìng)爭(zhēng)窗的信標(biāo)幀,發(fā)送節(jié)點(diǎn)收到信標(biāo) 幀后做隨機(jī)退避,競(jìng)爭(zhēng)到信道的節(jié)點(diǎn)發(fā)送數(shù)據(jù)幀,在此數(shù)據(jù)幀中攜帶此刻緩存隊(duì)列中的數(shù) 據(jù)量。接收節(jié)點(diǎn)收到數(shù)據(jù)幀后,回復(fù)ACK確認(rèn)幀,在ACK幀中指定下一次發(fā)送節(jié)點(diǎn)的ID號(hào) 和發(fā)送節(jié)點(diǎn)的數(shù)據(jù)量。對(duì)于收到ACK幀帶有的ID號(hào)是自己的發(fā)送節(jié)點(diǎn)不必做競(jìng)爭(zhēng)退避,立 刻發(fā)送數(shù)據(jù)幀,其余未競(jìng)爭(zhēng)到信道的節(jié)點(diǎn)收到ACK幀后根據(jù)數(shù)據(jù)量開(kāi)啟定時(shí)器并休眠,等 定時(shí)器超時(shí)后喚醒進(jìn)行數(shù)據(jù)的傳輸。
[0009] 上述方法具體包括如下步驟:
[0010] 一種無(wú)線傳感器網(wǎng)絡(luò)多流競(jìng)爭(zhēng)場(chǎng)景下的數(shù)據(jù)傳輸方法,分為三個(gè)步驟,其特征在 于:
[0011] 步驟a、對(duì)加入網(wǎng)絡(luò)的節(jié)點(diǎn)進(jìn)行初始化,發(fā)送節(jié)點(diǎn)建立接收列表和鄰居列表,當(dāng)接 收節(jié)點(diǎn)檢測(cè)到碰撞時(shí),接收節(jié)點(diǎn)發(fā)送一個(gè)帶有競(jìng)爭(zhēng)窗的信標(biāo)幀,發(fā)送節(jié)點(diǎn)收到信標(biāo)幀后做 隨機(jī)退避,競(jìng)爭(zhēng)到信道的節(jié)點(diǎn)發(fā)送數(shù)據(jù)幀,在此數(shù)據(jù)幀中攜帶此刻緩存隊(duì)列中的數(shù)據(jù)量;
[0012] 步驟b、接收節(jié)點(diǎn)收到數(shù)據(jù)巾貞后,回復(fù)ACK確認(rèn)巾貞,在ACK巾貞中指定下一次發(fā)送節(jié)點(diǎn) 的ID號(hào)和發(fā)送節(jié)點(diǎn)的數(shù)據(jù)量;
[0013] 步驟c、對(duì)于收到ACK幀帶有的ID號(hào)是自己的發(fā)送節(jié)點(diǎn)不必做競(jìng)爭(zhēng)退避,立刻發(fā)送 數(shù)據(jù)幀,其余未競(jìng)爭(zhēng)到信道的節(jié)點(diǎn)收到ACK幀后根據(jù)數(shù)據(jù)量開(kāi)啟定時(shí)器并休眠,等定時(shí)器 超時(shí)后喚醒進(jìn)行數(shù)據(jù)的傳輸。
[0014] 其中,所述步驟a具體為步驟1到步驟3,具體如下:
[0015] 步驟1、發(fā)送節(jié)點(diǎn)有數(shù)據(jù)需要發(fā)送,查詢接收列表,如果接收節(jié)點(diǎn)在發(fā)送節(jié)點(diǎn)的接 收列表中,進(jìn)入步驟1-1 ;如果接收節(jié)點(diǎn)不在發(fā)送節(jié)點(diǎn)的接收列表中,進(jìn)入步驟1-2 ;
[0016] 步驟1-1、發(fā)送節(jié)點(diǎn)預(yù)測(cè)接收節(jié)點(diǎn)醒來(lái)的時(shí)間,在接收節(jié)點(diǎn)醒來(lái)前喚醒偵聽(tīng)信道, 進(jìn)入步驟2 ;
[0017] 步驟1-2、發(fā)送節(jié)點(diǎn)立刻喚醒偵聽(tīng)信道,進(jìn)入步驟2 ;
[0018] 步驟2、接收節(jié)點(diǎn)喚醒,并發(fā)送信標(biāo)幀,進(jìn)入步驟3 ;
[0019] 步驟3、當(dāng)發(fā)送節(jié)點(diǎn)接收到不含競(jìng)爭(zhēng)窗的信標(biāo)幀,進(jìn)入步驟3-1 ;當(dāng)發(fā)送節(jié)點(diǎn)接收 到含有競(jìng)爭(zhēng)窗的信標(biāo)幀,進(jìn)入步驟3-2 ;當(dāng)發(fā)送節(jié)點(diǎn)收到ACK確認(rèn)幀,進(jìn)入步驟3-3 ;當(dāng)發(fā)送 節(jié)點(diǎn)收到數(shù)據(jù)分組時(shí)進(jìn)入步驟3-4 ;
[0020] 步驟3-1、此時(shí)表明接收端未檢測(cè)到碰撞,發(fā)送節(jié)點(diǎn)經(jīng)過(guò)DIFS時(shí)長(zhǎng)后發(fā)送數(shù)據(jù)幀, 數(shù)據(jù)幀中攜帶此時(shí)隊(duì)列中的數(shù)據(jù)量。查詢接收列表,如果接收節(jié)點(diǎn)不在列表中,需要在發(fā)送 的數(shù)據(jù)幀中添加請(qǐng)求標(biāo)識(shí)位,進(jìn)入步驟4 ;
[0021] 步驟3-2、此時(shí)表示接收端檢測(cè)到碰撞,發(fā)送節(jié)點(diǎn)經(jīng)過(guò)DIFS加隨機(jī)退避時(shí)長(zhǎng)后發(fā) 送數(shù)據(jù)幀,數(shù)據(jù)幀中攜帶此時(shí)隊(duì)列中的數(shù)據(jù)量,進(jìn)入步驟4 ;
[0022] 步驟3-3、進(jìn)入步驟5 ;
[0023] 步驟3-4、發(fā)送節(jié)點(diǎn)對(duì)于發(fā)給自己的數(shù)據(jù)分組則接收,并進(jìn)入步驟4 ;發(fā)送節(jié)點(diǎn)對(duì) 于串音收到的數(shù)據(jù)分組則丟棄;
[0024] 其中所述步驟b具體如下:
[0025] 步驟4、接收節(jié)點(diǎn)收到數(shù)據(jù)幀,根據(jù)數(shù)據(jù)幀是否含有請(qǐng)求標(biāo)識(shí)位回復(fù)ACK幀。數(shù)據(jù) 幀含有請(qǐng)求標(biāo)識(shí)位,進(jìn)入步驟4-1 ;數(shù)據(jù)幀不含請(qǐng)求標(biāo)識(shí)位,進(jìn)入步驟4-2 ;當(dāng)接收節(jié)點(diǎn)檢測(cè) 到了碰撞進(jìn)入步驟4-3 ;
[0026] 步驟4-1、添加自身調(diào)度信息、發(fā)送節(jié)點(diǎn)的數(shù)據(jù)量和發(fā)送節(jié)點(diǎn)的ID號(hào)到ACK幀,如 果此時(shí)發(fā)送節(jié)點(diǎn)的數(shù)據(jù)量為〇,則不添加發(fā)送節(jié)點(diǎn)的ID號(hào),發(fā)送ACK幀,進(jìn)入步驟5 ;
[0027] 步驟4-2、添加發(fā)送節(jié)點(diǎn)的數(shù)據(jù)量和發(fā)送節(jié)點(diǎn)的ID號(hào)到ACK幀,如果此時(shí)發(fā)送節(jié)點(diǎn) 的數(shù)據(jù)量為〇,則不添加發(fā)送節(jié)點(diǎn)的ID號(hào),發(fā)送ACK幀,進(jìn)入步驟5 ;
[0028] 步驟4-3、使用二進(jìn)制指數(shù)退避方法,接收節(jié)點(diǎn)發(fā)送帶有競(jìng)爭(zhēng)窗口的信標(biāo)幀,返回 步驟3 ;
[0029] 其中所述步驟c具體為步驟5到步驟6,具體如下:
[0030] 步驟5、當(dāng)發(fā)送節(jié)點(diǎn)收到含有ID號(hào)的ACK幀,進(jìn)入步驟5-1 ;當(dāng)發(fā)送節(jié)點(diǎn)收到不含 ID號(hào)的ACK幀進(jìn)入步驟5-2 ;
[0031] 步驟5-1、當(dāng)ACK幀中的ID號(hào)是自己則無(wú)需退避繼續(xù)傳輸;當(dāng)ACK幀中的ID號(hào)不 是自己,則解析ACK幀中攜帶的數(shù)據(jù)量,設(shè)定定時(shí)器并休眠,進(jìn)入步驟6 ;
[0032] 步驟5-2、當(dāng)ACK幀發(fā)送給自己且發(fā)送節(jié)點(diǎn)有數(shù)據(jù)待發(fā)送,做CCA檢測(cè),通過(guò)CCA檢 測(cè)后發(fā)送數(shù)據(jù);當(dāng)ACK幀不發(fā)送自己,將ACK幀轉(zhuǎn)變成信標(biāo)幀并廣播;
[0033] 步驟6、等待定時(shí)器超時(shí)后喚醒偵聽(tīng)信道,如果發(fā)送節(jié)點(diǎn)收到不含ID號(hào)的ACK幀, 競(jìng)爭(zhēng)信道,準(zhǔn)備數(shù)據(jù)傳輸;如果發(fā)送節(jié)點(diǎn)仍收到帶有ID號(hào)的ACK幀,返回步驟5。
[0034] 所述設(shè)定的定時(shí)器時(shí)長(zhǎng)為ACK幀中所攜帶的數(shù)據(jù)量的個(gè)數(shù)乘以單個(gè)數(shù)據(jù)包單跳 范圍內(nèi)完成一次傳輸所消耗的時(shí)間。
[0035] 具體的,所述步驟1中,發(fā)送節(jié)點(diǎn)采用線性同余法預(yù)測(cè)接收節(jié)點(diǎn)醒來(lái)時(shí)間,具體 為:
[0036] Xn+1 = (aXn+c)modm
[0037] 其中,m是系數(shù),m > 0 ;a是乘數(shù),0 < a < m ;c是增量,0 < c < m ;Xn是當(dāng)前的種 子,0 < Xn < m ;每個(gè)Xn產(chǎn)生的Xn+1可以用于偽隨機(jī)數(shù),成為一個(gè)新的種子。因此,只要發(fā)送 節(jié)點(diǎn)能夠知道m(xù)、a、c和X n的值,那么發(fā)送節(jié)點(diǎn)就可以推算出接收節(jié)點(diǎn)未來(lái)的喚醒時(shí)間。
[0038] 所述步驟5中,設(shè)定的定時(shí)器時(shí)長(zhǎng)為ACK幀中所攜帶的數(shù)據(jù)量的個(gè)數(shù)乘以單個(gè)數(shù) 據(jù)包單跳范圍內(nèi)完成一次傳輸所消耗的時(shí)間。
[0039] 有益效果:本發(fā)明提供的無(wú)線傳感器網(wǎng)絡(luò)多流競(jìng)爭(zhēng)場(chǎng)景下的數(shù)據(jù)傳輸方法,具有 如下優(yōu)點(diǎn):1、通過(guò)接收節(jié)點(diǎn)發(fā)放令牌,避免了獲得令牌的發(fā)送節(jié)點(diǎn)的隨機(jī)退避時(shí)間,減少了 網(wǎng)絡(luò)傳輸延時(shí);2、計(jì)算獲得信道的發(fā)送節(jié)點(diǎn)持續(xù)傳輸占用信道的時(shí)長(zhǎng),未競(jìng)爭(zhēng)到信道的節(jié) 點(diǎn)休眠,在競(jìng)爭(zhēng)到信道節(jié)點(diǎn)發(fā)送結(jié)束后喚醒,節(jié)省節(jié)點(diǎn)能耗,延長(zhǎng)網(wǎng)絡(luò)壽命;3、在ACK幀中 攜帶ID號(hào)能夠解決隱藏終端產(chǎn)生的碰撞問(wèn)題;4、適用于多流的、高負(fù)載的WSN網(wǎng)絡(luò),也同樣 適用于稀疏的、低負(fù)載網(wǎng)絡(luò)。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0040] 圖1是本發(fā)明方法整體流程圖
[0041] 圖2是ACK幀格式示意圖
[0042] 圖3是預(yù)測(cè)喚醒MAC示意圖
[0043] 圖4是數(shù)據(jù)量感知的自適應(yīng)喚醒示意圖
[0044] 圖5是步驟3的流程圖
[0045] 圖6是步驟4的流程圖
[0046] 圖7是步驟5的流程圖
【具體實(shí)施方式】
[0047] 下面結(jié)合附圖對(duì)本發(fā)明的進(jìn)行詳細(xì)的描述。
[0048] 一種無(wú)線傳感器網(wǎng)絡(luò)多流競(jìng)爭(zhēng)場(chǎng)景下的數(shù)據(jù)傳輸方法,首先對(duì)加入網(wǎng)絡(luò)的節(jié)點(diǎn)進(jìn) 行初始化,發(fā)送節(jié)點(diǎn)建立接收列表和鄰居列表,當(dāng)接收節(jié)點(diǎn)檢測(cè)到碰撞時(shí),接收節(jié)點(diǎn)發(fā)送一 個(gè)帶有競(jìng)爭(zhēng)窗的信標(biāo)幀,發(fā)送節(jié)點(diǎn)收到信標(biāo)幀后做隨機(jī)退避,競(jìng)爭(zhēng)到信道的節(jié)點(diǎn)發(fā)送數(shù)據(jù) 幀,在此數(shù)據(jù)幀中攜帶此刻緩存隊(duì)列中的數(shù)據(jù)量。接收節(jié)點(diǎn)收到數(shù)據(jù)幀后,回復(fù)ACK確認(rèn) 幀,在ACK幀中指定下一次發(fā)送節(jié)點(diǎn)的ID號(hào)和發(fā)送節(jié)點(diǎn)的數(shù)據(jù)量。對(duì)于收到ACK幀帶有的 ID號(hào)是自己的發(fā)送節(jié)點(diǎn)不必做競(jìng)爭(zhēng)退避,立刻發(fā)送數(shù)據(jù)幀,其余未競(jìng)爭(zhēng)到信道的節(jié)點(diǎn)收到 ACK幀后根據(jù)數(shù)據(jù)量開(kāi)啟定時(shí)器并休眠,等定時(shí)器超時(shí)后喚醒進(jìn)行數(shù)據(jù)的傳輸。如圖1所 示,該方法具體包括如下步驟:
[0049] 步驟1、發(fā)送節(jié)點(diǎn)有數(shù)據(jù)需要發(fā)送,查詢接收列表,如果接收節(jié)點(diǎn)在發(fā)送節(jié)點(diǎn)的接 收列表中,進(jìn)入步驟1-1 ;如果接收節(jié)點(diǎn)不在發(fā)送節(jié)點(diǎn)的接收列表中,進(jìn)入步驟1-2 ;
[0050] 步驟1-1、發(fā)送節(jié)點(diǎn)預(yù)測(cè)接收節(jié)點(diǎn)醒來(lái)的時(shí)間,在接收節(jié)點(diǎn)醒來(lái)前喚醒偵聽(tīng)信道, 進(jìn)入步驟2 ;
[0051] 步驟1-2、發(fā)送節(jié)點(diǎn)立刻喚醒偵聽(tīng)信道,進(jìn)入步驟2 ;
[0052] 步驟2,接收節(jié)點(diǎn)喚醒,并發(fā)送信標(biāo)幀,進(jìn)入步驟3 ;
[0053] 步驟3、當(dāng)發(fā)送節(jié)點(diǎn)接收到不含競(jìng)爭(zhēng)窗的信標(biāo)幀,進(jìn)入步驟3-1 ;當(dāng)發(fā)送節(jié)點(diǎn)接收 到含有競(jìng)爭(zhēng)窗的信標(biāo)幀,進(jìn)入步驟3-2 ;當(dāng)發(fā)送節(jié)點(diǎn)收到ACK確認(rèn)幀,進(jìn)入步驟3-3 ;當(dāng)發(fā)送 節(jié)點(diǎn)收到數(shù)據(jù)分組時(shí)進(jìn)入步驟3-4 ;
[0054] 步驟3-1、此時(shí)表明接收端未檢測(cè)到碰撞,發(fā)送節(jié)點(diǎn)經(jīng)過(guò)DIFS時(shí)長(zhǎng)后發(fā)送數(shù)據(jù)幀, 數(shù)據(jù)幀中攜帶此時(shí)隊(duì)列中的數(shù)據(jù)量。查詢接收列表,如果接收節(jié)點(diǎn)不在列表中,需要在發(fā)送 的數(shù)據(jù)幀中添加請(qǐng)求標(biāo)識(shí)位,進(jìn)入步驟4 ;
[0055] 步驟3-2、此時(shí)表示接收端檢測(cè)到碰撞,發(fā)送節(jié)點(diǎn)經(jīng)過(guò)DIFS加隨機(jī)退避時(shí)長(zhǎng)后發(fā) 送數(shù)據(jù)幀,數(shù)據(jù)幀中攜帶此時(shí)隊(duì)列中的數(shù)據(jù)量,進(jìn)入步驟4 ;
[0056] 步驟3-3、進(jìn)入步驟5 ;
[0057] 步驟3-4、發(fā)送節(jié)點(diǎn)對(duì)于發(fā)給自己的數(shù)據(jù)分組則接收,并進(jìn)入步驟4 ;發(fā)送節(jié)點(diǎn)對(duì) 于串音收到的數(shù)據(jù)分組則丟棄;
[0058] 步驟4、接收節(jié)點(diǎn)收到數(shù)據(jù)幀,根據(jù)數(shù)據(jù)幀是否含有請(qǐng)求標(biāo)識(shí)位回復(fù)ACK幀。數(shù)據(jù) 幀含有請(qǐng)求標(biāo)識(shí)位,進(jìn)入步驟4-1 ;數(shù)據(jù)幀不含請(qǐng)求標(biāo)識(shí)位,進(jìn)入步驟4-2 ;當(dāng)接收節(jié)點(diǎn)檢測(cè) 到了碰撞,進(jìn)入步驟4-3 ;
[0059] 步驟4-1、添加自身調(diào)度信息、發(fā)送節(jié)點(diǎn)的數(shù)據(jù)量和發(fā)送節(jié)點(diǎn)的ID號(hào)到ACK幀,如 果此時(shí)發(fā)送節(jié)點(diǎn)的數(shù)據(jù)量為0,則不添加發(fā)送節(jié)點(diǎn)的ID號(hào),發(fā)送ACK幀,進(jìn)入步驟5 ;
[0060] 步驟4-2、添加發(fā)送節(jié)點(diǎn)的數(shù)據(jù)量和發(fā)送節(jié)點(diǎn)的ID號(hào)到ACK幀,如果此時(shí)發(fā)送節(jié)點(diǎn) 的數(shù)據(jù)量為〇,則不添加發(fā)送節(jié)點(diǎn)的ID號(hào),發(fā)送ACK幀,進(jìn)入步驟5 ;
[0061] 步驟4-3、使用二進(jìn)制指數(shù)退避方法,接收節(jié)點(diǎn)發(fā)送帶有競(jìng)爭(zhēng)窗口的信標(biāo)幀,返回 步驟3 ;
[0062] 步驟5、當(dāng)發(fā)送節(jié)點(diǎn)收到含有ID號(hào)的ACK幀,進(jìn)入步驟5-1 ;當(dāng)發(fā)送節(jié)點(diǎn)收到不含 ID號(hào)的ACK幀進(jìn)入步驟5-2 ;
[0063] 步驟5-1、當(dāng)ACK幀中的ID號(hào)是自己則無(wú)需退避繼續(xù)傳輸;當(dāng)ACK幀中的ID號(hào)不 是自己,則解析ACK幀中攜帶的數(shù)據(jù)量,設(shè)定定時(shí)器并休眠,進(jìn)入步驟6 ;
[0064] 步驟5-2、當(dāng)ACK幀發(fā)送給自己且發(fā)送節(jié)點(diǎn)有數(shù)據(jù)待發(fā)送,做CCA檢測(cè),通過(guò)CCA檢 測(cè)后發(fā)送數(shù)據(jù);當(dāng)ACK幀不發(fā)送自己,將ACK幀轉(zhuǎn)變成信標(biāo)幀并廣播;
[0065] 步驟6、等待定時(shí)器超時(shí)后喚醒偵聽(tīng)信道,如果發(fā)送節(jié)點(diǎn)收到不含ID號(hào)的ACK幀, 競(jìng)爭(zhēng)信道,準(zhǔn)備數(shù)據(jù)傳輸;如果發(fā)送節(jié)點(diǎn)仍收到帶有ID號(hào)的ACK幀,返回步驟5。
[0066] 具體的,所述步驟1中,發(fā)送節(jié)點(diǎn)采用線性同余法預(yù)測(cè)接收節(jié)點(diǎn)醒來(lái)時(shí)間,具體 為:
[0067] Xn+1 = (aXn+c)modm
[0068] 其中,m是系數(shù),m > 0 ;a是乘數(shù),0 < a < m ;c是增量,0 < c < m ;Xn是當(dāng)前的種 子,0 < Xn < m ;每個(gè)Xn產(chǎn)生的Xn+1可以用于偽隨機(jī)數(shù),成為一個(gè)新的種子。因此,只要發(fā)送 節(jié)點(diǎn)能夠知道m(xù)、a、c和Xn的值,那么發(fā)送節(jié)點(diǎn)就可以推算出接收節(jié)點(diǎn)未來(lái)的喚醒時(shí)間。 [0069] 所述步驟5中,設(shè)定的定時(shí)器時(shí)長(zhǎng)為ACK幀中所攜帶的數(shù)據(jù)量的個(gè)數(shù)乘以單個(gè)數(shù) 據(jù)包單跳范圍內(nèi)完成一次傳輸所消耗的時(shí)間。
[0070] 下面就本發(fā)明的具體加以說(shuō)明。
[0071] 在網(wǎng)絡(luò)初始化后,發(fā)送節(jié)點(diǎn)有數(shù)據(jù)幀需要發(fā)送時(shí)檢查自己的接收列表中,如果接 收節(jié)點(diǎn)不在自己的接收列表中,發(fā)送節(jié)點(diǎn)立刻喚醒等待接收節(jié)點(diǎn)的信標(biāo)幀;如果接收節(jié)點(diǎn) 在自己的接收列表中,發(fā)送節(jié)點(diǎn)預(yù)測(cè)接收節(jié)點(diǎn)醒來(lái)的時(shí)間,在接收節(jié)點(diǎn)醒來(lái)前喚醒偵聽(tīng)信 道,在發(fā)送節(jié)點(diǎn)成功收到接收節(jié)點(diǎn)的信標(biāo)幀之后進(jìn)行數(shù)據(jù)幀的傳輸。發(fā)送節(jié)點(diǎn)在發(fā)送數(shù)據(jù) 幀之前會(huì)查詢接收節(jié)點(diǎn)是否在自己的接收列表中,如果不在則在數(shù)據(jù)幀中添加請(qǐng)求標(biāo)識(shí) 位,要求接收節(jié)點(diǎn)提供調(diào)度信息,此外發(fā)送節(jié)點(diǎn)還在數(shù)據(jù)幀中添加當(dāng)前緩存隊(duì)列中的數(shù)據(jù) 量。
[0072] 接收節(jié)點(diǎn)收到數(shù)據(jù)幀之后會(huì)檢測(cè)數(shù)據(jù)幀是否含有請(qǐng)求標(biāo)識(shí)位,對(duì)于含有請(qǐng)求標(biāo)識(shí) 位的數(shù)據(jù)幀,接收節(jié)點(diǎn)在回復(fù)的A CK確認(rèn)幀中攜帶調(diào)度信息;接收節(jié)點(diǎn)同時(shí)在A CK幀中添加 數(shù)據(jù)幀中攜帶的數(shù)據(jù)量和發(fā)送數(shù)據(jù)幀節(jié)點(diǎn)的ID號(hào),當(dāng)解析出數(shù)據(jù)量為零時(shí),則不在ACK幀 中添加發(fā)送節(jié)點(diǎn)的ID號(hào),收到這樣ACK幀的發(fā)送節(jié)點(diǎn)會(huì)重新競(jìng)爭(zhēng)信道,ACK幀格式如圖2所 示。此后,發(fā)送節(jié)點(diǎn)可以預(yù)測(cè)到接收節(jié)點(diǎn)醒來(lái)的時(shí)間,提前醒來(lái),進(jìn)行分組的發(fā)送,如圖3所 示,大大減少了發(fā)送節(jié)點(diǎn)偵聽(tīng)時(shí)間,其核心機(jī)制是利用偽隨機(jī)數(shù)算法,如公式(1)所示:
[0073] Xn+1 = (aXn+c)modm
[0074] (1)
[0075] 其中,m是系數(shù),m > 0 ;a是乘數(shù),0 < a < m ;c是增量,0 < c < m ;Xn是當(dāng)前的種 子,0 < Xn < m ;每個(gè)Xn產(chǎn)生的Xn+1可以用于偽隨機(jī)數(shù),成為一個(gè)新的種子。因此,只要發(fā)送 節(jié)點(diǎn)能夠知道m(xù)、a、c和X n的值,那么發(fā)送節(jié)點(diǎn)就可以推算出接收節(jié)點(diǎn)未來(lái)的喚醒時(shí)間。在 本發(fā)明實(shí)驗(yàn)中取a = 21,c = 7, m = 750。
[0076] 發(fā)送節(jié)點(diǎn)如果沒(méi)有收到回復(fù)的ACK幀,一段時(shí)間后會(huì)重傳數(shù)據(jù)幀,重傳的上限為5 次,當(dāng)重傳計(jì)數(shù)器超過(guò)5次時(shí),這個(gè)數(shù)據(jù)幀會(huì)被丟棄。如果收到帶有ID號(hào)的ACK幀且ID號(hào) 就是自己,則發(fā)送節(jié)點(diǎn)不需做隨機(jī)退避,在DIFS時(shí)長(zhǎng)后發(fā)送數(shù)據(jù)幀。如果發(fā)送節(jié)點(diǎn)收到不 含有ID號(hào)的ACK幀,則發(fā)送節(jié)點(diǎn)需要在DIFS加隨機(jī)退避時(shí)長(zhǎng)后競(jìng)爭(zhēng)信道發(fā)送數(shù)據(jù)幀。如 圖4所示,如果發(fā)送節(jié)點(diǎn)收到帶有ID號(hào)的ACK幀但I(xiàn)D號(hào)并不是自己,發(fā)送節(jié)點(diǎn)解析ACK幀 中攜帶的數(shù)據(jù)量,開(kāi)啟定時(shí)器并立刻休眠,根據(jù)數(shù)據(jù)量設(shè)定定時(shí)器的超時(shí)時(shí)間,在定時(shí)器超 時(shí)后喚醒檢測(cè)信道,進(jìn)行數(shù)據(jù)的傳輸。未競(jìng)爭(zhēng)到信道的發(fā)送節(jié)點(diǎn)不必一直喚醒等待信道,競(jìng) 爭(zhēng)到信道的節(jié)點(diǎn)由于獲得帶有自己ID號(hào)的令牌無(wú)需做隨機(jī)退避。
[0077] 由于發(fā)送節(jié)點(diǎn)緩存隊(duì)列中的數(shù)據(jù)是動(dòng)態(tài)更新的,而競(jìng)爭(zhēng)節(jié)點(diǎn)收到第一個(gè)ACK幀后 休眠,并不知道后續(xù)發(fā)送節(jié)點(diǎn)的緩存情況。因此在本發(fā)明中,我們?cè)贏CK幀中指定發(fā)送節(jié)點(diǎn) 的ID號(hào)。當(dāng)競(jìng)爭(zhēng)節(jié)點(diǎn)喚醒后,如果發(fā)送節(jié)點(diǎn)緩存隊(duì)列中新增數(shù)據(jù)幀而并沒(méi)有傳輸完畢,由 于ID號(hào)是自己的發(fā)送節(jié)點(diǎn)不需要隨機(jī)退避,因此該節(jié)點(diǎn)可以繼續(xù)占用信道,而其余喚醒的 競(jìng)爭(zhēng)節(jié)點(diǎn)則繼續(xù)根據(jù)新的數(shù)據(jù)量設(shè)定再一次休眠的時(shí)長(zhǎng)。此外,在基于CSMA傳統(tǒng)無(wú)線傳感 器網(wǎng)絡(luò)的異步MAC協(xié)議中并沒(méi)有考慮隱藏終端問(wèn)題,在ACK幀中發(fā)放令牌指定發(fā)送節(jié)點(diǎn)的 ID號(hào),隱藏節(jié)點(diǎn)收到帶有ID號(hào)不是自己的ACK幀根據(jù)ACK幀中的數(shù)據(jù)量設(shè)定休眠時(shí)長(zhǎng),能 夠有效避免隱藏節(jié)點(diǎn)產(chǎn)生的碰撞問(wèn)題,節(jié)省節(jié)點(diǎn)能耗。
[0078] 以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出:對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人 員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng) 視為本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1. 一種無(wú)線傳感器網(wǎng)絡(luò)多流競(jìng)爭(zhēng)場(chǎng)景下的數(shù)據(jù)傳輸方法,分為三個(gè)步驟,其特征在 于: 步驟a、對(duì)加入網(wǎng)絡(luò)的節(jié)點(diǎn)進(jìn)行初始化,發(fā)送節(jié)點(diǎn)建立接收列表和鄰居列表,當(dāng)接收節(jié) 點(diǎn)檢測(cè)到碰撞時(shí),接收節(jié)點(diǎn)發(fā)送一個(gè)帶有競(jìng)爭(zhēng)窗的信標(biāo)幀,發(fā)送節(jié)點(diǎn)收到信標(biāo)幀后做隨機(jī) 退避,競(jìng)爭(zhēng)到信道的節(jié)點(diǎn)發(fā)送數(shù)據(jù)幀,在此數(shù)據(jù)幀中攜帶此刻緩存隊(duì)列中的數(shù)據(jù)量; 步驟b、接收節(jié)點(diǎn)收到數(shù)據(jù)幀后,回復(fù)ACK確認(rèn)幀,在ACK幀中指定下一次發(fā)送節(jié)點(diǎn)的 ID號(hào)和發(fā)送節(jié)點(diǎn)的數(shù)據(jù)量; 步驟c、對(duì)于收到ACK幀帶有的ID號(hào)是自己的發(fā)送節(jié)點(diǎn)不必做競(jìng)爭(zhēng)退避,立刻發(fā)送數(shù)據(jù) 幀,其余未競(jìng)爭(zhēng)到信道的節(jié)點(diǎn)收到ACK幀后根據(jù)數(shù)據(jù)量開(kāi)啟定時(shí)器并休眠,等定時(shí)器超時(shí) 后喚醒進(jìn)行數(shù)據(jù)的傳輸。
2. 如權(quán)利要求1所述的無(wú)線傳感器網(wǎng)絡(luò)多流競(jìng)爭(zhēng)傳輸?shù)膬?yōu)化方法,其中所述步驟a具 體為步驟1到步驟3,具體如下: 步驟1、發(fā)送節(jié)點(diǎn)有數(shù)據(jù)需要發(fā)送,查詢接收列表,如果接收節(jié)點(diǎn)在發(fā)送節(jié)點(diǎn)的接收列 表中,進(jìn)入步驟1-1 ;如果接收節(jié)點(diǎn)不在發(fā)送節(jié)點(diǎn)的接收列表中,進(jìn)入步驟1-2 ; 步驟1-1、發(fā)送節(jié)點(diǎn)預(yù)測(cè)接收節(jié)點(diǎn)醒來(lái)的時(shí)間,在接收節(jié)點(diǎn)醒來(lái)前喚醒偵聽(tīng)信道,進(jìn)入 步驟2 ; 步驟1-2、發(fā)送節(jié)點(diǎn)立刻喚醒偵聽(tīng)信道,進(jìn)入步驟2 ; 步驟2、接收節(jié)點(diǎn)喚醒,并發(fā)送信標(biāo)幀,進(jìn)入步驟3 ; 步驟3、當(dāng)發(fā)送節(jié)點(diǎn)接收到不含競(jìng)爭(zhēng)窗的信標(biāo)幀,進(jìn)入步驟3-1 ;當(dāng)發(fā)送節(jié)點(diǎn)接收到含 有競(jìng)爭(zhēng)窗的信標(biāo)幀,進(jìn)入步驟3-2 ;當(dāng)發(fā)送節(jié)點(diǎn)收到ACK確認(rèn)幀,進(jìn)入步驟3-3 ;當(dāng)發(fā)送節(jié)點(diǎn) 收到數(shù)據(jù)分組時(shí)進(jìn)入步驟3-4 ; 步驟3-1、此時(shí)表明接收端未檢測(cè)到碰撞,發(fā)送節(jié)點(diǎn)經(jīng)過(guò)DIFS時(shí)長(zhǎng)后發(fā)送數(shù)據(jù)幀,數(shù)據(jù) 幀中攜帶此時(shí)隊(duì)列中的數(shù)據(jù)量, 查詢接收列表,如果接收節(jié)點(diǎn)不在列表中,需要在發(fā)送的數(shù)據(jù)幀中添加請(qǐng)求標(biāo)識(shí)位,進(jìn) 入步驟4 ; 步驟3-2、此時(shí)表示接收端檢測(cè)到碰撞,發(fā)送節(jié)點(diǎn)經(jīng)過(guò)DIFS加隨機(jī)退避時(shí)長(zhǎng)后發(fā)送數(shù) 據(jù)幀,數(shù)據(jù)幀中攜帶此時(shí)隊(duì)列中的數(shù)據(jù)量,進(jìn)入步驟4 ; 步驟3-3、進(jìn)入步驟5 ; 步驟3-4、發(fā)送節(jié)點(diǎn)對(duì)于發(fā)給自己的數(shù)據(jù)分組則接收,并進(jìn)入步驟4 ;發(fā)送節(jié)點(diǎn)對(duì)于串 音收到的數(shù)據(jù)分組則丟棄; 其中所述步驟b具體如下: 步驟4、接收節(jié)點(diǎn)收到數(shù)據(jù)幀,根據(jù)數(shù)據(jù)幀是否含有請(qǐng)求標(biāo)識(shí)位回復(fù)ACK幀, 數(shù)據(jù)幀含有請(qǐng)求標(biāo)識(shí)位,進(jìn)入步驟4-1 ;數(shù)據(jù)幀不含請(qǐng)求標(biāo)識(shí)位,進(jìn)入步驟4-2 ;當(dāng)接收 節(jié)點(diǎn)檢測(cè)到了碰撞進(jìn)入步驟4-3 ; 步驟4-1、添加自身調(diào)度信息、發(fā)送節(jié)點(diǎn)的數(shù)據(jù)量和發(fā)送節(jié)點(diǎn)的ID號(hào)到ACK幀,如果此 時(shí)發(fā)送節(jié)點(diǎn)的數(shù)據(jù)量為0,則不添加發(fā)送節(jié)點(diǎn)的ID號(hào),發(fā)送ACK幀,進(jìn)入步驟5 ; 步驟4-2、添加發(fā)送節(jié)點(diǎn)的數(shù)據(jù)量和發(fā)送節(jié)點(diǎn)的ID號(hào)到ACK幀,如果此時(shí)發(fā)送節(jié)點(diǎn)的數(shù) 據(jù)量為〇,則不添加發(fā)送節(jié)點(diǎn)的ID號(hào),發(fā)送ACK幀,進(jìn)入步驟5 ; 步驟4-3、使用二進(jìn)制指數(shù)退避方法,接收節(jié)點(diǎn)發(fā)送帶有競(jìng)爭(zhēng)窗口的信標(biāo)幀,返回步驟 3 ; 其中所述步驟c具體為步驟5到步驟6,具體如下: 步驟5、當(dāng)發(fā)送節(jié)點(diǎn)收到含有ID號(hào)的ACK幀,進(jìn)入步驟5-1 ;當(dāng)發(fā)送節(jié)點(diǎn)收到不含ID號(hào) 的ACK幀進(jìn)入步驟5-2 ; 步驟5-1、當(dāng)ACK幀中的ID號(hào)是自己則無(wú)需退避繼續(xù)傳輸;當(dāng)ACK幀中的ID號(hào)不是自 己,則解析ACK幀中攜帶的數(shù)據(jù)量,設(shè)定定時(shí)器并休眠,進(jìn)入步驟6 ; 步驟5-2、當(dāng)ACK幀發(fā)送給自己且發(fā)送節(jié)點(diǎn)有數(shù)據(jù)待發(fā)送,做CCA檢測(cè),通過(guò)CCA檢測(cè)后 發(fā)送數(shù)據(jù);當(dāng)ACK幀不發(fā)送自己,將ACK幀轉(zhuǎn)變成信標(biāo)幀并廣播; 步驟6、等待定時(shí)器超時(shí)后喚醒偵聽(tīng)信道,如果發(fā)送節(jié)點(diǎn)收到不含ID號(hào)的ACK幀,競(jìng)爭(zhēng) 信道,準(zhǔn)備數(shù)據(jù)傳輸;如果發(fā)送節(jié)點(diǎn)仍收到帶有ID號(hào)的ACK幀,返回步驟5。
3.根據(jù)權(quán)利要求2所述無(wú)線傳感器網(wǎng)絡(luò)多流競(jìng)爭(zhēng)場(chǎng)景下的數(shù)據(jù)傳輸方法,其中所述設(shè) 定的定時(shí)器時(shí)長(zhǎng)為ACK幀中所攜帶的數(shù)據(jù)量的個(gè)數(shù)乘以單個(gè)數(shù)據(jù)包單跳范圍內(nèi)完成一次 傳輸所消耗的時(shí)間。
【文檔編號(hào)】H04L1/00GK104092523SQ201410370854
【公開(kāi)日】2014年10月8日 申請(qǐng)日期:2014年7月30日 優(yōu)先權(quán)日:2014年7月30日
【發(fā)明者】劉昊, 張?zhí)┢? 張萌, 蔣富龍 申請(qǐng)人:東南大學(xué)