实验十六:路由环路问题

一、实验目的

理解IPv4数据报首部中生存时间TTL字段的作用。

验证静态路由配置错误可能导致路由环路问题。

验证IP数据报可能在路由环路中"兜圈"

二、 全局网络架构与 IP 地址规划策略

有别于单一网段的 VLSM 划分,本实验采用企业级网络中经典的"模块化层级设计(Hierarchical Network Design)"。为实现清晰的业务隔离与路由管理,全局网络地址被从逻辑上严格划分为"骨干互联区(WAN)"与"终端接入区(LAN)"两大部分,并采用完全独立的地址空间。

1. 骨干互联链路(WAN 区)分配策略

  • 规划原则: 骨干链路仅负责路由器节点之间的数据中转,不承载终端用户。为提高路由表的辨识度,采用 A 类私有地址空间进行部署。

  • 分配方案:

    • 骨干链路 1 (Router 0 - Router 1): 独立分配 10.0.0.0/30 网段。采用 /30 的极窄掩码(可用 IP 仅 2 个),刚好满足两端路由器的点对点(P2P)通信需求,杜绝了 IP 浪费与非授权设备的接入。推导补充: 子网掩码为 /30(前 30 位为 1,后 2 位为 0),二进制表示为 11111111.11111111.11111111.11111100,对应十进制为 255.255.255.252

    • 骨干链路 2 (Router 1 - Router 2): 独立分配 20.0.0.0/30 网段。设计理念及子网掩码推导同上。

2. 终端接入网络(LAN 区)分配策略

  • 规划原则: 局域网为终端设备提供网络接入。为保证充足的扩展容量及网段的标准化,采用 C 类私有地址空间,并统一使用 /24 的标准前缀。推导补充: 子网掩码为 /24(前 24 位为 1,后 8 位为 0),二进制表示为 11111111.11111111.11111111.00000000,对应十进制为 255.255.255.0

  • 分配方案:

    • 左侧局域网 (PC0 区域): 独立分配 192.168.0.0/24 网段。该网段可提供 254 个可用主机 IP。主机位数为 32 - 24 = 8 位,总 IP 数量为 2^8 = 256 个。减去一个网络地址 192.168.0.0 和一个广播地址 192.168.0.255,有效可用数为 256 - 2 = 254 个(IP 范围:192.168.0.1 - 192.168.0.254)。遵循最佳实践,将首个 IP (.1) 分配给 PC0,将末尾 IP (.254) 分配给 Router 0 的 Gig0/0 接口作为默认网关。

    • 右侧局域网 (PC1 区域): 独立分配 192.168.1.0/24 网段。该网段同样可提供 254 个可用主机 IP。减去网络地址 192.168.1.0 和广播地址 192.168.1.255,有效可用数为 256 - 2 = 254 个(IP 范围:192.168.1.1 - 192.168.1.254)。此处为独立的模块化网段划分,无需像前序 VLSM 实验那样强行连续分配地址块。同理,将首个 IP (.1) 分配给 PC1,将末尾 IP (.254) 分配给 Router 2 的 Gig0/1 接口作为默认网关。

3. 规划优势总结

此种分配方案彻底解耦了各网段之间的地址依赖。当未来需要新增局域网(如添加 192.168.2.0/24)或新增骨干链路(如添加 30.0.0.0/30)时,无需重新计算全局掩码,展现了极强的网络扩展性与排错直观性。

三、 基础物理拓扑构建与参数标识

在网络工程实战中,一张标识清晰、逻辑严密的"所见即所得"拓扑图,能极大降低后续命令行配置的出错率。本部分将在 Cisco Packet Tracer 模拟器中完成基础设施的搭建。

3.1 构建物理网络拓扑

