开放式最短路径优先OSPF(Open Shortest Path First)协议是IETF定义的一种基于链路状态的内部网关路由协议。
RIP是一种基于距离矢量算法的路由协议,存在着收敛慢、易产生路由环路、可扩展性差等问题,目前已逐渐被OSPF取代。
OSPF概述
- 大中型网络使用最广泛的IGP协议
 - 链路状态路由协议
 - 无类别路由
 - 使用组播(224.0.0.5和224.0.0.6)
 - 收敛快
 - 已开销(cost)作为度量值
 - 采用SPF算法可以有效的避免环路
 - 触发式更新(以较低频率(每30分钟)定期发送更新,被称为链路状态泛洪)
 - 设置区域更新概率使得OSPF能够支持更大规模的网络(划分骨干区域、非骨干区域和特殊区域)
 - 通过LSA(链路状态信息)的形式发布路由
 - 支持手动汇总(在ABR和ASBR上配置)
 
OSPF区域
区域概述
| 术语 | 备注 | 
|---|---|
| 区域(Area) | 为了适应大型网络,OSPF在AS内划分多个区域。区域是以接口划分。每个OSP路由器只维护所在区域的完整链路状态信息 | 
| 区域ID(Area-ID) | 可以表示成一个十进制的数字,如:1,也可以表示为一个IP,如:1.1.1.1 | 
| 区域优点 | 尽量减少LSDB大小,拓扑变化仅影响本区域内部 | 
区域类型
划分多区域的作用,是为了减轻运行OSPF路由器的压力。
防环机制:划分了骨干区域和非骨干区域,所有非骨干区域通讯必须经过骨干区域中转,骨干区域传来的LSA不会再传回骨干区域。非骨干区域之间通信需要骨干区域转发。
| 类型 | 备注 | 
|---|---|
| 骨干区域 | area-0,骨干区域,也称为传输区域 | 
| 非骨干区域 | 非area-0,非骨干区域,称为末端区域 | 
OSPF路由器角色
| 角色 | 备注 | 
|---|---|
| IR | internal router (内部路由器):所有接口都属于同一个区域 | 
| BR | backbone router(骨干路由器):至少有一个接口属于骨干区域 | 
| ABR | Area border router(区域边界路由):连接多个不同的区域,至少有一个接口属于骨干区域 | 
| ASBR | Autonomous System Border(自制系统边界路由器):将其他路由协议学习到的路由以引入的方式到OSPF进程中 | 
OSPF核心工作流程
- 发现并建立邻居
 - 传播LSA(区别基于DV算法的路由更新)【LSA内容:链路状态宣告,路由器接口,描述接口信息】
 - 将LSA泛洪到区域中的所有OSPF路由器
 - 收集LSA创建LSDB(链路状态数据库)
 - 使用SPF算法计算到达每个目标网络的最短路径,存放于路由表
 
OSPF三张表
| 类型 | 含义 | 
|---|---|
| 邻居表 | 记录所有邻居关系 | 
| 链路状态数据库 | 记录所有链路状态信息 | 
| 路由表 | 记录最佳路由 | 
Router ID
- 运行OSPF协议前,必须选取的一个RID
 - 用来唯一标识一台OSPF路由器
 - RID可以手动配置,也可以自动生成
 - RID选取规则顺序:1. 优先手动配置(推荐);2. 活动回环接口中IP地址最高的;3. 活动物理接口中IP地址最高的
 - 任何选举值都未配置是运行不了OSPF的(router id为0.0.0.0)
 - RID选举具有非抢占性,修改除非重启OSPF进程(R1> reset ospf process)
 
OSPF数据包类型
OSPF数据包封装在IP协议之上,IP协议号89(ICMP 1, TCP 6, UDP 17)
| OSPF数据包 | 作用 | 
|---|---|
| Hello | 建立并维护邻居关系 | 
| Database Description(DD) | LSDB的摘要信息(仅包含LSA头部信息) | 
| Links State Request(LSR) | 请求LSA | 
| Links State Update(LSU) | 发送LSA(完整的LSA信息) | 
| Link State Acknowledge (LSA) | 对LSU的确认 | 
OSPF状态机制
只有2-Way和Full是稳定状态
| 状态 | 备注 | 
|---|---|
| 失效状态(Down) | 没有收到Hello 包 | 
| 初始状态(Init) | 收到了Hello 包,但是邻居列表不存在自己 | 
| 双向通信状态 (2-Way) | 收到了Hello包,且在邻居列表里看到了自己,形成邻居关系 | 
| 交换初始状态 (Exstart) | 决定交换信息时的路由器主从关系 | 
| 交互状态 (Exchange) | 向邻居发送DD数据包 | 
| 加载状态(Loading) | LSR和LSU交换 | 
| 完全邻接状态 (Full) | LSDB同步完成,形成邻接关系 | 
OSPF工作流程(数据包和状态切换过程)


