在路由过程中设计到路由表,路由搜索表(中文翻译过来不同版本有点差别),邻居节点表,RREQ,RREP、RERR。
首先必须将这些最基本的东西弄清楚。
路由表:包含此条路由下一跳节点地址,路由状态,目的地址。 路由搜索表:在路由表建立过程中存在。
包含以下信息:Route request ID:发起路由请求的节点产生的序列号,越大则表示分组越新:
Source address:发起路由发现的节点的地址:
Sender address:将路由请求分组发送给此节点的节点的地址:
Forward cost:发起路由发现的节点到此节点路径的开销,即路由请求分组中携带的开销;
Residual cost:此节点到目的节点的开销,即路由应答分组中携带的开销;
Expiration time:路由建立过程的有效时间。
邻居表: ZigBee网络中的每个节点都保存一张邻居节点列表,用来存储此节点传输范围内其它节点的信息。
PANId:邻节点PAN标识符; Extended address:邻节点的64-bit IEEE扩展地址,邻节点与本节点存在父子关系时记录此条信息;
Network address:邻节点16一bit网络地址; Device type:邻节点类型(0x00=ZigBee协调点,0x01=ZigBee路由节点,0x02= ZigBee终端节点);
Relationship:邻节点与当前节点的关系(0x00=父节点,OxOI=子节点,0x02=其 它)。
节点交互的分组:
ZigBee网络层的控制分组包括路由请求(RREQ,Route Request)分组,路由应答(RREP,Route Reply)分组和路由出错(RERR,Route Error)。 RREQ分组:
ZigBee网络中具有路由功能的节点可以向周围邻节点广播一个RREQ分组,目的是
为了找到一条通往它希望到达的目的节点的有效路径。 具体内容如下:
Command frame identifier:指出此控制分组的类型(0x01=RREQ,0x02=RREP,0x03
=RERR):
Command options:指出此路由请求分组是否是在路由修复过程中产生的; Route request ID:发起路由请求的节点产生的序列号,越大则表示分组越新;
Destination address:发起路由请求的节点希望建立的路径的目的地址; Path cost:指从P.REQ的发起节点到当前接收RREQ的节点的路径开销。 RREP分组:
RREQ分组希望到达的目的节点收到RREQ后向RREQ分组的发起节点回复一个 RREP分组。 具体内容如下:
Command frame identifier:指出此控制分组的类型(0x01=RREQ,0x02=I砒P,0x03
=RERR):
Command options:指出此路由应答分组是否是在路由修复过程中产生的: Route request ID:此分组所应答的路由请求分组的路由请求标识符;
Originator address:发起路由请求的节点的网络地址; Responderaddress:该条路由的目的节点地址,即响应RREQ的节点的网络地址:
Pathcost:从发起RREP的节点到当前接收RREP的节点的路径开销。
RERR分组:
当节点转发数据分组失败时将产生一个RERR分组,目的是为了通知此数据分组的源节点分组转发失败。
Command frame identifier:指出此控制分组的类型(Ox01=RREQ,0x02=RKEP,0x03
=RERR);
Error code:指出路由出错的原因:
Destination address:指被转发失败的数据分组的目的地址。
下面是我根据以上基础知识自己对路由建立过程的理解:首先源节点通过广播发送RREQ分组,具有路由功能的节点收到此信息后,建立反响路由,并转发RREQ分组,并将源节点到此节点的路由开销添加到路由搜索表和RREQ中,知道目的节点收到此RREQ,实际中可能有多条路径到达目的节点,目的节点根据路由开销选择路由开销最少的反向路由,将RREP发送给源节点,中间几点收到RREP也要添加此节点到目的节点的路由开销到路由搜索表和RREP中,最终到达源节点。路由搜索表清楚,各个节点路由表建立。 以上只是个人一点理解。望各位多多交流,指点。
|