良好的设备布局是网络配置成功的基础。

  • 设备选型与摆放:

    • 在软件左下角的设备分类栏中,选择"终端设备 (End Devices)",拖拽 2 台通用个人计算机(PC-PT)至逻辑工作区的左右两侧。

    • 选择"网络设备 (Network Devices)",拖拽 3 台型号为 2911 的 Cisco 路由器(分别作为 Router 0、Router 1、Router 2)至工作区中央,并按线性排列。

  • 建立物理连接: 点击"连接线 (Connections)"图标(闪电状)。为提高效率,可使用"自动选择连接类型"工具(亮黄色闪电图标),依次连接 PC0 -> Router 0 -> Router 1 -> Router 2 -> PC1

    (说明:若手动连线,遵循物理层规范,PC 与路由器之间应选择"铜缆直通线";路由器与路由器同种设备互联,应选择"铜缆交叉线"。但 2911 路由器的千兆接口支持 Auto-MDIX 自动翻转技术,实操中混用亦可连通。)

3.2 开启并标注路由器接口号

路由器拥有多个外观相同的千兆接口,配置前必须明确物理连线具体插在了哪个端口上,这是避免"路由环路"和"下一跳指错"的关键前提。在软件顶部菜单栏依次点击 Options -> Preferences,在弹出的窗口中勾选 Always Show Port Labels in Logical Workspace (始终在逻辑工作区显示端口标签)。此时,每根连线的两端都会亮起接口号(如 Gig0/0、Gig0/1)。为防止视觉混淆,选中右侧工具栏的"添加备注 (Place Note)"工具(快捷键 N),在连线旁边手动敲入大号字体的接口编号进行二次确认。


开启端口显示并手动用文字标注好各接口编号的拓扑图

3.3 完善拓扑 CIDR 与全局网络参数标注

将前期计算得出的理论地址块"可视化"到图纸上,构建严谨的工程施工图。继续使用"添加备注 (Place Note)"工具,严格按照"区域"与"节点"分层次标注。在每个独立网段的中心区域,写明网络名称及 CIDR 地址块。例如:网络 1 - CIDR地址块: 192.168.0.0/24网络 2 - CIDR地址块: 10.0.0.0/30。在 PC 设备旁,写明其分配的精确参数。例如:IP地址: 192.168.0.1子网掩码: 255.255.255.0默认网关: 192.168.0.254。在路由器的各个活动接口旁,标明分配给该接口的 IP 及掩码。例如 Router 0 的 Gig0/1 接口旁标注:IP地址: 10.0.0.1子网掩码: 255.255.255.252

四、 核心设备网络参数与路由配置

基础设施搭建完毕后,需要为全网设备注入"灵魂"(IP 地址与路由规则)。本环节分为基础 IP 分配与全局静态路由规划两步进行。

4.1 终端设备与核心路由器 IP 地址配置

(1)终端 PC 网络参数配置

在 Cisco Packet Tracer 工作区中,依次单击终端设备(PC0、PC1),进入 Desktop(桌面)-> IP Configuration(IP 配置),选择 Static(静态)模式,并严格按照下表录入数据:

设备名称 IPv4 地址 子网掩码 默认网关 所属网络 (CIDR)
PC0 192.168.0.1 255.255.255.0 192.168.0.254 网络 1 (192.168.0.0/24)
PC1 192.168.1.1 255.255.255.0 192.168.1.254 网络 4 (192.168.1.0/24)
[表 1:终端设备 IP 配置表]

(2)核心路由器物理接口配置表

双击各路由器设备,进入 CLI(命令行界面)选项卡。在敲击命令前,请再次核对以下全局接口分配表:

设备名称 接口名称 IPv4 地址 子网掩码 所属网络 接口作用说明
Router 0 Gig0/0 192.168.0.254 255.255.255.0 网络 1 左侧 PC0 所在局域网的默认网关
Router 0 Gig0/1 10.0.0.1 255.255.255.252 网络 2 连接 Router 1 的骨干链路端点
Router 1 Gig0/0 10.0.0.2 255.255.255.252 网络 2 连接 Router 0 的骨干链路端点
Router 1 Gig0/1 20.0.0.1 255.255.255.252 网络 3 连接 Router 2 的骨干链路端点
Router 2 Gig0/0 20.0.0.2 255.255.255.252 网络 3 连接 Router 1 的骨干链路端点
Router 2 Gig0/1 192.168.1.254 255.255.255.0 网络 4 右侧 PC1 所在局域网的默认网关
[表 2:路由器接口 IP 配置表]

(3)路由器接口配置代码实施

