收到另一个想要加入网络节点发出的quen^消息后,如果同 意加入,则把该节点加入自己的邻居节点表中。
[0139] 用heart beat来维护邻居节点表。
[0140] (3)已处理数据包表
[0141] 表5已处理数据包表
[0142]
[0143] 当数据包的目的地是本节点或本节点对该数据包进行了转发,则把数据包的相关 信息记录在已处理数据包表中。一条记录存在的最大时间为8秒,如果超过了该时间,则把 该记录移除。
[0144] (4化xRouting字段节点加入过程
[0145] 在数据包中,有两个字段,分别是ExRouting和InsedPsEsRouting是指在数据包 中已经排除的节点列表;InsertP是指下一个节点加入到ExRouting中的位置。当有节点想 加入到ExRouting时,就把该节点插入到Ins&rtP所指向的位置,此时InsedP自动向后移动 一个位置,当InsedP到达末尾时,则会重新指向ExRouting的第一个位置。
[0146] 如果要加入的节点在Exrouting已经存在时,则该节点不会再次加入。
[0147] (5)路由实现 [014引①线程
[0149] 路由协议由Ξ个线程组成,一个线程是routing用来路由,一个线程是heart beat 线程用来维护邻居节点表,一个线程是check_pack_time用来维护已处理数据包表。
[0150] 当receive_msg线程收到一个要路由的数据包,则通知路由线程routing,并把数 据包传递给routing线程,如果需要转发该数据包,则routing线程通知send_msg线程,把新 的数据包传递给sencLmsg线程。
[0151] CellNet中各个线程完成不同的功能,除了 W上提到的线程外,CellNet中还有一 个线程用于上层APP的消息请求一一service线程。为了使各个线程能够有效的协作, Cel INet 在主线程中创建Send_Syn、Send_Sys、Msg_Queue、40(_如6116、HBACK_Queue、QACK_ Queue、ContactList等资源,从而使得线程之间能够有效的交互数据。其中,
[0152] (l)Send_Syn用于存放将要发送的文本消息;
[0153] (2)Send_Sys用于存放系统消息,如皿消息和如eiy消息;
[0154] (3)Msg_Queue用于存放收到的普通消息;
[01W] (4)ACK_Queue用于存放对普通消息确认的消息;
[0156] (5)HBACK_Queue用于存放皿消息的回复消息;
[0157] (6) QACK_Queue用于存放如eiy消息的回复消息。
[015引(二)线程间关系概要如表6,
[0159]表6线程关系 「01601
[0161] ~(l)query线程与其它线程的关系如图7所示,
[0162] 线程执行的逻辑顺序如下:
[0163] ① query线程将待发送的如日巧消息放入Send_Queue中,然后等待该消息的QACK消 息;
[0164] ②send_msg线程从Send_Queue取出待发送的如eiy消息、发送;
[01化]③receive_msg线程将受到的QACK消息放入QACK_Queue中;
[0166] ④query线程将对如eiT消息确认的QACK消息从QACK_Queue中取出、更新当前终端 的 contactList表。
[0167] (2化eadbeat线程与其它线程的关系如图8所示,
[0168] 线程的逻辑执行顺序如下:
[0169] ① heartbeat线程将皿小放入SemLQueue中,然后等待对运些消息响应的HBACK_ 如eue消息;
[0170] ②send_msg线程从Send_Queue中取出皿消息、发送;
[0171 ] ③receive_msg线程将收到的HBACK消息放入HBACK_Queue中;
[0172] ④heartbeat线程从HBACK_Queue中取出对皿响应的HBACK消息、更新contactList 表。
[0173] (3)service线程与其它线程的关系如图9所示,
[0174] 上层应用直接通过调用service线程提供的服务,把待发送的消息放入Send, 如eue中,并把Msg_Queue中的消息取出。
[0175] 如图10所示,A节点为起始节点,B节点为目的节点,A节点向下一节点发送数据包, 下一节点在接收数据包时,首先通过自身的已处理数据包表来判断该数据包是否被本节点 处理过,如果未被处理过,则查看该数据包的转发目的地是否为本节点,如果不是,则更新 该数据包中的发送节点并转发给运些发送节点,直到最后数据包转发到目的节点B,从而实 现了数据包在发送过程中动态生成整个路由路径A^B。
[0176] 本发明已经通过上述实施例进行了说明,但应当理解的是,上述实施例只是用于 举例和说明的目的,而非意在将本发明限制于所描述的实施例范围内。此外,本领域技术人 员可W理解的是,本发明并不局限于上述实施例,根据本发明的教导还可W做出更多种的 变型和修改,运些变型和修改均落在本发明所要求保护的范围W内。
【主权项】
1. 基于蓝牙技术的手机自组通信网络CellNet的组网和路由算法,其特征在于:包括以 下步骤: (a) 组网阶段:将节点接入到蓝牙网络中,并更新该节点的contact1ist中的邻居节点; (b) 更新阶段:实时更新当前节点的contact1ist中各个邻居节点的信息; (c) 发送阶段:当前节点将普通数据包或者系统数据包发送至下一节点; (d) 路由阶段:当一个节点接收到另一个节点转发来的数据包时,通过已处理数据包表 来查看该数据包是否已经处理过,如果是,则丢弃该数据包; 如果该数据包未被处理过,则查看该数据包的转发目的地是否为本节点,如果是,则本 节点处理该数据包,并且不进行数据转发; 如果该数据包的转发目的地不是本节点,则查看数据包中的消息存活时间TTL是否大 于20hop,如果TTL大于20hop,则直接丢弃该数据包,否则本节点进行路由转发; (e)接收阶段:下一节点根据收到的数据包类型,作出相应的响应动作。2. 根据权利要求1所述的基于蓝牙技术的手机自组通信网络CellNet的组网和路由算 法,其特征在于:所述组网阶段的具体过程为: (al)当有节点尝试接入蓝牙网络时,该节点会发出请求信号,该蓝牙网络中的节点会 根据收到请求信号而回复确认消息或拒绝消息;如果该节点收到的是确认消息,则表示该 节点可以加入该蓝牙网络,并根据收到的确认消息更新该节点的contact1ist,发送确认消 息的节点同时也更新自己的contact1ist; (a2)如果该节点收到的是拒绝消息,则组网失败。3. 根据权利要求1所述的基于蓝牙技术的手机自组通信网络CellNet的组网和路由算 法,其特征在于:所述更新阶段的具体过程为: 当某一节点启动时,该节点周期性地向其contact1ist中的各个节点发送心跳消息,根 据各个节点是否做出回复来更新本节点contact1ist中各个节点的状态; 如果一个节点回复确认信息,则继续将该节点视为本节点的邻居节点; 如果一个节点不回复确认消息,则将该节点从本节点的邻居节点集中删除。4. 根据权利要求1所述的基于蓝牙技术的手机自组通信网络CellNet的组网和路由算 法,其特征在于:所述发送阶段包括普通数据包发送和系统数据包发送,所述普通数据包的 发送过程为: (cl1)判断普通数据包的源地址,如果是源地址和本地地址相同,则增加重发机制并发 送消息; (cl2)如果是转发的,则直接发送; 所述系统消息的发送过程为: (c21)从节点中取出该系统消息,并直接发送。5. 根据权利要求1所述的基于蓝牙技术的手机自组通信网络CellNet的组网和路由算 法,其特征在于:所述路由阶段中,节点进行路由转发的具体过程为: (d1)获取数据包已经排除的节点集; (d2)通过该节点的contact1ist获得该节点的邻居节点集,并根据已经排除的节点集, 从邻居节点集中筛选出未被排除的节点; (d3)把这些未被排除的节点加入到待转发数据包中,得到新的数据包,然后把新的数 据包转发给刚刚未被排除的节点集中的所有节点。6.根据权利要求5所述的基于蓝牙技术的手机自组通信网络CellNet的组网和路由算 法,其特征在于:所述步骤(d3)中,将未被排除的节点加入到待转发数据包中的具体过程 为: (d31)当有节点想加入到ExRouting中时,把该节点插入到InsertP所指向的位置,此时InsertP自动向后移动一个位置,当InsertP到达末尾时,贝lj重新指向ExRouting的第一个位 置;其中,ExRouting和InsertP是待发数据包中的两个字段,ExRouting是指在数据包中已 排除的节点列表;InsertP是指下一个节点加入到ExRouting中的位置; (d32)当要加入的节点已存在ExRouting中时,则该节点不会再次加入。
【专利摘要】基于蓝牙技术的手机自组通信网络CellNet的组网和路由算法,包括以下步骤:(a)组网阶段:将节点接入到蓝牙网络中,并更新该节点的contactlist中的邻居节点;(b)更新阶段:实时更新当前节点的contactlist中各个邻居节点的信息;(c)发送阶段:当前节点将普通文本消息或者系统消息发送至下一节点;(d)路由阶段:当一个节点接收到另一个节点转发来的数据包时,通过已处理数据包表来查看该数据包是否已经处理过,如果是,则丢弃该数据包,反之则进行下一步;(e)接收阶段:下一节点根据收到的不同消息类型,作出相应的响应动作。本发明采用上述方法,能够减小路由开销,减轻网络负担,避免网络拥堵。
【IPC分类】H04W4/00, H04W40/04
【公开号】CN105491508
【申请号】CN201510381635
【发明人】汤羽
【申请人】汤羽
【公开日】2016年4月13日
【申请日】2015年6月30日