03、OSPF基础

动态路由协议分类

image-20250204095959769

距离矢量路由协议:会周期性地泛洪自己的路由表,通过路由的交互,来学习路由。路由器并不清楚网络的拓扑,只是简单的知道去往某个目的网段方向在哪里,开销多大。

链路状态路由协议:通告的是链路状态。路由器之间先建立邻居关系,然后彼此之间交互LSA(Link State Advertisement,链路状态通告)。进而形成LSDB,再使用SPF算法,计算出以自己为根的最短路径树,这样就知道了到达所有网段的最优路径。

image-20250204100954891

OSPF概述

OSPF(Open Shortest Path First,开放式最短路径优先)

OSPF有以下优点:

  1. 基于SPF算法,以“累计链路开销”作为选路参考值
  2. 采用组播形式收发部分协议报文
  3. 支持区域划分
  4. 支持对等价路由进行负载分担
  5. 支持报文认证

大型企业网络中通常部署OSPF实现各个楼宇的网络之间的路由可达。

  • 核心和汇聚层部署在OSPF骨干区域。
  • 接入和汇聚层部署在OSPF非骨干区域。

Router ID

Router ID用于在自治系统中唯一标识一台运行OSPF的路由器,它是一个32位的无符号整数。

Router ID选举规则如下(做题时按照此规则):

  1. 手动配置OSPF路由器的Router ID(建议手动配置)
  2. 没有手动配置,使用Loopback接口中最大的IP
  3. 没有配置Loopback接口,则使用物理接口中最大的IP

但实际情况下,华为设备中,如果没有手动配置,会取全局Router ID。

区域和度量值

区域:32bit的无符号整数,于IP地址 类似,为了方便,可以写成10进制整数。(如Area 0.0.0.1可以写成Area 1)

OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省的接口Cost如下。其中100Mbit/s为OSPF指定的缺省参考值,该值是可配置的。

\[接口Cost=\frac{100Mbit/s}{接口带宽} \]

接口Cost:不足1的取1,超过1的取整数部分。

OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的cost总和。

image-20250204102529023

度量值的修改:1、修改参考带宽。2、直接修改接口的度量值。

OSPF三大表项

OSPF有三张重要的表项,OSPF邻居表、LSDB和OSPF路由表。

对于OSPF的邻居表,需要了解:

  1. OSPF在传递链路状态信息之前,需先建立OSPF邻居关系。
  2. OSPF的邻居关系通过交互Hello报文建立。
  3. OSPF邻居表显示了OSPF路由器之间的邻居状态,使用display ospf peer查看。

image-20250204102915670

对于OSPF的LSDB,需要了解:

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

image-20250204103313442

对于OSPF的路由表,需要了解:

  1. OSPF路由表和路由器路由表是两张不同的表。本例中OSPF路由表有三条路由。
  2. OSPF路由表包含Destination、Cost和NextHop等指导转发的信息。
  3. 使用命令display ospf routing查看OSPF路由表。

image-20250204103226300

OSPF报文

OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式。

OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89

image-20250204103519553

image-20250204103538843

重要字段解释

  • 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工作过程

工作过程概览

image-20250204103843356

建立邻居关系

OSPF使用Hello报文发现和建立邻居关系。

在以太网链路上,缺省时,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)。

OSPF Hello报文中包含了路由器的Router ID、邻居列表等信息。

image-20250204104128118

在以太网链路上,通常以组播形式发送Hello报文:

  • 224.0.0.5的组播地址为OSPF设备的预留IP组播地址。
  • 224.0.0.6的组播地址为OSPF DR/BDR的预留IP组播地址。

对于不支持组播的链路,OSPF支持采用单播的方式发送Hello报文。

HELLO报文

Hello报文的主要作用:

  • 邻居发现:自动发现邻居路由器。
  • 邻居建立:完成Hello报文中的参数协商,建立邻居关系。
  • 邻居保持:通过周期性(10s)发送和接收,检测邻居运行状态。

image-20250204104458881

重要字段解释

  • 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的接口地址。

建立邻接关系

image-20250204104902863

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请求更新)

image-20250204105857889

DR与BDR的作用

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

image-20250204110305857

DR于BDR的选举规则

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

image-20250204110552100

思考:

  • 如果将上图中4台路由器的优先级全部设置为0,OSPF是否可以正常工作?
    • 答案:不能

不同网络类型中DR与BDR的选举操作

image-20250204112733977

在接口配置视图中使用下面的命令即可修改该接口的网络类型

ospf network-type { p2p | p2mp | broadcast | nbma }

image-20250204113016596

补充:

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

OSPF配置命令

image-20250204113314206

image-20250204113403115

posted @ 2025-05-28 11:55  最爱喝开水  阅读(133)  评论(0)    收藏  举报