news 2026/10/8 14:32:08

CML网络仿真入门-4:Cisco Modeling Labs 节点与镜像定义指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CML网络仿真入门-4:Cisco Modeling Labs 节点与镜像定义指南

📌 引言(Introduction)

  • Cisco Modeling Labs 平台内置了一组节点定义(node definitions),每个节点定义都对应一个镜像定义(image definition),可让你立即启动建模实验。

  • 若要使实验中的设备版本与真实网络中使用的版本一致,有时需要上传额外的虚拟机(VM)镜像、创建新的镜像定义,并将其关联到现有的节点定义,从而确保实验中的设备版本与真实网络完全匹配。

  • 在更高级的场景中,你可能需要创建全新的节点(例如默认未捆绑的第三方 VM 镜像,如 Windows VM):为此必须先创建新的节点定义,再创建对应的镜像定义,最后将两者关联。

💡补充资源如需参考平台未包含的镜像和 YAML 文件等额外资源,可查阅 CiscoDevNet/cml-community (https://github.com/CiscoDevNet/cml-community)项目。 本课程将教授如何导入和管理镜像与节点定义,掌握该技能后,你将能够在实验中模拟各种 Cisco 及其他网络设备。


📌 节点定义(Node Definitions)

  • 在 Cisco Modeling Labs 中,节点定义代表一种虚拟设备类型;实验中的每个节点都有一个关联的节点定义,用于描述该节点及其属性,例如可用接口数量、接口名称,以及启动 VM 所需的其他关键参数。

  • 理解节点定义代表的是一个虚拟设备系列/类型,而非某个特定的 VM 镜像,这一点至关重要。

Introduction - Cisco Modeling Labs v2.10 - Cisco DevNet

🔹 添加新节点的流程

向 Cisco Modeling Labs 添加新节点时,必须按以下顺序操作:

  1. 首先创建节点定义;

  2. 然后创建对应的镜像定义。

🔹 节点定义的作用
  • 节点定义详细列出了使 Cisco Modeling Labs 能够启动与该节点关联的 VM 的所有属性。

  • 创建新节点定义有两种方式:

    • 上传该节点对应的 YAML 文件;

    • 从头手动创建。

  • 若选择从头创建新节点定义,你需要熟悉虚拟化技术,以及该类型设备的相关细节。

💡注意创建新节点定义时,请参考官方开发者文档中的指南,为自定义节点定义选择正确的参数值。该指南需结合虚拟设备的安装和配置文档一同使用。

cml-community/node-definitions at master · CiscoDevNet/cml-community · GitHub

🔹 节点与镜像定义关系示意图
[VM镜像] [VM镜像] [VM镜像] [VM镜像] ↕ ↕ ↕ ↕ [镜像定义] [镜像定义] [镜像定义] [镜像定义] ↕ ↕ ↕ ↕ └─────────┬─────────┘ ↕ [节点定义] ↕ ┌───────┴──────────┐ │ 实验中的设备实例 │ └──────────────────┘ ```- 一个节点定义可以对应多个镜像定义(即同一设备类型的不同软件版本) - 每个镜像定义对应一个具体的 VM 镜像文件 - 实验中实际运行的设备实例由节点定义和对应的镜像定义共同生成 --- ### 📌 镜像定义(Image Definitions) - 在 Cisco Modeling Labs 中,**镜像定义**代表 VM 镜像与节点之间的链接关系。 - 例如:镜像定义可以将 CSR 1000V 节点关联到特定的 Cisco IOS XE 软件镜像。 - 通常情况下,一个节点定义对应一种设备类型,但同一节点下可以挂载多个镜像定义(对应不同的软件版本)。 - 通过这种方式,你可以在 Cisco Modeling Labs 实验中为该节点选择使用不同版本的镜像。 > 💡 **注意** > 创建新的镜像定义时,需要将其与一个已有的节点定义相关联。你可以为现有节点定义添加新的软件版本,而节点定义本身已经存在。 > 但是,如果你想要添加一个完全全新的节点类型,则必须先为该设备创建节点定义。 --- ### 📌 导入节点定义(Import Node Definitions) - 在 Cisco Modeling Labs 中,你会找到一个参考平台库,其中包含各种 Cisco 网络设备、Linux 服务器镜像、流量生成器、非托管设备等,可直接在你的实验中使用。 - 但有时你可能需要使用参考平台中未包含的设备拓扑,常见场景包括: - 你需要某个特定设备的不同版本(例如生产网络中运行的是 CSR 1000 的旧版本) - 你想要使用完全不同类型的设备 - 实现方式:你可以将自己版本的镜像导入 Cisco Modeling Labs,并将其与现有的 CSR 1000V 节点定义关联,或者为你的设备版本创建一个全新的节点定义。 - 本实验将教授如何使用节点定义。 #### 🔹 实验环境说明 - 你使用的是美式英语键盘布局,实验初始化后该布局无法更改。 - 如需了解如何更改操作系统键盘布局和屏幕分辨率,请查看“设备帮助”。 - 开始初始化实验后,你可以离开此页面;设备准备就绪后你会收到通知。 --- ### 📌 使用镜像定义(Work with Image Definitions) - 有时你可能想要在 Cisco Modeling Labs 拓扑中使用参考平台未包含的设备,原因可能包括: - 你需要某个特定设备的不同版本 - 你运行的是生产网络中某设备的不同版本(例如旧版 CSR 1000) - 你想要使用完全不同类型的设备 - 实现方式:你可以将自己版本的镜像导入 Cisco Modeling Labs,并将其与现有节点定义关联,或者与你导入的节点定义关联。 - 本实验将教授如何使用镜像定义。 #### 🔹 实验活动目标 - 在本次活动中,你将创建一个新的镜像定义,并将其与一个现有的节点定义相关联。 #### 🔹 实验环境说明 - 你使用的是美式英语键盘布局,实验初始化后该布局无法更改。 - 如需了解如何更改操作系统键盘布局和屏幕分辨率,请查看“设备帮助”。 - 开始初始化实验后,你可以离开此页面;设备准备就绪后你会收到通知。 --- ### 📌 总结(Summary) - 除了内置的参考平台外,Cisco Modeling Labs 还支持“自带镜像”(bring your own image)模式,支持集成任何基于 KVM 的镜像。 - 虽然 Cisco 和社区可以提供第三方节点和镜像定义的示例 YAML 文件,但实际的 QCOW 镜像文件需要从各自的平台所有者处获取适当的许可和权限。 - 用户必须基于自己的许可协议自行提供这些镜像。 - 你可以使用 Cisco Modeling Labs 的 YAML 文件定义,这些定义已建立用于支持各种平台,包括 Cisco 和其他第三方供应商。 #### 🔹 节点定义文件夹 - 位置:CiscoDevNet/cml-community 项目的 node-definitions 目录 - 内容:包含 Cisco Modeling Labs 节点的 YAML 文件定义,例如 CPU、RAM、网络适配器等配置信息。 #### 🔹 Virl Base Images 文件夹 - 位置:CiscoDevNet/cml-community 项目的 virl-base-images 目录 - 内容:包含每个新增平台磁盘镜像对应的文件夹,每个平台文件夹中都有一个 YAML 文件,引用该平台的特定磁盘镜像文件。 > 💡 **注意** > 你需要自行从供应商处下载磁盘镜像文件。

cml-community/virl-base-images at master · CiscoDevNet/cml-community · GitHub

课堂实验1:

在CML中,你将找到一个参考平台库,涵盖各种思科网络设备、Linux服务器镜像、流量生成器、非托管设备,可供你在实验室使用,依此类推。然而,有时你的生产网络中也可能已经拥有其他需要使用的设备,比如旧版的CSR或ASA,这些设备是你希望在CML中复制的。在这种情况下,你可以上传图像版本并将其连接到新的或现有的节点定义上;请查看如何添加节点定义的步骤。

注意:默认情况下会选择“节点定义”选项卡。

仔细观察数值。关注“可用图像定义”字段。如果有多个图像定义与此节点定义链接,你将在此处看到它们。选择任意将引导你进入图像定义编辑器。

注意:在删除节点时,请确保该节点未被用于任何实验中,这样才能成功删除该节点。

id: Custom_csr1000v configuration: generator: driver: csr1000v provisioning: volume_name: disk media_type: iso files: - name: iosxe_config.txt content: |- hostname inserthostname-here end editable: true inherited: image: ram: true cpus: true cpu_limit: true data_volume: false boot_disk_size: false node: ram: true cpus: true cpu_limit: true data_volume: false boot_disk_size: false device: interfaces: has_loopback_zero: true default_count: 4 loopback: - Loopback0 physical: - GigabitEthernet1 - GigabitEthernet2 - GigabitEthernet3 - GigabitEthernet4 - GigabitEthernet5 - GigabitEthernet6 - GigabitEthernet7 - GigabitEthernet8 - GigabitEthernet9 - GigabitEthernet10 - GigabitEthernet11 - GigabitEthernet12 - GigabitEthernet13 - GigabitEthernet14 - GigabitEthernet15 - GigabitEthernet16 - GigabitEthernet17 - GigabitEthernet18 - GigabitEthernet19 - GigabitEthernet20 - GigabitEthernet21 - GigabitEthernet22 - GigabitEthernet23 - GigabitEthernet24 - GigabitEthernet25 - GigabitEthernet26 serial_ports: 2 general: description: Custom Cloud Services Router 1000V nature: router read_only: true schema_version: 0.0.1 sim: linux_native: cpus: 1 disk_driver: virtio driver: csr1000v libvirt_domain_driver: kvm nic_driver: vmxnet3 ram: 3072 cpu_limit: 100 boot: timeout: 250 completed: - Would you like to enter the initial configuration dialog? - Press RETURN to get started! - '%CVAC-4-CONFIG_DONE:' pyats: os: iosxe series: csr1000v config_extract_command: show run ui: description: |- Custom Cloud Services Router 1000V 3 GB DRAM, 1 vCPU [CCO Link](https://www.cisco.com/c/en/us/support/routers/cloud-services-router-1000v-series/tsd-products-support-series-home.html) [Release Notes](https://www.cisco.com/c/en/us/td/docs/routers/csr1000/release/notes/xe-16/csr1000v-rn-16-6-book.html) group: Cisco icon: router label: CSR1000v label_prefix: csr1000v- visible: true

注意:你可以创建没有关联图像定义的节点定义,但不能反过来做。

现在你已经成功导入了一个节点定义。要在实验室中使用它,你还需要将其与图像定义相关联。

课堂实验2:

在本活动中,你将创建一个新的映像定义,并将其与现有的节点定义相关联。

PS:默认情况下,CML附带了一组参考映像,但并不包括所有Cisco映像。根据客户的许可证授权,可能会向客户提供额外的图像。有关其他思科和第三方设备镜像和YAML定义文件,请参见GitHub - CiscoDevNet/cml-community: Community Contributed Content and Resources for Cisco Modeling Labs · GitHub

你已经成功创建了新的图像定义。如果你返回到步骤6并观察上传图像的列表,该列表应该是空的。这是因为你上传的图像现在与你创建的图像定义相关联,因此不能进一步使用。如果你想要创建另一个映像定义,你需要上传另一个虚拟机映像或删除你的映像定义。在这种情况下,以前上传的文件将再次可用。

PS:另一种方案,也可以通过SCP将虚拟机镜像上传到CML服务器上。该服务器专门设置了22号端口用于接收虚拟机镜像的上传。请使用用于访问CML用户界面的登录凭据来进行操作——例如,以管理员身份登录(而非系统管理员身份)。由于SCP连接仅用于上传镜像文件,因此需将根目录指定为SCP命令的目标路径。

例如,以下演示了如何将ASAv 9.12(2).qcow2文件上传到地址为172.16.0.10的CML服务器上:

  • scp asav9-12-2.qcow2 admin@172.16.0.10:/
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 14:31:54

基于MATLAB小波变换的图像去噪与边缘检测实现

很多人接触数字图像处理时,去噪和边缘检测往往是绕不开的两道坎。传统做法通常是:先高斯滤波或者中值滤波把噪声压下去,再用Sobel、Prewitt或者Canny算子找边缘。这套组合拳对付轻度噪声没问题,但一旦噪声变重,或者图像…

作者头像 李华
网站建设 2026/10/8 14:31:51

RISC-V trap机制详解:从CSR寄存器到中断处理实战

1. 为什么trap是RISC-V里最该先啃下来的硬骨头如果你刚开始接触RISC-V,大概率会先被一堆寄存器、指令格式、流水线概念轮番轰炸,然后某天突然撞上“trap”这个词——中断、异常、系统调用、断点,好像全都往这一个筐里装。很多人第一反应是“先…

作者头像 李华
网站建设 2026/10/8 14:30:02

从 CDS 搜索模型到 Business Role,SAP Enterprise Search 搜索连接器授权设计详解

企业搜索模型开发完成以后,一个很容易被忽略的问题马上会出现。我们在 SAP Fiori Launchpad 中已经能够搜索到自定义业务对象,Enterprise Search Connector 也已经正常生成,索引或者基于 CDS 的查询模型本身没有问题,但此时并不能简单地认为功能已经完成。搜索能力一旦进入…

作者头像 李华
网站建设 2026/10/8 14:29:59

默认浏览器设置全攻略:Windows/macOS/手机端与运维批量方案

简介:一份关于Windows操作系统下设置默认浏览器的操作型图文笔记,适合经常使用多款浏览器、希望固定首选浏览器的普通用户与入门学习者查阅。教程覆盖控制面板、浏览器内置选项、注册表项修改和第三方工具四类常见设置路径,并说明不同方法的适…

作者头像 李华
网站建设 2026/10/8 14:27:56

【零基础学AI】第 4 章课后练习与答案

第 4 章课后练习与答案 本练习用于建立检查习惯,不构成医疗、法律或金融意见。文中书名、作者、奖项和公司均为教学用虚构信息。 建议先完成前四部分,再查看参考答案。🌈 关于《AI 零基础 36 讲》课后训练 📚 与正式讲解配套学习 …

作者头像 李华
网站建设 2026/10/8 14:27:44

系统分享预览图加载失败就白屏?HarmonyOS 7 缩略图预算与回退策略

系统分享预览图加载失败就白屏?HarmonyOS 7 缩略图预算与回退策略 先定义什么叫“通过” 原图可以正常打开,分享面板却长时间没有预览;开发者为了“看起来高清”,把大图读取、旋转和缩放全部放在点击分享之后。预览只是帮助用户确…

作者头像 李华