一.基础知识
1. 定义
OSPF(Open Shortest Path First,开放最短路径优先)是一种链路状态协议,无路由循环(全局拓扑),术语IGP。RFC2328,“开放”一位置非私有,对公众开放的
2. 报文封装
OSPF协议包直接封装于IP,协议号89
3. OSPF协议组播地址
所有OSPF路由器:224.0.0.5
DR,BDR:224.0.0.6
4. OSPF协议管理距离
110
5. Router-ID
① 为了提高路由器RID的稳定性和网络的稳定性,建议手动设置路由器的Router-ID
② 在OSPF进程下修改:router-id x.x.x.x
③ 项目实施中,一般是建立loopback口,并且手工指定loopback口地址为router-id
6. DR、BDR
① DR作用:多路访问中为了减少邻接关系(N平方问题)和LSA的泛洪,采用DR机制,BDR提供备份
② MA网路上的所有路由器均与DR、BDR建立邻居
③ 选举规则:
a. 接口优先级数字越大越优先
b. Router ID越大越好
c. 优先级为0的不能称为DR或BDR
注:DR的选举是基于接口的,如果说某个路由器是DR,这种说法是错误的
7. 链路开销
① 自动计算:COST=参考带宽(10的8次方)/ 出口带宽
② 接口带宽为接口逻辑带宽,可以使用bandwidth命令调整,主要用于路由计算,而不是接口物理带宽,但一般情况:接口逻辑带宽=接口物理带宽
③ 手工修改开销
Router(config-if)# ip ospf cost 100 //该命令在接收路由的入口
④ 可修改参考带宽,来保障OSPF在现如今的网络中正常运转
Router(config-if)# auto-cost refernce-bandwidth //参考带宽以Mbits为单位
8. OSPF三张表
① 邻居表
② 链路状态数据库
③ 路由表
二.OSPF报文
1. 报文类型
① Hello
② DBD
③ LSR
④ LSU
⑤ LSAck
LSA头部
具体详见LSA类型
三.OSPF邻居
1. 邻居建立过程
I位代表INIT,置为1表示协商主从报文,不包含LSA
M位代表More,置为1表示后续有更多DBD报文发送,置为0表示最后一个DBD报文
Ms位代表Master,表示为主
① OSPF路由器接口up,发送Hello包(NBMA模式时将进入Attempt状态)
② OSPF路由器收到Hello包,进入INIT状态,并将该Hello包的发送者的Router ID,添加到Hello包(自己将要从该接口发送出去的Hello包)的邻居列表中
③ OSPF路由器接口收到邻居列表中含有自己Router ID的Hello包,进入Two-way状态,形成OSPF邻居关系,并把该路由器的Router ID添加到自己的OSPF邻居表中
④ 在进入Two-way状态后,广播、非广播网络类型的链路,在DR选举等待时间内进行DR选举。点对点没有这个过程
⑤ 在DR选举完成或跳过DR选举后,建立OSPF邻接关系,进入exstart(准启动)状态;并选举DBD交换主从路由器,以及由主路由器定义DBD序列号,Router ID大的为主路由器
⑥ 主从路由器选举完成后,进入Exchange(交换)状态,交换DBD信息
⑦ DBD交换完成后,进入Loading状态,对链路状态数据库和收到的DBD的LSA头部进行比较,发现自己数据库中没有的LSA就发送LSR,向邻居请求该LSA;邻居收到LSR后,回应LSU;收到邻居发来的LSU,存储这些LSA到自己的链路状态数据库,并发送LSAck确认
⑧ LSA交换完成后,进入Full状态,所有行程邻居的OSPF路由器都拥有相同链路状态数据库
⑨ 定期发送Hello包,维护邻居关系
2. 计时器
① Hello Interval
Cisco设备在广播型网络默认10s,非广播网络默认30s,修改Hello时间,Dead时间默认也会随之修改
② Router Dead Interval
多长时间没收到邻居的分组,认为其失效。默认为Hello的4倍时长
③ LSA Refresh Timer
默认每隔30分钟发送链路状态条目摘要,刷新后LSA序列号加1
④ LSAmaxAge
60分钟,该时间内如果没有刷新,则从LSDB删除
⑤ Wait Timer
在选举DR和BDR之前,路由器等待邻居路由器的Hello包通告DR和BDR时长(收集所有候选人信息),等待计时器的时间长度就是Dead时长
⑥ Retransmit
指在没有确认的情况下,路由器重传OSPF数据包将要等待的时间,缺省5s
3. OSPF邻接关系
① LSA(LSU)是可靠的传输,需要LSAck确认
② LSA将被扩散到整个区域
③ LSA有序列号和寿命,以确保时最新的LSA
④ LSA被定期的刷新以确保拓扑信息的有效性
4. 邻居条件
① 两台路由器运行OSPF协议
② 两台路由器直连
③ 在同一自治系统
④ Hello/Dead时间一致
⑤ 区域ID一致
⑥ 认证密码一致
⑦ MTP值一致
⑧ 网络类型一致
⑨ 链路两端接口掩码一致
5. 路由器角色
6. OSPF网络类型
① 点到点
② 广播
③ 非广播(5种)
-
在帧中继主接口上,默认OSPF为非广播
-
在点到点帧中继子接口上,默认的OSPF模式为点到点
-
在帧中继多点子接口上,默认的OSPF模式为非广播
a. NBMA(RFC)
b. P2MP(RFC)
c. P2MP nonbroadcast(CISCO)
d. Broadcast(CISCO)
e. P2P(CISCO)
四.LSA
1. 什么是LSA
2. LSA类型
① 类型1:Router LSA
② 类型2:Network LSA
③ 类型3:Network summary LSA
通过3类LSA学习到的OSPF路由类型为O IA
④ 类型4:ASBR summary LSA
⑤ 类型5:自治系统外LSA
⑥ 类型7:NSSA外部LSA
3. OSPF路由类型
五.OSPF区域类型
1. 特殊区域
① 末梢区域 Stub Area
② 完全末梢区域 Totally Stub Area
③ 非完全末梢区域 Not-So-Stub Area,即NSSA
④ 完全NSSA
2. 不同区域LSA对照表
① 骨干区域:1,2,3,4,5
② 标准区域:1,2,3,4,5
③ Stub区域:1,2,3,3类0.0.0.0/0(ABR向区域内发起的一条3类缺省路由LSA)
④ 完全Stub区域:1,2,3类0.0.0.0/0(ABR向区域内发起的一条3类缺省路由LSA)
⑤ NSSA区域:1,2,3,7
⑥ 完全NSSA区域:1,2,7,3类0.0.0.0/0(ABR向区域内发起的一条3类缺省路由LSA)
3. 特殊区域配置
① 末梢区域 Stub Area
② 完全末梢区域 Totally Stub Area
③ 非完全末梢区域 Not-So-Stub Area,即NSSA
④ 完全NSSA
4. 特殊区域应用
六.OSPF高级功能
1. passive-interface
2. 注入默认路由
① 本地需要默认路由,下一跳路由器down掉后会失效
② 本地无需默认路由,永久生效
3. 路由汇总
① 外部路由汇总
② 域间路由汇总
4. 虚链路
注:如果骨干区域配置了区域认证,虚链路同样需要配置认证
5. OSPF身份验证
① 明文认证
② MD5认证
七.配置命令
1. 基础配置
Router(config)# router ospf process-id
Router(config-router)# network ip-address wildcard-mask area area-id
Router(config-router)# router-id ip-address //建议开设Loopback口手动指定
Router(config-if)# ip ospf priority 10 //修改优先级控制DR、BDR选举
Router(config-if)# ip ospf network [network-type] //修改OSPF接口网络类型
2. 查看命令
Router# clear ip ospf process
Router# show ip ospf //显示OSPF路由器ID,OSPF定时器以及LSA信息
Router# show ip ospf interface type //显示各种定时器和邻接关系
Router# show ip route ospf //显示路由器学习导的OSPF路由
Router# show ip protocols //显示IP路由协议参数
Router# debug ip ospf events //显示OSPF相关事件
Router# debug ip ospf adj //跟踪邻接关系的建立和终止
Router# debug ip ospf packet //显示正在传输的OSPF分组
Router# show ip ospf database [LSA-Type] //查看LSDB