一,OSPF的定义
  OSPF(open shortest path First)是为IETF OSPF工作组开发的一种基于链路状态的内部网关路由协议,同时也是专为IP开发的路由协议。她直接运行在IP层,协议号为89,采用组播方式进行OSPF包交换,组播地址为224.0.0.5(全部OSPF路由器)和224.0.0.6(指定路由器)。
OSPF(Open Shortest Path First)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。与RIP相对,OSPF是链路状态路由协议,而RIP是距离向量路由协议。
  链路是路由器接口的另一种说法,因此OSPF也称为接口状态路由协议。OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF路由器使用这些最短路径构造路由表。
  开放最短路径协议(OSPF)协议不仅能计算两个网络结点之间的最短路径,而且能计算通信费用。可根据网络用户的要求来平衡费用和性能,以选择相应的路由。在一个自治系统内可划分出若干个区域,每个区域根据自己的拓扑结构计算最短路径,这减少了OSPF路由实现的工作量;OSPF属动态的自适应协议,对于网络的拓扑结构变化可以迅速地做出反应,进行相应调整,提供短的收敛期,使路由表尽快稳定化。每个路由器都维护一个相同的、完整的全网链路状态数据库。这个数据库很庞大,寻径时, 该路由器以自己为根,构造最短路径树,然后再根据最短路径构造路由表。路由器彼此交换,并保存整个网络的链路信息,从而掌握全网的拓扑结构,并独立计算路由。
优先开放最短路径(OSPF)是一种链路状态路由选择算法,它来自开放式系统互联(OSI)的中间系统对中间系统(IS-IS)域内路由选择协议方面的工作。与距离向量路由选择相比,链路状态路由选择需要的更多处理性能,但是却提供了对路由选择过程的更多控制和对改变情况更快的反应。根据下面的数据,采用Dijkstra算法来计算路由:
1、分组为了达到目的地而必须经过的路由器数目。这个数目通常被称为步数(hops),在大多数情况下,步数越少越好。
2、LAN间传输线路的速度。有一些路由可能会使用慢速的异步连接,而其它一些路由可能使用高速的数字连接。
3、由于传输拥挤而产生的延迟。可变长度帧可以保持住路由器上的通信量。一个路由器可能为了避免拥挤而将分组沿另外一条路由发送出去。
4、路由的费用。这是由管理人员定义的一个指标,通常它是依赖于传输介质的。便宜的介质可能不是太快,但是却对一些类型的通信传输非常合适。
OSPF路由选择表只有在需要时,才进行修改,而不是每隔固定间隔就发生一次。这十分明显地减少了通信量,并且节省了网络带宽。穿越网络的路径是基于上面列出的原则来选择的。一个网管人员可以根据通信的类型来规划穿越网络的路径。例如,如果线路具有较高的传输率,那么用较多步数来穿越网络可能是比较合适的。相应地,如果线路是低速的,并且是低费用的,就可能在规划时较少考虑通信量。
二,OSPF的作用
OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。与RIP相对,OSPF是链路状态路由协议,而RIP是距离向量路由协议。
OSPF起源
I E T F—为了满足建造越来越大基于I P网络的需要,形成了一个工作组,专门用于开发
开放式的、链路-状态路由协议,以便用在大型、异构的I P网络中。新的路由协议以已经取得
一些成功的一系列私人的、和生产商相关的、最短路径优先( S P F )路由协议为基础, S P F在市
场上广泛使用。包括O S P F在内,所有的S P F路由协议基于一个数学算法—D i j k s t r a算法。这
个算法能使路由选择基于链路-状态,而不是距离向量。
O S P F由I E T F在2 0世纪8 0年代末期开发,O S P F是S P F类路由协议中的开放式版本。最初的
O S P F规范体现在RFC 11 3 1中。这个第1版( O S P F版本1 )很快被进行了重大改进的版本所代替,
这个新版本体现在RFC 1247文档中。RFC 1247 OSPF称为O S P F版本2是为了明确指出其在稳
定性和功能性方面的实质性改进。这个O S P F版本有许多更新文档,每一个更新都是对开放标
准的精心改进。接下来的一些规范出现在RFC 1583、2 1 7 8和2 3 2 8中。
O S P F版本2的最新版体现在RFC 2328中。最新版只会和由RFC 2138、1 5 8 3和1 2 4 7所规范
的版本进行互操作。 
链路是路由器接口的另一种说法,因此OSPF也称为接口状态路由协议。OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF路由器使用这些最短路径构造路由表。
OSPF路由协议是一种典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内。在这里,路由域是指一个自治系统(Autonomous System),即AS,它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。在这个AS中,所有的OSPF路由器都维护一个相同的描述这个AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的。 
作为一种链路状态的路由协议,OSPF将链路状态广播数据包LSA(Link State Advertisement)传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器。
OSPF包头
0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |   version     |     type      |         packet length         |
     +---------------+---------------+-------------------------------+
     |                          router ID                            |
     +---------------------------------------------------------------+
     |                           area ID                             |
     +-------------------------------+-------------------------------+
     |           checksum            |      authentication type      |
     +-------------------------------+-------------------------------+
     |                       authentication                          |
     +---------------------------------------------------------------+
     |                       authentication                          |
     +---------------------------------------------------------------+ 
