无线传感器网络各类路由协议仿真

合集下载

无线传感器网络中的路由协议

无线传感器网络中的路由协议

无线传感器网络中的路由协议随着科技的不断发展,无线传感器网络(Wireless Sensor Network,WSN)已经逐渐成为了一种被广泛研究和应用的技术。

无线传感器网络拥有广泛的应用领域,如军事、环境监测、智能家居、健康管理等。

在这些应用中,无线传感器网络的安全、可靠性和生命稳定性是至关重要的。

为了保证上述三个要素,需要一个高效、稳定且可扩展的路由协议来管理无线传感器网络中的数据传输和路由决策。

无线传感器网络与传统的局域网和广域网不同,它不具有结构上的中心,而是由大量分散的节点构成,这些节点协同工作来达到目标。

由于节点之间的距离很近,数据包在此类网络中往往是通过多跳传输。

一个好的路由协议应当考虑网络中所有节点的负载以及能源消耗,尽可能地减少数据包的延迟和数据包的丢失。

这是无线传感器网络中的路由协议需要考虑的主要问题。

在无线传感器网络中,有三种主要的路由协议:平面机制、分层机制和混合机制。

1. 平面机制平面机制是指所有节点都属于同一层次,没有层次结构。

节点之间通过广播协议(如Flooding protocol)相互传递数据。

节点只需知道自己的邻居节点,数据包的传输是由遍布整个网络的节点负责的。

这种方法简单且易于实现,但会导致网络不稳定,易出现死循环和数据洪泛问题。

因此,在实际应用中很少使用。

2. 分层机制分层机制是指将节点按照其功能和自己所处的位置划分为不同的层次。

分层机制将一个大的无线传感器网络划分为多个小的子网络,每个子网络都有一个负责节点。

子网络之间通过中继节点进行通信,可以减少数据的传播距离和提高传输速率。

分层机制通常由三层组成:传感器层、联络层和命令层。

传感器层负责数据的采集与传输,联络层负责中继和路由,命令层负责网络控制和管理。

分层机制的优点是可以有效降低网络负载和节点的能源消耗,提高网络的生存率和稳定性。

常见的分层机制路由协议有链路状态广告协议(LSP protocol)、电子飞秋协议(EFQ protocol)等。

无线传感器网络的动态路由协议

无线传感器网络的动态路由协议

无线传感器网络的动态路由协议随着技术的不断发展,无线传感器网络已经成为一种广泛应用的技术。

它可以用于环境监测、农业、医疗、智能交通等领域,而动态路由协议则是无线传感器网络中的重要组成部分。

本文将对无线传感器网络的动态路由协议进行简要介绍。

一. 动态路由协议的定义动态路由协议(Dynamic Routing Protocol)是一种通过节点之间的通信建立网络路径的协议。

它是在网络中自动决定路径的一种方法。

与静态路由协议不同的是,动态路由协议可以根据网络中的状态和变化来动态的调整路由。

二. 无线传感器网络通常由大量的低功耗传感器节点组成,这些节点之间通过无线信道进行通信。

在无线传感器网络中,由于节点的位置和状态会发生变化,需要使用动态路由协议来建立网络路径。

常见的无线传感器网络动态路由协议有以下几种:1. AODV协议AODV(Ad-hoc On-demand Distance Vector)协议是一种基于距离向量的无线传感器网络动态路由协议。

它使用了反应式路由的方式,实现了路由的动态计算和修复。

当节点需要发送数据时,在本地查找路由表,如果表中没有路由信息,则发送RREQ(Route Request)数据包以搜索最短路径。

一旦一个节点收到RREQ数据包,它将转发该数据包,同时维护一个临时路由表,用于以后的回复。

如果目的节点收到RREQ数据包,则返回RREP(Route Reply)数据包给源节点。

2. DSR协议DSR(Dynamic Source Routing)协议是一种基于源路由的无线传感器网络动态路由协议。

正如其名字所示,该协议使用源节点来处理整个路由。

当源节点需要向目的节点发送数据时,它会随数据包发送一个路由请求,请求路由到目的节点的路径。

每一个中间节点都会把自己的位置添加到所接收到的路由请求中,并将请求转发出去。

当请求到达目的节点时,目的节点会把整个路径发送回源节点,源节点就得到了一条通往目的节点的路径。

无线传感器网络路由协议的设计与仿真

无线传感器网络路由协议的设计与仿真

无线传感器网络路由协议的设计流程:
1、确定网络拓扑和节点部署:根据实际应用场景,确定传感器节点的部署 位置和网络拓扑结构。
2、选择路由协议类型:根据应用需求和网络特点,选择适合的路由协议类 型,如按需路由、表驱动路由、基于位置的路由等。
3、设计路由算法:根据所选路由协议类型,设计相应的路由算法,包括节 点间的通信方式、路由发现和维护机制等。
感谢观看
在仿真过程中,我们发现所设计的路由协议在能量消耗和延迟时间方面表现 较好,但容错能力有待提高。为了优化协议性能,我们针对容错性进行了深入研 究。
协议优化
针对仿真中发现的容错性问题,我们采取了以下优化措施:
1、引入多路径机制:通过设计多路径路由协议,使数据能够沿着多个路径 传输,降低因单个节点或链路故障导致的数据传输中断风险。
4、实现协议模块:将设计的路由算法通过编程实现为网络协议模块,并集 成到网络操作系统中。
协议仿真
为了评估无线传感器网络路由协议的性能,我们使用NS2仿真工具对其进行 了仿真。以下是仿真步骤:
1、配置网络拓扑和参数:根据实际应用场景,我们在NS2中配置了相应的网 络拓扑结构和节点部署位置,并设置了节点间通信的物理和链路层参数。
2、优化节点调度算法:改进节点调度算法,使节点能够更加合理地分配能 量,避免出现能量消耗不均的情况,从而提高整个网络的能量利用效率。
3、加强错误恢复机制:在协议中加入错误恢复机制,当检测到数据传输错 误时,能够及时采取措施进行纠正,提高数据传输的可靠性。
经过优化后,我们再次使用NS2对优化后的路由协议进行了仿真验证。通过 对比优化前后的仿真结果,发现优化后的路由协议在容错性和能量消耗方面均得 到了显著改善。这表明我们的优化方案是可行的,提高了无线传感器网络路由协 议的性能。

能量有效的无线传感器网络层次型路由协议

能量有效的无线传感器网络层次型路由协议
t c o s te cu tr h a . h o e ih h v ih r r s u l e e g r e rir t e l r l se e d t a h o r o e o h o e h l se e dT e n d s wh c a e h g e e i a n r a e al o d c a e c u tr h a h n t e 1we n s d y e a o n . ae y o e a e n r d c d n r u i g ag rtm , h c c n r u d G twa n d s r i t u e i o t lo i o n h w ih a ma e c u tr h a t r a y v r l e e g c n u t n k l se e d u n wa o ef l n r y o s mp i u o fr ln i a c r n miso . i lt n r s ls e n t t h t t e n r y o s mp in i o o g ds n e t s si nS mu a i e u t t a o d mo s a e t a h e e g c n u t s r o mo e v n i HR O a o p o r e e n EE P S s t r — ln ew r i t f ci ey o g n tok lei f me ef t l. e v
C m ue E gneiga dA pi t n o p tr n i r n p l a os计算机 工程与应用 e n ci
能量有效的无线传感器 网络层 次型路 由协议
张倩王 , 邓成 国 , 陈庆春
Z A G Q a — a g D N h n — u , HE ig c u H N i w n , E G C eggoC N Qn—hn n

无线传感器网络中的路由协议选择指南

无线传感器网络中的路由协议选择指南

无线传感器网络中的路由协议选择指南无线传感器网络(Wireless Sensor Network,WSN)是一种由大量分布式传感器节点组成的网络系统,用于收集、处理和传输环境中的信息。

在WSN中,传感器节点通常具有有限的计算和通信能力,因此选择合适的路由协议对于网络的性能和能耗至关重要。

本文将探讨在无线传感器网络中选择路由协议的指南。

1. 路由协议的分类在无线传感器网络中,常用的路由协议可以分为以下几类:1.1 平面型路由协议平面型路由协议是指将网络拓扑视为一个平面图的路由协议。

这类协议简单易用,适用于小规模的传感器网络。

常见的平面型路由协议有LEACH、PEGASIS等。

1.2 分层型路由协议分层型路由协议将网络划分为不同的层次,每个层次负责不同的任务。

这类协议能够提高网络的可扩展性和灵活性。

常见的分层型路由协议有TEEN、APTEEN 等。

1.3 基于集群的路由协议基于集群的路由协议将网络节点划分为若干个簇(Cluster),每个簇由一个簇头(Cluster Head)负责。

这类协议能够减少网络中的数据传输量,延长网络寿命。

常见的基于集群的路由协议有LEACH-C、HEED等。

1.4 基于多路径的路由协议基于多路径的路由协议利用多条路径传输数据,提高网络的可靠性和容错性。

这类协议适用于网络中存在节点失效或信号干扰的情况。

常见的基于多路径的路由协议有AODV、DSDV等。

2. 路由协议选择的考虑因素在选择路由协议时,需要考虑以下因素:2.1 网络规模网络规模是选择路由协议的重要因素之一。

对于小规模的传感器网络,平面型路由协议或分层型路由协议可能更适合;对于大规模的传感器网络,基于集群或基于多路径的路由协议可能更合适。

2.2 能耗能耗是无线传感器网络中的重要问题。

选择能耗较低的路由协议可以延长网络的寿命。

一些基于集群的路由协议通常能够有效降低能耗。

2.3 数据传输延迟某些应用场景对数据传输延迟有较高的要求,因此选择能够提供较低延迟的路由协议是必要的。

无线传感器网络网络层和路由协议

无线传感器网络网络层和路由协议

无线传感器网络网络层和路由协议无线传感器网络(Wireless Sensor Networks,简称WSN)是由多个分布式无线传感器节点组成的网络系统,用于对环境进行监测、采集和传输数据。

在WSN中,网络层和路由协议起到了关键作用,负责实现传感器节点之间的数据传输和网络通信。

一、网络层的功能网络层是无线传感器网络的核心组成部分,它提供一种机制来确保数据在网络中的可靠传输。

网络层的主要功能如下:1.数据分组:网络层负责将应用层产生的数据分成多个独立的数据包,并为每个数据包分配一个唯一的标识符。

2.网络编址:网络层为每个传感器节点分配唯一的标识符,以便其他节点可以识别和定位特定的节点。

3.数据路由:网络层通过选择最佳的数据传输路径以实现数据的有效传输。

