路由协议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路径建立过程]