依次进入 R0、R1、R2 的 CLI 界面,键入以下命令激活接口并分配 IP:

Router 0 配置:
复制代码
Router>enable                                                // 进入特权模式
Router#configure terminal                                    // 进入全局配置模式

Router(config)#interface GigabitEthernet0/0                  // 进入连接 PC0 的接口
Router(config-if)#ip address 192.168.0.254 255.255.255.0     // 配置网关 IP 及掩码
Router(config-if)#no shutdown                                // 激活物理接口

Router(config-if)#interface GigabitEthernet0/1               // 切换至连接骨干网的接口
Router(config-if)#ip address 10.0.0.1 255.255.255.252        // 配置骨干网 IP
Router(config-if)#no shutdown                                // 激活物理接口
Router(config-if)#exit                                       // 退回全局配置模式
Router 1 配置:
复制代码
Router>enable                                                // 从用户模式进入特权模式
Router#configure terminal                                    // 从特权模式进入全局配置模式

// --- 配置连接 Router 0 的骨干链路 (网络 2) 的接口 ---
Router(config)#interface GigabitEthernet0/0                  // 进入千兆以太网接口 Gig0/0 的配置模式
Router(config-if)#ip address 10.0.0.2 255.255.255.252        // 配置接口 IP 地址和子网掩码 (对应 R0)
Router(config-if)#no shutdown                                // 开启该物理接口

// --- 配置连接 Router 2 的骨干链路 (网络 3) 的接口 ---
Router(config-if)#interface GigabitEthernet0/1               // 直接切换并进入千兆接口 Gig0/1 的配置模式
Router(config-if)#ip address 20.0.0.1 255.255.255.252        // 配置接口 IP 地址和子网掩码 (对应 R2)
Router(config-if)#no shutdown                                // 开启该物理接口

Router(config-if)#exit                                       // 退出接口配置模式,返回全局配置模式
Router 2 配置:
复制代码
Router>enable                                                // 从用户模式进入特权模式
Router#configure terminal                                    // 从特权模式进入全局配置模式

// --- 配置连接 Router 1 的骨干链路 (网络 3) 的接口 ---
Router(config)#interface GigabitEthernet0/0                  // 进入千兆以太网接口 Gig0/0 的配置模式
Router(config-if)#ip address 20.0.0.2 255.255.255.252        // 配置接口 IP 地址和子网掩码 (对应 R1)
Router(config-if)#no shutdown                                // 开启该物理接口

// --- 配置连接 PC1 所在局域网 (网络 4) 的接口 ---
Router(config-if)#interface GigabitEthernet0/1               // 直接切换并进入千兆接口 Gig0/1 的配置模式
Router(config-if)#ip address 192.168.1.254 255.255.255.0     // 配置网关 IP 地址和子网掩码 (对应 PC1)
Router(config-if)#no shutdown                                // 开启该物理接口

Router(config-if)#exit                                       // 退出接口配置模式,返回全局配置模式

链路状态验证: 上述代码执行完毕后,拓扑图中设备接口处的红色圆点均应转变为绿色的正三角形,系统提示 changed state to up,表明全网直连链路已打通。

4.2 全网静态路由转发策略与下一跳规划

完成直连网络的配置后,需通过静态路由规则打通跨网段的通信路径。在多路由互联的复杂网络中,配置静态路由需遵循"端到端(End-to-End)通信原则"。 对于基础连通性实验,我们只关注最终包裹要送达的地址。路由器的首要任务是打通首尾两个终端局域网(即"网络 1"与"网络 4")的数据传输链路,而无需为中间起中转作用的骨干链路("网络 2"与"网络 3")互配路由。 基于此原则,运用"目标网络 + 直连下一跳"的逻辑,三台核心路由器的盲区推导与转发策略如下:

当前路由器 目的网络 (通信目标) 目的网段 (CIDR) 本端发送接口 (出站) 下一跳接收设备与接口 下一跳 IP 地址
Router 0 网络 4 (右侧终端) 192.168.1.0/24 Gig0/1 Router 1 的 Gig0/0 10.0.0.2
Router 1 网络 1 (左侧终端) 192.168.0.0/24 Gig0/0 Router 0 的 Gig0/1 10.0.0.1
Router 1 网络 4 (右侧终端) 192.168.1.0/24 Gig0/1 Router 2 的 Gig0/0 20.0.0.2
Router 2 网络 1 (左侧终端) 192.168.0.0/24 Gig0/0 Router 1 的 Gig0/1 20.0.0.1
[表 3:全网静态路由转发策略规划表]

4.3 核心路由器静态路由代码实施

依据上述推导出的策略,静态路由的标准配置语法为:ip route [目标网络地址] [子网掩码] [下一跳 IP 地址]。在各路由器的全局配置模式下执行以下命令:

Router 0 配置:
复制代码
Router>enable                     //从用户执行模式进入特权执行模式
Router#configure terminal         //从特权执行模式进入全局配置模式

// 注入去往右侧终端网络 (网络 4) 的静态网络路由
Router(config)#ip route 192.168.1.0 255.255.255.0 10.0.0.2
Router 1 配置:
复制代码
Router>enable                                                // 从用户模式进入特权模式
Router#configure terminal                                    // 从特权模式进入全局配置模式

// 注入去往左侧终端网络 (网络 1) 的静态网络路由
Router(config)#ip route 192.168.0.0 255.255.255.0 10.0.0.1   // 目标网段 192.168.0.0/24,下一跳交由 Router 0 (10.0.0.1)

// 注入去往右侧终端网络 (网络 4) 的静态网络路由
Router(config)#ip route 192.168.1.0 255.255.255.0 20.0.0.2   // 目标网段 192.168.1.0/24,下一跳交由 Router 2 (20.0.0.2)

Router(config)#exit                                          // 退出全局配置模式
Router 2 配置:
复制代码
Router>enable                                                // 从用户模式进入特权模式
Router#configure terminal                                    // 从特权模式进入全局配置模式

// 注入去往左侧终端网络 (网络 1) 的静态网络路由
Router(config)#ip route 192.168.0.0 255.255.255.0 20.0.0.1   // 目标网段 192.168.0.0/24,下一跳交由 Router 1 (20.0.0.1)

Router(config)#exit                                          // 退出全局配置模式

五、 基础连通性测试与底层机制验证

在所有的 IP 和静态路由配置完成后,网络理论上已经打通。本环节将在实时模式(Realtime)下,通过跨网段的 Ping 测试来验证全网配置的正确性,并深度解析测试过程中出现的底层网络现象。

5.1 全网端到端连通性 Ping 测试

在 Cisco Packet Tracer 右下角确保处于 Realtime(实时工作模式)。单击左侧的终端 PC0,进入 Desktop -> Command Prompt(命令提示符)。输入以下命令,直接向右侧远端网络中的 PC1 发起连通性测试:

复制代码
ping 192.168.1.1    //测试PC0与PC1的连通性

连通性验证的五大核心目的: 此次跨越 3 台路由器的端到端 Ping 测试若能最终成功(返回 Reply from 192.168.1.1),则标志着以下五个层面的网络架构均已完美竣工:

  1. 拓扑验证: 物理网线连接完全正确,接口均已激活。

  2. 终端验证: PC0 与 PC1 的 IP、子网掩码及默认网关配置无误。

  3. 网关验证: 路由器各活动接口的 IP 与所在网段完全匹配。

  4. 路由验证(核心): 三台路由器的静态路由(ip route)条目及下一跳配置完全精确,实现了数据包的双向闭环转发。

  5. 地址解析验证: 成功迫使全网设备通过 ARP 协议获取了相邻接口的 MAC 地址,为后续的纯净数据传输扫清了障碍。

5.2 深度解析:为什么首次 Ping 会出现"请求超时 (Request timed out)"?

在首次执行跨网段的 Ping 命令时,你大概率会看到前 1 到 2 个数据包显示 Request timed out(请求超时) ,而后面的数据包才显示 Reply from...。再次执行 Ping 命令时,则会 4 个包全部秒通。