这种路由选择可能是基于节点之间的距离、能量消耗和网络拓扑。

4.拥塞控制:网络层负责监测和调整网络中数据传输的速率,以避免网络拥塞和资源浪费。

二、常见的路由协议1. 平面分布式网络(Flat Distributed Network):在这种网络中,每个传感器节点具有相同的地位和角色,节点之间通过广播的方式进行通信。

这种路由协议适用于节点分布均匀的小型网络,但随着网络规模的增大,广播的开销会大大增加。

2. 分级网络(Hierarchical Network):在分级网络中,网络节点被分为若干个级别的集群,并指定一些节点作为聚集器和中心节点。

这些聚集器负责收集、聚合和传输其他节点的数据。

这种路由协议可以减少节点之间的通信开销和能量消耗,提高网络的生命周期。

3. 基于链路状态的路由协议(Link-State Routing Protocol):这种路由协议基于网络中节点之间的链路状态信息来构建拓扑图,并计算最短路径。

每个节点需要维护邻居节点的链路状态信息,并通过广播将信息传递给其他节点。

这种路由协议适用于节点之间的链路状态变化频繁和网络拓扑改变较多的情况。

4. 基于距离向量的路由协议(Distance Vector Routing Protocol):这种路由协议基于节点之间的距离信息来决定数据的传输路径。

无线传感器网络的路由协议

无线传感器网络的路由协议
无线传感器网络 的路由协议
路由协议概述
无线传感器网络的路由协议主要任务是确保数据由 源节点准确高效地传输到目的节点,即寻找数据的 最优路径以及沿最优路径发送数据。
能耗:WSN中,路由协议的制定受能耗的限制。 ◆邻居发现过程:邻居节点间交换信息会消耗能量,交换数据越 大,能耗越大。 ◆处理过程:数据传输过程的计算和通信会消耗能量,通信的能 耗大于计算。
能量感知路由
能量多径路由
主要过程
路径建立 建立从源节点 到目的节点的多 条路径 计算出各条路 径的选择概率
数据传输
对于接收到的 每组数据,节点 根据概率从所有 下一跳节点中选 择一个节点
路由维护
周期性从目的 节点到源节点进 行洪泛查询以维 护路径的有效性 和活跃性
能量感知路由
能量多径路由
路径建立具体过程
缺点
➢节点硬件需要支持射频功率自适应调整; ➢无法保证簇头节点能遍及整个网络; ➢分簇与簇头选举 要公平
分层路由协议
PEGASIS协议
◆PEGASIS协议是对于LEACH的一种改进,节点间不再组成簇,而 是组成链 ◆PEGASIS协议基本原理:
1.假定传感器节点是同构和相对静止的 2.节点通过发送能量递减的测试信号,确定相邻节点的位置 3.进而了解网络的全局信息 4.节点选择其最近的邻居作为链上的下一跳 5.节点只需维护自己上一跳和下一跳的邻居信息
分层路由协议
LEACH协议
网络按照周期工作,每个周期分为两个阶段:
◆簇头建立阶段: 节点运行算法,确定本次自己是否成为簇头(选簇); 簇头节点广播自己成为簇头的事实; 其他非簇头节点按照信号强弱选择应该加入的簇头,并通知该
簇头节点; 簇头节点按照TDMA的调度,给依附于他的节点分配时隙;

无线传感器网络的S-MAC协议仿真

无线传感器网络的S-MAC协议仿真

《无线网络技术》实验四报告单班级____ ___ 姓名_____ ___ 学号__ ___实验日期__ ___ 评分____ 教师签名______ _______实验名称:无线传感器网络的S-MAC协议仿真实验目的:了解无线传感器网络的S-MAC协议及提出一种消息节点睡眠机制和退避策略,然后通过在NS2平台上的仿真,可发现对能量消耗和网络延迟有部分改善。

实验内容:1 .无线传感器网络概述无线传感器网络(witeleSs Sensor Networks,WSN)是集信息采集、信息传输、信息处理于一体的综合智能信息系统。

它综合了微机电系统(Micro—Elec— tron Mechanical System,MS)、传感器技术、嵌入式技术、现代网络及无线通信技术、分布式信息处理技术等,能够通过各类集成化的微型传感器协作地实时监控、感知和采集各种环境或监控对象的信息。

在军事领域、工业领域、农业领域、环境检测、医疗监护、智能家具系统等许多领域都有十分广阔的发展前景。

2.无线传感器网络结构无线传感器网络包括传感器节点(Sensor Node)、汇聚节点(Sink Node)和管理节点(Manager node)。

无线传感器网络的协议栈采用5层的分层结构,分别为:物理层、数据链路层、网络层、传输层和应用层。

在网络协议栈中,MAC子层位于数据链路层,直接与物理层接口,负责控制和接入物理介质。

提供无线传感器网络中节点到节点的连接方式,确保传感器节点间通信资源分配的公平性和有效性。

