Cisco IOS On Linux(IOL)是 Cisco IOS-XE 的简化版,它是 Cisco IOS 的一种轻量级实现。IOL 并不需要完整的虚拟机(Virtual Machine, VM)环境,可以直接在 Linux 上运行,极大地减少了对系统资源的需求。IOL 节点通过更精简的方式提供了 Cisco IOS 功能,适合构建实验室、测试网络协议和验证网络设计。
相比于 Cisco 的其他模拟器(如 GNS3 或者 CML),IOL 以其轻量和易用性著称,同时,Cisco 的官方实验平台 Cisco Modeling Labs(CML)也包含了 IOL 映像文件,因此使用 CML 的用户可以很容易获取所需的映像。
Containerlab 是一个用于在容器化环境中管理网络拓扑的工具,支持多种网络设备的容器化运行。与传统网络模拟器不同,Containerlab 专注于容器化的方式,在单一主机上管理和创建复杂的网络拓扑,不仅支持 Linux 平台,还支持其他基于容器的网络设备。
https://containerlab.dev/Containerlab 的优势包括:
资源利用率高:相比 VM,容器对 CPU 和内存的消耗更少,适合在个人电脑或服务器上部署大规模拓扑。轻松拓展和管理:Containerlab 支持用 YAML 文件来定义拓扑,管理和自动化都非常便利。多种设备支持:支持 Cisco、Juniper 等设备,并通过 vrnetlab 适配其他网络设备。部署 Cisco IOL 设备的准备工作在开始之前,确保您已具备以下条件:
Containerlab v0.58.0 或更高版本:支持 Cisco IOL 映像。Cisco IOL 映像文件:通过 Cisco CML 2.7 或更高版本获取。Docker 和 Vrnetlab:Vrnetlab 是一个开源工具,用于将 Cisco IOL 映像文件转换为 Docker 容器格式。在 Containerlab 中运行 Cisco IOL 设备的详细步骤下载并准备 Cisco IOL 映像首先,从 Cisco CML 中下载您需要的 IOL 映像文件(通常为 .bin 文件),将其放置在方便操作的目录下,比如 ~/Downloads。假设我们需要两个映像文件:
x86_64_crb_linux-adventerprisek9-ms(L3 映像)x86_64_crb_linux_l2-adventerprisek9-ms.bin(L2 映像)克隆 Vrnetlab 仓库为了将 IOL 映像文件转换为 Docker 容器,我们需要使用 Vrnetlab 工具。首先,将 Vrnetlab 仓库克隆到本地:
git clone https://github.com/hellt/vrnetlab.git移动并重命名 IOL 映像文件将下载的 IOL 映像文件移动到 vrnetlab/cisco/iol 目录下,并按以下格式重命名:
注意:将文件名中的版本号替换为实际版本,以便于后续管理。
生成 Docker 容器映像进入 vrnetlab/cisco/iol 目录,运行以下命令生成 Docker 映像:
cd vrnetlab/cisco/iolmake docker-image这个过程会创建适用于 Docker 的 IOL 容器映像。使用 docker images 命令可以查看生成的映像:
docker images此时应该可以看到 vrnetlab/cisco_iol 的映像列表,例如:
编写 Containerlab 拓扑文件接下来,通过编写 Containerlab 的拓扑文件来定义网络结构。在项目根目录下新建一个 .yaml 文件(如 multicast_01.yaml),文件内容如下:
在上述拓扑文件中,我们定义了三个 IOL 设备:
iol-1 和 iol-2 使用 L3 映像文件。iol-3 使用 L2 映像文件,并指定 type: l2 以便运行 L2 功能。启动 Containerlab 拓扑编写完拓扑文件后,通过以下命令启动 Containerlab:
containerlab deploy -t multicast_01.yamlContainerlab 将依据 YAML 文件中的拓扑定义创建并启动网络节点,初始化完成后,您可以通过 docker ps 命令查看当前正在运行的容器。
访问和验证 IOL 设备Containerlab 启动完成后,可以通过 SSH 访问 IOL 节点。默认 SSH 账号密码为 admin/admin。在命令行输入以下命令,登录到 IOL 节点进行版本检查:
ssh admin@192.168.100.31执行 show version 命令确认设备信息: