学习笔记——OSPF第一篇

一 OSPF介绍

开放式最短路径优先OSPF是IETF组织开发的一个基于链路状态的内部网关协议,目前针对IPv4协议使用的是OSPF Version 2,针对IPv6协议使用OSPF Version 3

OSPF对比RIP,具有收敛速度快、无路由环路、扩展性强等优点,此外OSPF还有以下优点

  1. OSPF采用组播形式收发报文,这样可以减少对其它不运行OSPF路由器的影响

  2. OSPF支持无类型域间选路(CIDR)

  3. OSPF支持对等价路由进行负载分担

  4. OSPF支持报文加密

二 OSPF基本概念

1.Router id

1.1什么是Router id

在OSPF协议中,每个路由器都需要一个唯一的标识符,即Router id,Router id用于在整个OSPF域中唯一标识一个路由器,Router id的选取对于路由器的稳定性和网络的可靠性至关重要。
如果要运行OSPF协议,必须存在Router id,Router id是一个32比特无符号整数,是一台路由器在自治系统中的唯一标识。

1.2 Router id的作用

  1. 路由器识别:Router id用于在OSPF域中唯一标识一个路由器,确保网络中路由器不会发生冲突
  2. 稳定性保障:Router id在路由器启动时分配,不受网络拓扑变化的影响,保证了路由器的稳定性
  3. 路由计算:Router id是路由计算过程中的关键参数,用于确定最短路径
  4. 优先级判定:在DR(Designated Router)和BDR(Backup Designated Router)选举中,Router id的大小决定了路由器间的优先级

1.3 Router id选举规则

  1. 手动配置Router id
  2. 环回接口最大的ip地址
  3. 物理接口最大的ip地址

Router id一旦选定,之后如果要更改的话就需要重启OSPF进程。 在实际工程中,推荐手工指定OSPF路由设备的Router id

2.OSPF区域(OSPF Area)

2.1 区域

区域 : 骨干区域、非骨干区域、特殊区域(Stub、NSSA)

骨干区域 :是 OSPF 网络的核心区域,负责在不同区域之间交换路由信息。其他非骨干区域都必须与骨干区域直接相连。

非骨干区域 : 非骨干区域根据实际情况而划分,必须连接到骨干区域(不规则区域也需通过tunnel或virtual-link连接到骨干区域)。非骨干区域主要连接终端用户和资源。

  1. 所有的非骨干区域必须与骨干区域相连
  2. 骨干区域不能被分裂

特殊区域 : 减少路由表的规模,降低对路由器资源的占用,适用于边缘或资源有限的区域。

2.2 为什么要划分多区域

OSPF路由器在同一个区域(Area)内网络中泛洪LSA(链路状态通告)。为了确保每台路由器都拥有对网络拓扑的一致认知,LSDB需要在区域内进行同步。如果OSPF域仅有一个区域,随着网络规模越来越大,LSDB越来越庞大,OSPF路由器的数量越来越多,同时导致OSPF路由表规模增加,路由器资源消耗多,设备性能下降,影响数据转发,基于庞大的LSDB进行路由器计算变得困难。

2.3 划分多区域有什么作用

  1. OSPF引入多区域的设计,将一个OSPF域划分成多个区域,使OSPF能够支持更大规模的网络
  2. 区域将OSPF路由划分成不同的组,不同组以区域ID标识,减少区域内设备的数量(LSDB数据库的大小)和LSA泛洪的范围,当设备失效后影响范围是区域内,不会影响到区域外的设备,达到网络优化的目的。
  3. 在区域边界可以做路由汇总,减小了路由表规模。
单区域与多区域

3.度量值

Cost计算公式 : 开销=参考带宽/接口带宽

参考带宽默认值为100Mbit/s

  1. 开销值越低路径则越优

  2. 度量只与出方向的路径有关,路由器不会对入向流量执行路由决策

  3. 在每次带宽出现变化时,OSPF开销就会重新计算,Dijkstra算法会将路径上的所有链路开销累加起来,以此来判断最优路径

