HCIA 学习笔记 Day3:路由技术与 OSPF 协议详解

# 一、路由基础

# 1、路由概念

1)什么是路由:路由就是数据包从一个网络到另外一外网络的过程

2)支持路由功能的设备:路由器、三层交换机、防火墙

3)每一台路由器都维护着一张路由表,路由器是依靠这张路由表来指导数据转发的

4)查看路由表

<Huawei>display ip routing-table    // 查看 IP 核心路由表
目的地址   / 掩码      协议    优先级    开销值   下一跳     出接口
Destination/Mask    Proto    Pre      Cost     NextHop   Interface
解析:
Destination/Mask:表示此路由的目的网络地址与网络掩码。
Proto(Protocol):该路由的协议类型,也即路由器是通过什么协议获知该路由的。
Pre(Preference):表示此路由的路由协议优先级。
                  针对同一目的地,可能存在不同下一跳、出接口等多条路由
                  这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。
                  优先级最高(数值最小)者将成为当前的最优路由。 
                  
Cost:路由开销:当到达同一目的地的多条路由具有相同的路由优先级时,
                路由开销最小的将成为当前的最优路由。
                
NextHop:表示对于本路由器而言,到达该路由指向的目的网络的下一跳地址。
          该字段指明了数据转发的下一个设备。
Interface:表示此路由的出接口。指明数据将从本路由器的哪个接口转发出去

5)路由分类:

  • 直连路由:路由器接口所直连的网段形成的路由信息
  • 静态路由:由管理员手动为路由器指定的路由信息
  • 动态路由:路由器通过路由协议学习到的路由信息

# 2、路由分类体系

  • 直连路由 (Direct Route) - 接口配置 IP 后自动生成的路由
  • 非直连路由 (Indirect Route) - 需要手动或通过协议学习获得的路由
    • 静态路由 (Static Route) - 管理员手动配置的固定路由
    • 动态路由 (Dynamic Route) - 路由器间自动学习更新的路由
      • IGP(内部网关协议) - 同一自治系统内部使用的路由协议
        • DV(距离矢量路由协议)`` - 基于跳数和方向的路由协议
          • RIP - 基于跳数的距离矢量协议
          • IGRP - 思科私有的距离矢量协议
          • EIGRP - 思科高级的混合路由协议
        • LS(链路状态路由协议) - 基于网络拓扑状态的路由协议
          • OSPF - 开放最短路径优先协议
          • ISIS - 中间系统到中间系统协议
      • EGP(外部网关协议) - 不同自治系统间使用的路由协议
        • BGP - 边界网关协议,互联网骨干协议

# 3、静态路由实验

1)拓扑

2)需求:实现 PC1 可以和 PC2 互联互通

3)分析:

PC1 在 192.168.1.0/24 网段

PC2 在 192.168.4.0/24 网段

因为是跨网段通信,也叫非直连网段通信,所以我们使用静态路由
PC 把目的地和自己不再同一网段的数据包,统统的交给网关,让网关帮忙转发数据

4)配置步骤:

  1. 基础网络配置
  • 配置 PC1 和 PC2 的 IP 地址及子网掩码
  • 配置路由器 R1 和 R2 各接口的 IP 地址
  1. 路由配置
  • 在 R1 上配置去往 192.168.4.0/24 网段的路由
  • 在 R2 上配置回程路由(去往 192.168.1.0/24 网段)

5)过程描述(参考 - 没有描述 ARP 协议和二层头部 MAC 地址封装的过程)

通信流程详解:请求路径(PC1 → PC2)

步骤 1:源主机路由判断与 ARP 解析

  • PC1(192.168.1.1)判断目标地址 192.168.4.1 与自身不在同一网段
  • PC1 查询 ARP 缓存,查找网关 R1(192.168.1.254)的 MAC 地址
  • 如无对应 ARP 条目,PC1 发送 ARP 广播请求网关 MAC 地址
  • 二层封装
    • 源 MAC:PC1 的 MAC 地址
    • 目的 MAC:R1 G0/0/0 接口的 MAC 地址
    • 源 IP:192.168.1.1
    • 目的 IP:192.168.4.1

步骤 2:R1 路由查找与 ARP 解析

  • R1 收到数据包,解封装后根据目的 IP 192.168.4.1 查询路由表
  • 初始状态下,R1 路由表中无 192.168.4.0/24 路由条目
  • 配置静态路由:添加 192.168.4.0/24 网段路由,下一跳指向 R2(192.168.2.1)
  • R1 查询 ARP 缓存,查找下一跳 R2 的 MAC 地址
  • 重新二层封装
    • 源 MAC:R1 G0/0/1 接口的 MAC 地址
    • 目的 MAC:R2 G0/0/0 接口的 MAC 地址
    • 源 IP:192.168.1.1(保持不变)
    • 目的 IP:192.168.4.1(保持不变)