3.基于竞争的MAC协议分析S-MAC(sensor MAC)[协议是针对IEEE802.11中节点处于侦听状态,消耗大量能量的问题,提出的周期性的休眠/活动调度机制。

S-MAC由一个开始的同步时间段开始,交换SYNC消息形成虚拟簇。

相同虚拟簇下的节点可以传输数据。

节点只有在活动阶段才发送消息,如图1.1SMAC采用数据传递机制,通过这种周期性的修眠/活动工作机制,节点降低了闲置侦听,降低了能耗。

无线传感器网络flooding路由协议详情地MATLAB仿真

无线传感器网络flooding路由协议详情地MATLAB仿真

摘要无线传感器网络是计算机科学技术的一个新的研究领域,是传感器技术、嵌入式计算技术、分布式信息处理技术和无线通信技术相结合的产物。

与传统网络相比,无线传感器网络具有造价低、功耗低、布局灵活性强、监测精度高等特点,因此在军事、医疗、家用等多个领域均有广阔的应用市场。

本文重点研究基于无线传感器网络的泛洪式路由协议,无线传感器网络节点数量庞大、单个节点资源有限,其路由协议设计的首要目标是提高能量有效性,延长网络寿命。

本文总结了WSN的概念、结构、特点,分析了WSN的关键性技术问题与网络协议;研究了WSN的网络协议体系和路由协议的分类,分析比拟了目前国内外学者提出的几种有代表性的路由协议与其性能优缺点;选择了flooding路由协议为研究重点,分析了该路由算法的具体实现,针对传感器节点能量与传输X围有限等特点,提出了一种基于延迟的自适应泛洪路由算法,首先通过源节点在网内用较小的路由请求报文和路由回复报文来建立路由,路由建立的过程中自适应地确定等待时间以使更优的路由请求报文得到转发,然后源节点再沿着建立好的路径转发较大的数据报文。

并采用MATLAB网络仿真工具对该路由协议进展了整体仿真,并对其数据进展了分析。

仿真实验明确新算法较Flooding节能,能较好的克制Flooding算法中报文冗余度高、能耗大等不足。

关键词:无线传感器网络;flooding路由协议;MATLAB仿真ABSTRACTWireless sensor networks are a new research field of puter science and technology. They are the integration of sensor techniques, nested putation techniques, distributed putation techniques and wireless munication techniques. paring with traditional networks, the wireless sensor networks features with low cost, low power loss, flexible layout and high monitor precision, therefore the sensor networks can be used for various application are as such as military, chemical, home.This article focus on wireless sensor networks based on the Pan Hung-routing protocol, wireless sensor network nodes large number of individual nodes with limited resources, the routing protocol designed first and foremost objective is to improve energy efficiency and extend the network lifetime. This paper summarizes the WSN the concept, structure and characteristics of the WSN the key technical problems and network protocols; study of the WSN system and network routing protocol agreement the classification, analysis and parison of the current domestic and foreign scholars have proposed several representatives The routing of the agreement and its performance advantages and disadvantages; chosen the flooding focus on routing protocols, analysis of the routing algorithm to achieve the specific, the sensor nodes the limited scope of energy and transmission characteristics, a delay based on the Adaptive Flood routing algorithm, first of all through the nodes in the network source in the smaller routing, and routing the request to restore the text to create a routing, routing the process of establishing adaptive to determine the waiting time to make better Routing the request was transmitted by text, and then another source nodes along the path forward the establishment of good data on the larger text. MATLAB and use the network simulation tool for the overall routing protocol simulation, and the data were analyzed. The simulation shows that the new algorithm than Flooding energy-saving, can better overe Flooding algorithm message redundancy and high energy consumption, such as the insufficient.Keywords:WSN;flooding routing protocols;MATLAB Simulation目录1 绪论11.1 课题背景11.2 国内外技术研究现状21.3 课题研究的目的和意义32 WSN综述32.1 WSN的概念42.2 WSN的结构42.2.1 节点结构42.2.2 网络体系结构52.3 WSN协议栈62.4 WSN的拓扑结构72.5 WSN的特点102.6 WSN的关键性技术问题112.6.1 功耗问题122.6.2 节能策略122.6.3 通信问题142.6.4 网络安全问题152.6.5 定位问题152.6.6 数据管理152.6.7 服务质量162.6.8 嵌入式操作系统16173.1 WSN路由协议的分类方法173.2 几种典型路由协议的分析183.2.1 平面路由协议183.2.2 分层路由协议224Flooding路由协议的分析与研究274.1 泛洪算法模型274.2 算法流程图284.3 基于延迟的自适应洪泛路由算法294.3.1 算法中用到的报文和数据294.3.2 SFD算法描述304.3.3 性能比拟尺度314.3.4 理论分析325 Flooding路由协议的MATLAB仿真355.1 MATLAB仿真平台介绍355.2 算法仿真实验参数385.3 实验结果396结论41致谢42参考文献43附录A:英文原文44附录B:中文翻译51附录C:程序代码551 绪论1.1 课题背景无线传感器网络是新兴的下一代传感器网络,最早的代表性论述出现在1999年,题为“传感器走向无线时代〞。

无线传感器网络节能路由协议研究 仿真程序 毕设等

无线传感器网络节能路由协议研究 仿真程序 毕设等

clear;clear;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%%% w=4;%Field Dimensions - x and y maximum (in meters)100*100的区域xm = 100;ym = 100;%x and y Coordinates of the Sink sink节点的坐标sink.x =100;sink.y =200;%Number of Nodes in the field 总共200个节点n=50*w;%Optimal Election Probability of a node%to become cluster head 簇节点选择概率p=0.05;packetLength = 4000;%数据包长度ctrPacketLength = 100;%控制包长度%Energy Model (all values in Joules)%Initial Energy 初始能量Eo = 0.5;%Eelec=Etx=Erxenode0 = 0;ETX=50*0.000000001; %50nj/bitERX=50*0.000000001; %50nj/bit%Transmit Amplifier typesEfs=10*0.000000000001; %10pj/bit/m2Emp=0.0013*0.000000000001;%0.0013pj/bit/m4%Data Aggregation EnergyEDA=5*0.000000001; %5nj/bit/signal%Values for Hetereogeneity%Percentage of nodes than are advanced%m=1;%\alpha%a=1;INFINITY = 999999999999999;%maximum number of rounds 最大轮询次数rmax=3000;node_1=0;node_2=0;node_3=0;node_1_x=0;node_2_x=0;node_3_x=0;node_1_z=0;node_2_z=0;node_3_z=0;%%%%%%%%%%%%%%%%%%%%%%%%% END OF PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%Computation of do 一个距离的计算根据能量公式参考wendi的phd论文do=sqrt(Efs/Emp);%取平方根%Creation of the random Sensor Networkfor i=1:1:n%n=200 200个节点数设置节点位置及初始能量和状态S(i).xd=rand(1,1)*xm;%坐标x,rand(1,1)产生一个0,1之间的随机数s(i)表示的是数组XR(i)=S(i).xd;S(i).yd=rand(1,1)*ym;YR(i)=S(i).yd; %将随机产生的点S(i).G=0; %初始化的时候,没有簇头产生的个数集合%initially there are no cluster heads only nodesS(i).type='N';%普通节点%temp_rnd0 = i;%Random Election of Normal Nodes%if (temp_rnd0>=m*n+1)S(i).E=Eo; %每个节点的能量保持为0.05 该数组表示的是能量的存贮% S(i).ENERGY=0; %初始消耗的能量???未知ing% end%Random Election of Advanced Nodespriority(i) = randint(1,1,[1,3]);figure(1);plot(S(i).xd,S(i).yd,'+');hold on;endnode_1_x = node_1;node_2_x = node_2;node_3_x = node_3;S(n+1).xd=sink.x; %基站位置x坐标S(n+1).yd=sink.y; %基站位置y坐标%First Iteration%counter for CHs total簇头个数countCHs=0;%counter for CHs per round 每轮的簇头个数rcountCHs=0;cluster=1;rcountCHs=rcountCHs+countCHs;flag_first_dead_old=0;flag_first_dead=0;node_p1 = 0;node_p2 = 0;node_p3 = 0;node_p1_x = 0;node_p2_x = 0;node_p3_x = 0;for r=0:1:rmax %主循环,每次1轮r;ENOLD(r+1)=0;enode0=0;for i=1:1:n;ENOLD(r+1)=S(i).E+ENOLD(r+1);%第r轮所有节点的总能量endEAOLD(r+1)=ENOLD(r+1)/n; %这个是第r轮的平均能量%Operation for epochif(mod(r, round(1/p) )==0) %20的整数倍轮数时for i=1:1:nS(i).G=0;%还未当选簇头的节点集合,因为是要判断前1/p轮中是否有节点时簇节点S(i).cl=0;%plot(S(i).xd,S(i).yd,'*');%这是绘制节点位置endendhold off;%Number of dead nodes 每一轮开始的时候将该轮的统计参数清零dead=0;dead_old=0;%Number of dead Advanced Nodes%dead_a=0;%Number of dead Normal Nodesdead_n=0;dead_n_old=0;node_p1 = 0;node_p2 = 0;node_p3 = 0;%counter for bit transmitted to Bases Station and to Cluster Heads%counter for bit transmitted to Bases Station and to Cluster Heads%per round%figure(1);for i=1:1:n%checking if there is a dead nodeif S(i).E>0S(i).type='N';%如果节点能量大于0,则类型为正常endend%countCHs=0;cluster=1;for i=1:1:nif(S(i).E>0)temp_rand=rand;if ( (S(i).G)<=0) %如果该节点在候选集合中保证钱1/p轮没该节点不是簇节点%Election of Cluster Headsif( temp_rand <= (p/(1-p*mod(r,round(1/p))))) %判断一个节点的概率是否小于阈值countCHs = countCHs+1;%簇节点数加一S(i).type = 'C';%该节点的类型变为簇节点S(i).G = round(1/p)-1;%簇头节点的位置C(cluster).xd = S(i).xd;C(cluster).yd = S(i).yd;%plot(S(i).xd,S(i).yd,'k*');distance=sqrt( (S(i).xd-(S(n+1).xd) )^2 + (S(i).yd-(S(n+1).yd) )^2 );%到sink的距离,因为是簇节点所以直接到sink节点C(cluster).distance = distance;C(cluster).id = i;%表示第i个节点时簇节点X(cluster)=S(i).xd;Y(cluster)=S(i).yd;cluster=cluster+1;%广播自成为簇头distanceBroad = 50;%sqrt((S(i).xd)^2+(S(i).yd)^2);???????????????广播包的距离是50%%%需要判断所剩的能量是否足以发送if(S(i).E>=( ETX * ctrPacketLength + Emp* ctrPacketLength*( distanceBroad*distanceBroad*distanceBroad*distanceBroad )) || S(i).E>=( ETX * ctrPacketLength + Emp* ctrPacketLength*( distanceBroad*distanceBroad)))if(distanceBroad > do)%大于极限距离就是4次方,小于则是2次方发送控制比特也就是广播包,广播给其他节点,不是给sinkS(i).E = S(i).E- ( ETX * ctrPacketLength + Emp* ctrPacketLength*( distanceBroad*distanceBroad*distanceBroad*distanceBroad ));%广播自成为簇头elseS(i).E = S(i).E- ( ETX * ctrPacketLength + Efs * ctrPacketLength*( distanceBroad*distanceBroad));endelseS(i).E = 0;endif(S(i).E >= ( (ETX+EDA)*(packetLength) + Emp * packetLength*( distance*distance*distance*distance )) || S(i).E >= ( (ETX+EDA)*(packetLength) + Emp * packetLength*( distance*distance )))%Calculation of Energy dissipated 簇头自己发送数据包能量消耗distance;%这是到sink节点的距离if (distance > do)%发送数据到sink节点所剩的能量S(i).E = S(i).E- ( (ETX+EDA)*(packetLength) + Emp *packetLength*( distance*distance*distance*distance ));elseS(i).E = S(i).E- ( (ETX+EDA)*(packetLength) + Efs * packetLength*( distance * distance ));endelseS(i).E = 0;endendendendendSTATISTICSOLD(r+1).CLUSTERHEADS = cluster-1;%统计第r轮簇头数目,r是从0开始的,所以加1;cluster最后要-1,是应为上面的循环多加了1CLUSTERHSOLD(r+1)= cluster-1;%Election of Associated Cluster Head for Normal Nodesfor i=1:1:nif ( S(i).type=='N' && S(i).E>0 ) %普通节点min_dis = sqrt( (S(i).xd-S(n+1).xd)^2 + (S(i).yd-S(n+1).yd)^2 );%默认距离是到sink 的距离%min_dis = INFINITY;if(cluster -1 >= 1)%如果有簇头存在min_dis_cluster = 1;%加入最近的簇头for c = 1:1:cluster - 1 %簇头数量一共是cluster - 1%temp = min(min_dis,sqrt( (S(i).xd - C(c).xd)^2 + (S(i).yd - C(c).yd)^2 ) );temp = sqrt( (S(i).xd - C(c).xd)^2 + (S(i).yd - C(c).yd)^2 ); %判断到已有簇节点的距离if ( temp < min_dis )min_dis = temp;min_dis_cluster = c; %标记簇节点标号(节点所属的簇节点)通过循环找到到簇节点距离最小的簇节点end%接收簇头发来的广播的消耗S(i).E = S(i).E - ETX * ctrPacketLength;endenergy_1 = ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis * min_dis * min_dis * min_dis) + ETX*(packetLength) + Emp*packetLength*( min_dis * min_dis * min_dis * min_dis);energy_2 = ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis * min_dis ) + ETX*(packetLength) + Emp*packetLength*( min_dis * min_dis);%Energy dissipated by associated Cluster Head普通节点发送数据包到簇头消耗,和加入消息%min_dis;if(S(i).E >= energy_1+ETX*(ctrPacketLength) || S(i).E >= energy_1+ETX*(ctrPacketLength))if(min_dis > do)%每个节点需要发送一个回应加入群的包和传输数据包的能量S(i).E = S(i).E - ( ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis * min_dis * min_dis * min_dis)); %向簇头发送加入控制消息S(i).E = S(i).E - ( ETX*(packetLength) + Emp*packetLength*( min_dis * min_dis * min_dis * min_dis)); %向簇头数据包elseS(i).E = S(i).E - ( ETX*(ctrPacketLength) + Efs*ctrPacketLength*( min_dis * min_dis)); %向簇头发送加入控制消息S(i).E = S(i).E - ( ETX*(packetLength) + Efs*packetLength*( min_dis * min_dis)); %向簇头数据包endS(i).E = S(i).E - ETX*(ctrPacketLength); %接收簇头确认加入控制消息elseS(i).E = 0;end%Energy dissipated %簇头接收簇成员数据包消耗能量,接收加入消息和和确认加入消息if(min_dis > 0)%这就是簇节点接收加入信息和数据的能量if(S(i).E >= (ERX + EDA)*packetLength + ERX *ctrPacketLength)S(C(min_dis_cluster).id).E = S(C(min_dis_cluster).id).E - ( (ERX + EDA)*packetLength ); %接受簇成员发来的数据包S(C(min_dis_cluster).id).E = S(C(min_dis_cluster).id).E - ERX *ctrPacketLength ; %接收加入消息if (min_dis > do)%簇头向簇成员发送确认加入的消息S(C(min_dis_cluster).id).E = S(C(min_dis_cluster).id).E - ( ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis * min_dis * min_dis * min_dis));elseS(C(min_dis_cluster).id).E = S(C(min_dis_cluster).id).E - ( ETX*(ctrPacketLength) + Efs * ctrPacketLength*( min_dis * min_dis));endelseS(i).E = 0;endPACKETS_TO_CH(r+1) = n - dead - cluster + 1; %所有的非死亡的普通节点都发送数据包endS(i).min_dis = min_dis;S(i).min_dis_cluster = min_dis_cluster;%i 节点所属的簇节点号%endelse%S(i).E = S(i).E - ETX*(packetLength); %向簇头数据包if(S(i).E >= ETX*(packetLength))S(i).E = S(i).E - ETX*(packetLength); %向簇头数据包elseS(i).E = 0;endendendendfor i=1:1:n%checking if there is a dead nodeif (S(i).E<=0) %如果能量小于0,则死亡节点数加一dead_old=dead_old+1;%统计死亡节点的数量统计的是一轮的数量S(i).E=0;endendSTATISTICSOLD(r+1).DEAD=dead_old;%将统计的该轮死亡节点的数量赋值给总的轮数中死亡节点的数组r+1的原因是数组是从0开始定义的DEADOLD(r+1)=dead_old;if (dead_old==1)if(flag_first_dead_old==0)first_dead_old=r %第一个死亡节点的轮数恢复成数组0开始的形式flag_first_dead_old=1;endenddead_old = 0;%hold on;countCHs;rcountCHs = rcountCHs + countCHs;%对所有轮簇节点的统计和endfor i=1:rmax;yold(i) = n - STATISTICSOLD(i).DEAD;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%%%enode0_x = 0;for i=1:1:n%n=200 200个节点数设置节点位置及初始能量和状态%S(i).xd=rand(1,1)*xm;%坐标x,rand(1,1)产生一个0,1之间的随机数s(i)表示的是数组XR_x(i)=S(i).xd;% S(i).yd=rand(1,1)*ym;YR_x(i)=S(i).yd; %将随机产生的点S(i).G_x=0; %初始化的时候,没有簇头产生的个数集合%initially there are no cluster_x heads only nodesS(i).type_x='N';%普通节点%temp_rnd0 = i;%Random Election of Normal Nodes%if (temp_rnd0>=m*n+1)S(i).E_x=Eo; %每个节点的能量保持为0.05 该数组表示的是能量的存贮endS(n+1).xd=sink.x; %基站位置x坐标S(n+1).yd=sink.y; %基站位置y坐标%First Iteration%figure(1);%counter for CHs total簇头个数countCHs_x=0;%counter for CHs per round 每轮的簇头个数rcountCHs_x=0;cluster_x=1;rcountCHs_x=rcountCHs_x+countCHs_x;flag_first_dead_old_x=0;flag_first_dead_x=0;dis_min = 100;dis_max = 0;for i=1:1:ndis_bs(i) = sqrt( (S(i).xd-(S(n+1).xd) )^2 + (S(i).yd-(S(n+1).yd) )^2 );if(dis_bs(i) < dis_min )dis_min = dis_bs(i);endif(dis_bs(i) > dis_max)dis_max = dis_bs(i);endfor r=0:1:rmax %主循环,每次1轮r;ENOLD_x(r+1)=0;enode0_x=0;for i=1:1:n;ENOLD_x(r+1)=S(i).E_x+ENOLD_x(r+1);%第r轮所有节点的总能量endEAOLD_x(r+1)=ENOLD_x(r+1)/n; %这个是第r轮的平均能量%Operation for epochif(mod(r, round(1/p) )==0) %20的整数倍轮数时for i=1:1:nS(i).G_x=0;%还未当选簇头的节点集合,因为是要判断前1/p轮中是否有节点时簇节点S(i).cl=0;endendhold off;%Number of dead_x nodes 每一轮开始的时候将该轮的统计参数清零dead_x=0;dead_old_x=0;%Number of dead_x Advanced Nodes%dead_a=0;%Number of dead_x Normal Nodesdead_n_x=0;dead_n_old_x=0;%figure(1);for i=1:1:nif S(i).E_x>0S(i).type_x='N';%如果节点能量大于0,则类型为正常endendemax = 0;for i=1:1:nif(i == 1)sum = S(i).E_x;elsesum = sum + S(i-1).E_x;sum = S(i).E_x+sum;endif(S(i).E_x > emax)emax = S(i).E_x;elseemax = emax;endend%countCHs_x=0;cluster_x=1;if(S(i).E_x>0)temp_rand=rand;if ( (S(i).G_x)<=0) %如果该节点在候选集合中保证钱1/p轮没该节点不是簇节点if( temp_rand <= ((p/(1-p*mod(r,round(1/p))))*(0.99*(dis_max-dis_bs(i))/(dis_max) + 0.01*(S(i).E_x)/0.5)))countCHs_x = countCHs_x+1;%簇节点数加一S(i).type_x = 'C';%该节点的类型变为簇节点S(i).G_x = round(1/p)-1;%簇头节点的位置C_x(cluster_x).xd = S(i).xd;C_x(cluster_x).yd = S(i).yd;%plot(S(i).xd,S(i).yd,'k*');distance=sqrt( (S(i).xd-(S(n+1).xd) )^2 + (S(i).yd-(S(n+1).yd) )^2 );%到sink的距离,因为是簇节点所以直接到sink节点C_x(cluster_x).distance = distance;C_x(cluster_x).id = i;%表示第i个节点时簇节点X_x(cluster_x)=S(i).xd;Y_x(cluster_x)=S(i).yd;cluster_x=cluster_x+1;%广播自成为簇头distanceBroad = 50;%sqrt((S(i).xd)^2+(S(i).yd)^2);???????????????广播包的距离是50%%%需要判断所剩的能量是否足以发送if(S(i).E_x >= ETX * ctrPacketLength + Emp* ctrPacketLength*( distanceBroad*distanceBroad*distanceBroad*distanceBroad) || S(i).E_x >=ETX * ctrPacketLength + Emp* ctrPacketLength*( distanceBroad*distanceBroad))if(distanceBroad > do)%大于极限距离就是4次方,小于则是2次方发送控制比特也就是广播包,广播给其他节点,不是给sinkS(i).E_x = S(i).E_x- ( ETX * ctrPacketLength + Emp* ctrPacketLength*( distanceBroad*distanceBroad*distanceBroad*distanceBroad ));%广播自成为簇头elseS(i).E_x = S(i).E_x- ( ETX * ctrPacketLength + Efs * ctrPacketLength*( distanceBroad*distanceBroad));endelseS(i).E_x =0;end%Calculation of Energy dissipated 簇头自己发送数据包能量消耗distance;%这是到sink节点的距离if(S(i).E_x >= (ETX+EDA)*(packetLength) + Emp * packetLength*( distance*distance*distance*distance ) || S(i).E_x >= (ETX+EDA)*(packetLength) + Efs * packetLength*( distance * distance ))if (distance > do)%发送数据到sink节点所剩的能量S(i).E_x = S(i).E_x- ( (ETX+EDA)*(packetLength) + Emp * packetLength*( distance*distance*distance*distance ));elseS(i).E_x = S(i).E_x- ( (ETX+EDA)*(packetLength) + Efs * packetLength*( distance * distance ));endelseS(i).E_x = 0;endendendendendSTATISTICSOLD_x(r+1).CLUSTERHEADS = cluster_x-1;%统计第r轮簇头数目,r是从0开始的,所以加1;cluster最后要-1,是应为上面的循环多加了1CLUSTERHSOLD_x(r+1)= cluster_x-1;%Election of Associated Cluster Head for Normal Nodesfor i=1:1:nif ( S(i).type_x=='N' && S(i).E_x>0 ) %普通节点min_dis_x = sqrt( (S(i).xd-S(n+1).xd)^2 + (S(i).yd-S(n+1).yd)^2 );%默认距离是到sink的距离%min_dis_x = INFINITY;if(cluster_x -1 >= 1)%如果有簇头存在min_dis_cluster = 1;%加入最近的簇头for c = 1:1:cluster_x - 1 %簇头数量一共是cluster - 1%temp = min(min_dis_x,sqrt( (S(i).xd - C_x(c).xd)^2 + (S(i).yd - C_x(c).yd)^2 ) );temp = sqrt( (S(i).xd - C_x(c).xd)^2 + (S(i).yd - C_x(c).yd)^2 ); %判断到已有簇节点的距离if ( temp < min_dis_x )min_dis_x = temp;min_dis_cluster = c; %标记簇节点标号(节点所属的簇节点)通过循环找到到簇节点距离最小的簇节点end%接收簇头发来的广播的消耗S(i).E_x = S(i).E_x - ETX * ctrPacketLength;end%Energy dissipated by associated Cluster Head普通节点发送数据包到簇头消耗,和加入消息min_dis_x;energy_1x = ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis_x * min_dis_x * min_dis_x * min_dis_x) + ETX*(packetLength) + Emp*packetLength*( min_dis_x * min_dis_x * min_dis_x * min_dis_x);energy_2x = ETX*(ctrPacketLength) + Efs*ctrPacketLength*( min_dis_x * min_dis_x) + ETX*(packetLength) + ETX*(packetLength) + Efs*packetLength*( min_dis_x * min_dis_x);if(S(i).E_x >= energy_1x + ETX*(ctrPacketLength) || S(i).E_x >= energy_2x + ETX*(ctrPacketLength))if(min_dis_x > do)%每个节点需要发送一个回应加入群的包和传输数据包的能量S(i).E_x = S(i).E_x - ( ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis_x * min_dis_x * min_dis_x * min_dis_x)); %向簇头发送加入控制消息S(i).E_x = S(i).E_x - ( ETX*(packetLength) + Emp*packetLength*( min_dis_x * min_dis_x * min_dis_x * min_dis_x)); %向簇头数据包elseS(i).E_x = S(i).E_x - ( ETX*(ctrPacketLength) + Efs*ctrPacketLength*( min_dis_x * min_dis_x)); %向簇头发送加入控制消息S(i).E_x = S(i).E_x - ( ETX*(packetLength) + Efs*packetLength*( min_dis_x * min_dis_x)); %向簇头数据包endS(i).E_x = S(i).E_x - ETX*(ctrPacketLength); %接收簇头确认加入控制消息elseS(i).E_x = 0;endenergy_3x = (ERX + EDA)*packetLength + ERX *ctrPacketLength + ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis_x * min_dis_x * min_dis_x * min_dis_x);energy_4x = (ERX + EDA)*packetLength + ERX *ctrPacketLength +ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis_x * min_dis_x);if(S(C_x(min_dis_cluster).id).E_x >= energy_3x || S(C_x(min_dis_cluster).id).E_x >= energy_4x)%Energy dissipated %簇头接收簇成员数据包消耗能量,接收加入消息和和确认加入消息if(min_dis_x > 0)%这就是簇节点接收加入信息和数据的能量S(C_x(min_dis_cluster).id).E_x = S(C_x(min_dis_cluster).id).E_x - ( (ERX + EDA)*packetLength ); %接受簇成员发来的数据包S(C_x(min_dis_cluster).id).E_x = S(C_x(min_dis_cluster).id).E_x - ERX *ctrPacketLength ; %接收加入消息if (min_dis_x > do)%簇头向簇成员发送确认加入的消息S(C_x(min_dis_cluster).id).E_x = S(C_x(min_dis_cluster).id).E_x - ( ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis_x * min_dis_x * min_dis_x * min_dis_x));elseS(C_x(min_dis_cluster).id).E_x = S(C_x(min_dis_cluster).id).E_x - ( ETX*(ctrPacketLength) + Efs * ctrPacketLength*( min_dis_x * min_dis_x));endPACKETS_TO_CH(r+1) = n - dead_x - cluster_x + 1; %所有的非死亡的普通节点都发送数据包endelseS(C_x(min_dis_cluster).id).E_x = 0;endS(i).min_dis_x = min_dis_x;S(i).min_dis_cluster = min_dis_cluster;%i 节点所属的簇节点号% endelseif(S(i).E_x >= ETX*(packetLength))S(i).E_x = S(i).E_x - ETX*(packetLength); %向簇头数据包elseS(i).E_x = 0;endendendendfor i=1:1:n%checking if there is a dead_x nodeif (S(i).E_x<=0) %如果能量小于0,则死亡节点数加一dead_old_x=dead_old_x+1;%统计死亡节点的数量统计的是一轮的数量S(i).E_x=0;endendSTATISTICSOLD_x(r+1).DEAD=dead_old_x;%将统计的该轮死亡节点的数量赋值给总的轮数中死亡节点的数组r+1的原因是数组是从0开始定义的DEADOLD_x(r+1)=dead_old_x;if (dead_old_x==1)if(flag_first_dead_old_x==0)first_dead_old_x=r %第一个死亡节点的轮数恢复成数组0开始的形式flag_first_dead_old_x=1;endenddead_old_x = 0;%hold on;countCHs_x;rcountCHs_x = rcountCHs_x + countCHs_x;%对所有轮簇节点的统计和endfor i=1:rmax;yold_x(i) = n - STATISTICSOLD_x(i).DEAD; endfigure(3);plot(1:r+1,EAOLD,'--r');axis([0,2500,0,0.5]);title('节点剩余平均能量n=200时');xlabel('轮数0\leq\itX\rm\leq2000');ylabel('焦耳0\leq\itY\rm\leq0.5');%h=legend('leach',1);hold on;figure(4);plot(1:r,yold,'--r');axis([0,2500,0,n]);title('节点存活数目n=200时');xlabel('轮数0\leq\itX\rm\leq2000');ylabel('节点数目0\leq\itY\rm\leq100');%h=legend('leach',1);hold on;figure(3);plot(1:r+1,EAOLD_x,'--b');axis([0,2500,0,0.5]);title('节点剩余平均能量n=200时'); xlabel('轮数0\leq\itX\rm\leq2000'); ylabel('焦耳0\leq\itY\rm\leq0.5');%h=legend('leach','leachnew',1);hold on;figure(4);plot(1:r,yold_x,'--b');axis([0,2500,0,n]);title('节点存活数目n=200时');xlabel('轮数0\leq\itX\rm\leq2000'); ylabel('节点数目0\leq\itY\rm\leq100'); %h=legend('leach','leachnew',1);hold on;。

