【实验目的】
- 掌握 OSPF 的报文格式
- 掌握 OSPF 的工作过程
- 了解常见的 LSA 的结构及 LSDB 的结构
【实验原理】
- OSPF 的报文格式

- OSPF 的工作过程

- OSPF 链路状态公告类型
路由器链路 LSA:用来通知路由器的所有链路。

网络链路 LSA:用来宣布连接到某个网络上的链路。

汇总链路到网络 LSA:用来宣布在这个区域以外的其他网络的存在。

汇总链路到 AS 边界路由器 LSA:用来宣布到 AS 边界路由器的路由。

外部链路 LSA:用来宣布在 AS 外部的所有网络。

【关键命令说明】
1.接口基础配置
1)使用 interface 命令进入指定的接口或者子接口视图。
例如进入接口 Eth2/0/0 视图。
<Huawei> system-view
[Huawei] interface ethernet 2/0/0
[Huawei-Ethernet2/0/0]
2)使用 ip address 命令用来配置接口的IP地址。
命令格式为 ip address ip-address { mask | mask-length } [ sub ],其中:
-
ip-address 表示 IP 地址,为点分十进制格式。
-
mask表示 IP 地址的掩码,为点分十进制格式。
-
mask-length 表示 IP 地址的掩码长度,为整数形式,取值范围是 0~32。
例如,为接口 GE1/0/0 配置主 IP 地址为 10.1.0.1,子网掩码为 255.255.255.0。
<Huawei> system-view
[Huawei] interface gigabitethernet 1/0/0
[Huawei-GigabitEthernet1/0/0] ip address 10.1.0.1 255.255.255.0
3)关闭和打开接口
使用 shutdown 命令用来关闭当前接口,undo
shutdown 命令用来开启当前接口。缺省情况下,接口处于开启状态。
- 查看路由表
使用 display ip routing-table 命令用来查看IPv4路由表的信息。
- 查看当前运行配置
使用display this 命令用来查看系统当前视图的运行配置。
- OSPF 相关信息的配置
1)使用 ospf 命令创建并运行 OSPF 进程。
命令格式:ospf [ process-id | router-id router-id | vpn-instance
vpn-instance-name ] *
参数说明:
process-id:OSPF 进程号。整数形式,取值范围是 1~65535。缺省值是 1。
router-id:router-id Router ID。点分十进制格式。
例如,运行 OSPF 协议:
<Huawei> system-view
[Huawei] ospf 100 router-id 10.10.10.1
2)使用 area 命令创建 OSPF 区域,并进入 OSPF 区域视图
命令格式:area area-id
参数说明:area-id 为指定区域的标识。其中区域号 area-id 是 0 的称为骨干区域。可以是十进制整数或点分十进制格式。采取整数形式时,取值范围是 0~4294967295。
例如,进入 OSPF 区域视图。
<Huawei> system-view
[Huawei] ospf 100
[Huawei-ospf-100] area 0
[Huawei-ospf-100-area-0.0.0.0]
3)使用 network 命令指定运行 OSPF 协议的接口和接口所属的区域
命令格式:network network-address wildcard-mask [ description text ]
参数说明:
network-address:接口所在的网段地址。点分十进制格式。
wildcard-mask:IP 地址的反码,相当于将IP地址的掩码反转(0变1,1变0)。例如 0.0.0.255 表示掩码长度 24 位。点分十进制格式。
description
text:OSPF 指定网段的描述信息。字符串形式,支持空格,区分大小写,长度范围为 1~80。
例如,指定运行 OSPF 协议的接口的主 IP 地址位于网段 192.168.1.0/24,接口所在的 Area
ID为 2,并且为这个指定网段配置描述信息。
<Huawei> system-view
[Huawei] ospf 100
[Huawei-ospf-100] area 2
[Huawei-ospf-100-area-0.0.0.2] network 192.168.1.0 0.0.0.255
4)使用 display ospf peer brief 显示 OSPF 邻居的概要信息。
<Huawei> display ospf 1 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 GigabitEthernet1/0/0 3.3.3.3 Full
Total Peer(s): 1
其中,Area Id 表示邻居所属的区域;Interface 表示与邻居相连的接口;Neighbor
id 表示邻居的 Router ID;State 表示邻居状态。
5)使用 display ospf lsdb 命令显示 OSPF 的链路状态数据库(LSDB)信息。
例如,显示 OSPF 的链路状态数据库的概要信息。
\<Huawei\> display ospf lsdb
OSPF Process 1 with Router ID 10.1.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.2.2.2 10.2.2.2 98 36 8000000B 1
Router 10.1.1.1 10.1.1.1 92 36 80000005 1
Network 10.1.1.2 10.2.2.2 98 32 80000004 0
Sum-Net 10.1.1.0 10.2.2.2 286 28 80000001 1
Sum-Net 10.1.1.0 10.1.1.1 282 28 80000001 1
Sum-Asbr 10.2.2.2 10.1.1.1 61 28 80000001 1
还可以通过指定参数,显示LSA的相关信息。例如:
- 显示OSPF链路状态数据库中Router LSA的相关信息。
<Huawei> display ospf lsdb router
- 显示OSPF链路状态数据库中Network LSA的相关信息。
<Huawei> display ospf 1 lsdb network 10.1.1.1
- 显示OSPF链路状态数据库中Network Summary LSA的相关信息。
<Huawei> display ospf 1 lsdb summary 10.20.1.0
【实验步骤】
练习一:分析 OSPF 报文,理解单区域 OSPF 工作过程
1. 基本配置
1)请按照图 1的实验拓扑进行连接,其中的设备及IP地址等配置请看表 1。

