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

上传人:文库蛋蛋多 文档编号:2400634 上传时间:2023-02-17 格式:DOC 页数:16 大小:1.54MB
返回 下载 相关 举报
传感器网络组网课程设计基于contiki平台的路由协议仿真.doc_第1页
第1页 / 共16页
传感器网络组网课程设计基于contiki平台的路由协议仿真.doc_第2页
第2页 / 共16页
传感器网络组网课程设计基于contiki平台的路由协议仿真.doc_第3页
第3页 / 共16页
传感器网络组网课程设计基于contiki平台的路由协议仿真.doc_第4页
第4页 / 共16页
传感器网络组网课程设计基于contiki平台的路由协议仿真.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《传感器网络组网课程设计基于contiki平台的路由协议仿真.doc》由会员分享,可在线阅读,更多相关《传感器网络组网课程设计基于contiki平台的路由协议仿真.doc(16页珍藏版)》请在三一办公上搜索。

1、评定成绩: 课程设计报告(传感器网络组网)设计题目: 基于contiki平台的路由协议及仿真 学 院 名 称 :自动化学院学 生 姓 名 :专 业 :班 级 :学 号 :指 导 教 师 : 填表时间: 2016 年 5 月重庆邮电大学本科课程设计报告 摘要 摘要路由协议执行网络拓扑描述、路由选择和数据包转发的功能,影响整个网络的性能和存活时间。现有的路由协议需要发送大量数据包维护网络拓扑,以及大量的存储空间来存储路由条目。由于硬件的限制,无线传感器无论是能量还是处理能力,存储能力都受到了极大的限制。因此,IETF ROLL工作组提出了一种针对低功耗有损网络的IPV6路由协议,即RPL路由协议。

2、文中对RPL路由协议的拓扑构建过程进行分析,并通过利用cooja仿真工具进行仿真,在仿真中显示出DODAG的构建过程,并对进行仿真出来的各种拓扑结构进行能耗的分析,在仿真过程中直观地显示涓流机制。关键字:IPV6 RPL路由协议 仿真 能耗分析重庆邮电大学本科课程设计报告 目录目录摘要I第一章 绪论11.1 设计题目:11.2 设计任务:11.3 设计要求:11.4 参考资料:1第二章 总体方案设计(或系统建模)22.1 RPL概述22.1.1DODAG的构建过程22.1.2 环路避免的机制22.1.3涓流机制32.2 基于Contiki平台的RPL路由协议仿真3第三章 个人设计工作(或系统仿

3、真分析)53.1DODAG图构建分析53.2能耗的分析63.3涓流机制83.4其他参数修改:8第四章 设计总结9参考文献10附录11重庆邮电大学本科课程设计报告 第一章 绪论第一章 绪论1.1 设计题目:基于Contiki平台的传感网路由协议设计与仿真1.2 设计任务:基于Contiki操作系统和Cooja仿真器,运用所学的无线传感网知识,选择一种典型的传感网路由协议进行组网设计和仿真。路由协议可在AODV、RPL、RIME等协议中任选一种,也可选择其它典型的传感网路由协议。1.3 设计要求:1掌握Contiki物联网平台开发的基础知识。2. 组网规模不少于20个节点。3. 完成网络的运行场景

4、分析、拓扑结构规划和路由协议设计。4. 在Contiki平台上独立编写符合需求的传感网程序。5采用Contiki自带的网络仿真器,对编写的程序和网络路由协议进行仿真,给出网络运行效果图。6. 调节路由协议的一些参数,对路由协议的性能变化进行分析。1.4 参考资料:1Contiki开发组. Contiki: The Open Source OS for the Internet of Things. http:/www.contiki-os.org/2. 桂劲松. 物联网系统设计. 北京:电子工业出版社. 2013.3. 谢希仁. 计算机网络. 北京:电子工业出版社. 2008.4. 李晓维.

5、无线传感器网络技术. 北京:北京理工大学出版社. 2007.重庆邮电大学本科课程设计报告 第二章 总体设计方案(或系统建模)第二章 总体方案设计(或系统建模)2.1 RPL概述 RPL是为LLN而设计的距离矢量路由协议,通过使用目标函数和度量集合构建具有目的地的有向无环图(DODAG)。目标函数利用度量和约束条件的集合计算出最优路径。由于网络部署的目的性有异,同一网络可能需要不同的链路质量要求等等。2.1.1 DODAG的构建过程DODAG的构造过程由根节点或LoWPAN边界路由器(LBR)发起。为了实现DODAG的构造,RPL基于ICMPv6,新增加了如下三条控制消息:DIS、DIO、DAO

