1.1 OSPF 单区域
1.1.1 实验介绍
1.1.1.1 学习目标
1. 实现单区域 OSPF 的配置
2. 实现 OSPF 区域认证的配置
3. 描述 OSPF 在多路访问网络中邻居关系建立的过程
4. 实现对 OSPF 接口代价值进行修改
5. 阐明 OSPF 中 Slient-interface 的配置方法
6. 实现通过 display 命令查看 OSPF 各种状态
1.1.1.2 实验组网介绍
R1、R2、R3 之间通过交换机 S1 相连,其接口、IP 地址如图所示。R1、R2、R3 上均创建Loopback0,IP 地址为 10.0.x.x/24,其中x为设备编号。R1、R2、R3 所有接口都属于区域 0,在互联接口、Loopback0 接口上激活 OSPF。
1.1.1.3 实验背景
你是公司的网络管理员。现在公司的网络中有三台 AR 路由器,通过以太网实现相互的连通。在以太网这样的广播式多路访问网络上,可能存在安全隐患,所有你选择采用 OSPF 区域认证的方法来避免恶意的路由攻击。
1.1.2 实验任务
1.1.2.1 任务思路
1. 设备 IP 地址配置
2. 在 R1、R2、R3 上配置 OSPF,手动指定 Router ID,并在互联接口、Loopback0 接口上激活 OSPF
3. 配置完成后,在 R1、R2、R3 上检查 OSPF 邻居关系状态、OSPF路由表,并检查 R1、R2、R3 环回口之间的连通性
4. 手动关闭 R1、R2、R3 的互联接口,开启debug 以观察 OSPF 邻居关系的建立过程,再同时开启互联接口,观察设备的debug 输出
5. 手动修改 R2 Loopback0 接口的网络类型,观察 OSPF 路由的掩码长度变化
6. 手动修改 OSPF 接口的 Cost 值
7. 分别将互联接口、Loopback0 接口配置为 OSPF Silent-Interface,观察现象的区别
1.1.2.2 任务步骤
步骤 1、互联接口、环回口 IP 地址配置
# 设备命名
略
# 配置 R1 G0/0/0 接口、换回口 IP 地址
# 配置 R2 G0/0/0 接口、换回口 IP 地址
# 配置 R3 G0/0/0 接口、换回口 IP 地址
# 在 R1 上验证连通性
步骤 2、配置单区域 OSPF
# 配置 R1、R2、R3 的 OSPF Router ID 为 Lookback0 接口地址,OSPF 进程号为 1
在eNSP(Enterprise Network Simulation Platform,企业网络仿真平台)中,命令[R1]ospf 1 router-id 10.0.1.1是用于配置OSPF(Open Shortest Path First,开放最短路径优先)路由进程的。
[R1]:这部分表示你正在对名为R1的设备进行操作。
ospf 1:这个命令用于在设备上创建一个OSPF进程,数字“1”表示这是第一个OSPF进程。eNSP和许多其他网络仿真软件以及实际网络设备都支持多个OSPF进程,这允许在同一台设备上运行多个独立的OSPF实例。
router-id 10.0.1.1:这个参数用于设置该OSPF进程的路由器ID。路由器ID是一个32位的IP地址,用于在OSPF区域内唯一标识每台参与OSPF的路由器。这个ID在OSPF区域内必须是唯一的,而且在整个区域内保持稳定,即使路由器的IP地址发生变化。
综合来说,[R1]ospf 1 router-id 10.0.1.1命令是在R1设备上创建一个新的OSPF进程(进程号为1),并设置该进程的路由器ID为10.0.1.1。这是配置OSPF路由协议的基础步骤之一,之后通常会继续配置其他OSPF相关的参数,如网络类型、接口IP地址等
# 在 R1、R2、R3 的互联接口上、Lookback 接口激活 OSPF
[R2]ospf 1
这个命令在设备R2上启动一个新的OSPF进程,进程ID为1。和之前一样,这允许R2设备参与OSPF路由协议。
[R2-ospf-1]area 0
这个命令将设备R2的OSPF进程1配置到区域0(Area 0)。在OSPF中,区域0(也称为骨干区域)是一个特殊的区域,它必须存在并且必须逻辑上连通。所有的其他区域(非骨干区域)都需要直接或间接地与区域0相连。区域0有助于确保OSPF网络的连通性,因为所有区域间的路由都通过区域0进行传递。
[R2-ospf-1-area-0.0.0.0] network 10.0.123.2 0.0.0.0
这个命令将接口或网络段10.0.123.2加入到OSPF区域0中。0.0.0.0是一个反掩码(wildcard mask),它实际上指定了与该网络段关联的所有主机位。在这个例子中,反掩码0.0.0.0意味着该命令将匹配所有以10.0.123.2开头的IP地址,这通常表示整个子网。
命令的完整意义是:在OSPF区域0中,将IP地址为10.0.123.2的网络段(及其所有主机)加入到OSPF进程中。这样做之后,R2设备会使用OSPF协议与同样配置了这个网络段的其他OSPF路由器交换路由信息。
总结一下,这些命令在R2设备上配置了一个OSPF进程,将其加入到了区域0,并将特定的网络段(10.0.123.2)纳入了OSPF的路由计算中。这确保了R2设备能够与其他OSPF路由器共享关于这个网络段的路由信息,从而实现网络中的路由优化和流量转发。
# 为保证安全性,配置 OSPF的区域认证,使用明文方式,密码配置为“huawei”
在OSPF配置中,authentication-mode命令用于设置OSPF区域的认证模式。
命令[R1-ospf-1-area-0.0.0.0] authentication-mode simple plain huawei在OSPF区域0中设置了简单的明文认证模式,并指定了认证密码为“huawei”。这里的“simple”表示使用简单的认证方式,“plain”表示使用明文密码,而“huawei”则是实际的认证密码。
步骤 3、检查 OSPF 配置结果
# 检查 R1、R2、R3 上的 OSPF 邻居信息
步骤 3、检查 OSPF 配置结果
# 检查 R1、R2、R3 上的 OSPF 邻居信息
当你执行 dis ospf peer 命令后,你得到的输出是关于与设备R1建立OSPF邻接关系的邻居设备的信息。下面是对输出内容的解析:
OSPF Process 1 with Router ID 10.0.1.1:这表示R1设备上运行的OSPF进程号是1,并且该设备的OSPF路由器ID是10.0.1.1。
Neighbors:这是列出与R1建立邻接关系的邻居设备的区域。
Area 0.0.0.0 interface 10.0.123.1(GigabitEthernet0/0/0)'s neighbors:这表示在区域0中,通过接口IP地址10.0.123.1(该接口可能是GigabitEthernet0/0/0)与R1建立邻接关系的邻居设备列表。
Router ID: 10.0.2.2 Address: 10.0.123.2:这是第一个邻居设备的信息。它的OSPF路由器ID是10.0.2.2,IP地址是10.0.123.2。
State: Full:这表示R1与这个邻居设备之间的邻接关系已经达到了Full状态,即完全邻接状态,可以交换完整的路由信息。
Mode:Nbr is Master:这表明邻接关系中,邻居设备是Master,而R1是Slave。这通常对于OSPF运行没有影响,只是表示在建立邻接关系时,哪一方首先发起Hello报文。
Priority: 1:这是邻居设备的OSPF优先级,用于DR/BDR选举。
DR: 10.0.123.3 BDR: 10.0.123.1:这表示在这个OSPF网络中,DR(指定路由器)的IP地址是10.0.123.3,BDR(备份指定路由器)的IP地址是10.0.123.1。
MTU: 0:这表示邻居设备的接口MTU(最大传输单元)大小为0,这在实际网络中通常不会是0,可能是配置或显示问题。
Dead timer due in 32 sec:这表示如果在接下来的32秒内没有从邻居设备收到Hello报文,邻接关系将进入Down状态。
Retrans timer interval: 5:这是重传Hello报文的间隔时间,单位是秒。
Neighbor is up for 00:04:43:这表示邻接关系已经建立了4分43秒。
Authentication Sequence: [ 0 ]:这表示认证序列号是0,如果没有启用认证或者认证成功,这个值通常是0。
Router ID: 10.0.3.3 Address: 10.0.123.3:这是第二个邻居设备的信息。它的OSPF路由器ID是10.0.3.3,IP地址是10.0.123.3(注意这个设备既是邻居也是DR)。
其他字段与第一个邻居设备的信息类似,这里不再重复解释。
从输出中可以看出,R1与两个邻居设备(IP地址为10.0.123.2和10.0.123.3的设备)在区域0中建立了完全的OSPF邻接关系,可以交换路由信息。同时,DR是IP地址为10.0.123.3的设备,BDR是R1自己(IP地址为10.0.123.1)。需要注意的是,MTU字段显示为0可能是个错误或者配置问题,通常需要进一步检查和确认。
从输出结果可知 R3 和 R1、R2 之间已经成功建立 OSPF 邻居关系
# 检查 R1、R2、R3的 OSPF 路由表
dis ospf routing 命令在华为设备上用于显示OSPF进程的路由表信息
解析如下:
OSPF Process 1 with Router ID 10.0.1.1:这表示OSPF进程号是1,并且该设备的OSPF路由器ID是10.0.1.1。
Routing Tables:这是OSPF路由表的标题。
Routing for Network:这表明下面列出的是OSPF学习到的网络路由。
Destination:目标网络的IP地址和子网掩码。
Cost:到达目标网络的OSPF路径成本。
Type:路由类型,可以是以下几种之一:
Stub:末梢网络,表示该网络只有一个出口。
Transit:过境网络,表示该网络不是末梢网络,并且可能有多个出口。
NextHop:到达目标网络的下一跳IP地址。
AdvRouter:通告该路由的OSPF路由器ID。
Area:该路由条目所属的OSPF区域ID。如果区域是0.0.0.0,则表示这是一个骨干区域(Area 0)的路由。
Total Nets: 4:OSPF路由表中总共包含4个网络条目。
Intra Area: 4:这些路由都是区域内(Intra-Area)路由,意味着它们都在同一个OSPF区域内。
Inter Area: 0:没有区域间(Inter-Area)路由,即没有学习到其他区域的路由。
ASE: 0:没有自治系统外部(Autonomous System External,ASE)路由,这通常与OSPF与BGP等其他路由协议的交互相关。
NSSA: 0:没有非完全末梢区域(Not-So-Stubby Area,NSSA)路由,NSSA是一种特殊的OSPF区域类型,可以引入外部路由但不对区域内其他路由器通告这些路由。
从输出结果可知 R1、R2、R3 都已经互相学习到 Loopback0 接口路由。
# 检查环回口之间的连通性
R1 上以 Loopback0 接口地址为源测试与 R2、R3 的 Loopback0 接口之间的连通性
# 在 R1 上查看 OSPF LSDB
dis ospf lsdb 命令用于显示OSPF的链路状态数据库(Link State Database, LSDB)
解析如下:
OSPF Process 1 with Router ID 10.0.1.1:这表示OSPF进程号是1,并且该设备的OSPF路由器ID是10.0.1.1。
Link State Database:这是链路状态数据库的标题。
Area: 0.0.0.0:这是OSPF区域ID,0.0.0.0表示骨干区域(Area 0)。
Type:链路状态通告(Link State Advertisement, LSA)的类型。OSPF定义了五种不同类型的LSA:
Router:路由器LSA,描述区域内路由器的链路状态和接口信息。
Network:网络LSA,描述广播或多路访问网络的链路状态。
LinkState ID:唯一标识LSA的标识符。对于Router LSA,它是产生此LSA的路由器的Router ID;对于Network LSA,它是产生此LSA的网络地址。
AdvRouter:通告此LSA的路由器的Router ID。
Age:LSA在LSDB中的年龄,单位是秒。如果LSA的年龄超过了MaxAge(通常是3600秒),该LSA将被从LSDB中删除。
Len:LSA的长度,单位是字节。
Sequence:LSA的序列号,用于检测和处理重复的LSA。
Metric:对于Router LSA,Metric字段通常设置为1。对于Network LSA,Metric字段通常为0,因为OSPF网络类型决定了网络之间的度量。
在这里一共可以看到4条 LSA,前3条为 Type-1 LSA,分别由 R1、R2和 R3 产生,可以通过AdvRouter 判断该 LSA 是由哪台路由器生成的。第四条为 Type-2 LSA,是由一个网段的 DR产生的。在这里,R3是 10.0.123.0/24 这个网段的 DR,所以该 Type-2 LSA的 AdvRouter 为10.0.3.3
# 查看 R1 产生的 Type-1 LSA
dis ospf lsdb router self-originate 命令用于显示本地路由器产生的Router LSA
解析如下:
Type:LSA类型,这里是Router。
Ls id:LSA的标识符,对于Router LSA来说,这是路由器的Router ID,即10.0.1.1。
Adv rtr:通告此LSA的路由器ID,也是10.0.1.1,表示这个Router LSA是由本地路由器产生的。
Ls age:LSA在LSDB中的年龄,这里是477秒。
Len:LSA的长度,单位是字节,这里是48字节。
Options:LSA的选项字段,'E'表示该LSA包含外部路由。
seq#:LSA的序列号,用于检测和处理重复的LSA,这里是80000012。
chksum:LSA的校验和,用于验证LSA的完整性,这里是0x837b。
Link count:此Router LSA中列出的链接数量,这里是2。
接下来是LSA中列出的具体链接信息:
Link ID:链接标识符,可以是一个网络地址或另一个路由器的Router ID。
Data:与Link ID相关联的IP地址或路由器接口地址。
Link Type:描述链接的类型,这里是TransNet和StubNet。TransNet表示一个传输网络,即两个路由器之间的直接连接;StubNet表示一个末梢网络,即只有一个出口的路径。
Metric:到达该链接的度量值,对于TransNet链接通常是1,对于StubNet链接通常是0。
Priority:路由器的OSPF优先级,用于选举DR(Designated Router)和BDR(Backup Designated Router),这里是Medium,通常对应OSPF的默认优先级值1。
# 查看 R3 产生的 Type-2 LSA
dis ospf lsdb network self-originate 命令用于显示本地路由器产生的Network LSA
解析如下:
Type:LSA类型,这里是Network。
Ls id:LSA的标识符,对于Network LSA来说,这是网络的IP地址,即10.0.123.3。
Adv rtr:通告此LSA的路由器ID,这里是10.0.3.3,表示这个Network LSA是由路由器R3产生的。
Ls age:LSA在LSDB中的年龄,这里是958秒。
Len:LSA的长度,单位是字节,这里是36字节。
Options:LSA的选项字段,'E'表示该LSA包含外部路由。
seq#:LSA的序列号,用于检测和处理重复的LSA,这里是80000007。
chksum:LSA的校验和,用于验证LSA的完整性,这里是0xf29a。
Net mask:网络的子网掩码,这里是255.255.255.0,表示这是一个C类网络。
Priority:DR的优先级,这里是Low,通常对应OSPF的默认优先级值1。需要注意的是,这里显示的优先级并不代表该路由器的OSPF优先级,而是DR的优先级。
Attached Router:与该网络直接相连的路由器列表。在这个例子中,有三个路由器(R3, R1, R2)直接连接到网络10.0.123.3/24。
从输出信息可以看到 Type-2 LSA 中的 Attached Router 描述了 DR 所在网段的邻居信息
步骤 4、观察 OSPF 邻居建立过程
# 关闭 R1、R2、R3 的互联接口
# 打开 R1、R2、R3 的 debug 功能以及开启 debug ospf event
debugging ospf 1 event命令用于启用OSPF事件的调试功能
# 重新打开 R1、R2、R3 的互联接口
笔者这里因为启动顺序 R1 和 R2 都显示被选举为 DR,但因为规则所以 R2 为最后的 DR
观察完了请读者自行将 R3 路由配置为 DR,这才是正确选择
(保存配置后先重启 R2 再重启 R1 即可)
步骤 5、配置 OSPF 接口的网络类型
# 在 R1 上查看 OSPF 路由表中的 R2、R3 的 Loopback0 接囗路由
# 以 R2 为例查看 OSPF 的 Type-1 LSA
可以看到 R2 上关于 Loopback0 接口的 LSA 里已经将掩码设为 32 位,OSPF 将Loopback接口视为一个末梢网络,且该网络中只连接着一个节点,因此无论该接口实际配置的网络掩码是多少位,OSPF 在 Type-1 LSA 中描述这个接口时,都以主机(32 位网络掩码)的形式进行通告
# 修改 R2 Loopback0 接口的网络类型
将 Loopback 接口的网络类型修改为 Broadcast,OSPF 在发布这个接口的网络信息时,会使用接口真实掩码(本例中 R2 的 Loopback0 接口真实掩码长度为 24 位)进行发布
在 R1 上再次查看 OSPF 路由表中 R2的 Loopback0 接口路由
从输出信息中可以看到路由的掩码已经变为 24 位
步骤 6、修改 OSPF 接口的 Cost 值
# 在 R1 上查看 OSPF 路由表中的 R3 Loopback0 接口路由
从输出信息可以看到其 Cost 值为 1
# 修改 R1 的 GE0/0/0 接口 OSPF Cost 值为 20,修改 R3 的 GE0/0/0 接口 OSPF Cost 值为 10
# 在 R1 上重新査看 OSPF 路由表中的 R2 Loopback0 接口路由
从输出信息可以看到其 Cost 值为 20
# 在 R3 上查看 OSPF 路由表中的 R1 Loopback0 接口路由
从输出信息可以看到其 Cost 值为 10
步骤 7、配置 OSPF的 Silent-Interface
# 将 R1 的 GE0/0/3 接囗配置为 Silent-linterface
# 查看 R1 的 OSPF 邻居表
配置互联接口为 Silent-Interface 之后,不再从该接口发送、接收 hello 报文,已经建立关系
的邻居消失
# 查看 R1 的 OSPF 接口 GE0/0/3 的信息
从输出信息可以看到该接口被设置为 Silent-Interface,不再存在 hello 报文
# 删除 R1 上 Silent-Interface 配置
# 将 R2、R3 的 Loopback0 配置为 Silent-Interface
# 在 R1 上查看 OSPF 路由表
发现 R2、R3 Loopback0 接口路由不存在
1.1.3 思考题
分析在实际的网络中,哪些接口可以配置为 Silent-Interface?
无需建立 OSPF 邻居关系的接口可以配置为 Silent-interface 接口,减少接口开销,同时无需对外发送 OSPF 报文。