在containerlab中使用Cisco Nexus 9000v虚拟路由器
概述
Cisco Nexus 9000v是一款虚拟化路由器,在containerlab项目中可以通过cisco_n9kv类型标识来使用。这种虚拟路由器基于vrnetlab项目构建,本质上是一个以Docker容器格式打包的Qemu虚拟机。
基本特性
Cisco Nexus 9000v节点在containerlab中启动时,默认已预配置并启用了以下服务:
- SSH访问
- SNMP协议支持
- NETCONF网络配置协议
- NXAPI接口
- gRPC服务
轻量版N9kv
对于Nexus 9000v轻量级版本,同样可以使用cisco_n9kv类型来启动。但需要注意资源需求差异:
- 标准版N9kv默认需要10GB内存和4个CPU
- 轻量版N9kv-lite最低需要6GB内存和2个CPU
配置示例:
topology:
nodes:
node:
kind: cisco_n9kv
env:
QEMU_MEMORY: 6144 # 最小6GB内存
QEMU_SMP: 2 # 最小2个CPU
节点管理
Cisco Nexus 9000v节点启动后,可以通过多种方式进行管理:
1. 容器Shell访问
docker exec -it <容器名称/ID> bash
2. CLI命令行界面
ssh admin@<容器名称/ID>
3. NETCONF接口
NETCONF服务运行在830端口:
ssh admin@<容器名称> -p 830 -s netconf
4. gRPC接口
gRPC服务运行在50051端口
默认凭据
- 用户名:admin
- 密码:admin
接口命名规范
在拓扑文件中可以使用与Nexus 9000v相同的接口命名方式:
- 命名格式:
Ethernet1/X或简写Et1/X,其中X是端口号 - 示例:
Ethernet1/1- 第一个数据端口Ethernet1/2- 第二个数据端口,以此类推
注意:数据端口编号从1开始。
接口映射关系
在容器内部,接口映射如下:
eth0:管理接口,连接到containerlab管理网络eth1:第一个数据接口,映射到虚拟机的第一个数据端口(显示为Ethernet1/1)eth2+:后续数据接口,依次映射到虚拟机的数据端口
管理IP分配
当containerlab启动Nexus 9000v节点时:
- 虚拟机的管理接口会从QEMU DHCP服务器获取
10.0.0.15/24地址 - 该接口与容器的
eth0接口透明连接 - 用户可以通过containerlab分配的IP访问Nexus 9000v的管理平面
注意:数据接口(Ethernet1/1+)需要通过CLI或其他管理接口手动配置IP地址。
高级配置选项
启动配置
可以让N9kv节点使用用户自定义的启动配置,而不是内置配置。通过节点的startup-config属性指定配置文件路径:
topology:
nodes:
node:
kind: cisco_n9kv
startup-config: myconfig.txt
工作原理:
- containerlab会从拓扑文件所在目录获取
myconfig.txt文件 - 将其复制到该节点的实验目录下,重命名为
/config/startup-config.cfg - 包含启动配置的目录会被挂载到容器中
- 节点启动时将应用此配置
注意:此配置是在节点启动后应用的,因此可以包含在默认配置基础上需要添加的部分配置片段。
使用建议
- 启动时间:Nexus 9000v容器完全启动大约需要5分钟,可通过
docker logs -f <容器名称>查看进度 - 资源分配:根据使用的版本(标准版或轻量版)合理分配资源
- 接口配置:管理接口自动配置,数据接口需要手动配置
- 启动配置:建议使用startup-config属性预配置常用参数
通过containerlab使用Cisco Nexus 9000v虚拟路由器,可以方便地在实验室环境中模拟真实网络设备,进行各种网络功能测试和验证。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



