CN102118826A - 网络中节点间的多跳通信方法 - Google Patents
网络中节点间的多跳通信方法 Download PDFInfo
- Publication number
- CN102118826A CN102118826A CN2011100647997A CN201110064799A CN102118826A CN 102118826 A CN102118826 A CN 102118826A CN 2011100647997 A CN2011100647997 A CN 2011100647997A CN 201110064799 A CN201110064799 A CN 201110064799A CN 102118826 A CN102118826 A CN 102118826A
- Authority
- CN
- China
- Prior art keywords
- node
- message
- nodes
- list item
- hop
- 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.)
- Granted
Links
Images
Abstract
本发明揭示了一种网络中节点间的多跳通信方法,所述方法包括:节点动态发现步骤:当节点收到任何一种类型的消息时,该节点就更新自己的节点列表;每个消息都作为控制消息,所有消息的消息头均相同;当节点收到一个其他节点发来的消息时,该节点从消息头里截获关于这个源节点的信息,同时该节点能从IP头里获取上一跳的IP;消息发送步骤:支持消息的广播、单播以及组播;在发送消息前需要遵守一个前提,即任何一个节点要发送消息时都先要查看消息头的跳计数域,若发现跳计数域的值达到了一个最大值,就直接丢弃,不再向外转发。本发明提出的网络中节点间的多跳通信方法,可解决移动社交网络中节点间的多跳通信问题。
Description
技术领域
本发明属于无线通讯技术领域,涉及一种通信方法,尤其涉及一种网络中节点间的多跳通信方法。
背景技术
近几年来,随着以MySpace、Facebook为代表的社交网络的迅速崛起,越来越多的人选择通过社交网络结识陌生人、与他人交流。而由于WiFi、3G等无线通信技术的逐渐普及,使人们开始越来越重视产品的移动性。移动社交网络的出现,突破了传统的基于Web技术的社交网络在时间和空间上的局限性,满足了用户日益强烈的随时随地与他人交流的愿望。移动社交网络通常以移动客户端的形式被安装在各个移动平台上,用户通过移动客户端登录社交网络。
目前,移动社交网络中的节点间的通信主要是通过WiFi或蜂窝网络接入Internet实现的。其实除了这种方式以外,几个邻近的节点还可以通过移动设备的WLAN功能组建一个小范围的动态的移动社交网络,也就是Ad Hoc网络。用户通过这个Ad Hoc网络可以与在同一个网络中的其他用户进行通信。这种通信方式,使得当无法接入Internet时,移动社交网络的用户仍然可以与邻近的其他用户进行交流和互动,真正让移动社交网络做到了“随时随地”。
然而,通过Ad Hoc网络进行通信时,会受到通信距离的限制。也就是说,由于移动设备的WLAN信号覆盖范围有限,如果Ad Hoc网络中的两个节点之间超过一定的距离,这两个节点就无法进行通信。实验表明,在室外空旷的地方,普通移动设备的WLAN信号覆盖范围只有300米左右,而当设备之间存在墙壁等障碍物时,WLAN信号的覆盖范围会大大缩小。因此,有必要通过建立一种多跳的通信机制,通过中间节点转发数据包,来扩大移动社交网络中节点间的通信距离。
目前已有多种路由协议可以解决Ad Hoc网络中的多跳通信问题。这些路由协议大致可以分为两大类:先验式(Proactive)路由协议和反应式(Reactive)路由协议。先验式路由协议中,每个节点需要维护一张包含到达其他节点路由信息的路由表,并根据网络拓扑的变化随时更新路由表,这张路由表可以准确地反映出网络的拓扑结构。源节点一旦要发送报文就可以立即获得到达目的节点的路径。因此这种路由协议的时延较小,但路由协议的开销较大。反应式路由协议中,节点不需要维护及时准确的路由信息,当需要发送数据时才发起路由查找过程。与先验式路由协议相比,反应式路由协议的开销较小,但是报文传送的时延较大。而移动社交网络的特点决定了通信既要有较高的实时性,同时通信时数据流量会比较大,容易造成网络的拥塞。因此,目前已有的先验式路由协议和反应式路由协议都不太适合移动社交网络。
发明内容
本发明所要解决的技术问题是:提供一种网络中节点间的多跳通信方法,可解决移动社交网络中节点间的多跳通信问题。
为解决上述技术问题,本发明采用如下技术方案:
一种网络中节点间的多跳通信方法,所述方法包括:
节点动态发现步骤:当节点收到任何一种类型的消息时,该节点就更新自己的节点列表;每个消息都作为控制消息,所有消息的消息头均相同;当节点收到一个其他节点发来的消息时,该节点从消息头里截获关于这个源节点的信息,同时该节点能从IP头里获取上一跳的IP;根据这些信息对节点列表中源节点对应的表项和上一跳节点对应的表项进行相应的更新,如果节点列表中没有相应的表项,则需要新建这个表项;
消息发送步骤:支持消息的广播、单播以及组播;在发送消息前需要遵守一个前提,那就是任何一个节点要发送消息时都先要查看消息头的跳计数域,若发现跳计数域的值达到了一个最大值,就直接丢弃,不再向外转发;而节点在收到消息后在做任何处理之前都需将消息头里的跳计数域的值加1。
作为本发明的一种优选方案,节点动态发现步骤中,当一个新的节点加入移动社交网络时,该节点会广播一个HELLO类型的消息,来告诉其他节点自己的加入;
当其他节点收到该消息时,会在自己的节点列表中加入这个节点的表项;同时,所有收到该消息的节点会回送一个HELLO_ACK类型的消息,从而使这个新加入的节点能快速知道这个移动社交网络中有哪些节点,并建立自己的节点列表;
其中,HELLO类型的消息用在路由发现的过程中,当其他节点收到这种类型的消息时,需要向源节点单播一条HELLO_ACK消息。
作为本发明的一种优选方案,节点动态发现步骤中,总是以收到的从这个节点发出的最后一个消息的路径为准;
如果从这个节点发出的最后一个消息的路径的跳数和原来的NOH值一样甚至比它小,那么更新NHTI的值,同时NOH和TNU的值也就跟着改变;否则的话就需要看这个NHTI的值是否足够旧,也就是拿当前系统时间减去TNU的值,如果超过了一个阈值,就需要更新,否则就保持原来的NHTI值;
其中,NHTI、NOH、TNU均为节点的数据组成;
NHTI指从节点列表的所有者到达这个表项对应的节点的下一跳节点的IP地址;当所有者要单播一个消息给这个表项对应的节点时,尤其是这个节点不是所有者的邻居节点时,需要知道下一跳的节点的IP地址,然后将这个消息发送给下一跳节点;通过中间节点的转发,这个消息才能到达目标节点那里;有了这个NHTI域,所有者就能知道应该请哪个节点充当中间节点来转发消息;
NOH是和上述NHTI的值对应的,记录的是从由NHTI记录的下一跳节点到这个NOH域所在的表项对应的节点需要经过几跳;
TNU是和上述NHTI的值对应的,记录了NHTI值的最后一次更新的时间。
作为本发明的一种优选方案,当一个节点要退出移动社交网络时,它需要广播一个EXIT类型的消息;其他节点收到这种类型的消息后就会知道该节点将要退出移动社交网络,并把自己的节点列表中源节点对应的表项删除,同时会检查节点列表中所有表项的NTHI域,如果NTHI域的值等于源节点的IP,就将其清零,并通过广播HELLO消息重新获取到达该表项的NHTI的值;
虽然就算节点不广播EXIT消息,在它退出一段时间之后其他节点也能感知到它的退出,利用它对应的表项中的TLMR域,但这段时间显然会比直接广播EXIT消息慢很多,节点已经退出移动社交网络但它对应的表项仍存在于其他节点的节点列表之中显然会影响网络的性能;
其中,TLMR域指节点列表的所有者最后收到的这个表项对应的节点发出或转发的消息的时间戳;当所有者发现某个表项的TLRM与当前系统时间相差一定时间以上时,就认为这个表项对应的节点已经退出了移动社交网络,从而把这个表项从节点列表里删除;这样就可以保证当一个节点非正常退出移动社交网络或者在正常退出时广播的EXIT消息某些节点没有收到的情况下,这些节点仍然能在一段时间后感知到该节点的退出。
作为本发明的一种优选方案,当单播出去的消息第一次超时后,会对整个消息的长度作一个判断,当整个消息的长度小于等于N个字节的时候,就直接将消息广播给自己的邻居节点,请所有的邻居节点帮忙转发;
当源节点的邻居节点收到这条消息后,就会按照一般单播的过程,将消息发送给到达目的节点的下一跳,而不是再次将消息广播出去;其中,N为设定值。
作为本发明的一种优选方案,当源节点需要将一条消息组播给一组目的节点时,首先查询自己的节点列表,将这些目的节点进行分组,分组的依据是到达同一组中的节点的下一跳地址是相同的;然后分别为每个组构造一个消息头,在目的地址域中填入该组中节点的数量,并将该组中所有节点的IP地址填入目的地址列表域,然后将要发送的净荷部分插在消息头后面,分别将消息发送给到达这个组的下一跳节点;
当中间节点收到一个组播消息时,重复与源节点同样的步骤,并查看消息头的目的节点地址列表中有没有自己的IP地址,如果有的话就向源节点回送一个USER_ACK消息,并获取消息的净荷部分作进一步的处理;当某个组只有一个目的节点时,中间节点就以单播的方式将这个消息发送给下一跳节点。
本发明的有益效果在于:本发明提出的网络中节点间的多跳通信方法,可解决移动社交网络中节点间的多跳通信问题。
本发明充分考虑了移动社交网络特点,克服了传统Ad Hoc路由协议应用在移动社交网络上的种种不足。结合了传统Ad Hoc网络中先验式路由协议与反应式路由协议各自的优点,在保证通信实时性的同时,也能较好地保持网络的通畅。使用了统一的消息头格式,提出了一切消息都是控制消息的思想,简化了多跳通信机制及其实现过程。
附图说明
图1为消息头格式示意图。
图2为本发明方法的流程图。
图3为单播消息发送过程的流程图。
图4为单播USER消息发送过程的流程图。
图5为组播消息发送过程的流程图。
具体实施方式
下面结合附图详细说明本发明的优选实施例。
实施例一
本本发明针对移动社交网络的特点,并借鉴了传统Ad Hoc网络中先验式路由协议和反应式路由协议各自的优点,为移动社交网络中的节点通过Ad Hoc网络进行通信建立了一种专门的通信机制,解决了移动社交网络中节点间的多跳通信问题。具体说来,这种通信机制可以完成以下功能:
●移动社交网络中的任意两个节点,只要它们的通信距离不超过规定的最大跳数,就可以通过多跳的方式进行通信;
●网络中的每个节点都能获知在一定跳数范围内其他节点的基本信息;
●当新的节点加入移动社交网络时,其他在一定跳数范围内的节点可以立即获知该节点的加入,同时这个新加入的节点也能马上获得其他在一定跳数范围内的节点的信息;
●当一个节点退出这个移动社交网络时,其他在一定跳数范围内的节点都能立即获知。
除了以上几个基本功能之外,本通信机制可以在保证较好的实时性的前提下,减少出现网络拥塞的概率。
1.1消息头格式
这里描述的通信机制采用了统一的消息头格式,传输层采用UDP协议,消息的目的端口取决于具体实现。消息头的格式如图1所示。
下面对消息头里的每个域进行解释。
●Flag:16bits
即标志域。Flag域的作用是标志收到的消息是否来自移动社交网络中的其他节点。
●Version:4bits
Version域用来标识源节点使用的通信机制的版本号。当前版本号为2。
●Type:4bits
Type域指定了消息的类型,消息的类型决定了消息的净荷部分的内容。在本文描述的通信机制中,总共定义了5种类型的消息。关于这5种类型的消息,会在4.2节中进行详细描述。
●M:1bit
M域指的是More destination address,也就是用来标识这个消息的目的地址是否不止一个。如果M域置1,则说明该消息的目的地址不止一个,此时所有的目的地址就被全部存放在图1所示的可选的Destination Address List中,而DestinationAddress域则用来保存目的地址的数量。
●C:2bits
C域指的是Cast Type,也就是用来指定这个消息是广播,单播还是组播。0表示广播,1表示单播,2表示组播。
●Hop Count:5bits
即跳计数域。当源节点生成一个消息时,将跳计数域初始化为0,此后该消息每经过一个中间节点,就将跳计数域加1。最后当跳计数域的值达到一个最大值之后,收到消息的节点就不再向外转发。每个收到消息的节点都可以根据跳计数域知道自己与源节点之间间隔的跳数。
●Message Sequence:32bits
即消息序号域。移动社交网络中每个节点都需要维护一个变量,里面存储的是该节点发送的上一个消息的序号。当节点需要发送一个消息时,首先将该变量的值加1,然后填入Message Sequence域中。消息序号的作用会在后面讲到。
●Payload Size:32bits
消息所携带的净荷的长度,单位是字节。
●Destination Add ress:32bits
目的节点的IP地址。当M域置1时,里面存储的是目的地址的数量。
●Source Addre:32bits
源节点的IP地址。
●Destination Address List(Optional):32*n bits
这是一个可选的域。当M域置1时,用来存储所有的目的地址。
1.2消息的类型
这里描述的通信机制总共定义了5种类型的消息。消息的类型由消息头里的Type域指定。下面分别对这5种类型的消息进行描述。
●HELLO:HELLO消息通常用在路由发现的过程中,当其他节点收到这种类型的消息时,需要向源节点单播一条HELLO_ACK消息。HELLO消息可以在消息头后面带一个净荷,净荷里可以包含源节点的一些基本信息,比如用户名、用户ID等。当消息头的目的节点域填的是广播地址时,所有收到HELLO消息的节点都需要向源节点单播一条HELLO_ACK消息;当消息头的目的节点域填的是某个节点的IP地址时,只有该节点需要向源节点单播一条HELLO_ACK消息;当M域为1时,则所有自己的IP地址在消息头的目的地址列表(Destination Address List)域中的节点都需要向源节点单播一条HELLO_ACK消息。
●HELLO_ACK:HELLO_ACK消息通常用来对HELLO消息进行回复,使源节点完成路由发现过程。另外,每个节点每隔一段时间,需要向整个移动社交网络广播一个HELLO_ACK消息,告诉其他节点自己的存在,同时使其他节点更新路由信息。为了尽量避免网络的拥塞,这个时间间隔不能设得太短,通常至少需要在60秒以上。
●EXIT:当一个节点要退出移动社交网络时需要广播EXIT消息,用来通知其他节点自己将要退出移动社交网络。这种类型的消息通常没有净荷部分。
●USER:用户消息。在这个通信机制中移动社交网络的“社交”功能完全是通过收发USER消息来实现的。移动客户端为了完成某一项具体应用而接收或发送USER消息。移动社交网络中不同的应用发送的USER消息的净荷格式和内容通常是不同的,但净荷的最初的两个字节必须用来指定应用的类型,以便程序将消息传递给相应的应用模块处理消息。
●USER_ACK:当目的节点收到源节点单播或组播给它的USER类型的消息时,回送给源节点的确认消息,用来确认收到了该USER消息。这种类型的消息在消息头后面包含了收到的USER类型的消息头里的消息序号。这样当发送方收到这条消息时,就可以知道接收方收到的是哪条消息。当源节点单播一条USER类型的消息后,就会启动一个计时器,如果在一段时间里面没有收到目的节点发来的对这条消息进行确认的USER_ACK消息,计时器就会超时。一旦计时器超时,它就会重发刚才的那个USER消息,或者发起一个路由请求的过程。关于这个过程后面会有更详细的描述。
1.3节点列表
节点列表是每个节点动态维护的一个数据结构,它在节点通信的过程中扮演了重要的角色。节点列表的作用有点类似于路由表,它是由一个个表项组成的,每个表项对应了一个移动社交网络中的节点,里面记录了关于这个节点的一些信息。这些信息包括:
●IPAddress:表项对应的节点的IP地址。
●User ID:用户的ID,也就是节点登录时使用的用来在移动社交网络中唯一标识自己的字符串或数字。
●TLMR:Timestamp of Last Message Received的缩写,也就是这个节点列表的所有者最后收到的这个表项对应的节点发出或转发的消息的时间戳。当所有者发现某个表项的TLRM与当前系统时间相差一定时间以上时,就认为这个表项对应的节点已经退出了移动社交网络,从而把这个表项从节点列表里删除。这样就可以保证当一个节点非正常退出移动社交网络或者在正常退出时广播的EXIT消息某些节点没有收到的情况下,这些节点仍然能在一段时间后感知到该节点的退出。
●SLMT:Sequence of Last Message Transmitted的缩写,也就是这个表项对应的节点最后发出去的消息的序号。当然这里的“最后发出去的”以这个节点列表的所有者收到的为准。设立SLMT元素的目的与防止重复收到相同的消息有关。后面会进行详细阐述。
●NHTI:Next Hop To It的缩写,也就是从节点列表的所有者到达这个表项对应的节点的下一跳节点的IP地址。当所有者要单播一个消息给这个表项对应的节点时(尤其是这个节点不是所有者的邻居节点时),需要知道下一跳的节点的IP地址,然后将这个消息发送给下一跳节点。通过中间节点的转发,这个消息才能到达目标节点那里。有了这个NHTI域,所有者就能知道应该请哪个节点充当中间节点来转发消息。
●NOH:Number Of Hops的缩写。这个值是和上面的NHTI的值对应的,记录的是从由NHTI记录的下一跳节点到这个NOH域所在的表项对应的节点需要经过几跳。这个NOH的值和下面说到的TNU的值共同用来决定在收到一个新的消息时是否必须更新NHTI的值,后面会具体讲到。
●TNU:Timestamp of NHTI Updated的缩写。这个值同样是和上面的NHTI的值对应的,记录了NHTI值的最后一次更新的时间。这个TNU的值的作用在后面会具体讲到。
1.4动态发现机制
动态发现的过程就是发现其他通信实体(节点),并对这些通信实体的基本信息(节点列表中的表项)进行动态维护的过程。动态发现机制是保证通信的前提,是通信机制中不可或缺的一部分。
动态发现机制可以用一句话来概括:当节点收到任何一种类型的消息时,它就更新自己的节点列表。在这个通信机制中,并没有像某些路由协议中所谓的专门用于维护路由的控制消息。每个消息都可以算控制消息,因为所有消息的消息头都是一样的。当节点收到一个其他节点发来的任何类型(除了EXIT类型)的消息时,它都能从消息头里截获关于这个源节点的一些信息,同时它能从IP头里获取上一跳的IP。根据这些信息可以对节点列表中源节点对应的表项和上一跳节点对应的表项进行相应的更新,如果节点列表中没有相应的表项,则需要新建这个表项。节点更新节点列表的过程如图2所示。
当一个新的节点加入移动社交网络时,它会广播一个HELLO类型的消息,来告诉其他节点自己的加入。当其他节点收到该消息时,会按照上面说的方法在自己的节点列表中加入这个节点的表项。同时,所有收到该消息的节点会回送一个HELLO_ACK类型的消息,从而使这个新加入的节点能快速知道这个移动社交网络中有哪些节点,并建立自己的节点列表。
这里还要说明一个问题。很显然,从一个节点到达另一个节点的路径通常不止一条,也就是说,节点列表里的各个表项的NHTI域理论上可以取不止一个值。但由于Ad Hoc网络中节点的流动性很大,有可能上一秒可以作为到达某个节点的下一跳,过了一秒钟就不行了。因此,在这种情况下应该总是以收到的从这个节点发出的最后一个消息的路径为准,这样可靠性会比较高。另一方面,显然如果这条路径的跳数比较少,那么消息发送成功的概率也会比较高。但收到的从这个节点发出的最后一个消息的路径却不一定是跳数最少的路径。这里可以用一个折衷的方案,这时就需要用到节点列表里的NOH域和TNU域。这个折衷的做法是这样的:如果从这个节点发出的最后一个消息的路径的跳数和原来的NOH值一样甚至比它小,那么很显然应该更新NHTI的值,同时NOH和TNU的值也就跟着改变了;否则的话就需要看这个NHTI的值是否足够“旧”,也就是拿当前系统时间减去TNU的值,如果超过了一个阈值,就需要更新,否则就保持原来的NHTI值。
最后,当一个节点要退出移动社交网络时,它需要广播一个EXIT类型的消息。其他节点收到这种类型的消息后就会知道该节点将要退出移动社交网络,并把自己的节点列表中源节点对应的表项删除,同时会检查节点列表中所有表项的NTHI域,如果NTHI域的值等于源节点的IP,就将其清零,并通过广播HELLO消息重新获取到达该表项的NHTI的值。虽然就算节点不广播EXIT消息,在它退出一段时间之后其他节点也能感知到它的退出(利用它对应的表项中的TLMR域),但这段时间显然会比直接广播EXIT消息慢很多,节点已经退出移动社交网络但它对应的表项仍存在于其他节点的节点列表之中显然会影响网络的性能。因此,EXIT类型的消息还是有它存在的价值的。
1.5消息发送机制
消息的发送和接收的过程正是节点间通信的过程体现,因此消息发送机制是节点通信机制的主要部分之一,无论什么类型的消息发送都要遵循这里描述的消息发送机制。
这里描述的通信机制支持消息的广播、单播以及组播。在发送消息前需要遵守一个前提,那就是任何一个节点要发送消息时都先要查看消息头的跳计数域,若发现跳计数域的值达到了一个最大值,就直接丢弃,不再向外转发。而节点在收到消息后在做任何处理之前都需将消息头里的跳计数域的值加1。
下面分别对消息的广播、单播以及组播进行描述。
1.5.1广播消息
消息的广播相对来说比较简单。当节点需要广播一个消息时,必须将消息头的C域填上0。这样当它的邻居节点收到这个消息后就会知道这是一个广播消息。当一个节点收到广播消息时,只要消息头里的跳计数域的值小于一个最大值,就继续向外广播。这种广播方式通常被称作“泛洪广播”。这样可以尽量保证在一定跳数范围之内的其他节点都能收到这个消息。
当然,泛洪广播也存在一定的弊端,那就是容易造成网络的拥塞,因此应当尽量避免广播消息。另外,一个节点很有可能会收到来自两个节点转发过来的相同的消息。这时,就需要用到消息头里的消息序号域。收到这条消息的节点只要将消息头里的消息序号同自己的节点列表中源节点对应的表项里的SLMT值进行比较,如果消息头里的消息序号值大于它,就认为这条消息是第一次收到,需要进一步处理,否则就直接丢弃。
1.5.2单播消息
消息的单播相对广播来说比较复杂,因为涉及到了“找到下一跳”的问题。如图3所示,当节点A要给节点D发送消息时,会先从自己的节点列表里找到D的表项,然后根据表项中的NHTI域就可以知道下一跳节点的IP。如果假设当前NHTI域的值是节点C的IP,那么A就会把消息发送给C,然后C从消息头的目的IP域中知道这个消息真正的接受方,然后向刚才A那样做,直到消息发送到真正的接收方D那里。
当然这是最顺利的一种情况,每个中间节点的节点列表中节点D对应的表项里的NHTI域都是正常可用的。但还有一种情况是某个NHTI域指示的下一跳节点已经不再能到达D,或者NHTI域是零。这时单播就会失败。
由于HELLO、HELLO_ACK、EXIT类型的消息基本上都是以广播的形式发送的(除了HELLO_ACK消息作为对HELLO消息的应答时是以单播的形式发送的),真正需要单播的是用户消息(当然用户消息也可以广播),也就是USER类型的消息,以及确认收到这个单播消息的USER_ACK类型的消息。前面在介绍USER_ACK类型的消息时已经说过,当节点收到另一个节点单播给它的用户消息时,需要回送一个USER_ACK类型的消息,其实这样做的原因就是为了解决上面提到的问题,图4描述了单播USER消息的具体流程。
从图4中可以看到,当单播出去的消息第一次超时后,会对整个消息(包括消息头)的长度作一个判断,当整个消息的长度小于等于1472个字节的时候,就直接将消息广播给自己的邻居节点,请所有的邻居节点帮忙转发,这样做可以大大提高单播的成功率。必须注意的是,这里的“广播”指的是网络层的广播,不是泛洪广播。因此,当源节点的邻居节点收到这条消息后,就会按照一般单播的过程,将消息发送给到达目的节点的下一跳,而不是再次将消息广播出去。之所以选择1472个字节作为临界值,是因为一般以太帧数据域的最大长度为1500个字节,当网络层要发送一个超过1500个字节的分组时,在数据链路层就会将这个分组分段,使每个以太帧的数据域部分小于等于1500个字节来进行发送。而IP头的长度为20个字节,UDP头的长度为8个字节,因此所发送消息的最大长度就被限制在1500-20-8=1472个字节。因此,为了减小整个网络的传输压力,避免出现网络拥塞,通信机制规定了只有当整个IP分组的长度小于1500个字节时,才通过向所有的邻居节点进行广播的方式来发送第一次单播超时的消息。
1.5.3组播消息
组播消息的过程类有点似于单播消息,当一个节点收到组播消息后,同样需要向源节点回送一个USER_ACK消息。本文描述的通信机制采用了一种基于树的组播方式。当源节点需要将一条消息组播给一组目的节点时,首先查询自己的节点列表,将这些目的节点进行分组,分组的依据是到达同一组中的节点的下一跳地址是相同的。然后分别为每个组构造一个消息头,消息头的M域置1,C域填上2,在目的地址域中填入该组中节点的数量,并将该组中所有节点的IP地址填入目的地址列表域,然后将要发送的净荷部分插在消息头后面,分别将消息发送给到达这个组的下一跳节点。当中间节点收到一个组播消息时,重复与源节点同样的步骤,并查看消息头的目的节点地址列表中有没有自己的IP地址,如果有的话就向源节点回送一个USER_ACK消息,并获取消息的净荷部分作进一步的处理。当某个组只有一个目的节点时,中间节点就以单播的方式将这个消息发送给下一跳节点。组播消息的过程如图5所示。
综上所述,本发明提出的网络中节点间的多跳通信方法,可解决移动社交网络中节点间的多跳通信问题。
本发明充分考虑了移动社交网络特点,克服了传统Ad Hoc路由协议应用在移动社交网络上的种种不足。结合了传统Ad Hoc网络中先验式路由协议与反应式路由协议各自的优点,在保证通信实时性的同时,也能较好地保持网络的通畅。使用了统一的消息头格式,提出了一切消息都是控制消息的思想,简化了多跳通信机制及其实现过程。
这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。
Claims (6)
1.一种网络中节点间的多跳通信方法,其特征在于,所述方法包括:
节点动态发现步骤:当节点收到任何一种类型的消息时,该节点就更新自己的节点列表;每个消息都作为控制消息,所有消息的消息头均相同;当节点收到一个其他节点发来的消息时,该节点从消息头里截获关于这个源节点的信息,同时该节点能从IP头里获取上一跳的IP;根据这些信息对节点列表中源节点对应的表项和上一跳节点对应的表项进行相应的更新,如果节点列表中没有相应的表项,则需要新建这个表项;
消息发送步骤:支持消息的广播、单播以及组播;在发送消息前需要遵守一个前提,即任何一个节点要发送消息时都先要查看消息头的跳计数域,若发现跳计数域的值达到了一个最大值,就直接丢弃,不再向外转发;而节点在收到消息后在做任何处理之前都需将消息头里的跳计数域的值加1。
2.根据权利要求1所述的网络中节点间的多跳通信方法,其特征在于:
节点动态发现步骤中,当一个新的节点加入移动社交网络时,该节点会广播一个HELLO类型的消息,来告诉其他节点自己的加入;
当其他节点收到该消息时,会在自己的节点列表中加入这个节点的表项;同时,所有收到该消息的节点会回送一个HELLO_ACK类型的消息,从而使这个新加入的节点能快速知道这个移动社交网络中有哪些节点,并建立自己的节点列表;
其中,HELLO类型的消息用在路由发现的过程中,当其他节点收到这种类型的消息时,需要向源节点单播一条HELLO_ACK消息。
3.根据权利要求1所述的网络中节点间的多跳通信方法,其特征在于:节点动态发现步骤中,总是以收到的从这个节点发出的最后一个消息的路径为准;
如果从这个节点发出的最后一个消息的路径的跳数和原来的NOH值一样甚至比它小,那么更新NHTI的值,同时NOH和TNU的值也就跟着改变;否则的话就需要看这个NHTI的值是否足够旧,也就是拿当前系统时间减去TNU的值,如果超过了一个阈值,就需要更新,否则就保持原来的NHTI值;
其中,NHTI、NOH、TNU均为节点的数据组成;
NHTI指从节点列表的所有者到达这个表项对应的节点的下一跳节点的IP地址;当所有者要单播一个消息给这个表项对应的节点时,尤其是这个节点不是所有者的邻居节点时,需要知道下一跳的节点的IP地址,然后将这个消息发送给下一跳节点;通过中间节点的转发,这个消息才能到达目标节点那里;有了这个NHTI域,所有者就能知道应该请哪个节点充当中间节点来转发消息;
NOH是和上述NHTI的值对应的,记录的是从由NHTI记录的下一跳节点到这个NOH域所在的表项对应的节点需要经过几跳;
TNU是和上述NHTI的值对应的,记录了NHTI值的最后一次更新的时间。
4.根据权利要求3所述的网络中节点间的多跳通信方法,其特征在于:
当一个节点要退出移动社交网络时,它需要广播一个EXIT类型的消息;其他节点收到这种类型的消息后就会知道该节点将要退出移动社交网络,并把自己的节点列表中源节点对应的表项删除,同时会检查节点列表中所有表项的NTHI域,如果NTHI域的值等于源节点的IP,就将其清零,并通过广播HELLO消息重新获取到达该表项的NHTI的值;
虽然就算节点不广播EXIT消息,在它退出一段时间之后其他节点也能感知到它的退出,利用它对应的表项中的TLMR域,但这段时间显然会比直接广播EXIT消息慢很多,节点已经退出移动社交网络但它对应的表项仍存在于其他节点的节点列表之中显然会影响网络的性能;
其中,TLMR域指节点列表的所有者最后收到的这个表项对应的节点发出或转发的消息的时间戳;当所有者发现某个表项的TLRM与当前系统时间相差一定时间以上时,就认为这个表项对应的节点已经退出了移动社交网络,从而把这个表项从节点列表里删除;这样就可以保证当一个节点非正常退出移动社交网络或者在正常退出时广播的EXIT消息某些节点没有收到的情况下,这些节点仍然能在一段时间后感知到该节点的退出。
5.根据权利要求1所述的网络中节点间的多跳通信方法,其特征在于:
当单播出去的消息第一次超时后,会对整个消息的长度作一个判断,当整个消息的长度小于等于N个字节的时候,就直接将消息广播给自己的邻居节点,请所有的邻居节点帮忙转发;
当源节点的邻居节点收到这条消息后,就会按照一般单播的过程,将消息发送给到达目的节点的下一跳,而不是再次将消息广播出去;其中,N为设定值。
6.根据权利要求1所述的网络中节点间的多跳通信方法,其特征在于:
当源节点需要将一条消息组播给一组目的节点时,首先查询自己的节点列表,将这些目的节点进行分组,分组的依据是到达同一组中的节点的下一跳地址是相同的;然后分别为每个组构造一个消息头,在目的地址域中填入该组中节点的数量,并将该组中所有节点的IP地址填入目的地址列表域,然后将要发送的净荷部分插在消息头后面,分别将消息发送给到达这个组的下一跳节点;
当中间节点收到一个组播消息时,重复与源节点同样的步骤,并查看消息头的目的节点地址列表中有没有自己的IP地址,如果有的话就向源节点回送一个USER_ACK消息,并获取消息的净荷部分作进一步的处理;当某个组只有一个目的节点时,中间节点就以单播的方式将这个消息发送给下一跳节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110064799 CN102118826B (zh) | 2011-03-17 | 2011-03-17 | 网络中节点间的多跳通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110064799 CN102118826B (zh) | 2011-03-17 | 2011-03-17 | 网络中节点间的多跳通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102118826A true CN102118826A (zh) | 2011-07-06 |
CN102118826B CN102118826B (zh) | 2013-07-17 |
Family
ID=44217376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110064799 Active CN102118826B (zh) | 2011-03-17 | 2011-03-17 | 网络中节点间的多跳通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102118826B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681189A (zh) * | 2016-01-21 | 2016-06-15 | 矽力杰半导体技术(杭州)有限公司 | 用于网格网络的数据转发方法及节点设备 |
CN106034289A (zh) * | 2015-03-10 | 2016-10-19 | 北京信威通信技术股份有限公司 | 一种d2d组播通信中的转发控制方法 |
CN108696386A (zh) * | 2017-04-12 | 2018-10-23 | 萨格姆康姆能源和电信公司 | 广播消息的配置方法 |
CN109412953A (zh) * | 2018-12-27 | 2019-03-01 | 北京比新科技有限公司 | 一种基于区块链overlay网络的路由信息交互方法 |
US11337134B2 (en) | 2019-05-05 | 2022-05-17 | Nanjing Silergy Micro Technology Co., Ltd. | Data forwarding method and apparatus |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005099189A1 (en) * | 2004-04-05 | 2005-10-20 | Telefonaktiebolaget Lm Ericsson (Publ) | Method, communication device and system for detecting neighboring nodes in a wireless multihop network using ndp |
CN101083624A (zh) * | 2007-07-10 | 2007-12-05 | 北京航空航天大学 | 基于树形结构的路由方法 |
US20080095163A1 (en) * | 2006-10-23 | 2008-04-24 | Wai Chen | Method and communication device for routing unicast and multicast messages in an ad-hoc wireless network |
CN101577954A (zh) * | 2009-04-30 | 2009-11-11 | 南京正保通信网络技术有限公司 | 无线多跳自组织网络通信方法 |
CN101951659A (zh) * | 2010-08-13 | 2011-01-19 | 华南理工大学 | 传感器网络自组织方法及基于该方法的移动终端系统 |
-
2011
- 2011-03-17 CN CN 201110064799 patent/CN102118826B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005099189A1 (en) * | 2004-04-05 | 2005-10-20 | Telefonaktiebolaget Lm Ericsson (Publ) | Method, communication device and system for detecting neighboring nodes in a wireless multihop network using ndp |
US20080095163A1 (en) * | 2006-10-23 | 2008-04-24 | Wai Chen | Method and communication device for routing unicast and multicast messages in an ad-hoc wireless network |
CN101083624A (zh) * | 2007-07-10 | 2007-12-05 | 北京航空航天大学 | 基于树形结构的路由方法 |
CN101577954A (zh) * | 2009-04-30 | 2009-11-11 | 南京正保通信网络技术有限公司 | 无线多跳自组织网络通信方法 |
CN101951659A (zh) * | 2010-08-13 | 2011-01-19 | 华南理工大学 | 传感器网络自组织方法及基于该方法的移动终端系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106034289A (zh) * | 2015-03-10 | 2016-10-19 | 北京信威通信技术股份有限公司 | 一种d2d组播通信中的转发控制方法 |
CN105681189A (zh) * | 2016-01-21 | 2016-06-15 | 矽力杰半导体技术(杭州)有限公司 | 用于网格网络的数据转发方法及节点设备 |
CN105681189B (zh) * | 2016-01-21 | 2019-05-17 | 上海芃矽半导体技术有限公司 | 用于网格网络的数据转发方法及节点设备 |
US10462044B2 (en) | 2016-01-21 | 2019-10-29 | Silergy Semiconductor Technology (Hangzhou) Ltd. | Data forwarding method and node device for mesh network |
US11146483B2 (en) | 2016-01-21 | 2021-10-12 | Silergy Semiconductor Technology (Hangzhou) Ltd | Data forwarding method and node device for mesh network |
CN108696386A (zh) * | 2017-04-12 | 2018-10-23 | 萨格姆康姆能源和电信公司 | 广播消息的配置方法 |
CN108696386B (zh) * | 2017-04-12 | 2023-02-17 | 萨格姆康姆能源和电信公司 | 网状通信网络的系统、配置服务器、电子设备及其配置方法 |
CN109412953A (zh) * | 2018-12-27 | 2019-03-01 | 北京比新科技有限公司 | 一种基于区块链overlay网络的路由信息交互方法 |
CN109412953B (zh) * | 2018-12-27 | 2023-03-07 | 深圳微言科技有限责任公司 | 一种基于区块链overlay网络的路由信息交互方法 |
US11337134B2 (en) | 2019-05-05 | 2022-05-17 | Nanjing Silergy Micro Technology Co., Ltd. | Data forwarding method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
CN102118826B (zh) | 2013-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yuan et al. | An optimized ad-hoc on-demand multipath distance vector (AOMDV) routing protocol | |
US8023433B2 (en) | Relay device, wireless communication system and multicast relay method | |
US7894408B2 (en) | System and method for distributing proxying error information in wireless networks | |
US7890112B2 (en) | Radio device having fewer route disconnections and switchings by using control packets to maintain radio links | |
KR100811890B1 (ko) | 인터넷 시스템에서 서비스 플로우를 보장하는 애니캐스트라우팅 방법 및 장치 | |
US20110002226A1 (en) | Method for Discovering Routes in Wireless Communications Networks | |
US7801143B2 (en) | System and method for groupcast packet forwarding in a wireless network | |
US20120014309A1 (en) | Wireless communication apparatus, wireless network system, data transfer method, and recording medium | |
CN102118826B (zh) | 网络中节点间的多跳通信方法 | |
RU2010141728A (ru) | Предоставление нескольких уровней обслуживания для беспроводной связи | |
JP2008519489A (ja) | 大規模無線メッシュ・ネットワークにおいてマルチキャスト・ルーティングをサポートするためのシステム及び方法 | |
US20140313967A1 (en) | Multicast routing apparatus in wireless mesh network and method thereof | |
Kim et al. | TOP-CCN: Topology aware content centric networking for mobile ad hoc networks | |
US20140082161A1 (en) | Method and device for transferring bootstrap message | |
CN101047617B (zh) | 一种移动组播切换的方法及装置 | |
US9226219B2 (en) | System and method for route learning and auto-configuration | |
US20120250529A1 (en) | Mobile ad-hoc re-routing method | |
KR101762696B1 (ko) | 이동 애드혹 네트워크에서 목적지 개시 기반 플러딩을 이용한 경로 유지관리 프로토콜 | |
Matsuzono et al. | NMRTS: Content name-based mobile real-time streaming | |
CN104540240A (zh) | 无线网络支持车载客户机的接入方法 | |
US11206590B2 (en) | Method for realizing wireless network convergence | |
US9451420B2 (en) | Data processing method, in an ad hoc radio communication network, radio communication stations and corresponding computer programs | |
US8331277B2 (en) | Method of delivering multicast packets in a mesh network | |
Li et al. | Automated IP connectivity in narrowband radio networks | |
KR101407669B1 (ko) | 망 기반 이동성 관리 시스템 및 모바일 멀티캐스트 서비스 핸드오버 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |