一种移动ad‑hoc网络中的路由方法与流程

文档序号:11139753阅读:260来源:国知局
一种移动ad‑hoc网络中的路由方法与制造工艺

本发明属于通信技术领域,尤其涉及到一种移动ad-hoc网络中的路由方法。



背景技术:

Ad-hoc网是一种多跳的、无中心的、自组织无线网络,是移动通信和计算机网络相结合的网络,是移动计算机网络的一种,用户终端可以在网内随意移动而保持通信。它是一种多跳的临时性自治系统,并且是一种分布式网络,在传感器网络、军用自组织网、车联网等方面应用越来越广。

为保证在移动环境下,网线通信的可靠性和组网快速,移动ad-hoc网络(MANETs)中的路由一直是通信领域中的热点问题,但现存路由方法不能保证未直连两节点间的通信,并且通信开销比较大。



技术实现要素:

针对上述问题,本发明的目的在于提出一种移动ad-hoc网络中的路由方法。本发明的基本思想是:先根据节点的地址前缀对节点进行分级,再根据节点级别对信息进行分级路由,由此保证未直连两节点间的通信并降低通信开销。

为实现上述目的,本方案的技术方案如下:

一种移动ad-hoc网络中的路由方法,包括分配节点的地址前缀、建立节点与邻居节点的连接、建立节点a的i级路由表、确定节点a的i级路由表中必须包含的路径、建立节点间的通信路由。

进一步根据本发明所述一种移动ad-hoc网络中的路由方法,分配节点的地址前缀:

(1)、在每个节点接入网络前随机为该节点分配唯一不变的n比特地址前缀,,n为正整数,地址前缀附在节点IP地址之前;

(2)、比较网络中两个节点的地址前缀,从第一位起连续相同的前缀称为两节点的共用前缀,从第一位起连续相同的所有前缀称为两节点的最大共用前缀,用p、q表示网络中任意两个节点,p和q的地址前缀长度为n比特,用len(p, q)表示p和q地址前缀的最大共用前缀长度,p和q的地址前缀分别是01100和01000,则len(01100,01000) = 2,因为最大共用前缀是01;

(3)、,i为正整数,表示p和q地址前缀的共用前缀长度,则网络中的所有节点q组成关于p的i级网络,同时称p的i级网络中的节点为p的i级节点,每个节点的地址前缀唯一不变,当len (p,q) =n时,p和q为同一个节点,因此p最多有n-1级节点;

(4)、根据节点地址前缀将节点分为黑白两色的方式描述网络,具体方法是,i级节点的第i+1位地址前缀为0,则将此节点标为白节点,i级节点的第i+1位地址前缀为1,则将此节点标为黑节点。

进一步根据本发明所述一种移动ad-hoc网络中的路由方法,建立节点与邻居节点的连接。网络中节点的地址前缀长度为n比特,在未对节点进行具体分级前,网络中所有节点性质相同,针对一个节点讨论所得结果可应用于网络中所有节点,用a代表当前节点,用b表示a的任一邻居节点,a加入网络后,a将a的地址前缀发给网络中与a相邻的所有节点,a的邻居节点 b收到a的地址前缀后向a回复b的地址前缀,a收到b的地址前缀后根据len(a,b)将b分级,若,i为正整数,则b为a的i级节点,当a将a所有的邻居节点分级后,a与a的1级节点建立1级连接,并向上顺延与a的第2级、第3级、……、第n-1级节点建立相应级别的连接,即a与a的i级节点建立的连接的级别为I;若a向b发送a所有i级邻居节点的信息,同时b向a发送b所有i级邻居节点的信息,i级邻居节点的信息包括i级邻居节点的地址前缀以及通过这些i级邻居节点到达网络中其它节点的路径,则a与其i级节点b连接。

进一步根据本发明所述一种移动ad-hoc网络中的路由方法,建立节点a的i级路由表,当a和a的i级邻居节点连接后,a将从与a连接的所有i级邻居节点处收到节点的信息,生成新表G,即a的i级路由表,由上述得a的i级路由表中包括a的i级邻居节点的信息,具体是a的i级邻居节点的地址前缀和通过这些i级邻居节点到达网络中其它节点的路径,确定a的i级路由表,按如下步骤进行:

(1)、在a的邻居节点中确定必须与a连接的节点,若b为黑节点,则将b添加为a的i+1级邻居;若b为白节点,则建立b的黑色邻居节点间的各级连接,连接级别从1开始,最大到n-1,但未必每一级连接都存在,建立b黑色邻居节点间的各级连接:

