CN101242564A - 移动无线自组网消息广播和接收的方法及所用终端节点 - Google Patents
移动无线自组网消息广播和接收的方法及所用终端节点 Download PDFInfo
- Publication number
- CN101242564A CN101242564A CNA2007100635885A CN200710063588A CN101242564A CN 101242564 A CN101242564 A CN 101242564A CN A2007100635885 A CNA2007100635885 A CN A2007100635885A CN 200710063588 A CN200710063588 A CN 200710063588A CN 101242564 A CN101242564 A CN 101242564A
- Authority
- CN
- China
- Prior art keywords
- message
- node
- message bag
- bag
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
一种移动无线自组网消息广播和接收的方法及所用终端节点,在消息包结构中包含发送该消息包的节点的相邻节点信息,广播时,节点将本地创建的消息包或收到的消息包放入消息队列,取出最前面的消息包准备发送;将本节点的相邻节点与该消息包缓存的相邻节点进行比较,当相同节点的比例或个数未超过设定阈值时,更新该消息包中缓存的相邻节点信息,将该消息包交驱动层广播发送;节点收到消息包后,根据包中的相邻节点信息在本地缓存消息包发送节点的相邻节点信息或更新已保存的该节点的相邻节点信息;对该消息包进行转发和显示处理。本发明可以将用户的消息传达到移动无线自组网中所有的终端,并尽量避免发送冲突和广播风暴。
Description
技术领域
本发明涉及移动无线自组网,特别是指该网络中消息广播和接收的方法和系统。
背景技术
Ad-Hoc网络是一种无线自组网络,即由一组带有无线收发装置的移动终端(也称为节点或终端节点)组成的一个多跳临时性系统。系统中,节点可以自由移动,形成任意的拓扑结构。Ad-Hoc网络中,每个移动终端作为主机运行面向用户的应用程序;同时作为路由器,运行相应的路由协议,根据路由策略和路由表参与分组转发和路由维护工作。在Ad hoc网络中,两个相邻的终端可以进行直接的“端到端”通信;由于终端的无线传输范围有限,两个无法直接通信的终端节点往往要通过多个中间节点的转发来实现通信。其应用范围可以覆盖工业,商业,医疗,家庭,办公环境,军事等各种场合。
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(Clear To Send),当发射端收到CTS包后,随即开始发送数据包,接收端收到数据包后,若是CRC检验正确,接收端将响应ACK包。
虽然现在Ad Hoc的研究很热门,但决定一种技术能否大规模商用的重要因素是由市场决定的。从经济方面看,Ad Hoc网络需要解决的主要问题是寻找一些使它能够从学术圈走向市场的重量级应用。本发明所关注的就是这些重量级应用当中的一种:移动无线自组网消息广播器,该移动无线自组网是人们拿着具有无线局域网模块的电子设备自由组合而成的网络,可以发生在任何特定区域,消息广播器的功能是将用户的需求尽可能的传达到特定区域内所有嵌有无线自组网通讯硬件模块的PDA或者智能手机等终端上。
在Ad Hoc网络中,移动终端发送数据是随机的,很可能会出现很多终端同时发送大量数据的情况,而发送数据的移动终端又可能是许多其他终端传递数据的中继或数据接收节点。因此,可能会出现以下几种情况:
1)引发广播风暴
以图2所示的组网为例,终端A将消息发送到其无线传输范围内的终端B、C和D之后,终端C和D又会将该消息发送到终端B。这样,一个节点多次收到同一条内容相同的消息,从而引发广播风暴。
2)发送冲突
由于隐藏节点的影响,很有可能某一个终端在不停地发送消息,导致别的节点无法正确的接收到消息。
另外,多个相邻节点都想在某一时刻发送数据,导致无线介质的竞争加剧。目前业界的一些无线介质竞争标准常常会导致某些节点总会抢到大量的带宽,从而导致节点之间发送数据的几率不平衡。
3)如果终端A一直在转发别人的消息,也会使得终端A没有时间来发送其用户编辑的消息。
发明内容
本发明要解决的技术问题是提供一种移动无线自组网消息广播、接收方法及其系统,可以将用户的消息传达到移动无线自组网中所有的终端,并尽量避免发送冲突和广播风暴。
为了解决上述技术问题,本发明提供了一种移动无线自组网的消息广播和接收方法,在消息包结构中包含发送该消息包的节点的相邻节点信息,其中:
消息广播过程包括以下步骤:
(a)节点将本地创建的消息包或收到的消息包放入消息队列,在前一消息包发送完成后,取出消息队列中最前面的消息包准备发送;
(b)将本节点的相邻节点与该消息包缓存的相邻节点进行比较,当相同节点的比例或个数未超过设定阈值时,更新该消息包中缓存的相邻节点信息,执行下一步;
(c)将该消息包交驱动层广播发送;
在消息接收过程包括以下步骤:
(A)节点收到消息包;
(B)根据该消息包中的相邻节点信息,在本地缓存消息包发送节点的相邻节点信息或更新已保存的该节点的相邻节点信息;
(C)对该消息包进行转发和显示处理。
进一步地,上述方法还可具有以下特点:步骤(a)按以下排序规则中的一个或任意组合将消息包放入消息队列:
规则一,将消息分为多个优先级,其中原创消息包的优先级高于转发的消息包,对于同一优先级的消息包按照时间顺序来决定消息在队列中的位置,高优先级的消息包可以插入到低优先级的消息包前面;
规则二,对于要转发的消息包,如果队列中最后N个消息包的源地址相同而新来的消息和它们的源地址不同,那么,新来的消息包可以插到队列最后N-1个消息包前面。
进一步地,上述方法还可具有以下特点:所述规则一中,在将高优先级的消息包插入到低优先级的消息包前面时,如果两个高优先级的消息包在消息队列中的位置相邻,则至少要间隔一个低优先级的消息包。
进一步地,上述方法还可具有以下特点:
在消息包结构中还包含发送该消息包的节点的消息发送信息,而在节点上缓存本节点和周边节点的消息发送信息,本节点的消息发送信息中包含该节点消息发送队列中各个消息包的发送时间段信息,周边节点的消息发送信息中包含相应节点的标识及其消息发送队列中各个消息包的发送时间段信息;节点在一个时间段发送一个消息包,时间段长度对各节点是统一设定的;
步骤(a)将消息包放入消息队列时,按以下方法选定其发送时间段,然后更新缓存在本地的本节点消息发送信息;
如不插队,查找本节点和周边节点的消息发送信息,将最靠前的没有被占用的空闲时间段作为其发送时间段;
如插队时,插入队列的消息包占用紧挨其后的消息包的发送时间段,而后者占用紧随其后的消息包的发送时间段,依此类推,对消息队列的最后一个消息包,则重新查找本节点和周边节点的消息发送信息,将最靠前的空闲时间段作为其发送时间段;
步骤(c)中是在预定的发送时间段内将该消息包交驱动层广播发送;
步骤(B)还根据消息包中包含的信息,在本地添加消息包中发送节点的消息发送信息或更新已有的该节点的消息发送信息。
进一步地,上述方法还可具有以下特点:所述相邻节点信息包括相邻节点的个数信息和相邻节点的标识信息;
步骤(b)更新该消息包中缓存的相邻节点时,是按本地缓存的相邻节点的相邻节点个数的多少按序排列,得到相邻节点序列;
步骤(B)还根据消息包中包含的信息,同时更新本地缓存的消息包相邻节点序列当中与接收节点相邻的节点的消息发送信息,如该节点是消息包相邻节点序列中相邻节点个数排在第N位的节点,则在该节点的消息发送信息中添加该消息包的发送时间段信息,该发送时间段为接收节点的第N个空闲时间段。
进一步地,上述方法还可具有以下特点:所述消息包的发送时间段信息为时间段的起始时刻,称为发送时刻;所述消息发送信息包括:a)消息队列首个消息包的发送时刻;b)消息发送时刻表表项总数;c)消息队列发送时刻表,每一表项记录了消息队列中一个消息包的发送时刻。
进一步地,上述方法还可具有以下特点:所述消息发送信息中还包括各个消息包的发送信道信息;
步骤(a)将消息包放入消息队列时,还按以下方法选择其发送信道:
如不插队,判断C-T是否大于等于S,如果没有,就选择上一个消息包所采用的信道,否则就更换为另一个信道;其中,C表示该消息包的发送时刻,T表示队列中上一个不同信道的消息包的发送时刻,S表示当前选定或随机选定的信道切换时间间隔;
如插队,则以紧挨其后的消息包的发送信道为其发送信道,而后者也以紧随其后的消息包的发送信道为其发送信道,依此类推,对消息队列的最后一个消息包,按上述不插队时的相同方式来选定一个发送信道;
步骤(c)发送消息包时,先判断要转发消息包预定的信道和当前信道是否相同,如果不相同,先切换到预定信道后,再进行后续发送步骤。
进一步地,上述方法还可具有以下特点:步骤(c)在发送时间段中,节点是随机选择一个时机发送所述消息包,如果发送成功,需更新本地缓存的本节点消息发送信息中的消息队列首个消息包的发送时刻。
进一步地,上述方法还可具有以下特点:在消息包结构中还包含该消息包的已经过节点信息;
步骤(b)中还将本节点的相邻节点与该消息包缓存的已经过节点进行比较,对得到的两个比例值或个数加权后再与设定阈值比较,如未超过设定阈值时,符合转发条件,在消息包中的已经过节点不包括本节点时,将本节点标识添加到该消息包中的已经过节点标识中,执行步骤(c)。
进一步地,上述方法还可具有以下特点:
步骤(B)还判断消息队列中是否存在消息标识和源地址都与收到的消息包相同的消息包:
如果存在,在消息包结构中包含该消息包的已经过节点信息时,将该消息包中的已经过节点标识合并到消息队列中相同消息包缓存的已经过节点标识当中,然后丢弃收到的该消息包,否则直接丢弃;
如果不存在,执行步骤(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-1个消息包前面。
(b)在前一消息包发送完成后,取出消息队列中最前面的消息包,包交驱动层广播发送。
进一步地,上述方法还可具有以下特点:所述规则一中,在将高优先级的消息包插入到低优先级的消息包前面时,如果两个高优先级的消息包在消息队列中的位置相邻,则至少要间隔一个低优先级的消息包。
为了解决上述技术问题,本发明还提供了一种移动无线自组网的终端节点,包括应用层、驱动层和硬件层,其特征在于,所述应用层进一步包括:
消息编辑和显示模块,用于支持用户对消息的编辑和发送,以及支持消息的显示;
消息队列处理模块,进一步包括:
队列控制单元,用于将驱动层获取的消息包以及用户创建的消息包放入消息队列,消息包结构中包含发送该消息包的节点的相邻节点信息;
发送调用单元,用于在前一消息包发送完成后,调用消息转发模块发送消息队列最前面的消息包;
消息转发模块,进一步包括:
转发条件判断单元,用于将本节点的相邻节点与该消息包缓存的相邻节点进行比较,当相同节点的比例或个数未超过设定阈值时,认为其符合转发条件,否则认为其不符合转发条件;
消息包信息更新单元,用于更新符合转发条件的消息包中的相邻节点信息,然后触发发送控制单元;
发送控制单元,用于将消息包交驱动层广播发送。
消息接收模块,进一步包括:
周边节点信息更新单元,用于根据驱动层上传消息包中的信息,在本地缓存消息包发送节点的相邻节点信息或更新已保存的该节点的相邻节点信息,包括相邻节点的个数及标识信息;
消息包传递单元,用于将接收的消息包传递到消息队列处理模块以及消息编辑和显示模块;
存储模块,用于在本地缓存周边节点的相邻节点信息。
进一步地,上述装置还可具有以下特点:
所述队列控制单元按以下排序规则中的一个或任意组合将消息包放入消息队列:
规则一,将消息分为多个优先级,其中原创消息包的优先级高于转发的消息包,对于同一优先级的消息包按照时间顺序来决定消息在队列中的位置,高优先级的消息包可以插入到低优先级的消息包前面;
规则二,对于要转发的消息包,如果队列中最后N个消息包的源地址相同而新来的消息和它们的源地址不同,那么,新来的消息包可以插到队列最后N-1个消息包前面。
进一步地,上述装置还可具有以下特点:
所述消息队列处理模块还包括时间段选择单元,用于按以下方法为加入消息队列的消息包选定发送时间段:
如不插队,查找本节点和周边节点的消息发送信息,将最靠前的没有被占用的空闲时间段作为其发送时间段;
如插队时,插入队列的消息包占用紧挨其后的消息包的发送时间段,而后者占用紧随其后的消息包的发送时间段,依此类推,对消息队列的最后一个消息包,则重新查找本节点和周边节点的消息发送信息,将最靠前的空闲时间段作为其发送时间段;
所述消息队列处理模块还包括发送信息更新单元,用于根据为消息包选定的发送时间段,更新缓存在本地的本节点消息发送信息;
所述消息队列处理模块的发送调用单元是在下一个需要发送消息包的发送时间段,调用消息转发模块发送消息队列最前面的消息包;
所述消息转发模块的发送控制单元是在消息包的预定发送时间段内随机地将其交给驱动层广播发送,在一个时间段发送一个消息包,且时间段长度对各节点是统一设定的;
所述消息转发模块的消息包信息更新单元还用于根据本节点当前的消息发送信息数据,更新符合转发条件的消息包中的消息发送信息数据;
所述消息接收模块的周边节点信息更新单元还用于根据消息包中包含发送节点消息队列中各个消息包发送时间段信息的消息发送信息,在本地添加该发送节点的消息发送信息或更新已有的该节点的消息发送信息;
所述存储模块还用于缓存本节点的消息发送信息,包含该节点消息发送队列中各个消息包的发送时间段信息;以及周边节点的消息发送信息,包含相应节点的标识及其消息发送队列中各个消息包的发送时间段信息。
进一步地,上述装置还可具有以下特点:
所述消息转发模块的消息包信息更新单元在缓存或更新消息包发送节点的相邻节点信息时,是按本地缓存的相邻节点的相邻节点个数的多少按序排列,得到相邻节点序列;
所述消息队列处理模块的发送信息更新单元还用于根据为消息包选定的发送信道,更新缓存在本地的本节点消息发送信息;
所述消息接收模块的周边节点信息更新单元还根据消息包中的消息发送信息及相邻节点序列,更新本地缓存的消息包相邻节点序列中与接收节点相邻的节点的消息发送信息,如该节点是消息包相邻节点序列中相邻节点个数排在第N位的节点,在该节点的消息发送信息中添加该消息包的发送时间段信息,该发送时间段为接收节点的第N个空闲时间段。
进一步地,上述装置还可具有以下特点:
所述消息队列处理模块还包括信道选择单元,用于按以下方法为加入消息队列的消息包选定发送信道:
如不插队,判断C-T是否大于等于S,如果没有,就选择上一个消息包所采用的信道,否则就更换为另一个信道;其中,C表示该消息包发送时间段的起始时刻,T表示队列中上一个不同信道的消息包发送时间段的起始时刻,S表示当前选定或随机选定的信道切换时间间隔,时间段长度对各节点是统一设定的;
如插队,则以紧挨其后的消息包的发送信道为其发送信道,而后者也以紧随其后的消息包的发送信道为其发送信道,依此类推,对消息队列的最后一个消息包,按上述不插队时的相同方式来选定一个发送信道;
所述消息转发模块还包括信道切换控制单元,用于判断要转发消息包预定的信道和当前信道是否相同,如不相同,先切换到预定信道,再触发消息包信息更新单元,否则直接触发消息包信息更新单元。
进一步地,上述装置还可具有以下特点:
所述存储模块缓存的本节点和周边节点的消息发送信息包括:a)消息队列首个消息包的发送时刻,发送时刻指相应发送时间段的起始时刻;b)消息发送时刻表表项总数;c)消息队列发送时刻表,每一表项记录了消息队列中一个消息包的发送时刻。
所述消息队列处理模块的发送信息更新单元还用于在消息包发送成功后,更新本地缓存的本节点消息发送信息中的消息队列首个消息包的发送时刻。
进一步地,上述装置还可具有以下特点:
所述消息转发模块的转发条件判断单元还用于将本节点的当前相邻节点与要转发消息包中缓存的已经过节点进行比较,对得到的两个比例值或个数加权后再与设定阈值比较,如未超过设定阈值,则认为该消息包符合转发条件,否则认为其不符合转发条件;
所述消息转发模块的消息包信息更新单元还用于更新符合转发条件的消息包中的已经过节点信息,即在消息包中的已经过节点不包括本节点时,将本节点标识添加到该消息包中的已经过节点标识中。
进一步地,上述装置还可具有以下特点:
所述消息接收模块还包括相同消息包判定处理单元,用于判断在消息队列中是否存在消息标识和源地址都与该消息包相同的消息包:
如果存在,在消息包结构中包含该消息包的已经过节点信息时,将该消息包中的已经过节点标识合并到消息队列中相同消息包缓存的已经过节点标识当中,然后丢弃收到的该消息包,否则直接丢弃;
如果不存在,触发消息包传递单元工作。
进一步地,上述装置还可具有以下特点:
所述应用层还包括过滤模块,用于接收消息接收模块的消息包传递单元传递的消息包,根据用户设置的过滤规则将符合条件的消息传递到消息编辑和显示模块进行显示,如果不符合过滤条件,则不将该消息包传递到消息编辑和显示模块。
进一步地,上述装置还可具有以下特点:
转发条件判断单元在判断消息包不符合转发条件时,将所述消息包重新放入消息队列的末尾;和/或
发送控制单元在发送失败时,将所述消息包重新放入消息队列的末尾。
为了解决上述技术问题,本发明还提供了一种移动无线自组网的终端节点,包括应用层、驱动层和硬件层,其特征在于,所述应用层进一步包括:
消息编辑和显示模块,用于支持用户对消息的编辑和发送,以及支持消息的显示;
消息队列处理模块,进一步包括:
队列控制单元,用于将驱动层获取的消息包以及用户创建的消息包放入消息队列,消息包结构中包含已经过节点的信息;
发送调用单元,用于在前一消息包发送完成后,在下一个需要发送消息包的发送时间段调用消息转发模块发送消息队列最前面的消息包;
消息转发模块,进一步包括:
转发条件判断单元,用于将本节点的相邻节点与该消息包缓存的已经过节点进行比较,当相同节点的比例或个数未超过设定阈值时,认为其符合转发条件,否则认为其不符合转发条件;
消息包信息更新单元,用于对符合转发条件的消息包,在消息包中的已经过节点不包括本节点时,将本节点标识添加到该消息包中的已经过节点标识中;
发送控制单元,用于将消息包交驱动层广播发送;
消息接收模块,用于接收消息包并将其传递到消息队列处理模块进行转发,以及传递到消息编辑和显示模块进行显示。
为了解决上述技术问题,本发明还提供了一种移动无线自组网的终端节点,包括应用层、驱动层和硬件层,其特征在于,所述应用层进一步包括:
消息编辑和显示模块,用于支持用户对消息的编辑和发送,以及支持消息的显示;
消息队列处理模块,用于将驱动层获取的消息包以及用户创建的消息包放入消息队列,在前一消息包发送完成后,调用消息转发模块发送消息队列最前面的消息包;
消息转发模块,用于将消息包交驱动层广播发送;
消息接收模块,进一步包括:
相同消息包判定处理单元,用于判断在消息队列中是否存在消息标识和源地址都与该消息包相同的消息包,如果存在,丢弃收到的该消息包;如果不存在,触发消息包传递单元工作;
消息包传递单元,用于将接收的消息包传递到消息队列处理模块以及消息编辑和显示模块。
进一步地,上述装置还可具有以下特点:
所述消息转发模块进一步包括:
转发条件判断单元,用于将本节点的当前相邻节点与要转发消息包中缓存的已经过节点进行比较,得到的比例值或个数与设定阈值比较,如未超过设定阈值,则认为该消息包符合转发条件,否则认为其不符合转发条件;
消息包信息更新单元,用于在消息包中的已经过节点不包括本节点时,将本节点标识添加到该消息包中的已经过节点标识中;
发送控制单元,用于将消息包交驱动层广播发送;
所述消息接收模块的相同消息包判定处理单元在判断出消息队列中存在消息标识和源地址都与该消息包相同的消息包时,先将该消息包中的已经过节点标识合并到消息队列中相同消息包缓存的已经过节点标识当中,然后再丢弃该消息包。
为了解决上述技术问题,本发明还提供了一种移动无线自组网的终端节点,包括应用层、驱动层和硬件层,其特征在于,所述应用层在消息包不符合转发条件时,将所述消息包重新放入消息队列的末尾准备发送。
为了解决上述技术问题,本发明还提供了一种移动无线自组网的终端节点,包括应用层、驱动层和硬件层,其特征在于,所述应用层进一步包括:
消息编辑和显示模块,用于支持用户对消息的编辑和发送,以及支持消息的显示;
消息队列处理模块,进一步包括:
队列控制单元,用于将驱动层获取的消息包以及用户创建的消息包放入消息队列;
时间段选择单元,用于按以下方法为加入消息队列的消息包选定发送时间段:
如不插队,查找本节点和周边节点的消息发送信息,将最靠前的没有被占用的空闲时间段作为其发送时间段;
如插队时,插入队列的消息包占用紧挨其后的消息包的发送时间段,而后者占用紧随其后的消息包的发送时间段,依此类推,对消息队列的最后一个消息包,则重新查找本节点和周边节点的消息发送信息,将最靠前的空闲时间段作为其发送时间段;
发送信息更新单元,用于根据为消息包选定的发送时间段,更新缓存在本地的本节点消息发送信息;
发送调用单元,用于在前一消息包发送完成后,在下一个需要发送消息包的发送时间段调用消息转发模块发送消息队列最前面的消息包;
消息转发模块,进一步包括:
消息包信息更新单元,用于根据本节点当前的消息发送信息数据,更新符合转发条件的消息包中的消息发送信息数据,然后触发发送控制单元;
发送控制单元,用于在消息包的预定发送时间段内随机地将其交给驱动层广播发送,在一个时间段发送一个消息包,且时间段长度对各节点是统一设定的;
消息接收模块,进一步包括:
周边节点信息更新单元,用于根据消息包中包含发送节点消息队列中各个消息包的发送时间段信息的消息发送信息,在本地添加该发送节点的消息发送信息或更新已有的该节点的消息发送信息;
消息包传递单元,用于将接收的消息包传递到消息队列处理模块以及消息编辑和显示模块;
存储模块,用于缓存本节点的消息发送信息,包含该节点消息发送队列中各个消息包的发送时间段信息;以及周边节点的消息发送信息,包含相应节点的标识及其消息发送队列中各个消息包的发送时间段信息。
进一步地,上述装置还可具有以下特点:
所述消息转发模块的消息包信息更新单元在缓存或更新消息包发送节点的相邻节点信息时,是按本地缓存的相邻节点的相邻节点个数的多少按序排列,得到相邻节点序列;
所述消息队列处理模块的发送信息更新单元还用于根据为消息包选定的发送信道,更新缓存在本地的本节点消息发送信息;
所述消息接收模块的周边节点信息更新单元还根据消息包中的消息发送信息及相邻节点序列,更新本地缓存的消息包相邻节点序列中与接收节点相邻的节点的消息发送信息,如该节点是消息包相邻节点序列中相邻节点个数排在第N位的节点,在该节点的消息发送信息中添加该消息包的发送时间段信息,该发送时间段为接收节点的第N个空闲时间段。
为了解决上述技术问题,本发明还提供了一种移动无线自组网的终端节点,包括应用层、驱动层和硬件层,其特征在于,所述应用层进一步包括:
消息编辑和显示模块,用于支持用户对消息的编辑和发送,以及支持消息的显示;
消息队列处理模块,进一步包括:
队列控制单元,用于将驱动层获取的消息包以及用户创建的消息包放入消息队列;
信道选择单元,用于按以下方法为加入消息队列的消息包选定发送信道:
如不插队,判断C-T是否大于等于S,如果没有,就选择上一个消息包所采用的信道,否则就更换为另一个信道;其中,C表示该消息包发送时间段的起始时刻,T表示队列中上一个不同信道的消息包发送时间段的起始时刻,S表示当前选定或随机选定的信道切换时间间隔,时间段长度对各节点是统一设定的;
如插队,则以紧挨其后的消息包的发送信道为其发送信道,而后者也以紧随其后的消息包的发送信道为其发送信道,依此类推,对消息队列的最后一个消息包,按上述不插队时的相同方式来选定一个发送信道;
发送信息更新单元,用于根据为消息包选定的发送信道,更新缓存在本地的本节点消息队列中各个消息包的发送信道;
发送调用单元,用于在前一消息包发送完成后,在下一个需要发送消息包的发送时间段调用消息转发模块发送消息队列最前面的消息包;
消息转发模块,进一步包括:
信道切换控制单元,用于判断要转发消息包预定的信道和当前信道是否相同,如不相同,先切换到预定信道;
发送控制单元,用于在消息包的预定发送时间段内将其交给驱动层广播发送,在一个时间段发送一个消息包;
消息接收模块,用于接收消息包并将其传递到消息队列处理模块以及消息编辑和显示模块;
存储模块,用于缓存本节点消息发送队列中各消息包的发送信道信息。
为了解决上述技术问题,本发明还提供了一种移动无线自组网的终端节点,包括应用层、驱动层和硬件层,其特征在于,所述应用层进一步包括:
消息编辑和显示模块,用于支持用户对消息的编辑和发送,以及支持消息的显示;
消息队列处理模块,进一步包括:
队列控制单元,用于按以下排序规则中的一个或任意组合将消息包放入消息队列:
规则一,将消息分为多个优先级,其中原创消息包的优先级高于转发的消息包,对于同一优先级的消息包按照时间顺序来决定消息在队列中的位置,高优先级的消息包可以插入到低优先级的消息包前面;
规则二,对于要转发的消息包,如果队列中最后N个消息包的源地址相同而新来的消息和它们的源地址不同,那么,新来的消息包可以插到队列最后N-1个消息包前面。
发送调用单元,用于在前一消息包发送完成后,调用消息转发模块发送消息队列最前面的消息包;
消息转发模块,用于将消息包交驱动层广播发送;
消息接收模块,用于接收消息包并将其传递到消息队列处理模块以及消息编辑和显示模块。
应注意的是,虽然在实施例中将以上各个方法组合在一起使用,但明显示地,这些方法均可以独立使用,并达到各自的技术效果。
综上所述,本发的消息广播相对于目前学术研究的广播算法有明显的区别,可以选择到一个合理的转发时机以节约系统带宽和负载均衡。
1)消息包里会缓存一部分节点地址信息,用来表示此消息曾经到过的节点(可不区分到达的先后顺序),由接收节点来更新。当移动节点准备发送此消息时需要先对比消息包里缓存的已经过节点地址信息,如果发现周围有很多新的节点,那么就选择发送。如果相邻节点中有相当一部分是已经过节点,就没有必要此时转发出去。这样,消息将被优先转发到从来没有与源节点相邻的新的相邻节点上,之所以这么考虑是怕产生负载过于不均衡的现象,使某些节点耗电量大大增加,同时希望消息能够被带到更远的地方。
2)消息包里还会缓存消息发送节点的相邻节点地址列表,列表是按消息转发优先权的顺序排列的。接收节点收到这个消息包之后会根据自己在相邻节点列表中的位置来决定发送时刻,这样冲突的可能性会进一步减少。
3)切换信道,这也是为了减少盲目发送,因为上一点在进行相邻节点地址比较的时候主要考虑的是同一信道的节点,如果通讯信道不同的节点,则不是相邻节点。移动节点按照一定的规律在互不重合的信道上切换,干扰能够得到很好的抑制,避免过多的节点在同一信道上,从而导致网络拥塞,从而提高了AD-HOC网络的容量。
4)根据本节点地址在消息包纪录的相邻节点地址的先后顺序,选择发送时机并进行休眠,也是为了从应用层减少发送冲突的概率。
5)对要发送或转发的消息包划分优先级,原创的消息可以具有较高的转发优先级,同时插入时不允许两个高优先级的消息包相邻,能够平衡别的节点的消息,不至于当用户在不停的创建新消息的时候便携设备无法转发来自别的节点的消息。
6)接收消息后能够合并相同的消息(即源地址和消息ID(标识)都相同的消息),刷新消息包中的地址缓存表。这样的目的是为了减少重发次数以节约无线带宽,同时也是为了均衡转发,避免大量带宽被一个节点所占用。
7)消息转发的时间段可以根据本地及周边节点消息转发时刻表结构来确定的。消息包中会包含有转发方的消息队列消息发送信息表结构,当接收节点收到消息包之后会取出发送节点的消息队列发送时刻表并保留下来。当接收节点需要转发消息的时候就可以参考已经存于本地的周边节点的消息队列消息发送信息表结构,并参考消息包里缓存的相邻节点的顺序找到尽可能靠前的空闲时间段来转发消息。
8)在一个发送时间段内,消息转发的时机是随机的,源节点将消息传送到一个目的节点之后应该休息相应时间直到这个时间段结束,以让别的节点也能够在这个时间段内有机会发射,因为802.11MAC的按入机制不具有公平性,越是抢不到信道的节点越难发射消息,所以需要应用层来处理这一问题。这个特点反映在根据相邻节点和消息包里的相邻节点数随机休眠的处理上。
9)当消息转发的条件不满足,不直接丢弃此条消息,而是将被移动节点缓存,以便在将来某个时刻继续转发,因为网络的节点随时随地在更新,有可能当移动节点正想要转发消息时发现周围没有相邻节点或者周围的相邻节点都已经收到过这一条消息。所以缓存下来是希望消息能够被带到更多的移动节点上,算法处理上是将次消息又放置到消息队列的末尾。
附图说明
图1是带RTS/CTS的DCF机制工作过程的示意图。
图2是Ad Hoc网络中多个终端间相互通信的示意图一。
图3是本发明实施例系统的结构图。
图4是本发明实施例消息广播的流程图。
图5是本发明实施例一次发送过程的流程图。
图6是本发明实施例多个终端间相互通信的示意图二。
图7是本发明实施例消息接收和显示的流程图。
具体实施方式
本发明实施例消息广播和接收系统的结构如图3所示,该系统可以建立在带有WIFI(Wi-Fi WirelessFidelity:无线保真)等芯片的智能手机上,也可以建立在其他支持无线自组网通讯的便携电子设备上。如图所示,该系统从上自下可以分成应用层、驱动层和硬件层,以下将详细介绍各层中的模块,其中涉及到消息包格式的内容将在下文中详细介绍。
本系统的核心部分就在应用层,其他层次使用工业界标准的模块就可以实现。本实施例的应用层进一步包括:
消息编辑和显示模块,即图形用户界面系统,用于支持用户对消息的编辑和发送,以及支持消息的显示;
消息队列处理模块,进一步包括:
队列控制单元,用于将驱动层获取的消息包以及用户创建的消息包按照设置的排序规则放入消息队列。具体的规则详见下文中的介绍,这里不再重复。
时间段选择单元,用于为加入消息队列的消息包选定发送时间段,具体方法见下文中的介绍,这里不再重复。
信道选择单元,用于为加入消息队列的消息包选定发送信道,具体方法详见下文中的介绍,这里不再重复。
发送信息更新单元,用于根据为消息包选定的发送时间段和发送信道,更新缓存在本地的本节点消息发送信息表结构(实施例是以表结构来存放该消息发送信息,但本发明不局限于此)。
发送调用单元,用于在前一消息包发送完成后,在下一个需要发送消息包的发送时间段调用消息转发模块发送消息队列最前面的消息包。
消息转发模块,进一步包括:
转发条件判断单元,用于将本节点的当前相邻节点与要转发消息包中缓存的已经过节点和/或相邻节点进行比较,如相同节点的比例值(可以是两个比例值加权后得到的比例值)或个数超过设定阈值,认为不符合转发条件,暂缓转发该消息包并将其放到消息队列末尾,否则认为符合转发条件,触发信道切换单元。
信道切换控制单元,用于判断要转发消息包预定的信道和当前信道是否相同,如果不相同,先切换到预定信道,再触发信息更新单元,否则直接触发消息包信息更新单元。
消息包信息更新单元,用于更新符合转发条件的消息包中的相邻节点信息、已到过节点信息以及消息发送信息表结构,然后触发发送控制单元,具体方法详见下文中的介绍,这里不再重复。
发送控制单元,用于在消息包发送时间段内随机地将其交驱动层广播发送,如果发送失败,将该消息包放到消息队列的末尾,同时此消息包的下一个消息包的发送时刻可提前到此消息包的发送时刻;如果发送成功,更新本地缓存的本节点消息发送信息表结构中的消息队列首个消息包的发送时刻。
消息接收模块,进一步包括:
周边节点信息更新单元,用于根据驱动层上传消息包中的信息,在本地添加消息包中发送节点的消息发送信息表结构或更新已有的该节点的消息发送信息表结构,同时更新消息包相邻节点序列当中,与接收节点相邻的节点的消息发送信息表结构,以及在本地缓存消息包发送节点的相邻节点信息或更新已保存的该节点的相邻节点信息,具体方法详见下文中的介绍。
相同消息包判定处理单元,用于判断在消息队列中是否存在与该消息包相同的消息包,如果存在,将该消息包中的已经过节点地址合并到消息队列中相同消息包缓存的已经过节点地址当中,丢弃收到的该消息包,如果不存在,触发消息包传递单元;
消息包传递单元,用于将接收的消息包传递到消息队列处理模块进行转发,以及传递到消息过滤模块。
消息过滤模块,用于根据用户设置的过滤规则将符合条件的消息传递到消息编辑和显示模块,如果不符合过滤条件则不显示的消息干扰用户,用户只要能够看到他想要的消息就可以了。
存储模块,用于在本地缓存本节点和周边节点的消息发送信息表结构,周边节点的相邻节点信息。本节点的当前相邻节点信息可以缓存在驱动层或应用层。
驱动层:包括无线通讯驱动模块,用于控制相应的硬件模块将接收到的消息向应用层传递,并将应用层发来的消息转发给无线自组网里的相邻设备节点,还可完成MAC地址表的更新。
硬件层:包括无线通讯芯片,是实现消息转发和接收的物理硬件电路,经常使用的无线自组网通讯硬件模块包括WIFI(802.11a/b/g)和蓝牙等。
本实施例采用的消息包格式包括以下内容,应说明的是,其中的字节数仅仅为一个示例。
帧类型,2字节,让应用软件识别出来这是无线自组网消息广播。
消息标识(ID),4个字节,消息的唯一标识。
源地址,6个字节,即创建此消息的节点的地址。
相邻节点数,1个字节,指一跳范围内的相邻的节点数。
消息内容长度,2个字节,标明消息内容的长度。
消息内容,0~256,存放在消息内容区。
已经过节点地址,0~512,这些地址都是本消息曾经到过的节点的地址,保存在消息包的地址缓存区。在该地址缓存区的起始位置可以存放已经过节点地址的个数。
相邻节点序列:0~256,以地址序列的形式保存在消息包的另一地址缓存区,相邻节点较多的相邻节点的地址放在前面。在该地址缓存区的起始位置可以存放相邻节点地址个数。
本节点的消息发送信息表结构,在发送的时候由消息转发模块来填写,该结构又包括:
1)消息队列首个消息包的发送时刻:8字节,这里指首个消息包发送时间段的起始时刻。节点在一个时间段发送一个消息包,时间段长度对各节点是统一设定的;应当注意的是消息包在发送时间段中是随机发送的,发送时刻只是用于标识该发送时间段,并不一定是消息包真正的发送时间点。
2)消息发送时刻表表项总数:1byte。
3)消息队列发送时刻表:0~128字节。每个表项包括两个字段:发送时刻和发送信道。其中的发送时刻占3byte,发送信道占1个byte。发送时刻表包含了消息队列各个消息包的发送时刻,用相对于消息队列首个消息包发送时刻的偏移值表示。偏移值的单位即一个时间段,该时间段的长度在自组网中所有节点都是一致的。
以上消息发送信息表结构的帧结构不是唯一的,只要能够确定发送队列中各个消息包的发送时刻和信道即可。如可以直接写入各个消息包的发送时刻。略去总项数,而以一特写的符号来标记表项结束等等。
周边节点消息发送信息表结构,用来存放该节点所知道的别的节点准备发送的消息的发送时刻。这个表结构比本节点的多出一个MAC地址的字段,即包括如下字段:
1)MAC地址(6byte);
2)消息队列首个消息包的发送时刻;
3)消息发送时刻表表项总数;
4)消息队列发送时刻表。
应当注意的是,这里的周边节点并非一定为当前的相邻节点,也可以是节点保存了其信息的以前的相邻节点。本地节点维护上述的表结构来缓存周边节点的消息发送时刻表,这样便于将自己消息的发送时间安排在一个和别的相邻节点不容易冲突的时刻。如此安排有利于进一步减少自组网内各个节点之间传递数据引起的碰撞。
以上内容中的帧类型、消息ID、源地址、消息内容长度和消息内容是由创建该消息的节点(图形界面模块)填写的,在转发过程中不做处理。而相邻节点数、缓存地址个数、已经过节点地址和相邻节点地址、本节点及周边节点的消息发送信息表结构由发送该消息包的消息转发模块进行填写或更新。
图4是消息广播的流程图,包括以下步骤:
步骤110,用户编辑好消息后,图形界面模块将编辑好的消息传递给消息队列处理模块;或者,消息队列处理模块接收到消息接收模块传递来的消息包;
步骤120,根据排序规则将消息包放入消息队列,确定其发送时间段(用发送时刻表示)和发送信道(以下也称为消息包预定的信道),并更新缓存在本地的本节点消息发送信息表结构;
本实施例将消息分两个优先级:原创级和转发级,原创级即用户自己创建的消息,原创级比转发级高。但该优先级的分类仅为一个示例,也可以根据内容的紧急程度来分优先级,分出的类别也不局限于2种。
在该步将消息包放入消息队列时遵循如下的排序规则:
a)同一优先级的消息包按照时间顺序来决定消息在队列中的位置;
b)高优先级的消息包可以插入到低先级的消息包之前,使原创级的消息包排到尽可能靠前的位置。
本实施例在插入时,还规定(可选):不能让两个高优先级的消息包在消息队列中的位置相邻,至少要间隔一个低优先级的消息包。这样是为了避免终端停止转发消息。如果不存在插队问题,两个高优先级的消息包是可以排在一起的。
c)对于要转发的消息包,如果队列中最后N个消息包的源地址相同而新来的消息和它们的源地址不同,那么,新来的消息包可以插到队列最后N-1个消息包前面。这样,节点会优先转发那些来自很少发送消息的节点的消息包。目的是为了均衡转发,避免大量带宽被一个节点所占用。
在其它实施例中,也可以简单地采用按时间顺序来排队。或者在采用第一条规则的基础上,不采用第二和第三条规则,或者采用第二、第三条规则中的一种或其它任意组合。
在不能插队时,根据本地记录的发送时刻占用情况(从本节点和周边节点的消息发送信息表结构中获取),将最靠前的空闲时刻作为其发送时间段的起始时刻,并为其选择发送信道。空闲时刻是指本节点和周边节点的消息时刻表结构中没有占用的时间段的起始时刻。
在可插队时,则根据其插入位置决定其发送时间段和信道。插入队列的消息包会占用紧挨其后的消息包的发送时刻和信道,而后者也会占用紧随其后的消息包的发送时刻,依此类推,直到消息队列中最后一个消息包。对最后一个消息包,重新根据发送时间段的占用情况,将最靠前的空闲时刻作为其发送时间段的起始时刻。然后更新本节点的消息发送信息表结构中的信息。
802.11b/g下可以至少设置三个完全不重叠的信道,如信道1/6/11。如果所有节点同时使用同一个信道,干扰和碰撞的几率肯定会非常大,但如果能够充分利用相隔较远的信道频谱不重叠的特性,甚至更多,那么干扰能够得到很好的抑止,从而提高了AD-HOC网络的容量。因此本实施例中还进行信道切换的控制。
该步中,不插队时选择发送信道时按照如下的方式进行:判断消息包的发送时间段是否要切换信道,即C-T是否大于等于S,如果没有,就选择上一个消息包所采用的信道,否则就更换信道。其中,C表示该消息包的发送时刻,T表示队列中上一个不同信道的消息包的发送时刻,S表示当前选定的信道切换时间间隔。S值较佳在一组值或一取值范围中随机选取,如5s,10s,15s,20s,25s等,通过随机选取可以进一步避免相邻节点的切换动作同步而总是切到同一信道上。
插队时,发送信道的选择和调整已在上文描述,对于消息队列中最后一个消息包,也按以上不插队时的方式重新选择一个发送信道。
步骤130,在前一消息包发送完成后,在下一个需要发送消息包的发送时间段发送消息队列最前面的消息包,一次发送过程包括以下步骤,如图5所示:
S21,判断本节点的当前相邻节点中有多少比例的节点与要转发的消息包中缓存的已经过节点和/或相邻节点相同,如该比例值超过(可以是大于或大于等于)设定的阈值,不符合转发条件,执行步骤S26,否则符合转发条件,执行步骤S22;
同时考虑已经过节点地址和相邻节点地址时,可以对两个比例值加权后再与所述阈值比较。阈值可以配置为50%或其它值。
该步也可以直接判断当前相邻节点中有多少个数的节点与要转发的消息包中缓存的已经过节点和/或相邻节点相同,如果超过设定的阈值则执行步骤S26,否则执行步骤S22。
S22,判断要转发的消息包预定的信道和当前信道是否相同,如果不相同,切换到预定信道后再执行下一步,否则直接执行下一步;
S23,更新符合转发条件的消息包中的相邻节点信息和已到过节点信息;
具体地,用本节点当前的相邻节点数、相邻节点地址来更新消息包中相应缓存区中的数据,写入时按当前相邻节点的相邻节点数的多少对相邻节点地址排序,相邻节点数多的相邻节点的地址排在前面。在该消息包中缓存的已经过节点不包括本节点时,应将本节点地址添加到该消息包中的已经过节点地址中。其中当前的相邻节点数和地址可以从本地的MAC地址表中获取,而相邻节点的相邻节点数以从该相邻节点发来的最新的一个消息包中读取的信息为准。
S24,根据本节点当前保存的消息发送信息表结构的数据,更新消息包中本节点的消息发送信息表结构;
以上各步操作在本实施例由消息转发模块完成。
S25,将该消息包交驱动层广播发送,如果发送失败,执行步骤S26,如果发送成功,执行步骤S27;
在一个发送时间段内,消息发送的时机是随机的,源节点将消息传送到一个目的节点之后休息相应时间直到这个时间段结束,以让别的节点也能在这个时间段内有机会发射,因为802.11MAC的接入机制不具有公平性,越是抢不到信道的节点越难发射消息,所以需要应用层来处理这一问题。时间段的长度对于每个消息包来说都是一样的。
S26,将该消息包放到消息队列的末尾,重新寻找一个最靠前的空闲时刻作为发送时刻,同时,此消息包的下一个消息包的发送时刻可提前到此消息包的发送时刻,然后马上重新执行S21。
S27,更新本地缓存的本节点消息发送信息表结构中的消息队列首个消息包的发送时刻,结束;
从上述步骤可看出,本实施例在消息转发的条件不满足时,不直接丢弃此条消息,而是将被移动节点缓存,以便在将来某个时刻继续转发,因为网络的节点随时随地在更新,有可能当移动节点正想要转发消息时发现周围没有相邻节点或者周围的相邻节点都已经收到过这一条消息。所以缓存下来是希望消息能够被带到更多的移动节点上。
图6示出了消息接收和显示的流程,当用户参与自组网的便携设备接收到一条消息,从接收到显示到屏幕上大致要经历如下的步骤:
步骤210,驱动层从硬件中获取消息包,传递给应用层的消息接收模块;
步骤220,更新本地周边节点消息发送信息表结构,包括:在本地添加消息包中发送节点的消息发送信息表结构或更新已有的该节点的消息发送信息表结构,同时更新消息包相邻节点序列当中,与接收节点相邻的节点的消息发送信息表结构;
先根据发送节点的地址查找本地缓存的周边节点消息发送信息表结构,如果找到发送节点的记录,根据消息包中缓存的消息发送信息表结构更新到相应的表项当中;如果没有找到且缓存中有足够的空间,则在该缓存中创建新的表结构。在缓存已满时,一般会删除周边节点中的非相邻节点的表结构,让出空间来保留当前相邻节点的表结构。
消息接收模块接收到消息包之后还会根据消息包中的相邻节点及其先后顺序来更新存在本地的周边节点消息发送信息表结构。如果某个节点同时属于本节点相邻节点和消息包中相邻节点序列中的节点,且该节点是消息包中相邻节点序列中排在第N位的节点,则在周边节点消息发送信息表结构该节点的表结构中添加该消息包的发送时刻,该发送时刻为接收节点的第N个空闲时刻。例如,如该节点为消息包中相邻节点序列中排在最前面的节点,则将转发此消息的时刻安排最靠前的空闲时刻上。
步骤230,根据消息包中的相邻节点信息(相邻节点数及地址),在本地缓存消息包发送节点的相邻节点信息或更新已保存的该节点的相邻节点信息;
在移动节点的MAC表中,相邻节点是在不断刷新的,消息接收模块保存的该节点地址及其相邻节点数在相邻节点删除后,可以继续保留。因为过一段时间该节点仍可能变为相邻结果,保存的相邻节点数仍可作为消息包中相邻节点地址排序的参考。
步骤240,判断该消息包是否已在消息队列中,如果是,执着步骤250,否则,执行步骤260;
消息接收模块是通过消息包中的消息ID和源地址来判断消息包是否已经在消息队列当中,该两者相同则属于同一消息包。
步骤250,将该消息包中的已经过节点地址合并到消息队列中相同消息包缓存的已经过节点地址当中,丢弃收到的该消息包,结束;
上述“合并”的含义是取两者的并集,缓存的已经过节点地址不区分到达的先后顺序。
步骤260,将该消息包传递到消息队列处理模块进行转发,并传递到消息过滤模块;
步骤270,按照用户设定的过滤规则检查消息内容,如可以显示,则将消息显示在用户图形界面上供用户浏览,否则,不显示,结束。
在以上实施例的基础上,本发明还有许多的变换方式:
首先,在其它的实施例中,对于上述提到的选择一个合理的转发时机以节约系统带宽的4种处理方式,以及为实现负载均衡采用的2种处理方式。可以只采用其中的一种,或者任意多种的组合。和现有技术相比均具有实质性的特点和技术效果,均可达到本发明的基本目的。
另一点要说明的是,以上的模块划分是逻辑上的,并不局限于某一种固定的划分方式,特别在方法中,虽然上述流程提到了相应的模块,但也完全可以忽略某种固定划分出来的模块,只要能完成相应的操作即可。
在另一实施例中,对于发送时机的选择以及休眠时间,可以采用另一种处理方式,即将本节点的相邻节点数和发送该消息包的相邻节点的相邻节点数相加,假定和为P,消息转发模块从1~P中随机选择一个值N,在从当前时间单位起的第N个时间单位发送该消息包,发送完后再休眠P-N个时间单位。这种方式也可以在一定程度上减少冲突的概率。和实施例中的方式相比,不需要在消息包中保存相邻节点地址,也不需要由消息接收模块从消息包中提取和保存其相邻节点数的信息来对相邻节点进行排序,而只需要根据要转发消息包中原有的相邻节点数进行计算即可。
此外,本发明方法不局限于采用何种底层协议,对于其他物理标准的Ad Hoc网络,比如HomeRF/Bluetooth/Zigbee,本发明也可以适用。
Claims (16)
1. 一种移动无线自组网的消息广播和接收方法,在消息包结构中包含发送该消息包的节点的相邻节点信息,其中:
消息广播过程包括以下步骤:
(a)节点将本地创建的消息包或收到的消息包放入消息队列,在前一消息包发送完成后,取出消息队列中最前面的消息包准备发送;
(b)将本节点的相邻节点与该消息包缓存的相邻节点进行比较,当相同节点的比例或个数未超过设定阈值时,更新该消息包中缓存的相邻节点信息,执行下一步;
(c)将该消息包交驱动层广播发送;
在消息接收过程包括以下步骤:
(A)节点收到消息包;
(B)根据该消息包中的相邻节点信息,在本地缓存消息包发送节点的相邻节点信息或更新已保存的该节点的相邻节点信息;
(C)对该消息包进行转发和显示处理。
2. 如权利要求1所述的方法,其特征在于:
在消息包结构中还包含发送该消息包的节点的消息发送信息,而在节点上缓存本节点和周边节点的消息发送信息,本节点的消息发送信息中包含该节点消息发送队列中各个消息包的发送时间段信息,周边节点的消息发送信息中包含相应节点的标识及其消息发送队列中各个消息包的发送时间段信息;节点在一个时间段发送一个消息包,时间段长度对各节点是统一设定的;
步骤(a)将消息包放入消息队列时,按以下方法选定其发送时间段,然后更新缓存在本地的本节点消息发送信息;
如不插队,查找本节点和周边节点的消息发送信息,将最靠前的没有被占用的空闲时间段作为其发送时间段;
如插队时,插入队列的消息包占用紧挨其后的消息包的发送时间段,而后者占用紧随其后的消息包的发送时间段,依此类推,对消息队列的最后一个消息包,则重新查找本节点和周边节点的消息发送信息,将最靠前的空闲时间段作为其发送时间段;
步骤(c)中是在预定的发送时间段内将该消息包交驱动层广播发送;
步骤(B)还根据消息包中包含的信息,在本地添加消息包中发送节点的消息发送信息或更新已有的该节点的消息发送信息。
3. 如权利要求4所述的方法,其特征在于:
所述相邻节点信息包括相邻节点的个数信息和相邻节点的标识信息;
步骤(b)更新该消息包中缓存的相邻节点时,是按本地缓存的相邻节点的相邻节点个数的多少按序排列,得到相邻节点序列;
步骤(B)还根据消息包中包含的信息,同时更新本地缓存的消息包相邻节点序列当中与接收节点相邻的节点的消息发送信息,如该节点是消息包相邻节点序列中相邻节点个数排在第N位的节点,则在该节点的消息发送信息中添加该消息包的发送时间段信息,该发送时间段为接收节点的第N个空闲时间段。
4. 如权利要求4所述的方法,其特征在于:
所述消息包的发送时间段信息为时间段的起始时刻,称为发送时刻;所述消息发送信息包括:a)消息队列首个消息包的发送时刻;b)消息发送时刻表表项总数;c)消息队列发送时刻表,每一表项记录了消息队列中一个消息包的发送时刻。
5. 如权利要求4所述的方法,其特征在于:
所述消息发送信息中还包括各个消息包的发送信道信息;
步骤(a)将消息包放入消息队列时,还按以下方法选择其发送信道:
如不插队,判断C-T是否大于等于S,如果没有,就选择上一个消息包所采用的信道,否则就更换为另一个信道;其中,C表示该消息包的发送时刻,T表示队列中上一个不同信道的消息包的发送时刻,S表示当前选定或随机选定的信道切换时间间隔;
如插队,则以紧挨其后的消息包的发送信道为其发送信道,而后者也以紧随其后的消息包的发送信道为其发送信道,依此类推,对消息队列的最后一个消息包,按上述不插队时的相同方式来选定一个发送信道;
步骤(c)发送消息包时,先判断要转发消息包预定的信道和当前信道是否相同,如果不相同,先切换到预定信道后,再进行后续发送步骤。
6. 如权利要求1所述的方法,其特征在于:
步骤(c)在发送时间段中,节点是随机选择一个时机发送所述消息包,如果发送成功,需更新本地缓存的本节点消息发送信息中的消息队列首个消息包的发送时刻。
7. 如权利要求1所述的方法,其特征在于:
在消息包结构中还包含该消息包的已经过节点信息;
步骤(b)中还将本节点的相邻节点与该消息包缓存的已经过节点进行比较,对得到的两个比例值或个数加权后再与设定阈值比较,如未超过设定阈值时,符合转发条件,在消息包中的已经过节点不包括本节点时,将本节点标识添加到该消息包中的已经过节点标识中,执行步骤(c)。
8. 如权利要求1所述的方法,其特征在于:
步骤(B)还判断消息队列中是否存在消息标识和源地址都与收到的消息包相同的消息包:
如果存在,在消息包结构中包含该消息包的已经过节点信息时,将该消息包中的已经过节点标识合并到消息队列中相同消息包缓存的已经过节点标识当中,然后丢弃收到的该消息包,否则直接丢弃;
如果不存在,执行步骤(C)。
9. 如权利要求1或7所述的方法,其特征在于:
步骤(b)如超过设定阈值,判断消息包不符合转发条件时,和/或步骤(c)发送失败时,将所述消息包重新放入消息队列的末尾。
10. 一种移动无线自组网的消息广播方法,在消息包结构中包含已经过节点的信息,其中消息广播过程包括以下步骤:
(a)节点将本地创建的消息包或收到的消息包放入消息队列,在前一消息包发送完成后,取出消息队列中最前面的消息包准备发送;
(b)将本节点的相邻节点与该消息包缓存的已到过节点进行比较,当相同节点的比例或个数未超过设定阈值时,在消息包中的已经过节点不包括本节点时,将本节点标识添加到该消息包中的已经过节点标识中,执行下一步;
(c)将该消息包交驱动层广播发送。
11. 一种移动无线自组网的消息广播和接收方法,其中消息接收过程包括以下步骤:
(A)节点收到消息包;
(B)判断消息队列中是否存在消息标识和源地址都与收到的消息包相同的消息包,如果存在,丢弃收到的该消息包,如果不存在,执行步骤(C)。
(C)对该消息包进行转发和显示处理。
12. 如权利要求11的方法,其特征在于:
在消息包结构中还包含该消息包的已经过节点信息;消息广播过程包括以下步骤:
(a)节点将本地创建的消息包或收到的消息包放入消息队列,在前一消息包发送完成后,取出消息队列中最前面的消息包准备发送;
(b)将本节点的相邻节点与该消息包缓存的已到过节点进行比较,当相同节点的比例或个数未超过设定阈值时,在消息包中的已经过节点不包括本节点时,将本节点标识添加到该消息包中的已经过节点标识中,执行下一步;
(c)将该消息包交驱动层广播发送;
步骤(B)中,如消息队列中是否存在消息标识和源地址都与收到的消息包相同的消息包,先将该消息包中的已经过节点标识合并到消息队列中相同消息包缓存的已经过节点标识当中,再丢弃收到的该消息包。
13. 一种移动无线自组网的消息广播方法,其特征在于,在消息包不符合转发条件时,将所述消息包重新放入消息队列的末尾准备发送。
14. 一种移动无线自组网的消息广播和接收方法,在消息包结构中包含发送该消息包的节点的消息发送信息,而在节点上缓存本节点和周边节点的消息发送信息,本节点的消息发送信息中包含该节点消息发送队列中各个消息包的发送时间段信息,周边节点的消息发送信息中包含相应节点的标识及其消息发送队列中各个消息包的发送时间段信息;节点在一个时间段发送一个消息包,时间段长度对各节点是统一设定的;其中:
消息广播过程包括以下步骤:
(a)节点将本地创建的消息包或收到的消息包放入消息队列,按以下方法选定其发送时间段,然后更新缓存在本地的本节点消息发送信息;
如不插队,查找本节点和周边节点的消息发送信息,将最靠前的没有被占用的空闲时间段作为其发送时间段;
如插队时,插入队列的消息包占用紧挨其后的消息包的发送时间段,而后者占用紧随其后的消息包的发送时间段,依此类推,对消息队列的最后一个消息包,则重新查找本节点和周边节点的消息发送信息,将最靠前的空闲时间段作为其发送时间段;
(b)在前一消息包发送完成后,取出消息队列中最前面的消息包;
(c)在预定的发送时间段内将该消息包交驱动层广播随机发送;
在消息接收过程包括以下步骤:
(A)节点收到消息包;
(B)根据消息包中包含的信息,在本地添加消息包中发送节点的消息发送信息或更新已有的该节点的消息发送信息;
(C)对该消息包进行转发和显示处理。
15. 如权利要求14所述的方法,其特征在于:
在消息包结构中还包含发送该消息包的节点的相邻节点信息,包括相邻节点的个数信息和相邻节点的标识信息;
步骤(b)更新所述消息包中缓存的相邻节点时,是按本地缓存的相邻节点的相邻节点个数的多少按序排列,得到相邻节点序列;
步骤(B)还根据消息包中包含的信息,同时更新本地缓存的消息包相邻节点序列当中与接收节点相邻的节点的消息发送信息,如该节点是消息包相邻节点序列中相邻节点个数排在第N位的节点,则在该节点的消息发送信息中添加该消息包的发送时间段信息,该发送时间段为接收节点的第N个空闲时间段。
16. 一种移动无线自组网的消息广播方法,节点在一个时间段发送一个消息包,时间段长度对各节点是统一设定的,消息包结构中包括各个消息包的发送信道信息,该方法包括以下步骤:
(a)节点将本地创建的消息包或收到的消息包放入消息队列,按以下方法选择其发送信道,然后更新缓存的消息队列中各个消息包的发送信道信息:
如不插队,判断C-T是否大于等于S,如果没有,就选择上一个消息包所采用的信道,否则就更换为另一个信道;其中,C表示该消息包发送时间段的起始时刻,T表示队列中上一个不同信道的消息包发送时间段的起始时刻,S表示当前选定或随机选定的信道切换时间间隔;
如插队,则以紧挨其后的消息包的发送信道为其发送信道,而后者也以紧随其后的消息包的发送信道为其发送信道,依此类推,对消息队列的最后一个消息包,按上述不插队时的相同方式来选定一个发送信道;
(b)在前一消息包发送完成后,取出消息队列中最前面的消息包,判断要转发消息包预定的信道和当前信道是否相同,如果不相同,先切换到预定信道,执行下一步,否则直接执行下一步;
(c)将该消息包交驱动层广播发送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100635885A CN101242564A (zh) | 2007-02-05 | 2007-02-05 | 移动无线自组网消息广播和接收的方法及所用终端节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100635885A CN101242564A (zh) | 2007-02-05 | 2007-02-05 | 移动无线自组网消息广播和接收的方法及所用终端节点 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101242564A true CN101242564A (zh) | 2008-08-13 |
Family
ID=39933730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007100635885A Pending CN101242564A (zh) | 2007-02-05 | 2007-02-05 | 移动无线自组网消息广播和接收的方法及所用终端节点 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101242564A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102647323A (zh) * | 2012-03-28 | 2012-08-22 | 华为技术有限公司 | 流量控制方法、装置和集群系统 |
CN102769829A (zh) * | 2012-06-20 | 2012-11-07 | 中兴通讯股份有限公司 | 信息发布和获取的方法及系统 |
CN103096513A (zh) * | 2011-10-28 | 2013-05-08 | 网进流动科技有限公司 | 一种无线网状网络 |
CN101997856B (zh) * | 2009-08-26 | 2014-12-10 | 中兴通讯股份有限公司 | 信令消息的交互方法及应用服务器 |
CN104378290A (zh) * | 2014-10-31 | 2015-02-25 | 北京盈进科技有限公司 | 一种报文转发方法和装置 |
CN105577570A (zh) * | 2015-12-15 | 2016-05-11 | 重庆大学 | 一种支持业务报文时序逻辑的算法 |
CN106330688A (zh) * | 2016-10-21 | 2017-01-11 | 上海览海在线健康管理有限公司 | 基于随机消息队列发送医疗消息的方法及系统 |
CN106681774A (zh) * | 2016-12-30 | 2017-05-17 | Tcl通力电子(惠州)有限公司 | 蓝牙扬声器的软件升级方法及智能终端 |
CN106933686A (zh) * | 2017-03-10 | 2017-07-07 | 广东欧珀移动通信有限公司 | 一种调整广播消息队列的方法、装置及终端 |
CN107005419A (zh) * | 2014-10-10 | 2017-08-01 | 瑞典爱立信有限公司 | 网状网络中的广播 |
CN113709809A (zh) * | 2021-08-16 | 2021-11-26 | 电子科技大学 | 一种基于协同通信的移动自组网广播方法 |
CN117040696A (zh) * | 2023-10-09 | 2023-11-10 | 深圳市天思智慧科技有限公司 | 一种基于mqtt协议的消息补传方法 |
-
2007
- 2007-02-05 CN CNA2007100635885A patent/CN101242564A/zh active Pending
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101997856B (zh) * | 2009-08-26 | 2014-12-10 | 中兴通讯股份有限公司 | 信令消息的交互方法及应用服务器 |
CN103096513A (zh) * | 2011-10-28 | 2013-05-08 | 网进流动科技有限公司 | 一种无线网状网络 |
CN102647323B (zh) * | 2012-03-28 | 2015-01-07 | 华为技术有限公司 | 流量控制方法、装置和集群系统 |
CN102647323A (zh) * | 2012-03-28 | 2012-08-22 | 华为技术有限公司 | 流量控制方法、装置和集群系统 |
CN102769829A (zh) * | 2012-06-20 | 2012-11-07 | 中兴通讯股份有限公司 | 信息发布和获取的方法及系统 |
WO2013189249A1 (zh) * | 2012-06-20 | 2013-12-27 | 中兴通讯股份有限公司 | 信息发布和获取的方法及系统 |
US9729256B2 (en) | 2012-06-20 | 2017-08-08 | Zte Corporation | Method and system for issuing and acquiring information |
CN102769829B (zh) * | 2012-06-20 | 2017-04-05 | 中兴通讯股份有限公司 | 信息发布和获取的方法及系统 |
CN107005419A (zh) * | 2014-10-10 | 2017-08-01 | 瑞典爱立信有限公司 | 网状网络中的广播 |
CN104378290B (zh) * | 2014-10-31 | 2017-07-11 | 北京盈进科技有限公司 | 一种报文转发方法和装置 |
CN104378290A (zh) * | 2014-10-31 | 2015-02-25 | 北京盈进科技有限公司 | 一种报文转发方法和装置 |
CN105577570B (zh) * | 2015-12-15 | 2019-05-14 | 重庆大学 | 一种支持业务报文时序逻辑的算法 |
CN105577570A (zh) * | 2015-12-15 | 2016-05-11 | 重庆大学 | 一种支持业务报文时序逻辑的算法 |
CN106330688A (zh) * | 2016-10-21 | 2017-01-11 | 上海览海在线健康管理有限公司 | 基于随机消息队列发送医疗消息的方法及系统 |
CN106681774A (zh) * | 2016-12-30 | 2017-05-17 | Tcl通力电子(惠州)有限公司 | 蓝牙扬声器的软件升级方法及智能终端 |
CN106681774B (zh) * | 2016-12-30 | 2021-01-12 | Tcl通力电子(惠州)有限公司 | 蓝牙扬声器的软件升级方法及智能终端 |
CN106933686A (zh) * | 2017-03-10 | 2017-07-07 | 广东欧珀移动通信有限公司 | 一种调整广播消息队列的方法、装置及终端 |
CN113709809A (zh) * | 2021-08-16 | 2021-11-26 | 电子科技大学 | 一种基于协同通信的移动自组网广播方法 |
CN113709809B (zh) * | 2021-08-16 | 2023-04-07 | 电子科技大学 | 一种基于协同通信的移动自组网广播方法 |
CN117040696A (zh) * | 2023-10-09 | 2023-11-10 | 深圳市天思智慧科技有限公司 | 一种基于mqtt协议的消息补传方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101242564A (zh) | 移动无线自组网消息广播和接收的方法及所用终端节点 | |
Zhao et al. | Decentralized cognitive MAC for opportunistic spectrum access in ad hoc networks: A POMDP framework | |
JP3799285B2 (ja) | 無線lan基地局、無線端末およびプログラム | |
KR101256687B1 (ko) | 다중 경로 설정 장치 및 방법 | |
CN100477633C (zh) | 改善无线网络中的服务质量的方法 | |
US8130654B2 (en) | Context-aware packet switching | |
Guo et al. | An on-demand scatternet formation and multi-hop routing protocol for BLE-based wireless sensor networks | |
CN101027914B (zh) | 多点到多点的无线自组织数据传输协议 | |
CN101674631B (zh) | 自组织网络中基于最少信道切换的多信道路由方法 | |
CN105744563B (zh) | 一种基于蓝牙协作的adhoc网络多信道通信方法 | |
CN101459949B (zh) | 路由建立方法 | |
CN101102283A (zh) | 一种在无线接入点上优化未知单播转发的方法及设备 | |
Hwang et al. | A novel efficient power‐saving MAC protocol for multi‐hop MANETs | |
JP2003051828A (ja) | 無線lanシステム | |
JP2004140773A (ja) | Odmaシステムのデータ伝送方法 | |
JP4889290B2 (ja) | 無線通信端末及び無線通信方法 | |
CN101938784B (zh) | 信道分配方法、信道调整方法和网络设备 | |
CA2450606C (en) | Method and apparatus for routing data | |
CN1849785A (zh) | 提供介质访问协议的方法 | |
Lee et al. | A proactive routing protocol for multi-channel wireless ad-hoc networks (DSDV-MC) | |
CN102083164A (zh) | 基于能量感知的无线传感器网络机会路由方法 | |
Reno et al. | Relay node selection in Bluetooth mesh networks | |
CN1937576A (zh) | 一种快速路由建立的方法及装置 | |
Zhou et al. | A novel routing protocol for ad hoc sensor networks using multiple disjoint paths | |
Guerroumi et al. | On the medium access control protocols suitable for wireless sensor networks-a survey |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080813 |