首页 > 其他分享 >SRP实验

SRP实验

时间:2022-12-06 20:15:14浏览次数:49  
标签:发送 SRP 实验 数据包 节点 路由

一、实验目的

  1. 学习源路由协议的机制
  2. 理解节点在源路由协议中的几种角色
  3. 掌握源路由协议相关接口 SourceRouteSend、SourceRoutePacket 的使用

 

二、实验要求

  1. 功能:root 节点的数据通过路由传输到目的节点
  2. 现象:串口显示发送节点的数据包传输经过的节点,Sniffer 抓包分析理解

 

三、实验设备

  1. 装有 TinyOS 开发环境的 PC 机一台
  2. CC2530/CC2538 节点 2 个以上
  3. 下载器一个

 

四、实验原理

源路由是由用户显式提供具体路径的路由协议。这些路由,即到达目的地途中要遍历的节点, 通常以列表的形式携带在数据包报头中。当一个节点接收到源路由包时,它会查找源路由包头中的下 一跳,并将数据包转发到该节点。

一个完整的源路由系统由两部分功能组成:第一部分负责读取和写入源路由,第二组负责按源路 由进行数据包转发。

源路由系统可以在许多方面使用。这可以作为一个轻量级的路由系统进行调试,也可以用于那些 路由事先知道的静态环境中。它也可以被路由系统使用,在给定节点上根据网络的拓扑信息计算路径。

例如,给定网络的链路状态信息,节点可以将分组路由到网络中的任何节点。源路由也有助于将数据 包沿着反向路径路由到原始发送方。 节点在源路由中可以扮演三个角色:

* 发送者:配置源路由并发送数据包

* 转发者:接收源路由数据包并转发到下一跳节点

* 接收者:作为目的地接收源路由数据包 请参阅 TEP138 和 TEP139

 

五、实验步骤

  1. 在 VScode 显示 opt/tinyos-2.x/apps/cc2530_app/TestSrp 目录下创建项目目录,并新建应用程序文件, 包括配置文件 Makefile,配线组件 TestSrpAppC.nc 和模块组件 TestSrpC.nc
  2. 编辑节点的 Makefile 文件,修改如下内容:

 

 

 

 

  1. 编辑 TestSrpP.nc,查看了解模块中的路由表,如下图所示:

 

 

 

 

  1. 编译程序: 终端进入 opt/tinyos-2.x/apps/cc2530_app/TestSrp 目录下,执行 make cc2530zn 命令,编译后如下 图所示,然后通过输入命令 make cc2530zn install 进行烧录。

 

 

 

 

  1. 下载调试程序,观察实验现象。 修改 Makefile,配置节点短地址,如 0x0002,0x0003 等,重新执行步骤 4。 将节点通过串口连接到 PC 端,使用串口、抓包软件 zboss_sniffer 抓取信息。 具体如下图 :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

六、思考、测试、回答

  1. 简单叙述五个 printf 函数的意义。

答;

 

 

 

 

执行完调用后,进行输出打印。

 

 

 

 

发送完成后打印信息

 

 

 

 

接到消息打印。

 

 

 

打印payload。

 

 

 

 

 

 

输出告诉radio已启动。

 

  1. err=call SourceRouteSend.send (routes[TOS_NODE_ID].route, routes[TOS_NODE_ID].len , &myMsg, sizeof(test_payload_t));分析这条语句代表的含义?

答:调用源路由发送函数,发送路由表地址,表长度,消息payload_t。

 

  1. 简要回答当节点作为发送者,转发者,接受者分别需要完成哪些事情?

答:发送者:配置源路由并发送数据包 ; 转发者:接收源路由数据包并转发到下一跳节点 ; 接收者:作为目的地接收源路由数据包。

 

  1. SRP(源路由协议)能够解决什么样的问题?

答:SRP源节点指定路由发送路径,这适用于清楚最优路径的情况,不用在尽最大努力去找到最佳路径,只需按照所提供的路径走下去就行。

 

  1. 对抓包信息进行分析,能够得出什么信息?

答:从抓包信息分析,可以看出源路由和终端路由以及中间经过哪些路由转发。

  1. 尝试修改路由表,观察其现象。

答:

 

 

 

实验现象:

 

 

 

 

 

 

 

七、实验总结

实验通过视频的讲解,整个过程还是较为简单的,流程并不算很复杂。通过实验,了解了SRP的工作原理,对SRP的具体实现有了深刻的印象与了解,对 SourceRouteSend、SourceRoutePacket这些接口也有了一定的认识。

标签:发送,SRP,实验,数据包,节点,路由
From: https://www.cnblogs.com/dhyyds/p/16960361.html

相关文章

  • Dissemination实验
    一、实验目的学习少量数据在传感网中可靠传递的方法掌握TinyOS中DisseminationValue、DisseminationUpdate接口和组件的使用理解Dissemination的机制 二、实......
  • LEEP节点无线链路质量评估实验
    一、实验目的理解节点通信链路质量的影响因素理解提升链路质量的一般方法学习TinyOS系统中CC2530/CC2538节点发送功率的设置体验不同发送功率、不同通信距离、不......
  • 实验6
    task3_1:#include<iostream>#include<fstream>#include<array>#defineN5intmain(){usingnamespacestd;array<int,N>x{97,98,99,100,101......
  • 无线传感器网络技术-实验一-TINYOS/6LOWPAN 编程基础
    【实验目的】1.掌握TinyOS/6LoWPAN开发环境的搭建方法2.掌握VisualStudioCode中TinyOS编程的相关设置3.掌握VSCode中CC2530节点(平台名称cc2530zn)和CC......
  • 实验六
    #pragmaonce#include<iostream>usingstd::cout;usingstd::endl;template<typenameT>classVector{public:Vector(Tn):size(n){p=newT[n];}......
  • 实验6 模板类和文件IO
    task3_1.cpp#include<iostream>#include<fstream>#include<array>#defineN5intmain(){ usingnamespacestd; array<int,N>x{97,98,99,100,101}; ofstr......
  • 实验六
    3.1.cpp#include<iostream>#include<fstream>#include<array>#defineN5intmain(){usingnamespacestd;array<int,N>x{97,98,99,100,101}......
  • 实验六 模板类和文件IO
    1.1Vector.hpp:#include<iostream>#include<string>#include<iomanip>usingnamespacestd;template<classT>classVector{public:Vector(intn):s......
  • 实验6
    实验四vector.hpp#pragmaonce#include<iostream>usingnamespacestd;template<typenameT>classVector{public:Vector(intn):size{n}{p=newT[n......
  • 实验六 模板和文件IO
    task3_11#include<iostream>2#include<fstream>3#include<array>4#defineN556intmain(){7usingnamespacestd;89array<int,......