本系列是北航计算机学院于 2024 年春季学期开设的核心专业课《计算机网络实验》课程的实验报告记录,实验形式为两人组队实验。由于学习过程中掌握并不牢靠,如有错误请读者不吝赐教!

OSPF 协议实验

前半部分为实验的实际操作环节,后半为实验报告内容的填写。

实验内容

  • OSPF 协议概述及基本配置
  • OSPF 协议报文交互过程
  • OSPF 协议链路状态描述
  • 区域划分及 LSA 种类
  • OSPF 协议路由的计算
  • OSPF 协议组网设计

OSPF 协议概述及其基本配置

实验说明

OSPF 是开放最短路由优先(Open Shortest Path First)的缩写,具有适应范围广、快速收敛、无自环等特点。

其核心思想是每一台路由器讲其周边的链路状态都描述出来,发送给网络中相邻的路由器。经过一段时间的交互后,每台路由器都保存了一个链路状态数据库,保存了整个网络完整的链路状态描述。在此基础上,使用最短路算法就可以计算路由。

自治系统与区域

自治系统(AS)是指由同一机构管理、使用同一组选路策略的路由器的集合,有权自主决定在本系统内采用何种路由协议

区域(Area)是指一个路由器的集合,相同的区域有相同的拓扑结构数据库;OSPF 协议把一个自治系统划分为多个链路状态域,区域就是划分的单位

  • 区域 ID,用于标识区域,相互独立,用一个 32bit 的整数进行标识,可以定义为 IP 地址格式或十进制整数

邻居与邻接

OSPF 协议在路由器启动后就会通过接口向外部发送 Hello 报文,收到 Hello 报文的路由器会先检查报文的参数,不冲突后形成邻居关系

邻居关系并不一定能形成邻接关系,只有当双方成功交换链路状态通告信息,才形成真正意义上的邻接关系

OSPF 配置与指令

基本的 OSPF 配置主要包括配置 Router ID、启动 OSPF、进入 OSPF 区域视图,在指定网段使能 OSPF 四部分

  • 配置 Router ID:一台路由器在 OSPF 协议下通过一个 32 位无符号整数 Router ID 进行标识,采用 IP 地址形式,通常会配置为路由器中回环接口(Loopback)中的最大 IP 地址(没有 Loopback 接口就选取物理接口中最大的 IP)
    • 因为 IP 的唯一性,Router ID 的唯一性也能保证
  • 启动 OSPF:一台路由器上启动的多个 OSPF 进程可以互相区分,启动时不指定本地的进程号将使用默认进程号 1
  • 进入 OSPF 区域视图:在物理上可以将自治系统划为不同的区域,逻辑上分为不同的组,区域视图可以配置区域内的相关配置
  • 在指定网段使能 OSPF:在系统视图下启动 OSPF 后还需要在网段上运行 OSPF 协议
  • 常用 OSPF 指令:
router id router-id    				/* 配置路由器 ID 号 */
ospf [process-id [vpn-instance vpn-instance-name]] /* 启动 OSPF 协议 */
undo ospf /* 关闭 OSPF 路由协议进程 */
area area-id /* 进入 OSPF 区域视图 */
network ip-address wildcard-mask /* 在指定网段运行 OSPF 协议*/
  • 常用 OSPF 调试命令:
序号 命令 说明
1 reset ospf all process 重启 OSPF 进程
2 display ospf peer 显示邻居信息
3 display ospf 显示概要信息
4 display ospf error 显示错误信息
5 display ospf routing 显示 OSPF 路由表信息
6 debugging ospf event 显示协议运行中的事件
7 debugging ospf lsa 显示过程中的 LSA 信息
8 debugging ospf packet 显示过程中收发报文的情况
9 debugging ospf spf 显示 SPF 算法计算路由的情况

实验内容

了解 OSPF 协议的基本概念,掌握 OSPF 协议的基本配置

  • 组网如图,不需要配置交换机和 PC 的 IP 地址,配置路由器的 IP 地址正确即可

image-20240415211839528

/* R1 配置 */
interface E 1/0/0
ip address 168.1.1.1 255.255.255.0
interface loopback 1
ip address 1.1.1.1 255.255.255.255