三 OSPF报文

1.报文类型

字段 描述
Hello报文 周期性发送,用来发现和维持OSPF邻居关系。
DD报文 描述本地LSDB的摘要信息,用于两台设备进行数据库同步
LSR报文 用于向对方请求所需的LSA。设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。
LSU报文 用于向对方发送其所需要的LSA。
LSAck报文 用来对收到的LSA进行确认。

2.LSA类型

字段 描述
Router-LSA(Type1) 每个设备都会产生,描述了设备的链路状态和开销,在所属的区域内传播。
Network-LSA(Type2) 由DR产生,描述本网段的链路状态,在所属的区域内传播。
Network-summary-LSA(Type3) 由ABR产生,描述区域内某个网段的路由,并通告给发布或接收此LSA的非Totally STUB或NSSA区域。
ASBR-summary-LSA(Type4) 由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。
AS-external-LSA(Type5) 由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了STUB区域和NSSA区域)。
NSSA LSA(Type7) 由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。

3.你们自己看表格吧,不知道怎么描述了

区域类型 Router-LSA(Type1) Network-LSA(Type2) Network-summary-LSA(Type3) ASBR-summary-LSA(Type4) AS-external-LSA(Type5) NSSA LSA(Type7)
普通区域(包括标准区域和骨干区域)
Stub区域
Totally Stub区域
NSSA区域
Totally NSSA区域

三 OSPF工作原理及状态机

1.OSPF工作原理

  1. 本端设备通过接口向外发送Hello报文与对端设备建立邻居关系
  2. 建立邻居关系后,给邻居路由器发送数据库描述报文(DD),也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器
  3. 收到数据库描述报文后,若发现自己缺少其中某些链路状态项目,则会发送链路状态请求报文(LSR)
  4. 对方收到链路状态请求报文后,则会将其所缺少的链路状态项目的详细信息封装在链路状态更新报文(LSU)中发送回去
  5. 收到链路状态更新报文后,将这些信息添加到自己的链路状态数据库中,随后发回链路状态确认报文(LSAck)

2.状态机

2.1 邻居与邻接

在OSPF网络中,为了交换路由信息,邻居设备之间首先要建立邻接关系,邻居(Neighbors)关系和邻接(Adjacencies)关系是两个不同的概念。

  • 邻居关系:OSPF设备启动后,会通过OSPF接口向外发送Hello报文,收到Hello报文的OSPF设备会检查报文中所定义的参数,如果双方一致就会形成邻居关系,两端设备互为邻居。

  • 邻接关系:形成邻居关系后,如果两端设备成功交换DD报文和LSA,才建立邻接关系。

2.2 状态机

Down:邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包

Attempt:该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔(dead interval)超时前仍然没有回复Hello报文。此时路由器依然每发送轮询Hello报文的时间间隔(poll interval)向对端发送Hello报文

Init:收到Hello报文后状态为Init

2-way:收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态

Exstart:开始协商主从关系,并确定DD的序列号,此时状态为Exstart

Exchange:主从关系协商完毕后开始交换DD报文,此时状态为Exchange

Loading:DD报文交换完成即Exchange done,此时状态为Loading

Full:LSR重传列表为空,此时状态为Full

3.DR与BDR

暂时不会写

4.OSPF网络类型

不能告诉你们

四 OSPF常见问题

1.OSPF邻居无法建立原因分析

  1. 检查设备物理接口状态和协议状态是否是UP
  2. Router id是否冲突
  3. OSPF区域是否一致
  4. OSPF网络类型是否一致
  5. OSPF宣告的IP是否在同一网段,子网掩码是否一致
  6. IP地址/网段是否在区域内进行Network宣告
  7. DR优先级是否都为0
  8. 是否存在认证,认证模式及口令是否一致
  9. 访问控制列表ACL是否禁止了OSPF流量,或者接口被PASSIVE
  10. OSPF的报文Hello/Hello dead 间隔不匹配
  11. 两端OSPF区域类型不同