无线传感器网络安全路由协议研究与仿真的开题报告

无线传感器网络安全路由协议研究与仿真的开题报告

无线传感器网络安全路由协议研究与仿真的开题报告一、选题的背景与意义随着无线传感器技术的不断发展,无线传感器网络(WSN)在军事、医疗、环境监测等领域已得到了广泛的应用。

同时,WSN也面临着一系列的安全问题,因此,安全成为WSN必不可少的一部分。

在WSN中,路由协议是数据传输的重要部分,因此,研究WSN安全路由协议有着重要的意义。

本选题希望通过对WSN安全路由协议进行研究和仿真,探究如何保障WSN的传输安全,提高WSN的稳定性、可靠性和安全性。

二、选题的研究内容和目标研究内容:1.分析WSN现有的安全路由协议及其优缺点;2.研究现有的攻击方法,并分析对WSN的影响;3.提出针对WSN的安全路由协议;4.使用仿真平台对分析的安全路由协议进行验证。

研究目标:1.探究提高WSN传输安全的方法,并设计出相应的安全路由协议;2.通过仿真平台验证安全路由协议的有效性;3.提高WSN的稳定性、可靠性和安全性。

三、研究方法和计划研究方法:本选题将采用文献分析、实验仿真等方法,具体如下:1.通过查阅大量文献资料,了解WSN安全路由协议的研究现状和发展趋势;2.分析WSN中常见的攻击方法,探究攻击手段并收集相关数据;3.对WSN中现有的安全路由协议进行对比分析,并提出改进的措施;4.设计针对WSN的安全路由协议,并进行仿真实验验证。

