Lesson网络协议.ppt
- 文档编号:1397671
- 上传时间:2022-10-22
- 格式:PPT
- 页数:15
- 大小:344.50KB
Lesson网络协议.ppt
《Lesson网络协议.ppt》由会员分享,可在线阅读,更多相关《Lesson网络协议.ppt(15页珍藏版)》请在冰豆网上搜索。
Lesson12网络协议,介绍两种基本的多跳协议:
分发(Dissemination)和收集(Collection)。
分发协议可以可靠地传送小数据项到网络中的每一个节点。
收集协议则可以把网络中每个节点的小数据项传递到指定的根节点。
一、分发协议,分发协议主要用于实现共享变量的网络一致性。
网络中的每一个节点都保存有该共享变量的一个副本。
在任意给定时刻,可能会有2个节点的变量值不相同。
但随着时间的流逝,不一致的节点数会越来越少,最终整个网络都将统一于一个相同的变量值。
网络的一致性并不意味着每个节点都能够发现变量值的所有变动,它仅仅表示网络最终会在最新的变量值上达成一致。
能够将小数据分发到整个网络中,这个功能特性对于传感器网络的应用而言是非常有用的。
它允许管理员向网络注入小段程序、命令以及配置信息。
1.1分发协议的接口,两个接口:
DisseminationValue和DisseminationUpdate接口。
前者适用于分发数据的消费者(接收从网络中分发过来的数据),后者适用于生产者(产生需分发的数据)。
interfaceDisseminationValuecommandconstt*get();eventvoidchanged();当分发的变量值发生改变时,就会触发changed()事件,再进行相应处理。
消费者能够通过DisseminationValue.get()获取const类型的指针指向数据区域。
interfaceDisseminationUpdatecommandvoidchange(t*newVal);调用change()命令会隐式地使其函数参数成为最新的分发值,并将其分发给网络中的每一个节点。
1.2分发协议的组件,DisseminationValue接口和DisseminationUpdate接口由DisseminatorC组件提供。
genericconfigurationDisseminatorC(typedeft,uint16_tkey)/通用组件,需实例化providesinterfaceDisseminationValue;providesinterfaceDisseminationUpdate;参数t即数据包结构类型,其大小必须能够包含于单个message_t包。
键值(key)允许创建不同的DisseminatorC实例组件,类似于AM标识号可以虚拟化AM服务。
该值一般由unique()函数产生。
1.3EasyDissemination实例,一个源节点周期性地将其计数值分发给网络中的其它节点。
收到该计数值的节点将其显示到LED灯上。
eventvoidTimer.fired()counter=counter+1;postShowCounter();/disseminatecountervaluecallUpdate.change(/设定分发值,eventvoidValue.changed()/发现分发值变动constuint16_t*newVal=callValue.get();/shownewcounterinLedscounter=*newVal;postShowCounter();,注意,所有节点在启动时必须先开启无线电服务。
二、收集协议,收集协议是对分发协议的补充,它要求网络中各节点将采集的数据发送到基站节点。
实现方式:
建立一棵或多棵以基站节点作为根节点的收集树,当一个节点有数据(自己的采集数据或来自其他节点的转发数据)需要发送到基站节点时,就会沿着收集树将数据发送给它的父节点,直到数据到达基站节点。
根据汇聚内容的形式,各中转节点可以检查过往的消息包,以便信息统计或聚合,或抑制重复的传输。
注意:
该协议只是尽力(best-effort)把消息发送到网络中至少一个根节点。
然而,它并不能保证传输必定成功。
另外,消息的副本有可能传输到多个根节点。
数据包到达根节点的顺序也无法保证。
汇聚树协议(CollectionTreeProtocol,CTP)是TinyOS2.x自带的收集协议的一种,为网络中的节点提供到根节点的尽全力的、任意传播的传输机制。
2.2CTP协议的接口,setRoot()命令设立收集树的根节点。
如果一个节点已经是根节点,并调用setRoot命令,则返回SUCCESS。
那么接下来的isRoot命令返回TRUE。
interfaceRootControlcommanderror_tsetRoot();commanderror_tunsetRoot();commandboolisRoot();,2.2CTP协议的组件-1,CTP协议由CollectionC组件提供,其提供了无线通信的大多数基本接口。
configurationCollectionCprovidesinterfaceStdControl;interfaceSenduint8_tclient;interfaceReceivecollection_id_tid;/接收到数据interfaceReceiveasSnoopcollection_id_t;/偷听到数据interfaceInterceptcollection_id_tid;interfaceRootControl;/设置根节点interfacePacket;/访问汇聚数据包的各个字段interfaceCollectionPacket;usesinterfaceCollectionIduint8_tclient;,2.2CTP协议的组件-2,注意:
不可以绑定其它组件到CollectionC.Send接口,通用组件CollectionSenderC提供了虚拟化的发送接口。
genericconfigurationCollectionSenderC(collection_id_tcollectid)providesinterfaceSend;interfacePacket;,事实上,CollectionSenderC组件是对CollectionC组件的一种封装,提供了一种多元化访问的机制。
类似于AMSenderC组件,只不过用collection_id_t参数代替了am_id_t参数。
Receive接口、Snoop接口和Intercept接口必须也都使用相同的collection_id_t参数,才能接收到数据。
2.3EasyCollection实例,网络中的节点周期性地发送信息到基站,基站节点负责收集网络中所有的数据。
if(TOS_NODE_ID=1)/设置节点1为根节点callRootControl.setRoot();if(callSend.send(&packet,sizeof(EasyCollectionMsg)!
=SUCCESS)/非根节点周期性发送数据eventmessage_t*Receive.receive(message_t*msg,void*payload,uint8_tlen)/根节点会触发receive事件,三、分发协议的补充说明,在TinyOS2.x里,对于小数据项的分发协议有两种分发库:
Drip和DIP。
Drip把每个数据项当做分发的单独实体,并提供了很好的粒子性控制,控制何时如何快速地把想要的数据项分发出去。
DIP则把它们当做一个群体,即分发控制和参数可以适用于所有的数据项集体。
Drip应该在你只有少数数据项且不确定每个节点的数据类型时使用。
这个灵活性要求你的网络中发出更多的通知消息。
DIP则在所有的节点有统一的数据类型,且需要高效率的消息机制时使用。
configurationEasyDisseminationAppCimplementationcomponentsMainC;EasyDisseminationC.Boot-MainC;componentsLedsC;EasyDisseminationC.Leds-LedsC;componentsnewTimerMilliC();EasyDisseminationC.Timer-TimerMilliC;/part1componentsEasyDisseminationC;componentsDisseminationC;EasyDisseminationC.DisseminationControl-DisseminationC;/part2componentsnewDisseminatorC(uint16_t,0x1234)asDiss16C;EasyDisseminationC.Value1-Diss16C;EasyDisseminationC.Update1-Diss16C;/part3componentsActiveMessageC;EasyDisseminationC.RadioControl-ActiveMessageC;/part4,configurationEasyDisseminationAppCimplementationcomponentsMainC;EasyDisseminationC.Boot-MainC;componentsLedsC;EasyDisseminationC.Leds-LedsC;componentsnewTimerMilliC();EasyDisseminationC.Timer-TimerMilliC;/part1componentsEasyDisseminationC;componentsDisseminationC;EasyDisseminationC.DisseminationControl-DisseminationC;/part2componentsnewDisseminatorC(uint16_t,0x1234)asDiss16C;EasyDisseminationC.Value1-Diss16C;EasyDisseminationC.Update1-Diss16C;/part3DIP在节点启动时就开启了无线电,3.1Drip协议与Dip协议的比较,3.2Drip&DipMakefile,在应用程序的Makefile里设置相应的分发库:
COMPONENT=EasyDisseminationAppCCFLAGS+=-I$(TOSDIR)/lib/netCFLAGS+=-I$(TOSDIR)/lib/net/dripinclude$(MAKERULES)COMPONENT=EasyDisseminationAppCCFLAGS+=-I$(TOSDIR)/lib/netCFLAGS+=-I$(TOSDIR)/lib/net/dipCFLAGS+=-I$(TOSDIR)/lib/net/dip/interfacesinclude$(MAKERULES),谢谢!
ThankYouForYourAttention!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Lesson 网络 协议