前言
Dynamips 是一款经典的 Cisco 路由器模拟器,能够直接运行真实的 Cisco IOS 镜像。E-NetDev 模拟器完整支持 Dynamips 技术,可导入各类 Cisco IOS 镜像用于路由交换实验。本文详细介绍 Dynamips 镜像的完整导入流程。
第一章:Dynamips 镜像基础
1.1 Dynamips 技术特点
| 特性 | 说明 |
|---|---|
| 真实 IOS 运行 | 直接加载 Cisco 官方 IOS 镜像,非模拟实现 |
| 平台兼容 | 支持 7200、3600、3700、2600 等多个系列 |
| 资源占用低 | 相比 QEMU,内存和 CPU 消耗更少 |
| 启动速度快 | 秒级启动,适合大规模拓扑构建 |
1.2 支持的镜像格式
E-NetDev 支持以下 Dynamips 镜像格式:
| 格式 | 说明 | 适用场景 |
|---|---|---|
.bin | 原始 IOS 二进制文件 | 最常见,直接上传使用 |
.image | 重命名的 IOS 文件 | 部分旧版本使用 |
1.3 支持的设备平台
| 平台标识 | 对应设备 | 典型用途 |
|---|---|---|
c7200 | Cisco 7200 系列 | 高端路由实验、MPLS |
c3600 | Cisco 3600 系列 | 中端路由、语音网关 |
c3725 | Cisco 3725 | 企业边界路由 |
c3745 | Cisco 3745 | 高性能路由 |
c2691 | Cisco 2691 | 入门级路由 |
c2600 | Cisco 2600 系列 | 基础路由实验 |
第二章:镜像获取与准备
2.1 镜像文件命名规范
Dynamips 镜像文件名需包含平台标识和版本信息:
正确示例:
c7200-adventerprisek9-mz.152-4.M7.bin
c3725-adventerprisek9-mz.124-15.T14.bin
c2691-adventerprisek9-mz.124-15.T14.bin
命名结构:
[平台]-[功能集]-[版本号].bin
2.2 镜像存放目录结构
/opt/unetlab/addons/dynamips/
├── c7200/ # 7200 平台镜像
│ └── c7200-adventerprisek9-mz.152-4.M7.bin
├── c3725/ # 3725 平台镜像
│ └── c3725-adventerprisek9-mz.124-15.T14.bin
└── c2691/ # 2691 平台镜像
└── c2691-adventerprisek9-mz.124-15.T14.bin
每个平台需创建独立子目录,目录名与平台标识一致。
第三章:FTP 上传步骤
步骤一:连接 FTP 服务器
使用 FileZilla 或命令行工具连接 E-NetDev 服务器:
| 参数 | 示例值 |
|---|---|
| 主机 | 192.168.1.100 |
| 端口 | 21 |
| 协议 | FTP / FTPS |
| 用户 | root |
| 密码 | 服务器密码 |
步骤二:创建平台目录
导航至 Dynamips 镜像根目录,创建对应平台文件夹:
# 通过 SSH 预先创建目录
mkdir -p /opt/unetlab/addons/dynamips/c7200
mkdir -p /opt/unetlab/addons/dynamips/c3725
mkdir -p /opt/unetlab/addons/dynamips/c2691
# 设置权限
chown -R root:unl /opt/unetlab/addons/dynamips/
chmod -R 755 /opt/unetlab/addons/dynamips/
步骤三:上传镜像文件
FileZilla 拖拽上传:
- 本地站点:选中
.bin镜像文件 - 远程站点:导航至
/opt/unetlab/addons/dynamips/c7200/ - 拖拽文件至远程目录,等待上传完成
命令行 FTP 上传:
ftp 192.168.1.100
Name: root
Password: [输入密码]
ftp> binary # 切换二进制模式
ftp> cd /opt/unetlab/addons/dynamips/c7200/
ftp> put c7200-adventerprisek9-mz.152-4.M7.bin
ftp> quit
步骤四:验证文件完整性
上传后检查文件属性:
ls -la /opt/unetlab/addons/dynamips/c7200/
# 预期输出:
-rwxr-xr-x 1 root unl 68786540 May 8 00:20 c7200-adventerprisek9-mz.152-4.M7.bin
确保权限为
755,属主为root:unl。
第四章:配置 Dynamips 参数
4.1 创建平台配置文件
每个平台需创建 .yml 模板文件,定义运行参数:
c7200.yml 示例:
---
type: dynamips
name: Cisco 7200
description: Cisco 7206VXR Router
icon: Router.png
cpu: 1
ram: 512
nvram: 512
disk0: 0
disk1: 0
confreg: 0x2102
idlepc: 0x606e0538 # 关键参数,降低 CPU 占用
idlemax: 500
idlesleep: 30
exec_area: 64
mmap: true
sparsemem: true
slot0: C7200-IO-FE # 插槽 0:输入输出控制器
slot1: PA-2FE-TX # 插槽 1:双口快速以太网
slot2: PA-4E # 插槽 2:四口以太网
slot3: PA-GE # 插槽 3:千兆以太网
console: telnet
4.2 idlepc 参数获取
idlepc 是 Dynamips 的关键优化参数,用于降低空闲时 CPU 占用:
# 1. 手动启动 Dynamips 获取 idlepc
dynamips -P c7200 -t npe-400 /opt/unetlab/addons/dynamips/c7200/c7200-adventerprisek9-mz.152-4.M7.bin
# 2. 在控制台执行 idlepc 计算
idlepc get <设备ID>
# 3. 测试多个值,选择 CPU 占用最低的
idlepc show <设备ID>
# 4. 将最优值填入模板文件
不同 IOS 版本的
idlepc值不同,需针对每个镜像单独计算。
第五章:修复权限与验证
5.1 执行权限修复
上传镜像和配置后,必须执行权限修复:
/opt/unetlab/wrappers/unl_wrapper -a fixpermissions
或 Web 界面操作:
System → System Settings → Fix Permissions
5.2 Web 界面验证
- 刷新 E-NetDev Web 页面
- 进入实验室编辑模式
- 右键 Add Node → 选择 Dynamips 分类
- 确认设备列表显示:
- Cisco 7200
- Cisco 3725
- Cisco 2691 等
5.3 启动测试
添加节点后启动测试,验证镜像正常运行:
| 检查项 | 预期结果 |
|---|---|
| 节点状态 | 绿色运行指示灯 |
| 控制台连接 | 成功进入 IOS 命令行 |
| 基础命令 | show version 显示正确版本信息 |
| CPU 占用 | 空闲时低于 10%(idlepc 生效) |
第六章:高级配置技巧
6.1 多平台镜像批量上传
# 创建所有平台目录
for platform in c7200 c3600 c3725 c3745 c2691 c2600; do
mkdir -p /opt/unetlab/addons/dynamips/${platform}
done
# 批量设置权限
chown -R root:unl /opt/unetlab/addons/dynamips/
chmod -R 755 /opt/unetlab/addons/dynamips/
# 上传完成后统一修复
/opt/unetlab/wrappers/unl_wrapper -a fixpermissions
6.2 插槽模块配置
Dynamips 支持灵活配置接口模块:
| 模块标识 | 功能 | 适用平台 |
|---|---|---|
PA-2FE-TX | 2 口快速以太网 | c7200 |
PA-4E | 4 口以太网 | c7200 |
PA-GE | 千兆以太网 | c7200 |
NM-1FE-TX | 1 口快速以太网 | c3725/c3745 |
NM-4E | 4 口以太网 | c3725/c3745 |
WIC-1T | 1 口串行接口 | c2691/c2600 |
6.3 NVRAM 与配置保存
| 参数 | 说明 | 建议值 |
|---|---|---|
nvram | 非易失性内存大小 | 512 KB |
disk0 | 外部存储卡 0 | 0(禁用)或指定大小 |
disk1 | 外部存储卡 1 | 0(禁用)或指定大小 |
confreg | 配置寄存器 | 0x2102(正常启动) |
第七章:常见问题排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 节点启动后 CPU 100% | idlepc 未配置或错误 | 重新计算并设置 idlepc 值 |
| 控制台无法连接 | 镜像损坏或权限错误 | 重新上传,执行 fixpermissions |
show version 无输出 | 镜像与平台不匹配 | 确认镜像适用于对应平台 |
| 接口不显示 | 插槽模块配置错误 | 检查模板中 slot 配置 |
| NVRAM 配置丢失 | nvram 参数过小 | 增大 nvram 值至 512 或 1024 |
| 启动报错 “bad CPU type” | Dynamips 版本不兼容 | 更新 Dynamips 至最新版 |
| Web 界面无 Dynamips 选项 | 目录结构错误 | 确认路径为 /opt/unetlab/addons/dynamips/平台名/ |
文件路径速查表
| 用途 | 绝对路径 |
|---|---|
| Dynamips 镜像根目录 | /opt/unetlab/addons/dynamips/ |
| 7200 平台镜像 | /opt/unetlab/addons/dynamips/c7200/ |
| 3725 平台镜像 | /opt/unetlab/addons/dynamips/c3725/ |
| 2691 平台镜像 | /opt/unetlab/addons/dynamips/c2691/ |
| 平台模板文件 | /opt/unetlab/html/templates/intel/ 或 amd/ |
| 权限修复命令 | /opt/unetlab/wrappers/unl_wrapper -a fixpermissions |
Dynamips vs IOL vs QEMU 对比
| 特性 | Dynamips | IOL | QEMU |
|---|---|---|---|
| 真实性 | 运行真实 IOS | 基于 Linux 的 IOS | 完整硬件模拟 |
| 资源占用 | 中 | 低 | 高 |
| 启动速度 | 快 | 极快 | 较慢 |
| 功能完整度 | 完整 IOS 功能 | 基础功能 | 最完整 |
| 配置保存 | 支持 write mem | 支持 | 支持 |
| 适用规模 | 中型拓扑(10-20台) | 大型拓扑(50+台) | 小型拓扑(5-10台) |
| 学习成本 | 中(需理解插槽) | 低 | 高(需配置模板) |
Dynamips 是 E-NetDev 模拟器中运行真实 Cisco IOS 的经典方案,特别适合需要完整 IOS 功能验证的路由实验场景。通过 FTP 上传配合 idlepc 优化,可在保证真实性的同时实现高效的资源利用。














私信站长