03、OSPF基础
动态路由协议分类

距离矢量路由协议:会周期性地泛洪自己的路由表,通过路由的交互,来学习路由。路由器并不清楚网络的拓扑,只是简单的知道去往某个目的网段方向在哪里,开销多大。
链路状态路由协议:通告的是链路状态。路由器之间先建立邻居关系,然后彼此之间交互LSA(Link State Advertisement,链路状态通告)。进而形成LSDB,再使用SPF算法,计算出以自己为根的最短路径树,这样就知道了到达所有网段的最优路径。

OSPF概述
OSPF(Open Shortest Path First,开放式最短路径优先)
OSPF有以下优点:
- 基于SPF算法,以“累计链路开销”作为选路参考值
- 采用组播形式收发部分协议报文
- 支持区域划分
- 支持对等价路由进行负载分担
- 支持报文认证
大型企业网络中通常部署OSPF实现各个楼宇的网络之间的路由可达。
- 核心和汇聚层部署在OSPF骨干区域。
- 接入和汇聚层部署在OSPF非骨干区域。
Router ID
Router ID用于在自治系统中唯一标识一台运行OSPF的路由器,它是一个32位的无符号整数。
Router ID选举规则如下(做题时按照此规则):
- 手动配置OSPF路由器的Router ID(建议手动配置)
- 没有手动配置,使用Loopback接口中最大的IP
- 没有配置Loopback接口,则使用物理接口中最大的IP
但实际情况下,华为设备中,如果没有手动配置,会取全局Router ID。
区域和度量值
区域:32bit的无符号整数,于IP地址 类似,为了方便,可以写成10进制整数。(如Area 0.0.0.1可以写成Area 1)
OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省的接口Cost如下。其中100Mbit/s为OSPF指定的缺省参考值,该值是可配置的。
接口Cost:不足1的取1,超过1的取整数部分。
OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的cost总和。

度量值的修改:1、修改参考带宽。2、直接修改接口的度量值。
OSPF三大表项
OSPF有三张重要的表项,OSPF邻居表、LSDB和OSPF路由表。
对于OSPF的邻居表,需要了解:
- OSPF在传递链路状态信息之前,需先建立OSPF邻居关系。
- OSPF的邻居关系通过交互Hello报文建立。
- OSPF邻居表显示了OSPF路由器之间的邻居状态,使用display ospf peer查看。

对于OSPF的LSDB,需要了解:
- LSDB会保存自己产生的及从邻居收到的LSA信息,本例中R1的LSDB包含了三条LSA。
- Type标识LSA的类型,AdvRouter标识发送LSA的路由器。
- 使用命令行display ospf lsdb查看LSDB表。

对于OSPF的路由表,需要了解:
- OSPF路由表和路由器路由表是两张不同的表。本例中OSPF路由表有三条路由。
- OSPF路由表包含Destination、Cost和NextHop等指导转发的信息。
- 使用命令display ospf routing查看OSPF路由表。

OSPF报文
OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式。
OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89。


重要字段解释
- Version :对于当前所使用的OSPFv2,该字段的值为2。
- Router ID:表示生成此报文的路由器的Router ID。
- Area ID:表示此报文需要被通告到的区域。
- Type:类型字段。
- Packet length:表示整个OSPF报文的长度,单位是字节。
- Checksum:校验字段,其校验的范围是整个OSPF报文,包括OSPF报文头部。
- Auth Type:为0时表示不认证;为1时表示简单的明文密码认证;为2时表示加密(MD5)认证。
- Authentication:认证所需的信息。该字段的内容随AuType的值不同而不同。
OSPF工作过程
工作过程概览

建立邻居关系
OSPF使用Hello报文发现和建立邻居关系。
在以太网链路上,缺省时,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)。
OSPF Hello报文中包含了路由器的Router ID、邻居列表等信息。

在以太网链路上,通常以组播形式发送Hello报文:
- 224.0.0.5的组播地址为OSPF设备的预留IP组播地址。
- 224.0.0.6的组播地址为OSPF DR/BDR的预留IP组播地址。
对于不支持组播的链路,OSPF支持采用单播的方式发送Hello报文。
HELLO报文
Hello报文的主要作用:
- 邻居发现:自动发现邻居路由器。
- 邻居建立:完成Hello报文中的参数协商,建立邻居关系。
- 邻居保持:通过周期性(10s)发送和接收,检测邻居运行状态。

重要字段解释
- Network Mask:发送Hello报文的接口的网络掩码。
- HelloInterval:发送Hello报文的时间间隔。通常为10s。
- RouterDeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。通常为40s。
- Neighbor:邻居,以Router ID标识。
其它字段解释
- Options:
-
- E:是否支持外部路由
- MC:是否支持转发组播数据包
- N/P:是否为NSSA区域
- Router Priority:DR优先级。默认为1。如果设置为0,则路由器不能参与DR或BDR的选举。
- Designated Router:DR的接口地址。
- Backup Designated Router:BDR的接口地址。
建立邻接关系

DD报文部分字段解释
- I:当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0。
- M (More):当发送连续多个DD报文时,如果这是最后一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文。
- MS (Master/Slave):当两台OSPF路由器交换DD报文时,首先需要确定双方的主从关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master。
- DD sequence number:DD报文序列号。主从双方利用序列号来保证DD报文传输的可靠性和完整性。
接下来同步LSDB(假设R2的LSDB是最新最全的,不需要向R1请求更新,下图中只演示R1向R2请求更新)

DR与BDR的作用
在MA网络中选取DR以减少重复的LSA泛洪,选取BDR作为DR的备份规避单点故障风险。

DR于BDR的选举规则
- DR/BDR的选举是非抢占式的。
- DR/BDR的选举是基于接口的。
- 接口的DR优先级越大越优先(0~255),默认为1,0表示不参与选举。
- 接口的DR优先级相等时,Router ID越大越优先。

思考:
- 如果将上图中4台路由器的优先级全部设置为0,OSPF是否可以正常工作?
- 答案:不能
不同网络类型中DR与BDR的选举操作

在接口配置视图中使用下面的命令即可修改该接口的网络类型
ospf network-type { p2p | p2mp | broadcast | nbma }

补充:
- Broadcast网络:一般情况下,以组播形式发送Hello报文、LSU报文和LSAck报文,以单播形式发送DD报文和LSR报文。
- NBMA网络:所有报文都以单播形式发送。
- P2P网络:所有报文都以组播形式发送。
- P2MP网络:Hello报文以组播形式发送,其他报文以单播形式发送。
OSPF配置命令



浙公网安备 33010602011771号