步骤 3:R2 路由查找与 ARP 解析

  • R2 收到数据包,解封装后查询路由表发现 192.168.4.0/24 为直连路由
  • R2 查询 ARP 缓存,查找 PC2(192.168.4.1)的 MAC 地址
  • 如无对应 ARP 条目,R2 发送 ARP 广播请求 PC2 的 MAC 地址
  • 重新二层封装
    • 源 MAC:R2 G0/0/1 接口的 MAC 地址
    • 目的 MAC:PC2 的 MAC 地址
    • 源 IP:192.168.1.1(保持不变)
    • 目的 IP:192.168.4.1(保持不变)

通信流程详解:响应路径(PC2 → PC1)

步骤 4:目标主机响应与 ARP 解析

  • PC2 收到请求数据包,准备发送响应
  • PC2 查询 ARP 缓存,查找网关 R2(192.168.4.254)的 MAC 地址
  • 二层封装
    • 源 MAC:PC2 的 MAC 地址
    • 目的 MAC:R2 G0/0/1 接口的 MAC 地址
    • 源 IP:192.168.4.1
    • 目的 IP:192.168.1.1

步骤 5:R2 路由查找与 ARP 解析

  • R2 收到响应包,解封装后查询路由表发现无 192.168.1.0/24 路由条目
  • 配置回程静态路由:添加 192.168.1.0/24 网段路由,下一跳指向 R1(192.168.2.254)
  • R2 查询 ARP 缓存,查找下一跳 R1 的 MAC 地址
  • 重新二层封装
    • 源 MAC:R2 G0/0/0 接口的 MAC 地址
    • 目的 MAC:R1 G0/0/1 接口的 MAC 地址
    • 源 IP:192.168.4.1(保持不变)
    • 目的 IP:192.168.1.1(保持不变)

步骤 6:R1 路由查找与 ARP 解析

  • R1 收到响应包,解封装后查询路由表发现 192.168.1.0/24 为直连路由
  • R1 查询 ARP 缓存,查找 PC1(192.168.1.1)的 MAC 地址
  • 重新二层封装
    • 源 MAC:R1 G0/0/0 接口的 MAC 地址
    • 目的 MAC:PC1 的 MAC 地址
    • 源 IP:192.168.4.1(保持不变)
    • 目的 IP:192.168.1.1(保持不变)

6)配置步骤:

第一步:分别配置 PC1 和 PC2 的 IP 地址、掩码、网关
第二步:配置 R1 路由器(接口 IP 地址和静态路由 )
R1 的配置:
<R1>un t m
<R1>sys
[R1] int g0/0/0     // 进入接口 g0/0/0
[R1-GigabitEthernet0/0/0] ip address  192.168.2.1 24    // 配置接口 IP 地址
[R1-GigabitEthernet0/0/0] int g0/0/1      // 进入接口 g0/0/1
[R1-GigabitEthernet0/0/1] ip address  192.168.1.254 24    // 配置接口 IP 地址
[R1-GigabitEthernet0/0/1] quit   // 退回到系统视图
[R1] ip route-static 192.168.4.0  24  192.168.2.2    
// 配置静态路由,目的地:192.168.4.0/24 网段,下一跳地址:192.168.2.2
第三步:配置 R2 路由器(接口 IP 地址和静态路由)
R2 的配置:
<R2>un t m
<R2>sys
[R2] int g0/0/0
[R2-GigabitEthernet0/0/0] ip address 192.168.4.254 24
[R2-GigabitEthernet0/0/0] int g0/0/1
[R2-GigabitEthernet0/0/1] ip address 192.168.2.2 24
[R2-GigabitEthernet0/0/1] quit
[R2] ip route-static 192.168.1.0 24 192.168.2.1
// 配置静态路由,目的地:192.168.1.0/24 网段,下一跳地址:192.168.2.1
# 验证测试
<R1>display ip routing-table  192.168.4.1    // 验证 R1 有没有去往 4.1 的路由
Destination/Mask    Proto   Pre  Cost      Flags  NextHop         Interface
192.168.4.0/24      Static  60   0          RD    192.168.2.2     GigabitEthernet0/0/0
<R2>display ip routing-table  192.168.1.1   // 验证 R2 有没有去往 1.1 的回程路由
Destination/Mask    Proto   Pre  Cost      Flags  NextHop         Interface
192.168.1.0/24      Static  60   0          RD    192.168.2.1     GigabitEthernet0/0/1
重要字段解析:
Destination:表示这条路由的目的地址
Mask:表示目的地址的子网掩码长度
NextHop:表示这条路由的下一跳地址, 下一跳地址就是指数据转发的下一个设备
Interface:表示这条路由的出接口,指明数据将从本地路由器哪个接口转发出去
测试:使用 PC1 和  PC2  互相 ping
# 删除路由
删除静态路由:(静态路由的配置不能覆盖,如果配置错误需要删除才可以)
[R2] undo Ip   route-static   192.168.1.0     24   192.168.2.1

