CRPD:一种用于动态无线传感器网络的新型聚类路由协议
1 引言
无线传感器网络(WSN)是一种以自组织模式组成的由一组传感器构成的无线网络。其目标是感知、收集和处理地理区域中感知对象的信息,并将感知数据传输到一个或多个汇聚节点。在过去二十年中,无线传感器网络已被应用于许多领域,如生境监测[1]、战场目标跟踪[2]、结构监测[3]和气体监测[4]。特别是随着物联网(IoT)的发展,无线传感器网络得到了持续发展。
然而,传感器节点通常仅依赖电池供电,且部署后电池无法更换。除了宝贵而稀缺的功率资源外,还有一些有限资源,例如处理能力、无线带宽和存储空间。这些有限资源给无线传感器网络技术带来了巨大挑战。因此,如何在采集和汇聚数据的过程中降低能耗并高效利用存储空间显得尤为重要。此外,由于邻居节点的空间位置相近,其感知数据之间可能存在较强的相关性,这导致高度冗余的聚合数据占用额外的存储空间并消耗更多能量。因此,为了提高无线传感器网络的性能,近年来出现了各种网络技术(如压缩技术[5]和数据聚合技术[6, 7])。
本质上,无线传感器网络是一个动态网络。由于以下一些因素,无线传感器网络的拓扑结构可能会发生变化:
- 传感器节点可能会由于电池电量耗尽或其他故障而退出正在运行的网络;
- 由于实际需求,我们有时需要向网络中添加新节点;
- 在某些情况下,传感器节点、汇聚节点和感知对象本身可能会移动[8–11];
- 环境条件的变化可能导致无线通信链路带宽的变化,或暂时中断。
因此,无线传感器网络技术需要能够适应这些动态变化,即网络应具备动态更新拓扑的功能。幸运的是,聚类作为一种有效的拓扑控制方法,已被广泛研究。然而,现有的动态聚类与动态无线传感器网络中的聚类之间存在一些差异:
动态聚类
[12, 13]:
- 假设节点在部署后保持静态,不再移动;
- 未考虑新节点加入的情况;
- 不存在节点失效的情况,且鲁棒性较差。
动态无线传感器网络中的聚类
:
- 节点部署后可以移动;
- 允许新节点加入网络;
- 能够处理节点失效的情况,以确保网络的正常运行。
由于网络中节点的通信距离有限,如果一个节点想要与射频覆盖范围之外的节点通信,则需要通过中间节点进行路由。也就是说,在多跳环境中,传感器节点通过中间传感器节点将数据发送到汇聚节点。在能量受限传感器网络中,网络通常需要节能路由协议来传输数据,以确保数据可靠性。可靠路由能显著减少数据重传,从而降低能耗。因此,传感器节点需要适当的能量节约和可靠路由来进行数据传输。
本文提出了一种面向动态网络的基于聚类的路由协议(CRPD)以解决上述需求。在无线传感器网络中,使用聚类技术有助于减少网络流量和能耗,从而延长整个网络的寿命。我们采用的路由算法实时选择距离目标节点最近的节点作为下一跳,这不仅确保了最短路径的选择,还节省了部分节点的能量。此外,我们采用确认数据包来实现数据的可靠传输,从而提高网络的可靠性。
本文其余部分组织如下:第2节讨论相关工作。第3节介绍所提协议的工作原理和算法。第4节讨论仿真参数、结果和分析。最后,第5节给出结论和未来工作。
2 相关工作
近年来提出了许多聚类算法。在本节中,我们从不同角度简要回顾现有的聚类算法。
根据实现方式的不同
聚类算法可分为集中式和分布式。
- 集中式聚类算法 :需要网络全局信息,能够选择分布较优的一定数量的簇头节点,但这种方法在大规模网络中受到限制,因为无法获取网络的全局信息。
- 分布式聚类算法 :不需要获取网络全局信息,网络中的节点根据局部信息独立完成聚类任务,从而降低了能量消耗,更适合大规模网络。
LEACH是由Heinzelman等人于2000年提出的一种典型的轮转式分布式聚类协议[14, 15]。在LEACH中,每一轮包括两个阶段:簇建立和数据传输。在簇建立阶段,每个节点在0到1之间选择一个随机数,如果该数小于某个阈值,则该节点成为簇头。随后,簇头向其所有邻居广播消息,通知其已成为簇头。接收到消息后,每个节点根据接收信号的强度决定加入哪个簇,并向簇头发回响应。在数据传输阶段,簇内所有节点按照TDMA(时分多址)机制将数据发送给簇头。簇头对所有已接收的数据进行融合,然后将结果发送至基站(BS)。经过一段时间的持续运行后,网络重新进入启动阶段,进行下一轮的簇头选择和簇的重新建立,从而使整个网络中的簇头角色实现周期性轮换。该协议结构简单,且不需要较大的通信开销。然而,簇头位置并未均匀,且簇头选择未考虑能量因素。
文献[16, 17]中提出的算法是LEACH的集中式版本。它们通过使用中心控制来改进LEACH,即由基站负责收集所有传感器节点的信息(如节点能量和位置信息),并选择最佳簇头。这类协议的缺点是聚类过程可能非常复杂,并会带来额外的开销。因此,集中式聚类算法可扩展性较差,仅适用于中小规模网络。因此,大多数高效的聚类算法(例如[18–24])均为分布式。
根据簇的层数
聚类算法可分为单层聚类和多层聚类。
- 单层聚类 :将网络划分为两层,其中簇头作为高层,簇成员作为低层。整个网络由每个簇的高层簇头和低层簇成员组成。
- 多层聚类 :低层簇头通常作为高层簇头的成员,因此可以进一步降低能耗,但其实现较为复杂,且开销通常较大。
在[25]中采用自上而下方法构建多层簇拓扑结构。在簇建立阶段,节点以概率p1(u)成为第一层簇头,其余节点成为第一层簇成员。随后,第一层簇头通知其簇成员进行第二层簇头选举,第一层簇成员中的节点以概率p2(u)成为第二层簇头,剩余节点成为第二层簇成员,该过程重复进行,直到每个簇内的节点数不超过三个为止。在数据传输阶段,第T层簇成员将数据发送给第T层簇头,第T层簇头将融合数据发送给第(T − 1)层簇头,依此类推,直至第一层簇头将融合数据发送到基站。
在[26],Alkalawi等人还提出了一种基于跨层聚类的多路径路由协议。汇聚节点通过广播控制包启动簇形成阶段,然后节点根据接收信号的强度及其功率成为簇头。簇头被划分为不同的层次;它们通过上层簇头发送数据。该协议中有两个阈值:上限阈值和下限阈值。其中上限阈值用于确定哪个节点是簇头以及哪个节点是簇成员。下限阈值用于在簇头之间建立链路。
根据聚类算法的不同应用范围
可以将其分为静态和动态两类。
大多数聚类算法假设网络中的节点是静态的,一旦网络拓扑结构建立,就不会再发生变化。因此,这类算法仅适用于静态网络。然而,在某些无线传感器网络的应用场景中,节点具有移动性,例如目标跟踪,此时聚类算法需要满足网络拓扑能够实时更新的要求。
Sharma等人提出的CMRP协议是一种用于静态网络的聚类路由协议。该协议通过赋予汇聚节点更多责任来降低传感器节点的能量消耗。汇聚节点需要从传感器节点收集邻居信息,并构建邻接矩阵,进而识别簇头、选择合适路径,并将路径信息发送给选定的簇头。显然,聚类构建和路径选择均由汇聚节点完成,且必须在汇聚节点知晓整个网络节点布局的前提下才能实现,因此具有较大局限性。在[27]中,采用Voronoi图实现动态聚类,以达到目标跟踪的目的。此外,在[28]中还提出了一种自适应动态聚类跟踪方案,用于跟踪移动目标。
与大多数假设节点为静态的先前协议不同,我们提出了一种适用于动态传感器网络的新型聚类协议。此外,在先前的协议中,簇头承担着较重的责任,不仅负责簇间通信,还负责簇内通信,导致簇头的能耗速率过快。在我们所提协议中,降低了簇头的责任,从而实现了更好的负载均衡和更高的能量效率。
3 动态无线传感器网络的聚类路由协议
在本节中,我们将详细描述所提出的聚类协议及其理论分析。CRPD协议是一种基于聚类的协议,适用于动态传感器网络。该协议通过实时更新网络拓扑结构来实现网络数据聚合和数据通信,其通信路径的选择由各个节点自身决定。
3.1 网络模型
假设初始传感器网络由n个传感器节点和一个汇聚节点(即基站)组成。基站具有存储、计算能力和无限电池电量,在网络部署后保持静态。本文中,设定基站坐标为 (0, 200)。然而,其他传感器节点随机部署在平面区域内,并且可以移动,即网络拓扑是动态的。
每个节点被分配一个唯一的ID。所有节点均为同质节点,即其计算能力、通信能力和初始能量均相同且预定。此外,所有节点都知道自身的位置坐标(例如通过GPS定位系统或定位方案,如[30, 31]),以及自身的剩余能量,且每个传感器节点均知晓汇聚节点的坐标位置。本文采用初始能量的40%作为能量阈值。
节点的状态、消息类型以及协议中涉及的变量分别如表1、2和3所示。
表1 节点状态描述
| 状态 | 描述 |
|---|---|
| 休眠 | 节点处于睡眠状态。 |
| idle | 节点处于空闲状态。 |
| 簇头 | 该节点是簇头节点。 |
| 簇成员 | 该节点是簇成员节点。 |
表2 控制消息描述
| 消息 | 描述 |
|---|---|
| detect | 元组(Id,x,y,Er) |
| degree | 元组(Id,度) |
| i am chead | 元组(Id) |
| you are chead | 元组(Id) |
| ordinary | 元组(Id) |
| 信息或数据 | 元组(Id,data) |
| 数据转发 | 元组(Id,data) |
| dead | 元组(IDi , IDs) 或 元组(IDi) |
| connection | 元组(Id,x,y,Er) |
| OK | 元组 ( ID, x, y, Er, 当前节点的簇头 ) |
| leave | 元组(IDi , IDs) 或 元组(IDi) |
表3 变量描述
| 变量名 | 描述 |
|---|---|
| Plow | 节点的发射功率 |
| Ra | 聚类半径 |
| Rc | 通信半径 |
| state | 用于记录节点的当前状态 |
| Nbr | 记录当前节点通信半径a范围内所有邻居ID的集合 |
| Nbr_INFO | 一个记录当前节点通信半径a范围内所有邻居的(ID, x, y, Er)信息的集合 |
| received | 一个记录已接收消息的集合 确保其所有邻居的消息都已被接收 |
| my_cheads | 一个记录要发送“you are chead”消息的节点的集合 |
| neighbor_degree | 一个记录所有邻居节点度的集合 |
| Eri | 当前节点的剩余能量i |
| Ethreshold | 能量阈值 |
| candidate_head | 当前节点的候选簇头集合 |
| degreei | 当前节点的度i |
| Idi | 当前节点的Idi |
| my_ch | 当前节点的簇头 |
| Data | 用于存储从簇成员收集的数据 |
| distancei | 记录节点与其邻居到汇聚节点之间的距离 |
| xsink, ysink | 汇聚节点的x坐标、y坐标 |
| next_hop | 用于记录下一跳节点 |
| Ed | 临终节点的能量阈值 |
| route_neighbor_set | 一个用于记录在Rc范围内所有邻居信息的集合 |
3.2 动态网络聚类路由协议
CRPD 包含四个阶段:邻居发现、簇头选择与簇形成、数据聚合与路由构建,以及重新聚类与重新路由,每个阶段的持续时间分别为T1, T2, T3,和T4。在本节中,我们将讨论 CRPD 的每个阶段。
3.2.1 邻居发现
传感器节点随机部署后,初始化邻居发现阶段。在时间段T1内,每个传感器节点i以功率Plow在范围Ra内广播detect消息(变量定义见表3),该消息包含节点的Idi、坐标(xi,yi)以及剩余能量信息(详见算法1)。之后,各已接收节点j记录并存储这些信息,形成邻居信息列表。即,在邻居发现阶段结束后,每个传感器节点都拥有其所有邻居节点的信息。
该算法的基本思想是每个传感器节点都有两个集合:Nbr和Nbr_INFO。其中,Nbr集合仅存储邻居节点的Id;而Nbr_INFO集合并用于存储其邻居的Id、坐标和剩余能量信息。显然,传感器节点需要具备一定的存储容量。首先,每个传感器节点广播detect消息,将其自身的Id、坐标和剩余能量信息发送给所有邻居。之后,每个传感器节点将接收来自其邻居的detect消息,并相应地存储消息中的信息。因此,在完成邻居发现阶段后,每个节点都拥有其所有邻居的信息。
定理1 分布式邻居发现算法的时间复杂度为O(Δ),消息复杂度为O(m),其中Δ是网络中的最大节点度,m是边的数量(链路数量)。
Proof 由于分布式邻居发现算法是分布式的,整个网络的时间复杂度等于单个节点的时间复杂度。并且每个节点需要从其所有邻居接收detect消息,因此单个节点的最坏情况时间复杂度为O(Δ) (Δ是网络中的最大节点度)。因此,该算法的时间复杂度为O(Δ)。每个节点发送一条detect消息,且每条边最多有两条detect消息。因此,消息总数为 2m,即 O(m)。
3.2.2 簇头选择与簇形成
在完成邻居发现阶段(T1)后,进入簇头选择和簇形成阶段,其持续时间为T2。如上所述,所有传感器节点初始时具有相同的能量,且每个节点都知道自身的剩余能量Er。死亡节点能量阈值Ethreshold为初始能量的40%。我们采用以下原则来选择一定数量的簇头:
- 我们选择与其所有邻居相比具有最大度(即拥有最多邻居的节点)的节点。
- 剩余能量Er大于能量阈值Ethreshold。
- 如果具有最大度的节点的Er不大于Ethreshold,则我们在其邻居中选择另一个具有最大度的节点,并且所选节点的剩余能量Er需要大于Ethreshold,以成为候选簇头。
- 任意两个簇头不能互为邻居。
根据上述原则,簇头的选择取决于两个因素:一是节点度,二是节点的剩余能量Er。
簇头选择完成后,开始簇形成阶段。具体实现过程如算法2所示。该算法包含两个阶段:第一阶段是获取所有邻居节点的度;第二阶段是簇形成。首先,每个节点处于休眠状态;当定时器中断时,节点被唤醒至空闲状态。接着,根据簇头选择原则进行簇头选择。如果一个节点在其所有邻居中具有最大度,且其剩余能量大于Ethreshold,则将该节点选为簇头,并将其状态标记为chead状态,同时该节点广播一条i am chead消息。此外,如果某节点在其所有邻居中具有最大度,但其剩余能量不大于Ethreshold,则选择其邻居中具有最大度且剩余能量大于Ethreshold的节点(可能不止一个)作为候选簇头。随后,当前节点(在所有邻居中具有最大度但剩余能量不大于Ethreshold)向候选簇头节点发送一条you are chead消息,通知该节点其可能成为簇头,并向其他邻居发送一条ordinary消息。同时,当前节点将自身状态标记为簇成员状态。
对于接收到you are chead消息的节点,需要进一步判断是否已接收到i am chead消息;如果没有,则将其自身状态标记为chead状态,并广播一条i am chead消息。否则,广播一条ordinary消息。需要注意的是,由于这是一个分布式算法,可能会出现某个节点及其邻居节点同时接收到you are chead消息,并且两者均未接收到i am chead消息的情况。为了解决这一问题,我们引入了智能等待策略。在接收到you are chead消息后,两个未接收到i am chead消息的节点将根据智能等待策略等待一段时间。经过该段时间后,这两个节点根据是否接收到i am chead消息来确定自己是否可以成为簇头。智能等待策略的等待时间计算如下:
$$
t_i = \lambda \times (1 - \frac{D_i}{R_c}) \times (1 - \frac{E_{ri}}{E})
$$
其中 $D_i$ 是节点与发送“you are chead”消息的发送节点之间的相对距离,$R_c$ 是节点的通信范围,$E_{ri}$ 是节点的剩余能量。$E$ 表示节点的初始能量,$\lambda$ 是用于防止两个节点同时广播“i am chead”消息的时间系数。$\lambda$ 的值根据等待的具体要求确定。
此外,其他不满足簇头条件且未接收到you are chead消息的节点广播普通消息。接收到i am chead消息的节点记录候选chead集合的信息,以便从候选chead集合中选择剩余能量最大的节点作为自己的簇头,然后成为该簇的成员,并将其状态标记为member。注意,当存在相同最大剩余能量的节点时,我们选择Id较大的节点。算法结束后,网络中的传感器节点处于chead或member状态之一。簇形成的有限状态机如图2所示。图3展示了簇头选择与簇形成的过程。
这里,我们给出一个示例来进一步说明该算法,如图4所示。我们假设所有节点的剩余能量均满足 $Er > Ethreshold$,除了节点7,并且节点5的剩余能量大于节点1。根据算法2,我们选择簇头节点1、5和8。选择节点8的原因是节点7的剩余能量不满足原则2,因此节点7从其邻居(3、6、8)中选择一个度最大且剩余能量大于 Ethreshold 的节点作为其簇头。然而,根据智能等待策略,最终只有节点8成为簇头。如图4所示,簇头节点1、5和8向其邻居广播一条“i am chead”消息。特别地,节点7向节点3、6和8发送一条“you are chead”消息,并向节点2发送一条ordinary消息。其他节点广播一条ordinary消息。为了简化起见,图中未显示部分ordinary消息。算法执行完毕后,形成了三个簇(绿色虚线圆),如图所示。chead节点为1、5和8。簇成员节点为2、3、4、6、7、9、10、11和12。
定理2 完成算法2仅需O(1)轮次。且算法2的消息复杂度为O(m),其中m是边数m。
证明 对于每个节点,发送、接收和处理消息的操作称为一轮。自认为是簇头的节点(如图4中的节点1和节点5)发送“i am chead”消息,并接收来自其邻居的ordinary消息;而具有最大度但不满足能量原则的节点(如图4中的节点7),会向具有最大度且满足能量原则的邻居节点发送“you are chead”消息,同时向其他节点发送ordinary消息,并接收来自邻居的“i am chead”和ordinary消息;此外,簇成员节点发送ordinary消息,并接收“i am chead”、ordinary和“you are chead”消息。综上所述,每个节点只需发送、接收和处理一次消息,之后即可确定自身状态,即仅需O(1)轮次。
在获取所有邻居节点度的阶段,每条边最多有两条degree消息。在簇形成阶段,每条边也最多有两条消息,可能是“i am chead”和ordinary、“you are chead”和ordinary、“you are chead”和“i am chead”、“i am chead”和ordinary,或者ordinary和ordinary。因此,每条边最多有四条消息;该算法的消息复杂度为O(4m),即 O(m)。
3.2.3 数据聚合与路由构建
簇选择和簇形成阶段(T2)之后,进入数据聚合与路由构建阶段。该阶段的持续时间为T3。基于已形成的簇,每个传感器节点将感知数据发送给簇头,然后由簇头将数据发送至汇聚节点。路径选择通过分布式算法3实现。汇聚节点和传感器节点均知道自身的位置坐标,其中汇聚节点是静止的,而传感器节点可以移动。此外,每个节点都知道汇聚节点的位置,因此在下一跳节点选择时,我们从当前节点的邻居中选择距离汇聚节点最近的节点作为下一跳,直到数据被发送到汇聚节点。对于下一跳节点的选择:
- 从当前节点的通信范围内选择。
- 选择距离汇聚节点最近的节点。
在执行算法3之前,我们需要首先获取每个节点在Rc范围内的邻居集合,因此我们采用算法1的思想发送detect消息以获取路由集Route_Nbr。之后,我们执行算法3。该算法的基本思想是簇成员节点将数据汇聚到其簇头节点,然后簇头节点根据路由将数据发送至汇聚节点。在该算法的执行过程中,我们采用了ack和ACK确认消息以确保数据可靠传输。此外,为了避免相同的消息被重复发送多次,我们设置了一个时间值为time1,用于节省能量。
以图4为例,我们在图5中展示算法3的分析过程。我们选择一个簇头节点(节点1)进行说明。首先,簇头节点1从其所有簇成员节点接收Infor数据消息,然后向邻居发送一个确认消息。之后,节点1向节点4发送一个数据转发消息,其中节点4是其邻居(包括自身)中距离汇聚节点最近的节点。在接收到数据转发消息后,节点4向节点1发送一个ACK,然后将数据转发消息转发给距离汇聚节点最近的邻居节点5。类似地,节点5接收到数据转发消息后,向节点4发送一个ACK,并将数据转发消息转发给节点9。在接收到数据转发消息后,节点9向节点5发送一个ACK。当发现其邻居中距离汇聚节点最近的节点是其自身时,节点9直接向汇聚节点发送数据转发消息。一旦汇聚节点接收到节点9的数据转发消息,便会回复一个ACK消息,至此,路由完成。
定理3 算法3的时间复杂度为O(Δ + ⌈d/Rc⌉)轮次,消息复杂度为O(m)。其中Δ是网络中节点的最大度,d是所有簇头到汇聚节点的最远距离,Rc是节点的通信范围,m是边的数量。
证明 算法3包含两个阶段:数据聚合阶段和路由阶段。在数据聚合阶段,每个簇成员向其簇头发送一条信息或数据消息,并接收一个确认消息,这仅需一轮。簇头节点接收信息或数据消息并发送确认消息,这需要Δ轮次。因此,完成数据聚合阶段需要O(Δ)轮次。
对于路由阶段,路径上的每个节点接收一个数据转发消息并发送一个确认消息。换句话说,路径上的节点数量决定了所需的轮次数量。网络中最长路径的跳数为⌈d/Rc⌉。因此,完成路由阶段需要O(⌈d/Rc⌉)轮次。综上所述,该算法需要O(Δ + ⌈d/Rc⌉)轮次。
根据上述分析,在数据聚合阶段,每条边有两条消息:信息或数据消息和确认消息。在路由阶段,只有构成路由的链路会有两条消息:数据转发消息和ACK消息。因此,每条边最多有四条消息。所以该算法的消息复杂度为O(4m),即O(m)。
3.2.4 重新聚类与重新路由
网络中的节点具有移动性,这使得网络拓扑动态变化。此外,传感器节点可能由于能量耗尽或其他故障而无法正常工作;有时需要向网络中添加新的传感器节点以满足工作需求,这些情况也会导致网络拓扑发生变化。因此,需要实时更新网络拓扑,以确保正常网络通信。针对网络的变化,我们将其分为三种情况:
(1) 节点失效 :当一个节点的剩余能量小于或等于Ed时,该节点首先需要判断自身是否为簇头节点。如果是,则该节点需先选择另一个节点作为替代簇头,所选节点应为当前节点的最近邻节点,且满足能量阈值要求。其次,该节点需向其邻居广播dead(Idi, Ids)消息,其中Idi为死亡节点的ID,Ids为备用簇头节点的ID。若死亡节点不是簇头节点,则发送的dead消息仅包含第一个参数。dead消息的接收节点首先判断Idi是否为其所属的簇头的ID。如果是,则将其簇头的ID替换为Ids,然后从其邻居列表中移除Idi。否则,直接从其邻居列表中删除Idi。
(2) 节点加入 :如果向网络中添加一个新节点,则该节点向其邻居广播一条connection(Idi, xi, yi, Eri)消息。接收到该消息的节点更新其邻居列表,并回复一条OK(Idi, xi, yi, Eri, my_chi)消息,其中my_chi是节点Id为i的簇头。在接收到OK消息后,新加入的节点存储邻居信息,并从已接收的信息中选择距离自身最近的节点作为其簇头my_ch。
(3) 节点移动 :如果一个节点发生移动,我们必须首先判断它是否为簇头节点。如果是一个普通节点,则该节点在开始移动时向其原始区域内的节点广播leave(Idi)消息,之后接收到leave(Idi)消息的节点将从其邻居列表中删除该发送节点。当节点移动停止后,该节点向新区域的邻居广播joining(Idi, xi, yi, Eri)消息,然后按照情况(2)进行操作。如果移动的节点是簇头节点,则该节点从其邻居中选择一个能量满足能量阈值的最近节点来接替自己作为新的簇头,并向其原始区域广播leave(Idi, IDs)消息。接收到leave(Idi, IDs)消息的节点将判断Idi是否为其自身的簇头;如果是,则将其自身的簇头更新为Ids,并从邻居列表中删除Idi;如果不是,则直接将Idi从当前节点的邻居列表中删除。当该节点移动停止后,向新区域广播joining(Idi, xi, yi, Eri)消息,然后算法按照情况(2)执行。
定理4 重新聚类算法的时间复杂度为O(n)轮次,消息复杂度为O(m),其中n是当前网络节点的数量,m是边的数量。
证明 当发生“节点死亡”时,死亡节点广播死亡消息,其邻居接收死亡消息。在此过程中,节点要么发送消息,要么接收消息,仅需一轮即可完成。
当发生“节点加入”时,新加入的节点广播joining消息并接收OK消息,其邻居节点接收到joining消息后发送一个OK消息。完成此过程仅需一轮。
当发生“节点移动”时,节点在离开前会广播一条leave消息,其邻居节点接收leave消息,因此该过程仅需一轮即可完成节点的离开。当节点进入新区域后,它会广播joining消息并接收OK消息,同时它的新邻居节点接收joining消息并发送OK消息,这需要一轮来完成。因此,对于整个节点移动过程,需要两轮才能完成。
基于上述分析,我们现在假设所有三种情况的总次数为a(0 ≤ a ≤ n),因此在最坏情况下(即每次都 是节点移动),重新聚类算法需要2a轮次,且由于0 ≤ a ≤ n,最多需要O(n)轮次。
从上述分析可知,在“节点失效”情况下,每条边上仅有一条消息。在“节点加入”情况下,每条边上 有两条消息(connection消息和OK消息)。在“节点移动”情况下,每条边上仅有一条leave消息(在节点移动之前),而在移动之后,每条边上有两个消息,这与“节点加入”的情况类似。综上所述,我们可以得出结论:在最坏情况下,每条边上有两个消息,因此重新聚类算法的消息复杂度为O(2m),即O(m)。
4 性能评估
4.1 仿真参数
我们使用MATLAB平台评估该协议的性能。在边长为M × M的方形区域中随机部署100–500个节点(M = 200)。对于相同数量的节点,我们随机生成十种网络拓扑结构,分别运行协议算法,然后取平均值作为仿真结果。对于相同的网络拓扑结构,我们采用前100轮实验结果的平均值作为仿真结果。此外,基站位于(0,200)。具体的仿真参数如表4所示,其中E为节点的初始能量,α为“节点加入”的概率,β为“节点移动”的概率。
表4 仿真参数
| 参数名称 | 值 |
|---|---|
| 网络区域 | 200×200 |
| 传感器节点数量 | 100–500 |
| 汇聚节点(基站)的坐标 | (0,200) |
| 数据包大小 | 512字节 |
| 广播包大小 | 20字节 |
| Eelec | 50 纳焦/比特 |
| εfs | 10 pJ/bit/m² |
| εmp | 0.0013 pJ/比特/边数⁴ |
| do | 86 m |
| E | 2 焦耳 |
| EDA | 5 纳焦/比特 |
| α | 1/150 |
| β | 3/50 |
4.2 结果与分析
4.2.1 仿真结果
首先,我们模拟了100–500个节点的聚类,如图6所示。(a)、(b)、(c)、(d)和(e)分别为100、200、300、400和500个节点的聚类结果,左上角的红点为基站。
在数据聚合和路由阶段之后,五种场景的路由图如图7所示。红色箭头为路由路径。
从图5中可以看出,在网络区域大小相同的情况下,随着节点密度的增加,一个簇头节点连接的簇成员节点数量显著增加,这将导致簇头节点在簇内通信过程中消耗过多能量而过早死亡。因此,为了减轻密集网络中簇头节点的负担,可以根据网络密度调整聚类半径,控制簇大小,从而避免簇头过早死亡,延长网络生命周期。
对于500节点密集网络,我们使用不同的值作为簇半径,并绘制网络生命周期随簇半径变化的变化趋势,如图8所示。从图中可以看出,当簇半径在45到50之间时,网络生命周期最长。因此,我们可以调整最优簇半径以达到延长网络生命周期的目的。
此外,不同簇半径(Ra= 30,45,60,75)的效果图如图9所示。
4.2.2 仿真结果比较
在无线传感器网络中,使用多种性能指标来比较协议的性能。本文采用以下指标:
- 平均能量 :该指标给出了仿真结束时所有节点的平均能量。
- 能耗 :该指标表示网络区域中所有节点向汇聚节点发送数据包的能耗。
- Standard deviation of energy :该指标给出了所有节点上能量水平的平均偏差。
- 网络生命周期 :该指标表示第一个节点耗尽能量的时间。
通过使用MATLAB开发的仿真器,我们将所提方案与LECP[24]、TEEN[32]、MP[33]、MACS[34]和MRP[35]协议进行比较。图10、11、12和13展示了不同网络规模研究的仿真结果。可以看出,CRPD在平均能量、能耗和标准能量偏差方面表现优异,但在网络生命周期方面的性能一般。然而,我们可以根据网络密度调整最优簇半径,以达到延长网络生命周期的目的。
在图10中,CRPD和MRP的平均能量高于其他算法,而LECP的平均能量略低于CRPD和MRP。当节点数量少于300时,CRPD的性能优于MRP;但当节点数量超过300时,CRPD的性能略低于MRP。这是由于随着网络中节点数量的增加,每个簇连接的簇成员节点数量相对增加时,簇头消耗的能量也相对增加,因此CRPD的平均能量趋势略有下降。图中显示,CRPD和MRP中有大量节点具有较多的剩余能量,这意味着CRPD和MRP在传输数据时所需的能量较少。
图11显示了每种协议的能耗情况。网络中的节点越多,网络流量就越大,导致TEEN和MACS的能耗显著升高。MACS是最耗能的算法之一,因为它无法利用数据相关性和聚类来消除相邻节点之间的冗余信息。由于MRP是事件依赖型的,只有事件周围的节点消耗能量,因此其能耗较低。尽管TEEN是一种动态聚类算法,但TEEN中的簇结构与事件区域无关,因此其能耗高于MRP。MP的能耗低于TEEN和MACS,原因是MP中的主路由是根据某些指标(如低功耗)建立的。因此,当源节点始终通过主路由传输数据时,MP的能耗较低。然而,CRPD的能耗趋势趋于稳定,且为最低、最优。这是因为一旦形成簇在网络中构建时,即使有节点连接、移动或死亡,也只有少数节点消耗能量,从而大大降低了整个网络的能耗。
在图12中,CRPD的标准差明显低于其他算法,表明CRPD能够有效平衡所有节点的能耗,在均衡负载方面发挥了作用。
图13显示了六种算法的网络生命周期。显然,MRP的网络生命周期几乎是其他算法的两倍。网络规模对MRP的影响较小,这是因为MRP与事件区域相关,只有事件区域内的少量节点消耗能量。CRPD的网络生命周期随着网络规模的增大而减小。这是因为网络中节点数量增多,每个簇中的簇成员增多会加快簇头的死亡速度,从而降低CRPD网络的生命周期。TEEN优于MACS,因为它可以利用簇结构来传输数据。MP性能较差的原因在于它始终采用主路径传输数据,导致主路径上的节点能量迅速耗尽。一些靠近汇聚节点的簇头需要同时负责簇内通信和簇间通信,因此其能耗过快,导致LECP性能较低。
5 结论
本文提出了一种针对动态聚类网络的新型节能路由方案。通过实时更新网络拓扑,将整个网络的能量负载均匀分配到各个传感器节点,从而实现负载均衡。该路由算法采用确认机制以确保数据的可靠传输。此外,基于聚类的数据采集减少了流量和能量消耗,并适当调整最优聚类半径可以相应地延长网络生命周期。仿真结果表明,所提协议在能量效率方面优于现有协议MRP、TEEN、MACS、MP和LECP。
在未来工作中,应进一步解决簇头节点在通信过程中的能量效率问题,从而进一步提高网络的生命周期。
65

被折叠的 条评论
为什么被折叠?



