OSPF 详解
这篇深入 OSPF:划分区域的意义、网络类型与 DR/BDR、五种报文与七种状态、LSA 的类型、特殊区域(Stub/NSSA)、虚链路、认证与路由过滤。OSPF 的工作原理(建邻居、生拓扑、算路由)与基础配置见路由技术。
划分区域的意义
OSPF 把自治系统划分为多个区域,好处:
- 减小路由表规模(区域间可做汇总)。
- 加快收敛速度。
- 减少网络震动的影响范围。
路由器角色:
| 角色 | 缩写 | 说明 |
|---|---|---|
| 内部路由器 | IR | 所有接口都在同一区域 |
| 区域边界路由器 | ABR | 连接骨干区域和非骨干区域,必须连到骨干区域 |
| 自治系统边界路由器 | ASBR | 运行非 OSPF 协议,把外部路由引入 OSPF |
网络类型与 DR/BDR
OSPF 为什么要有网络类型? 为了解决以太网中 LSA 频繁泛洪的问题。在广播网络中选举 DR/BDR,让其他路由器只与 DR/BDR 交互,从而减少冗余 LSA。
- 广播类型(如以太网):选举 DR 和 BDR。
- 点到点类型(如 PPP、HDLC):不选举 DR/BDR——点到点是一对一网络,邻居永远只有一个,不会收到重复 LSA。
- 回环口默认使用点到点网络类型。
DR/BDR 选举依据:
- 优先级:默认 1,范围 0~255,越大越优先(0 不参与选举)。
- Router ID:优先级相同时,Router ID 越大越优先。
补充:只有以太网接口才有 MAC 地址,其他接口都没有。
五种报文
| 报文 | 作用 |
|---|---|
| Hello | 建立和维持邻居关系 |
| DD(Database Description) | 描述本地 LSDB 的摘要信息,用于两台路由器同步数据库 |
| LSR(Link State Request) | 向对方请求所需的 LSA;只有成功交换 DD 后才会发出 |
| LSU(Link State Update) | 向对方发送其所需的 LSA(LSA 通过 LSU 承载传递) |
| LSAck | 对收到的 LSA 进行确认 |
组播地址:224.0.0.5(所有 OSPF 路由器)、224.0.0.6(仅 DR/BDR 处理)。
七种状态
邻居到邻接的状态变化:
Down → Init → 2-Way → Exstart → Exchange → Loading → Full- 邻居:相互发送过 Hello。
- 邻接:可以发送 DD、LSA 信息(真正交换路由)。
LSA 类型
LSA(链路状态通告)本质是描述链路/路由的信息,是 LSDB 的组成单元。常见类型:
| 类型 | 名称 | 产生者 | 描述内容 | 传播范围 |
|---|---|---|---|---|
| Type 1 | Router-LSA | 任意路由器 | 路由器的直连链路状态和开销 | 本区域内 |
| Type 2 | Network-LSA | DR | 本网段的链路状态、掩码及网段内路由器 | 本区域内 |
| Type 3 | Network-summary-LSA | ABR | 区域内某网段的路由(区域间路由) | 区域间(除特殊区域) |
| Type 4 | ASBR-summary-LSA | ABR | 到 ASBR 的路由(标识 ASBR) | 非 ASBR 所在区域(除特殊区域) |
| Type 5 | AS-external-LSA | ASBR | 到 AS 外部的路由 | OSPF 域内(除特殊区域) |
| Type 6 | — | — | 用于 OSPF 组播 | — |
| Type 7 | NSSA-LSA | NSSA 区域的 ASBR | 到 AS 外部的路由 | 仅 NSSA 区域内 |
外部引入的路由信息都会被标记为第五类 LSA。
一条路由通告时包含的重要信息:前缀(Prefix)、掩码(Netmask)、网络类型(network-type)、区域(Area)、开销(cost)。
特殊区域
为进一步减小路由表,OSPF 定义了特殊区域。特点:减小路由规模;骨干区域不能作为特殊区域;至少要有一个 ABR;不允许 ASBR 存在。
| 区域类型 | 不接收/不泛洪 | 是否生成缺省路由 | 备注 |
|---|---|---|---|
| Stub(末节) | 不接收第五类 LSA | 是(ABR 生成默认路由) | — |
| Totally Stub(完全末节) | 不泛洪三、四、五类 | 是 | — |
| NSSA(次末节) | 不泛洪第五类,泛洪第七类 | 否 | 第七类由 ABR 转为第五类泛洪给其他区域 |
| Totally NSSA(完全次末节) | 只泛洪第七类 | 是 | — |
引入缺省路由命令:default-route-advertise。查看错误信息:display ospf error。
虚链路
由于拓扑复杂,有时无法满足"每个非骨干区域必须与骨干区域直连"的要求。OSPF 用**虚链路(Virtual-link)**解决此问题。
虚链路设置在两台 ABR 之间,穿过一个非骨干区域(转换区域 Transit Area),建立一条逻辑上的点对点连接,被认为属于骨干区域。中间路由器只起转发报文的作用,两台 ABR 之间直接传递 Type 3 LSA。通过虚链路的路由信息作为域内路由看待。
认证与路由过滤
认证方式:null、simple(明文)、md5、hmac-md5。当接口认证和区域认证同时存在时,优先使用接口认证。
路由过滤两种粒度:
- LSA 过滤:直接过滤链路状态数据库(LSDB)。
- 路由过滤:只过滤路由表,不影响 LSDB。
定时器
- Hello 间隔 10s,死亡时间 40s(广播/点到点网络)。
- 非广播网络(如帧中继):Hello 间隔 30s,保持时间 120s。
- 路由相关:更新 30s、老化 180s、死亡 240s、清除路由条目 300s。