# 4、路由器转发数据包封装过程

1)路由器收到数据包后,查看数据包中的目的 IP 地址,根据目的 IP 地址,来查找路由表

2)数据包在网络中传输时,源 IP 地址和目的 IP 地址一直不变,但是源 MAC 地址和目的 MAC 地址每经过一个网段,就会发送一次变化

# 5、路由表总结

1)去往一个目的地址,如果有多条路由,路由器会根据最长掩码匹配原则,选择掩码最长的路由条目

2)当路由器有到达同一目的地的多条路由时(路由的目的地址及掩码相同)时,会选择路由优先级值最小的路由;

3)如果这些路由是相同的路由协议,优先级一致,则选度量值最优的。

4)路由表只要最优的路由条目

5)当路由器收到一个数据包时,会根据数据包的目的 IP 地址查找路由条目。如果能够找到匹配的路由条目,则依据路由条目的出接口及下一跳来转发数据;如果没有匹配的表项,则丢弃该数据包。

6)路由器判断路由是否有效,看路由条目的下一跳是否可达,如果下一跳可达,就认为路由有效

7)路由器的行为是逐跳的;是无连接网络,数据包从源到目的地沿路径每个路由器都必须有关于目标网段的路由,否则就会造成丢包,路由器只会把数据报文交给下一跳地址,如果下一跳设备没有路由,就会导致数据丢包。

8)数据通信往往是双向的,因此要关注流量的往返(往返路由)

# 二、缺省路由、路由迭代、等价路由

# 1、缺省路由(默认路由)

1)缺省路由 (Default Route) 是一种特殊的路由,当报文没有在路由表中找到匹配的具体路由表项时才使用的路由。如果报文的目的地址不能与路由表的任何目的地址相匹配,那么该报文将选取缺省路由进行转发。

2)缺省路由在路由表中的形式为 0.0.0.0/0,缺省路由也被叫做默认路由。

3)缺省路由配置:

4)缺省路由一般用于企业网络出口,配置一条缺省路由让出口设备能够转发前往 Internet 上任意地址的 IP 报文

# 2、路由递归(路由迭代)

1)路由必须有直连的下一跳才能够指导转发,但是路由生成时下一跳可能不是直连的,因此需要计算出一个直连的下一跳和对应的出接口,这个过程就叫做路由递归。路由递归也被称为路由迭代。

# 3、等价路由

# 三、浮动路由

# 1、浮动路由概述

1)浮动路由是一种通过配置多条备用链路实现网络冗余的路由备份技术,又称路由备份。其核心原理是为相同目的地址设置不同下一跳的多条路由,通过调整管理距离(AD 值)或优先级数值区分主备链路。主链路优先级较高(AD 值较低),正常时优先生效;当主链路故障时,备用路由自动激活,维持网络连续性。

  • 浮动路由又称为路由备份,由两条或多条链路组成浮动路由,这两条(或多条)静态路由的目的地址相同,但是下一跳地址不同。

  • 给这多条静态路由设置不同的优先级,优先级高的那条静态路由做为主链路,优先级低的那条静态路由做为备份链路。

  • 当主链路出现故障的时候,备份链路进入路由表中,顶替主链路承担数据转发任务,当主链路故障恢复的时候,主链路进入路由表,承担数据转发任务,备份链路变为不可用状态移出路由表。

2)浮动路由的作用:预防单路径故障,保持网络的不中断

3)浮动路由特点:浮动路由在同一时刻,数据只会由一条路径进行转发

# 2、路由的优先级

1)当去往同一个目的地有多条路由时,为了判断最优路由,各路由协议(包括静态路由)都被赋予了一个优先级。

2)优先级高的(数值小)的路由会成为最优路由,路由器会将最优路由条目放入本地 IP 核心路由表中。

3)路由优先级:优先级用数值表示,数值越小优先级越高

路由类型英文标识默认优先级优先级说明
直连路由Direct0最高优先级,接口配置 IP 后自动生成
OSPF 路由(内部)OSPF10内部网关协议,收敛速度快
IS-IS 路由IS-IS15中间系统到中间系统协议
静态路由Static60手动配置,优先级可调整
RIP 路由RIP100距离矢量路由协议
OSPF ASE 路由OSPF ASE150OSPF 外部路由
BGP 路由BGP255边界网关协议,用于不同 AS 间

# 3、浮动路由实验

1)拓扑

2)需求:配置浮动路由,实现链路冗余(让 192.168.2.0/24 那条链路成为主链路)

3)配置步骤:

  1. 配置 PC 的 IP 地址,掩码,网关

  2. 交换机配置 VLAN,接口加入指定的 VLAN

​ (1)SW1 交换机创建 VLAN 10

​ (2)SW1 交换机的所有接口都设置为 Access 模式,并加入指定的 VLAN 10