(1-1)、用集合S表示节点b的所有黑色邻居节点,在S中确定每个节点的1级邻居节点,并建立节点与此节点的1级邻居节点间的连接,由S中每个节点与其i级节点建立连接的级别为i得,此时建立的是1级连接,用表示已建连接的级别,则此时m为1;

(1-2)、将S中的节点分为black和white两个集合,如果节点的第m+1位地址前缀为0,则此节点属于white,如果节点的第m+1位地址前缀为1,则此节点属于black;

(1-3)、如果white或者black中没有节点,说明节点集合S中没有节点在m+1级连接,则执行步骤(2),否则执行(1-4);

(1-4)、取white中的节点和black中的节点两个一组按位对地址前缀进行异或运算,异或运算值为n位二进制比特串,比较得到的所有异或运算值得到异或运算值最小的一组节点,异或运算值最小的节点可能不止一组,对所有使得异或运算值最小的节点组都按后文叙述的方法操作,用w表示两节点中属于white的节点,用y表示两节点中属于black的节点,异或运算的算法是:0和0异或为0,1和1异或为0,1和0异或为1,0和1异或为1,对两节点地址前缀按位进行异或运算,异或运算值越小说明两节点地址的最大共用前缀越长;

(1-5)、若a的第m+1位地址为0,则先判断: w是a,则将y添加为a的m+1级邻居节点,w不是a,则不将y添加为a的m+1级邻居,然后将S中的节点更新为white中的节点,m更新为m+1,重新进行步骤(1-2);

(1-6)、如果a的第m+1位地址为1,则先判断:如果y是a,则将w添加为a的m+1级邻居节点;如果y不是a,则不将w添加为a的m+1级邻居,然后将S中的节点更新为black中的节点,m更新为m+1,重新进行步骤(3-1-2)。

(2)、G中的所有路径g=a-b-c1-c2-…-ck-d,k为正整数,G为a的i级路由表,cj为a的i级节点,,j为整数,d为网络中a、b、c以外的其他节点,路径g表示G中确定的从a开始经由邻居节点b到达网络中任意节点d的路径,若同时满足d为黑节点、b和cj为白节点、cj无黑色邻居节点,将d添加为a的i+1级节点,用f表示G中任意一个节点,对于任意cj,不存在f使得f到cj的距离小于g中cj到d的距离或cj到a的距离。

(3)、任意选择b的一个黑色邻居节点e1和ck的一个黑色邻居节点e2,对e1和e2的地址前缀按位进行异或运算,如果异或运算值最小,则e1为a。

进一步根据本发明所述一种移动ad-hoc网络中的路由方法,确定节点a的i级路由表中必须包含的路径,按如下步骤进行:

(1)、规划源路径,源路径是节点根据物理网络规划的路径,路径根据节点到其它节点的物理距离从近到远确定,源路径包括从本节点到与本节点最大共用前缀最长的节点的路径和从本节点到其它与本节点同级的节点的路径;

(2)、规划其他路径,节点a生成表Gb,对于a的每一个已连邻居b,设节点c为节点a除b外的任一邻居节点,表Gb 为节点a通过融合从所有的c处收到的关于c的邻居节点信息而生成的表,节点a生成Gb的一个子集Goutb,Gb中所有的路径p=b-a-c1-c2-...-ck-d,k为正整数,cj为a的i级节点,,j为整数,d为网络中的其他节点,p表示从b开始经由a到达网络中任意节点d的路径,若d为白节点,cj为黑节点,用f表示Gb中任意白节点,对任意cj,不存在f使f到cj的距离小于p中cj到d的距离或cj到b的距离,p添加到Goutb中;

(3)、当a的i级路由表中有任何变化时,a生成一个新的包含a的i级邻居节点信息的表发送给与a连接的a的所有i级邻居节点。

进一步根据本发明所述一种移动ad-hoc网络中的路由方法,建立节点间的通信路由,用S表示源节点,用D表示目的节点,用O表示网络中其它任意节点,当节点S发送消息给节点D时,节点S利用建立的各级路由表选择满足len(O,D)>len(S,D)的最近下一跳O,O以同样的方式选择最近下一跳,以此类推直到网络中没有与D有更大共用地址前缀的节点,路径中每一个新节点和D都有更长的共用前缀,由此可避免回环,网络中没有满足len(O,D)>len(S,D)的下一跳O,S直接通过源路径将消息发送给D;S向D发送消息的方式是,首先 S在S的i级路由表中找到O,S确认S的i级路由表中规划好的路径t1-t2-...-tk-D(tj为S的i级节点,,k为正整数,j为整数)并发送消息给t1,t1收到消息后按照路径t1-t2-...-tk-b将消息发送给D,S向t1发消息采用的路径和同级节点tj之间的通信路径都是源路径。

