基于剩余能量的最短路径两端匿名路由方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第54卷 第2期2021年2月
通信技术
Communications Technology
Vol.54 No.2
Feb. 2021
文献引用格式:郭效泉,王华,李凤银,等.基于剩余能量的最短路径两端匿名路由方案[J].通信技术,2021,54(2):389-394.
GUO Xiaoquan,WANG Hua,LI Fengyin,et al.Anonymous Routing Scheme at Both Ends of the
Shortest Path based on Remaining Energy[J].Communications Technology,2021,54(2):389-394. doi:10.3969/j.issn.1002-0802.2021.02.019
基于剩余能量的最短路径两端匿名路由方案*
郭效泉,王 华,李凤银,王玉霞
(曲阜师范大学,山东 日照 276826)
摘 要:无线传感器网络由多种传感器节点组成,可以被广泛部署用来监测现实世界中的多个领域。
但是,敌手能够找到网络中的源节点和接收节点并进行攻击,因此保护好收发双方的位置至关重要。
针对无线传感器网络中位置隐私泄露及现存方案中节点能量消耗不均衡和通信低效的问题,基于网络中节点的剩余能量和距离接收节点的距离,提出了一种保护源节点和接收节点位置隐私的高效路由方案。
关键词:无线传感器网络;位置隐私;剩余能量;距离
中图分类号:TP393 文献标识码:A 文章编号:1002-0802(2021)-02-0389-06 Anonymous Routing Scheme at Both Ends of the Shortest Path based on
Remaining Energy
GUO Xiaoquan, WANG Hua, LI Fengyin, WANG Yuxia
(Qufu Normal University, Rizhao Shandong 276826, China)
Abstract: The wireless sensor network is composed of multiple sensor nodes and can be widely deployed to monitor multiple fields in the real world. However, the adversary can find and attack the source node and sink in the network, so it is very important to protect the location of the sending and receiving parties. Aiming at the location privacy leakage in wireless sensor networks and the imbalanced energy consumption of nodes in existing schemes and the inefficiency of communication, based on the remaining energy of the nodes in the network and the distance from the receiving node, a method to protect the location privacy of the source node and the sink is proposed.
Keywords: wireless sensor network; location privacy; remaining energy; distance
0 引 言
无线传感器网络由多种传感器节点组成,能采集其覆盖区域内的信息并发送给接收器。
因节点微小、适应能力强等优点,无线传感器网络被人们广泛部署于诸多场景,以帮助人们掌握场景中的相关情况,如智慧农业和国防军事等领域。
但是,网络中存在很多安全威胁,一旦源节点和接收节点被敌手破坏,将不能准确采集和接收信息。
同时,每个节点的能量是有限的,在数据传输时必须做出合理的路径规划,才能避免能量的不均
* 收稿日期:2020-10-21;修回日期:2021-01-10 Received date:2020-10-21;Revised date:2021-01-10基金项目:赛尔网络下一代互联网技术创新项目(No.NGII20181201)
Foundation Item: CERNET Innovation Project (No.NGII20181201)
图1 WSN模型
基于路径最小能量的剩余能量最大路径选择
WSN模型,源节点通过广播包统计指定跳数内节点的剩余能量、节点的路径队列和距离节点的距离。
根据统计到的节点信息,选出真实发送路径和干扰路径。
沿着干扰路径和真实路径的节点队列发送数据包,此时真实路径上的节点会把数据包路由到sink节点。
sink节点接收数据包后,会对数据包继续随机转发几跳再停下。
统计网络中节点信息
(1)初始化特殊数据包。
方案中,源节点需要初始化一个特殊数据包。
该数据包包括指定该数据包从源节点开始到停止需要广播的跳数H、记录该数据包在网络广播过程中所经过的所有节点ID 的路径队列Q、当前数据包记录的节点剩余能量E
min
和一个表明数据包特殊身份的标签
(2)广播数据包统计节点信息。
源节点广播初始化的特殊数据包。
该特殊数据包在从源节点开始即跳数等于H时到到达网络中跳数
的过程中,会执行如下操作:所有接收到该特殊数据包的节点会把自己的节点ID添加到路径队列中,并把数据包中的跳数H做减1操作;当前数据包中的剩余能量E min会与当前节点中的剩余能量进行比较,若此时E min大于当前节点的剩余能量,就用当前节点的剩余能量覆盖E min,否则继续保持E
min
;当该特殊数据包到达网络中的H=0
此时该数据包中E min记录了该数据包所走过的该条路径上所有节点中剩余能量最小的那个节点的能
图2 方案示意
真实路径的确定
(1)节点剩余能量确定侯选路径阶段一。
源
=0跳处节点反馈回来的所有数据包。
这些数据包记录着从源节点到达H=0跳处节点ID
、路径上节点的最少剩余能量E min和
跳处节点到达sink节点的距离X。
源节点根据数据包中最少剩余能量E min按照从大到小做降序排列,得到一个关于剩余能量E min从大到小的剩余能量值的列表list1。
根据列表list1选择出排在个剩余能量E min,后根据前a%个剩余能量找到它们所对应的路径队列Q得到sequence1。
(2)距离最小确定侯选路径阶段二。
从路径
中根据数据包中从H=0跳处节点到节点的距离X按照从小到大做升序排列,得到一个关于距离X从小到大的列表list2。
从列表中选出排在前b%个距离X,再根据前b%个距找到它们所对应的路径队列Q得到sequence2。
(3)确定真实路径和源节点替代节点。
从路sequence2中随机选出其中的一条作为发送数据的真实路径real_path,如图2所有的Ⅲ类曲线所示,并把该条路径上的H=0跳处的节点作为源节点替代节点,把该条路径队列Q中的节点ID置为source_substitute,如图2所示。
实现两端匿名
(1)选择干扰路径实现源端匿名,再从源节点按照节点剩余能量已经选出的路径队列sequence1中进行选择,在路径总条数随机选择c%条路径队列,并保证这些路径队列中是排除了真实路径
path的路径队列。
把这些从路径队列
进行随机选择出来的c%条路径作为真实数据发送时的干扰路径,如图2所有的Ⅳ类曲线所示。
(2)sink节点随机转发实现汇端匿名。
把
节点当作网络中的一个普通节点,sink
据包的接收后还要对数据包继续在网络中向下转发,如图2所有的Ⅴ类曲线所示。
把sink
险”引到远处,达到保护sink节点位置的目的。
2.2.4 匿名消息的传输
(1)路径队列Q上数据包的传输。
当源节点需要发送真实数据包时,真实数据包会沿着已经选出的若干条干扰路径(图2所有的Ⅳ类曲线)和一条真实路径(图2所有的Ⅲ曲线)所记录节点
的路径队列Q,从一个节点发送到下一个节点,直到到达H=0跳处节点。
(2)H=0跳处节点。
当真实数据包到达
跳处节点时,要判断此处的节点ID
substitute。
若此处节点ID是source_substitute,
表示该条路径为真实路径,要继续把真实数据包向下网络中下一跳节点发送;否则该条路径为干扰路径,在到达满足指定跳数H=0跳时会停止对数据包的继续发送。
(3)源节点替代者到sink节点的中间区域。
从源节点替代者到到达sink节点的中间区域,数据包按照多跳随机路由的方式(图2所有的Ⅴ类曲线)一跳一跳进行传递数据包,直到sink
(4)sink节点处。
sink节点接收数据包后会
通信技术 2021年
通过随机函数产生一个[3,6]的随机数作为数据包继续向下转发的跳数。
sink 节点会在网络中按照随机选择下一跳的方式(图2所有的Ⅴ类曲线),根据随机函数产生的随机数作为随机转发的跳数。
当满足指定的随机跳数时,停止对数据包的转发。
2.3 协议的执行流程
该流程图主要分为统计网络中节点信息、真实路径的确定、干扰路径的选择和匿名消息的传输4个部分,如图3所示。
开始
初始化数据包msg(跳数H =5,路径队列Q ,当前数据包记录的剩余能量
E _min=100,特殊标签T )
源节点广播msg 给邻居节点
节点i 处数据
包中H ==
0?把当前节点
ID 加入数据包队列Q 中数据包中H -= 1
当前节点剩余能量<E _min ?
当前节点剩余能量
覆盖E _min
否
否
是
数据包记录该处节点此处到sink 距离X
该处节点将数据包(Q ,E _min,X )沿原路返
回Q 给源节点
源节点接收到所有数据包
源节点处根据数据包中E _min 做降序排
列,得到列表list1
源节点选择list1中前a %个E_min 对应的路
径队列sequence1
是
源节点在sequence1中根据距离X 做升序排
列,得到列表list2
源节点选择list2中前b %个距离X 对应的路
径队列sequence2源节点在sequence2中随机选1条做真实路
径,将该路径H =0处节点ID 置为
source_substitute 源节点在sequence1中随机选择总条数的c %条且排除真实路径做干扰路径
源节点沿真实、干扰路径Q 发送数据包
节点i 处数据
包中H ==
0?沿Q 把数据包发送给下一跳
节点
否
该处节点
ID ==source_su bstitute ?
是
否
节点停止发送数据包
把数据包随机发送到网络中下一跳节点
是
随机路由至sink 节点接收数据包
随机函数产生一个随机数num
sink 节点给数据包跳数H 赋值num
结束
转发数据包
节点j 处数据
包中H ==
0?跳数H -=1
否
是把数据包发送给下一跳节点
图3 方案流程
第54卷第2期郭效泉,王 华,李凤银,王玉霞:基于剩余能量的最短路径两端匿名路由方案
2.4 伪代码实现
方案涉及的算法主要包括统计网络中节点的剩余能量和距离接收节点距离信息的算法(算法1),源节点根据统计到的节点信息进行真实路径选择的算法(算法2),干扰路径选择算法(算法3),数据包沿着干扰路径、真实路径以及在网络中传输的匿名消息传的传输算法(算法4)。
算法1:统计网络中节点信息算法
Collect_nodes_message(){
Send_to_neighborhood(msg(H,Q,E_min,T)) #广播特殊数据包
while msg.H!=0
msg.Q[H]+=self.ID #把节点ID添加到队列
msg.H-=1
if self.E<msg.E_min
msg.E_min=self.E
end if
end while
if msg.H==0 #到达最后一跳时即第H跳节 点时
msg.H_sink = X # 统计H跳处节点到sink节点的距离
msg(Q,E_min,X) # 生成新的数据包并添加距离信息X
end if
while msg.count!=H
msg.count+=1 #跳数统计变量加1
Send_to_node(msg.count,msg) #把数据包发送上一跳节点
end while
}
算法2:真实路径的确定算法
Select real_path(){
Receive(msg) #接收数据包
list1=Sort(msg.E_min) #根据最小剩余能量E_ min从大到小排序
sequence1[][]=Select(list1,a%) #选择出排在前a%条对应的路径
list2=Sort(msg.X) #对sequence1中距离X从小到大排序
sequence2[][]=Select(list2,b%) #选择排在前b%条对应的路径
real_path[]=Random(sequence2)#从sequence2随机选一条作真实路径
real_path[0]=source_substitute #H=0跳处节点为源节点替代节点
}
算法3:干扰路径的选择算法
Select interference_paths(){
#从sequence1随机选c%条路径,作为干扰路径sequence3[][]=Random(sequence1,c%)
if real_path in sequence3 #判断真实路径是否在里面
exclude real_path #排除真实路径
end if
interference_paths=sequence3 #干扰路径
}
算法4:匿名消息的传输算法
Send_data(){
#数据包沿干扰、真实路径发送
while data_msg.H!=0 do
Send_to_path(data_msg,real_path,interference_ paths)
end while
#判断H=0处节点是否为源节点替代节点
if self.ID==source_substitute
RandomMoveTo(data_msg,next_location)
#H=0跳处节点到sink节点过程
int i,j,sink #i为当前节点,j是消息发送节点即上一跳节点
while true do
receive m(j,sink) #接收消息
if sink∈S(i) then #若sink节点为i的邻居节点
send m(i,sink) to sink #把数据包发送给sink节点
else send m send m(i,sink) to S(i)\{j} #把数据包发给除j所有邻居
end if
end while
# sink节点之后
if data_msg.H<=random_number
Send_to_neighborhood(data_msg) #把数据包发给邻居节
end if
}
机模拟与仿真等;
李凤银
方向为网络信息安全、数字签名理论及应用等;
王玉霞
网、嵌入式应用等。