无线移动自组网文档格式.docx

上传人:b****6 文档编号:19396382 上传时间:2023-01-05 格式:DOCX 页数:33 大小:381.50KB
下载 相关 举报
无线移动自组网文档格式.docx_第1页
第1页 / 共33页
无线移动自组网文档格式.docx_第2页
第2页 / 共33页
无线移动自组网文档格式.docx_第3页
第3页 / 共33页
无线移动自组网文档格式.docx_第4页
第4页 / 共33页
无线移动自组网文档格式.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

无线移动自组网文档格式.docx

《无线移动自组网文档格式.docx》由会员分享,可在线阅读,更多相关《无线移动自组网文档格式.docx(33页珍藏版)》请在冰豆网上搜索。

无线移动自组网文档格式.docx

(5)安全性差。

由于采用无线信道、有限电源、分布式控制等技术,移动自组网更加容易受到被动窃听、主动入侵、拒绝服务等网络攻击。

移动自组网的主要研究问题包括MAC层协议、路由协议和网络安全等。

路由和信道分配是移动自组网要解决的最基本问题,MAC协议要解决多信道接入、通信冲突以及协议的可扩展性等,路由协议面临的最大难题是因节点的移动和失效引起的网络拓扑变化导致网络路由很不稳定,频繁的路由重建和路由维护不仅造成传输延迟增加,也带来很高的开销。

2.无线移动自组网路由协议

尽管移动自组网有很大的吸引力,但移动自组网实现起来比固定网络困难。

固定网络在两个方面利用了其静态的特性,

(1)固定网络在节点间主动传播网络拓扑信息,每个节点可以使用较低代价的算法预先计算好该拓扑下的路由;

(2)固定网络在节点地址中隐含了路由线索,因为一个大型网络的完整拓扑不可能全局地处理或传播。

但这两种技术都不适合由移动节点组成的网络,因为节点移动使得拓扑信息失效,而永久性的节点地址无法包含动态的位置信息。

然而,以下拓扑假设对于采用射频通信的移动自组网是有用的:

物理上靠近的节点在网络拓扑上也可能靠近。

也就是说,物理上靠近的节点可以通过少数几跳的无线链路连接起来。

移动自组网中的路由协议按照路由决策依据的信息分为基于拓扑的路由和基于地理位置的路由两大类。

基于拓扑的信息收集节点间的连接关系和链路特性,并据此计算最佳路由,计算得到的路由保存在路由表中。

基于地理位置的路由收集节点的地理位置坐标,并据此进行路由决策,可以实现无状态的、分布式的转发决策。

基于拓扑的路由按照触发路由计算的条件分为先应式(表驱动)路由和反应式(需求驱动)路由。

先应式路由协议试图维护最新的、到网络中所有节点的路由。

每当节点发现拓扑改变,就将路由更新信息广播到网络中其它节点,每个节点更新路由表。

反应式路由协议仅当源节点需要向目的节点发送数据时,才启动一个路由发现过程;

路由建立起来之后由一个路由维护过程进行维护,直到目的节点不可达,或者源节点不再需要发送数据。

2.1先应式路由协议

DSDV(Destination-SequencedDistance-Vector)[1]是一个典型的先应式路由协议,采用经典的距离矢量路由算法。

每个节点保存一个路由表,记录所有可达的目的地,以及到达这些目的地的最小跳数。

为在拓扑结构动态变化的网络中保持路由表的一致性,DSDV采用两种路由更新触发机制:

1)每个节点周期性地发送路由更新消息,2)当发现拓扑结构发生改变时立即发送更新消息。

DSDV不要求移动节点之间存在某种形式的时间同步,也不要求移动节点的更新过程之间存在什么相位关系。

(路由更新触发机制,异步更新)

节点发送的每个路由更新消息包含一个消息序号,该序号由发送节点产生。

与其它距离矢量路由算法类似,路由更新消息中包含节点发布的新路由,每一条路由包含以下信息:

1)目的地址,2)到达目的地址的跳数,3)该条路由的目的序号。