​ (3)SW2 交换机创建 VLAN 40

​ (4)SW2 交换机的所有接口都设置为 Access 模式,并加入指定的 VLAN 40

  1. 路由器配置接口 IP 地址

  2. 路由器配置浮动路由

​ (1)配置一条静态路由为主链路,静态路由默认优先级为 60

​ (2)配置一条静态路由为备份链路,指定路由优先级为 70

  1. 验证与测试

​ (1)验证是否主链路转发数据

​ (2)验证是否主链路那条路由进入路由表

​ (3)让主链路出现故障,验证备份链路是否起作用

4)配置命令

第一步:配置 PC 的 IP 地址,掩码,网关

第二步:交换机配置 VLAN,接口加入指定的 VLAN

# SW1 配置:
[SW1] vlan 10
[SW1-vlan10] quit
[SW1] port-group group-memb  
[SW1] port-group group-member g0/0/1 to g0/0/3
[SW1-port-group] port link-type access
[SW1-port-group] port default vlan 10
# SW2 配置:
[SW2] vlan 40
[SW2-vlan40] quit
[SW2] port-group group-member g0/0/1 g0/0/2
[SW2-port-group] port link-type access
[SW2-port-group] port default vlan 40

第三步:路由器配置接口 IP 地址

R1 配置:
[R1] int g0/0/0
[R1-GigabitEthernet0/0/0] ip address  192.168.1.254 24
[R1-GigabitEthernet0/0/0] int g0/0/1
[R1-GigabitEthernet0/0/1] ip address  192.168.2.1   24
[R1-GigabitEthernet0/0/1] int g0/0/2
[R1-GigabitEthernet0/0/2] ip address  192.168.3.1   24
R2 配置:
[R2] int g0/0/0
[R2-GigabitEthernet0/0/0] ip address  192.168.4.254 24
[R2-GigabitEthernet0/0/0] int g0/0/1
[R2-GigabitEthernet0/0/1] ip address  192.168.2.2   24
[R2-GigabitEthernet0/0/1] int g0/0/2
[R2-GigabitEthernet0/0/2] ip address  192.168.3.2   24

第四步:路由器配置浮动路由

1)配置一条静态路由为主链路,静态路由默认优先级为 60

2)配置一条静态路由为备份链路,指定路由优先级为 70

R1 配置:
// 配置静态路由并指定优先级
[R1] ip route-static 192.168.4.0  24  192.168.2.2   // 配置静态路由
[R1] ip route-static 192.168.4.0  24  192.168.3.2  preference  70   
R2 配置:
// 配置静态路由并指定优先级
[R2] ip route-static 192.168.1.0  24  192.168.2.1   // 配置静态路由
[R2] ip route-static 192.168.1.0  24  192.168.3.1  preference  70

第五步:验证与测试

1)验证是否主链路转发数据

2)验证是否主链路那条路由进入路由表

3)让主链路出现故障,验证备份链路是否起作用

使用路由追踪或数据抓包验证 PC1>tracert 192.168.4.3

[R1] display ip routing-table   // 查看进入路由表的最优路由
[R1] display ip routing-table  192.168.4.3
[R1] display ip routing-table protocol static   // 查看静态路由
Static routing table status : <Active>- 活跃
Destination/Mask   Proto   Pre  Cost   NextHop      Interface
192.168.4.0/24     Static  60   0      192.168.2.2  G0/0/1
Static routing table status : <Inactive>- 不活跃的 - 停用的
Destination/Mask   Proto   Pre  Cost   NextHop     Interface
192.168.4.0/24     Static  70   0     192.168.3.2  G0/0/2

备注:shutdown 掉 R1 的 g0/0/1 让主链路故障,验证备份链路是否会进入路由表,承担数据转发任务

# 四、OSPF 协议

# 1、OSPF 概述

1、基本概念:开放式最短路径优先 (Open Shortest Path First, OSPF) 是广泛使用的一种动态路由协议,它属于链路状态路由协议,目前版本有: OSPFv2 (IPv4)OSPFv3 (IPv6)

  • OSPF 位于 OSI 参考模型的第三层,数据封装在 IP 报头的后面

  • OSPF 的协议号是 89

2、适用场景:适用于中、大型网络规模,常见的场景有:政企网(层次化的网络架构中)、数据中心内部(用于实现把不同的网段打通)

3、协议优势:便于大型网络中对路由的管理和维护

# 2、OSPF 的工作过程

OSPF 的工作流程大致分为三步:

  • 建立邻居: 邻居表

  • 同步数据库: 链路状态数据库

  • 计算路由: ospf 协议路由表

# 3、OSPF 的 5 种报文类型、7 种状态机

OSPF 五种报文类型

