当前位置:文档之家› 路由协议

路由协议

路由协议DSR_AODV_DSDV
[Dynamic Source Routing,动态源路由协议]
●当节点S需要向节点D发送数据的时候,而此时节点S并不知道通往节点D的路径,
此时,节点S便启动路由发现过程
——DSR协议为反应式(Reactive)路由协议
●源节点广播Route Request路由请求消息(RREQ消息)
●每个节点均在其向前发送的RREQ消息上附加自己唯一的标识符
[动态源路由协议的路由发现过程]
[X,Y]表示附加到RREQ消息上的标识符列表
●如图,节点H同时接收到来自两个相邻节点的RREQ消息:有潜在消息冲突的可能
●节点C收到来自G和H两个相邻节点发送来的RREQ消息,但C并不再向前发送该消息,
因为节点C已经向前发送过一次RREQ消息
●节点J与节点K均向节点D发送了RREQ消息
●由于J和K均不知道对方存在,彼此之间是隐藏的,因此这两个节点所发送的消息存
在冲突的可能
●节点D不再向前发送RREQ消息,因为节点D便是整个路由发现过程的终点目标
●当目的节点D接到第一个RREQ消息的时候,便往回发送一个Route Reply路由应答消
息(RREP消息)
●RREP消息经由反向路径回传,(反向路径就是和RREQ消息到达路径相反的路径)
●RREP消息当中包含了由S到D的路径,而这条路径就是源节点S所发送的RREQ消息所
确定的
[动态源路由协议的路由应答过程]
●当源节点S接收到RREP消息的时候,它便将RREP消息中所记录的路径缓存起来
●当源节点S发送数据到目的节点D时,数据分组的首部将包含整个路径的信息,这也是
该算法命名为“源路由”的缘由
●中间节点使用数据分组中首部包含的“源路由”信息了来决定抵达该节点的数据应该转
发的方向
[动态源路由协议的数据投递过程]
[动态源路由协议优化——路径缓存]
●每个节点将通过任何可能的方式所获得的新路径缓存起来
●当节点S发现一条可以通往节点D的路径[S,E,F,J,D]时,它同样知道有一条可以到达
节点F的路径[S,E,F]
●当节点K接收到路由请求消息Route Request RREQ[S,C,G]后,节点K则同样知道经过
路径[K,G,C,S]可以到达节点S
●当节点F向前传递路由应答消息Route Reply RREP[S,E,F,J,D]时,节点F则可以知道
经过路径[F,J,D]可以到达节点D
●当节点E经过路径Data [S,E,F,J,D]发送数据分组的时候,它则知道它自身可通过路
径[E,F,J,D]可以到达节点D
●一个节点无意中听到其他节点的通信消息的时候,它则将缓存其中它自己所不知道的路

