1 引言
无线Ad-Hoc网络因其构建容易、支持用户移动性的特点,在无线通信领域中占有极其重要的地位并具有广阔的应用前景。无线通信技术、移动技术的发展为无线Ad-Hoc网络(WANET)提供了更广泛的应用空间。经常使用文件共享的P2P网非常适合 WANET。然而,在现有的无线Ad-Hoc网络中直接应用P2P技术,会造成系统开销大量增加,传输效率及查询成功率不高,从而影响整个网络的性能。在无线Ad-Hoc网络(WANET)中方便快捷地实现P2P数据共享与交换,改善文件搜索和下载机制成为广泛关注的课题。
这里提出一种将查询功能和路由功能统一的跨层设计方案,利用分布式哈希表建立树状网络拓扑结构,使用P2P位置查找技术将文件位置信息分配在其间,每一网络成员都存储和保留系统资源的位置及路由信息,实现共享文件的定位查询。在WANET中实现查询和路由功能的统一,提高文件搜索和下载效率,定向查询网络资源,降低冗余开销。
2 系统概述
这里WANET通过节点间的树形逻辑结构解决共享文件的定位查询问题,随着网络新节点的加入树形拓扑结构增大。新节点只能通过某一个邻居节点加入 WANET,每个WANET向外提供唯一的网络ID,在同一ID的网络中,每个节点只能拥有一个双亲节点。网络有一个层次分明的树状拓扑结构,这种结构有助于查找文件路径(即从存放路径的节点获得到达文件存储节点的路由),以便从文件存储节点下载文件。
为了存储和保留位置信息以及路由信息,系统使用全分布哈希表,关键词是所要共享文件的文件名,值是共享文件的全球统一的位置信息(节点MAC地址和节点文件的全路径)。用一维空间来存储关键词和哈希值对,通过统一的哈希函数将每个关键词映射到哈希链上的对应位置。统一的函数有助于节点之间信息分配的平衡, WANET中的每个节点负责存储一段哈希链(与哈希表上的索引项对应)。如果某一节点负责哈希链段上包含某一文件哈希值,称该节点为文件的路径节点 (Pnode),存储文件F的节点就称为文件节点(Fnode)。因此Pnode存储携带位置信息的索引,Fnode存储实际文件。因此,访问一个文件的步骤如下:查询节点(Qnode)哈希被搜索的文件名以确定哈希链上的值;访问Pnode(哈希值包含在Pnode负责的哈希链内);从Pnode获取被搜索文件的位置(即Fnode)并确定从Pnode小节点到Fnode的路由;从Qnode获取到Qnode-Fnode的路由,访问Fnode,文件从 Fnode被下载。
3 树形拓扑的建立和节点文件定位
图1d表示一个含有7个节点的WANET网络,在该网络中,假定节点A、B、C、D、E、F、G提供的共享文件分别为(α1α2)、(β1β2)、(γ1)、(δ1 δ2)、(σ1)、(ε1)、(η1η2)。
3.1 WANET网络系统树形拓扑的建立
假设网络组建初期只有一个初始节点A,要建立一个如图1d所示的7个节点的WANET文件共享网络,树形拓扑的建立过程如下:
(1)节点A对自己的两个共享文件α1、α2哈希后将值映射到整段共享文件哈希链上,如图2a所示。
(2)节点B(共享文件β1、β2)发现节点A并向节点A发起接入请求,即B要加入A组成的网络。节点A收到B的接入请求后,将自己所负责的哈希链分成两段并分配一半给B,文件α2因此落入节点B负责的一段哈希链,A将文件α2的位置索引送至B(文件虽然还存放在节点A,但A上α2的位置信息置空)。因此,A成为B的双亲节点。B存放着文件α2的位置信息[α2,A]。
(3)B向网络插入其共享文件β1和β2,β1映射到B节点所负责的哈希链段,β2映射到A节点所负责哈希链段。则B节点存储位置信息[β1,B],A节点存储位置信息[β2,B],即B为文件β1的PnodeA为文件β2的Pnode,如图2b所示。
(4)另一个新节点C(存储文件γ1、γ2)发现节点B并对其发出接入请求,节点C从B接入网络,B将自己的哈希链段分出一半给C。节点C上的文件γ1、 γ2哈希后映射到哈希链上,如图2c。α2落入C所负责的哈希链段,B将α2的信息送至C,节点C不仅保留α2的位置信息,也保留从C到文件α2的路径信息。C将B加到路径上,同时保存[α2,BA]的索引项。表明文件α2存储在节点A,并且从C到节点A的路径是“C-B-A”。节点B成为C的双亲节点。
(5)C向网络插入共享文件γ1、γ2,γ1映射到C负责的哈希链段,γ2映射到A负责的哈希链段。
(6)同理,节点E发现网络并向节点B发出接入请求后,分担了B负责的一半哈希链并插入文件σ1,B成为E的双亲节点;节点D(存储文件δ1和δ2)发现网络并从节点E接入后分担了E一半的哈希链,节点F(存储了文件η1和η2)发现网络并从E接入,叉分担E剩下部分一半的哈希链:最后节点G(存储共享文件ε1)也从E加入网络又分担了 E剩下哈希链的一半。这样,E成为节点D、G、F的双亲节点。各个节点在加入的过程中向网络插入自己提供的共享文件,如图2d~图2g中所示,相应的共享文件被插入到网络中各节点所负责的哈希链上,在此过程中,相应的节点也存储了文件名及到达文件存储节点的路由信息。
该网络结构建立后,网络中各共享文件的当前位置和路由信息也被定位,搜索各共享文件的路由可从访问Pnode的请求消息中获得,如图2所示。网络的树形拓扑结构也同时建立,如图1所示。
4 WANET网络中共享文件搜索和下载过程
在图1d中,假设D作为查询节点搜索文件η2,D不知道η2的位置,甚至不知道这个文件是否存在,但由H(η2)的可以知道文件存储在某个节点中。共享文件η2文件的搜索和下载过程如图4所示。
(1)节点D对文件η2哈希,得到H(η2),D发现H(η2)不在自己负责的哈希链内,而D本身又没有子节点,D就将查询传递给其唯一的邻居节点E(E这里也是D的双亲节点)。
(2)节点E收到节点D查询η2的请求[η2,D],但节点E的3个邻居节点B、G和F都不包含文件η2的路由信息H(η2),E就将查询送至其双亲节点B。
(3)由于节点B所负责的哈希链也不包含H(η2),但是因为节点B知道它的一个子节点(这里指节点C)负责的哈希链上包含所请求的文件名的哈希值,按照H(η2)值和文件哈希链状态,B将查询向前传送到节点C(否则节点B将查询送给其双亲节点A)。
节点B将查询送到节点C后并不能保证能收到C的应答。节点C除和节点B相连外可能还与其他节点相连,因此,确定节点所在的哈希链后,C可能将查询送给它的一个子节点。但是无论节点C还是其子节点响应查询请求都对节点B无影响。节点B只知道将查询送至节点C。在拓扑结构图中,节点C没有子节点并且拥有文件 η2的位置信息。从源节点发起查询的路径都被标识为查询。
(1)C节点收到查询消息[η2,BED],表示节点D经节点E、B查询文件η2,于是C对D产生查询响应消息ACK[η2,EBC](包含位置信息),沿着路径[η2,EBC]返回给节点D。
(2)从节点C获得文件节点Fnode的路由信息FED沿查询节点的路由回送节点D,节点C将响应传送给路径上的下一个节点B。
(3)节点B查看响应中的路由后,将消息送至路径的下一个节点E。
(4)E查看路由后再将消息送至路径中文件节点F(文件η2的存储节点)。
(5)节点D收到查询响应,响应消息中包含文件η2的位置信息[η2,DEF]。现在,节点D不仅知道了文件η2存在节点F中,也知道了两个路径从D到C (含η2文件位置信息)和从C到F(η2文件存储节点)。节点D将路径链接成D-E-B-C-B-E-F,然后删除不需要的路径E-B-C-B,最后形成从D到η2的路径D-E-F,即从查询发起节点D到文件η2的存储节点F的路径,通过它能直接从节点F找到并下载文件η2。
5 与洪泛的比较系统的通信开销
WANET通常用于P2P文件共享,且一般采用洪泛查询。假定洪泛模型无选择转发功能,因此,假定洪泛查询一旦在网络中启动,网络中所有节点都能收到查询。该查询产生的系统开销O=(n-1)m,其中m表示查询次数,n表示节点数量。该WANET共享系统中P2P文件搜索和下载模型(图4)组建网络拓扑时形成的树形结构使得即便所查文件不存在,也不会像洪泛一样造成过多无用的查询消息,该结构几乎能发现和访问网络中的所有共享文件。
6 结论
同样大小的网络中,在低移动性、需要频繁搜索文件的WANET上,提出方案的带宽效率比洪泛高,文件搜索更有效。如果WANET网络成员移动频繁且搜索文件不频繁,则采用洪泛会更好。为避免洪泛和通过单播方式访问文件,我们尽量保持分布式位置信息的一致性。保持位置信息一致性的开销通过大量减少后续文件搜索的开销来补偿。
当一个消息不存在时,网络中每个节点的每个文件都被洪泛就会导致拥塞。WANET文件共享系统允许成员的低移动性,重新哈希运算后更完善的网络结构可抵消移动性造成的查询开销的增加。