【自组织网络】Ad hoc网络层单播协议笔记

本文对比了DSDV(基于距离矢量的定时更新)、AODV(按需路由协议)和ABR(基于关联稳定性路由)的原理、操作流程与优缺点,探讨了它们在动态网络中的路径选择策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、DSDV(Destination Sequenced Distance Vector

就是DVR的变种,整体还是一样

1.定时和邻居交换路由表,可以有Full Dump也就是全交换,也可以有Incremental Updates也就是只交换新的信息。

2.在拓扑变动时立即跟邻居更新信息。

3.给每个节点维护一个序号,这个序号大小代表了关于这个节点的信息是否为最新的,序号越大代表这个信息越新。

4.拓扑变动例子

这个例子里,1节点和2断开,移到了右边,这时
(1)2号节点要告诉他的邻居1断开了,也就是把到1的距离设为不可达,并更新1的序号,在原来的基础上加一,然后再给他的邻居。
(2)2号的邻居收到信息之后再告诉他们的邻居,flooding到全网络都知道。
(3)1号抵达目的地之后,更新自己的序号,注意这里的序号需要比2发的序号大,来确保他传播出去的信息是最新的,然后照例跟他的新邻居交换信息,7和8得知1后,flooding1号的新信息,大家发现这是1新的状态,就更新。

 5.总结

优点:

(1)由于事先建好了路由表,要发信息的时候就会有低延迟

缺点

(1)在建表的时候会有很大的overhead

(2)不新鲜的路由表有时会导致路由错误

二、AODV(Ad hoc On-Demand Distance Vector Routing

这是一个on-demand的路由协议,只有在某个节点想要发包时才会初始化链路

1.当一个节点想要给目的节点发包时,他会flooding一个RREQ消息,这个消息包含了源和目的地址,一个broadcastID,源和目的节点的序列号。

(1)源地址和broadcastID可以唯一的识别一个RREQ,每次源想要发一个新的RREQ,他都要给这个broadcastID加一,因为中间节点收到同样的RREQ(源地址和broadcastID一致)就会丢弃。

(2)源和目的的序列号是为了看状态的,看信息是否最新,下面考虑这样一个例子

S想给M发包,

第一种情况:这时候S传了一个RREQ给他的邻居,RREQ给到E的时候,M移动到了F边上,这时J开始和他的邻居交换信息,更新了M的序号,说M断开了,不可达,F得知了这个信息,更新了M的序号,这时M到了他边上,跟他交换了信息,F得知了M的最新位置,知道了M的新序号,收到RREQ后发现M是我邻居,就把RREQ给了M,M这时开始发RREP包,里面是自己最新的序号,传给F传回S,成功。

第二种情况:这时候S传了一个RREQ给他的邻居,RREQ给到E的时候,M移动到了F边上,这时J开始和他的邻居交换信息,更新了M的序号,说M断开了,不可达,F得知了这个信息,更新了M的序号,但这时M还没到他边上跟他交换信息,他这时继续给他的邻居广播RREQ,G收到了C给的RREQ,他会直接丢弃F的,E同理,只有J会收到,J继续广播,广播到后面,大家都收到了RREQ但是在收到RREQ之前都没有到达M,那这次RREQ就失败了,S设置的定时器超时后,会增加broadcastID,重传。

2、取决于想要什么样的路由,如果是要最快的路由,那么目的节点收到RREQ之后,就不会再管别的RREQ了,他会顺着RREQ来时候建立的reverse path把RREP送回去。

3、如果中间节点有到目的节点的路,他只有在 他这个链路信息的目的节点的序列号 大于或等于 RREQ中目的节点序列号 时,才会回复RREP

4、RREP往回走的过程,由于是要最快的路,中间节点只会收到一个RREP,那么他收到RREP就相当于确认建立链路了,他一定会往回转发RREP到源。

5、现在考虑什么时候会更新序列号

(1)周期的hallo包会更新序列号

(2)RREQ经过中间节点时,会更新源的序列号,那如果RREQ的序列号小于这个节点本身数据库里源节点的序列号要小,我觉得还是要转发,这种情况发生于hallo包传播的比RREQ快(会发生吗?),节点在RREQ到达之前就更新了序列号。

(3)RREP经过中间节点时,会更新目的的序列号。

(4)拓扑发生变化时,变化会泛洪

6、链路发生错误时,断开点靠近源一边的节点会侦测到并给源发送RERR,这时源收到RERR会重新发RREQ。收到RERR的包会自动释放消耗的资源,链路断开点另一侧的节点会根据之前设置的定时器,自动释放资源。

三、ABR(Associativity Based Routing

这个路由协议想要选择的路是最稳定的路。

1、路稳不稳定基于邻居之间定期交换的信标,这个信标积累的越多说明这一跳就越稳定。

2、根据一个链路的associativity tick判断其是否稳定,如果他的associativity ticks大于一个门槛,那么就视他为稳定的路。

3、较低的associativity ticks就意味着节点的移动性较高

4、ABR有两个前提假设:(1)尽管adhoc网络节点总会移动,但还是假设他在经历一次移动之后,会保持一个稳定的时间。(2)高associativity ticks就意味着稳定,低associativity ticks就意味着不稳定。

5、选路阶段

(1)这里举一个例子来阐述ABR的选路,这里src要想dest发包

(2)src产生一个BQ包,这个包包含了SRC到他所有邻居的associativity ticks,广播给他所有的邻居

(3)他所有的邻居收到这个BQ之后,会首先删掉与自己无关的信息,例如IS1收到之后,就会先删掉C1,C2,C3的信息,然后再把自己到他所有邻居的associativity ticks加上,广播给他所有的邻居。

(4)整个网络中所有的节点收到BQ包之后都会重复这个过程,那如何确保节点不会处理相同的信息呢,每个节点收到相同ID的BQ包之后,会检查以下自己是否在这个BQ包里出现过,如果出现过那说明自己处理过这个包了,就会自动丢弃。

(5)持续这个过程直到DEST收到BQ包,dest收到第一个BQ包之后就会设置一个定时器,等待接下来一段时间内所有的BQ包,等时间一过,就会停止收包,计算这些包的稳定性,选择最稳定的那一条路,给他回REPLY

(6)relpy包

这个包首先要有type来暗示这是reply包,然后源和目的ID,然后是所有中间节点的ID,最后还有一个链路质量总结,这个总结里必须包括路长,因为在链路断开时的局部修复时,会需要路长来判断是否局部修复。

(7)每个节点收到reply包之后,会先检查自己在包中的位置,并且把这个包传给他前面那个节点,并且根据他位置后面那个节点,得知自己收到信息之后要给的下一跳是谁。这个reply包应该是单播,但是老师说因为是无线传输,所有节点都会收到这个reply,无关的节点看自己不在这个源和目的通信的这条路里,就会释放掉之前BQ传来时候留的资源,可收到这个包丢掉与否,不应该是链路层的工作,如果这个节点不是单播的对象,那他的网络层应该不能知道自己收到了包,从而把空间释放掉,如果他能收到,那不就是广播了么

6、传包时的ACK机制

(1)隐式ACK:点对点传输时,A给B发包,B再给C发包,B给C发包的时候由于是无线通信,所以A也会收到B给C发的包,这时候A就能通过这个判断B收到了他发的包。这同样会产生上面说的那个问题。

(2)显式ACK:有一种情况没法使用隐式ACK,就是目的地收到包之后,他不会在转发了,前一个节点就没法知道他是否收到,这时目的地节点就必须发一个ACK,来显式的通知他前一个节点他收到了包。

7、链路错误,重建阶段

ABR采取局部修复的方式来应对链路错误。

(1)第一种情况,中间节点没了:那断开节点的前一个节点(pivot node)就会产生一个Local Quray(LQ),并且带有一个他到目的地的跳数,来寻找一个新的相同跳数的路到目的节点,以寻求局部修复,目的节点收到第一个LQ之后开始计时,时间一过挑出来一个最稳定的路,来返回一个Local Reply(LP)给pivot node,机制和先前建立链路时的机制类似。如果没找到新的路,他就会进行下面这种情况描述的,发RN。

(2)第二种情况,目的节点没了:那他前一个节点会感知到他没了,同第一种情况一样,发一个LQ[1],但是没找到,他这时候就会给他前一个节点发Route Notification(RN),这里是RN[0],0代表这个RN是往src传的,这时需要由他前一个节点来发LQ[2],要是还是找不到,就接着重复这个过程,直到找到,或者一半节点都找不到,那就不找了,就认为是目的节点跑太远了,这时最后一个进行LQ的节点会给源发RN,告诉源你重新发BQ把,LQ不成。

(3)第三种情况,源节点走了:那他后一个节点就会发一个RN[1],往目的地传,所有收到这个的节点会删除这个路得信息。源移走之后,如果他还有包要发,那他就会重新发BQ重新建链路。

(4)多个节点同时断开:

8、链路删除

(1)硬删除:源节点发送一个Route Deletion(RD)给目的节点,所有收到这个消息的节点释放掉资源,删除旧的路。

(2)软删除:每个链路都会有一个定时器,一旦一段时间都没有发消息了,那就认为这个链路已经不活跃了,就把这个链路的相关资源释放掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值