所有传输的数据包采用erasure code机制:要发送K个分组,发送前将这K个分组转换为K+2t个分组,这样到达目的地时,即使一些分组丢失或损坏了,也可以通过剩下的分组恢复出原始的k个分组,也就是说,可以容忍一定的丢包现象,减少了数据重传的次数和网络的流量。
erasure code机制可以采用范德蒙阵列纠删码,它适合运用于对实时性要求不高的分布式存储系统。由于我仿真所用网络并没有对实时性的要求,所以采用范德蒙阵列纠删码应该是合适的。纠删码的编码是需要消耗一定的时间的,当编码的数据数量增大时,要消耗的时间也会随之增大,因此限制纠删码的长度是必要的。基于范德蒙矩阵编码的RS码的编码复杂度为 ,而译码复杂度为 ,其中编码包数为k,冗余包数为m,丢包率为p,编码后的全部符号数量为n。假设原始的矩阵行数 ,则数据正确接收的概率则为 。在此次仿真中,一次性发送的分组数设定为9个,最多可以修复的分组数采用3。
代替端到端重传机制的是“缓存节点”到汇聚节点的重传,由“缓存节点”向汇聚节点重传数据,在这种情况下回复数据包就不需要传到源节点,也不需要源节点进行数据的重传,只需要由链路中靠后位置的节点来完成这项工作,减少了信息回复和传输的时间。在WSNs中,通信链路的长度也是影响可靠性的因素之一。链路越长,那么数据遭遇损坏的几率就越大,采用“缓存节点”,不仅减少了数据重传的延时,缩短的链路长度也同时降低了数据损坏的概率,提高了可靠性。但是,在此不得不需要再次提到的是,WSNs的组成——传感器节点是资源限制性的,每个“缓存节点”既然要代替源节点重传数据,那么它要付出的相应的代价就是要额外地消耗自己的资源。如果“缓存节点”负担的节点过多的话,它的内存和能源就会过多的消耗,这样会导致“缓存节点”过早地耗尽自己的资源而“死亡”。假设一个“缓存节点”要负担10个普通节点的数据重传,每次数据重传都要额外的消耗该“缓存节点”1%的能量,那么进行10次重传就要消耗它10%的能量,在网络通信状态很差的情况下,重传次数急剧增加,“缓存节点”很快就会消耗掉自己的能量而失效。所以“缓存节点”如何部署,它要负担多少个普通节点就是一个有待验证的问题。
此方案不采用ACK机制,如果每正确接收一个数据包就要回复ACK数据包的话,会增加无线网络的能耗,在网络的流量较大时,容易造成拥塞,这不是一个想拥有较高可靠性的网络乐意见到的。所以,这里采用这样一种方法,只有当汇聚节点接收到错误数据包时,汇聚节点才会向相应的源节点发送NAK数据包,中间会途经“缓存节点”,“缓存节点”收到此NAK数据包时,会根据NAK数据包中带有的源节点的标志来检查自己的缓存有无此源节点需要重传的数据包,如果没有这个数据包,则还是传递NAK数据包给源节点,让源节点来重传自己的数据包,否则就代替源节点进行这项工作。
节点缓存的数据也会占用自己的资源,那么节点的数据也就不能被无限制地缓存在自己的内存中。所以为缓存中的每个数据包都设置一个“生存时间”,一旦数据包在节点的缓存中被保存的时间超过了这个“生存时间”,就由节点将缓存的数据包从自己的缓存中消除。这个“生存时间”的确定可以根据网络的平均传输时间来确定,“生存时间”应该至少大于网络的最长传输时间。
簇头每隔一段时间向簇内的各个节点发送生存确认数据包,以便告之各个节点自己可以正常运作。一段时间后普通节点没有接收到簇头生存确认的信息,就认为该簇头已经失效,随后将所要传输的数据先发送给次簇头,等到新一轮的簇头和次簇头被选出时再将数据传输给新簇头。簇头发送生存确认数据包不能过于频繁,否则反而增加了网络的开销,得不偿失。节点可以认为簇头为自己转发数据包就是一个簇头生存的反馈信息。
上一篇:C#企业人事考勤管理系统设计+文献综述
下一篇:Android基于Google Map的个人移动地图的设计与实现

数据挖掘在电子商务中的应用

数据挖掘的主题标绘数据获取技术与实现

基于PageRank算法的网络数据分析

基于网络的通用试题库系...

流控制传輸协议SCTP的分析与研究【1047字】

嵌入式移动数据库研究【2530字】

嵌入式移动数据库應用研究【2321字】

承德市事业单位档案管理...

10万元能开儿童乐园吗,我...

AT89C52单片机的超声波测距...

C#学校科研管理系统的设计

神经外科重症监护病房患...

志愿者活动的调查问卷表

中国学术生态细节考察《...

国内外图像分割技术研究现状

医院财务风险因素分析及管理措施【2367字】

公寓空调设计任务书