/* R2 配置 */
interface E 1/0/0
ip address 168.1.1.2 255.255.255.0
interface loopback 1
ip address 2.2.2.2 255.255.255.255
  • 配置两台路由器的 OSPF 协议:
router id 1.1.1.1
ospf
area 0
network 1.1.1.0 0.0.0.255 /* 在接口 Loopback 1 上启动 OSPF,指定区域 */
network 168.1.1.0 0.0.0.255 /* 在接口 E0 上启动 OSPF,指定区域 */

router id 2.2.2.2
ospf
area 0
network 2.2.2.0 0.0.0.255 /* 在接口 Loopback 1 上启动 OSPF,指定区域 */
network 168.1.1.0 0.0.0.255 /* 在接口 E0 上启动 OSPF,指定区域 */
  • 观察两个路由器的 IP 路由表,再查看 R2 的 OSPF 邻接信息
display ip routing
display ospf peer
  • 将 R1 的 router id 改为 3.3.3.3,显示 OSPF 的概要信息,查看更改是否生效

更改尚未生效,因为 OSPF 进程需要重启才能识别新的 router ID。由于 router ID 一旦被 OSPF 进程采用,在进程重新启动前通常不会更改,所以可以重启 OSPF 进程以应用新 router id

undo router id
router id 3.3.3.3
display ospf brief
reset ospf all process

OSPF 协议报文交互过程

实验说明

掌握 OSPF 的 5 种报文结构、OSPF 邻接关系建立、链路状态信息交换、邻居状态机等基本原理