图 1 静态路由实验拓扑图
表 1 设备及地址配置
| 设备 | 接口 | IP地址 | 子网掩码 |
|---|---|---|---|
| R1(AR2220) | LoopBack 0 | 192.168.1.1 | 255.255.255.0 |
| GE 0/0/1 | 10.0.12.1 | 255.255.255.0 | |
| R2(AR2220) | LoopBack 0 | 192.168.2.1 | 255.255.255.0 |
| GE 0/0/1 | 10.0.23.2 | 255.255.255.0 | |
| GE0/0/2 | 10.0.12.2 | 255.255.255.0 | |
| R3(AR2220) | LoopBack 0 | 192.168.3.1 | 255.255.255.0 |
| GE0/0/2 | 10.0.23.3 | 255.255.255.0 |
2)完成基本配置后,请使用 ping 命令检测各个直连链路的连通性。例如在 R1 上 ping
10.0.12.2,在 R2 上 ping 10.0.23.3。如果连通性有问题,请检查配置是否完全按照表
1 设置。由于路由器上现在没有配置路由协议,路由表中只存在直连路由项,因此 R1 的环回口 Loopback0 无法 ping 通 R3 的环回口 Loopback0。





2. 部署单区域 OSPF 网络
1)在 R1 的 GE0/0/1 和 R3 的 GE0/0/2 接口上进行抓包,设置过滤条件(提取 OSPF)。
2)先配置路由器 R1,使用 ospf 命令创建并运行 OSPF,并手动配置指定路由器 R1 的 Router
ID 为 1.1.1.1。
<R1>system-view
[R1]ospf 1 router-id 1.1.1.1
然后使用 area 命令指定运行 OSPF 协议的接口以及接口所属的区域。本练习中 R1 的环回口和物理接口 GE0/0/1 都需要指定。
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]network 192.168.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.1]network 10.0.12.0 0.0.0.255

3)在 R2 和 R3 上也都做相应配置(不妨设置 R2 和 R3 的 Router ID 分别为 2.2.2.2 和 3.3.3.3)。


4)检验配置结果
以 R2 为例,使用 display ospf peer 命令查看 OSPF 邻居的详细信息,或者使用 display ospf
peer brief 命令查看简要的 OSPF 邻居信息。
[R2-ospf-1-area-0.0.0.1]display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
Area Id Interface Neighbor id State
0.0.0.1 GigabitEthernet0/0/2 1.1.1.1 Full
0.0.0.1 GigabitEthernet0/0/1 3.3.3.3 Full
可以发现路由器 R2 已经与 R1、R3 都建立起邻接关系。
使用 display ospf lsdb 命令查看链路状态数据库的信息。
使用 display ip
routing-table 命令查看路由表,注意其中的来自 OSPF 协议产生的路由条目。或者使用 display
ip routing-table protocol ospf 命令查看 OSPF 路由表。


此时三台路由器的路由表中都含有其他网段的路由条目,所以 R1 的环回口 Loopback0 可以 ping 通 R3 的环回口 Loopback0。

5)停止抓包,分析 OSPF 的 5 种协议报文,理解 OSPF 的工作过程:
a. Hello 报文
在会话分析中找到 “10.0.12.1—224.0.0.5” 会话,观察该会话的第一个报文;找出第一个含有字段邻站 IP “Active
Neighbor” 的报文;找出第一个字段指定路由器 “Designated
Router” 的值不为 0.0.0.0 的报文。
在会话分析中找到 “10.0.23.2—224.0.0.5” 会话,观察该会话的第一个报文;找出第一个含有字段邻站 IP “Active
Neighbor” 的报文;找出第一个字段指定路由器“ Designated Router” 的值不为 0.0.0.0 的报文。
依据基础理论和抓包的分析结果,请回答思考题中的问题 1~2。
b. Database Description 报文
逐个观察 Database
Description 报文,注意字段 “初始化标识”、“更多标识”、“主/从位”、“报文序号” 的变化情况。
请回答思考题中的问题 3。
c. Link State Request 报文
观察字段 “链路状态类型”、“链路状态 ID”、“发送通过的路由器” 的值。
请回答思考题中的问题 4。
d. Link State Update 报文
观察该报文各字段的值及 LSA 信息。
请回答思考题中的问题 5。
e. Link State Acknowledge 报文
观察该报文各字段的值及 LSA 信息。
请回答思考题中的问题 6。
练习二:配置多区域 OSPF,分析 LSA、LSDB,理解 LSA 的作用
1. 基础配置
在练习一的基础上,再增加路由器 R4,与 R3 直连。新的网络拓扑见图
2,增加的接口配置见表
2。需要注意:新增加的 R4 路由器与 R3 的 GE0/0/1 口都被划分在了区域 0 中,也即骨干区域内。配置完成后,测试连通性,看 R3 能否 ping 通R4 的 GE0/0/2 口。