其中,路由的目的序号是DSDV协议新增的,该序号由目的节点生成,用于指示路由的新旧。

在路由信息的传播过程中,路由序号被发送到所有节点,供节点决定怎么使用和更新路由。

当节点接收到新的路由信息时,新的路由信息会与之前得到的路由信息进行比较,具有最新序号的路由被采用,较早序号的路由被丢弃,若序号相等则较小跳数的路由被采用。

若路由更新消息中的路由被采纳,则被采纳路由的跳数均加1,然后在下一次路由更新中发送出去。

(路由更新信息,路由序号的生成和使用,路由更新)

节点移动可能导致原先使用的链路中断。

链路中断可被链路层检测到,或当节点长时间没有收到广播时推断出来。

中断链路的跳数用∞表示,∞为任何大于最大跳数的数值。

当节点检测到去往某个下一跳的链路中断时,将通过该下一跳的所有路由的跳数都标记为∞,并为这些路由分配新的序号。

由于正常情况下路由的序号都由目的节点产生,只有表明中断链路的路由序号才由中间节点产生,为区分这两种情况,规定目的节点产生的序号为偶数,中间节点产生的序号为奇数。

当节点收到一个∞跳数,随后又收到一个序号更高的、具有有限跳数的路由时,节点用“真实”的序号代替该路由,并触发一次路由更新广播,将该重要的信息传播到邻居节点。

(链路中断的处理)

当节点收到新的或变动较大的路由信息时,应当立即将这些信息广播出去,以使这些信息能够尽快传播到其它节点,加快路由的收敛。

然而,当节点快速移动时,这会导致大量的广播,降低无线信道的可用性。

为减少路由更新消息消耗的带宽,DSDV定义了两种类型的路由更新分组。

一种称为fulldump(完全转存),携带完整的路由表;

另一种称为incremental(增量更新),只携带上一次fulldump之后变化的路由信息。

在设计上,一次增量路由更新应当装入一个协议数据单元NPDU,完全转存可能会需要多个NPDU,即使在一个节点数较少的网络中。

当节点移动较少较慢时,完全转存的发送频率可以低一些。

当节点移动很频繁以致一次增量路由更新的数据量接近一个NPDU大小时,可以发送一个完全转存,这样下一次的增量分组就会小一些。

协议假设节点能够判断哪些路由变化是重要的,从而应当触发一次增量更新,比如一条稳定路由的跳数发生改变时应当发送增量更新,而路由仅有序号变化、跳数不变,可以不发送增量更新。

(完全转存和增量更新)

由于节点会从多个邻居节点收到路由更新消息,各节点发送路由更新是异步的,新的路由又是根据路由序号和跳数来决定,因此很有可能会出现节点不断更新同一条路由(更新序号或更新跳数)的情况。

如果每次变化都立即触发路由更新消息的发送,则会导致大量的广播发送,也会导致路由波动。

事实上,节点几乎总是会收到序号不断增加的路由信息(最新序号总是从目的节点传播开来),并且较大跳数的路由总是最先到达。

解决该问题的方法是,如果节点能够预测更好的路由即将到来,则推迟路由更新的发送,除非该路由的目的节点在此之前是不可达的。

为此,每个节点需要有两个路由表,一个用于转发数据包,另外一个保存将通过增量更新分组发布的路由表。

为了确定在发送路由更新前应等待多长时间,节点内部维护一张稳定时间表(settlingtimetable)。

对于每一条路由,记录以下信息:

1)目的地址,2)最近一次稳定时间,3)平均稳定时间,稳定时间为第一条路由到达和最佳路由到来之间的时间间隔。

当一个路由更新到来时,如果新路由的序号比已有路由的序号新,但跳数大,则新路由被立即用来转发数据,但不立即发布,而是查询稳定时间表确定等待时间(如averagesettlingtime*2),待时间到后再发送路由更新。

(确定路由更新消息的发送时机)

举一个DSDV操作的例子。

