DSR协议是最早采用按需路由思想的路由协议[ 6] 。它包括路由发现和维护两个过程。当节点S 向节点D 发送数据时, 它首先检查缓存中是否存在到目的节点D 的有效路由。如果存在, 则直接使用, 否则启动路由建立过程。具体过程如下: 源节点S 将使用洪泛法发送路
由请求分组RREQ, 分组中包含源节点地址、目的节点地址、唯一的标志号以及中间节点列表; 中间节点转发RREQ, 并附上自己的节点标识; 当RREQ消息到达目的节点D 或任何一个缓存有到目的节点路由的中间节点时, 节点D 或该中间节点将向S
发送路由消息RREP, 该消息中将包含节点S 到D
月食全过程
的路由信息, 同时反转节点S 到D 的路由供RREP
消息使用; 节点S 收到RREP 后, 路由建立过程结
束, 通信可以开始。以上为路由发现过程。当网络
拓扑结构发生变化时, 通过路由维护过程删除失效
路由, 重新发起路由请求过程。路由维护通常依靠
底层提供的链路失效检测机制进行触发。
DSR 协议的特点是中间节点不用维护去往全
网所有节点的路由信息, 而且可以避免出现路由
环路[ 。
AODV 协议
AODV协议是在DSDV 协议基础上结合类似DSR 中的按需路由机制
进行改进后提出的, 它采用了DSDV 中的序列号概
念和DSR 中的路由发现及路由维护过程[ 。不同
之处在于AODV 采用了逐跳转发分组方式, 而
DSR 是源路由方式。
AODV 路由发现过程由节点发起, 即当一个节
点需要给网络中另外一个节点传送信息时, 首先以
广播的形式发出路由请求分组RREQ, 其中记录着
发出的源节点和目的节点的地址, 邻近节点收到
RREQ, 首先判断其中的目的节点是否就是自己, 如
果不是再在记录中查找是否有到目的节点的路由。
如果满足上边的任何一条就发出RREP 给源节点。
如果不能满足就继续以广播的形式转发RREQ 继
续查找。对于每一条路由都对应着一个序列号,
当路由更新时, 序列号也随着更新。AODV 协议的人来人往吉他谱
路由维护是通过定期的广播hello报文来实现的。
一旦发现某一个连接断开, 节点就发送路由错误消
息RRER 报文通知那些因连接断开而不可达的节
点删除相应的路由记录。即如果某发起路由请
ZRP协议结合了Ad Hoc按表驱动路由协议和按需驱动路由协议的优点
属于混合性路由协议。使用
ZRP协议网络内的所有节点都以自身为中心以一定
的半径建立虚拟区, 区内的节点数与设定的区半径
有关。在区内使用按表驱动路由算法, 中心节点使
用区内路由协议IARP维持一个到区内其他成员的
路由表; 对区外节点的路由使用按需路由算法, 利用区间路由协议IERP建立临时的路由。ZRP协议
中还使用了BRP协议, 用于控制发现新节点分组。源路由的使用有效地
避免了环路的出现和转发分组的中间节点路由信息的更新, 在路由出错的时候, 路由表中的相应记录将被删除, 而在发现新路由时, 向路由表添加新的路由发现记录。
在Ad Hoc网络中路由协议的选取要根据本网
络特征来确定。ZRP协议根据不同的网络特征来确定区域半径参数, 进而, ZRP可以提供比单纯使用按表路由协议或按需路由协议更好的路由性能, 例如: 在节点移动速率相对较快的密集型网络中设定ZRP区域半径较小, 在节点移动速率相对较慢速的稀疏型网络中设定ZRP区域半径较大
, 通过合
理的设定半径的大小, 取得区内合理数目的节点, 可以取得相对较好的路由性能。
t ns [new Simulator]
$ns color 0 blue
$ns color 1 red
$ns color 2 white
t n0 [$ns node]
t n1 [$ns node]
基层医院t n2 [$ns node]
t n3 [$ns node]
t f [ w]
$ns trace-all $f
t nf [open out.nam w]
$ns namtrace-all $nf
$ns duplex-link $n0 $n2 5Mb 2ms DropTail $ns duplex-link $n1 $n2 5Mb 2ms DropTail $ns duplex-link $n2 $n3 1.5Mb 10ms DropTail
$ns duplex-link-op $n0 $n2 orient right-up
$ns duplex-link-op $n1 $n2 orient right-down
$ns duplex-link-op $n2 $n3 orient right
$ns duplex-link-op $n2 $n3 queuePos 0.5
t udp0 [new Agent/UDP]
$ns attach-agent $n0 $udp0
t cbr0 [new Application/Traffic/CBR]
$cbr0 attach-agent $udp0
t udp1 [new Agent/UDP]
$ns attach-agent $n3 $udp1
$udp1 t class_ 1
t cbr1 [new Application/Traffic/CBR]
$cbr1 attach-agent $udp1白云英语
t null0 [new Agent/Null]
$ns attach-agent $n3 $null0
t null1 [new Agent/Null]
$ns attach-agent $n1 $null1
$ns connect $udp0 $null0
$ns connect $udp1 $null1
$ns at 1.0 "$cbr0 start"张果老山
$ns at 1.1 "$cbr1 start"
t tcp [new Agent/TCP]
$tcp t class_ 2
t sink [new Agent/TCPSink]
$ns attach-agent $n0 $tcp
$ns attach-agent $n3 $sink
$ns connect $tcp $sink
t ftp [new Application/FTP]
$ftp attach-agent $tcp
刺菜的功效与作用$ns at 1.2 "$ftp start"
$ns at 1.35 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink"
puts [$cbr0 t packetSize_]
puts [$cbr0 t interval_]
$ns at 3.0 "finish"
proc finish {} {
global ns f nf
$ns flush-trace
clo $f
clo $nf
八角游乐园>青山一道同风雨
puts ""
exec ./ out.nam &
exit 0
}
$ns run