报文类型英文全称功能描述
HelloHello Packet用于发现邻居、建立和维护邻居关系,周期性发送以维持连接
DBDDatabase Description数据库描述报文,交换 LSA 头部信息,用于数据库同步
LSRLink State Request链路状态请求,请求本地缺失的 LSA 详细信息
LSULink State Update链路状态更新,携带完整的 LSA 信息进行数据库更新
LSackLink State Acknowledgment链路状态确认,确保 LSA 可靠传输的确认机制

OSPF 七种邻居状态机

状态机状态描述关键行为
Down初始状态未收到任何 Hello 报文,尝试发送 Hello 报文建立连接
Init单向通信收到邻居 Hello 报文,但报文中未包含本机 Router ID
Two-way双向通信双方 Hello 报文中均包含对方 Router ID,建立邻居关系
Exstart主从协商交换第一个 DBD 报文,确定主从关系,协商序列号
Exchange数据库摘要交换相互发送 DBD 报文,描述各自的链路状态数据库摘要
Loading链路状态请求基于 DBD 比较结果,通过 LSR/LSU 获取缺失的 LSA
Full完全邻接数据库同步完成,建立完全邻接关系,可正常转发流量


DD 报文部分字段解释

  • I:当发送连续多个 DD 报文时,如果这是第一个 DD 报文,则置为 1,否则置为 0。

  • M (More):当发送连续多个 DD 报文时,如果这是最后一个 DD 报文,则置为 0。否则置为 1,表示后面还有其他的 DD 报文。

  • MS (Master/Slave):当两台 OSPF 路由器交换 DD 报文时,首先需要确定双方的主从关系,RouterID 大的一方会成为 Master。当值为 1 时表示发送方为 Master。

  • DD sequence number:DD 报文序列号。主从双方利用序列号来保证 DD 报文传输的可靠性和完整性。


  • R1 开始向 R2 发送 LSR 报文,请求那些在 Exchange 状态下通过 DD 报文发现的、并且在本地 LSDB 中没有的链路状态信息。

  • R2 向 R1 发送 LSU 报文,LSU 报文中包含了那些被请求的链路状态的详细信息。R1 在完成 LSU 报文的接收之后,且没有其他待请求的 LSA 后,会将邻居状态从 Loading 变为 Full。

  • R1 向 R2 发送 LSAck 报文,作为对 LSU 报文的确认


# 4、OSPF 区域

1、区域划分: OSPF 适用于大型网络,采用分层设计,分为骨干区域和非骨干区域。

  • OSPF 骨干区域:区域号为 0,表示的就是 “骨干区域”

  • OSPF 非骨干区域:区域号不为 0,表示的就是 “非骨干区域”

2、非骨干区域必须和骨干区域 “直接” 相连,能实现 “区域之间的互通”

3、OSPF 区域的表示

  • 通过十进制表示,例如区域 0、1、2、3 等

  • 通过点分十进制表示,例如区域 0.0.0.0 、0.0.0.1、0.0.0.2 等

4、OSPF 支持网络的层次化设计,并引入了区域的概念,OSPF 引入区域的作用是:

  • 分层管理网络:降低网络复杂性、提高网络的稳定性

  • 优化路由计算:缩减数据库和路由表规模,减少路由计算量,降低设备压力,加快路由收敛速度

  • 提高网络安全性:防止路由环路、根据需求限制路由传播

# 5、OSPF 路由角色

  • 骨干路由器:路由器只要有一个接口在骨干区域
  • 区域内路由器:路由器的所有接口都在同一个区域
  • ABR (区域边界路由器) 同时连接着骨干区域和非骨干区域的路由器
  • ASBR(自治系统边界路由器)具有产生外部路由能力的路由器

# 6、OSPF 邻居表解析

<R1>display ospf peer brief    // 查看邻居表简要信息
   OSPF Process 1 with Router ID 1.1.1.1
      Peer Statistic Information
 ----------------------------------------------------------------------------
 Area Id          Interface                        Neighbor id      State    
 0.0.0.0          GigabitEthernet0/0/0             2.2.2.2          Full        
 ----------------------------------------------------------------------------

1、Process : 进程号

ospf 1 : 指定 ospf 进程号 1

1)作用:在同一个设备上,区分不同的 ospf 路由协议

2)通过不同的进程号所学习到的路由信息是不会自动相互传递的,从而实现各个 ospf 协议之间的隔离

3)ospf 进程号只在本地路由器起作用,不同的路由器的进程号,可以相同,也可以不同

4)进程号范围 <1-65535>

2、Router ID :路由标识符

router-id 1.1.1.1 // 指定 router-id 为 1.1.1.1

1)ospf 协议给路由器分配了一个标识符,格式为点分十进制(注意这与 IP 地址并无关系)

2)在 ospf 网络中,router-id 唯一标识一台路由器

3)router-id 的生产方式可以是手动指定(优先级最高)或自动选举,建议使用手动指定

4)router-id 自动选举规则:

  • 首先选举本设备上的 loopback 接口的 IP 地址,选择 IP 地址最大的

  • 如果没有配置 loopback 接口选举物理接口 IP 地址最大的

  • 如果某一个接口先启用 ospf, 那么该接口的 IP 地址,就被选举为 router-id

