标题：OSPF协议
简介
OSPF(Open Shortest Path First)是一个内部网关协议(Interior Gateway Protocol,简称IGP)，用于在单一自治系统(autonomous system,AS)内决策路由。与RIP相对，OSPF是链路状态路由协议，而RIP是距离向量路由协议。
作用
链路是路由器接口的另一种说法，因此OSPF也称为接口状态路由协议。OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库，生成最短路径树，每个OSPF路由器使用这些最短路径构造路由表。
开放最短路径协议(OSPF)协议不仅能计算两个网络结点之间的最短路径，而且能计算通信费用。可根据网络用户的要求来平衡费用和性能，以选择相应的路由。在一个自治系统内可划分出若干个区域，每个区域根据自己的拓扑结构计算最短路径，这减少了OSPF路由实现的工作量；OSPF属动态的自适应协议，对于网络的拓扑结构变化可以迅速地做出反应，进行相应调整，提供短的收敛期，使路由表尽快稳定化。每个路由器都维护一个相同的、完整的全网链路状态数据库。这个数据库很庞大，寻径时， 该路由器以自己为根，构造最短路径树，然后再根据最短路径构造路由表。路由器彼此交换，并保存整个网络的链路信息，从而掌握全网的拓扑结构，并独立计算路由。
更多说明
OSPF路由协议的工作原理为了解决RIP协议的缺陷，1988年RFC成立了OSPF工作组，开始着手于OSPF的研究与制定，并于1998年4月在RFC 2328中OSPF协议第二版（OSPFv2）以标准形式出现。OSPF全称为开放式最短路径优先协议（Open Shortest-Path First），OSPF中的O意味着OSPF标准是对公共开放的，而不是封闭的专有路由方案。OSPF采用链路状态协议算法，每个路由器维护一个相同的链路状态数据库，保存整个AS的拓扑结构（AS不划分情况下）。一旦每个路由器有了完整的链路状态数据库，该路由器就可以自己为根，构造最短路径树，然后再根据最短路径构造路由表。对于大型的网络，为了进一步减少路由协议通信流量，利于管理和计算，OSPF将整个AS划分为若干个区域，区域内的路由器维护一个相同的链路状态数据库，保存该区域的拓扑结构。OSPF路由器相互间交换信息，但交换的信息不是路由，而是链路状态。
OSPF路由协议分组及其作用OSPF定义了5种分组：Hello分组用于建立和维护连接；数据库描述分组初始化路由器的网络拓扑数据库；当发现数据库中的某部分信息已经过时后，路由器发送链路状态请求分组，请求邻站提供更新信息；路由器使用链路状态更新分组来主动扩散自己的链路状态数据库或对链路状态请求分组进行响应；由于OSPF直接运行在IP层，协议本身要提供确认机制，链路状态应答分组是对链路状态更新分组进行确认。
OSPF路由协议的优点相对于其它协议，OSPF有许多优点。 OSPF支持各种不同鉴别机制（如简单口令验证，MD5加密验证等），并且允许各个系统或区域采用互不相同的鉴别机制；提供负载均衡功能，如果计算出到某个目的站有若干条费用相同的路由，OSPF路由器会把通信流量均匀地分配给这几条路由，沿这几条路由把该分组发送出去；在一个自治系统内可划分出若干个区域，每个区域根据自己的拓扑结构计算最短路径，这减少了OSPF路由实现的工作量；OSPF属动态的自适应协议，对于网络的拓扑结构变化可以迅速地做出反应，进行相应调整，提供短的收敛期，使路由表尽快稳定化，并且与其它路由协议相比，OSPF在对网络拓扑变化的处理过程中仅需要最少的通信流量；OSPF提供点到多点接口，支持CIDR（无类型域间路由）地址。
OSPF的不足之处就是协议本身庞大复杂，实现起来较RIP困难。
OSPF协议配置
1．有关命令全局设置
注：1、OSPF[1]路由进程process-id必须指定范围在1-65535，多个OSPF进程可以在同一个路由器上配置，但最好不这样做。多个OSPF进程需要多个OSPF数据库的副本，必须运行多个最短路径算法的副本。process-id只在路由器内部起作用，不同路由器的process-id可以不同。
2、wildcard-mask 是子网掩码的反码, 网络区域ID area-id在0-4294967295内的十进制数，也可以是带有IP地址格式的x.x.x.x。当网络区域ID为0或0.0.0.0时为主干域。不同网络区域的路由器通过主干域学习路由信息。
2．基本配置举例Router1:
interface ethernet 0
ip address 192.1.0.129 255.255.255.192
!
interface serial 0
ip address 192.200.10.5 255.255.255.252
!
router ospf 100
network 192.200.10.4 0.0.0.3 area 0
network 192.1.0.128 0.0.0.63 area 1
!
Router2:
interface ethernet 0
ip address 192.1.0.65 255.255.255.192
!
interface serial 0
ip address 192.200.10.6 255.255.255.252
!
router ospf 200
network 192.200.10.4 0.0.0.3 area 0
network 192.1.0.64 0.0.0.63 area 2
!
Router3:
interface ethernet 0
ip address 192.1.0.130 255.255.255.192
!
router ospf 300
network 192.1.0.128 0.0.0.63 area 1
!
Router4:
interface ethernet 0
ip address 192.1.0.66 255.255.255.192
!
router ospf 400
network 192.1.0.64 0.0.0.63 area 1
!
相关调试命令：
debug ip ospf events
debug ip ospf packet
show ip ospf
show ip ospf database
show ip ospf interface
show ip ospf neighbor
show ip route　
3. 使用身份验证为了安全的原因，我们可以在相同OSPF区域的路由器上启用身份验证的功能，只有经过身份验证的同一区域的路由器才能互相通告路由信息。
在默认情况下OSPF不使用区域验证。通过两种方法可启用身份验证功能，纯文本身份验证和消息摘要(md5)身份验证。纯文本身份验证传送的身份验证口令为纯文本，它会被网络探测器确定，所以不安全，不建议使用。而消息摘要(md5)身份验证在传输身份验证口令前，要对口令进行加密，所以一般建议使用此种方法进行身份验证。
使用身份验证时，区域内所有的路由器接口必须使用相同的身份验证方法。为起用身份验证，必须在路由器接口配置模式下，为区域的每个路由器接口配置口令。　
以下列举两种验证设置的示例，示例的网络分布及地址分配环境与以上基本配置举例相同，只是在Router1和Router2的区域0上使用了身份验证的功能。:
例1.使用纯文本身份验证 
Router1:
interface ethernet 0
ip address 192.1.0.129 255.255.255.192
!
interface serial 0
ip address 192.200.10.5 255.255.255.252
ip ospf authentication-key cisco
!
router ospf 100
network 192.200.10.4 0.0.0.3 area 0
network 192.1.0.128 0.0.0.63 area 1
area 0 authentication
!
Router2:
interface ethernet 0
ip address 192.1.0.65 255.255.255.192
!
interface serial 0
ip address 192.200.10.6 255.255.255.252
ip ospf authentication-key cisco　
!
router ospf 200
network 192.200.10.4 0.0.0.3 area 0
network 192.1.0.64 0.0.0.63 area 2
area 0 authentication
!　
例2.消息摘要(md5)身份验证：　
Router1:
interface ethernet 0
ip address 192.1.0.129 255.255.255.192
!
interface serial 0
ip address 192.200.10.5 255.255.255.252
ip ospf message-digest-key 1 md5 cisco
!
router ospf 100
network 192.200.10.4 0.0.0.3 area 0
network 192.1.0.128 0.0.0.63 area 1
area 0 authentication message-digest
!
Router2:
interface ethernet 0
ip address 192.1.0.65 255.255.255.192
!
interface serial 0
ip address 192.200.10.6 255.255.255.252
ip ospf message-digest-key 1 md5 cisco
!
router ospf 200
network 192.200.10.4 0.0.0.3 area 0
network 192.1.0.64 0.0.0.63 area 2
area 0 authentication message-digest
!
相关调试命令：
debug ip ospf adj
debug ip ospf events