造成首包超时的根本原因,在于底层 ARP(地址解析协议)的工作机制:

  1. 没有 MAC 地址寸步难行: 当 PC0 想要发送 ICMP(Ping)数据报给 PC1 时,它发现目标不在同一网段,于是决定把包交给网关(Router 0)。但在数据链路层,PC0 必须知道 Router 0 接口的 MAC 物理地址 才能完成封装。

  2. ARP 广播寻址耗时: 首次通信时,PC0 的 ARP 缓存表是空的。它不得不暂停发送 ICMP 报文,先在局域网内大喊一声(发送 ARP 广播):"谁的 IP 是 192.168.0.254?请把你的 MAC 地址告诉我!"

  3. 报文被丢弃(超时产生): 路由器不仅不转发广播,而且处理 ARP 请求需要时间。在这个等待的过程中,原本准备发送的第一个 ICMP 报文由于等待超时 ,会被系统直接丢弃,从而在屏幕上打印出 Request timed out

  4. 逐跳解析与网络收敛: 同理,当 Router 0 把包交给 Router 1 时,Router 1 交给 Router 2 时,甚至 Router 2 交给 PC1 时,由于都是首次通信,每一跳都需要停下来做 ARP 解析。这就导致了前几个 Ping 包像"敢死队"一样,为了帮后续报文问路而牺牲。

  5. 后续畅通: 当全网设备的 ARP 表(MAC 与 IP 的映射)都建立完毕后,再次 Ping 时,数据包无需再问路,瞬间直达!

5.3 故障排查指南

如果在耐心等待后,4 个数据包全部 显示 Destination host unreachable(目标主机不可达)或持续 Request timed out,请严格按以下"由近及远"的顺序排查:

  • 第一步查物理: 检查拓扑图上是否还有红点?(大概率是路由器忘了敲 no shutdown)。

  • 第二步查终端: 重点核对 PC0 和 PC1 的 "默认网关" 是否与路由器接口 IP 一字不差。

  • 第三步查路由(重灾区): 在每台路由器特权模式下输入 show ip route 查看路由表。

    • 检查条目前面是否有 S(代表 Static 静态路由)。

    • 致命易错点: 重点检查静态路由的下一跳 IP 是否填错(必须是面对着自己的邻居接口 IP,绝不能是自己身上的 IP,也不能是最终目标的 IP)。

六、 路由环路故障模拟与 TTL 机制深度验证 (核心实验环节)

在复杂的静态路由配置中,由于网络管理员的人为失误,极易引发"路由环路"现象------即数据包在两台或多台路由器之间互相推诿,形成死循环。IPv4 报文首部设计了 TTL (Time to Live,生存时间) 字段,正是为了防止此类"僵尸数据包"无休止地消耗网络链路带宽。本环节我们将故意制造一个路由环路,并通过抓包深度观测 TTL 字段的保护机制。

6.1 开启仿真模式与协议监视 (ICMP)

为了直观地观察数据包在复杂网络中的寻址和跨路由转发过程,我们需要借助 Packet Tracer 强大的仿真功能,并过滤掉不相关的背景报文(如生成树 STP、路由更新等)。 切换工作模式: 在软件界面右下角,将默认的 Realtime(实时工作模式)切换至 Simulation(仿真工作模式)。 设置协议过滤器: 点击事件列表(Event List)下方的 Edit Filters(编辑过滤器) 按钮。在弹出的面板中,首先点击 Show All/None 清除所有默认的勾选状态。随后切换到 IPv4 选项卡,仅勾选 ICMP 协议(网际控制报文协议)。 操作目的说明: 经过此项设置,在随后的连通性测试中,拓扑图上将只显示用于 Ping 测试的 ICMP 报文(以醒目的信封图标呈现)。这相当于为网络开启了"上帝视角",便于我们清晰地追踪数据包是如何根据错误的静态路由条目"兜圈子"的。

6.2 故障注入:错误配置静态路由引发路由环路

(1)故障设计思路

假设我们在给十字路口 Router 1 配置静态路由时出现了重大笔误:将去往右侧网络 4 (192.168.1.0/24) 的数据包,不仅没有交给了正确的右侧邻居 Router 2,反而错误地交回给了左侧的邻居 Router 0

  • Router 0 的逻辑: "去往网络 4 的包,我按配置交给了 Router 1。"

  • Router 1 的逻辑(故障后): "去往网络 4 的包,我按配置交回给 Router 0。" 此时,Router 0 与 Router 1 之间便形成了致命的逻辑死循环。