研究计划:第一年:1.查阅大量文献资料,了解WSN的传输安全现状和安全路由协议发展状况;2.分析WSN中的攻击方法——网络嗅探、数据篡改和拒绝服务攻击等,并收集相关数据;3.研究WSN中现有的安全路由协议,分析其优缺点并提出改进措施;第二年:1.设计新的WSN安全路由协议;2.基于NS3仿真平台,进行系统仿真,并评估新的安全路由协议的性能;3.对比新协议与现有协议的性能,验证新协议的有效性;第三年:1.对于新协议出现的问题进行改进和实验;2.对新协议的实际应用进行研究和实验。

四、选题的现状与贡献目前,WSN的安全路由协议在学术界和工业界都受到了广泛的关注。

无线传感器网络论文:无线传感器网络路由协议TEEN仿真

无线传感器网络论文:无线传感器网络路由协议TEEN仿真

无线传感器网络论文:无线传感器网络路由协议 TEEN 仿真【中文摘要】无线传感器网络由于传感器节点存储能力、计算能力以及能量有限,设计适合无线传感器网络的高效路由协议成为关键技术之一。

本文改进了响应型层次路由协议TEEN,将平面路由协议中的多跳路由以及使用代理消息生成数据转发路径的设计思想融入其中,提出了响应型层次路由协议Ⅰ-TEEN。

与TEEN相比,Ⅰ-TEEN在网络生存时间、网络能耗方而性能有所提高,适合大规模无线传感器网络应用,实时性有所降低。

本文首先介绍了无线传感器网络的概念以及国内外研究现状,简单介绍了网络的体系结构,分析比较了现有的路由协议,重点以TEEN协议为研究对象,提出了改进策略。

本文主要做了以下工作:首先,分析了TEEN协议中需要改进的地方,簇头选举方式不够合理,簇内节点与簇头节点以及簇头节点与sink节点单跳通信限制了网络规模。

其次,在原有算法的基础上提出了两点改进策略,是在簇头选举阶段,采用新的阈值计算公式,平衡网络负载;二是簇内节点与簇头通信采用多跳路由,簇头节点与sink节点通信也采用多跳路由,路径选择借鉴谣传路由的路径形成方式,使用代理消息生成数据转发路径。

最后,在理论上分析了改进方案的可行性。

使用OPNET Modeler对改进协议进行仿真,通过仿真结果比较了TEEN协议与改进后协议在网络生存周期、系统能耗方面的差异,改进后的协议性能有所提高。

最后分析了改进方案的不足之处,指出了以后的研究方向。

【英文摘要】Because the sensor nodes’storage capacity,computing capacity and energy are limited in Wireless Sensor Networks, the design of efficient routing protocols for Wireless Sensor Networks become the key technologies. In this paper, the protocol TEEN is improved, and a new protocol I-TEEN is proposed using multi-hop and agency message to form a routing. Compared with the TEEN, I-TEEN extend network lifetime, reducing energy consumption for large-scale Wireless Sensor Networks application.In this paper the concept of Wireless Sensor Networks, the WSN’s architecture and its research situation are introduced. The analysis and comparison of the existing routing protocols for WSN are also done. An improved strategy is proposed based on TEEN protocol. In this paper, the following works is done:first, analysis of the TEEN protocol that needed to improve. The cluster head election is not reasonable. The network size is limited because of thesingle-hop communications between nodes and cluster head nodes. Second, two improvements are proposed based on the TEEN algorithm. One improvement is that in the election of cluster heads, a new threshold formula is used to get the balance of network load. The other one is that the nodes communicate with cluster heads using the multi-hop routing, and the communication among the cluster head nodes and sink node usemulti-hop routing. The formation of routing path is similarwith Rumor Routing. Finally, analysis of the improvement isdone in theory. The new protocol is simulated using the OPNET Modeler. Through the simulation results the improved protocolis compared with TEEN in network life and energy consumption.The new protocol’s performance has improved. Finally, the shortcoming of the new protocol and its future researchdirection are pointed out.【关键词】无线传感器网络路由协议 TEEN 仿真【采买全文】1.3.9.9.38.8.4.8 1.3.8.1.13.7.2.1 同时提供论文写作一对一辅导和论文发表服务.保过包发.【说明】本文仅为中国学术文献总库合作提供,无涉版权。

无线传感器网络仿真模拟技术

无线传感器网络仿真模拟技术
OMNeT++[4]是一个基于 C++ 的面向对象的模块 化离散事件仿真工具, 主要面向 OSI 模型, 用于模拟 计 算 机 网 络 通 信 协 议 、多 处 理 器 、排 队 网 络 、分 布 式 系统及并行系统, 应用领域包括移动 / 无线到 ATM 和光网络的仿真, 从硬件仿真到排队系统, 可以仿真 执行上千个节点, 主要目标是提供可灵活配置仿真 的组件体系。仿真环境采用自定义的拓扑描述语言 NED 定义模型结构, 用 C++ 语言描述并发进程模型
目前, 应用于无线传感器网络的仿真模拟工具 主要有 NS- 2、OPNET、OMNeT++ 等, 本文重点介绍
了当前使用较广泛的 5 种仿真模拟工具, 主要就其 性能、特点、适用范围和不足进行了分析, 并对无线 传感器网络仿真模拟技术要解决的主要问题进行了 归纳。
1 无线传感器网络常用仿真模拟工具
WSN 仿 真 模 拟 工 具 试 图 以 更 加 经 济 高 效 的 方 式, 对无线传感器网络的网络协议、操作系统、节点 间的数据处理细节、干扰和噪声引起的相互作用进 行分析, 以提高传感器节点实际投入运行的稳定性。 1.1 NS - 2
但是, NS- 2 并不适用于所有的无线传感器网络 的模拟研究。无线传感器网络中含有大量的传感器 节点, 每个节点有各自不同的任务和目标, 节点间通 常 要 完 成 依 赖 于 时 间 的 数 据 采 集 、融 合 、协 同 控 制 及 传输等任务。无线传感器网络中没有严格的层次关 系, 应用层与网络层之间经常相互影响, 如节点发送 能量的动态调整等。NS- 2 组件的可重用性和代码复 用性差, 节点结构不灵活, 发现和修改 bug 所花费的 时间较长。另外 NS- 2 的复杂性一直是其广泛应用的
网络与应用

