Skip to content

Yokumii/Cisco-Network-Simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cisco Network Simulator

基于 Dynamips/Dynagen 的 Cisco 网络模拟实验环境,支持自动化配置和管理。

目录结构

.
├── ios/             # Cisco IOS 镜像文件
├── net/             # 网络拓扑配置文件 (.net)
├── configs/         # 路由器配置文件保存位置
├── working/         # Dynamips 工作目录
├── labs/            # 实验目录
│   ├── lab-template/    # 实验模板
│   └── README.md        # 实验使用说明
├── utils/           # 工具脚本
│   ├── auto_config.py   # Python 自动配置工具
│   └── lab_utils.sh     # Bash 工具函数
├── docs/            # 文档
│   └── tutorial.md      # Dynamips/Dynagen 教程
├── startlab.sh      # 实验环境管理脚本
├── requirements.txt # Python 依赖
└── README.md        # 项目说明

快速开始

方式一:使用管理脚本(传统方式)

cd ~/cisco-lab
./startlab.sh

方式二:使用结构化实验(推荐)

# 1. 安装依赖
pip3 install -r requirements.txt

# 2. 进入实验目录
cd labs/lab-template

# 3. 启动实验环境
./start.sh

# 4. 在另一个终端中自动配置设备
./configure.sh

可用的 IOS 镜像

  • c2600-i-mz.121-3.T.bin - Cisco 2600
  • c2691-advsecurityk9-mz.124-11.T2.bin - Cisco 2691
  • c3640-js-mz.124-10.bin - Cisco 3640
  • c7200-is-mz.122-37.bin - Cisco 7200

预配置的网络拓扑

传统拓扑文件(net/目录)

  1. bupt-sw.net - BUPT 交换机实验(2个交换机 + 3个PC)
  2. bupt_rt.net - BUPT 路由器实验(2个路由器 + 2个PC)
  3. router-with-tap.net - 路由器 + TAP 接口实验

结构化实验(labs/目录)

  • lab-template/ - 实验模板,包含完整的自动化配置示例

查看 labs/README.md 了解如何创建和管理实验。

Dynagen 常用命令

在 Dynagen 控制台中可以使用以下命令:

help              # 显示帮助信息
list              # 列出所有设备
start /all        # 启动所有路由器
stop /all         # 停止所有路由器
console R1        # 连接到 R1 的控制台
telnet R1         # 使用 telnet 连接到 R1
reload R1         # 重启 R1
save /all         # 保存所有路由器配置
suspend R1        # 暂停 R1
resume R1         # 恢复 R1
idlepc get R1     # 获取 R1 的 idle-pc 值(降低 CPU 占用)
idlepc set R1 0x60a88eb0  # 设置 R1 的 idle-pc 值
show R1           # 显示 R1 的详细信息

连接到路由器控制台

方法一:在 Dynagen 中直接连接

=> console R1

方法二:使用 telnet

# 在另一个终端中
telnet localhost 2001  # 连接到 R1
telnet localhost 2002  # 连接到 R2
telnet localhost 2003  # 连接到 R3

退出 telnet:按 Ctrl + ],然后输入 quit

重要提示:设置 Idle PC 值

Idle PC 是降低 CPU 占用的关键!

获取 Idle PC 值的步骤:

  1. 启动一个路由器实例
  2. 等待路由器完全启动
  3. 在 Dynagen 控制台中执行:
    => idlepc get R1
    
  4. 选择一个标记为 [*] 的值
  5. 将该值添加到 .net 配置文件中:
    [[7200]]
        idlepc = 0x60a88eb0

示例输出:

=> idlepc get R1
Please wait while gathering statistics...
0x60a88eb0 [*]
0x60a88f20
0x60a89100 [*]
...

选择标记为 [*] 的值通常效果最好。

创建自定义拓扑

~/cisco-lab/net/ 目录创建新的 .net 文件:

nano ~/cisco-lab/net/my-topology.net

基本模板:

[localhost]
    workingdir = /home/yokumi/cisco-lab/working
    
    [[7200]]
        image = /home/yokumi/cisco-lab/ios/unzip-c7200-is-mz.122-37.bin
        ram = 256
        npe = npe-400
        # idlepc = 0x60a88eb0  # 设置后取消注释
    
    [[ROUTER R1]]
        model = 7200
        console = 2001
        slot0 = PA-FE-TX
        
    [[ROUTER R2]]
        model = 7200
        console = 2002
        slot0 = PA-FE-TX

License

See the LICENSE file for more details.

自动化配置

配置单个设备

python3 utils/auto_config.py <端口> <配置文件>

# 示例:配置控制台端口 2001 的设备
python3 utils/auto_config.py 2001 configs/R1.txt

批量配置设备

使用结构化实验的 configure.sh 脚本可以自动并行配置所有设备。详见 labs/README.md

工具脚本

startlab.sh - 实验环境管理脚本

提供交互式菜单管理实验环境

utils/auto_config.py - Python 自动配置工具

使用 telnet 自动配置设备,支持异步并发

utils/lab_utils.sh - Bash 工具函数库

提供进程管理、状态查看、工作目录清理等功能

文档

故障排除

CPU 占用率过高: 设置正确的 idle-pc 值

无法连接控制台: 检查端口和 Dynamips 状态

netstat -tlnp | grep 2001
ps aux | grep dynamips

配置脚本无效: 确保设备已完全启动(等待 30 秒),检查日志 logs/*.log

About

Dynamips && Dynagen on linux platform for network simulating.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors