移动无线自组网消息广播和接收的方法及所用终端节点的制作方法

文档序号:7647281阅读:171来源:国知局
专利名称:移动无线自组网消息广播和接收的方法及所用终端节点的制作方法
技术领域
本发明涉及移动无线自组网,特别是指该网络中消息广播和接收的方法 和系统。
背景技术
Ad-Hoc网络是一种无线自组网络,即由一组带有无线收发装置的移动 终端(也称为节点或终端节点)组成的一个多跳临时性系统。系统中,节点 可以自由移动,形成任意的拓朴结构。Ad-Hoc网络中,每个移动终端作为 主机运行面向用户的应用程序;同时作为路由器,运行相应的路由协议,根 据路由策略和路由表参与分组转发和路由维护工作。在Adhoc网络中,两 个相邻的终端可以进行直接的"端到端"通信;由于终端的无线传输范围有 限,两个无法直接通信的终端节点往往要通过多个中间节点的转发来实现通 信。其应用范围可以覆盖工业,商业,医疗,家庭,办公环境,军事等各种 场合。IEEE 802.11标准(以下简称标准)定义了两种组网结构独立基本服 务组IBSS (Individual Basic Service Set)和扩展服务组ESS。其中的独立基 本服务组是一种Ad Hoc组网形式。此外,还有其他物理标准的Ad Hoc网 络,比如HomeRF/Bluetooth/Zigbee。IBSS(AD-HOC)中的节点(或称站点)必须以DCF方式访问信道,DCF 是一种竟争式共享信道技术,基于CSMA/CA(CSMA/Collision Avoidance载 波监听多址接入/碰撞避免)协议,采用冲突避免机制尽量减小冲突碰撞发 生的概率。为了避免隐藏节点的影响,802.11 MAC中规定了 RTS,CTS,ACK 等类型的控制帧,图1所示为带RTS/CTS的DCF机制工作过程。当发射端 希望发送数据时,首先检测介质是否空闲,若是介质为空闲时,送出RTS (Request To Send请求发送),RTS信号包括发射端的地址、接收端的地址、下一笔数据将持续发送的时间等信息,接收端收到RTS信号后,将响应短 信号CTS(ClearToSend),当发射端收到CTS包后,随即开始发送数据包, 接收端收到数据包后,若是CRC检验正确,接收端将响应ACK包。虽然现在Ad Hoc的研究很热门,但决定一种技术能否大规模商用的重 要因素是由市场决定的。从经济方面看,Ad Hoc网络需要解决的主要问题 是寻找一些使它能够从学术圈走向市场的重量级应用。本发明所关注的就是 这些重量级应用当中的一种移动无线自组网消息广播器,该移动无线自组 网是人们拿着具有无线局域网模块的电子设备自由组合而成的网络,可以发 生在任何特定区域,消息广播器的功能是将用户的需求尽可能的传达到特定 区域内所有嵌有无线自组网通讯硬件模块的PDA或者智能手机等终端上。在AdHoc网络中,移动终端发送数据是随机的,很可能会出现很多终 端同时发送大量数据的情况,而发送数据的移动终端又可能是许多其他终端 传递数据的中继或数据接收节点。因此,可能会出现以下几种情况1) 引发广播风暴以图2所示的组网为例,终端A将消息发送到其无线传输范围内的终 端B、 C和D之后,终端C和D又会将该消息发送到终端B。这样, 一个 节点多次收到同 一条内容相同的消息,从而引发广播风暴。2) 发送冲突由于隐藏节点的影响,很有可能某一个终端在不停地发送消息,导致别 的节点无法正确的接收到消息。另外,多个相邻节点都想在某一时刻发送数据,导致无线介质的竟争加 居'L目前业界的一些无线介质竟争标准常常会导致某些节点总会抢到大量的 带宽,从而导致节点之间发送数据的几率不平衡。3) 如果终端A —直在转发别人的消息,也会使得终端A没有时间来发 送其用户编辑的消息。发明内容本发明要解决的技术问题是提供一种移动无线自组网消息广播、接收方 法及其系统,可以将用户的消息传达到移动无线自组网中所有的终端,并尽 量避免发送冲突和广播风暴。为了解决上述技术问题,本发明提供了 一种移动无线自组网的消息广播 和接收方法,在消息包结构中包含发送该消息包的节点的相邻节点信息,其中消息广播过程包括以下步骤(a) 节点将本地创建的消息包或收到的消息包放入消息队列,在前一 消息包发送完成后,取出消息队列中最前面的消息包准备发送;(b) 将本节点的相邻节点与该消息包緩存的相邻节点进行比较,当相 同节点的比例或个数未超过设定阈值时,更新该消息包中緩存的相邻节点信 息,执行下一步;(c) 将该消息包交驱动层广播发送; 在消息接收过程包括以下步骤(A)节点收到消息包;(B )才艮据该消息包中的相邻节点信息,在本地緩存消息包发送节点的 相邻节点信息或更新已保存的该节点的相邻节点信息;(C)对该消息包进行转发和显示处理。进一步地,上述方法还可具有以下特点步骤(a)按以下排序规则中 的 一个或任意组合将消息包放入消息队列规则一,将消息分为多个优先级,其中原创消息包的优先级高于转发的 消息包,对于同 一优先级的消息包按照时间顺序来决定消息在队列中的位 置,高优先级的消息包可以插入到低优先级的消息包前面;规则二,对于要转发的消息包,如果队列中最后N个消息包的源地址 相同而新来的消息和它们的源地址不同,那么,新来的消息包可以插到队列 最后N-l个消息包前面。进一步地,上述方法还可具有以下特点所迷规则一中,在将高优先级的消息包插入到低优先级的消息包前面时,如果两个高优先级的消息包在消 息队列中的位置相邻,则至少要间隔一个低优先级的消息包。进一步地,上迷方法还可具有以下特点在消息包结构中还包含发送该消息包的节点的消息发送信息,而在节点 上緩存本节点和周边节点的消息发送信息,本节点的消息发送信息中包含该节点消息发送队列中各个消息包的发送时间段信息,周边节点的消息发送信 息中包含相应节点的标识及其消息发送队列中各个消息包的发送时间段信 息;节点在一个时间段发送一个消息包,时间段长度对各节点是统一设定的;步骤(a)将消息包放入消息队列时,按以下方法选定其发送时间段, 然后更新緩存在本地的本节点消息发送信息;如不插队,查找本节点和周边节点的消息发送信息,将最靠前的没有被 占用的空闲时间段作为其发送时间段;如插队时,插入队列的消息包占用紧挨其后的消息包的发送时间段,而 后者占用紧随其后的消息包的发送时间段,依此类推,对消息队列的最后一 个消息包,则重新查找本节点和周边节点的消息发送信息,将最靠前的空闲 时间段作为其发送时间段;步骤(c)中是在预定的发送时间段内将该消息包交驱动层广播发送;步骤(B)还根据消息包中包含的信息,在本地添加消息包中发送节点 的消息发送信息或更新已有的该节点的消息发送信息。进一步地,上述方法还可具有以下特点所述相邻节点信息包括相邻节 点的个数信息和相邻节点的标识信息;步骤(b)更新该消息包中緩存的相邻节点时,是按本地緩存的相邻节 点的相邻节点个数的多少按序排列,得到相邻节点序列;步骤(B)还根据消息包中包含的信息,同时更新本地緩存的消息包相 邻节点序列当中与接收节点相邻的节点的消息发送信息,如该节点是消息包 相邻节点序列中相邻节点个数排在第N位的节点,则在该节点的消息发送 信息中添加该消息包的发送时间段信息,该发送时间段为接收节点的第N个空闲时间段。进一步地,上述方法还可具有以下特点所述消息包的发送时间段信息为时间段的起始时刻,称为发送时刻;所迷消息发送信息包括a)消息队 列首个消息包的发送时刻;b)消息发送时刻表表项总数;c)消息队列发送时 刻表,每一表项记录了消息队列中一个消息包的发送时刻。进一步地,上述方法还可具有以下特点所述消息发送信息中还包括各 个消息包的发送信道信息;步骤(a)将消息包放入消息队列时,还按以下方法选择其发送信道如不插队,判断C-T是否大于等于S,如果没有,就选择上一个消息 包所采用的信道,否则就更换为另一个信道;其中,C表示该消息包的发送 时刻,T表示队列中上一个不同信道的消息包的发送时刻,S表示当前选定 或随机选定的信道切换时间间隔;如插队,则以紧挨其后的消息包的发送信道为其发送信道,而后者也以 紧随其后的消息包的发送信道为其发送信道,依此类推,对消息队列的最后 一个消息包,按上述不插队时的相同方式来选定一个发送信道;步骤(c)发送消息包时,先判断要转发消息包预定的信道和当前信道 是否相同,如果不相同,先切换到预定信道后,再进行后续发送步骤。进一步地,上述方法还可具有以下特点步骤(c)在发送时间段中, 节点是随机选择一个时机发送所述消息包,如杲发送成功,需更新本地緩存 的本节点消息发送信息中的消息队列首个消息包的发送时刻。进一步地,上述方法还可具有以下特点在消息包结构中还包含该消息 包的已经过节点信息;步骤(b)中还将本节点的相邻节点与该消息包緩存的已经过节点进行 比较,对得到的两个比例值或个数加权后再与设定阈值比较,如未超过设定 阈值时,符合转发条件,在消息包中的已经过节点不包括本节点时,将本节 点标识添加到该消息包中的已经过节点标识中,执行步骤(c)。进一步地,上迷方法还可具有以下特点步骤(B )还判断消息队列中是否存在消息标i只和源地址都与收到的消 息包相同的消息包如果存在,在消息包结构中包含该消息包的已经过节点信息时,将该消 息包中的已经过节点标识合并到消息队列中相同消息包緩存的已经过节点 标识当中,然后丢弃收到的该消息包,否则直接丟弃;如果不存在,执行步骤(C)。 进一步地,上述方法还可具有以下特点步骤(C)进行显示处理时,先按照用户设定的过滤规则检查消息内容, 如可以显示,则将消息显示在用户图形界面上供用户浏览,否则,不显示, 结束。进一步地,上述方法还可具有以下特点步骤(b)如超过设定阈值,判 断消息包不符合转发条件时,和/或步骤(c)发送失败时,将所述消息包重 新放入消息队列的末尾。为了解决上述技术问题,本发明还提供了 一种移动无线自组网的消息广 播方法,在消息包结构中包含已经过节点的信息,其中消息广播过程包括以 下步骤(a) 节点将本地创建的消息包或收到的消息包放入消息队列,在前一 消息包发送完成后,取出消息队列中最前面的消息包准备发送;(b) 将本节点的相邻节点与该消息包緩存的已到过节点进行比较,当 相同节点的比例或个数未超过设定阈值时,在消息包中的已经过节点不包括 本节点时,将本节点标识添加到该消息包中的已经过节点标识中,执行下一 步;(c) 将该消息包交驱动层广播发送。为了解决上述技术问题,本发明还提供了一种移动无线自组网的消息广播和接收方法,其中消息接收过程包括以下步骤 (A)节点收到消息包;(B )判断消息队列中是否存在消息标识和源地址都与收到的消息包相 同的消息包,如果存在,丢弃收到的该消息包,如果不存在,执行步骤(C)。(C)对该消息包进行转发和显示处理。进一步地,上述方法还可具有以下特点在消息包结构中还包含该消息 包的已经过节点信息;消息广播过程包括以下步骤(a) 节点将本地创建的消息包或收到的消息包放入消息队列,在前一 消息包发送完成后,取出消息队列中最前面的消息包准备发送;(b) 将本节点的相邻节点与该消息包緩存的已到过节点进行比较,当 相同节点的比例或个数未超过设定阈值时,在消息包中的已经过节点不包括 本节点时,将本节点标识添加到该消息包中的已经过节点标识中,执行下一 步;(c) 将该消息包交驱动层广播发送;步骤(B)中,如消息队列中是否存在消息标识和源地址都与收到的消 息包相同的消息包,先将该消息包中的已经过节点标识合并到消息队列中相 同消息包緩存的已经过节点标识当中,再丢弃收到的该消息包。为了解决上述技术问题,本发明还提供了 一种移动无线自组网的消息广 播方法,其特征在于,在消息包不符合转发条件时,将所述消息包重新放入 消息队列的末尾准备发送。为了解决上述技术问题,本发明还提供了一种移动无线自组网的消息广 播和接收方法,在消息包结构中包含发送该消息包的节点的消息发送信息, 而在节点上緩存本节点和周边节点的消息发送信息,本节点的消息发送信息 中包含该节点消息发送队列中各个消息包的发送时间段信息,周边节点的消 息发送信息中包含相应节点的标识及其消息发送队列中各个消息包的发送 时间段信息;节点在一个时间段发送一个消息包,时间段长度对各节点是统 一设定的;其中消息广播过程包括以下步骤(a) 节点将本地创建的消息包或收到的消息包放入消息队列,按以下 方法逸定其发送时间段,然后更新緩存在本地的本节点消息发送信息;如不插队,查找本节点和周边节点的消息发送信息,将最靠前的没有被 占用的空闲时间段作为其发送时间段;如插队时,插入队列的消息包占用紧挨其后的消息包的发送时间段,而 后者占用紧随其后的消息包的发送时间段,依此类推,对消息队列的最后一 个消息包,则重新查找本节点和周边节点的消息发送信息,将最靠前的空闲 时间段作为其发送时间段;(b) 在前一消息包发送完成后,取出消息队列中最前面的消息包;(c) 在预定的发送时间段内将该消息包交驱动层广播随机发送; 在消息接收过程包括以下步骤(A)节点收到消息包;(B )才艮据消息包中包含的信息,在本地添加消息包中发送节点的消息 发送信息或更新已有的该节点的消息发送信息;(C)对该消息包进行转发和显示处理。进一步地,上述方法还可具有以下特点在消息包结构中还包含发送该 消息包的节点的相邻节点信息,包括相邻节点的个数信息和相邻节点的标识 信息;步骤(b)更新所述消息包中緩存的相邻节点时,是按本地緩存的相邻 节点的相邻节点个数的多少按序排列,得到相邻节点序列;步骤(B)还根据消息包中包含的信息,同时更新本地緩存的消息包相 邻节点序列当中与接收节点相邻的节点的消息发送信息,如该节点是消息包 相邻节点序列中相邻节点个数排在第N位的节点,则在该节点的消息发送 信息中添加该消息包的发送时间段信息,该发送时间段为接收节点的第N 个空闲时间段。为了解决上述技术问题,本发明还提供了 一种移动无线自組网的消息广 播方法,节点在一个时间段发送一个消息包,时间段长度对各节点是统一设定的,消息包结构中包括备个消息包的发送信道信息,该方法包括以下步骤(a) 节点将本地创建的消息包或收到的消息包放入消息队列,按以下方法选棒其发送信道,然后更新緩存的消息队列中各个消息包的发送信道信息如不插队,判断C-T是否大于等于S,如果没有,就选择上一个消息 包所采用的信道,否则就更换为另一个信道;其中,C表示该消息包发送时 间段的起始时刻,T表示队列中上一个不同信道的消息包发送时间段的起始 时刻,S表示当前选定或随机选定的信道切换时间间隔;如插队,则以紧挨其后的消息包的发送信道为其发送信道,而后者也以 紧随其后的消息包的发送信道为其发送信道,依此类推,对消息队列的最后 一个消息包,按上述不插队时的相同方式来选定一个发送信道;(b) 在前一消息包发送完成后,取出消息队列中最前面的消息包,判 断要转发消息包预定的信道和当前信道是否相同,如果不相同,先切换到预 定信道,执行下一步,否则直接执行下一步;(c) 将该消息包交驱动层广纟番发送。为了解决上述技术问题,本发明还提供了 一种移动无线自組网的消息广 播方法,包括以下步骤(a)节点将本地创建的消息包或收到的消息包按以下排序规则中的一 个或任意组合将消息包放入消息队列规则一,将消息分为多个优先级,其中原创消息包的优先级高于转发的 消息包,对于同一优先级的消息包按照时间顺序来决定消息在队列中的位 置,高优先级的消息包可以插入到低优先级的消息包前面;规则二,对于要转发的消息包,如果队列中最后N个消息包的源地址 相同而新来的消息和它们的源地址不同,那么,新来的消息包可以插到队列 最后N-l个消息包前面。(b)在前一消息包发送完成后,取出消息队列中最前面的消息包,包 交驱动层广播发送。进一步地,上述方法还可具有以下特点所述规则一中,在将高优先级 的消息包插入到低优先级的消息包前面时,如果两个高优先级的消息包在消 息队列中的位置相邻,则至少要间隔一个低优先级的消息包。为了解决上述技术问题,本发明还提供了一种移动无线自组网的终端节 点,包括应用层、驱动层和硬件层,其特征在于,所述应用层进一步包括消息编辑和显示模块,用于支持用户对消息的编辑和发送,以及支持消 息的显示;消息队列处理模块,进一步包括队列控制单元,用于将驱动层获取的消息包以及用户创建的消息包放入 消息队列,消息包结构中包含发送该消息包的节点的相邻节点信息;发送调用单元,用于在前一消息包发送完成后,调用消息转发模块发送 消息队列最前面的消息包;消息转发模块,进一步包括转发条件判断单元,用于将本节点的相邻节点与该消息包緩存的相邻节 点进行比较,当相同节点的比例或个数未超过设定阈值时,认为其符合转发 条件,否则认为其不符合转发条件;消息包信息更新单元,用于更新符合转发条件的消息包中的相邻节点信 息,然后触发发送控制单元;发送控制单元,用于将消息包交驱动层广播发送。消息接收模块,进一步包括周边节点信息更新单元,用于根据驱动层上传消息包中的信息,在本地 緩存消息包发送节点的相邻节点信息或更新已保存的该节点的相邻节点信 息,包括相邻节点的个数及标识信息;消息包传递单元,用于将接收的消息包传递到消息队列处理模块以及消息编辑和显示;):莫块;存储模块,用于在本地緩存周边节点的相邻节点信息。进一步地,上述装置还可具有以下特点所述队列控制单元按以下排序规则中的一个或任意组合将消息包放入消息队列规则一,将消息分为多个优先级,其中原创消息包的优先级高于转发的 消息包,对于同 一优先级的消息包按照时间顺序来决定消息在队列中的位 置,高优先级的消息包可以插入到低优先级的消息包前面;规则二,对于要转发的消息包,如果队列中最后N个消息包的源地址 相同而新来的消息和它们的源地址不同,那么,新来的消息包可以插到队列 最后N-l个消息包前面。进一步地,上述装置还可具有以下特点所迷消息队列处理模块还包括时间段选择单元,用于按以下方法为加入 消息队列的消息包选定发送时间段如不插队,查找本节点和周边节点的消息发送信息,将最靠前的没有被 占用的空闲时间段作为其发送时间段;如插队时,插入队列的消息包占用紧挨其后的消息包的发送时间段,而 后者占用紧随其后的消息包的发送时间段,依此类推,对消息队列的最后一 个消息包,则重新查找本节点和周边节点的消息发送信息,将最靠前的空闲 时间段作为其发送时间段;所述消息队列处理模块还包括发送信息更新单元,用于根据为消息包选 定的发送时间段,更新緩存在本地的本节点消息发送信息;所述消息队列处理模块的发送调用单元是在下一个需要发送消息包的 发送时间段,调用消息转发模块发送消息队列最前面的消息包;所述消息转发模块的发送控制单元是在消息包的预定发送时间段内随 机地将其交给驱动层广播发送,在一个时间段发送一个消息包,且时间段长度对各节点是统一设定的;所迷消息转发模块的消息包信息更新单元还用于根据本节点当前的消息发送信息数据,更新符合转发条件的消息包中的消息发送信息数据;所述消息接收模块的周边节点信息更新单元还用于根据消息包中包含 发送节点消息队列中各个消息包发送时间段信息的消息发送信息,在本地添加该发送节点的消息发送信息或更新已有的该节点的消息发送信息;所述存储模块还用于緩存本节点的消息发送信息,包含该节点消息发送 队列中各个消息包的发送时间段信息;以及周边节点的消息发送信息,包含 相应节点的标识及其消息发送队列中各个消息包的发送时间段信息。进一步地,上述装置还可具有以下特点所述消息转发模块的消息包信息更新单元在緩存或更新消息包发送节 点的相邻节点信息时,是按本地緩存的相邻节点的相邻节点个数的多少按序 排列,得到相邻节点序列;所述消息队列处理模块的发送信息更新单元还用于根据为消息包选定 的发送信道,更新緩存在本地的本节点消息发送信息;所述消息接收模块的周边节点信息更新单元还根据消息包中的消息发 送信息及相邻节点序列,更新本地緩存的消息包相邻节点序列中与接收节点 相邻的节点的消息发送信息,如该节点是消息包相邻节点序列中相邻节点个 数排在第N位的节点,在该节点的消息发送信息中添加该消息包的发送时 间段信息,该发送时间段为接收节点的第N个空闲时间段。进一步地,上述装置还可具有以下特点所述消息队列处理模块还包括信道选择单元,用于按以下方法为加入消 息队列的消息包选定发送信道如不插队,判断C-T是否大于等于S,如果没有,就选择上一个消息 包所采用的信道,否则就更换为另一个信道;其中,C表示该消息包发送时 间段的起始时刻,T表示队列中上一个不同信道的消息包发送时间段的起始 时刻,S表示当前选定或随机选定的信道切换时间间隔,时间_敬长度对各节点是统一i殳定的;如插队,则以紧挨其后的消息包的发送信道为其发送信道,而后者也以 紧随其后的消息包的发送信道为其发送信道,依此类推,对消息队列的最后 一个消息包,按上述不插队时的相同方式来选定一个发送信道;所述消息转发模块还包括信道切换控制单元,用于判断要转发消息包预 定的信道和当前信道是否相同,如不相同,先切换到预定信道,再触发消息 包信息更新单元,否则直接触发消息包信息更新单元。进一步地,上述装置还可具有以下特点所述存储模块緩存的本节点和周边节点的消息发送信息包括a)消息 队列首个消息包的发送时刻,发送时刻指相应发送时间段的起始时刻;b)消 息发送时刻表表项总数;c)消息队列发送时刻表,每一表项记录了消息队 列中一个消息包的发送时刻。所述消息队列处理模块的发送信息更新单元还用于在消息包发送成功 后,更新本地緩存的本节点消息发送信息中的消息队列首个消息包的发送时刻。进一步地,上述装置还可具有以下特点所述消息转发模块的转发条件判断单元还用于将本节点的当前相邻节 点与要转发消息包中緩存的已经过节点进行比较,对得到的两个比例值或个 数加权后再与设定阈值比较,如未超过设定阈值,则认为该消息包符合转发 条件,否则i^为其不符合转发条件;所述消息转发模块的消息包信息更新单元还用于更新符合转发条件的 消息包中的已经过节点信息,即在消息包中的已经过节点不包括本节点时, 将本节点标识添加到该消息包中的已经过节点标识中。进一步地,上述装置还可具有以下特点所述消息接收模块还包括相同消息包判定处理单元,用于判断在消息队 列中是否存在消息标识和源地址都与该消息包相同的消息包如果存在,在消息包结构中包含该消息包的已经过节点信息时,将该消 息包中的已经过节点标识合并到消息队列中相同消息包緩存的已经过节点标识当中,然后丟弃收到的该消息包,否则直接丟并; 如果不存在,触发消息包传递单元工作。 进一步地,上述装置还可具有以下特点所述应用层还包括过滤模块,用于接收消息接收模块的消息包传递单元 传递的消息包,根据用户设置的过滤规则将符合条件的消息传递到消息编辑 和显示模块进行显示,如果不符合过滤条件,则不将该消息包传递到消息编 辑和显示模块。进一步地,上述装置还可具有以下特点转发条件判断单元在判断消息包不符合转发条件时,将所述消息包重新 放入消息队列的末尾;和/或发送控制单元在发送失败时,将所述消息包重新放入消息队列的末尾。为了解决上述技术问题,本发明还提供了 一种移动无线自组网的终端节 点,包括应用层、驱动层和硬件层,其特征在于,所述应用层进一步包括消息编辑和显示模块,用于支持用户对消息的编辑和发送,以及支持消 息的显示;消息队列处理模块,进一步包括队列控制单元,用于将驱动层获取的消息包以及用户创建的消息包放入 消息队列,消息包结构中包含已经过节点的信息;发送调用单元,用于在前一消息包发送完成后,在下一个需要发送消息 包的发送时间段调用消息转发模块发送消息队列最前面的消息包;消息转发模块,进一步包括转发条件判断单元,用于将本节点的相邻节点与该消息包緩存的已经过 节点进行比较,当相同节点的比例或个数未超过设定阈值时,认为其符合转 发条件,否则认为其不符合转发条件;消息包信息更新单元,用于对符合转发条件的消息包,在消息包中的已 经过节点不包括本节点时,将本节点标识添加到该消息包中的已经过节点标识中;发送控制单元,用于将消息包交驱动层广播发送;消息接收模块,用于接收消息包并将其传递到消息队列处理模块进行转 发,以及传递到消息编辑和显示模块进行显示。为了解决上述技术问题,本发明还提供了一种移动无线自组网的终端节 点,包括应用层、驱动层和硬件层,其特征在于,所述应用层进一步包括消息编辑和显示模块,用于支持用户对消息的编辑和发送,以及支持消 息的显示;消息队列处理模块,用于将驱动层获取的消息包以及用户创建的消息包 放入消息队列,在前一消息包发送完成后,调用消息转发模块发送消息队列 最前面的消息包;消息转发模块,用于将消息包交驱动层广播发送; 消息接收模块,进一步包括相同消息包判定处理单元,用于判断在消息队列中是否存在消息标识和 源地址都与该消息包相同的消息包,如果存在,丟弃收到的该消息包;如果 不存在,触发消息包传递单元工作;消息包传递单元,用于将接收的消息包传递到消息队列处理模块以及消息编辑和显示;f莫块。进一步地,上述装置还可具有以下特点 所述消息转发模块进一步包括转发条件判断单元,用于将本节点的当前相邻节点与要转发消息包中緩 存的已经过节点进行比较,得到的比例值或个数与设定阈值比较,如未超过 设定阈值,则认为该消息包符合转发条件,否则认为其不符合转发条件;消息包信息更新单元,用于在消息包中的已经过节点不包括本节点时,将本节点标识添加到该消息包中的已经过节点标识中;发送控制单元,用于将消息包交驱动层广播发送;所迷消息接收模块的相同消息包判定处理单元在判断出消息队列中存 在消息标识和源地址都与该消息包相同的消息包时,先将该消息包中的已经 过节点标识合并到消息队列中相同消息包緩存的已经过节点标识当中,然后 再丢弃该消息包。为了解决上述技术问题,本发明还提供了 一种移动无线自组网的终端节 点,包括应用层、驱动层和硬件层,其特征在于,所述应用层在消息包不符 合转发条件时,将所迷消息包重新放入消息队列的末尾准备发送。为了解决上述技术问题,本发明还提供了一种移动无线自组网的终端节 点,包括应用层、驱动层和硬件层,其特征在于,所述应用层进一步包括消息编辑和显示模块,用于支持用户对消息的编辑和发送,以及支持消 息的显示;消息队列处理才莫块,进一步包括队列控制单元,用于将驱动层获取的消息包以及用户创建的消息包放入 消息队列;时间段选择单元,用于按以下方法为加入消息队列的消息包选定发送时 间段如不插队,查找本节点和周边节点的消息发送信息,将最靠前的没有被 占用的空闲时间段作为其发送时间段;如插队时,插入队列的消息包占用紧挨其后的消息包的发送时间段,而 后者占用紧随其后的消息包的发送时间段,依此类推,对消息队列的最后一 个消息包,则重新查找本节点和周边节点的消息发送信息,将最靠前的空闲 时间段作为其发送时间段;发送信息更新单元,用于根据为消息包选定的发送时间段,更新緩存在 本地的本节点消息发送信息;发送调用单元,用于在前一消息包发送完成后,在下一个需要发送消息包的发送时间段调用消息转发模块发送消息队列最前面的消息包;消息转发模块,进一步包括消息包信息更新单元,用于根据本节点当前的消息发送信息数据,更新符^^转发条件的消息包中的消息发送信息数据,然后触发发送控制单元;发送控制单元,用于在消息包的预定发送时间段内随机地将其交给驱动 层广播发送,在一个时间段发送一个消息包,且时间段长度对各节点是统一 设定的;消息接收模块,进一步包括周边节点信息更新单元,用于根据消息包中包舍发送节点消息队列中各 个消息包的发送时间段信息的消息发送信息,在本地添加该发送节点的消息 发送信息或更新已有的该节点的消息发送信息;消息包传递单元,用于将接收的消息包传递到消息队列处理模块以及消 息编辑和显示4莫块;存储模块,用于緩存本节点的消息发送信息,包含该节点消息发送队列 中各个消息包的发送时间段信息;以及周边节点的消息发送信息,包含相应 节点的标识及其消息发送队列中各个消息包的发送时间段信息。进一步地,上述装置还可具有以下特点所述消息转发模块的消息包信息更新单元在緩存或更新消息包发送节 点的相邻节点信息时,是按本地緩存的相邻节点的相邻节点个数的多少按序 排列,得到相邻节点序列;所述消息队列处理模块的发送信息更新单元还用于根据为消息包选定 的发送信道,更新緩存在本地的本节点消息发送信息;所述消息接收模块的周边节点信息更新单元还根据消息包中的消息发 送信息及相邻节点序列,更新本地緩存的消息包相邻节点序列中与接收节点 相邻的节点的消息发送信息,如该节点是消息包相邻节点序列中相邻节点个 数排在第N位的节点,在该节点的消息发送信息中添加该消息包的发送时 间段信息,该发送时间段为接收节点的第N个空闲时间段。为了解决上述技术问题,本发明还提供了一种移动无线自组网的终端节点,包栝应用层、驱动层和硬件层,其特征在于,所述应用层进一步包括消息编辑和显示模块,用于支持用户对消息的编辑和发送,以及支持消 息的显示;消息队列处理模块,进一步包括队列控制单元,用于将驱动层获取的消息包以及用户创建的消息包放入 消息队列;信道选择单元,用于按以下方法为加入消息队列的消息包选定发送信道如不插队,判断C-T是否大于等于S,如果没有,就选择上一个消息 包所采用的信道,否则就更换为另一个信道;其中,C表示该消息包发送时 间段的起始时刻,T表示队列中上一个不同信道的消息包发送时间段的起始 时刻,S表示当前选定或随机选定的信道切换时间间隔,时间段长度对各节 点是统一设定的;如插队,则以紧挨其后的消息包的发送信道为其发送信道,而后者也以 紧随其后的消息包的发送信道为其发送信道,依此类推,对消息队列的最后 一个消息包,按上述不插队时的相同方式来选定一个发送信道;发送信息更新单元,用于根据为消息包选定的发送信道,更新緩存在本 地的本节点消息队列中各个消息包的发送信道;发送调用单元,用于在前一消息包发送完成后,在下一个需要发送消息 包的发送时间段调用消息转发模块发送消息队列最前面的消息包;消息转发模块,进一步包括信道切换控制单元,用于判断要转发消息包预定的信道和当前信道是否 相同,如不相同,先切换到预定信道;发送控制单元,用于在消息包的预定发送时间段内将其交给驱动层广播 发送,在一个时间段发送一个消息包;消息接收模块,用于接收消息包并将其传递到消息队列处理模块以及消息编辑和显示模块;存储模块,用于緩存本节点消息发送队列中各消息包的发送信道信息。为了解决上述技术问题,本发明还提供了 一种移动无线自组网的终端节 点,包括应用层、驱动层和硬件层,其特征在于,所述应用层进一步包括消息编辑和显示模块,用于支持用户对消息的编辑和发送,以及支持消 息的显示;消息队列处理^lt块,进一步包括队列控制单元,用于按以下排序规则中的一个或任意组合将消息包放入 消息队列规则一,将消息分为多个优先级,其中原创消息包的优先级高于转发的 消息包,对于同 一优先级的消息包按照时间顺序来决定消息在队列中的位 置,高优先级的消息包可以插入到低优先级的消息包前面;规则二,对于要转发的消息包,如果队列中最后N个消息包的源地址 相同而新来的消息和它们的源地址不同,那么,新来的消息包可以插到队列 最后N-l个消息包前面。发送调用单元,用于在前一消息包发送完成后,调用消息转发模块发送 消息队列最前面的消息包;消息转发模块,用于将消息包交驱动层广播发送;消息接收模块,用于接收消息包并将其传递到消息队列处理模块以及消 息编辑和显示模块。应注意的是,虽然在实施例中将以上各个方法组合在一起使用,但明显 示地,这些方法均可以独立使用,并达到各自的技术效果。综上所述,本发的消息广播相对于目前学术研究的广播算法有明显的区 别,可以选择到 一个合理的转发时机以节约系统带宽和负载均衡。1)消息包里会緩存一部分节点地址信息,用来表示此消息曾经到过的 节点(可不区分到达的先后顺序),由接收节点来更新。当移动节点准备发送此消息时需要先对比消息包里緩存的已经过节点地址信息,如果发现周围有 很多新的节点,那么就选择发送。如果相邻节点中有相当一部分是已经过节 点,就没有必要此时转发出去。逸样,消息将被优先转发到从来没有与源节 点相邻的新的相邻节点上,之所以这么考虑是怕产生负载过于不均衡的现 象,使某些节点耗电量大大增加,同时希望消息能够被带到更远的地方。2) 消息包里还会緩存消息发送节点的相邻节点地址列表,列表是按消息转发优先权的顺序排列的。接收节点收到这个消息包之后会根据自己在相 邻节点列表中的位置来决定发送时刻,这样冲突的可能性会进一步减少。3) 切换信道,这也是为了减少盲目发送,因为上一点在进行相邻节点 地址比较的时候主要考虑的是同一信道的节点,如杲通讯信道不同的节点, 则不是相邻节点。移动节点按照一定的规律在互不重合的信道上切换,干扰 能够得到很好的抑制,避免过多的节点在同一信道上,从而导致网络拥塞, 从而提高了 AD-HOC网络的容量。4) 根据本节点地址在消息包纪录的相邻节点地址的先后顺序,选择发 送时机并进行休眠,也是为了从应用层减少发送冲突的概率。5) 对要发送或转发的消息包划分优先级,原创的消息可以具有较高的 转发优先级,同时插入时不允许两个高优先级的消息包相邻,能够平衡别的 节点的消息,不至于当用户在不停的创建新消息的时候便携设备无法转发来 自别的节点的消息。6) 接收消息后能够合并相同的消息(即源地址和消息ID (标识)都相 同的消息),刷新消息包中的地址緩存表。这样的目的是为了减少重发次数 以节约无线带宽,同时也是为了均衡转发,避免大量带宽被一个节点所占用。7) 消息转发的时间段可以根据本地及周边节点消息转发时刻表结构来 确定的。消息包中会包含有转发方的消息队列消息发送信息表结构,当接收 节点收到消息包之后会取出发送节点的消息队列发送时刻表并保留下来。当 接收节点需要转发消息的时候就可以参考已经存于本地的周边节点的消息 队列消息发送信息表结构,并参考消息包里緩存的相邻节点的顺序找到尽可 能靠前的空闲时间段来转发消息。8) 在一个发送时间段内,消息转发的时机是随机的,源节点将消息传 送到一个目的节点之后应该休息相应时间直到这个时间段结束,以让别的节 点也能够在这个时间段内有机会发射,因为802.11 MAC的接八机制不具有 公平性,越是抢不到信道的节点越难发射消息,所以需要应用层来处理这一 问题。这个特点反映在根据相邻节点和消息包里的相邻节点数随机休眠的处 理上。9) 当消息转发的条件不满足,不直接丟弃此条消息,而是将被移动节 点緩存,以便在将来某个时刻继续转发,因为网络的节点随时随地在更新, 有可能当移动节点正想要转发消息时发现周围没有相邻节点或者周围的相 邻节点都已经收到过这一条消息。所以緩存下来是希望消息能够被带到更多 的移动节点上,算法处理上是将次消息又放置到消息队列的末尾。