考虑图1中的MH4,表1是MH1离开MH2之前MH4的转发表。

节点地址用MHi表示,序号用SNNN_MHi表示,其中MHi是生成该序号的节点,SNNN是序号值。

Install域用于确定什么时候删除过时路由,ptrl_MHi为指向替换路由的指针。

从表1可以看到,所有链路都是可用的,因为序号都为偶数。

表2是MH4发布的路由表。

图1网络拓扑

表1MH4的转发表

表2MH4发布的路由表

假设MH1离开MH2,进入MH5和MH7的邻域(即成为MH5和MH7的邻居)。

MH5和MH7发现新邻居MH1后,立即触发一次增量路由更新,路由更新信息被广播给MH6。

MH6判断这是一个重要的路由更新信息,也立即触发路由更新发送,将MH1的路由信息广播给MH4。

收到路由更新消息后,MH4更新其转发表,表3是MH4的新转发表,其中表项MH1有跳数更新,其余表项有序号更新。

MH4在随后的一系列增量路由更新中发送MH1的路由信息,直至发送fulldump为止。

MH4发布的增量路由更新如表4所示,其中第一项是MH4,因为MH4是发布者,然后是MH1,因为MH1有重要路由更新。

按照规定,跳数改变的路由要放在增量更新分组的前面。

表3MH4的新转发表

表4MH4发布的新路由表

在移动自组网环境中使用分布式距离矢量路由算法的主要顾虑是容易形成路由环路和计数到无穷问题。

形成路由环路的主要原因是各节点之间没有协同好,各节点可能会使用到一些错误的信息来更新各自的路由表,已有距离矢量路由算法都没有解决好这个问题,或者无法避免环路(如RIP),或者需要节点间复杂的协同而不具有实用性。

DSDV使用序号解决了节点间的协同问题:

1)每个节点总是使用最新最好的路由,避免路由环路的发生;

2)使用奇数序号表示链路中断,避免了计数至无穷的问题。

DSDV使用增量路由更新和稳定时间表,大大减少了路由信令的开销。

DSDV较适用于小规模的移动自组网网络,因为频繁的广播导致其控制消息的开销高达O(n2),限制了网络的规模。

其次,每个节点需要维护大量当前不活跃的路由,浪费了不少资源。

2.2反应式路由协议

AODV(Ad-hocOn-DemandDistanceVectorRouting)[2]协议是一个典型的反应式路由协议,仅当源节点希望向某个目的节点发送数据却并没有去往该目的节点的路由时,才启动路由发现过程。

不在活跃路径上的节点不维护任何路由信息,也不参与任何周期性的路由表交换。

AODV采用广播路由发现机制,依靠中间节点动态建立路由表,借鉴DSDV中目的节点序号的概念来维护最新的路由信息。

(1)路由发现(pathdiscovery)

当一个节点希望和另一个节点通信,但当前路由表中并无该节点的路由信息时,启动路由发现过程。

每个节点维护两个独立的计数器:

节点序号和广播ID。

源节点通过向其邻居广播一个路由请求消息RREQ启动路由发现过程。

RREQ消息包含<

源地址,源序号,广播ID,目的地址,目的序号,跳数>

这6个域,其中<

源地址,广播ID>

二元组唯一标识一个RREQ,每当源节点发送一个新的RREQ时要递增广播ID。

邻居节点收到RREQ消息后,有三种可能:

1)RREQ消息的源地址和广播ID与以前收到的某个RREQ相同(该RREQ消息已收到过):

丢弃该消息;

2)本节点有到目的节点的路由:

向源节点发送路由响应消息RREP;

3)本节点没有到目的节点的路由:

将跳数加1后,继续向邻居广播RREQ消息,并建立到源节点的反向路径。

反向路径建立

RREQ消息中除广播ID之后,还有两个序号:

源序号,(源节点所知道的)最新的节点序号。

源序号用于维护到源节点的反向路径的新鲜性,目的序号指出可被源节点接受的正向路径的新鲜程度。