无线传感器网络路由协议的仿真研究的开题报告

无线传感器网络路由协议的仿真研究的开题报告

无线传感器网络路由协议的仿真研究的开题报告一、选题背景近年来,无线传感器网络 (Wireless Sensor Network, WSN) 技术逐渐得到广泛的应用。

无线传感器网络由众多无线传感器节点组成,节点间通过无线通信进行数据传输和协调。

在无线传感器网络中,数据传输以小数据量、低速率、低功耗和低成本为主,因此,传统的网络协议难以适应此类场景。

所以,针对无线传感器网络设计适宜的路由协议是至关重要的。

典型的无线传感器网络中,节点数量较多,节点的能量资源有限。

同时,无线传感器节点所处的环境也比较复杂,涉及到信号衰减、干扰等问题。

因此,无线传感器网络路由协议设计需要兼顾能量消耗、数据传输成功率、网络拓扑稳定性等因素。

二、研究目的和内容本研究的目的是对无线传感器网络常用的路由协议进行仿真研究,分析各种协议在不同场景下的性能表现。

具体研究内容包括:1. 研究无线传感器网络中常用的路由协议,包括基于距离向量的协议 (Distance Vector-based Protocol)、基于链路状态的协议 (Link State-based Protocol)、基于均衡的协议 (Equalization-based Protocol) 等。

2. 对于上述协议进行仿真研究,分析不同网络场景下的性能表现,包括节点能耗、网络吞吐量、时延、丢包率等。

3. 针对仿真结果,对于各种路由协议作出评价,并提出相应的改进方法,以期提高网络性能和能源利用率。

三、研究方法本研究采用仿真方法进行研究。

具体操作流程如下:1. 确定选用的路由协议,并根据协议的具体要求编写仿真代码。

2. 构建仿真环境,包括生成部分随机网络拓扑和仿真数据流。

3. 运行仿真程序,模拟无线传感器网络中节点的行为,记录仿真结果。

4. 对仿真结果进行数据分析、处理,并进行可视化表示。

5. 利用经验分析和统计分析来评估和比较仿真结果。

四、研究意义无线传感器网络是目前一个热门的领域,研究无线传感器网络的路由协议对于提高网络性能至关重要。

传感器网络组网课程设计基于contiki平台的路由协议仿真

传感器网络组网课程设计基于contiki平台的路由协议仿真

评定成绩:课程设计报告(传感器网络组网)设计题目:基于contiki平台的路由协议及仿真学院名称:自动化学院学生姓名:专业:班级:学号:指导教师:填表时间:2016 年 5 月重庆邮电大学本科课程设计报告摘要摘要路由协议执行网络拓扑描述、路由选择和数据包转发的功能,影响整个网络的性能和存活时间。

现有的路由协议需要发送大量数据包维护网络拓扑,以及大量的存储空间来存储路由条目。

由于硬件的限制,无线传感器无论是能量还是处理能力,存储能力都受到了极大的限制。

因此,IETF ROLL工作组提出了一种针对低功耗有损网络的IPV6路由协议,即RPL路由协议。

文中对RPL路由协议的拓扑构建过程进行分析,并通过利用cooja仿真工具进行仿真,在仿真中显示出DODAG的构建过程,并对进行仿真出来的各种拓扑结构进行能耗的分析,在仿真过程中直观地显示涓流机制。

关键字:IPV6 RPL路由协议仿真能耗分析目录摘要 (I)第一章绪论 (1)1.1 设计题目: (1)1.2 设计任务: (1)1.3 设计要求: (1)1.4 参考资料: (1)第二章总体方案设计(或系统建模) (2)2.1 RPL概述 (2)2.1.1DODAG的构建过程 (2)2.1.2 环路避免的机制 (2)2.1.3涓流机制 (3)2.2 基于Contiki平台的RPL路由协议仿真 (3)第三章个人设计工作(或系统仿真分析) (5)3.1DODAG图构建分析 (5)3.2能耗的分析 (6)3.3涓流机制 (8)3.4其他参数修改: (8)第四章设计总结 (9)参考文献 (10)附录 (11)第一章绪论1.1 设计题目:基于Contiki平台的传感网路由协议设计与仿真1.2 设计任务:基于Contiki操作系统和Cooja仿真器,运用所学的无线传感网知识,选择一种典型的传感网路由协议进行组网设计和仿真。

路由协议可在AODV、RPL、RIME 等协议中任选一种,也可选择其它典型的传感网路由协议。

基于NS2的无线传感器网络软件仿真实验

基于NS2的无线传感器网络软件仿真实验

中南大学信息科学与工程学院《无线传感器网络》课程设计题目名称:基于NS2的无线传感器网络软件仿真实验姓名:董嘉伟学号:03专业:物联网工程1002班组员:裘铖、施国豪指导教师:何小贤时间:2013、07、11目录●课程设计目的●课程设计内容●课程设计实验原理⏹WSN路由协议⏹WSN MAC层协议⏹修改的路由协议●课程设计小组分工●课程设计实验流程●课程设计实验结果分析●课程设计心得体会●课程设计总结●参考文献●源代码一、课程设计目的无线传感器网络是物联网的基本组成部分,是物联网用来感知和识别周围环境的信息生成和采集系统,传感器网络对信息处理来说如同人体的感觉突触一样重要。

为了方便感知和部署并提高网络的可扩展性,传感器网络一般采用无线通信方式,从而形成了节点之间可自组织拓扑结构的无线传感器网络。

本课程设计的目的综合应用学生所学知识,建立系统和完整的传感器网络概念,理解和巩固无线传感器网络基本理论、原理和方法,掌握无线传感器网络开发的基本技能。

二、课程设计内容软件仿真实验。

要求使用相关软件仿真一个无线传感器网络,要求如下:●自行参考相关资料,成功安装NS2(或OPNET也可以);●利用NS2自带的范例,构建一个100个节点的无线传感器网络,能够成功运行;最好能有界面显示;●利用利用NS2自带的范例或其它已有脚本,仿真上述无线传感器网络一种路由协议(例如一种多播路由协议);●利用利用NS2自带的范例或其它已有脚本,仿真上述无线传感器网络采用一种MAC协议;●修改或自行编写一个简单路由协议或MAC协议,并进行仿真运行。

三、课程设计实验原理a)WSN路由协议传统计算机网络对路由协议要求如下:正确性,健壮性,稳定性,公平性,最优性。

除此之外,无线传感器网络对路由协议更注重以下特殊要求:能源有效性,简单性,多路性。

无线传感器网络是以数据为中心(Data Centric)进行路由的,不同于传统Ad hoc网络以地址为中心(Address Centric)进行路由的模式。

无线传感器网络中的路由协议设计与优化

无线传感器网络中的路由协议设计与优化

无线传感器网络中的路由协议设计与优化无线传感器网络是目前快速发展的一种新型网络,它是由大量的小型传感器设备组成的网络。

这些传感器设备主要用于数据的采集和传输,它们能够自我组织形成网络,实现数据的分发。

无线传感器网络的特点是可以部署在环境恶劣、地形复杂甚至是危险的区域中,使得数据采集和分发可以高效地完成。

然而,无线传感器网络中的设备数量庞大,因此,设计一种高效的路由协议非常重要。

一、无线传感器网络中的路由协议路由协议是一种在网络中帮助数据包找到通信路径的协议,也是无线传感器网络中最关键的一部分。

路由协议的设计是为了保证传输数据的有效性和可靠性。

1. 层次路由协议一种流行的无线传感器网络路由协议是层次路由协议。

此协议引入了一个名为“簇”的新概念,其中一个节点被称为“簇头(Cluster Head)”,它被选举出来,在簇中负责聚合和转发数据。

此外,还有一个名为“基站(Base Station)”的节点,它被用来进行数据的聚集和路由,最终将数据传送到用户。

这种层次路由协议将传感器网络分为不同的层级。

在这个层次结构中,泛洪(Flooding)和多跳(Multi-Hop)传输大量的数据是一种浪费网络资源的行为。

因此,层次路由协议将数据的处理和转发局限在自组织的小范围内,从而减少网络资源的浪费。

2. 贪婪式路由协议贪婪式路由协议(Greedy Routing Protocol)是一种适用于小型无线传感器网络的协议。

贪婪式路由协议使用最短路径算法,并选择距离目标节点最近的节点作为路由节点,因此可以实现能耗低、跨度小、时延小的优点。

贪婪式路由协议需要使所有节点知道自己周围的拓扑结构和位置信息。

这些信息可以通过广播方式传达给整个网络。

此协议存在的一个主要问题是当节点位置发生变化时,路由算法有可能失效。

二、路由协议设计与优化下面介绍一些进行路由协议设计与优化的一些技术。

1. 多路徑路由技术在无线传感器网络中,很多节点被安装在环境比较恶劣的地方,因此网络中的连接质量能够受到许多因素的影响。

无线传感器网络各类路由协议仿真

无线传感器网络各类路由协议仿真

实验报告课程无线传感网络各类路由协议仿真1.实验目的网络数据传输离不开路由协议,路由协议是其组网的基础,路由协议是无线传感器网络研究的重点之一,其主要的设计目标是降低节点能量消耗,延长网络的生命周期。

本次实验将仿真各类无线传感器网络路由协议。

2.实验要求争取考虑全面,考虑到各因素对各类协议的影响,以提高无线传感网络的性能。

3.设计思想(1)Flooding泛洪是一种传统的路由技术,不要求维护网络的拓扑结构,并进行路由计算,接收到消息的节点以广播形式转发分组。

对于自组织的传感器网络,泛洪路由是一种较直接的实现方法,但消息的“内爆”(implosion)和“重叠”(overlap)是其固有的缺陷。

为了克服这些缺陷,S.hedetniemi等人提出了Gossiping策略,节点随机选取一个相邻节点转发它接收到的分组,而不是采用广播形式。

这种方法避免了消息的“内爆”现象,但有可能增加端到端的传输延时。

Flooding路由协议中的内爆和重叠问题(2)SPIN (sensor protocol for information via negotiation)SPIN是以数据为中心的自适应路由协议,通过协商机制来解决泛洪算法中的“内爆”和“重叠”问题。

传感器节点仅广播采集数据的描述信息,当有相应的请求时,才有目的地发送数据信息。

SPIN协议中有3种类型的消息,即ADV,REQ 和DATA。

ADV—用于新数据广播。

当一个节点有数据可共享时,它以广播方式向外发送DATA数据包中的元数据。

