一種基于節(jié)點(diǎn)休眠和路由維護(hù)的CoAP協(xié)議代理緩存方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于網(wǎng)絡(luò)應(yīng)用層技術(shù)領(lǐng)域,具體涉及一種基于節(jié)點(diǎn)休眠和路由維護(hù)的CoAP協(xié)議代理緩存方法。
【背景技術(shù)】
[0002]CoAP (受限制的應(yīng)用協(xié)議)協(xié)議由IETF的CORE工作組制定,是為資源受限的IP網(wǎng)絡(luò)制定的基于REST架構(gòu)的應(yīng)用層協(xié)議標(biāo)準(zhǔn),,具有報(bào)文頭部開(kāi)銷(xiāo)小、格式靈活、便于擴(kuò)展、解析復(fù)雜度低等優(yōu)勢(shì)。
[0003]無(wú)線(xiàn)傳感器網(wǎng)絡(luò)是物聯(lián)網(wǎng)感知層的關(guān)鍵技術(shù),由數(shù)量眾多、分布式部署、體積微型化的嵌入式無(wú)線(xiàn)通信設(shè)備組成,具有低成本、低功耗、存儲(chǔ)計(jì)算資源受限等特點(diǎn)。無(wú)線(xiàn)傳感器網(wǎng)絡(luò)適合環(huán)境條件苛刻、人類(lèi)難以涉足的應(yīng)用場(chǎng)景,節(jié)點(diǎn)具備低功耗特性,大多采用電池供電。在這種場(chǎng)景中為節(jié)點(diǎn)更換電池會(huì)帶來(lái)成本增加與安全隱患等問(wèn)題。因此,降低節(jié)點(diǎn)的能量消耗是無(wú)線(xiàn)傳感器網(wǎng)絡(luò)技術(shù)的重要研宄課題。目前,無(wú)線(xiàn)傳感器網(wǎng)絡(luò)節(jié)點(diǎn)支持休眠功能以降低能量消耗,滿(mǎn)足實(shí)際應(yīng)用中的需要。
[0004]對(duì)于應(yīng)用層運(yùn)行CoAP協(xié)議的無(wú)線(xiàn)傳感器網(wǎng)絡(luò)而言,節(jié)點(diǎn)作為資源服務(wù)器負(fù)責(zé)監(jiān)聽(tīng)客戶(hù)端(運(yùn)行瀏覽器或CoAP公共客戶(hù)端等軟件的用戶(hù)終端設(shè)備)的請(qǐng)求,并向客戶(hù)端返回響應(yīng)??蛻?hù)端作為數(shù)據(jù)交互的發(fā)起方,在未知資源服務(wù)器當(dāng)前所處狀態(tài)的情況下發(fā)送請(qǐng)求時(shí),可能因其休眠而得不到響應(yīng)。因此,資源服務(wù)器休眠的網(wǎng)絡(luò)必須支持代理緩存機(jī)制。
[0005]CoAP協(xié)議現(xiàn)有的反向代理機(jī)制和緩存機(jī)制在應(yīng)用于節(jié)點(diǎn)周期性休眠且路由定期維護(hù)的無(wú)線(xiàn)網(wǎng)絡(luò)中時(shí),還存在一些不足:沒(méi)有充分考慮路由維護(hù)引起拓?fù)潢P(guān)系變動(dòng)的情景,缺乏能夠?qū)β酚善魍掏铝亢途W(wǎng)絡(luò)時(shí)延進(jìn)行有效控制的維護(hù)機(jī)制;沒(méi)有充分考慮用戶(hù)操作瀏覽器所消耗的時(shí)間,為用戶(hù)直接操作周期性休眠的服務(wù)器帶來(lái)不便;代理服務(wù)器反映存儲(chǔ)資源的變化趨勢(shì)消耗的存儲(chǔ)空間較多。
【發(fā)明內(nèi)容】
[0006]針對(duì)現(xiàn)有技術(shù)的CoAP協(xié)議現(xiàn)有反向代理機(jī)制和緩存機(jī)制中存在的不足,提出一種便捷用戶(hù)對(duì)周期性休眠服務(wù)器的操作,能夠?qū)β酚善魍掏铝亢途W(wǎng)絡(luò)時(shí)延進(jìn)行有效控制的基于節(jié)點(diǎn)休眠和路由維護(hù)的CoAP協(xié)議代理緩存方法,本發(fā)明的技術(shù)方案如下:一種基于節(jié)點(diǎn)休眠和路由維護(hù)的CoAP協(xié)議代理緩存方法,其包括以下步驟:
[0007]101、待節(jié)點(diǎn)入網(wǎng)完畢,在網(wǎng)絡(luò)路由表項(xiàng)中選擇供電方式為非電池供電的設(shè)備作為候選代理服務(wù)器,跳至步驟102 ;
[0008]102、根據(jù)實(shí)際需求綜合考慮跳數(shù)、鏈路質(zhì)量等因素,資源服務(wù)器從跳數(shù)最少的設(shè)備中選取鏈路質(zhì)量最優(yōu)的候選代理服務(wù)器為最優(yōu)代理服務(wù)器作為其代理服務(wù)器,跳至步驟103 ;
[0009]103、任意節(jié)點(diǎn)作為CoAP協(xié)議資源服務(wù)器端,如果連續(xù)收到代理關(guān)系建立失敗的響應(yīng)個(gè)數(shù)未超過(guò)最大值M,則在下一個(gè)發(fā)送周期到來(lái)時(shí),向代理服務(wù)器發(fā)送代理關(guān)系建立請(qǐng)求,跳至步驟104 ;如果CoAP資源服務(wù)器連續(xù)收到代理關(guān)系建立失敗的響應(yīng)個(gè)數(shù)超過(guò)最大值M,則該代理服務(wù)器不能再代理更多CoAP資源服務(wù)器,該資源服務(wù)器需要保持工作狀態(tài),在下一個(gè)發(fā)送周期到來(lái)時(shí),判斷最優(yōu)代理服務(wù)器是否更新,如果最優(yōu)代理服務(wù)器更新,計(jì)數(shù)器清零,跳至步驟102,重新選取代理服務(wù)器;否則,重復(fù)步驟103 ;
[0010]104、代理服務(wù)器接收到資源服務(wù)器端發(fā)送來(lái)的代理關(guān)系建立請(qǐng)求后,進(jìn)行資源存儲(chǔ)區(qū)域的創(chuàng)建操作,如果創(chuàng)建資源存儲(chǔ)區(qū)域失敗,則進(jìn)行一次緩存資源信息庫(kù)的維護(hù),創(chuàng)建資源存儲(chǔ)區(qū)域,并返回代理關(guān)系建立響應(yīng),描述創(chuàng)建結(jié)果,跳至步驟105 ;如果創(chuàng)建資源存儲(chǔ)區(qū)域成功,則返回代理關(guān)系建立響應(yīng),并描述創(chuàng)建結(jié)果,跳至步驟105,每個(gè)資源服務(wù)器每次最多只能與一個(gè)代理服務(wù)器建立代理關(guān)系,每一個(gè)代理服務(wù)器可以同時(shí)與多個(gè)不同的資源服務(wù)器建立代理關(guān)系。
[0011]105、如果收到的代理關(guān)系建立響應(yīng)描述代理關(guān)系建立成功,跳至步驟106 ;如果收到的代理關(guān)系建立響應(yīng)描述代理關(guān)系建立失敗,判斷當(dāng)前最優(yōu)代理服務(wù)器是否更新,如果最優(yōu)代理服務(wù)器更新,跳至步驟102 ;否則,跳至步驟103 ;
[0012]106、資源服務(wù)器周期性地在休眠狀態(tài)和工作狀態(tài)中切換,并在每次結(jié)束休眠狀態(tài)轉(zhuǎn)入工作狀態(tài)時(shí),判斷當(dāng)前的最優(yōu)代理服務(wù)器是否發(fā)生改變,如果發(fā)生改變,跳至步驟102 ;否則,跳至步驟107;
[0013]107、資源服務(wù)器向代理服務(wù)器發(fā)送更新請(qǐng)求,跳至步驟108 ;
[0014]108、代理服務(wù)器接收到更新請(qǐng)求后,在緩存資源信息庫(kù)中搜尋到匹配的資源存儲(chǔ)區(qū)域,如果無(wú)法定位到目標(biāo)資源存儲(chǔ)區(qū)域,則進(jìn)行一次緩存資源信息庫(kù)的維護(hù),并向資源服務(wù)器返回更新響應(yīng),描述更新結(jié)果,跳至步驟109 ;如果定位到目標(biāo)資源存儲(chǔ)區(qū)域,則向資源服務(wù)器返回更新響應(yīng),描述更新操作的結(jié)果,跳至步驟109 ;
[0015]109、如果資源服務(wù)器收到描述更新成功的更新響應(yīng),跳至步驟110 ;如果資源服務(wù)器收到描述定位失敗的更新響應(yīng),跳至步驟103 ;
[0016]110、代理服務(wù)器監(jiān)聽(tīng)用戶(hù)發(fā)送的緩存資源信息庫(kù)查詢(xún)請(qǐng)求。如果收到用戶(hù)查詢(xún)請(qǐng)求,跳至步驟111;否則繼續(xù)監(jiān)聽(tīng),重復(fù)步驟110 ;
[0017]111、代理服務(wù)器根據(jù)篩選條件查詢(xún)緩存資源信息庫(kù),定位到符合條件的資源存儲(chǔ)區(qū)域,運(yùn)用過(guò)期檢驗(yàn)?zāi)P?,通過(guò)比較資源緩存時(shí)間和資源的生命期判斷資源的新鮮度(如果緩存時(shí)間超過(guò)了資源的生命期,認(rèn)為資源不可靠;否則,認(rèn)為資源可靠),再運(yùn)用臨近過(guò)期檢驗(yàn)方法判斷資源的變化趨勢(shì),并將符合條件的可靠信息連同其變化趨勢(shì)信息返回給用戶(hù)。
[0018]進(jìn)一步的,所述步驟104和步驟108中緩存資源信息庫(kù)的維護(hù)方法具體如下:
[0019]201、依次掃描緩存資源信息庫(kù)的各個(gè)資源存儲(chǔ)區(qū)域,讀取資源存儲(chǔ)區(qū)域中存儲(chǔ)的服務(wù)器編號(hào),并進(jìn)行運(yùn)算得出服務(wù)器對(duì)應(yīng)的IP地址,跳至步驟202 ;
[0020]202、代理服務(wù)器根據(jù)運(yùn)算得出的資源服務(wù)器IP地址,查找路由表中子節(jié)點(diǎn)的表項(xiàng),如果在路由表中定位不到對(duì)應(yīng)的表項(xiàng),則將之刪除;如果在路由表中定位到對(duì)應(yīng)的表項(xiàng),則將之保留。
[0021]進(jìn)一步的,所述步驟111中所述臨近過(guò)期檢驗(yàn)方法如下:
[0022]301、代理服務(wù)器收到用戶(hù)的條件查詢(xún)請(qǐng)求時(shí),運(yùn)用CoAP協(xié)議的過(guò)期檢驗(yàn)?zāi)J?,定位到緩存資源信息庫(kù)中符合條件且可靠的資源存儲(chǔ)區(qū)域,跳至步驟302 ;
[0023]302、在已經(jīng)定位的可靠資源存儲(chǔ)區(qū)域運(yùn)用臨近過(guò)期檢驗(yàn)方法進(jìn)行資源變化趨勢(shì)的判斷,跳至步驟303,截止到完成未來(lái)一次瀏覽器操作時(shí),資源的變化趨勢(shì)計(jì)算公式如下:
[0024]R = Max_age+Update_timer-Setup_wait-Request_timer (I)
[0025]其中,R表示資源的變化趨勢(shì),Max_age表示最后一次更新的數(shù)據(jù)的有效時(shí)長(zhǎng),Update_timer表示最后一次數(shù)據(jù)的更新時(shí)刻,Setup_wait表示用戶(hù)完成一次瀏覽器操作所消耗的平均時(shí)間,Request_timer表示代理服務(wù)器收到用戶(hù)請(qǐng)求的時(shí)刻;
[0026]303、如果R大于零,則目標(biāo)資源在用戶(hù)完成未來(lái)一次瀏覽器操作的時(shí)間內(nèi)無(wú)變化趨勢(shì),在返回的查詢(xún)結(jié)果中無(wú)需特殊標(biāo)注;如果R小于等于零,則目標(biāo)資源在用戶(hù)完成未來(lái)一次瀏覽器操作的時(shí)間內(nèi)有變化趨勢(shì),在返回的查詢(xún)結(jié)果中需要特殊標(biāo)注,跳至步驟304。
[0027]304、向用戶(hù)返回符合條件且可靠的資源信息,并根據(jù)臨近過(guò)期檢驗(yàn)方法的判斷結(jié)果進(jìn)行標(biāo)注。
[0028]本發(fā)明的優(yōu)點(diǎn)及有益效果如下:
[0029]步驟103中判斷連續(xù)收到代理關(guān)系建立失敗響應(yīng)的個(gè)數(shù)是否超過(guò)最大值M、步驟106中判斷當(dāng)前的最優(yōu)代理服務(wù)器是否發(fā)生變化、步驟104中判斷資源存儲(chǔ)區(qū)域的創(chuàng)建結(jié)果以及步驟108中判斷資源存儲(chǔ)區(qū)域的更新結(jié)果所觸發(fā)的資源服務(wù)器代理關(guān)系維護(hù)方法和緩存資源信息庫(kù)維護(hù)方法能夠增強(qiáng)CoAP協(xié)議對(duì)節(jié)點(diǎn)休眠和路由維護(hù)網(wǎng)絡(luò)情景的支持,能夠?qū)β酚善魍掏铝亢途W(wǎng)絡(luò)時(shí)延進(jìn)行有效控制。步驟111中判斷資源變化趨勢(shì)的臨近過(guò)期檢驗(yàn)方法能夠減小代理服務(wù)器消耗的存儲(chǔ)資源,同時(shí)便捷用戶(hù)對(duì)周期性休眠服務(wù)器的操作。
【附圖說(shuō)明】
[0030]圖1是本發(fā)明優(yōu)選實(shí)施例代理緩存機(jī)制工作流程圖;
[0031]圖2代理緩存機(jī)制報(bào)文交互圖;
[0032]圖3代理關(guān)系維護(hù)方法工作流程圖;
[0033]圖4緩存資源信息庫(kù)維護(hù)方法工作流程圖;
[0034]圖5代理關(guān)系建立請(qǐng)求報(bào)文格式;
[0035]圖6更新請(qǐng)求報(bào)文格式;
[0036]圖7代理關(guān)系建立響應(yīng)報(bào)文格式;
[0037]圖8更新響應(yīng)報(bào)文格式。
【具體實(shí)施方式】
[0038]以下結(jié)合附圖,對(duì)本發(fā)明作進(jìn)一步說(shuō)明:
[0039]首先,結(jié)合圖1的代理緩存機(jī)制工作流程圖、圖2的代理緩存機(jī)制報(bào)文交互圖和圖3的代理關(guān)系維護(hù)方法工作流程圖,對(duì)資源服務(wù)器的【具體實(shí)施方式】進(jìn)行詳細(xì)描述。
[0040]Stepl:待節(jié)點(diǎn)入網(wǎng)完畢,查詢(xún)其路由表項(xiàng)中非電池供電且不休眠的父節(jié)點(diǎn),獲取其鏈路質(zhì)量信息(RSSI),跳至St印2。
[0041]Step2:選取鏈路質(zhì)量最優(yōu)(RSSI值最大)的父節(jié)點(diǎn)作為該節(jié)點(diǎn)的代理服務(wù)器,跳至 Step3。
[0042]St印3:節(jié)點(diǎn)即可作為CoAP協(xié)議資源服務(wù)器端。如果連續(xù)收到報(bào)文代號(hào)為“4.01Unauthorized”的代理關(guān)系建立響應(yīng)的個(gè)數(shù)不超過(guò)3,則在下一個(gè)發(fā)送周期到來(lái)時(shí)向代理服務(wù)器發(fā)送代理關(guān)系建立請(qǐng)求,代理關(guān)系建立請(qǐng)求的報(bào)文格式如圖5所示,跳至Step4 ;如果資源服務(wù)器連續(xù)收到報(bào)文代號(hào)為“4.01 Unauthorized”的代理關(guān)系建立響應(yīng)的個(gè)數(shù)超過(guò)3,則資源服務(wù)器保持工作狀態(tài),在下一個(gè)發(fā)送周期到來(lái)時(shí),判斷最優(yōu)父節(jié)點(diǎn)是否發(fā)生變化。如果最優(yōu)父節(jié)點(diǎn)發(fā)生改變,計(jì)數(shù)器清零,跳至St印2;否則,重復(fù)St印3。
[0043]St印4:資源服務(wù)器收到代理服務(wù)器返回的代理關(guān)系建立響應(yīng)。如果該響應(yīng)的報(bào)文代號(hào)為“2.01 Created”說(shuō)明代理關(guān)系建立成功,資源服務(wù)器被允許周期性地向代理服務(wù)器發(fā)送數(shù)據(jù),也被允許進(jìn)入休眠狀態(tài),跳至Step5;如果該響應(yīng)的報(bào)文代號(hào)為“4.01Unaut