实验内容

  • 实验组网状态与 OSPF 基本配置实验一致
  • 利用集线器,使得 PCC 监听路由器 R1 E1/0/0 接口的报文
  • 快速断开、重连交换机与路由器的连接,使得两路由器同时重启 OSPF 协议,记录报文
  • 分析截获的报文,可以看到 OSPF 的五种协议报文,请写出这五种协议报文的名称。并选择一条Hello报文,写出整个报文的结构(OSPF 首部及 Hello 报文体)。(可以直接参考实验教程,有完整的分析过程
  • 分析 OSPF 协议的头部,OSPF 协议中 Router ID 的作用是什么?它是如何产生的?

router ID在OSPF中的作用是唯一标识一个路由器。OSPF中的所有路由交换和内部处理都是通过Router ID来识别路由器的。例如,在建立邻居关系、交换链路状态信息和选举指定路由器(DR)和备份指定路由器(BDR)的过程中,都需要使用Router ID来识别各个路由器。

Router ID是一个32位的值,通常表示为与IPv4地址相同的点分十进制格式。在路由器启动时,Router ID通过以下方式确定:

  1. 如果在OSPF配置中显式指定了Router ID(使用类似router-id x.x.x.x的命令),则使用该值。
  2. 如果没有显式配置Router ID,路由器将使用它的活动接口中具有最高IP地址的接口的IP地址作为Router ID。
  3. 如果接口上没有配置IP地址,但有配置回环接口,那么最高的回环接口IP地址将被选为Router ID。
  4. 如果路由器没有任何活动接口,它将无法选择Router ID,因此无法参与OSPF。

一旦Router ID被选定并且OSPF进程已经启动,即使更高的IP地址被分配给接口,或指定了新的回环地址,Router ID也不会改变,除非重启OSPF进程或整个路由器。如果在OSPF运行时更改了Router ID,您需要重启OSPF进程以使新的Router ID生效。

Router ID的选择并不影响路由选择过程本身,但它在OSPF网络中必须是唯一的,以防止数据混淆。如果两个路由器在同一OSPF区域内有相同的Router ID,那么它们将无法建立正确的邻居关系。

  • 分析截获的一条 LS Update 报文,写出该报文的首部,并写出该报文中有几条 LSA?以及相应 LSA 的种类。
  • 分析截获的报文和 DD 报文中的(MS、I、M)字段,写出 DD 主从关系的协商过程和结果 。
  • 结合截获的报文和 DD 报文中的字段(MS,I,M,Seq),写出 LSA 摘要信息交互的过程,并描述其隐含确认与可靠传输机制是如何起作用的。
  • 结合截获的一组相关的 LSR、LSU 和 LS Ack 报文,具体描述 OSPF 协议报文交互过程中确保可靠传输的机制。

OSPF 协议采用了基于 DD 报文主从关系协商的隐含确认机制。

在 DD报文的发送过程的初始阶段需要确定双方的主从关系。然后,作为 Master 的一方定义一个序列号 Seq,每发送一个新的 DD 报文将 Seq 加一。作为 Slave 的一方,每次发送 DD 报文时,将携带接收到的最近一个Master 发送的 DD 报文中的 Seq。这种序列号方法就是一种隐含的确认机制。再加上每个报文都有超时重传,就能够保证这种传输是可靠的。

  • 在 R1上执行下列命令,显示 OSPF 的调试信息。
<R1>debugging ospf event
<R1>terminal debugging
  • 断开 S1 与 R1、R2 的两根连线,然后再重新连接。请根据 debug 显示信息,画出 R1 上的 OSPF 邻居状态转移图。

OSPF 协议链路状态描述

实验说明

实验内容

  • R2 发出的所有 Update 报文中共包含几种类型的 LSA?具体类型是什么?
  • 在 4.6.3 节步骤 7 中,重新启动指定路由器 DR 的 OSPF 进程后,写出此后的 DR、BDR、DRother 路由器的名称,并解释为什么?

可以使用display ospf peer命令来查看OSPF邻居及DR和BDR的信息。

Neighbor ID Pri State Dead Time Link-local Address Interface

State字段可以显示邻居状态和是否 DR 等信息

区域划分及 LSA 种类

实验内容

请写出显示区域 0 和区域 1 中四类和五类 LSA 的命令,并比较在区域 0 和区域 1 中四类和五类 LSA 的异同点,并解释为什么?

请总结一至五类的 LSA 的生成者、所描述的路由和传递范围

在OSPF(开放最短路径优先)协议中,链路状态广告(Link State Advertisement, LSA)是路由器用来交换拓扑信息的一种机制。LSA的不同类型描述了不同的网络连接和路径信息。这里总结了前五类LSA的生成者、它们所描述的路由信息以及它们的传递范围。

类型 1:路由器LSA(Router LSA)

  • 生成者: 每个在OSPF区域内的路由器。
  • 描述的路由: 描述生成它的路由器的直连接口状态,以及到达这些接口的路径成本。它还描述了到其他OSPF路由器的路径(如果路由器是DR或BDR,还会包括到多播网络的路径)。
  • 传递范围: 限制在生成LSA的那个区域内,不会跨越区域边界。

类型 2:网络LSA(Network LSA)

  • 生成者: 在多路访问网络(如以太网)上的指定路由器(DR)。
  • 描述的路由: 描述多接入网络的拓扑,包括该网络上的所有路由器接口。
  • 传递范围: 与类型 1 LSA相同,仅在生成LSA的OSPF区域内传播。

类型 3:摘要LSA(Summary LSA)

  • 生成者: 区域边界路由器(ABR),它们连接两个或多个OSPF区域。
  • 描述的路由: 描述从一个区域到另一个区域的路由摘要信息。它不包括详细的拓扑信息,而是提供了到达其他区域的路径成本。
  • 传递范围: 可以跨越区域边界,但不会进入到后备区域(Backbone Area,即区域 0)之外。

类型 4:ASBR-Summary LSA(ASBR摘要 LSA)

  • 生成者: 区域边界路由器(ABR)。
  • 描述的路由: 提供到达自治系统边界路由器(ASBR)的路径信息。ASBR是连接到外部网络的路由器,如连接到另一个OSPF自治系统或其他路由协议(如BGP)的路由器。
  • 传递范围: 类似于类型 3 LSA,可以跨越区域边界传播,但不会进入到区域 0 之外。

类型 5:外部LSA(External LSA)

  • 生成者: 自治系统边界路由器(ASBR)。
  • 描述的路由: 描述OSPF自治系统外部的路由,例如通过其他路由协议学习到的路由或静态配置的路由。
  • 传递范围: 可以在整个OSPF自治系统内传播,跨越所有区域,包括区域 0。

每种类型的LSA在OSPF协议中扮演着重要的角色,它们共同工作以确保网络中的路由器可以学习到整个网络的拓扑信息,进而计算出到达目的地的最佳路径。

OSPF 协议的路由计算

OSPF 为什么是无自环的?(区域内、区域间)

OSPF(开放最短路径优先)是一种无环的路由协议,这是因为它使用了一种叫做链路状态路由协议的算法。OSPF通过以下几种机制来确保网络中无环:

  1. 链路状态数据库同步: OSPF通过在所有区域内的路由器之间分发链路状态广告(LSAs),确保每个路由器对网络拓扑有一个一致的视图。这种方法可以确保所有路由器的链路状态数据库(LSDB)是同步的。

  2. 最短路径优先(SPF)算法: OSPF使用Dijkstra算法来计算到达各个网络的最短路径。Dijkstra算法是一种确定性算法,它会为每个目的地生成一棵最短路径树,这棵树不会包含任何环路

  3. 区域设计: OSPF的区域设计进一步帮助防止环路的出现。每个OSPF区域形成了一个分层的拓扑,区域内的路由器只知道本区域的详细信息,而区域间的路由信息是通过区域边界路由器(ABR)进行路由汇总的。这样,每个区域都独立计算自己的SPF树,而区域间的路由选择避免了引入环路。

  4. 类型1和类型2 LSAs的区域限制: 类型1(路由器LSA)和类型2(网络LSA)仅在它们的原始区域内被分发。这限制了它们可以影响的路由计算范围,因为它们不会传播到其他区域,这有助于防止跨区域环路的产生。

  5. ABR和ASBR的角色: 区域边界路由器(ABR)和自治系统边界路由器(ASBR)是特殊类型的路由器,它们处理跨区域和跨自治系统的路由信息。ABR汇总区域内的路由,而ASBR向OSPF区域外宣告外部路由。它们的存在和操作方式防止了跨区域和自治系统路由环路的形成。

因此,OSPF的这些设计都是为了确保网络无自环,提供一个稳定且高效的路由环境。

设计型实验

设计型实验 1

S1

vlan 2
port E 1/0/24
quit

interface vlan 2
ip address 192.168.5.1 255.255.255.0
quit

interface vlan 1
ip address 192.168.3.2 255.255.255.0
quit

ospf
area 1
network 192.168.3.0 0.0.0.255

S2

vlan 2
port E 1/0/24
quit

interface vlan 2
ip address 192.168.6.1 255.255.255.0
quit

interface vlan 1
ip address 192.168.4.2 255.255.255.0
quit

ospf
area 2
network 192.168.4.0 0.0.0.255

R1

interface E 0/0
ip address 192.168.3.1 255.255.255.0
quit

interface S 1/0
ip address 192.168.0.1 255.255.255.0
quit

ospf
area 0
network 192.168.0.0 0.0.0.255
area 1
network 192.168.3.0 0.0.0.255

R2

interface E 0/0
ip address 192.168.4.1 255.255.255.0
quit

interface S 1/0
ip address 192.168.0.2 255.255.255.0
quit

ospf
area 0
network 192.168.0.0 0.0.0.255
area 2
network 192.168.4.0 0.0.0.255

R1 获得了 Area2(网段)的 ip 路由,R2 也获得了 Area1 的 ip 路由

image-20240416174434100

image-20240416174442882

但是仍然缺少对 192.168.5 和 192.168.6 网端的路由,所以要通过静态路由分别添加在两侧的路由器上,再通过 OSPF 散布到整个网络中

/* R1 配置 */
ip route-static 192.168.5.0 255.255.255.0 192.168.3.2
ospf
import-route static

/* R2 配置 */
ip route-static 192.168.6.0 255.255.255.0 192.168.4.2
ospf
import-route static

image-20240416174901971

R1 添加静态路由后,R2 尚未添加路由,只能在 R1 上发现静态路由,R2 无路由(上图)

在 R2 添加 OSPF 后再次检查,能够发现 R1 传递的 O_ASE 路由(下图)

image-20240416174832640

同理,在 R2 添加静态路由并导入 OSPF 后,R1 也获取了 R2 传递的 O_ASE 路由

image-20240416175637035

设置完毕并等待 OSPF 协议工作完毕后能够实现 PCA ping PCB 操作

设计型实验 2

主要思考直连路由静态路由在网络中的生效方式

静态路由告知 R1、R2 应该把指向 Loopback 的流量分发到 S2,同时告知 S2 发往 192.168 网段的流量应该按顺序发送(先发往 R1,后发往 R2);其余路由的建立均基于同一网段内,不再需要手动配置路由

完整的路由信息会经由 OSPF 协议在所有网络设备间传递,直至所有设备都拥有完整的 IP 路由表,对于 PCA 而言,PCA ping 211.100.2.1 只需要判定该 ip 不处于自身子网内,将其发送到 S1 即可,S1 的路由表可以做出正确的转发操作

  • 配置 PC 的 IP 地址、子网掩码和默认网关;重启S1、S2、R1、R2 四台网络设备,清除其中的配置
  • 配置 S1:VLAN,interface VLAN、OSPF,其余的路由部分可以由 R1 和 R2 两台设备通过引入操作自动完成
vlan 2
port G 1/0/23
vlan 3
port G 1/0/2
vlan 4
port G 1/0/24

interface vlan 1
ip address 192.168.3.2 255.255.255.0
interface vlan 2
ip address 192.168.4.2 255.255.255.0
interface vlan 3
ip address 192.168.5.1 255.255.255.0
interface vlan 4
ip address 192.168.6.1 255.255.255.0

ospf
area 0
network 192.168.3.0 0.0.0.255
network 192.168.4.0 0.0.0.255

配置后应该能实现 PCA 向 PCB、S1 各个 vlan 接口的 ping 操作

  • 配置 R1:interface、OSPF、静态路由
interface G 0/2
ip address 192.168.3.1 255.255.255.0
interface G 0/1
ip address 202.112.1.1 255.255.255.0
interface Serial 1/0
ip address 192.168.0.1 255.255.255.0
ip route-static 211.100.2.0 255.255.255.0 202.112.1.2

ospf
area 0
network 192.168.3.0 0.0.0.255
network 192.168.0.0 0.0.0.255
import-route static cost 100
import-route direct cost 100

配置后应该能实现 R1 向 S1 的 192.168.3.2/24 端口的 ping 通

  • 配置 R2:interface、OSPF、静态路由(和 R1 类似)
interface G 0/2
ip address 192.168.4.1 255.255.255.0
interface G 0/1
ip address 202.112.2.1 255.255.255.0
interface Serial 1/0
ip address 192.168.0.2 255.255.255.0
ip route-static 211.100.2.0 255.255.255.0 202.112.2.2

ospf
area 0
network 192.168.4.0 0.0.0.255
network 192.168.0.0 0.0.0.255
import-route static cost 200
import-route direct cost 200
  • 配置 S2:VLAN、interface、OSPF、静态路由、Loopback
vlan 2
port G 1/0/1
vlan 3
port G 1/0/2

interface vlan 2
ip address 202.112.1.2 255.255.255.0
interface vlan 3
ip address 202.112.2.2 255.255.255.0
interface loop 1
ip address 211.100.2.1 255.255.255.255

ip rou 192.168.0.0 255.255.0.0 202.112.1.1 pre 50
ip rou 192.168.0.0 255.255.0.0 202.112.2.1 pre 60

组网完毕,已经可以从 PCA ping 通 S2 的 Loopback

image-20240416170136358

断开 S1 和 R1 的连接,等待自动规划后再次 tracert

image-20240416171057347

断开 R2 和 S2 的连接,等待自动规划后再次 tracert

image-20240416171153855

最终的路由表信息如下,可以学习到 IP 路由的生成和转移操作(Direct 路由均为直连路由,O_ASE 均为 OSPF 协议传递来的路由(5 类 LSA),同一网段、直接相连的目标 IP 也生成一个路由表项)


image-20240416172141119


image-20240416172157632


image-20240416172208069


image-20240416172246657

OSPF 协议实验报告

忘了拍照了,下周再补