REQ—用于请求发送数据。

当一个节点希望接收DATA数据包时,发送REQ数据包。

DATA—包含附上元数据头(meta一header)的实际数据包。

SPIN协议有4种不同的形式:• SPIN-PP:采用点到点的通信模式,并假定两节点间的通信不受其他节点的干扰,分组不会丢失,功率没有任何限制。

要发送数据的节点通过ADV向它的相邻节点广播消息,感兴趣的节点通过REQ发送请求,数据源向请求者发送数据。

无线传感器网络各类路由协议仿真

无线传感器网络各类路由协议仿真

实验报告课程无线传感网络各类路由协议仿真1.实验目的网络数据传输离不开路由协议,路由协议是其组网的基础,路由协议是无线传感器网络研究的重点之一,其主要的设计目标是降低节点能量消耗,延长网络的生命周期。

本次实验将仿真各类无线传感器网络路由协议。

2。

实验要求争取考虑全面,考虑到各因素对各类协议的影响,以提高无线传感网络的性能。

3.设计思想(1)Flooding泛洪是一种传统的路由技术,不要求维护网络的拓扑结构,并进行路由计算,接收到消息的节点以广播形式转发分组.对于自组织的传感器网络,泛洪路由是一种较直接的实现方法,但消息的“内爆”(implosion)和“重叠”(overlap)是其固有的缺陷。

为了克服这些缺陷,S。

hedetniemi等人提出了Gossiping策略,节点随机选取一个相邻节点转发它接收到的分组,而不是采用广播形式。

这种方法避免了消息的“内爆”现象,但有可能增加端到端的传输延时。

Flooding路由协议中的内爆和重叠问题(2)SPIN (sensor protocol for information via negotiation)SPIN是以数据为中心的自适应路由协议,通过协商机制来解决泛洪算法中的“内爆”和“重叠”问题。

传感器节点仅广播采集数据的描述信息,当有相应的请求时,才有目的地发送数据信息.SPIN协议中有3种类型的消息,即ADV,REQ和DATA。

ADV—用于新数据广播.当一个节点有数据可共享时,它以广播方式向外发送DATA数据包中的元数据。

REQ—用于请求发送数据.当一个节点希望接收DATA数据包时,发送REQ数据包。

DATA-包含附上元数据头(meta一header)的实际数据包.SPIN协议有4种不同的形式:• SPIN-PP:采用点到点的通信模式,并假定两节点间的通信不受其他节点的干扰,分组不会丢失,功率没有任何限制。

要发送数据的节点通过ADV向它的相邻节点广播消息,感兴趣的节点通过REQ发送请求,数据源向请求者发送数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告课程无线传感网络各类路由协议仿真1.实验目的网络数据传输离不开路由协议,路由协议是其组网的基础,路由协议是无线传感器网络研究的重点之一,其主要的设计目标是降低节点能量消耗,延长网络的生命周期。

本次实验将仿真各类无线传感器网络路由协议。

2.实验要求争取考虑全面,考虑到各因素对各类协议的影响,以提高无线传感网络的性能。

3.设计思想(1)Flooding泛洪是一种传统的路由技术,不要求维护网络的拓扑结构,并进行路由计算,接收到消息的节点以广播形式转发分组。

对于自组织的传感器网络,泛洪路由是一种较直接的实现方法,但消息的“内爆”(implosion)和“重叠”(overlap)是其固有的缺陷。

为了克服这些缺陷,S.hedetniemi等人提出了Gossiping策略,节点随机选取一个相邻节点转发它接收到的分组,而不是采用广播形式。

这种方法避免了消息的“内爆”现象,但有可能增加端到端的传输延时。

Flooding路由协议中的内爆和重叠问题(2)SPIN (sensor protocol for information via negotiation)SPIN是以数据为中心的自适应路由协议,通过协商机制来解决泛洪算法中的“内爆”和“重叠”问题。

传感器节点仅广播采集数据的描述信息,当有相应的请求时,才有目的地发送数据信息。

SPIN协议中有3种类型的消息,即ADV,REQ 和DATA。

ADV—用于新数据广播。

当一个节点有数据可共享时,它以广播方式向外发送DATA数据包中的元数据。

REQ—用于请求发送数据。

当一个节点希望接收DATA数据包时,发送REQ数据包。

DATA—包含附上元数据头(meta一header)的实际数据包。

SPIN协议有4种不同的形式:• SPIN-PP:采用点到点的通信模式,并假定两节点间的通信不受其他节点的干扰,分组不会丢失,功率没有任何限制。

要发送数据的节点通过ADV向它的相邻节点广播消息,感兴趣的节点通过REQ发送请求,数据源向请求者发送数据。

接收到数据的节点再向它的相邻节点广播ADV消息,如此重复,使所有节点都有机会接收到任何数据。

• SPIN-EC:在SPIN-PP的基础上考虑了节点的功耗,只有能够顺利完成所有任务且能量不低于设定阈值的节点才可参与数据交换。

• SPIN-BC:设计了广播信道,使所有在有效半径内的节点可以同时完成数据交换。

为了防止产生重复的REQ请求,节点在听到ADV消息以后,设定一个随机定时器来控制REQ请求的发送,其他节点听到该请求,主动放弃请求权利。

• SPIN-RL:它是对SPIN-BC的完善,主要考虑如何恢复无线链路引入的分组差错与丢失。

记录ADV消息的相关状态,如果在确定时间间隔内接收不到请求数据,则发送重传请求,重传请求的次数有一定的限制。

图3.2表明了SPIN协议的路由建立与数据传送。

SPIN协议的路由建立与数据传送基于数据描述的协商机制和能量自适应机制的SP创协议能够很好地解决传统的Flooding协议所带来的信息爆炸、信息重复和资源浪费等问题。

此外,由于协议中每个节点只需知道其单跳邻居节点的信息,拓扑改变呈现本地化特征。

SP 州协议的缺点是数据广告机制不能保证数据的可靠传递,如果对数据感兴趣的节点远离源节点或者在源节点和目的节点中间的节点对数据不感兴趣,那么数据就不可能被传递到目的地。

因此,对于入侵发现等需要在定期间隔内可靠传递数据的应用系统来说,SP 州并不是一个很 好的选择。

(3) SAR (sequential assignment routing)在选择路径时,有序分配路由(SAR)策略充分考虑了功耗、QoS 和分组优先权等特殊要求,采用局部路径恢复和多路经备份策略,避免节点或链路失败时进行路由重计算需要的过量计算开销。

为了在每个节点与sink 节点间生成多条路经,需要维护多个树结构,每个树以落在sink 节点有效传输半径内的节点为根向外生长,枝干的选择需满足一定QOS 要求并要有一定的能量储备。

这一处理使大多数传感器节点可能同时属于多个树,可任选其一将采集数据回传到sink 节点。

(4) LEACH (low energy adaptive clustering hierarchy)LEACH 是MIT 的Chandrakasan 等人为无线传感器网络设计的低功耗自适应聚类路由算法。

与一般的平面多跳路由协议和静态聚类算法相比,LEACH 可以将网络生命周期延长15%,主要通过随机选择聚类首领,平均分担中继通信业务来实现。

LEACH 定义了“轮”(round)的概念,一轮由初始化和稳定工作两个阶段组成。

为了避免额外的处理开销,稳定态一般持续相对较长的时间。

如图3.4所示:LEACH 协议的时序图在初始化阶段,聚类首领是通过下面的机制产生的。

传感器节点生成0,1之间的随机数,如果大于阈值T,则选该节点为聚类首领.T 的计算方法如下:()[]pr P PT 1mod 1-=(3.1)其中p 为节点中成为聚类首领的百分数,r 是当前的轮数。

初始化阶段 稳定工作阶段时间当簇头选定之后,簇头节点主动向网络中节点广播自己成为簇头的消息(ADV_CH)。

接收到此消息的节点,依据接收信号的强度,选择它所要加入的簇,并发消息通知相应的簇头(JOIN_REQ)。

基于时分多址(Time Division Multiple Address,简称TDMA)的方式,簇头节点为其中的每个成员分配通信时隙,并以广播的形式通知所有的簇内节点(ADVSCH)。

这样保证了簇内每个节点在指定的传输时隙进行数据传输,而在其他时间进入休眠状态,减少了能量消耗。

在稳定工作阶段,节点持续采集监测数据,在自身传输时隙到来时把监测数据传给簇头节点(DATA),如图3.5所示。

簇头节点对接收到数据进行融合处理之后,发送到Sink节点,这是一种减小通信业务量的合理工作模式。

持续一段时间以后,整个网络进入下一轮工作周期,重新选择簇头节点。

LEACH协议采用动态转换簇头的方法来平均网络节点的能量消耗,使因能量耗尽而失效的节点呈随机分布状态,因而与一般的多跳路由协议和静态簇算法相比,LEACH可以将网络生命周期延长15%。

但是LEACH协议在每轮固定簇头节点后在划分簇的过程中,簇头节点开销较大。

并且簇头节点的选择无法达到最优,有可能簇头节点位于网络的边缘或者几个簇头节点相邻,某些节点不得不传输较远的距离来与簇头通信,这就导致了大量能量消耗。

而且LEACH协议所有簇头节点直接与Sink节点通信,采用连续数据发送模式和单跳路径选择模式,使得每轮中簇头节点能耗巨大,因此不适合在大规模的传感器网络中应用。

(5) TEEN (threshold sensitive energy efficient sensor network protocol)依照应用模式的不同,通常可以简单地将无线自组织网络(包括传感器网络和Ad-hoc网络)分为主动(proactive)和响应(reactive)两种类型。

主动型传感器网络持续监测周围的物质现象,并以恒定速率发送监测数据;而响应型传感器网络只是在被观测变量发生突变时才传送数据。

相比之下,响应型传感器网络更适合应用在敏感时间的应用中。

TEEN和LEACH的实现机制非常相似,只是前者是响应型的,而后者属于主动型传感器网络。

在TEEN中定义了硬、软两个门限值,以确定是否需要发送监测数据。

当监测数据第一次超过设定的硬门限时,节点用它作为新的硬门限,并在接着到来的时隙内发送它。

在接下来的过程中,如果监测数据的变化幅度大于软门限界定的范围,则节点传送最新采集的数据,并将它设定为新的硬门限。

通过调节软门限值的大小,可以在监测精度和系统能耗之间取得合理的平衡。

图3.6表示的是TEEN协议中由聚簇构成的层次结构。

SinkHigh level cluster headLow level cluster headNormal sensor nodeClusteringTEEN协议中由聚簇构成的层次结构TENE适用于实时性要求较高的应用场合,比如入侵警报,爆炸预警等,用户可以及时获取感兴趣的信息。

