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这些接口也有了一定的认识。

posted @ 2022-12-06 19:57  安良  阅读(290)  评论(0编辑  收藏  举报