OSPF第一阶段是使用Hello包建立双向通信的过程,称为邻居关系

Exstart:序列号x,I=1表示是第一个发送的DD包,M=1表示后面还有DD包,MS=1表示我是主(初始都是主),通过比较Router ID值大的一方为主,向主发送的DD报文中序列号会变成主的序列号,同时这才是真正的DD报文

OSPF第二阶段是通过交换LSA达到LSDB同步,建立邻接关系
OSPF邻居建立条件(必须三层直连)
Hello报文用来发现和维持OSPF邻居关系
- RID唯一
 - Hello/Dead时间间隔一致(默认Dead时间是Hello时间的4倍) 【 [R1-GigabitEthernet0/0/0] ospf timer hello 5】
 - 区域ID一致
 - 认证(如果启用了认证)一致
 - 链路MTU大小一致(华为默认不开启检查,思科默认开启)
 - 子网掩码一致(以太网环境)
 - 网络地址一致
 - 末梢区域设置一致(Option)
 
OSPF网路类型:基于接口
缺省情况下,OSPF认为以太网的网络类型是广播类型,PPP、HDLC的网络类型是点对点类型。
DR和BDR
只要是多路访问BMA和NBMA网络中,为了减少邻接关系的数量,从而减少数据包交换次数,最终节省带宽,降低对路由器处理能力的压力,选举DR和BDR
| 术语 | 备注 | 
|---|---|
| DR | Designed Router,指定路由器,类似班长、总经理 | 
| BDR | Backup DR,备用DR,类似副班长、副总经理 | 
| DRothers | 类似普通学生、普通员工 | 
| 关系 | DR、BDR、DRothers之间都保持邻接关系(Full),DRothers之间保持邻居关系(2-Way) | 
| 地址 | 224.0.0.6向DR和BDR发送链路状态更新 224.0.0.5向所有OSPF路由器发送  | 
| 选举规则 | 首先比较Hello报文中鞋带的优先级 1. 优先级范围0-255,默认=1 2. 优先级最高的被选举为DR,优先级次高的被选举为BDR 3. 优先级为0的不参与选举 优先级一致的情况下,比较RID,越大越优先。选举具有非抢占性,除非当DR和BDR都失效或重启OSPF进程  | 
OSPF度量值:Cost,开销
在每一个运行OSPF的接口上,都维护这一个接口Cost
Cost=10^8/BW(bps)=100Mbps/BW=接口带宽参考值/接口带宽
到一个目标网络的度量值=
从源到目标所有出站接口的Cost值累加(数据方向)
从源到本路由器沿途所有入站接口的Cost值累加(路由方向)
OSPF 配置
| 命令 | 备注 | 
|---|---|
| ospf 1 router-id 1.1.1.1 | 开启OSPF,进程号缺省值为1,手动配置Router ID | 
| area 0/0.0.0.0 | 配置区域 | 
| network 192.168.0.0 0.0.0.255 | 宣告网络,即指定运行OSPF的接口;使用反掩码来匹配(255.255.255.255-掩码) | 
| display ospf peer brief | 显示OSPF邻居信息 | 
| ospf timer hello 10 | 修改Hello包发送间隔 | 
| ospf timer dead 40 | 修改Hello包超时时间 | 
| display ospf interface g0/0/0 | 显示OSPF接口信息 | 
| ospf dr-priority 100 | 修改OSPF接口优先级 | 
| ospf cost 10 | 修改开销,范围1-65535,缺省为1 | 
| bandwidth-reference 100 | 调整带宽参考值,默认为100Mbps,需要在整个OSPF网络中统一进行调整 | 
| reset ospf process | 重启OSPF进程 | 
| default-route-advertise always | OSPF发布缺省路由(没有缺省路由,必须要有always参数) | 
| display ospf lsdb | 查看ospf链路状态数据库信息 | 
OSPF认证命令
如果同时配置认证,接口认证优先生效。
| 命令 | 备注 | 
|---|---|
| int g0/0/0 ospf authentication-mode md5 1 cipher 111.com  | 配置接口认证 | 
| ospf 1 area 0 authentication-mode md5 1 cipher 111.com  | 配置区域认证 | 

1  | # AR1  | 