而且用户可以通过设置不同的软门限方便地平衡监测的准确性与系统节能性两项指标。

但是这个方案也有一些不足之处,例如门限值达不到,节点就永远不会和簇头节点通信,用户就无法从网络得到任何数据;没有相应的机制去区分那些没有感应到足够大变化的节点和处于关闭状态的节点,所以TEEN协议不适合应用在。

(6) PEGAGIS (power-efficient gathering in sensor information system)PEGASIS由LEACH发展而来。

它假定组成网络的传感器节点是同构且静止的。

节点发送能量递减的测试信号,通过检测应答来确定离自己最近的相邻节点。

在收集数据前,首先利用贪心算法将网络中的所有节点连接成一条单链。

通过这种方式,网络中的所有节点能够了解彼此的位置关系,进而每个节点依据自己的位置选择所属的聚类,聚类的首领向链的两端发出收集数据的请求,数据从单链的两个端点向首领流动。

中间节点在传递数据前要执行融合操作,最终由首领节点将结果数据传送给Sink节点。

因为PEGASIS中每个节点都以最小功率发送数据分组,并有条件完成必要的数据融合,减小业务流量。

因此,整个网络的功耗较小。

研究结果表明,PEGASIS支持的传感器网络的生命周期是LEACH的近两倍。

4.实验器材与工具MATLAB5.程序源代码function x=animation_datasmall=5; medium=20; large=50;% Event_name Animated Color/{on/off/toggle} Size anim_def={...{'Init_Application', 0, [0 0 0 ], small}, ...{'Packet_Sent', 1, [0 1 0 ], small}, ...{'Packet_Received', 1, [0 1 0 ], small}, ...{'Collided_Packet_Received', 0, [1 0 0 ], small}, ...{'Clock_Tick', 0, [0 0 0 ], small}, ...{'Channel_Request', 0, [0 0 0 ], small}, ...{'Channel_Idle_Check', 1, [1 0 0 ], small}, ...{'Packet_Receive_Start', 0, [0 1 0 ], small}, ...{'Packet_Receive_End', 0, [0 0 0 ], small}, ...{'Packet_Transmit_Start', 1, [1 0 0 ], medium}, ...{'Packet_Transmit_End', 0, [0 1 0 ], small}};for i=1:length(anim_def)a=anim_def{i};x(i)=struct('event', a{1}, 'animated', a{2}, 'color', a{3}, 'size', a{4});endfunction application(S)% DO NOT edit simulator code (lines that begin with S;)S; persistent app_dataS; global ID tS; [t, event, ID, data]=get_event(S);S; [topology, mote_IDs]=prowler('GetTopologyInfo');S; ix=find(mote_IDs==ID);S; if ~strcmp(event, 'Init_Application')S; try memory=app_data{ix}; catch memory=[]; end,S; endS;switch eventcase 'Init_Application'signal_strength=1;if ID==1 % first node starts floodSet_Clock(1000)endPrintMessage('i')case 'Packet_Sent'PrintMessage('s')case 'Packet_Received'% data.data % message% data.signal_strength % received signal strengthif memory.sendp=sim_params('get_app', 'P');if isempty(p); p=.5; endif rand<pSend_Packet(radiostream(data.data, memory.signal_strength));endmemory.send=0;PrintMessage('r')endcase 'Collided_Packet_Received'% this is for debug purposes onlycase 'Clock_Tick'Send_Packet(radiostream('Message for 00111 from Golomb', memory.signal_strength));case 'GuiInfoRequest'disp(sprintf('Memory Dump of mote ID# %d:\n',ID)); disp(memory)case 'Application_Stopped'% this event is called when simulation is stopped/suspendedcase 'Application_Finished'% this event is called when simulation is finishedotherwiseerror(['Bad event name for application: ' event])endS; app_data{ix}=memory;function b=Send_Packet(data);global ID tradio=prowler('GetRadioName');b=feval(radio, 'Send_Packet', ID, data, t);function b=Set_Clock(alarm_time);global IDprowler('InsertEvents2Q', make_event(alarm_time, 'Clock_Tick', ID));function PrintMessage(msg)global IDprowler('TextMessage', ID, msg)function LED(msg)global IDprowler('LED', ID, msg)function varargout=infotitle1='Application FLOOD1D';str1={ 'This application illustrates the simple flooding algorithm.'; ...'';...'The sender mote transmits a message. Each mote receiving the';...'message retransmits it with probability p.' ;...'The value of p can be set in the ''Application Parameters''';...'window. The default value is p=0.5';...'';...'If p is too low, the flood dies out before every mote could';...'receive the message. If p it too high, the message is';...'retransmitted several times after every mote have received it,' ;...'thus causing an unnecessarily high settling time.';...'';...'The optimal value of p highly depends on topology.';...'';...'You can change the topology by editing the file FLOOD1D_TOPOLOGY.';...'';...'See also FLOOD2D.';...''};if nargout==0helpwin({ title1, str1}, 'Application Info')elsevarargout={ title1, str1};endfunction param=params;param(1).name='P'; param(1).default=0.5;function [topology,mote_IDs]=topology(varargin);Nx=10; Ny=1; % number of points on the gridix=1;t=[];distx=1;disty=5;X=1:distx:(Nx-1)*distx+1;Y=1:disty:(Ny-1)*disty+1;for i=Xfor j=Yt=[t; i,j];endendtopology=t;mote_IDs=1:Nx*Ny;function x=animationpersistent anim_dataif isempty(anim_data)small=5; medium=20; large=50;% Event_name Animated Color/{on/off/toggle} Sizeanim_def={...{'Init_Application', 1, [0 0 0 ], small}, ...{'Packet_Sent', 2, [1 0 0 ], small}, ...{'Packet_Received', 3, [1 0 0 ], small}, ...{'Collided_Packet_Received', 4, [1 0 0 ], small}, ...{'Clock_Tick', 0, [0 0 0 ], small}, ...{'Channel_Request', 0, [0 0 0 ], small}, ...{'Channel_Idle_Check', 1, [1 0 0 ], small}, ...{'Packet_Receive_Start', 0, [0 1 0 ], small}, ...{'Packet_Receive_End', 0, [0 0 0 ], small}, ...{'Packet_Transmit_Start', 1, [1 0 0 ], medium}, ...{'Packet_Transmit_End', 1, [0 1 0 ], small}};for i=1:length(anim_def)a=anim_def{i};if i==1anim_data=struct('event', a{1}, 'animated', a{2}, 'color', a{3}, 'size', a{4});elseanim_data(i)=struct('event', a{1}, 'animated', a{2}, 'color', a{3}, 'size', a{4});endendendx=anim_data;function application(S)S; persistent app_dataS; global ID tS; [t, event, ID, data]=get_event(S);S; [topology, mote_IDs]=prowler('GetTopologyInfo');S; ix=find(mote_IDs==ID);S; if ~strcmp(event, 'Init_Application')S; try memory=app_data{ix}; catch memory=[]; end,S; endS;SENDER_ID=sim_params('get_app', 'Start_Mote');if isempty(SENDER_ID), SENDER_ID=1; endswitch eventcase 'Init_Application'signal_strength=1;memory=struct('send',1, 'signal_strength', signal_strength);if ID==SENDER_ID % this node starts floodSet_Clock(1000)endPrintMessage('i')case 'Packet_Sent'memory.send=0;PrintMessage('s')case 'Packet_Received'% data.data % message% data.signal_strength % received signal strengthif memory.sendp=sim_params('get_app', 'P');if isempty(p); p=.3; end% p=0.3; % p is forced to 0.3 / Comment this line if you want to use it for optimizationif rand<pSend_Packet(radiostream(data.data, memory.signal_strength));endmemory.send=0;PrintMessage('r')endcase 'Collided_Packet_Received'% this is for debug purposes onlycase 'Clock_Tick'Send_Packet(radiostream('this is the message', memory.signal_strength));case 'GuiInfoRequest'if ~isempty(memory)disp(sprintf('Memory Dump of mote ID# %d:\n',ID)); disp(memory) elsedisp(sprintf('No memory dump available for node %d.\n',ID));endcase 'Application_Stopped'% this event is called when simulation is stopped/suspendedcase 'Application_Finished'% this event is called when simulation is finishedotherwiseerror(['Bad event name for application: ' event])endS; app_data{ix}=memory;S;function b=Send_Packet(data);global ID tradio=prowler('GetRadioName');b=feval(radio, 'Send_Packet', ID, data, t);function b=Set_Clock(alarm_time);global IDprowler('InsertEvents2Q', make_event(alarm_time, 'Clock_Tick', ID));function PrintMessage(msg)global IDprowler('TextMessage', ID, msg)function varargout=infotitle1='Application FLOOD2D';str1={ 'This application illustrates the flooding algorithm in 2D.'; ...'';...'The sender mote transmits a message. Each mote receiving the';...'message retransmits it with probability p.' ;...'The value of p can be set in the ''Application Parameters''';...'window. The default value is p=0.5.';...'';...'The starting node can also be selected (parameter Start_Mote).';...'Try 1 to start from the lower left corner, and 55 to start from';...'the center of the (10x10) grid.';...'';...'If p is too low, the flood dies out before every mote could';...'receive the message. If p it too high, the message is';...'retransmitted several times after every mote have received it,' ;...'thus causing an unnecessarily high settling time.';...'';...'The optimal value of p highly depends on topology.';...'';...'You can change the topology by changing the parameters X_Number,';...'Y_Number, and Distance.';...''};if nargout==0helpwin({ title1, str1}, 'Application Info')elsevarargout={ title1, str1};endfunction param=params;param(1).name='P'; param(1).default=0.5;param(2).name='Start_Mote'; param(2).default=1;param(3).name='X_Number'; param(3).default=10;param(4).name='Y_Number'; param(4).default=10;param(5).name='Distance'; param(5).default=1;function [topology,mote_IDs]=topology(varargin);ix=1;t=[];%dist=1;% Nx=10; Ny=10; % number of points on the gridNx =sim_params('get_app', 'X_Number'); if isempty(Nx), Nx=10; end Ny =sim_params('get_app', 'Y_Number'); if isempty(Ny), Ny=10; end dist=sim_params('get_app', 'Distance'); if isempty(dist), dist=1; endX=1:dist:(Nx-1)*dist+1;Y=1:dist:(Ny-1)*dist+1;for i=Xfor j=Yt=[t; i,j];endendtopology=t;mote_IDs=1:Nx*Ny;6.实验结果7.结论Flooding中节点的能耗较快。

相关文档
最新文档