本发明与现存协议相比具有以下优点:

1、本发明中相连节点会主动互相发送本节点路由表更新消息,使得当某节点路由表变化时,路由表中储存的过时路径(即不再使用的路径)会被及时消除,可降低网络中通信开销;

2、本发明中节点和必要的邻居节点相连,可实现任意两节点的通信;

3、本发明中节点只融合必要邻居节点的路由信息,减小了路由表的大小。

附图说明

图1 为本发明所述的一种移动ad-hoc网络中的路由方法的流程图;

图2为本发明中连接必要节点的流程图。

具体实施方式

以下结合附图对本发明的技术方案进行详细的描述,以使本领域技术人员能够更加清楚的理解本发明的方案,但并不因此限制本发明的保护范围。

本发明所述一种移动ad-hoc网络中的路由方法,包括以下步骤:

步骤(1)、分配节点的地址前缀。

在每个节点接入网络前随机为该节点分配唯一不变的n比特地址前缀,,n为正整数,地址前缀附在节点IP地址之前。

比较网络中两个节点的地址前缀,从第一位起连续相同的前缀称为两节点的共用前缀,如果是从第一位起连续相同的所有前缀,则称为两节点的最大共用前缀。用p、q表示网络中任意两个节点,p和q的地址前缀长度为n(n为正整数)比特,用len(p, q)表示p和q地址前缀的最大共用前缀长度。假设p和q的地址前缀分别是01100和01000,则len(01100, 01000) = 2,因为最大共用前缀是01。

如果,i为正整数,则网络中的所有节点q组成关于p的i级网络,同时称p的i级网络中的节点为p的i级节点。由于每个节点的地址前缀唯一不变,所以当len (p,q) =n时,p和q为同一个节点,因此p最多有n-1级节点。

为便于描述和理解,本发明引入根据节点地址前缀将节点分为黑白两色的方式描述网络,具体方法是,如果i级节点的第i+1位地址前缀为0,则将此节点标为白节点;如果i级节点的第i+1位地址前缀为1,则将此节点标为黑节点。

步骤(2)、建立节点与邻居节点的连接。

设网络中节点的地址前缀长度为n比特,在未对节点进行具体分级前,网络中所有节点性质相同,针对一个节点讨论所得结果可应用于网络中所有节点。

为方便讨论,用a代表当前节点,用b表示a的任一邻居节点。当a加入网络后,a将a的地址前缀发给网络中与a相邻的所有节点。a的邻居节点 b收到a的地址前缀后向a回复b的地址前缀。a收到b的地址前缀后根据len(a, b)将b分级,如果,i为正整数,则b为a的i级节点。当a将a所有的邻居节点分级后,a与a的1级节点建立1级连接,并向上顺延与a的第2级、第3级……第n-1级节点建立相应级别的连接,即a与a的i级节点建立的连接的级别为i。

判定a和a的i级节点b连接的依据是:a向b发送a所有i级邻居节点的信息,同时b向a发送b所有i级邻居节点的信息。i级邻居节点的信息包括i级邻居节点的地址前缀以及通过这些i级邻居节点到达网络中其他节点的路径。

步骤(3)、建立节点a的i级路由表。当a和a的i级邻居节点连接后,a将从与a连接的所有i级邻居节点处收到节点的信息,生成新表G,即a的i级路由表。由上述得a的i级路由表中包括a的i级邻居节点的信息,具体是a的i级邻居节点的地址前缀和通过这些i级邻居节点到达网络中其他节点的路径。所述确定a的i级路由表,按如下步骤进行:

(3-1)、在a的邻居节点中确定必须与a连接的节点。若b为黑节点,则将b添加为a的i+1级邻居;若b为白节点,则建立b的黑色邻居节点间的各级连接,连接级别从1开始,最大到n-1,但未必每一级连接都存在。

结合附图2,建立b黑色邻居节点间的各级连接,按如下步骤:

(3-1-1)、用集合S表示节点b的所有黑色邻居节点,确定S中每个节点的1级邻居节点,并建立节点与该节点的1级邻居节点间的连接。由S中每个节点与其i级节点建立连接的级别为i得,此时建立的是1级连接,用表示已建连接的级别,则此时m为1。

(3-1-2)、将S中的节点分为black和white两个集合,如果节点的第m+1位地址前缀为0,则此节点属于white,如果节点的第m+1位地址前缀为1,则此节点属于black。

