第5章 移动Ad Hoc网络的源动态路由协议
源动态路由协议(Dynamic Source Routing Protocol,DSR)是一个专门为多跳无线Ad Hoc网络设计的简单且高效的按需路由协议,多跳无线Ad Hoc网络由移动节点组成。使用DSR路由协议时,网络是完全自组织(Self-Organizing)和完全自构(Self-Configuring)的,不需要任何现有的网络基础设施或者网络管理设备。各个网络节点相互协作,为每个其他节点转发分组,从而允许不在直接无线传输范围内的节点跨越多跳传输空间进行通信。由于网络中的节点到处移动,或者加入网络,或者离开网络,以及由于诸如干扰源之类的无线传输条件的变化,所以,所有路由都是由DSR路由协议动态而自动地确定和维护。因为到达目的节点所需要的中间节点的数量以及中间转发跳序列可能随时变化,所以产生的网络拓扑可能非常丰富且可能迅速变化。
DSR路由协议开销低而对网络变化反应迅速,提供快速反应式服务,以便帮助确保数据分组的成功交付,即使在节点移动或者其他网络状况变化的条件下也是如此。
DSR路由协议由下列两个主要机制组成,这两个机制共同作用于MANET,完成源路由的寻找和维护。
(1)路由寻找(Route Discovery)机制:节点S希望给目的节点D发送一个分组的时候,使用路由寻找机制来获取一条到达D的源路由。路由寻找机制只有在S需要给D发送一个分组而且还不知道到达D的路由的时候才能使用。
(2)路由维护(Route Maintenance)机制:当源节点S正在使用一条到达目的节点D的源路由的时候,S使用路由维护机制能够检测出这种情况:如果网络拓扑已经发生了变化,导致S正在使用的那条到达D的源路由上一条链已经不再起作用,因而S不能再使用这条路由。当路由维护指出一条源路由已经中断而不再起作用时,为了将随后的数据分组传输给D,S能够尽力使用任何一条偶然获知的到达D的路由,或者能够重新调用路由寻找机制找到一条新路由。只有在S正在真正使用一条源路由给D发送分组的时候,S才使用路由维护机制维护这条源路由。
在DSR路由协议中,路由寻找机制和路由维护机制均是完全按需操作。特别是,DSR路由协议不像其他路由协议那样在网络内需要某个网络层次的某种周期性分组。例如,DSR路由协议不使用任何周期性路由广播分组、任何周期性链路状态探测分组以及周期性相邻节点探测分组,DSR路由协议也不依靠网络低层协议中的这些周期性功能。当所有节点相互之间近似为静态并且当前通信所需的所有路由已经全部被找到的时候,这种完全按需操作特性以及没有周期性操作使得DSR路由协议产生的分组开销数量始终成比例地下降,直至最终等于零。当节点又开始移动或者通信模式发生变化的时候,DSR路由协议的路由分组开销只根据跟踪当前正在使用的路由所需要的那些操作来自动确定。对当前正在使用的路由没有产生影响的网络拓扑变化不予关心和处理,DSR路由协议也不会对此做出任何响应。
DSR路由协议维护的所有状态都是“软状态”,任何状态的丢失都不会影响DSR路由协议的正确操作;所有状态都是按需建立;所有状态在丢失之后如果仍然需要,则能够很容易得到迅速恢复,而又不会对DSR路由协议产生太大的影响。DSR路由协议只使用软状态使得DSR路由协议具有很强的能力处理诸如路由分组丢失或者延迟,或者节点失效之类的问题。特别是,一个出现故障后又重新启动的DSR节点能够轻松快速地重新入网;如果故障失效节点正在作为一条或者多条路由的一个中间节点为其他节点转发分组,那么这个节点在重新启动后能够快速恢复其分组转发功能,很少、甚至不会中断DSR路由协议操作。
节点在响应单个的路由寻找的过程中(以及通过从旁听到的其他分组中得到的路由信息),能够获悉和存储到达任何一个目的节点的多条路由。支持多条路由到达同一个目的节点使得对路由变化的反应迅速得多,因为具有多条路由到达同一个目的节点的节点在其正在使用的那条路由已经中断而不能再使用的情况下可以试用已经存储的另一条路由。这种存储多条路由的处理方法还避免了每当正在使用的路由中断而不能再使用时执行一次新的路由寻找进程所必需的开销。分组发送节点选择和控制其分组的传输路由,与多条路由支持一起提供所定义的载荷平衡之类的特性。此外,因为发送节点能够避免所选路由中出现重复的转发节点,所以很容易保证使用的所有路由是开环路由。
DSR路由协议的路由寻找机制和路由维护机制的操作使得单向链和不对称路由很容易得到支持。特别是,在无线网络中,由于不同的天线或者不同的传播模式或者不同的干扰源,两个节点之间的链在两个方向上很可能工作得不是同样正常。