====Source Routing实例和实验==== 四个实验节点,中间两个点信号强,两端信号PL设置为弱,以便在实验室下创造一个跳点。注意DO用默认的40,也就是High RAM模式运作就可以了。 在协调器端开启AR=6, 协调器60秒广播一个MTO包,节点发数据时,会先产生个路由包给到协调器,整个网络拓扑如下:\\ 协调器:13a2..E453(0) ------路由跳点(B509或7C17)------ 路由节点13a200..E568 协调器收到的E568路由指示帧(0XA1): 7E 00 0F A1 00 13 A2 00 41 82 E5 68 C7 E6 00 01 B5 09 2D --------节点的MAC----- 短地址 跳点数量 跳点短址 这说明经过B509跳点,如果按原路回去,创建0x21路由帧,由xctu的组帧工具得到: 7E 00 10 21 00 00 13 A2 00 41 82 E5 68 C7 E6 00 01 B5 09 AD 注意:0x21创建路由帧长度和0xA1路由指示帧不一样,比路由指示帧要多一个字节,这里因为framID=00要占一个字节 在采用Source Routing的方式发送时,总是发两个帧:0x21创建路由帧和0x11/0x10发送帧。 我们怎么知道这个0x21创建的帧有没有起作用呢?一个简单的方式是,故意把中间点断电,还继续用它作为跳点创建0x21帧,然后发送帧,这样发送就不成功了,会显示24地址未找到错误。可见0x21是有用的,而且接着0x21后马上发的0x11帧,会采用该路由去发送。 我们虽然把跳点停电了,因为MTO还在发,因此路径会被修复,节点可以找另一跳点发数据过来,因此如果节点向协调器发数据,我们会收到新的A1路由帧。一般程序可以用它作为跳点,但实际上经过测试,0x21帧是可以指定路由的,只要这个路由会通,即使和A1路由帧不一样,它也是能把数据发到末端节点上。不过,如果用0x21指定的路由坏了或不存在,那么该指定路由就会发不通,而收到的0xA1路由帧总是表示该路径是通的,就能保证自组网和路径自我修复机制能正常运作。 两个跳点的情况一样的: 协调器收到的路由指示帧: 7E 00 11 A1 00 13 A2 00 41 82 E5 68 C7 E6 00 02 [B5 09 7C 17] 99 创建0x21帧: 7E 00 12 21 00 00 13 A2 00 41 82 E5 68 C7 E6 00 02 [B5 09 7C 17] 19 注:上面跳点列表顺序用中括号括起来