ospf是一项链路状态型技术,比如路由选择信息协议(rip)这样的距离矢量型技术相对。ospf协议完成各路由选择协议算法的两大功能:路径选择和路径交换。
ospf是一种内部网关协议(igp),也就是说它在属于同一自治系统的路由器间发布路由信息。
ospf是为解决rip不能解决的大型、可扩展的网络需求而写的ospf解决了以下问题:
1 收敛速率
2 对可变长度掩码(vlsm)的支持
3 ospf、ripv2支持vlsm,rip只支持固定长度子网掩码(flsm)
4 网络可达性
5 rip跨度达16跳时被认为是不可达,ospf理论上没有可达性限制
6 带宽占用
7 rip每隔30秒广播一次完整路由,ospf只有链路发生变化才更新
8 路径选择方法
9 rip是基于跳数选择最佳路径的,ospf采用一种路径成本cost值(对于CISCO路由器它基于连接速率)作为路径选择的依据。
10 ospf与rip、igrp一样直持等开销路径
11 ospf信息在ip数据包内,使用协议号89 ospf可以运行在广播型网络或非广播型网络上,在广播型多路访问拓朴结构中的ospf运行hello协议负责建立和维护邻居关系,通过ip多目组广播224.0.0.5,也被称为 allspfrouter ,(所有spf路由器)地址,hello数据包被定期地从参与ospf的各个接口发送出去)。
hello数据包中所包含的信息如下:
路由器id
这个32比特的数字在一个自治系统内唯一的标识一个路由器。它缺省是选用活跃接口上的最高ip地址。这个标识在建立邻居关系和直辖市运行在网络中spf算法拷贝的消息时是很重要的。
hello间隔和down机判断间隔(dead interval)
hello间隔规定了路由发送hello的时间间隔(秒)。down机判定间隔是路由器在认为相邻路由器失效之前等待接收来自邻居消息的时间,单位为秒,缺省是hello间隔的4倍。
邻居
这些是已经建立了双向通信关系的相邻路由器
区域id
要能进行通信,两台路由器必须共享一个共同的网络分段
路由器优先级
这8个比特数字指明了在选择dr和bdr时这台路由器的优先级。
dr和bdr的ip地址
认证口令
未节(stb)区域标志
指定路由器dr和备用指定路由器bdr
在一个以太网分段这样的多路访问环境中的路由器必须选举一个dr和bdr来代表这个网络。在dr运行时,bdr不执行任何dr功能。但它会接收所有信息,只是不做处理而已,由dr完成转发和同步的任务。bdr只有当dr失效时才承担dr的工作,。
dr和bdr的价值:
减少路由更新数据流
dr和bdr为给定多路访问网络上的链路状态信息交换起着中心点的作用。每台路由器都有必须建立与dr和bdr的毗邻关系,dr向多路访问网中的所有其它路由器发送各路由的链路状态信息。这一扩散过程大大减少了网络分段上与路由器相关的数据流。
管理链路状态同步:
dr和bdr可保证网络上的其它路由器都有有关于网络的相同链路状态信息
毗邻关系是存在于路由器与其dr和bdr之间的关系。毗邻的路由器将具有同步的链路状态数据库
选举dr和bdr时,路由器将在hello数据包交换过程中查看相互之间的优先值。
根据下列条件确定dr与bdr
有最高优先级值的路由器成为dr
有第二高优先值的路由器被称为bdr
优先级为0的路由器不能作茧自缚为dr或bdr,被称为drother (非dr)
如果一台优先级更高的路由器被加到了网络中,原来的dr与bdr保持不变,只有dr或bdr它们失效时才会改变
ospf启动的过程:
1.交换过程(exchange process)
当一个路由器a启动时,它处于down状态,它从其各个接口通过224.0.0.5发送hello数据包到其它运行ospf的路由器,其它路由器收到这个hello包后就会把它加入自己的邻居列表中,这叫"init"状态,之后发送一个单点传送回复hello包,其中包含着自己的和其它相邻路由器的信息,路由器a收到这个hello后,会把其中有相邻关系数据库加入到自己的库中这叫"two-way"状态,此时就建立了双向通信。
2.发现路由
在选出了dr和bdr之后,路由器就被认为是处于"准启动(exstart)状态",并且已准备好发现有关网络的链路状态信息,以及生成它们的链路状态数据库。用来发现网络路由的这个过程称为交换协议,它被执行来使用权路由器达到通信的全full状态。在这个协议中的第一步是让dr和bdr建立起与其它各路由器的毗邻关系。当毗邻的路由器处于"全"状态时,它们不会重复执行交换协议,除非" 全"状态发生了变化。
3.选择路由
当路由器有了一个完整的链路状态数据库时,它就准备好要创建它的路由表以便能够转发数据流。cisco路由器上缺省的开销度量是基于网络介质的带宽。要计算到达目的地的最低开销,链路状态型路由选择协议(比如ospf)采用 dijkstra算法,ospf路由表中最多保存6条等开销路由条目以进行负载均衡,可以通过"maximum-paths"进行配置。
如果链路上出现fapping翻转,就会使路由器不停的计算一个新的路由表,就可能导致路由器不能收敛。路由器要重新计算客观存它的路由表之前先等一段落时间,缺省值为5秒。在cisco配置命令中 "timers spf spf-delayspy-holdtime"可以对两次连续spf计算之间的最短时间(缺省值10秒)进配置。
4.维护路由信息
在链路状态型路由环境中,所有路由器的拓朴结构数据库必须保持同步这一点很重要。当链路状态发生了变化时,路由器通过扩散过程将这一变化通知给网络中其他路由器,链路状态更新数据包提供了扩散lsa的技术
各lsa都有有它自己的老化计时器,承载在ls寿命域内。缺省值为30分钟
在点对点拓朴结构中的ospf运行
在点对点网络上,路由器通过向多目组播地址来检测它的邻居。不用进行选取举,因为点对点上没有dr与bdr的概念,在nbma拓朴结构上缺省o spf
hello间隔和down机间隔为10秒和40秒
在非广播型多路访问(nbma)拓朴结构中的ospf运行nbma网络是指那些能够支持多台(两台以上)路由器但不具有广播能力的网络。
帧中继、atm和x.25都是nbma网络的例子
在nbma拓朴结构上缺省ospf hello间隔和down机间隔为30秒和120秒
下表是在各类拓朴结构上缺省ospf hello间隔和down机间隔
ospf环境 hello间隔 down机判定间隔
广播 10秒 40秒
点对点 10秒 40秒
nbma 30秒 120秒
ospf在nbma拓朴结构中以两种正式模式之一运作:
1:非广播多路访问
2:点对多点
在nbma拓朴结构中配置路由器时,通常采用子接口
可以通过下面的命令来创建子接口:
iterface serial number.subinterface-number {multpiont | point-to-point}
在大型网络中,采用点对多点模式可以减少完全连通所必需的pvc数量
点对多点有以下属性
不需要全互连的网络
不需要静态邻居配置
使用一个ip子网
复制lsa数据包
在nbma拓朴结构上的ospf小结
模式期望的拓朴结构子网地址毗邻关系rfc或cisco定义nbma全互连邻居必须属于同一子网号人工配置选举dr/bdrrfc ,广播全互连邻居必须属于同一子网号自动选举dr/bdrcisco ,点对多点部分互边或星型邻居必须属于同一子网号自动,没有dr/bdrrfc ,点对多点非广播部分互边或星型邻居必须属于同一子网号手工配置没有dr/bdrcisco ,点对点通过子接口的部分互连或星型各子接口属于不同的子网自动没有dr/bdr.