(2)故障注入代码实施

在 Router 1 的 CLI 界面中,首先删除此前配置的正确路由,然后注入错误的路由条目:

复制代码
Router>enable                                                
Router#configure terminal                                    

// 第 1 步:删除原先去往 PC1 所在网络 (网络 4) 的正确路由条目
Router(config)#no ip route 192.168.1.0 255.255.255.0 20.0.0.2

// 第 2 步:注入错误的路由条目,将下一跳错误地指向 Router 0 (10.0.0.1)
Router(config)#ip route 192.168.1.0 255.255.255.0 10.0.0.1

Router(config)#exit

6.3 仿真观测:验证 IP 数据报的"兜圈"现象与 TTL 逐跳衰减

(1)发送测试报文

使用顶部工具栏的 Add Simple PDU 工具(闭合的信封图标),依次点击 PC0(源头)和 PC1(目标),生成一个单播的 ICMP 测试数据包。

(2)单步追踪与"兜圈"现象观测

Simulation Panel(仿真面板)的 Play Controls 中,点击 Capture / Forward(单步步进) 按钮。你将清晰地看到,携带 ICMP 报文的信封从 PC0 抵达 Router 0,Router 0 将其转发给 Router 1。紧接着,Router 1 并没有将其继续向右传递,而是原路退回给了 Router 0。此后,信封将在 Router 0 与 Router 1 之间不断地往复飞奔(兜圈)。

(3)TTL 逐跳衰减机制的底层验证(抓包分析)

数据包不能永远这样兜圈下去,否则整个骨干网的带宽将被瞬间占满。

  • 第一次抓包: 当数据包刚从 Router 0 转发给 Router 1 时,点击拓扑图上该信封图标。在弹出的 PDU Information(协议数据单元信息)窗口中,切换至 Outbound PDU Details(出站报文详情)选项卡,找到 IP 首部区域,记录此时的 TTL 字段数值(例如 TTL=254)

  • 第二次抓包: 继续点击单步步进,让该信封被 Router 1 退回给 Router 0 并再次由 Router 0 发出。再次点击该信封查看详情。

  • 核心验证结论: 你会发现,其首部中的 TTL 字段数值精确地减少了 1(例如变成了 TTL=253)。

(4)TTL 归零与数据报丢弃(防环机制生效)

  • 不断点击单步步进按钮,耐心观察直到这个在 Router 0 和 Router 1 之间兜圈的数据包的 TTL 值被逐跳减小至 0

  • 最终现象: 当 TTL 减为 0 时,收到该数据包的路由器将不再进行转发,信封图标上会出现一个火焰或红叉标识 ,表示该数据包已被路由器强制丢弃。同时,该路由器会向源主机(PC0)发送一个 ICMP Time Exceeded(生存时间超时)的报错报文。

  • 实验总结: 这完美证明了 IPv4 设计的伟大之处------通过 TTL 字段强制切断了路由环路带来的无尽资源消耗。

相关推荐
@insist1232 小时前
网络工程师-虚拟专用网技术(一):核心精讲
网络·网络工程师·软考·软件水平考试
我登哥MVP2 小时前
【Spring6笔记】 - 12 - 代理模式
java·spring boot·笔记·spring·代理模式·aop
没头脑的男大2 小时前
宇树的自己电脑的适配
linux·服务器·网络
guygg883 小时前
OPC UA Helper: 连接PLC获取变量值
服务器·网络·c#
我命由我123453 小时前
U 盘里出现的文件 BOOTEX.LOG
运维·服务器·经验分享·笔记·学习·硬件工程·学习方法
ytdbc3 小时前
hclp第三次
网络
九成宫3 小时前
IT项目管理期末复习——Chapter 5 项目范围管理
笔记·项目管理·软件工程
2601_949539453 小时前
15万级家用混动SUV电池与续航技术入门科普
运维·网络
呱呱巨基3 小时前
网络基础概念
linux·网络·c++·笔记·学习