6、。RPL支持三种基本的数据传输模式: 多点到点,Multipoint-to-Point (MP2P)、点到多点,Point-to-Multipoint (P2MP)、点到点,Point-to-Point (P2P).。首先来说实现为MP2P构造上行到根节点的路径。根节点利用DIO消息广播DODAG的信息;根节点的邻居节点收到DIO后,根据一定的准则,决定是否加入这个DODAG,这些准则包括:目标函数、DAG特性、各种自定义的本地策略等,当某个邻居节点加入所广播的DODAG后,它就建立了一条到达DODAG根节点的路径。根节点被称为该节点的“父节点”。如果新加入图的节点类型是路由器,它将向自己的邻

7、居节点继续广播包含DODAG信息的DIO消息。如果新加入图的节点是“叶子节点”,则只是完成入网动作,不广播DIO消息。邻居节点不断重复上述广播和加入动作,直至到达网络的所有叶子节点。每个节点都有一条路径由指向自己的父节点,通过将数据消息发给父节点,最终就能到达根节点。然后来说实现为P2MP构造的从根节点出发的下行路径,下行路由的构造通过DAO消息来完成。每个节点加入DODAG后,在网络发起上行路径构造指令后,将发送DAO消息到它的父节点。DAO消息中含有前缀、前缀的有效时间等信息,用于表征节点所在前缀的可达性。当一个节点收到DAO消息后,将对前缀信息进行处理,并在路由表中添加路由表项。然后将该

8、前缀信息进一步通过DAO上传给自己的父节点。一个节点也可以将收到的前缀可达性信息进行汇集后,再发给自己的父节点。前缀上传过程一直进行,直至前缀信息到达父节点。每个节点都完成前缀上传后,整个网络将建立起一个从根节点到达所有叶子节点的下行路由图。2.1.2 环路避免的机制 RPL采用两种策略避免环的出现,这些方法都用到rank值。策略1:最大深度策略,一个节点在邻居中选择父节点时,不能选择rank值比它自己的rank重庆邮电大学本科课程设计报告 第二章 总体设计方案(或系统建模)值大一定程度的节点,即rank值超过node-rank+max_depth的节点,不能选择作为父节点。至于超过多少深度才

9、不能选择(max_depth的大小),由根节点确定。这种策略主要是防止选比自己还深的节点作为父节点。策略2:一个节点不能过度贪婪(greedy),不能为了增加父节点数,而移动自己在图中的深度,使深度值加大。2.1.3涓流机制 大多数路由协议,都需要设计周期性的keep alive帧,保证路由表的更新和维护。在LLN中,需周期性的发送DIO等消息,而周期性的更新会导致过多的控制开销,浪费能量。 所以RPL采用了一种自适应的定时器机制,称为trickle timer。这种机制用来控制DIO消息发送的频率。trickle timer机制将图的更新视为一致性问题,使用trickle timer来决定何

10、时组播DIO消息。trickle timer有个初始值,当网络趋于稳定时, trickle timer的周期会逐渐变大,相应的,网络中DIO消息发送的频率会减少。当网络发生一些“不一致”事件时, trickle timer的值又会恢复到初始值,DIO消息的发送就会比较频繁。这些事件有:节点检测到环路、节点新入网、节点发生了移动,采用了trickle timer机制后,当网络越来越稳定的时候,RPL控制报文会逐渐减少;而当网络出现问题时,控制报文发送的频率又会显著增加,保障网络及时通过控制报文快速修复问题。2.2 基于Contiki平台的RPL路由协议仿真 我利用了Contiki平台上的cooj

11、a对RPL路由协议进行仿真,下面为仿真过程:(1) 打开cooja,新建一个模拟器。图2.1 新建模拟器重庆邮电大学本科课程设计报告 第二章 总体设计方案(或系统建模) (2)加入根节点和叶子节点。图2.2 加入节点 (3)创建成功后,便能出现如下画面,其中ID1为根节点,其他为叶子节点,按下simulation control的start键,便开始DODAG图的构造。图2.3 开始仿真重庆邮电大学本科课程设计报告 第三章 个人设计工作(或系统仿真分析)第三章 个人设计工作(或系统仿真分析)3.1 DODAG图构建分析 我对icmp6.c中的打印函数进行修改,使得整个DODAG图的构建过程能够