5)router-id 手动指定

手动指定命令 [huawei] ospf 1 router-id 1.1.1.1

重启 ospf 进程(用户视图): <huawei> reset ospf process

备注:路由器的 router-id 具有不可抢占性,如果要更换,需要重启 ospf 进程

3、Area Id :区域号

1)ospf 对网络进行了分层的设计,引入区域的概念

2)引入区域的作用:降低设备压力,提高设备转发性能,提高网络的安全性

3)区域号的表示方式有两种

  • 十进制数: 0-4294967295

  • 点分十进制: 0.0.0.0 - 255.255.255.255

    4)区域分为两类:

  • 骨干区域: 区域号为 0

  • 非骨干区域 : 区域号不为 0

__4、Interface :__使用哪个接口与对端建立的邻居

__5、Neighbor id :__邻居的 router-id

__6、State :__邻居之间的状态

上述 State 为 full,即表示完全邻接状态: 既建立好邻居了, 又同步完数据库了

# 7、OSPF 报文字段解析

OSPF 头部报文字段解析

字段名称英文名称长度功能描述技术要点
OSPF 版本OSPF Version1 字节标识 OSPF 协议版本v2: IPv4 网络 <br>v3: IPv6 网络 < br>v3 不兼容 v2
报文类型Message Type1 字节标识 OSPF 报文类型1: Hello
2: DBD (DD)
3: LSR
4: LSU
5: LSack
报文长度Packet Length2 字节整个 OSPF 报文的字节长度包括头部和数据部分 <br> 用于报文完整性检查
路由器 IDSource OSPF Router4 字节发送报文的路由器唯一标识格式类似 IP 地址 <br> 全网必须唯一 < br > 用于路由计算和邻居识别
区域 IDArea ID4 字节发送接口所属区域号邻居必须在同一区域 <br>Area 0 为骨干区域 < br > 支持层次化路由
校验和Packet Checksum2 字节报文完整性校验检测传输错误 <br> 错误报文会被丢弃
认证类型Auth Type2 字节认证机制类型0: 不认证 <br>1: 简单密码 < br>2: MD5 加密
认证数据Auth Data8 字节认证相关信息密码或加密密钥 <br> 确保邻居合法性

Hello 报文字段解析

字段名称英文名称长度功能描述技术要点
网络掩码Network Mask4 字节接口子网掩码邻居接口掩码必须相同 <br> 确保在同一网段
Hello 间隔Hello Interval2 字节Hello 报文发送间隔默认 10 秒 <br> 邻居间隔必须一致 < br > 影响收敛速度
选项字段Options1 字节特殊功能标志位E: 外部路由能力 <br>MC: 组播能力 < br>N/P: NSSA 相关
路由器优先级Router Priority1 字节DR/BDR 选举优先级范围 0-255
0 表示不参与选举 <br> 影响 DR/BDR 选举结果
失效间隔Router Dead Interval4 字节邻居失效超时时间默认 40 秒 (4×Hello)
可手动配置 <br> 超时则删除邻居
指定路由器Designated Router4 字节DR 的 Router ID广播 / NBMA 网络需要 <br> 减少 LSA 泛洪 < br > 提高网络效率
备份指定路由器Backup Designated Router4 字节BDR 的 Router IDDR 的备份 <br>DR 故障时接替 < br > 保证网络稳定性
活跃邻居Active Neighbor可变已知邻居列表已建立双向通信的邻居 <br>Router ID 列表 < br > 用于邻居状态维护

# 五、OSPF 网络类型

​ OSPF 运行在不同的链路层就会有不同的问题,比如运行在以太网,默认为广播的网络环境下,就会存在共享网段中邻居数量多的问题,占用设备资源的问题,所以有了多种网络类型来适应不同的网络环境。

  • 广播类型(Broadcast):数据链路层协议为以太网时,OSPF 默认的网络类型为广播

  • 非广播类型(NBMA):当链路层协议是 fr(帧中继)时,OSPF 运行在这个网络环境中,默认使用 NBMA 的网络类型 (国内都已经不用了,不常见)

  • 点到点(P2P):数据链路层运行的协议为 PPP 或者 HDLC 时,默认的网络类型为 P2P

  • 点到多点(P2MP):由管理员手工修改

# 1、OSPF 单区域实验案例

1)拓扑

2)需求:按照如上 IP 地址规划,使用 OSPF 实现全网互通

3)配置思路

  1. 配置 PC 接口 IP 地址

  2. 配置路由器的接口 IP 地址

  3. 配置 OSPF

  • 创建 ospf 进程,定义 router-id

  • 指定相应区域

  • 宣告网段进入 ospf

  1. 验证结果

4)配置步骤

第一步:配置 PC 接口 IP 地址
第二步:配置路由器接口 IP 地址
第三步:配置 OSPF