●存在问题:一些陈旧的路由缓存对于系统的开销是一种负担
[动态源路由协议的优点]
●只维持需要通信节点之间的路径——可以减少路由保持对于系统的开销
●路由缓存机制可进一步减少路由发现过程的开销
●一次简单的路由发现过程可能产生许多通往同一节点的路径,由于中间很可能用以前的
缓存记录对路由发现消息进行应答
[动态源路由协议的缺点]
●由于采用源路由的方法,因此分组首部的大小将随着路径长度的增加而增大
●泛洪式发送路由请求消息将有可能遍及整个网络
●由相邻两个节点所发送的路由请求消息可能回引发潜在的冲突
——在向前发送RREQ消息之前先插入一个随即延时的数值
●由于中间节点将缓存起一些路径,当很多中间节点用他们自身的路径缓存对路由请求消
息进行应答的话将会产生更多的冲突——产生路由应答风暴问题
●陈旧的缓存将增加系统的开销,增加网络的负荷
[Destination Sequenced Distance Vector,目的节点序列距离矢量协议]
——协议简介
●DSDV是基于目标节点的协议
——每个节点只维持一跳到两跳内的相邻节点之间的区域信息
——不需要知道整个网络的全局拓扑结构
——有可能出现路由环路问题
●DSDV是先应式(Proactive)路由协议
——每个节点维护它所知道的所有目的节点的路由信息
——所有节点都定期更新路由信息,任何节点都不例外
——在网络拓扑没有变化的时候,仍然有网络开销存在
——可能维护一些没有使用过的路由
[距离矢量选路经典算法——Bellman-Ford算法]
●初始化,对于每个节点G,对所有直接相连的目的地N,路由表中的记录用三元组(N,
G,0)来表示,即从G到目的地N无需经过路由器转发;
●节点G定期发送它的路由表给相邻节点,更新信息中对应每一个目的地N,用一个三元
组来表示(N,V,D),即从G出发到目的节点N的路径上下一跳节点为V,G到N的跳距为D;
●节点G收到G’送来的路由信息,对于更新信息中的每个目的节点,在G的路由表中查
找对应的记录,设它为(N,V,D),而更新信息的三元组为(N’,V’,D’):
——如果找不到相应的记录,则在G的路由表中增加一项(N,G’,D’+ C);
——如果V = G’,则G的路由表对应的记录更新为(N,G’,D’+ C);
——否则,比较D’+ C和D:
如果D’+ C < D,则G的路由表中记录更新为(N,G’,D’+ C);
否则,G中的路由表保持原状,仍为(N,V,D)
[DSDV路径建立过程]
[DSDV数据发送过程]
[距离矢量算法的路由环路问题]
●路由环路所产生的计数到无穷情形,使得算法缓慢收敛[DSDV的序列号机制]
●每个节点只能够更新自己的序列号
●节点自己更新序列号的时候只能够增加2,以偶数单调递增
[DSDV总结]
——优点
●基于距离矢量选路机制的Bellman-ford算法,易于实现
●采用了序列号机制避免陷入路由环路的情形
●避免了由于路由被动发现所带来的业务延时
——缺点
●各个节点均处于活跃状态
●要求节点之前存在双向链路
●开销问题,要主动维护一些无用的路由信息
●网络规模的可扩展性
[Ad Hoc On-Demand Distance Vector Routing,Ad Hoc按需距离矢量路由协议]
●DSR协议在每个分组消息的首部都包含了源路由信息
●首部信息过大结果就是将降低性能表现——特别是当数据分组当中有用信息相对较少
的时候,首部信息过多必然会产生严重的性能损失
●ADOV通过采用每个节点维护路由表的方法来改进DSR的性能,因此数据分组不需要包
含路径信息
●AODV保留了DSR协议中最有价值的部分——只是维持需要通信节点之间的路径
●AODV采用类似DSR协议的方式向前发送Route Request请求消息(RREQ消息)
●当一个节点(这个节点接收到来自上一个节点所发送的RREQ消息)再次广播一个路由
请求消息的时候,它也同时建立起一条指向源节点的反向路径
——AODV假定链路是双向的对称链路
●当RREQ消息达到目标节点的时候,它返回一个路由应答(Route Reply)消息,即RREP
消息
●RREP(路由应答)消息沿着由RREQ消息建立路径的反方向回传
[AODV的路由请求消息]
[AODV建立反向链路过程]
息向前发送,因为节点C已经发送过一次RREQ消息
由于节点D已经是该路径所需要到达的终点,因此节点D不再向前发送任何RREQ消息[AODV建立前向路径过程]
[路由请求(RREQ)消息和路由应答(RREP)消息]
●路由请求消(RREQ)息包括一个为目的节点而设置的序列号
●如果一个中间节点当中保存的路由是相对较新的话,它就发出一个路由应答消息
●中间节点回传RREP消息的同时也记录下到达目的节点的下一跳地址(它会收到来自另
外一个中间节点所回传的RREP消息,于是便可以记录到下一跳地址)
●经过一段超时时间间隔(timeout interval)后,路由表入口中所保存的反向路径就会
被清除
●经过一段活跃路径超时时间间隔(active_route_timeout interval)之后,没有被使
用的前向路由均会清除
[链路失效]
●如果一个相邻节点X在活跃路径超时时间间隔(active_route_timeout interval)内
向节点N发送过分组,那么相邻节点X对于节点N而言就是处于活跃状态
●邻接的节点之间相互交换Hello消息
●如果某节点路由表入口中通往下一跳节点的链路不可用时,它将通知所有处于活跃状态
的邻接点
●节点通过传播路径错误消息(Route Error,RERR消息)来通告路径失效,并同时更新
目的地址序列号
[路径错误]
●设有一个分组P,这个分组是从源节点S发送到目的节点D的,当中间节点X无法在链
路[X,Y]上转发这个分组的时候,节点X便生成一个RERR消息
●节点X增大自身所缓存的目的节点序列号N
●RERR消息中包含了这个增大了的目的节点序列号N
●当S接收到RERR消息后,它将启动新的路径发现过程,目的节点为D,而目的节点序
列号则设置为N
●当目的节点D收到路径请求消息(RREQ消息)之后,目的节点D则将自身的序列号更
新设置为N,直到有更大的目的序列号N出现为止
[AODV总结]
●分组报文首部中无需携带路径信息
●每个节点仅维护一些包含处于活跃状态节点入口的路由表
●对于每个目的节点而言,每个中间节点仅保存一个对应它的下一跳节点
——DSR则可能保存多条对应同样目的节点的路径
●采用了序列号机制以避免出现陈旧无用的路径
●采用序列号机制以避免产生路由环路
●即使拓扑结构没有改变,一些没有被使用的路径也会被删除。

相关主题