图 2 多区域 OSPF 网络拓扑图
表 2 设备及地址配置
| 设备 | 接口 | IP地址 | 子网掩码 |
|---|---|---|---|
| R3(AR2220) | GE 0/0/1 | 10.0.34.3 | 255.255.255.0 |
| R4(AR2220) | LoopBack 0 | 192.168.4.1 | 255.255.255.0 |
| GE0/0/2 | 10.0.34.4 | 255.255.255.0 |


2. 配置骨干区域路由器
1)在 R3 的 GE0/0/2 和 R4 的 GE0/0/2 接口上进行抓包,设置过滤条件(提取 OSPF)。

2)配置骨干区域路由器。在 R4 路由器上创建 OSPF 进程,创建并进入区域 0,并通告相应网段。在 R3 路由器上创建并进入区域 0,并将与 R4 相连的接口进行通告。请在下列横线处给出配置,或者在圆括弧内解释配置命令的含义。
[R4]ospf 1 router-id 4.4.4.4 ( 路由器 id 设置为 4.4.4.4 )
[R4-ospf-1] area 0 (设置区域号)
[R4-ospf-1-area-0.0.0.0] network 192.168.4.0 0.0.0.255 (宣告网络)
[R4-ospf-1-area-0.0.0.0] network 10.0.34.0 0.0.0.255 (宣告网络)
[R3]ospf 1
[R3-ospf-1] area 0 (设置区域号)
[R3-ospf-1-area-0.0.0.0] network 10.0.34.0 0.0.0.255 (宣告网络)
配置完成后,查看 OSPF 邻居状态。可以观察到 R3 与 R2、R4 都建立起了邻接关系,状态为 FULL。使用 display ip
routing-table 命令查看路由表,可以观察到各路由器的路由表都存在相关 OSPF 路由条目。在 R1 上使用 ping
-a 192.168.1.1 192.168.4.1可以 ping 通,表明整个网络通信正常。


3. 分析LSA
察看捕获到的结果,在链路状态(LSA)类型为1、2、3的报文中任取一个,分析这些链路状态的结构及作用,填写下表(只需简要文字表述即可,不必举例具体的示例):
| 谁产生的 | 所描述的路由 | 传递范围 | |
|---|---|---|---|
| 类型1(路由器) | OSPF路由器 | 自己 | 该OSPF内的路由器之间 |
| 类型2(网络) | DR | 非点到点所有OSPF路由器 | 在生成他的区域内 |
| 类型3(网络摘要) | ABR | 一个区域的汇总的路由 | 不同的OSPF区域之间 |
4. 验证分析结果在路由器 R3 和 R4 上使用 display ospf lsdb 查看路由器的 LSDB。
【思考问题】(请回答)
-
Hello 报文的作用是什么?
建立连接 维护连接 同步信息
-
指定路由器(DR)、备份指定路由器(BDR)是怎样选举出来的?
如果有手工指定的 ROUTER-ID,则使用该 ROUTER-ID 参与选举。如果没有手工指定的 ROUTER-ID,则看路由器是否有 Loopback 接口,如果有,则使用 Loopback 接口上的 IP 作为 ROUTER-ID 参与选举。如果没有 Loopback 接口,则比较所有的物理接口,并使用其中最大的 IP 作为 ROUTER-ID 参与选举。所有的 OSPF 路由器交换自己的 ROUTER-ID。具有所有 ROUTER-ID 中最大一个的路由器将作为 DR,具有次大 ROUTER-ID 的路由器则成为 BDR。
-
Database Description 报文的作用是什么?
提供关于数据库的详细信息,帮助网络管理员进行数据库管理和优化。
-
Link State Request 报文的作用是什么?
收集相邻路由器的链路状态信息。
-
Link State Update 报文的作用是什么?
传播路由信息、计算最短路径、维护网络拓扑、检测和修复故障以及提高网络稳定性。
-
Link State Acknowledge 报文的作用是什么?
确保所有路由器都能够准确地了解网络的当前状态,从而能够选择最佳的路由。