三,OSPF的配置
1.default redistribute cost
配置引入外部路由时缺省的花费值,no default redistribute cost命令取消配置。
default redistribute cost cost
no default redistribute cost
【参数说明】 cost为花费值,范围1~65535之间的整数。
【命令模式】 OSPF协议配置模式
【使用指南】
在OSPF将路由器上其它路由协议发现的路由引入作为自己的自治系统外部路由信息时,还需要一些额外的参数,包括:路由的缺省花费和缺省的标记等。
【举例】 配置OSPF引入外部路由时缺省的花费值为10。
Quidway(config-router-ospf)#default redistribute cost 10
【相关命令】
default redistribute tag
default redistribute type
2. default redistribute interv

配置OSPF引入外部路由的时间间隔,no default redistribute interval命令恢复缺省值。
default redistribute interval time
no default redistribute interval
【参数说明】 time为引入外部路由的时间间隔,以秒为单位,范围1~65535之间的整数。
【缺省情况】 OSPF引入外部路由的时间间隔缺省为1秒。
【命令模式】 OSPF协议配置模式
【使用指南】
由于OSPF总是要不停的引入外部的路由信息并将它们传播到整个自治系统中去,因此,有必要规定协议引入外部路由的时间间隔。
【举例】
指定OSPF引入外部路由的时间间隔为2秒。
Quidway(config-router-ospf)#default redistribute interval 2
【相关命令】 default istribute limit
3. default redistribute limit
配置OSPF可引入路由数量的上限,no default redistribute limit命令恢复缺省值。
default redistribute limit routes
no default redistribute limit
【参数说明】 routes为引入路由数量的上限值,范围1~65535之间的整数。
【缺省情况】 OSPF引入外部路由数量的上限缺省为150。
【命令模式】 OSPF协议配置模式
【使用指南】
由于OSPF总是要不停的引入外部的路由信息并将它们传播到整个自治系统中去,因此,有必要规定在一次传播中外部路由信息的最大条数。
【举例】 指定OSPF引入外部路由数量的上限为200。
Quidway(config-router-ospf)#default redistribute limit 200
【相关命令】
default redistribute interval
4. default redistribute tag
配置引入外部路由时缺省的标记值,no default redistribute tag命令取消该配置。
default redistribute tag [ as ] tag
no default redistribute tag
【参数说明】as表示为自治系统标号。 tag为标记值。
【命令模式】 OSPF协议配置模式
【使用指南】
在OSPF将路由器上其它路由协议发现的路由引入作为自己的自治系统外部路由信息时,还需要一些额外的参数,包括:路由的缺省花费和缺省的标记等。 路由标记可以用来标识协议相关的信息,如OSPF引入EGP/BGP协议时用来区分自治系统的编号。
【举例】
设置OSPF引入自治系统外部路由的缺省标记为10。
Quidway(config-router-ospf)#default redistribute tag 10
【相关命令】
default redistribute cost
default redistribute type
5. default redistribute type
配置引入外部路由时缺省的类型,no default distribute type命令恢复缺省值。
default redistribute type { 1 | 2 }
no default redistribute type
【参数说明】1 和 2 分别表示第一类外部路由和第二类外部路由。
【缺省情况】没有配置引入外部路由时缺省类型时,默认为第二类外部路由。
【命令模式】 OSPF协议配置模式
【使用指南】
OSPF在协议中规定了两类外部路由信息的花费选择方式,可以用本节所述命令规定缺省的花费类型。
【举例】
指定OSPF引入外部路由时缺省类型为第一类路由。
Quidway(config-router-ospf)#default redistribute type 1
【相关命令】
default redistribute cost
default redistribute tag
11 ipospfhello-interval
指定在接口上发送Hello报文的时间间隔,noipospfhello-interval恢复为缺省值。
ipospfhello-intervaltime  noipospfhello-interval
【参数说明】 time为发送HELLO报文的时间间隔,单位为秒,范围1~255。
【缺省情况】接口上缺省发送HELLO报文的间隔时间为10秒。
【命令模式】 接口配置模式
【使用指南】  hello-interval的值将写入HELLO报文中,并随HELLO报文传送。hello-interval的值越小,则网络拓扑结构的变化将被越快的发现,但将花费更多的路由开销。必须保证和该接口相邻的路由器之间的hello-interval参数一致。
【举例】  配置接口Serial0发送HELLO报文的间隔时间为20秒。
Quidway(config-if-Serial0)#ipospfhello-interval20
【相关命令】  ipospfdead-interval
12.ipospfnetwork-type
设置接口的网络类型。noipospfnetwork-type取消设置。
[no]ipospfnetwork-type{nonbroadcast|point_to_multipoint}
【参数说明】nonbroadcast设置接口的网络类型为非广播NBMA类型。
point_to_multipoint设置接口的网络类型为点到多点。
【命令模式】接口配置模式
【使用指南】 在没有多址访问能力的广播网上,应该将接口配置成NBMA方式。当一个NBMA网络中,不能保证任意两台路由器之间都是直接可达的话,应将网络设置为点到多点的方式。
【举例】 配置接口Serial0为非广播NBMA类型。
Quidway(config-if-Serial0)#ipospfnetwork-typenonbroadcast
13.ipospfneighbor
ipospfpollinterval
在NBMA和点到多点接口上配置发送轮询HELLO报文的时间间隔,noipospfpollinterval命令恢复为缺省值。
ipospfpollintervaltime
noipospfpollinterval
【参数说明】 time为发送轮询HELLO报文的时间间隔,以秒为单位,合法的范围是0~65535。
【缺省情况】接口缺省发送轮询HELLO报文的时间间隔为120秒。
【命令模式】接口配置模式
【使用指南】  在NBMA和点到多点网络中,当一台路由器的邻居一直没有响应时(时间间隔超过了dead-interval),仍然有必要继续发送HELLO报文,但发送的频率要降低为以pollinterval的频率发送。所以pollinterval要远大于hello-interval的值,至少为两分钟(120秒)。
通过配置轮询间隔以指定该接口在与相邻路由器构成邻接关系之前发送轮询HELLO报文的时间周期。
【举例】在接口Serial0上配置发送轮询HELLO报文的时间间隔为130秒。
Quidway(config-if-Serial0)#ipospfpollinterval130
14.ipospfpriority
配置接口在选举“选举路由器”时的优先级,noipospfpriority恢复为缺省值。
ipospfprioritypriority
noipospfpriority
【参数说明】priority为优先级,合法的范围是0~255。
【缺省情况】接口在选举路由器时缺省的优先级为1。
【命令模式】接口配置模式
【使用指南】当连在同一网段的两台路由器都想成为“选举路由器”时,选择优先级高的;如果优先级相等,则选路由器ID号大的。当一台路由器的priority为0时,这台路由器将不会被选举为“选举路由器”或“备份选举路由器”。只有在非点到点网络上配置priority才会生效。
【举例】设置接口Serial0在选举路由器时的优先级为8。
Quidway(config-if-Serial0)#ipospfpriority8
【相关命令】 ipospfneighbor
15.ipospfretransmit
指定接口与邻接路由器之间传送链路状态广播时的重传间隔,noipospfretransmit命令恢复缺省值。
ipospfretransmittime
noipospfretransmit
【参数说明】time为与邻接路由器之间传送链路状态广播时的重传间隔,以秒为单位,范围是1~65535。
【缺省情况】与邻接路由器之间传送链路状态广播时的重传间隔缺省为5秒。
【命令模式】接口配置模式
【使用指南】当一台路由器向它的邻居传送链路状态广播时,它将保持链路状态广播直至收到对方的确认。如果在time时间内没有收到确认,则进行重传。time值必须大于两台路由器传送报文一个来回的时间。
【举例】配置接口Serial0与邻接路由器之间传送链路状态广播时的重传间隔为8秒。
Quidway(config-if-Serial0)#ipospfretransmit8
21.routerid
配置运行OSPF协议路由器的ID号。norouterid命令取消路由器的ID号。
routeridrouter_id
[no]routerid
【参数说明】router_id为路由器ID号,点分十进制格式。
【缺省情况】系统缺省为不配置路由器ID号,运行时从各接口的IP地址中选一个作为路由器ID号。
【命令模式】全局配置模式
【使用指南】OSPF协议运行过程中需要路由器的ID号,作为本路由器在自治系统中的唯一标识。如果路由器所有接口上都没有配置IP地址时,必须用本命令指定路由器的ID号,否则OSPF协议无法运行。路由器ID号的变化在OSPF重启后才起作用。
【举例】配置路由器ID号为10.1.1.3。
Quidway(config)#routerid10.1.1.3
【相关命令】routerospfenable
22.showipospf
显示OSPF主要信息  showipospf
【命令模式】特权用户模式
【使用指南】根据该命令输出信息,可以帮助用户进行OSPF故障诊断。
【举例】Quidway(config)#showipospf
路由器ID:1.1.1.1边界路由器:区域
路由选择优先级:区域内/间:10外部:150
缺省的ASE参数:开销:1标记:0Path:(0)0EGP类型:2
SPF计算次数:9
区域0.0.0.0:
验证类型:无标志:$#@60;$#@62;
最小树计算时序:$#@60;$#@62;
AS边界路由:
Area边界路由:
1.1.1.1区域0.0.0.0开销0生成路由器1.1.1.1
区域0.0.0.1:
验证类型:无标志:$#@60;$#@62;
最小树计算时序:$#@60;$#@62;
AS边界路由:
Area边界路由:
1.1.1.1区域0.0.0.1开销0生成路由器1.1.1.1
AS边界路由:
Area边界路由:
1.1.1.1区域0.0.0.2开销0生成路由器1.1.1.1
23.showipospfase
显示OSPF外部路由信息  showipospfase
【命令模式】特权用户模式
【使用指南】根据该命令输出信息,可以查看OSPF引入外部路由情况。
【举例】 QuidWay(config)#showipospfase
目的地址生成路由器下一跳地址时间长度序列号类型花费
100.1.1.11.1.1.11.1.1.1125368000000114
24.showipospfcumulative
显示OSPF统计信息   showipospfcumulative
【命令模式】特权用户模式
【使用指南】根据该命令的输出信息,可以帮助用户进行OSPF故障诊断。
【举例】Quidway(config)#showipospfcumulative
IO统计
类型输入输出
Hello806884
DBDescription01593
Link-StateReq00
Link-StateUpdate00
Link-StateAck00
ASE个数:0校验和:0
生成LSA个数:42收到LSA个数:0Router:25SumNet:17
区域0.0.0.0:
邻接路由器个数:0接口个数:0
Spf计算次数:3所有LSA校验和EEE8
LSA个数:rtr:1net:0sumasb:0sumnet:1
区域0.0.0.1:
邻接路由器个数:0接口个数:0
Spf计算次数:2所有LSA校验和F8E3
LSA个数:rtr:1net:0sumasb:0sumnet:1
路由表:
区域内:0区域间:1外部:0
四,修改OSPF 管辖距离
管辖距离是路由选择信息源,比如,一个单个路由器或一组路由器的可信率。用数字表示,管辖距离是0~255之间的一个整数。一般来讲,值越大,可信率越低。管辖距离为255 就意味着路由选择信息源根本不可靠,并应被忽略。
OSPF 使用三种不同的管辖距离:域内、域间和外部的。在一个区域内部的路由是域内的;到另一个区域的路由是域间的;而来自于另一个通过重分配而获得的路由选择域的路由被称为外部的。每种类型路由的缺省距离都是110。
要修改任一OSPF 距离值,都应在路由器配置方式下执行下列命令:
命令 作用
distance ospf {[intra-area dist1][inter-area dist2] [external dist3]} 修改OSPF 距离值。