12、清楚地显示出来。 (1)上行路径的构建:从打印信息可清楚地看出构建上行路径的过程,根节点利用DIO消息广播DODAG的信息;根节点的邻居节点收到DIO后,根据一定的准则,决定是否加入这个DODAG,这些准则包括:目标函数、DAG特性、各种自定义的本地策略等,当某个邻居节点加入所广播的DODAG后,它就建立了一条到达DODAG根节点的路径。图3.1 上行路径构建 (2)下行路径的构建: 下行路由的构造通过DAO消息来完成。每个节点加入DODAG后,在网络发起上行路径构造指令后,将发送DAO消息到它的父节点。DAO消息中含有前缀、前缀的有效时间等信息,用于表征节点所在前缀的可达性。重庆邮电大学本科

13、课程设计报告 第三章 个人设计工作(或系统仿真分析)图3.2 下行路径构建 (3)最终DODAG图的建立图3.3 建立DODAG图3.2 能耗的分析 我对节点分布较分散的情况和节点较密集的情况进行了仿真,结果显示,节点较密集的时候在拓扑建立的过程中能耗较高且较为均衡。另外,我发现在第一种情况的仿真过程中,连接多条路径的节点都会消耗更多的能量,结果如图所示。重庆邮电大学本科课程设计报告 第三章 个人设计工作(或系统仿真分析)图3.4 不同节点分布情况的示意图图3.5 情况1的节点能耗示意图图3.6 情况2的节点能耗示意图重庆邮电大学本科课程设计报告 第三章 个人设计工作(或系统仿真分析)3.3

14、涓流机制下图为节点的DIO消息发送间隔统计图,横轴代表网络运行时间,纵轴代表DIO消息的发送间隔,从图中可以看出涓流机制的工作原理。初始的DIO发送间隔是区间内的随机数,节点收到一致的DIO消息后,DIO发送间隔在原来的基础上翻倍,图中呈现出阶梯型增长的趋势。随着网络的稳定,信道中的控制消息数据包数量大大减少。当网络发生一些“不一致”事件时, trickle timer的值又会恢复到初始值,DIO消息的发送就会比较频繁。如图所示就是节点10发生了位置的移动,导致其DIO消息的发送间隔时间又回到初始值。图3.7 涓流机制示意图3.4 其他参数修改: (1) 在collect-commmon.c中

15、Line 053:#define PERIOD 60改为30,修改过后使用collect-view工具进行数据收集的时间提前,可以在开始后30秒的时候看到收集到的个节点的信息。方便我们对RPL的性能进行分析。 (2)在rpl-conf.h Line 148:#define RPL_DIO_INTERVAL_MIN 12 改为10,使DIO消息发送间隔变为10秒,加快节点发送消息的速度。重庆邮电大学本科课程设计报告 第四章 设计总结第四章 设计总结这次课程设计我进行了对RPL路由协议的仿真,感觉获益良多,在这里总结一下这次课程设计的收获与感受。前段时间我们在物联网系统设计的课堂上才刚刚学习了RP

16、L路由协议的相关知识,而这次则对此进行了一次实践,进一步加深了对此的理解。从仿真的过程中,可以直观地看到DODAG的构建过程,直观地看到上行路径到根节点和下行路径的构建。在icmp6.c中有一段代码直观地描述了避免环路的机制。通过实际操作了解到了涓流机制的实质。另外,通过这次课程设计,也开拓了我的视野,使我有了第一次的机会对windows以外的操作系统进行操作,了解到了makefile的一些规则以及Linux的一些命令。另外,这次设计对我C语言学习的帮助是巨大的,在啃代码,提高看代码的能力的同时,还能加深对RPL协议的理解,可谓是一举两得。我也希望自己在后续学习中去补足自己在这次课程设计所发现