(3-1-3)、如果white或者black中没有节点,说明节点集合S中没有节点在m+1级连接,则执行步骤(3-2),否则执行(3-1-4)。

(3-1-4)、取white中的节点和black中的节点两个一组按位对地址前缀进行异或运算,异或运算值为n位二进制比特串,比较得到的所有异或运算值得到异或运算值最小的一组节点(异或运算值最小的节点可能不止一组,对所有使得异或运算值最小的节点组都按后文叙述的方法操作)。用w表示两节点中属于white的节点,用y表示两节点中属于black的节点。

异或运算的算法是:0和0异或为0,1和1异或为0,1和0异或为1,0和1异或为1。对两节点地址前缀按位进行异或运算,异或运算值越小说明两节点地址的最大共用前缀越长。

(3-1-5)、如果a的第m+1位地址为0,则先判断:如果w是a,则将y添加为a的m+1级邻居节点;如果w不是a,则不将y添加为a的m+1级邻居。然后将S中的节点更新为white中的节点,m更新为m+1,重新进行步骤(3-1-2);

如果a的第m+1位地址为1,则先判断:如果y是a,则将w添加为a的m+1级邻居节点;如果y不是a,则不将w添加为a的m+1级邻居。然后将S中的节点更新为black中的节点,m更新为m+1,重新进行步骤(3-1-2)。

(3-2)、考虑G中的所有路径g=a-b-c1-c2-…-ck-d(k为正整数),G为a的i级路由表,cj为a的i级节点,,j为正整数,d为网络中a、b、c以外的其他节点,路径g表示G中确定的从a开始经由邻居节点b到达网络中任意节点d的路径。当满足下列条件时将d添加为a的i+1级节点,即:d为黑节点、b和cj为白节点、cj无黑色邻居节点。用f表示G中任意一个节点,对于任意cj,不存在f使得f到cj的距离小于g中cj到d的距离或cj到a的距离。

(3-3)、任意选择b的一个黑色邻居节点e1和ck的一个黑色邻居节点e2,对e1和e2的地址前缀按位进行异或运算,如果异或运算值最小,则e1为a。

步骤(4)、确定节点a的i级路由表中必须包含的路径,具体包括以下步骤:

(4-1)、规划源路径,源路径是节点根据物理网络规划的路径,路径根据节点到其它节点的物理距离从近到远确定。源路径包括从本节点到与本节点最大共用前缀最长的节点的路径和从本节点到其它与本节点同级的节点的路径。

(4-2)、规划其他路径,节点a生成表Gb。对于a的每一个已连邻居b,设节点c为节点a除b外的任一邻居节点,表Gb为节点a通过融合从所有的c处收到的关于c的邻居节点信息的表生成的表;节点a生成Gb的一个子集Goutb。考虑Gb中所有的路径p=b-a-c1-c2-...-ck-d(k为正整数),cj为a的i级节点,,j为整数,d为网络中的其它节点,p表示从b开始经由a到达网络中任意节点d的路径。当下列条件成立时将p添加到Goutb中:d为白节点;cj为黑节点;用f表示Gb中任意白节点,对任意cj,不存在f使f到cj的距离小于p中cj到d的距离或cj到b的距离。

(4-3)、当a的i级路由表中有任何变化时,a生成一个新的包含a的i级邻居节点信息的表发送给与a连接的a的所有i级邻居节点。

步骤(5)、建立节点间的通信路由。

用S表示源节点,用D表示目的节点,用O表示网络中其它任意节点。当节点S发送消息给节点D时,节点S利用步骤(3)建立的各级路由表选择满足len(O,D)> len(S,D)的最近下一跳O,O以同样的方式选择最近下一跳,以此类推直到网络中没有与D有更大共用地址前缀的节点。路径中每一个新节点和D都有更长的共用前缀,由此可避免回环。如果网络中没有满足len(O,D)>len(S,D)的下一跳O,S直接通过源路径将消息发送给D。

S向D发送消息的方式是:首先 S在S的i级路由表中找到O,S确认S的i级路由表中规划好的路径t1-t2-...-tk-D(tj为S的i级节点,,k为正整数,j为整数)并发送消息给t1,t1收到消息后按照路径t1-t2-...-tk-b将消息发送给D。S向t1发消息采用的路径和同级节点tj之间的通信路径都是源路径。

以上仅是对本发明的优选实施方式进行了描述,并不将本发明的技术方案限制于此,本领域技术人员在本发明的主要技术构思的基础上所作的任何变化都属于本发明所要保护的技术范畴,本发明具体的保护范围以权利要求书的记载为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1