# R1: 配置
ospf 1 router-id 1.1.1.1    // 指定 ospf 进程号, 指定 router-id
 area 0.0.0.0               // 指定区域 id
  network 192.168.1.0 0.0.0.255     // 宣告直连网段
  network 192.168.12.0 0.0.0.255    // 宣告直连网段
# R2: 配置
ospf 1 router-id 2.2.2.2
 area 0.0.0.0 
  network 192.168.23.0 0.0.0.255 
  network 192.168.12.0 0.0.0.255 
# R3: 配置
ospf 1 router-id 3.3.3.3
 area 0.0.0.0 
  network 192.168.23.0 0.0.0.255 
  network 192.168.2.0 0.0.0.255

第四步:验证结果

查看邻居表简要信息: display ospf peer brief
查看路由表: display ip routing-table
PC1 ping PC2 验证结果

<R1>display ip routing-table protocol ospf 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
         Destinations : 2        Routes : 2        
OSPF routing table status : <Active>
         Destinations : 2        Routes : 2
Destination/Mask    Proto   Pre   Cost    NextHop         Interface
192.168.2.0/24      OSPF    10    3       192.168.12.2     G0/0/0
192.168.23.0/24     OSPF    10    2       192.168.12.2     G0/0/0

Q & A

1)问: PC1 可以 ping 通 PC2 为什么?

答: 因为有 ospf 路由

2)问: 为什么有 ospf 路由?

答: 因为运行 ospf 的路由器会计算 ospf 路由

3)问:为什么运行 ospf 的路由器会计算出来 OSPF 路由?

答:因为路由器有计算路由的原材料

4)问:什么是计算路由的原材料

答:拓扑信息 + 网段信息

5)问:什么是拓扑信息?什么是网段信息?

答:拓扑信息:我是哪台路由器,我连着哪个邻居,我用哪个接口连着哪个邻居

​ 网段信息:接口 IP 地址网段,接口 IP 地址的掩码

6)问:拓扑信息和网段信息,你是怎么得到的?

答:我从邻居那里学来的

7)问:你是通过什么方法学习的呢?

答:我和邻居同步数据库

8)问:那个数据库,什么样的数据库

答:LSDB : 链路状态数据库

9)问:这个数据库是干啥的?

答:这个数据库是专门用来存储 LSA 的

10)问:LSA 是啥:

​ 答:LSA:链路状态通告 ,说人话:就是拓扑信息 + 网段信息

11)问:你是怎么同步的数据库

​ 答:我把我的数据库中的 LSA 发给邻居,邻居把他的数据库中的 LSA 发给我

​ 举例: 我的数据中原来有名字叫 1.1.1.1 的 LSA ,我把 1.1.1.1 发给邻居

​ 邻居的数据库中有一个名字 2.2.2.2 的 LSA,邻居把 2.2.2.2 发给我

​ 我的数据库中有 2 个,分别是 1.1.1.1 和 2.2.2.2

​ 邻居的数据库中有 2 个,分别是 2.2.2.2 和 1.1.1.1

​ 确认,我们两个的数据库内容是否一致,如果一致,就称为 同步数据库成功

12) 问:为什么两台路由能够同步数据库

​ 答:因为这两台路由器是邻居

13) 问:为什么这两台路由器是邻居呢?

​ 答:因为这两台路由是直接相连的,并且这两台路由器运行了 ospf

结论

  • 网络通: 是因为有 ospf 路由

  • 有路由: 是因为同步数据库了

  • 能同步: 是因为建立邻居了

  • 有邻居: 是因为做 ospf 了

再回顾 OSPF 工作步骤:

​ 1) 建立邻居: 邻居表

​ 2) 同步数据: 数据库

​ 3) 计算路由: 路由表; 是 OSPF 协议路由表

# 2、OSPF 多区域实验案例

1)拓扑

2)需求:按照如上 IP 地址规划,使用 OSPF 实现全网互通

3)配置思路

  1. 配置 PC 接口 IP 地址

  2. 配置路由器的接口 IP 地址

  3. 配置 OSPF

  • 创建 ospf 进程 和 router-id

  • 配置 ospf 区域 id

  • 宣告直连网段进 ospf

  1. 验证结果

4)配置步骤

第一步:配置 PC 接口 IP 地址
第二步:配置路由器接口 IP 地址
第三步:配置 OSPF

# R1 配置:
ospf 1 router-id 1.1.1.1 
 area 0.0.0.12 
  network 192.168.1.0 0.0.0.255 
  network 192.168.12.0 0.0.0.255  
# R2 配置:
ospf 1 router-id 2.2.2.2 
 area 0.0.0.0 
  network 192.168.23.0 0.0.0.255 
 area 0.0.0.12 
  network 192.168.12.0 0.0.0.255 