17、的一些问题,继续提高自己读写代码的能力,为日后学习工作打下一个良好的基础。重庆邮电大学本科课程设计报告 参考文献参考文献1 郭梯云,邬国扬,李建东移动通信M西安:西安电子科技大学出版社,20012 董晓芳,孙岩,陈仁贵等自行研制仪器设备的规范化管理J实验技术与管理,2007,245:1631653 孙利民,李建中. 无线传感器网络M. 北京:清华大学出版社,2005.4 李振强. IPV6技术解密M. 北京.人民邮电出版社,2006.重庆邮电大学本科课程设计报告 附录附录Leaf.c:PROCESS_THREAD(rpl_leaf_process,ev,data) static struct

18、etimer periodic;/*定义etimer 周期性定时器*/static struct ctimer backoff_timer;/*定义ctimer 补偿定时器*/ PROCESS_BEGIN();PROCESS_PAUSE();set_global_address();printf(UDP LEAF IP ADDRESS:);print_local_addresses();leaf_connection =udp_new(NULL,UIP_HTONS(UDP_LEAF_PORT),NULL);if(leaf_connection = NULL) PRINTF(Fail to ma

19、ke UDP connection, exiting the process!n); PROCESS_EXIT(); udp_bind(leaf_connection, UIP_HTONS(UDP_LEAF_PORT); PRINTF(Created a connection with the root ); PRINT6ADDR(&leaf_connection-ripaddr); PRINTF( local/remote port %u/%un, UIP_HTONS(leaf_connection-lport), UIP_HTONS(leaf_connection-rport);etime

20、r_set(&periodic, SEND_INTERVAL);/*设置etimer定时器,定时时长为SEND_INTERVAL*/* *etimer:定时器期满,发送事件 *ctimer:定时器期满,调用函数 *rtimer:实时时钟,在一个精确的时间调用函数*/while(1) PROCESS_YIELD(); if(ev = tcpip_event) tcpip_handler(); if(etimer_expired(&periodic)etimer_reset(&periodic);ctimer_set(&backoff_timer, SEND_TIME, send_packet,

21、NULL); 重庆邮电大学本科课程设计报告 附录 PROCESS_END(); Root.c:PROCESS_THREAD(udp_root_precess,ev,data)uip_ipaddr_t ipaddr;struct uip_ds6_addr *root_if;PROCESS_BEGIN(); PROCESS_PAUSE(); SENSORS_ACTIVATE(button_sensor); PRINTF(UDP root startedn);#if UIP_CONF_ROUTER uip_ip6addr(&ipaddr, 0xaaaa, 0, 0, 0, 0, 0, 0, 0xbb

22、bb);/*构造ipv6地址*/ /* uip_ds6_set_addr_iid(&ipaddr, &uip_lladdr); */ uip_ds6_addr_add(&ipaddr, 0, ADDR_MANUAL); root_if = uip_ds6_addr_lookup(&ipaddr); if(root_if != NULL) rpl_dag_t *dag; /* *rpl_set_root(uint8_t instance_id,uip_ipaddr_t * dag_id) *0x2a,42 */ dag = rpl_set_root(0x2a,(uip_ip6addr_t *)&

23、ipaddr); uip_ip6addr(&ipaddr, 0xaaaa, 0, 0, 0, 0, 0, 0, 0xbbbb); print_local_addresses(); NETSTACK_RDC.off(1);/*udp_new(const uip_ipaddr_t * ripaddr,uint16_t port,void * appstate)*return c*struct uip_udp_conn *c */ root_connection= udp_new(NULL, UIP_HTONS(UDP_LEAF_PORT), NULL);/*建立新的udp*/ udp_bind(r

24、oot_connection, UIP_HTONS(UDP_ROOT_PORT);/*绑定端口号*/ PRINTF(Created a root connection with remote address ); PRINT6ADDR(&root_connection-ripaddr);/*打印远端地址*/重庆邮电大学本科课程设计报告 附录 /*打印本地和远程的端口号*/ PRINTF( local/remote port %u/%un, UIP_HTONS(root_connection-lport), UIP_HTONS(root_connection-rport); while(1) PROCESS_YIELD(); if(ev = tcpip_event) tcpip_handler(); else if (ev = sensors_event & data = &button_sensor) PRINTF(Initiaing global repairn); /* *rpl_repair_root(uint8_t instance_id) *全局修复 *实例ID,0x2a */ rpl_repair_root(0x2a); PROCESS_END();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号