收藏 分销(赏)

第4章-网络层.ppt

上传人:丰**** 文档编号:12784983 上传时间:2025-12-07 格式:PPT 页数:98 大小:1.35MB 下载积分:8 金币
下载 相关 举报
第4章-网络层.ppt_第1页
第1页 / 共98页
第4章-网络层.ppt_第2页
第2页 / 共98页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Zigbee,网络技术及应用,哈尔滨商业大学管理学院,第,4,章 网络层,网络层,ZigBee协议栈的,核心部分,在网络层,。,网络层主要实现节点加入或离开网络、接收或抛弃其他节点、路由查找及传送数据等功能,。,网络层的核心功能是,路由和寻址,以及,网络的建立和维护,。,提 纲,网络拓扑,网络层帧格式,网络的建立与维护,编址,单播路由,网络层属性管理,网络拓扑,IEEE802.15.4,定义,PAN,协调器(,PAN Coordinator,),协调器(,Coordinator,),设备(,Device,),ZigBee,定义,协调器(,Coordinator,),路由器(,Router,),末端设备(,End Device,),ZigBee,支持的网络拓扑形式有三种:,星型拓扑(,Star,),树型拓扑(,Tree,),网状拓扑(,Mesh,),网络拓扑,通信规则,1.,星型拓扑:,以,Coordinator(,中心协调器,),为中心,是一种发散的网络结构,其他设备通过中心协调器通信。,网络中的任何设备如果想要相互传递数据,,必须经过中心协调器进行数据的转发,,这是一种典型的,主从网络,。,这种网络有着很大的局限性:,物理位置受限,:如果其他节点离,Coordinator,较远,可能因为传输距离的限制而造成无法正常传输数据。,协调器能量消耗大,:所有节点数据传输都竞夺中心协调器的话,中心协调器的电池电量耗费会非常大,容易造成电能耗尽而使网络瘫痪。,2.,树型拓扑:,树形结构中数据传输严格按照树形网络传输,也就是,每个节点只能和其父节点和子节点传输数据,,不能随意和其他节点传输数据,所有的数据必须按照树的路径进行上下传输。,3.,网状拓扑:,网状结构是一种多跳的系统,,所有节点每次数据传输都有多条路径可供选择,,如果某条线路出现问题,可以走其他线路传输数据。路由可以自动建立和维护,并且,具有强大的自组织、自愈功能,。,比较,星型拓扑,:节点之间的数据路由只有唯一的一条路径。,树型拓扑,:当从一个节点向另一个节点发送数据时,信息将沿着树的路径传递。,网状拓扑,:络可以通过“多跳”的方式来通信,可以组成极为复杂的网络,具有很大的路由深度和网络节点规模。,网络拓扑与,MAC,层工作模式,MAC,层有两种工作模式:,信标使能模式,和,非信标使能模式,。,信标使能模式,只能用于,星型拓扑,或者,树形拓扑,。,非信标使能模式,可以用于,各种拓扑,。,为什么网状拓扑不使用信标使能模式呢?这是为了,简化,ZigBee,协议,考虑的。,在网状拓扑中,信标发送时刻的安排比较困难。,提 纲,网络拓扑,网络层帧格式,网络的建立与维护,编址,单播路由,网络层属性管理,网络层帧结构(,NPDU,格式),帧控制域,目的地址,和,源地址,半径域,:限定网络层帧的发送范围,其初始值由高层决定,每经过一跳其值减去,1,,当值为,0,时就不再对帧进行转发。,序列号,:记录两个节点之间传输的帧的个数,目的,IEEE,地址,和,源,IEEE,地址,(命令帧中出现,用于地址冲突检测),组播控制域,(只出现在组播帧中),源路由子帧域,(采用源路由方式时才出现),网络层净荷,网络层帧结构(,P142,),帧控制域:,比特,0,和,1,表示,帧类型,:,0b00,和,0b01,分别表示数据帧和命令帧。,比特,25,表示,协议版本,:该值与网络层常数,nwkcProtocolVersion,相同。,比特,6,和,7,表示,路由发现选项,:,0 x00,表示抑制路由发现,:使用已有路由项发送数据,但如果没有路由记录也不会进行路由发现,会导致数据发送失败。,0 x01,表示允许路由发现,:在没有路由记录的时候会发起路由发现过程。,0 x02,表示强制路由发现,:即使有路由记录也会发起路由发现过程。,比特,8,是,组播标准,:,1,和,0,分别表示是组播帧,还是单播或者广播帧。,比特,9,是,安全标志,:表明是否使用网络层安全机制。,比特,10,是,源路由标志,:表示是否使用源路由机制。,比特,11,和,12,分别表示,是否携带目的和源,IEEE,地址。,网络层两种帧的结构(,P143,),网络层包含两种类型的帧,数据帧,命令帧,(,P143,),PHY,Packet,MAC,Command Frame,MAC,Beacon Frame,MAC,Data Frame,MAC,Acknowledge Frame,NWK,Data Frame,NWK,Command Frame,APS,Data Frame,APS,Command Frame,APS,Acknowledge Frame,提 纲,网络拓扑,网络层帧格式,网络的建立与维护,编址,单播路由,网络层属性管理,网络的建立与维护,网络层与,MAC,层比较,MAC,层,:只考虑本地通信,只涉及到,链路的建立与拆除,(节点间的关联与去关联)。,网络层,:依赖于,MAC,层的机制,同时又要考虑,多跳通信,的问题。,建立网络,建立,ZigBee,网络的设备就是协调器,并不是每一个设备都有建立网络的能力。,(FFD)or(RFD),在实际的建网过程中,一个具备协调器能力的设备,或者自己建立一个网络;,直接新建,或者如果有现存网络就加入否则就自建网络。,没有再新建,协调器在建立网络之前需要设置一些重要的参数,包括网络工作的信道、是否使用信标模式等等;,启动网络协调器(,P105,),协调器的,信道选择过程,在(应用层指定的)信道范围内进行,能量扫描,。,通过在各个信道上进行监听,获取各个信道能量水平:这个能量可以看做是各个信道上的干扰,可以通过一个门限比较,能量水平低于门限值得认为干扰水平可以接受;,(依照干扰水平从低到高的顺序)在各个可接受的信道上进行,主动扫描,。,主要目的是探测已存在的网络。,在已存在网络最少的信道上,建立网络,。,如果几个信道上现存的网络数都一样少,那么就会在干扰水平最低的信道上建立。,从上述过程可以看出,协调器会选择一个干扰和冲突最少的信道建立网络。,特殊情况:,如果应用层需要,在某个特定的信道上建立网络,,那么可以限定网络工作信道范围为指定的信道,同时设定一个要求较低的门限。,确定工作信道之后,设备进一步设置其余的网络参数,包括,PAN,标识、网络地址、扩展,PAN,标识等。,PAN,标识:,是一个随机产生的不等于,0 xffff,的,16,比特标识,(,0 xffff,是广播,PAN,标识)。,网络地址:,(相当于网络内短地址),对于协调器永远取一个特定的值,0 x0000,。,扩展,PAN,标识:,事先由网络层属性,nwkExtendedPANId,设置。若该属性值为,0 x0000000000000000,,那么就把扩展,PAN,标识设置为,IEEE,地址。,建立网络的原语过程,(P106),应用层通过,NLME-NETWORK-FORMATION.request,原语,触发网络层进行网络建立过程,原语包括扫描信道、扫描时间、,BO,、,SO,等参数。,网络层通过,NLME-NETWORK-FORMATION.confirm,原语,告诉高层网络建立的结果,原语只包含一个状态参数。,网络建立的具体过程是调用,MAC,层,MLME-SCAN,原语,先后进行能量扫描和主动扫描。,在选择好信道、,PAN,标识等参数后,调用,MLME-SET,原语,对参数进行设置。,最后通过,MLME-START,原语,启动协调器。,回顾(,P38,),各种扫描都是调用,MAC,层的,MLME-SCAN,原语,,只不过通过扫描类型参数来区分。,0 x00,表示能量扫描,0 x01,表示主动扫描,0 x02,表示被动扫描,0 x03,表示孤立节点扫描,右图为能量扫描的原语过程,涉及物理层的以下原语过程,收发机状态设置,物理层属性管理,物理层测量,加入网络,节点加入协调器所建立的网络包括两个方面的内容:,新节点如何发现已经存在的网络,并且加入。,网络中节点如何通告自身存在,并允许其他节点加入。,加入网络的方式有多种,(p110,),通过请求连接加入网络,,discovery,通过预先配置直接建立连接,,direct-join,重新加入网络,,rejoin,孤立节点加入网络,orphan.indication,加入网络,通过连接加入网络,通过请求连接加入网络包括两个方面的内容,子节点的行为,:想要加入网络的新节点,发现网络,并,加入网络,的过程。,父节点的行为,:网络当中已有的节点通告自身存在并,允许新节点加入,的过程。,子节点的行为,通过,MAC,层直接扫描,来发现网络,新节点加入网络一般首先要搜索周围存在的网络。,直接调用,MAC,层的主动扫描,即发送,MAC,层信标请求命令,然后监听一段时间看是否收到信标。,为了更清楚地了解周围的网络情况,节点可能会进行多次网络扫描,扫描的次数和间隔一般可以由应用进行配置。,在扫描过程中,如果收到信标,说明存在,IEEE802.15.4,网络,但是不一定是,ZigBee,网络,,ZigBee,对信标的结构有进一步的规定,(在,Beacon Payload,中)。,ZigBee,信标的净荷,包括协议标识、协议栈子集(特性集)、协议版本、路由器接受标志、设备深度、末端设备接受标志、扩展,PAN,标识、信标时间偏移、网络更新标识等。,协议标识,(,protocol ID,):,标识网络层协议,,0 x00,表示使用,ZigBee,网络层协议。,协议栈子集(,stack profile,),:指定了对协议栈各可选特性的选择以及参数范围。,协议版本(,nwkcProtocol Version,),:目前有,ZigBee2004,、,ZigBee2006,和,ZigBee 2007 3,个版本,分别对应取值为,0 x00,、,0 x01,、,0 x02,。,路由器接受标志和末端设备接受标志,:分别表示是否接受路由器设备和末端设备加入网络。,设备深度,:表示信标发送设备在树形拓扑中的深度,如,0 x00,表示是做为树根的协调器,在网状拓扑当中,这个参数意义不大。,向高层报告周围的网络信息,通过搜集到信标当中的信息,新节点可以了解到附近存在的网络以及网络的一些基本信息,网络层向高层协议报告每个网络的信息。,高层根据网络信息选择加入一个网络,高层协议可以根据网络层报告的网络信息从中选择一个合适的网络来加入,选择的依据可能是指定的扩展,PAN,标识、协议栈子集、协议栈版本等。,子节点如果找不到和自身实现版本的网络也可以加入能兼容的版本的网络。,邻居表(,P116,),在子节点向高层协议报告网络信息的同时,还附带着,邻居表,形成的过程。,新节点把每一个扫描到的节点信息(从信标获取),做为邻居表的一项。,邻居表记录的信息包括,节点的扩展地址,节点的网络地址,节点的设备类型,:协调器、路由器、末端设备。,相邻节点关系,:父节点、子节点、兄弟节点、其他关系、之前的子节点、未认证子节点。,等等,发送关联请求加入网络,当决定加入哪个网络后,新节点确定是否以路由器身份加入,然后确定,通过哪个节点加入,。,选择依据:指定的节点标识、节点是否接收路由器,/,末端设备加入、链路代价、节点深度等。,新节点向选择的节点发送,MAC,层关联请求命令,然后根据父节点分配的网络地址来设置自己的网络地址。,如果新节点以末端节点身份加入,那么新节点的加入过程就此完成。,如果新节点以路由器的身份加入的话,新节点还需要发起网络层,NLME-START-ROUTER,原语,,MAC,层,MLME-START,原语,把,PAN,标识、逻辑信道、,BO,、,SO,等设置成跟父节点相同的值。,父节点的行为,通告自身存在,父节点通过,发送信标,来通告自身的存在。,如果工作在信标使能模式,则周期性地发送信标;,如果工作在非信标使能模式,则只在收到信标请求的时候发送信标。,父节点的行为,接纳新节点加入,当收到新节点发送来的连接请求,父节点先查看该节点的信息是否已经存储在邻居表中,主要检查,IEEE,地址和设备类型。,如果节点信息已存在(预先配置、因暂时失联而重新加入网络),父节点就,保持子节点的信息,,并通过,连接响应,把记录的网络地址通知子节点。,(,其实此时不属于通过连接加入的范畴),如果没有存储子节点的,IEEE,地址或者设备类型和存储的不同,那么父节点,重新配置一个地址,并通过,连接响应,通知子节点。,当然以上的操作是基于父节点能够接纳子节点加入,即它是路由器或者协调器,并且当前允许子节点加入。,加入网络,重新加入网络,场景:,由于通信环境的变化,或者节点移动到别的地方,节点可能会暂时离开网络一段时间后,又重新加入网络。,过程,子节点通过主动扫描来查找特定的网络,:节点发送信标请求命令,收到信标后比较信标所携带的扩展,PAN,标识是否与节点指定的值相同。,加入网络,重新加入网络,子节点发送一个,重新加入请求命令,(而不是连接请求命令)到一个选定的可能的父节点。,如果父节点同意其加入,则回应一个,重新加入响应命令,,子节点就重新加入网络。,如果父节点不同意其加入,那么响应命令中的地址域为,0 xffff,,同时状态是一个失败的状态,此时子节点可以寻找另外一个父节点加入。,重新加入网络过程交互的是,网络层的重新加入请求和重新加入响应命令,,而不是,MAC,层的连接请求和连接响应命令。,加入网络,通过配置加入网络,过程,在父节点当中直接配置子节点的信息。,只要确定要配置加入到网络的子节点的,IEEE,地址和节点能力信息,通过网络层原语,NLME-DIRECT_JOIN,直接配置子节点信息。,配置邻居表:网络层检查邻居表确认子节点是否已经存在。,如果已经存在那就没有必要加入网络了。,如果不存在,并且邻居表有空余的地方,那么就会记录子节点的信息。不过,要完成整个加入网络的过程,一般还需要子节点发起孤立节点加入网络的过程或者更直接地在子节点进行配置。,加入网络,孤立点加入网络,孤立节点加入网络,这种方式一般用于父节点配置子节点之后,子节点加入网络或者子节点跟父节点通信中断之后重新加入网络。,过程,孤立点,:通过孤立节点扫描的方式寻找,原先的父节点。,如果寻找不到那这个过程就失败了。,而通过连接加入网络以及重新加入方式还可以找其他节点进行加入。,父节点,:原先的父节点收到孤立点的,MAC,层孤立节点通告命令后,查看存储记录中是否有孤立点的对应,IEEE,地址:,如果有,就把,对应的网络层地址,通过,MAC,层孤立节点响应命令告诉子节点。,如果没有,父节点不会有其他操作,这个过程也就失败了。,几种“加入网络”方式的比较,通过请求连接加入网络,PAN ID,、网络地址、父节点都未定。,过程:发现网络、选择要加入的网络、选择父节点、,MAC,层关联、父节点分配地址。,重新加入网络,PAN ID,确定、网络地址未定、父节点未定。,过程:查找特定网络、网络层重新加入、父节点分配地址。,通过配置加入网络,父节点行为;,PAN ID,确定、网络地址确定、父节点确定。,过程:在父节点中直接配置子节点信息。,孤立点加入网络,PAN ID,确定、网络地址确定、父节点确定。,过程:查找原来的父节点、父节点告知原来的网络地址。,加入网络,允许节点加入网络,需要设置“允许加入”参数的几种场景,不同,PAN,:在一个地方可能存在多个网络,节点有可能加入到一个非预先所设想的网络。,不同节点,:一个节点可能通过多个节点加入一个网络,可能希望通过某个或者某些特定节点加入网络。,不同时间段,:一个网络布置完成开始运行之后,可能一段时间之内并不希望其他节点加入网络。,可以设置路由器或者协调器的,网络层属性,PermitDuration,,网络层再设置,MAC,层属性,macAssociationPermit,来设置是否允许其他节点加入网络。,PermitDuration,取值的意义:,0 x00,:表示不允许加入,0 x01-0 xfe,:表示在一段时间内允许加入。,0 xff,:表示允许接入且不限定时间。,加入网络,加入网络的原语过程,网络发现原语:,加入网络,/,重新加入网络之前,需要通过,网络发现原语,进行网络扫描。,应用层通过,NLME-NETWORK-DISCOVERY.request,请求网络层进行网络扫描。,网络层通过,NLME-NETWORK-DISCOVERY.confirm,把结果告诉应用层。,加入网络原语:,加入网络的过程(通过配置方式除外)都由应用层通过,NLME-JOIN.request,原语请求网络层加入网络。加入方式由,参数,RejoinNetowrk,确定:,0 x00,:通过连接加入网络,0 x01,:通过配置或孤立节点加入网络,0 x02,:重新加入网络,0 x03,:改变工作信道,父节点的网络层通过,NLME-JOIN.indicaiton,通知应用层加入的结果。,子节点的网络层通过,NLME-JOIN.confirm,通知应用层加入的结果。,节点离开网络,节点离开网络,节点主动离开网络,:向其相邻节点发送一个离开命令。,节点被动离开网络,:父节点直接发送离开命令道要离开的子节点。,离开命令,的净荷包含三个标志位,Request,:离开类型。,0,表示主动离开,,1,表示被动离开。,Rejoin,:离开后是否需要重新加入。,0,表示不需要,,1,表示需要。,Remove children,:子节点是否同时离开网络。,0,表示不离开,,1,表示离开。,节点离开网络没有用到,MAC,层相关特性的命令,其原语过程包括,NLME-LEAVE.request,NLME-LEAVE.confirm,NLME-LEAVE.indication,特殊情况:节点非正常地离开网络,若子节点移动了、父节点移动了、或者子节点断电了,这时并不会触发离开命令的发送过程。,节点的重启,节点重启,节点可能因为,应用的需要,、,问题的出现,或者,特定的行为,(如上电、离开网络、加入网络等)需要重启。,涉及到的原语有,NLME-RESET.request,NLME-RESET.confirm,参数:,WarmStart,TRUE,:热启动,保留网络层所有属性值。,FALSE,:冷启动,网络层属性恢复为默认值。,提 纲,网络拓扑,网络层帧格式,网络的建立与维护,编址,单播路由,网络层属性管理,编址,编址(,Addressing,),给节点设定地址的操作,称为编址。,ZigBee,采用了,分布式,的编址方法,没有唯一的一个地址分配节点,协调器和路由器都可以进行地址分配。,ZigBee,的分布式编址方式又包括,树形编址,:从,ZigBee2004,版本就存在的编址方式;,随机编址,:在,ZigBee2007,版本中添加的编址方式。,树形编址,(P119),树形编址是,ZigBee,当中,默认的地址分配机制,(,nwkAddrAlloc=0 x00,),树形地址分配方式中的三个参数,子节点最大数目,,,nwkMaxChildren(,Cm,),子节点当中路由器的最大数目,,,nwkMaxRouters(,Rm,),网络最大深度,,,nwkMaxDepth(,Lm,),协调器的深度为,0,,而其他节点的深度由父节点的深度决定,即子节点的深度为父节点的深度加,1,。,子节点的地址由父节点计算得到,地址计算的基本思想是:,网络参数一旦确定,每个路由器子节点下面所能带的节点数目是有限的。,对于每个网络深度为,d+1,的路由器子节点来说,它能带的所有子孙节点的最大数目加,1,可以用一个函数,Cskip(d),来表示。,因此父节点分配地址的时候,给网络深度为,d+1,的路由器子节点预留一段大小为,Cskip(d),的地址块,该路由器子节点本身取地址块的第一个地址。,地址偏移量,Cskip(d),计算公式:,当一个路由节点的地址偏移量,Cskip(d),为,0,时,该节点就不再具备有给它的子节点分配地址的能力了,就是说再不能通过该节点来给新入网的节点加入网络。,当一个路由节点的地址偏移量,Cskip(d),大于,0,时,它可以继续接受新入网的子节点。,不同类型节点的地址分配,基本原则:,路由器子节点地址在前,末端子节点地址在后。,路由器子节点,假设当前节点的地址为,A0,,第一个新加入的路由器子节点的地址就是,A0+1,;以后每次新加入一个路由器子节点,都会以,Cskip(d),为增量来分配网络地址。,假设,Rn,是第,n,个加入的路由器子节点,则,Rn,的地址为:,ARn=A0+,Cskip(d)(n-1),+1,1RnRm,末端子节点,根据新加入末端子节点的顺序连续分配地址。,设,En,是第,n,个加入的终端子节点,那么,En,的地址为:,AEn=A0+,Cskip(d)Rm,+n,1 n (Cm-Rm),树形地址分配方式的问题,缺点:,由于网络参数都需要提前确定,因此,网络的拓扑受到很大的限制,还可能会造成地址浪费的问题,。,例如,Cm=3,、,Rm=3,、,Lm=3,时,网络最大规模为,40,,,网络结构已经到达极限,子节点无法再接受新节点。,(1,3,9,27),虽然网络还有很多剩余的地址,,但是给每个子节点预留的地址段都是一定的,这些剩余地址都,无法使用。,不合理设置,Rm,、,Cm,、,Lm,的值,会导致网络内节点数目超过,65535,节点数目限制,。,从上表可以得出结论:,将,Cm,或,Rm,增加,1,,是允许的;但,Lm,增加,1,是不允许的,,,因为它明显导致节点总数超过,65535,这个极限值,。,将,Rm,增加,2,也会导致节点总数超过,65535,极限值,,,也是不允许的,。,不同参数对网络容量的影响,Cm,值增长对网络容量的影响,最小;,Rm,值增长对网络容量的影响次之,,,为,系数的增长,;,Lm,值增长对网络容量的影响,最大,为,指数倍的增长,。,一般应用中,,Cm,、,Rm,、,Lm,单值,最大值是,20,、,20,、,8,。具体取值,可以根据自己的应用来改变,但要符合两点:,(,1,),不能超过,Cm,、,Rm,、,Lm,单值最大值是,20,、,20,、,8,;,(,2,),其组合值按上述公式计算不能超过节点总数,65535,极限值。,随机编址,随机编址,节点加入网络时,它的父节点只需要给它分配一个随机产生的地址。,随机分配地址容易产生地址冲突。,为了尽量避免和已有地址的冲突,父节点在分配地址之前需要检查已知的地址,包括,邻居表、路由表、路由记录表,等当中存储的地址信息。,即使这样,也无法完全避免地址冲突的问题,因为父节点所知道的地址一般都,只是部分网络节点的地址,。,在协议中保留了一个选项供网络使用者决定,是否引入这个解决机制,,如果,nwkUniqueAddress=TRUE,,则关闭这个机制;否则打开这个机制。,地址冲突检测,检测地址冲突,节点根据网络地址对所有帧进行转发,根据,命令帧所携带的,IEEE,地址,进行冲突检测。,几种冲突情形,目的节点检测到冲突,:目的节点收到命令帧的目的,IEEE,地址跟自己不符合。,某节点与自己的地址冲突,邻居节点检测到冲突,:邻居表中存储了相邻节点的网络地址和,IEEE,地址,若收到的帧当中的网络地址或,IEEE,地址对应于已存储的地址,但对应关系不符合。,某节点与邻居的地址冲突,广播中检测到冲突,:收到的广播帧的源地址跟自己的网络地址相同。,源节点与自己的地址冲突,还会有漏网之鱼,地址冲突的解决,Case 1,:,路由器发现自己,的网络地址冲突,重新为自己分配一个新的地址。,Case 2,:,末端节点发现自己,的网络地址冲突,发起重新加入网络过程,请求父节点分配新地址。,Case 3,:,路由器发现子节点,的网络地址冲突,直接发送一个重新加入应答命令为子节点分配一个新地址。,Case 4,:,路由器发现其他节点,的网络地址冲突,广播一个网络状态命令(有时限)到所有设备,携带冲突的网络地址;,其他非冲突节点广播收到该网络状态命令后进行一次广播;,Case 4.1,:,若冲突节点为路由器,,收到命令后重新为自己分配一个新地址;,Case 4.2,:,若冲突节点为末端节点,,其父节点收到该命令后发送重新加入应答,为冲突的子节点分配新地址。,提 纲,网络拓扑,网络层帧格式,网络的建立与维护,编址,单播路由,网络层属性管理,单播路由,路由,网络通信当中一个节点(源节点)寻找到另一个节点(目的节点)的过程。,通信方式:,单播(,unicast,):“一对一”通信,广播(,broadcast,):“一对所有”通信(注意与物理层无线广播的不同),组播(,multicast,):“一对多”通信,路由协议,是,ZigBee,网络的核心,是节点之间进行通信而采用的协议,主要由路由算法实现。,路由算法的设计目标,(,1,)简单、高效、控制开销小。,(,2,)无环路、快速收敛。,(,3,)健壮、稳定、灵活。,(,1,)简单、高效、控制开销小,ZigBee,无线传输带宽有限,传送控制开销不可避免地消耗掉一部分带宽资源,因此路由算法首先应尽量简单可靠,并具有选择最佳路径的能力,这样有助于减少各种开销。,比如不能在节点保存太多的状态信息,节点间不能交换太多的路由信息等。,(,2,)无环路、快速收敛,路由算法必须能够保证不会产生路由环路,并且能快速收敛。,由于,ZigBee,网状网络是动态的,随时处于变化之中,会导致大量已有路由信息在短时间内作废,从而更容易产生路由环路。,路由算法必须对拓扑的变化具有快速反应能力,在计算路由时能够快速收敛,及时获得有效的路由,避免出现目的节点不可达的情况。,(,3,)健壮、稳定、灵活,路由算法必须健壮,即在出现不正常或者不可预见事件的情况下仍然能正常处理,例如硬件故障、高负载和不正确的实现方法等。,路由算法还应该是灵活的,即它们应该迅速、准确地适应各种网络环境,例如,当发现网络中出现链路中断,路由算法要迅速选择次佳的路径。,路由,对于应用层来说是完全透明的,应用程序只需要简单地向下发送去往任何设备的数据到栈中,栈会负责寻找路径。应用程序并不知道操作是在一个多跳的网络当中的。,类比:寄包裹,无需知道包裹在路上是如何运输的。,原来是透明的,一方寄出,另一方接收,中间是黑箱子。,快递行业的发展使得我们能看到部分信息,但是我们看或者不看,包裹依然在路上。,树路由,树路由,是,ZigBee,当中最基本的路由方式,又称为等级路由(,hierarchical routing,)。,由网络层,属性,nwkUseTreeRouting,来设置是否使用树路由:,TRUE,表示使用,,FALSE,表示不使用。,注意:即使,nwkUseTreeRouting=TRUE,也不表示节点一定使用树路由方式,有时候树路由只是做为一种最后的手段。,数据包沿着树的路径传递,它,依赖于树形编址,。,Cluster-Tree,路由算法,ZigBee,网络的树型拓扑结构中,每一个父节点可以同时有多个子节点;,但是一个子节点却只能有一个父节点。,按照这种方式形成了一颗树。,在路由的时候就按照树的父子节点来查找,这种方式称之为,Cluster-Tree,算法,。,Cluster-Tree,路由算法流程,在,Cluster-Tree,过程中,节点直接通过数据包中的,目的节点地址,来计算下一跳的地址。,通常的做法是将其简化为上行路由或者下行路由。,上行路由:下一跳为当前节点的父节点。,下行路由:下一跳为当前节点的子节点。,Cluster-Tree,路由算法流程,(P129),记,当前节点地址是,A,,,目的节点的地址是,D,,,当前节点深度为,d,:,若,D=A,,则当前节点为目的节点,无需再转发。,若,A D A+Cskip(d-1),,转发给子节点。,若,A+(k-1)Cskip(d)D A+k Cskip(d),,转发给第,k,个路由器子节点;,(,1kRm,),若,D=A+RmCskip(d)+j,,转发给第,j,个末端子节点;,(,1jCm-Rm,),若,D A+Cskip(d-1),,转发给父节点。,Cluster-Tree,算法,优缺点,优点,除了必需的几个网络拓扑参数之外,,不需要存储其他的信息,。,不需要路由发现过程,,,计算也比较简单,。,缺点,由于只能沿着树的路径来传递数据,,路径单一,,,效率通常较低,,而且,可靠性不足,。,由于,Cluster-Tree,算法这种直接由子节点或者父节点来发送,因此节点不能够走最优的路径,相对来说,所走的路径都会比较偏长,也会给分组的传输带来很高的延时,而且深度较低的节点对于数据量的转发会比较大,给节点带来很大的负载,很容易造成节点的流量分配不均衡。,网状网路由,网状网路由,对于网状拓扑结构,多采用动态路由协议,如,ZigBee,Ad-hoc On-demand Distance Vector,Routing(,ZAODV,),;,ZAODV,与自组网中的经典,AODV,协议不完全一样,准确地说是一种简化版本的,AODV junior(,AODVjr,),。,AODV,是反应式路由协议,当向目的节点发送包时,源节点才在网络中发起路由查找过程,找到相应的路由。,(,on-demand,,按需),因特网路由协议,是先验式的,查找路由不依赖于路径上的节点是否要发包,而是每个节点维护一张包含到达其它节点的路由信息的路由表。,节点间通过周期性的交换路由信息来不断更新自身的路由表,以便能够及时的反映网络拓扑结构和变化,以维护一致的、及时的、准确的路由信息。,路由成本(,P126,),网状网路由,需要,寻找一条从源节点到目的节点“最佳”的路径,。衡量最佳的标准就是“路由代价”。,最简单是,用跳数来衡量,:即认为从源节点到目的节点数据包,转发次数最少的路径,是最佳的。,但是有时候这个想法不一定正确。,例如,S,到,D,如果直接发送只需要一跳,但是由于物理距离较远,发送成功率只有,30%,,而如果经过,M,转发到,D,,那需要经过两跳,但是由于,S,和,M,,以及,M,和,D,之间的物理距离比较近,发送成功率有,90%,。,从跳数上来衡量,从,S,直接到,D,的路径应当是最佳的,但是实际由于发送成功率较低,多数传输都需要重传,相对于经过,M,中转的路径来说,平均发送的次数要更多,延时会更长,尽管可能个别的传输从,S,直接到,D,不需要重传,效率会更高。,ZigBee,中,综合考虑跳数和传输成功率,。路径的代价是每一跳代价的和,每一跳的代价是一个,07,之间的整数,如果以跳数来衡量路由代价,每一跳的代价为常数,7,。,如果以传输成功概率来衡量,每一跳的代价是,min7,round(1/p,4,),,其中,round(x),表示,x,四舍五入的值。,例如,当传输成功概率,p=80%,那么这一跳的代价应该是,2,。,可以看到,,传输成功概率代价不会高于跳数代价,。,网络层通过,nwkReportConstantCost,参数来确定衡量方式,nwkReportConstantCost=TRUE,,用跳数做为路由代价;,nwkReportConstantCost=FALSE,,用传输成功概率衡量代价。,传输成功概率如何计算,路由器可能统计以往发送数据的,成功率,来确定路由代价;,也可以通过其他方法估计,如根据,链路质量,LQI,,,MAC,层给网络层提供,LQI,的测量参数,网络层根据,LQI,的值直接估计出路由代价。,路由能力,ZigBee,定义了“路由表能力”和“路由发现表能力”,具有路由表和路由发现表的节点被称为,有路由能力的节点,。,路由表能力,:,存储路由的能力。,节点需要维护路由表。,路由发现表能力,:,寻找路由的能力。,节点需要维护路由发现表。,路由表,路由表(每项所包含的)信息,目的地址,:单播网络地址或者组播地址。对于树路由,该域保存父节点地址。,下一跳地址,:到目的节点的下一跳节点地址。,状态,:该路由项的状态。,0 x00 x4,分别表示当前有效,(ACTIVE),、正在进行路由发现,(DISCOVERY_ UNDERWAY),、路由发现失败,(DISCOVERY_FAILED),、非活跃,(INACTIVE),、正在验证有效性,(VALIDATION_UNDERWAY),等状态。,路由发现表,路由发现表(每项所包含的)信息,路由请求,ID,:路由请求命令序列号,每次发起新的路由请求序列号增加,1,。,源地址,:发起路由请求的设备地址。,发送节点地址,:对应最低代价路径的发送路由请求命令的节点。,上一跳地址,前向代价,:从源节点到本节点累积的路径代价。,剩余代价,:从本节点到目的节点累积的路径代价。,过期时间,:表项有效时间,初始值为,nwkcRouteDiscoveryTime,。,路由建立过程,ZigBee,网状网路由是一种按需路由,在有需要的时候才建立。,“有需要”就是有数据要发送,并且在网络层路由表当中找不到有效的路由表项(路由匹配)。,路由建立过程可分为两个阶段,从源节点开始寻找到目的节点的正向过程;,从目的节点返回源节点的反向过程。,链路的对称性,对称链路,:,A,到,B,的发送成功率跟,B,到,A,的发送成功率是一样的。,非对称链路,:由于干扰的不对称、发射功率的不等、接收机性能的不同等因素会造成,A,到,B,的发送成功率跟,B,到,A,的发送成功率是不同的。,两个人说话:一人戴耳机、一人拿喇叭、一人听力弱,路由建立,正向过程,(,1,)从源节点开始广播,路由请求命令,。,包含,路由请求序号,、,目的节点地址,和,累积路径代价,等参数。,(,2,)节点收到路由请求命令后,如果是,目的节点,(或者是目的节点的父节点),就,进入反向过程,。,如果是,中间节点,,则,继续转发,(即广播)路由请求。,如果中间节点以前没有收到过相同的路由请求命令,则把路由请求的内容,记录在路由发现表中,,更新累积代价。,注 意,前向代价的计算,节点收到路由请求命令后,把命令所携带的累积代价加上本段链路的代价,形成新的累积代价。然后对路由发现表和路由请求命令中的相应域进行更新。,如何判断路由请求是否相同,路由请求序号,和,源地址,是唯一识别路由请求命令是否相同的依据。,再次收到路由请求命令,比较新旧累积代价:,如果已记录的代价值较高,说明新路径更佳,此时更新前向代价和发送地址,然后重新广播路由请求命令。,如果已记录的代价值低或者相同,说明新路径并不比已知的好,直接丢弃路由请求命令。,剩余代价,在正向过程当中这个代价是未知的。,注 意,为什么要在网络层净荷中携带目的地址?,路由请求命令是,广播命令,,网络层帧头中包含的目的节点地址是广播地址,而不是需要建立路由的目的节点地址。,发送节点和源节点的区别,发送节点地址就是,上一跳节点,的地址。最初是源节点,之后便是相应的中间节点。,有效时间:,路由发现表项只是用来辅助生成对应路由表项的,过期之后,无论路由有没有建立起来都可以把路由发现表项删掉。,建立路由表项,此时路由还没有建立起来,其状态为,DISCOVERY_UNDERWAY,,表示该路由表项正在进行路由发现过程,将要建立起来。,路由建立,反向过程,(,3,)目的节点处理完路由请求命令后,,原路返回,一个,路由应答命令,,该命令采用单播方式发送。,在,首次收到路由请求命令,、或者,收到的路由请求命令的累积代价更低时,,返回一个路由应答命令。,命令当中带有,路由请求序号,、,生成节点地址,、,响应节点地址,、,累积代价,等参数。,路由建立,反向过程,路由请求序号,:是所对应的路由请求命令当中所带有的序号值。,生成节点地址,:原路返回的下一跳的地址,也就是路由发现表项当中记录的发送地址。,响应节点地址,:所对应的路由请求命令的目的节点地址域,也就是要建立的路由的目的地址。,路径代价,:从当前节点到目的节点的累积代价。(,有方向性,),路由建立,反向过程,(,4,)路节点收到路由应对
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服