# R3 配置:
ospf 1 router-id 3.3.3.3 
 area 0.0.0.0 
  network 192.168.23.0 0.0.0.255 
  network 192.168.34.0 0.0.0.255
# R4 配置: 
ospf 1 router-id 4.4.4.4 
 area 0.0.0.0 
  network 192.168.34.0 0.0.0.255 
  network 192.168.45.0 0.0.0.255 
# R5 配置:
ospf 1 router-id 5.5.5.5 
 area 0.0.0.0 
  network 192.168.45.0 0.0.0.255 
 area 0.0.0.56 
  network 192.168.56.0 0.0.0.255 
# R6 配置:
ospf 1 router-id 6.6.6.6 
 area 0.0.0.56 
  network 192.168.2.0 0.0.0.255 
  network 192.168.56.0 0.0.0.255

第四步:验证结果

查看邻居表简要信息: display ospf peer brief
查看 ospf 路由表: display ip routing-table protocol ospf
PC1 ping PC2 验证结果

# 3、DR 与 BDR

​ 在 OSPF 协议中,每个路由器都会维护一个链路状态数据库(LSDB)。该数据库中包含多种链路状态通告(LSA),这些 LSA 既有由本设备生成的,也有从 OSPF 邻居那里学习来的。每台 OSPF 路由器,正是基于自己 LSDB 中所有 LSA 所描述的完整网络拓扑,独立运行 SPF(最短路径优先)算法,从而计算出最终的路由表条目。路由器之间通过建立邻居关系,并相互交换和同步 LSA 信息的过程,就称为__数据库同步__。

在 OSPF 邻居进行数据库同步时,根据网络类型的不同,主要可以分为两种情况:

  1. 点对点网络(如只有两台设备):在这种情况下,两台路由器直接建立邻接关系并进行数据库同步,过程高效且直接。
  2. 广播多接入网络(如以太网,存在多台设备):在这种网络环境中,如果所有路由器两两之间都建立__完全的邻接关系__并进行数据库同步,会导致同步过程异常复杂和低效。理论上, n 台路由器需要建立 n (n-1)/2 个邻接关系,这会造成大量的重复 LSA 泛洪,极大地浪费网络资源和设备 CPU 资源。

为解决广播网络中邻接关系过多的问题,OSPF 引入了 DR/BDR 机制,作用是:

  • 避免网状邻接关系导致的协议报文冗余(包括 DD、LSR、LSU、LSACK)
  • 减少网络资源占用和设备负载
  • 显著提升数据库同步效率

DR 和 BDR 的定义:DR 作为指定路由器,负责广播网络中的 LSA 泛洪和数据库同步管理;BDR 作为热备份,在 DR 故障时立即接管;DR-Other 则仅与 DR/BDR 保持完全邻接关系。

类比:DR 相当于班长,负责统一管理;BDR 相当于副班长,作为备份;其他设备(DR-Other)如同普通同学,只需与班长和副班长通信。

注意:DR/BDR 是接口级别的角色属性,非路由器级别。

DR 选举机制

选举遵循严格优先级顺序:

  1. 首要比较接口优先级,数值越大越优先(默认值为 1)
  2. 当优先级相同时,比较 Router ID,数值越大越优先
  3. 在极端情况下,启动时间可能影响初始选举结果

DR 特性

  • 非抢占性:选举完成后不因新加入高优先级设备而重新选举
  • 角色唯一:每个广播域必须有且仅有一个 DR,BDR 推荐配置但不强制
  • 优先级零规则:优先级为 0 的接口不参与选举,自动成为 DR-Other
  • 状态机依赖:缺少 DR 时,邻居关系将停滞在 Two-way 状态,无法建立完全邻接

修改接口的 DR 优先级

修改接口的优先级为 100 [R2-G0/0/0] ospf dr-priority 100

[R1] dis ospf int g0/0/0
   OSPF Process 1 with Router ID 1.1.1.1
     Interfaces 
 Interface: 192.168.10.1 (GigabitEthernet0/0/0)
               接口状态:DR        类型 :广播
 Cost: 1       State: DR        Type: Broadcast    MTU: 1500  
 Priority: 1    //DR 的优先级,默认为 1
 Designated Router: 192.168.10.1       //DR 是 10.1(本端接口)
 Backup Designated Router: 192.168.10.2  //BDR 是 10.2(对端接口)
 Timers: Hello 10 , Dead 40 , Poll  120 , Retransmit 5 , Transmit Delay 1 
# 修改接口的优先级为 100
[R2-G0/0/0] ospf dr-priority 100
# 重启 OSPF 进程使配置生效
<R1>reset ospf  process
# 如果再次修改接口的优先级为 0,接口的状态立即转为 DR-other
[R2-G0/0/0] ospf dr-priority 0

备注:修改接口的优先级后(优先级调大后),需要重启邻居 ospf 进程,重启邻居的 ospf 你的接口 DR 优先级只要不是 0 ,你就是 DR