RREQ消息从源节点出发到达不同的中间节点时,它自动建立起从所有节点到源节点的反向路径,如图1所示。

反向路径用于向源节点转发由该RREQ消息引发的RREP消息。

为建立反向路径,节点记录其第一次收到该RREQ拷贝的邻居地址。

正向路径建立

RREQ消息最终将到达一个知晓目的节点路由的节点(中间节点或目的节点)。

如果中间节点的路由表中有到目的节点的路由,比较路由表项的目的序号和RREQ消息的目的序号;

如果RREQ消息的目的序号较大,该中间节点不能使用路由表中的路由响应RREQ,必须继续广播RREQ;

若路由表项的目的序号不小于RREQ的目的序号,且这是收到的第一个RREQ拷贝,中间节点向收到RREQ的邻居单播发送一个RREP消息。

RREP消息包含<

源地址,目的地址,目的序号,跳数,生存时间>

在RREP向源节点传输的过程中,路径上的每一个节点建立到RREP消息到来的邻居节点的前向指针,更新到源节点和目的节点路由表项的超时设置,记录目的节点的最新序号,如图2所示。

不在RREP传输路径上的节点在ACTIVE_ROUTE_TIMEOUT(约3000ms)时间之后超时,删除反向指针。

接收到RREP的节点将针对源节点的第一个RREP拷贝向源节点传播;

如果它随后收到相同源节点的其它RREP拷贝,仅当后续RREP的目的序号大于之前的RREP,或者目的序号相同但跳数更小,中间节点才更新其路由表项并传播新的RREP;

其余RREP将被丢弃。

当第一个RREP到达源节点时,源节点可以立即启动数据传输过程。

当过后学习到更好的路由时,将更新其路由表。

(2)路由表管理

除了源序号和目的序号以外,路由表中还会保存其它一些有用的信息。

与每条反向路径相关联的有一个路由请求过期定时器,该定时器用于清除那些不在RREP传输路径上的节点所保存的反向路径,定时器的值与网络的规模有关。

与每个路由表项相关联的还有一个重要参数,称为路由缓存超时(routecachingtimeout),在该时间之后路由失效。

(正向与反向路径的失效定时器)

每个路由表项还保存活跃邻居的地址。

如果在最近的active_timeout期间,某个邻居节点向目的节点发送或转发过分组,该邻居节点称为该目的节点的活跃邻居。

保存这个信息的目的是,当去往目的节点的路由中断时,所有的活跃源节点将会被通知。

正被活跃邻居使用的路由表项称为活跃路由表项,正被依照活跃路由传输的数据包使用的路径称为活跃路径。

和DSDV类似,路由表中的所有路由用目的序号进行标记,以避免路由环路的出现。

移动节点对于每个感兴趣的目的节点维护一个路由表项,每个路由表项包含以下信息<

目的地址,下一跳,跳数,目的序号,活跃邻居列表,过期时间>

每当一个路由表项用来传输从源节点到目的节点的一个数据包时,该路由表项的过期时间被设置为当前时间加上active_route_timeout。

当移动节点获知一个新路由时,它比较新路由的目的序号和当前路由的目的序号,选择具有最大序号的路由;

如果序号相同,则仅当新路由具有较小的跳数时才能选择。

(3)路径维护

不在活跃路径上的节点的移动不会影响到目的节点的路由。

如果在活跃的会话过程中源节点发生了移动,源节点可以重新发起路由发现过程,建立到目的节点的新路由。

当目的节点或者某个中间节点发生移动时,一个特殊的RREP消息将被发送到受影响的源节点。

可以用周期性的hello消息来检测链路失效,另一种检测方法是使用链路层确认(LLACKS)。

当向下一跳节点转发数据包失败时,也可以指示链路失效。

一旦下一跳不可达,断点上游的节点向所有活跃的上游邻居发送一个主动提供的RREP消息,消息的序号比之前知道的序号大1,跳数为∞。

收到消息的节点随后向他的活跃邻居转发该消息,该过程不断重复直至所有的活跃节点被通知。

