前言
最近开始学习无线路由协议,打算写一篇论文,所以看了一些相关的路由协议,现在将他们整理如下。
AODV
AODV即Ad-hoc On-Demand Distance Vector Routing,Ad-hoc就是多跳的、无中心的无线子组网络(节点是移动的),整个意思就是无线子组网按需式距离向量路由协议,比较拗口(这些路由协议自己翻译起来都特别拗口)。 AODV是基于DSDV,改进点在于,AODV是按需建立路由,不需要保存和维护到网络中所有目的地址的路径。
AODV起初的提议可以被称为纯按需路由获取协议,节点不需要依赖动态路径或者维持路由信息,并且,一个节点不会联系和维持到另一个节点的路径,直到这两个节点需要进行联系。或者除非这个节点作为中间转发站提供服务。整个协议的过程分为以下几个部分。
1.1 Path Discover
当一个节点需要给网络中的其他节点传送信息时,如果没有到达目标节点的路由,则必须先以多播的形式发出RREQ(路由请求)报文。RREQ报文中记录着发起节点和目标节点的网络层地址,邻近节点收到RREQ,首先判断目标节点是否为自己。如果是,则向发起节点发送RREP(路由回应);如果不是,则首先在路由表中查找是否有到达目标节点的路由,如果有,则向源节点单播RREP,否则继续转发RREQ进行查找。
2.2 Route Table Management
在路由表条目中,还有一个route request expiration timer,设置这个参数是为了让不在路径上的节点,丢弃这个路由数据。此外还有一个route caching timeout ,用来判断什么时候路由已经无效。此外,活跃节点的地址也会被保留,如果某路由断了,就会找到其他活跃的邻居节点。
2.3 Path Maintenance
不在活动路径上的节点的移动不会影响到到该路径的目的地的路由。如果源节点在活动会话期间移动,它可以重新启动路由发现过程,以建立到目标的新路由。当目标节点或某些中间节点移动时,将向受影响的源节点发送一个特殊的RREP。周期性的hello消息可用于确保对称链接,以及检测链接失败。或者,使用链路层确认(LLACKS)可以检测到此类故障,而且延迟要小得多。如果尝试将数据包转发到下一跳失败,也会指示链接失败。一旦无法到达下一跳,中断的上游节点将传播一个具有新序列号(即,一个大于先前已知序列号1的序列号),并对所有活动的上游邻居跳转计数为1。这些节点随后将该消息转发给它们的活动邻居,以此类推。
2.4 Local Connectivity Management
节点通过两种方式之一来了解它们的邻居。每当节点接收到来自邻居的广播时,它都会更新其本地连接信息,以确保它包含这个邻居。如果节点在hello时间间隔内没有向其所有活动下游邻居发送任何数据包,则它将向其邻居广播一条Hello消息。Hello消息帧就是TTL=1时的REEP帧,Hello消息帧用于检测活跃路径上相邻节点的链接状况。只有当某节点位于某活跃路径之上时,他才能发送Hello消息帧。活跃路径节点以HELLO_INTERVAL为周期发送Hello消息。在DELETE_PERIOD的时间内没有收到来自邻居节点的Hello消息,则认为该链路失效;发起一次指向该邻居节点的局部修复,路由修复超时以后,路有错误信息RERR向源节点和目的节点发送,RERR在传播过程中,各中间节点删除该失效路径上相应的路由信息。
AODV路由协议大体就是这样,在移动自组网中,通过广播和回应的方式确定路径,同时能够确保节点移动或者消失的时候能够重新选择路径,更新路由表。