基于数据命名为中心的无线传感器网络异步休眠调度方法_4

文档序号:9353380阅读:来源:国知局
ing Information Base 中,执行步骤 S19 ;
[0183] 步骤S19,节点1广播发送interest请求包,等待任意一个确认包的返回;
[0184] 步骤S110,若有任何1个节点返回ACK确认包,例如节点2返回了确认包,则将返 回的确认包中的ID号存入节点1中Forwarding Information Base对应interest项的 OutcomingQueue队列中,路由建立结束;否则,否则执行步骤Sill ;
[0185] 步骤Sill,若没有任何1个节点返回ACK确认包,则进行重传;节点等待Is后,执 行步骤S18操作。
[0186] 步骤二,休眠调度阶段
[0187] 路由阶段建立完成整个动态的路由系统后,便进入休眠调度阶段,一个休眠调度 阶段分为其中三部分:唤醒状态3s,随机等待时间ls_3s,重传时间Is以及休眠时间3s。具 体步骤如下:
[0188] 步骤S20,节点1唤醒状态持续3s,若接收到interest请求包则执行步骤2 ;若接 收到Data信息包,执行步骤S23 ;若未接收到任何包,进行随机的一段时间的等待,则进入 休眠状态,执行步骤S25 ;
[0189] 步骤S21,节点1接收到interest请求包后,若在节点1中完成请求包的处理过 程,即在节点1自己的Content Store或者Pending Interest Table中完整进行请求包生 命周期中前三个过程A至C,则interest请求包处理完成;处理完成后,进行随机的一段时 间的等待,若未接收到任何包(数据包),则进入休眠状态,执行步骤S25 ;若未在节点自身 完成interest请求包的处理,而进入发请求包生命周期的D过程,则执行步骤S22 ;
[0190] 步骤S22,节点1等待自己发出的interest包进行等待ACK确认包进行返回,若接 收到ACK确认包,则进行对应Forwarding Information Base存储,完成interest发送;若 未收到任何一个ACK确认包,执行步骤S23 ;处理完成后,进行随机的一段时间的等待,若未 接收到任何包,则进入休眠状态,执行步骤S25 ;
[0191] 步骤S23,节点1未收到任何一个ACK确认包,则进行重传处理,重传每Is进行1 次,共进行3次;若其中任何一次有ACK确认包的返回,则立刻完成处理,进入休眠状态,执 行步骤6S25 ;
[0192] 步骤S24,节点1收到节点2发来的信息包Data,在Pending Interest Table中 进行查找对应的Data信息包中interest包,若查询到,则将信息包Data中的数据data进 行回传并且存储在此节点1的Content Store中;若未查询到则丢弃,整个过程完成;处理 完成后,进行随机的一段时间的等待,若未收到任何包,则进入休眠状态,执行步骤S25 ;
[0193] 步骤S25,节点处于通信模块关闭状态,休眠3s,休眠结束后,执行步骤S20,进入 下一个休眠周期。
[0194] 步骤三,信息包回传阶段
[0195] 节点进入周期性的唤醒和休眠状态后,进行data数据回传时,具体步骤如下:
[0196] 步骤S30,节点1将接收到的interest包与Content Store中的每一项进行匹配 查询,若查询到则执行步骤S31,否则执行步骤S37 ;
[0197] 步骤S31,节点1将Content Store中对应的数据进行打包处理,生成Data信息包 并回传给此节点的下一跳节点2,且等待ACK确认包的返回,执行步骤S32 ;
[0198] 步骤S32,若节点2收到信息包,贝lj查询节点2的Pending Interest Table中是 否存在此Data信息包中对应的interestName部分,若存在,执行步骤S33,否则执行步骤 S37 ;
[0199] 步骤S33,节点2回传给节点1确认包ACK,执行步骤S34,否则执行步骤S36 ;
[0200] 步骤S34,节点2将接收到的信息包存入其数据仓库中,执行步骤S35 ;
[0201] 步骤S35,节点2将接收到的信息包回传给此节点的下一跳节点,重复步骤S32至 S35,直至下一跳节点为汇聚节点位置,此时执行步骤S37 ;
[0202] 步骤S36,若下一跳节点在重传时间Is内未返回确认包,则信息包发送节点执行 步骤S21 ;
[0203] 步骤S37,信息包回传结束。
[0204] ACK确认和重传机制
[0205] 1) ACK确认机制构建:
[0206] 情况1 :节点在Interest请求包下发时,需要ACK确认机制。
[0207] a?节点1通过Forwaring Information Base后将interest请求包进行广播发 送,若节点2接收到interest请求包,则执行步骤b,否则执行步骤e ;
[0208] b.若节点2接收到节点发送的interest请求包后,将ACK确认包进行回传;若节 点1接收到了回传的ACK,则执行步骤c,否则直接步骤d ;
[0209] c.节点1将接收到的ACK中的节点2的ID号存入节点1的Forwarding Information Base中,ACK确认机制成功;
[0210] d.节点1未接收到节点2回传的ACK确认包,则ACK确认机制失败,执行重传机 制,执行步骤2) -a ;
[0211] e.若节点2未接收到节点1发送的interest请求包,则执行重传机制步骤2) -a。
[0212] 情况2 :节点在回传Data包时,需要ACK确认机制。
[0213] a.节点2通过Content Store进行Data回传数据时,若节点1接收到Data信息 包,则执行步骤b ;否则执行步骤c ;
[0214] b.节点1接收到Data信息包后,回传ACK确认包给节点2,若节点2接收到ACK 确认包,则ACK确认机制成功;否则ACK确认机制失败,执行重传机制,步骤2)-a ;
[0215] c.若节点1未接收到节点2回传的Data信息包,则无法回传ACK确认包,则ACK 确认机制失败,执行重传机制,步骤2)-a。
[0216] 2)重传机制构建:
[0217] a.在以下4中情况下进行重传机制:节点1发送interest请求包,节点2未能收 到,则执行步骤b ;节点2回传ACK确认包,节点1未能收到,则执行步骤c ;节点2发送data 数据回传包,节点1未能收到,则执行步骤d ;节点2发送Data信息包回传包,节点1接收 成功,但是未能正确返回ACK确认包,则执行步骤e ;
[0218] b.若节点1发送interest请求包,节点2未能收到,贝lj在节点1的定时器时间2s 结束后,节点1再次发送interest请求包;若节点2接收到interest且正确返回ACK确认 包,则重传成功;否则执行步骤a ;
[0219] c.若节点2回传ACK确认包,节点1未能收到,则在节点1的定时器时间2s结束 后,节点1再次发送interest请求包;若节点2成功返回ACK确认包,则重传成功;否则执 行步骤a ;
[0220] d.若节点2发送data数据回传包,节点1未能收到,贝lj在节点2的定时器时间2s 结束后,节点2再次发送Data信息包;若节点1接收到Data信息包且正确返回ACK确认 包,则重传成功;否则执行步骤a ;
[0221] e.若节点1回传ACK确认包,节点2未能收到,则节点2的定时器时间2s结束后, 节点2再次发送Data信息包;若节点1接收正确返回ACK确认包,则重传成功;否则执行步 骤a〇
[0222] 为了进一步说明本发明的方法的技术方案,并验证该方法的有效性,发明人给出 如下实施例。
[0223] 实施例1 :
[0224] 步骤一,构建命名数据网络:
[0225] 步骤1 :编写NesC基站节点程序,并进行基站节点程序的烧写;
[0226] 步骤2 :编写NesC数据收集节点程序,并进行数据收集节点程序的烧写;
[0227] 步骤二,网络环境的部署:
[0228] 步骤3 :随机部署网络整体环境;
[0229] 步骤4 :基站节点放置于网络环境中间;
[0230] 步骤5 :数据收集节点均匀随机部署;
[0231] 步骤三,interest请求包进行下发请求:
[0232] 步骤6 :基站发出interest请求包,其中interest包中包括数据包的类型、请求 的目的节点、请求的数据类型、请求的数据包的批次号、此节点的上一跳节点号以及一个随 机数;其中数据包类型为1表示为请求数据包;请求数据类型为4电压;数据包批次从1开 始;
[0233] 步骤7-1 :节点1接收到基站发出的interest,进行Content Store的查询,发现 interest没有存在;
[0234] 步骤8_1 :节点1将interest请求包交给此节点的Pending Interest Table进 行查询,发现interest没有存在;
[0235] 步骤9-1 :节点 1 将 interest 请求包交给此节点的 Forwarding Information Base 进行查询,发现interest没有存在;
[0236] 步骤 10 :节点 1 将此 interest 添加进 Forwarding Information Base 中,并广播 发送interest请求包,等待任意节点的ACK回传;
[0237] 步骤四,节点周期性的进行休眠调度并执行重传机制:
[0238] 步骤11-1 :节点2唤醒状态持续3s,在定时器周期内,接收到了节点1的interest 请求包;
[0239] 步骤12 :节点2接收到interest请求包后,回传ACK给节点1 ;
[0240] 步骤13 :节点1将节点2回传的ACK确认包中的节点2ID号存入节点1的 Forwarding Information Base 中;
[0241] 步骤14 :节点2重复进行步骤7-步骤13 ;
[0242] 步骤15 :节点2在完成所有任务后,进入休眠状态。
[0243] 步骤五,Data信息包进行回传:
[0244] 步骤16 :节点3在接收到节点2的interest请求包后,查看Content Store,发现 interest存在,节点3直接将Data信息包回传给节点2 ;
[0245] 步骤17-1 :节点2接收到节点3的Data信息包后,将其暂存在节点2的Content Store中,并回传给节点1 ;
[0246] 步骤18 :节点1重复步骤17-1,知道Data回传给基站节点,Data信息包回传结束, 整个过程结束。
[0247] 表1为实施例1中本方案和传统方案仿真实验对比
[0248] 注:由于每次发送interest或者data回传消耗能量几乎相同,所以每进行一次信 息发送,按照消耗单位为1的能量计算,后续相同。
[0249]
[0250] 由表1中可知,本方案能耗较少大约为(300-204)/300*100%= 32%
[0251] 实施例2:
[0252] 本实施方案与实施例1所述的区别在于,在步骤7-1中,如果在节点1收到基站发 出的interest,进行Content Store的查询,发现interest存在,执行步骤7-2。
[0253] 步骤7-2 :节点1直接将Data信息包回传给基站节点数,整个过程结束。
[0254] 表2为实施例2中本方案和传统方案仿真实验对比
[0255]
[0256] 由表2中可知,本方案能耗较少大约为(300-201)/300*100%= 33%
[0257] 实施例3 :
[0258] 本实施方案与实施例1所述的区别在于,在步骤8-1中,如果节点1将interest请 求包交给此节点的Pending Interest Table进行查询,发现interest存在,执行步骤8-2。
[0259] 步骤8-2 :节点1将此interest的中存储的上一跳节点号(例中为基站节点号) 存放在 Pending Interest Table 中 interest 对应项的 IncomingQueue 队列中,interest 请求包下发结束,整个过程结束。
[0260] 实施例4 :
[0261] 本实施方案与实施例1所述的区别在于,在步骤9-1中,如果节点1将interest
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1