由于AODV只维护无环的路由,因此该过程是会终止的。

(链路失效的检测和通知)

当收到关于链路中断的通知后,如果源节点仍然需要到目的节点的路由,可以重新启动发现过程。

为确定路由是否仍然需要,节点可以检查路由最近是否被用过,也可以检查上层协议控制块看一下到目的节点的连接是否仍然打开着。

如果源节点(或路径上其它节点)决定重建路由,它发送一个目的序号比之前大1的RREQ消息,以确保它建立的是一条新的可行路由,并且那些认为旧路由有效的节点不会响应。

(路由重建)

2.3基于地理位置的路由协议

对路由算法扩放性影响最大的两个因素是网络拓扑的变化频率和路由域中的节点数目。

直观上,拓扑改变产生的更新开销等于状态改变频率乘以节点数量。

因此,基于拓扑的路由算法一般而言对于节点移动的适应性较差。

当节点能够通过GPS系统或其它方式知道自己的位置坐标时,可以使用基于地理位置的路由。

基于地理位置的路由利用了移动自组网中物理邻近性和网络邻近性基本一致的特点。

源节点知道欲通信的目的节点的位置,并将该位置标记在数据包头中,中间节点只需要知道自己的位置和所有一跳邻居的位置就可以进行转发决策,在物理上最靠近目的节点的邻居节点成为数据包的下一跳。

尽管基于地理位置的路由只依赖局部的地理位置信息,但数据包很大可能也是沿着最小跳数的路由到达目的节点的。

由于节点只需要局部位置信息而不管整个网络的规模,基于地理位置的转发对于大规模网络是很有吸引力的。

这种路由方法不需要网络的拓扑信息,从而允许近乎无状态的转发。

基于地理位置的路由包括转发策略和位置服务两部分。

(1)转发策略

GPSR(GreedyPerimeterStatelessRouting)[3]是一个典型的基于地理位置的路由算法。

算法包括贪婪转发和边缘转发(perimeterforwarding)两种转发策略,只要有可能总是使用贪婪转发策略,在贪婪转发不可用的区域使用边缘转发。

贪婪转发

源节点在每个发送的数据包头中加上目的节点位置,转发节点根据本节点位置、邻居节点位置和目的节点位置进行一个局部最优决策(贪婪算法),与目的节点距离最近的邻居成为下一跳,数据包在物理距离上不断接近直至到达目的节点。

下图给出了贪婪转发选择下一跳的示例,x收到一个发往目的节点D的包,x周围的虚线圆标记出了x的通信覆盖范围,D周围的虚线弧以y和D之间的距离为半径,y和D之间的距离小于x的任一其它邻节点到D的距离,因而x选择y作为下一跳。

这种贪婪转发过程不断重复,直至包到达D。

贪婪转发的最大优点是转发节点只需要知道其一跳邻居的信息,而一跳邻居的个数取决于节点密度而不是网络中的节点总数,从而节点需要维护的状态数(一跳邻居集合)非常少,可以看成无状态。

维护邻居关系的一种简单方法是每个节点周期性地广播一个信标消息,信标中包含自己的标识和位置。

为了最小化这种开销,GPSR在节点转发的每个数据包中捎带该节点的位置,并令所有节点的网络接口运行在混杂模式,从而每个数据包都相当于一个信标消息,减少了信标的开销。

只使用一跳邻居的位置进行贪婪转发的问题是:

存在这样的拓扑结构,到目的节点的所有路由都需要数据包在几何距离上暂时远离目的节点。

下图给出了这种拓扑结构的一个简单例子,D周围虚线弧的半径等于x到D的距离,x比它的邻居节点w和y都更靠近D。

尽管从x到D有x-y-z-D和x-w-v-D两条路径存在,但若使用贪婪转发,x将不会选择w和y,因为x是本地最接近D的。

这种情况必须依靠其它机制来转发。

边缘转发

重画上图,注意到以x为圆心、通信距离为半径的圆和以D为圆心、|xD|为半径的圆的相交区域内没有节点。