图1是带RTS/CTS的DCF机制工作过程的示意图。图2是AdHoc网络中多个终端间相互通信的示意图一。图3是本发明实施例系统的结构图。图4是本发明实施例消息广播的流程图。图5是本发明实施例一次发送过程的流程图。图6是本发明实施例多个终端间相互通信的示意图二。图7是本发明实施例消息接收和显示的流程图。
具体实施方式
本发明实施例消息广播和接收系统的结构如图3所示,该系统可以建立 在带有WIFI ( Wi-Fi WirelessFidelity:无线保真)等芯片的智能手机上,也 可以建立在其他支持无线自组网通讯的便携电子设备上。如图所示,该系统 从上自下可以分成应用层、驱动层和硬件层,以下将详细介绍各层中的模块, 其中涉及到消息包格式的内容将在下文中详细介绍。本系统的核心部分就在应用层,其他层次使用工业界标准的模块就可以 实现。本实施例的应用层进一步包括消息编辑和显示模块,即图形用户界面系统,用于支持用户对消息的编辑和发送,以及支持消息的显示; 消息队列处理模块,进一步包括队列控制单元,用于将驱动层获取的消息包以及用户创建的消息包按照 设置的排序规则放入消息队列。具体的规则详见下文中的介绍,这里不再重复。时间段选择单元,用于为加入消息队列的消息包选定发送时间段,具体 方法见下文中的介绍,这里不再重复。信道选择单元,用于为加入消息队列的消息包选定发送信道,具体方法 详见下文中的介绍,这里不再重复。发送信息更新单元,用于根据为消息包选定的发送时间段和发送信道, 更新緩存在本地的本节点消息发送信息表结构(实施例是以表结构来存放该 消息发送信息,但本发明不局限于此)。发送调用单元,用于在前一消息包发送完成后,在下一个需要发送消息 包的发送时间段调用消息转发模块发送消息队列最前面的消息包。消息转发模块,进一步包括转发条件判断单元,用于将本节点的当前相邻节点与要转发消息包中緩 存的已经过节点和/或相邻节点进行比较,如相同节点的比例值(可以是两 个比例值加权后得到的比例值)或个数超过设定阈值,认为不符合转发条件, 暂緩转发该消息包并将其放到消息队列末尾,否则认为符合转发条件,触发 信道切换单元。信道切换控制单元,用于判断要转发消息包预定的信道和当前信道是否 相同,如果不相同,先切换到预定信道,再触发信息更新单元,否则直接触 发消息包信息更新单元。消息包信息更新单元,用于更新符合转发条件的消息包中的相邻节点信 息、已到过节点信息以及消息发送信息表结构,然后触发发送控制单元,具 体方法详见下文中的介绍,这里不再重复。发送控制单元,用于在消息包发送时间段内随机地将其交驱动层广播发放到消息队列的末尾,同时此消息包的下一个消息包的发送时刻可提前到此消息包的发送时刻;如杲发送成功,更新本 地緩存的本节点消息发送信息表结构中的消息队列首个消息包的发送时刻。消息接收模块,进一步包括周边节点信息更新单元,用于根据驱动层上传消息包中的信息,在本地 添加消息包中发送节点的消息发送信息表结构或更新已有的该节点的消息 发送信息表结构,同时更新消息包相邻节点序列当中,与接收节点相邻的节 点的消息发送信息表结构,以及在本地緩存消息包发送节点的相邻节点信息 或更新已保存的该节点的相邻节点信息,具体方法详见下文中的介绍。相同消息包判定处理单元,用于判断在消息队列中是否存在与该消息包 相同的消息包,如果存在,将该消息包中的已经过节点地址合并到消息队列 中相同消息包緩存的已经过节点地址当中,丟弃收到的该消息包,如果不存在,触发消息包传递单元;消息包传递单元,用于将接收的消息包传递到消息队列处理模块进行转 发,以及传递到消息过滤模块。消息过滤模块,用于根据用户设置的过滤规则将符合条件的消息传递到 消息编辑和显示模块,如果不符合过滤条件则不显示的消息干扰用户,用户 只要能够看到他想要的消息就可以了 。存储模块,用于在本地緩存本节点和周边节点的消息发送信息表结构, 周边节点的相邻节点信息。本节点的当前相邻节点信息可以緩存在驱动层或 应用层。驱动层包括无线通讯驱动模块,用于控制相应的硬件模块将接收到的 消息向应用层传递,并将应用层发来的消息转发给无线自组网里的相邻设备 节点,还可完成MAC地址表的更新。硬件层包括无线通讯芯片,是实现消息转发和接收的物理硬件电路, 经常使用的无线自组网通讯硬件模块包括WIFI(802.1 la/b/g)和蓝牙等。本实施例采用的消息包格式包括以下内容,应说明的是,其中的字节数<叉<又为一个示例。帧类型,2字节,让应用软件识别出来这是无线自组网消息广播。 消息标识(ID) , 4个字节,消息的唯一标识。 源地址,6个字节,即创建此消息的节点的地址。 相邻节点数,l个字节,指一跳范围内的相邻的节点数。 消息内容长度,2个字节,标明消息内容的长度。 消息内容,0 256,存放在消息内容区。已经过节点地址,0 512,这些地址都是本消息曾经到过的节点的地址, 保存在消息包的地址緩存区。在该地址緩存区的起始位置可以存放已经过节 点;也址的个数。相邻节点序列0 256,以地址序列的形式保存在消息包的另一地址緩 存区,相邻节点较多的相邻节点的地址放在前面。在该地址緩存区的起始位 置可以存放相邻节点地址个数。本节点的消息发送信息表结构,在发送的时候由消息转发模块来填写, 该结构又包括1) 消息队列首个消息包的发送时刻8字节,这里指首个消息包发送 时间段的起始时刻。节点在一个时间段发送一个消息包,时间段长度对各节 点是统一设定的;应当注意的是消息包在发送时间段中是随机发送的,发送 时刻只是用于标识该发送时间段,并不一定是消息包真正的发送时间点。2) 消息发送时刻表表项总数lbyte。3) 消息队列发送时刻表0~128字节。每个表项包括两个字段发送 时刻和发送信道。其中的发送时刻占3byte,发送信道占l个byte。发送时 刻表包含了消息队列各个消息包的发送时刻,用相对于消息队列首个消息包 发送时刻的偏移值表示。偏移值的单位即一个时间段,该时间段的长度在自 组网中所有节点都是一致的。以上消息发送信息表结构的帧结构不是唯一的,只要能够确定发送队列 中各个消息包的发送时刻和信道即可。如可以直接写入各个消息包的发送时刻。略去总项数,而以一特写的符号来标i己表项结束等等。周边节点消息发送信息表结构,用来存放该节点所知道的别的节点准备 发送的消息的发送时刻。这个表结构比本节点的多出 一个MAC地址的字段, 即包括如下字段1) MAC地址(6 byte);2) 消息队列首个消息包的发送时刻;3) 消息发送时刻表表项总数;4) 消息队列发送时刻表。应当注意的是,这里的周边节点并非一定为当前的相邻节点,也可以是 节点保存了其信息的以前的相邻节点。本地节点维护上述的表结构来緩存周 边节点的消息发送时刻表,这样便于将自己消息的发送时间安排在一个和别 的相邻节点不容易沖突的时刻。如此安排有利于进一步减少自组网内各个节 点之间传递数据引起的碰撞。以上内容中的帧类型、消息ID、源地址、消息内容长度和消息内容是 由创建该消息的节点(图形界面模块)填写的,在转发过程中不做处理。而 相邻节点数、緩存地址个数、已经过节点地址和相邻节点地址、本节点及周 边节点的消息发送信息表结构由发送该消息包的消息转发模块进行填写或 更新。图4是消息广播的流程图,包括以下步骤步骤IIO,用户编辑好消息后,图形界面模块将编辑好的消息传递给消 息队列处理模块;或者,消息队列处理模块接收到消息接收模块传递来的消 息包;步骤120,根据排序规则将消息包放入消息队列,确定其发送时间段(用 发送时刻表示)和发送信道(以下也称为消息包预定的信道),并更新緩存 在本地的本节点消息发送信息表结构;本实施例将消息分两个优先级原创级和转发级,原创级即用户自己创 建的消息,原创级比转发级高。但该优先级的分类仅为一个示例,也可以根 据内容的紧急程度来分优先级,分出的类别也不局限亍2秤。在该步将消息包放入消息队列时遵循如下的排序规则a) 同一优先级的消息包按照时间顺序来决定消息在队列中的位置;b) 高优先级的消息包可以插入到低先级的消息包之前,使原创级的消 息包排到尽可能靠前的位置。本实施例在插入时,还规定(可选)不能让两个高优先级的消息包在 消息队列中的位置相邻,至少要间隔一个低优先级的消息包。这样是为了避 免终端停止转发消息。如果不存在插队问题,两个高优先级的消息包是可以 排在一起的。c) 对于要转发的消息包,如果队列中最后N个消息包的源地址相同而 新来的消息和它们的源地址不同,那么,新来的消息包可以插到队列最后N-l个消息包前面。这样,节点会优先转发那些来自很少发送消息的节点的 消息包。目的是为了均衡转发,避免大量带宽被一个节点所占用。在其它实施例中,也可以筒单地采用按时间顺序来排队。或者在采用第 一条规则的基础上,不采用第二和第三条规则,或者采用第二、第三条规则 中的一种或其它任意组合。在不能插队时,根据本地记录的发送时刻占用情况(从本节点和周边节 点的消息发送信息表结构中获取),将最靠前的空闲时刻作为其发送时间段 的起始时刻,并为其选择发送信道。空闲时刻是指本节点和周边节点的消息 时刻表结构中没有占用的时间段的起始时刻。在可插队时,则根据其插入位置决定其发送时间段和信道。插入队列的 消息包会占用紧挨其后的消息包的发送时刻和信道,而后者也会占用紧随其 后的消息包的发送时刻,依此类推,直到消息队列中最后一个消息包。对最 后一个消息包,重新根据发送时间段的占用情况,将最靠前的空闲时刻作为 其发送时间段的起始时刻。然后更新本节点的消息发送信息表结构中的信息。802.11b/g下可以至少设置三个完全不重叠的信道,如信道1/6/11。如果所有节点同时使用同一个信道,干扰和碰撞的几率肯定会非常大,但如菜能 够充分利用相隔较远的信道频镨不重叠的特性,甚至更多,那么干扰能够得 到很好的抑止,从而提高了 AD-HOC网络的容量。因此本实施例中还进行 信道切换的控制。该步中,不插队时选择发送信道时按照如下的方式进行判断消息包的 发送时间段是否要切换信道,即C-T是否大于等于S,如果没有,就选择 上一个消息包所采用的信道,否则就更换信道。其中,C表示该消息包的发 送时刻,T表示队列中上一个不同信道的消息包的发送时刻,S表示当前选 定的信道切换时间间隔。S值较佳在一组值或一取值范围中随机选取,如 5s,10s,15s, 20s,25s等,通过随4/L选取可以进一步避免相邻节点的切换动作 同步而总是切到同 一信道上。插队时,发送信道的选择和调整已在上文描述,对于消息队列中最后一 个消息包,也按以上不插队时的方式重新选择一个发送信道。步骤130,在前一消息包发送完成后,在下一个需要发送消息包的发送 时间段发送消息队列最前面的消息包, 一次发送过程包括以下步骤,如图5 所示S21,判断本节点的当前相邻节点中有多少比例的节点与要转发的消息 包中緩存的已经过节点和/或相邻节点相同,如该比例值超过(可以是大于 或大于等于)设定的阈值,不符合转发条件,执行步骤S26,否则符合转发 条件,执行步骤S22;同时考虑已经过节点地址和相邻节点地址时,可以对两个比例值加权后 再与所述阈值比较。阈值可以配置为50%或其它值。该步也可以直接判断当前相邻节点中有多少个数的节点与要转发的消 息包中緩存的已经过节点和/或相邻节点相同,如果超过设定的阈值则执行 步骤S26,否则执行步骤S22。522, 判断要转发的消息包预定的信道和当前信道是否相同,如果不相 同,切换到预定信道后再执行下一步,否则直接执行下一步;523, 更新符合转发条件的消息包中的相邻节点信息和已到过节点信息;具体地,用本节点当前的相邻节点数、相邻节点地址来更新消息包中相 应緩存区中的数据,写入时按当前相邻节点的相邻节点数的多少对相邻节点 地址排序,相邻节点数多的相邻节点的地址排在前面。在该消息包中緩存的 已经过节点不包括本节点时,应将本节点地址添加到该消息包中的已经过节 点地址中。其中当前的相邻节点数和地址可以从本地的MAC地址表中获取, 而相邻节点的相邻节点数以从该相邻节点发来的最新的 一个消息包中读取 的信息为准。S24,根据本节点当前保存的消息发送信息表结构的数据,更新消息包 中本节点的消息发送信息表结构;以上各步操作在本实施例由消息转发模块完成。S25,将该消息包交驱动层广播发送,如果发送失败,执行步骤S26, 如果发送成功,执行步骤S27;在一个发送时间段内,消息发送的时机是随机的,源节点将消息传送到 一个目的节点之后休息相应时间直到这个时间段结束,以让别的节点也能在 这个时间段内有机会发射,因为802.11 MAC的接入机制不具有公平性,越 是抢不到信道的节点越难发射消息,所以需要应用层来处理这一问题。时间 段的长度对于每个消息包来说都是一样的。S26,将该消息包放到消息队列的末尾,重新寻找一个最靠前的空闲时 刻作为发送时刻,同时,此消息包的下一个消息包的发送时刻可提前到此消 息包的发送时刻,然后马上重新执行S21。S27 ,更新本地緩存的本节点消息发送信息表结构中的消息队列首个消 息包的发送时刻,结束;从上述步骤可看出,本实施例在消息转发的条件不满足时,不直接丟弃 此条消息,而是将被移动节点緩存,以便在将来某个时刻继续转发,因为网 络的节点随时随地在更新,有可能当移动节点正想要转发消息时发现周围没有相邻节点或者周围的相邻节点都已经收到过这一条消息。所以緩存下来是 希望消息能够被带到更多的移动节点上。图6示出了消息接收和显示的流程,当用户参与自组网的便携设备接收 到一条消息,从接收到显示到屏幕上大致要经历如下的步骤步骤210,驱动层从硬件中获取消息包,传递给应用层的消息接收模块;步骤220,更新本地周边节点消息发送信息表结构,包括在本地添加 消息包中发送节点的消息发送信息表结构或更新已有的该节点的消息发送 信息表结构,同时更新消息包相邻节点序列当中,与接收节点相邻的节点的 消息发送信息表结构;先根据发送节点的地址查找本地緩存的周边节点消息发送信息表结构, 如果找到发送节点的记录,根据消息包中緩存的消息发送信息表结构更新到 相应的表项当中;如果没有找到且緩存中有足够的空间,则在该緩存中创建 新的表结构。在緩存已满时, 一般会删除周边节点中的非相邻节点的表结构, 让出空间来保留当前相邻节点的表结构。消息接收模块接收到消息包之后还会根据消息包中的相邻节点及其先 后顺序来更新存在本地的周边节点消息发送信息表结构。如果某个节点同时 属于本节点相邻节点和消息包中相邻节点序列中的节点,且该节点是消息包 中相邻节点序列中排在第N位的节点,则在周边节点消息发送信息表结构 该节点的表结构中添加该消息包的发送时刻,该发送时刻为接收节点的第N 个空闲时刻。例如,如该节点为消息包中相邻节点序列中排在最前面的节点, 则将转发此消息的时刻安排最靠前的空闲时刻上。步骤230,才艮据消息包中的相邻节点信息(相邻节点数及地址),在本 地緩存消息包发送节点的相邻节点信息或更新已保存的该节点的相邻节点 信息;在移动节点的MAC表中,相邻节点是在不断刷新的,消息接收沖莫块保 存的该节点地址及其相邻节点数在相邻节点删除后,可以继续保留。因为过 一段时间该节点仍可能变为相邻结果,保存的相邻节点数仍可作为消息包中36相邻节点地址排序的参考。步骤240,判断该消息包是否已在消息队列中,如杲是,执着步骤250, 否则,执行步骤260;消息接收模块是通过消息包中的消息ID和源地址来判断消息包是否已 经在消息队列当中,该两者相同则属于同 一 消息包。步骤250,将该消息包中的已经过节点地址合并到消息队列中相同消息 包緩存的已经过节点地址当中,丟弃收到的该消息包,结束;上述"合并"的含义是取两者的并集,緩存的已经过节点地址不区分到 达的先后顺序。步骤260,将该消息包传递到消息队列处理模块进行转发,并传递到消 息过滤一莫块;步骤270,按照用户设定的过滤规则检查消息内容,如可以显示,则将 消息显示在用户图形界面上供用户浏览,否则,不显示,结束。在以上实施例的基础上,本发明还有许多的变换方式首先,在其它的实施例中,对于上述提到的选择一个合理的转发时机以 节约系统带宽的4种处理方式,以及为实现负栽均衡采用的2种处理方式。 可以只采用其中的一种,或者任意多种的组合。和现有技术相比均具有实质 性的特点和技术效果,均可达到本发明的基本目的。另一点要说明的是,以上的模块划分是逻辑上的,并不局限于某一种固 定的划分方式,特别在方法中,虽然上述流程提到了相应的模块,但也完全 可以忽略某种固定划分出来的模块,只要能完成相应的操作即可。在另一实施例中,对于发送时机的选择以及休眠时间,可以采用另一种 处理方式,即将本节点的相邻节点数和发送该消息包的相邻节点的相邻节点 数相加,假定和为P,消息转发模块从1 P中随机选择一个值N,在从当前 时间单位起的第N个时间单位发送该消息包,发送完后再休眠P-N个时间 单位。这种方式也可以在一定程度上减少沖突的概率。和实施例中的方式相 比,不需要在消息包中保存相邻节点地址,也不需要由消息接收模块从消息包中提取和保存其相邻节点数的信息来对相邻节点进行排序,而只需要根据 要转发消息包中原有的相邻节点数进行计算即可。此外,本发明方法不局限于采用何种底层协议,对于其他物理标准的Ad Hoc网络,比如HomeRF/Bluetooth/Zigbee,本发明也可以适用。
权利要求
1. 一种移动无线自组网的消息广播和接收方法,在消息包结构中包含发送该消息包的节点的相邻节点信息,其中消息广播过程包括以下步骤(a)节点将本地创建的消息包或收到的消息包放入消息队列,在前一消息包发送完成后,取出消息队列中最前面的消息包准备发送;(b)将本节点的相邻节点与该消息包缓存的相邻节点进行比较,当相同节点的比例或个数未超过设定阈值时,更新该消息包中缓存的相邻节点信息,执行下一步;(c)将该消息包交驱动层广播发送;在消息接收过程包括以下步骤(A)节点收到消息包;(B)根据该消息包中的相邻节点信息,在本地缓存消息包发送节点的相邻节点信息或更新已保存的该节点的相邻节点信息;(C)对该消息包进行转发和显示处理。
2、 如权利要求1所述的方法,其特征在于在消息包结构中还包含发送该消息包的节点的消息发送信息,而在节点 上緩存本节点和周边节点的消息发送信息,本节点的消息发送信息中包含该节点消息发送队列中各个消息包的发送时间段信息,周边节点的消息发送信 息中包含相应节点的标识及其消息发送队列中各个消息包的发送时间段信 息;节点在一个时间段发送一个消息包,时间段长度对各节点是统一设定的;步骤(a)将消息包放入消息队列时,按以下方法选定其发送时间段, 然后更新緩存在本地的本节点消息发送信息;如不插队,查找本节点和周边节点的消息发送信息,将最靠前的没有被 占用的空闲时间段作为其发送时间段;如插队时,插入队列的消息包占用紧挨其后的消息包的发送时间段,而 后者占用紧随其后的消息包的发送时间段,依此类推,对消息队列的最后一个消息包,则重新查找本节点和周边节点的消息发送信息,将最靠前的空闲时间段作为其发送时间段;步骤(c)中是在预定的发送时间段内将该消息包交驱动层广播发送;步骤(B)还根据消息包中包含的信息,在本地添加消息包中发送节点的消息发送信息或更新已有的该节点的消息发送信息。
3、 如权利要求4所述的方法,其特征在于所述相邻节点信息包括相邻节点的个数信息和相邻节点的标识信息;步骤(b)更新该消息包中緩存的相邻节点时,是按本地緩存的相邻节 点的相邻节点个数的多少4姿序排列,得到相邻节点序列;步骤(B)还根据消息包中包含的信息,同时更新本地緩存的消息包相 邻节点序列当中与接收节点相邻的节点的消息发送信息,如该节点是消息包 相邻节点序列中相邻节点个数排在第N位的节点,则在该节点的消息发送 信息中添加该消息包的发送时间段信息,该发送时间段为接收节点的第N 个空闲时间段。
4、 如权利要求4所述的方法,其特征在于所述消息包的发送时间段信息为时间段的起始时刻,称为发送时刻;所 述消息发送信息包括a)消息队列首个消息包的发送时刻;b)消息发送时刻 表表项总数;c)消息队列发送时刻表,每一表项记录了消息队列中一个消 息包的发送时刻。
5、 如权利要求4所述的方法,其特征在于所述消息发送信息中还包括各个消息包的发送信道信息;步骤(a)将消息包放入消息队列时,还按以下方法选择其发送信道如不插队,判断C-T是否大于等于S,如果没有,就选择上一个消息 包所采用的信道,否则就更换为另一个信道;其中,C表示该消息包的发送 时刻,T表示队列中上一个不同信道的消息包的发送时刻,S表示当前选定 或随机选定的信道切换时间间隔;如插队,则以紧挨其后的消息包的发送信道为其发送信道,而后者也以紧随其后的消息包的发送信道为其发送信道,依此类推,对消息队列的最后一个消息包,按上述不插队时的相同方式来选定一个发送信道;步骤(c)发送消息包时,先判断要转发消息包预定的信道和当前信道 是否相同,如果不相同,先切换到预定信道后,再进行后续发送步骤。
6、 如权利要求l所述的方法,其特征在于步骤(c)在发送时间段中,节点是随机选择一个时机发送所述消息包, 如果发送成功,需更新本地緩存的本节点消息发送信息中的消息队列首个消 息包的发送时刻。
7、 如权利要求1所述的方法,其特征在于在消息包结构中还包含该消息包的已经过节点信息;步骤(b)中还将本节点的相邻节点与该消息包緩存的已经过节点进行 比较,对得到的两个比例值或个数加权后再与设定阈值比较,如未超过设定 阈值时,符合转发条件,在消息包中的已经过节点不包括本节点时,将本节 点标识添加到该消息包中的已经过节点标识中,执行步骤(c)。
8、 如权利要求l所述的方法,其特征在于步骤(B )还判断消息队列中是否存在消息标识和源地址都与收到的消 息 包相同的消息包如果存在,在消息包结构中包含该消息包的已经过节点信息时,将该消 息包中的已经过节点标识合并到消息队列中相同消息包緩存的已经过节点 标识当中,然后丢弃收到的该消息包,否则直接丟弃;如果不存在,执行步骤(C)。
9、 如权利要求1或7所述的方法,其特征在于步骤(b)如超过设定阈值,判断消息包不符合转发条件时,和/或步骤(c ) 发送失败时,将所述消息包重新放入消息队列的末尾。
10、 一种移动无线自组网的消息广播方法,在消息包结构中包含已经过 节点的信息,其中消息广播过程包括以下步骤(a)节点将本地创建的消息包或收到的消息包放入消息队列,在前一消息包发送完成后,取出消息队列中最前面的消息包准备发送;(b) 将本节点的相邻节点与该消息包緩存的已到过节点进行比较,当 相同节点的比例或个数未超过设定阈值时,在消息包中的已经过节点不包括 本节点时,将本节点标识添加到该消息包中的已经过节点标识中,执行下一步;(c) 将该消息包交驱动层广播发送。
11、 一种移动无线自组网的消息广播和接收方法,其中消息接收过程包才舌以下步骤(A)节点收到消息包;(B )判断消息队列中是否存在消息标识和源地址都与收到的消息包相 同的消息包,如果存在,丢弃收到的该消息包,如果不存在,执行步骤(C)。(C)对该消息包进行转发和显示处理。
12、 如权利要求ll的方法,其特征在于在消息包结构中还包含该消息包的已经过节点信息;消息广播过程包括 以下步骤(a) 节点将本地创建的消息包或收到的消息包放入消息队列,在前一 消息包发送完成后,取出消息队列中最前面的消息包准备发送;(b) 将本节点的相邻节点与该消息包緩存的已到过节点进行比较,当 相同节点的比例或个数未超过设定阈值时,在消息包中的已经过节点不包括 本节点时,将本节点标识添加到该消息包中的已经过节点标识中,执行下一 步;(c) 将该消息包交驱动层广播发送;步骤(B)中,如消息队列中是否存在消息标识和源地址都与收到的消 息包相同的消息包,先将该消息包中的已经过节点标识合并到消息队列中相 同消息包緩存的已经过节点标识当中,再丢弃收到的该消息包。
13、 一种移动无线自组网的消息广^"方法,其特征在于,在消息包不符 合转发条件时,将所述消息包重新放入消息队列的末尾准备发送。
14、 一种移动无线自组网的消息广4番和接收方法,在消息包结构中包含 发送该消息包的节点的消息发送信息,而在节点上緩存本节点和周边节点的 消息发送信息,本节点的消息发送信息中包食该节点消息发送队列中备个消 息包的发送时间段信息,周边节点的消息发送信息中包含相应节点的标识及 其消息发送队列中各个消息包的发送时间段信息;节点在一个时间段发送一 个消息包,时间段长度对各节点是统一设定的;其中消息广纟番过程包括以下步骤(a) 节点将本地创建的消息包或收到的消息包放入消息队列,按以下 方法选定其发送时间段,然后更新緩存在本地的本节点消息发送信息;如不插队,查找本节点和周边节点的消息发送信息,将最靠前的没有被 占用的空闲时间段作为其发送时间段;如插队时,插入队列的消息包占用紧挨其后的消息包的发送时间段,而 后者占用紧随其后的消息包的发送时间段,依此类推,对消息队列的最后一 个消息包,则重新查找本节点和周边节点的消息发送信息,将最靠前的空闲 时间段作为其发送时间段;(b) 在前一消息包发送完成后,取出消息队列中最前面的消息包;(c) 在预定的发送时间段内将该消息包交驱动层广播随机发送; 在消息接收过程包^"以下步骤(A)节点收到消息包;(B )根据消息包中包含的信息,在本地添加消息包中发送节点的消息 发送信息或更新已有的该节点的消息发送信息;(C)对该消息包进行转发和显示处理。
15、 如权利要求14所述的方法,其特征在于在消息包结构中还包含发送该消息包的节点的相邻节点信息,包括相邻 节点的个数信息和相邻节点的标识信息;步骤(b)更新所述消息包中緩存的相邻节点时,是按本地緩存的相邻 节点的相邻节点个数的多少按序排列,得到相邻节点序列;步骤(B)还根据消息包中包含的信息,同时更新本地緩存的消息包相 邻节点序列当中与接收节点相邻的节点的消息发送信息,如该节点是消息包 相邻节点序列中相邻节点个数排在第N位的节点,則在该节点的消息发送 信息中添加该消息包的发送时间段信息,该发送时间段为接收节点的第N 个空闲时间l殳。
16、 一种移动无线自组网的消息广播方法,节点在一个时间段发送一个 消息包,时间段长度对各节点是统一设定的,消息包结构中包括各个消息包 的发送信道信息,该方法包括以下步骤(a) 节点将本地创建的消息包或收到的消息包放入消息队列,按以下方法选择其发送信道,然后更新緩存的消息队列中各个消息包的发送信道信 台 如不插队,判断C-T是否大于等于S,如果没有,就选择上一个消息 包所采用的信道,否则就更换为另一个信道;其中,C表示该消息包发送时 间段的起始时刻,T表示队列中上一个不同信道的消息包发送时间段的起始 时刻,S表示当前选定或随机选定的信道切换时间间隔;如插队,则以紧挨其后的消息包的发送信道为其发送信道,而后者也以 紧随其后的消息包的发送信道为其发送信道,依此类推,对消息队列的最后 一个消息包,按上述不插队时的相同方式来选定一个发送信道;(b) 在前一消息包发送完成后,取出消息队列中最前面的消息包,判 断要转发消息包预定的信道和当前信道是否相同,如果不相同,先切换到预 定信道,执行下一步,否则直接执行下一步;(c) 将该消息包交驱动层广播发送。
全文摘要
一种移动无线自组网消息广播和接收的方法及所用终端节点,在消息包结构中包含发送该消息包的节点的相邻节点信息,广播时,节点将本地创建的消息包或收到的消息包放入消息队列,取出最前面的消息包准备发送;将本节点的相邻节点与该消息包缓存的相邻节点进行比较,当相同节点的比例或个数未超过设定阈值时,更新该消息包中缓存的相邻节点信息,将该消息包交驱动层广播发送;节点收到消息包后,根据包中的相邻节点信息在本地缓存消息包发送节点的相邻节点信息或更新已保存的该节点的相邻节点信息;对该消息包进行转发和显示处理。本发明可以将用户的消息传达到移动无线自组网中所有的终端,并尽量避免发送冲突和广播风暴。
文档编号H04Q7/22GK101242564SQ200710063588
公开日2008年8月13日 申请日期2007年2月5日 优先权日2007年2月5日
发明者蕊 田 申请人:蕊 田
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1