从x的角度,我们称没有节点的阴影区域为空洞(void),x寻求在空洞的边界之外将包转发给目的节点D。

直观上看,x寻求沿着空洞寻路。

大家所熟知的遍历一个图的右手法则示于下图中。

该法则规定从y节点到达x节点后,下一条要遍历的边是从边(x,y)开始、节点x逆时针方向的第一条边。

众所周知,右手法则按顺时针边序遍历一个封闭多边形区域的内部,在图中即为按(y->

x->

z->

y)的顺序遍历由节点x、y和z组成的三角形。

该法则按逆时针边序遍历外部区域,即本例中三角形外部的区域。

论文利用这种循环遍历特性来沿着空洞寻路。

使用右手法则按(x->

w->

v->

D->

y->

x)的顺序遍历相当于围绕空洞行进,直至到达比x更靠近D的节点(包括D本身)。

按照右手法则遍历的边序列称为边缘(perimeter)。

在作者早期提出的方案中,使用右手法则在遍历的边缘上发送探测包,这些包收集的状态缓存于节点中。

节点通过将数据包发送到该边缘上距离目的节点D更近的节点来跳出局部最优。

这种方法要求一种不交叉的启发式方法,以迫使右手法则在有交叉边的区域中找到包围空洞的边缘。

这种启发式方法总体上提高了可达性,但仍有一个严重的缺陷:

该算法在路径存在时并不总能找到。

这种不交叉的启发式方法盲目地删除了与一对交叉边相交的边,可能会造成网络分隔,从而找不到穿越分隔区域的路径。

论文提出一种平面化图的方法来消除交叉边(见论文)。

(2)位置服务

使用地理位置路由的一个前提条件是,源节点必须知道目的节点的位置,即网络中应当有位置服务机制。

为了保持良好的可扩放性,位置服务必须允许只用少量的开销实现位置查询和更新;

其次,位置服务本身必须只依靠地理位置转发就能实现。

位置服务的可扩放性还应当体现在以下几个方面:

1)任何一个节点不能成为瓶颈:

维护位置服务的工作应当均匀地分摊到各个节点上。

2)一个节点的失效不应当影响其它许多节点的可达性。

3)对附近节点的位置查询应当仅依靠相适应的本地通信就能满足,即使在网络分割时也能使用。

4)位置服务给每个节点产生的存储与通信开销应当随着节点总数的增长而少量增长。

GLS(GridLocationService)[4]就是满足以上条件的一种分布式位置服务机制。

GLS不依赖于任何一个特殊的节点,因而具有容错性,且位置服务是分摊的。

在GLS中,凡是依靠地理位置转发能够到达的节点,这些节点的位置都能够查询到,因而GLS在网络分割时也能使用,且位置查询是局部的。

GLS的设计原则

每个节点将其当前位置保存在网络中的一组节点上,这组节点称为这个节点的位置服务器(容错)。

节点的位置服务器并不是特别指定的,会随着节点的移动发生改变,并且每个节点都是其它一些节点的位置服务器(分摊)。

对于一个特定的节点而言,其位置服务器在离它较近的区域分布较密集,而在离它较远的区域分布较稀疏。

这样做一方面保证目的节点附近的节点可以使用较近的位置服务器找到目的节点位置,同时限制了每个节点的位置服务器数量(可扩放性要求3);

另一方面远距离查询不会被不相称地惩罚,即查询路径的长度与数据路径长度成比例(可扩放性要求4)。

为了均匀分布位置服务,GLS不使用簇头或位置服务器层次这样的技术,因为这些方法会使簇头或位于较高层次的节点承担过重的任务。

GLS保证每个节点选择的位置服务器集合在概率上与其它节点选择的位置服务器集合不同。

为使查询节点A能够访问到B的位置服务器,A和B必须运行相同的位置服务器选择算法和使用相同的输入参数来确定B的位置服务器,即B的名字及其它众所周知的信息。

GLS选择位置服务器的方法源自一致性哈

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1