高级配置
本节介绍高级步骤,帮助您更好地利用 Cumulus VX;例如,您可以
- 通过使用 ONIE 安装 Cumulus VX 二进制映像,在您的虚拟环境中测试 Cumulus Linux 升级过程。
- 转换双叶和单脊拓扑,以便您可以按照 Cumulus Linux on demand 实验室教程进行操作。
- 运行拓扑转换器脚本,将拓扑文件转换为 Vagrantfile,以便您可以模拟包含服务器和自定义接口名称及连接的自定义网络拓扑。
安装 ONIE 虚拟机
Cumulus VX 映像包括 GRUB 引导加载程序和开放网络安装环境 (ONIE)。您可以使用二进制映像在交换机硬件上安装 Cumulus Linux。您可以通过在虚拟环境中使用 ONIE 安装 Cumulus VX 二进制映像来测试此过程。
启动虚拟机后,使用以下两种方法之一重启进入 ONIE Rescue 模式
- 选择下次重启时进入 ONIE Rescue 模式,并使用
sudo onie-select -rf && sudo reboot
命令重启虚拟机。 - 重启并在 GRUB 菜单上的前 5 秒内,将启动映像更改为
ONIE
,然后使用 GRUB 菜单选择ONIE Rescue Mode
。
要安装 Cumulus VX,请运行 onie-nos-install <URL to cumulus-linux-vx-amd64.bin>
命令。
转换 Cumulus Linux On Demand 的拓扑
NVIDIA 提供 Cumulus Linux on-demand,帮助您熟悉 Cumulus Linux。此入门实验室教程包含各种自定进度的实验室,让您练习配置 Cumulus Linux 并使用 NCLU、FRR 和 BGP unnumbered 等功能。
Cumulus Linux on-demand 实验室使用以下拓扑

为了能够按照实验室进行操作,您需要将本文档中使用的双叶和单脊拓扑转换为实验室中使用的拓扑。
作为将 Cumulus VX 与 Cumulus Linux on demand 实验室结合使用的替代方案,您可以使用 NVIDIA AIR,这是一个免费的个人虚拟数据中心网络,提供了一种低成本的方式来了解 NVIDIA 技术的实际应用。您的虚拟数据中心包含两个机架,其中两个双宿主服务器与叶脊网络连接。
要转换拓扑,您需要
- 更改 leaf01 和 leaf02 上的端口(spine01 不需要任何端口更改)
- 创建 server01 和 server 02 虚拟服务器
对于 VirtualBox 和 Vagrant 或 KVM-QEMU 和 Vagrant,您可以运行拓扑转换器来转换拓扑。请参阅下面的运行拓扑转换器部分。
更改端口
在 leaf01 和 leaf02 上执行以下步骤
获取 swp1、swp2 和 swp3 的 MAC 地址
cumulus@leaf01:mgmt:~$ ip link show swp1 3: swp1: <BROADCAST,MULTICAST,UP,LOWER,LOWER_UP> mtu 9216 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:8c:cf:41 brd ff:ff:ff:ff:ff:ff:ff
cumulus@leaf01:mgmt:~$ ip link show swp2 4: swp2: <BROADCAST,MULTICAST,UP,LOWER,LOWER_UP> mtu 9216 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:2a:5b:4e brd ff:ff:ff:ff:ff:ff:ff
cumulus@leaf01:mgmt:~$ ip link show swp3 5: swp3: <BROADCAST,MULTICAST,UP,LOWER,LOWER_UP> mtu 9216 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:91:9a:48 brd ff:ff:ff:ff:ff:ff:ff
以 root 用户身份,更改与上一步中为 swp1、swp2 和 swp3 获取的 MAC 地址关联的端口;例如
root@leaf01:mgmt:~$ echo 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="08:00:27:8c:cf:41", NAME="swp51", SUBSYSTEMS=="pci"' >> /etc/udev/rules.d/70-persistent-net.rules
root@leaf01:mgmt:~$ echo 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="08:00:27:2a:5b:4e", NAME="swp49", SUBSYSTEMS=="pci"' >> /etc/udev/rules.d/70-persistent-net.rules
root@leaf01:mgmt:~$ echo 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="08:00:27:91:9a:48", NAME="swp50", SUBSYSTEMS=="pci"' >> /etc/udev/rules.d/70-persistent-net.rules
Cumulus VX 支持使用 Linux udev 规则来重命名接口以匹配任何所需的拓扑。
以 root 用户身份,运行以下命令以禁用 Cumulus VX 上的默认重映射,然后重启交换机。
root@leaf01:mgmt:~$ mv /etc/hw_init.d/S10rename_eth_swp.sh /etc/S10rename_eth_swp.sh.backup root@leaf01:mgmt:~$ reboot
登录交换机,然后启动 swp49、swp50 和 swp51
cumulus@leaf01:mgmt:~$ net add interface swp49,swp50,swp51 cumulus@leaf01:mgmt:~$ net commit
创建 server01 和 server02
在您的 hypervisor 环境中,创建两个 Ubuntu 虚拟服务器;server01 和 server02。
- 在 server01 上,将 eth1 连接到 leaf01 上的 swp1,将 eth02 连接到 leaf02 上的 swp1。
- 在 server02 上,将 eth1 连接到 leaf01 上的 swp2,将 eth02 连接到 leaf02 上的 swp2。
有关创建虚拟服务器和网络连接的详细说明,请参阅您的 hypervisor 文档。
更改端口并创建 server01 和 server02 后,您就可以访问 Cumulus Linux on-demand 并按照实验室教程进行操作了。
运行拓扑转换器
拓扑转换器可以帮助您直接在笔记本电脑或专用服务器上模拟自定义网络拓扑。拓扑可能非常完整;您可以模拟主机以及网络设备。
拓扑转换器将 Graphviz 拓扑文件 (.dot
文件)(描述了逐个链路的网络拓扑)转换为 Vagrantfile,该文件完全表示了拓扑。Vagrant 使用 Vagrantfile 来定义 VM 设置和连接。然后,您可以使用 VirtualBox 和 Vagrant 或 KVM-QEMU 和 Vagrant 来模拟拓扑。
拓扑转换器
- 重映射 VX 交换机和主机上的接口,以匹配提供的拓扑文件中使用的接口。
- 从 Vagrantfile 中删除额外的基于 Ruby 的逻辑,以提供简单的人工可读输出。
- 生成包含服务器和交换机以及 Vagrant Box 映像中找到的任何其他内容的 Vagrantfile。
安装拓扑转换器
按照以下步骤安装所需的工具,并下载拓扑转换器脚本和所需的文件。
此过程假定您在运行 Linux 的系统上,并且有可用的 Vagrant Box 映像。
安装运行拓扑转换器所需的工具
local@host:~$ sudo apt install python3-pip local@host:~$ sudo pip3 install --upgrade pip local@host:~$ sudo pip3 install setuptools local@host:~$ sudo pip3 install pydotplus local@host:~$ sudo pip3 install jinja2 local@host:~$ sudo pip3 install ipaddress
从 GitLab 下载拓扑转换器源代码。
拓扑转换器脚本 (
topology_converter.py
) 和所需的文件下载到topology_converter
文件夹,该文件夹还包括一个用于文档的子文件夹和一个用于示例拓扑的子文件夹。
转换拓扑
在
topology_converter
文件夹(其中包含topology_converter.py
)中,创建一个topology.dot
文件。以下示例
toplology.dot
文件表示 Cumulus Linux on demand 实验室中使用的拓扑;leaf01、leaf02、spine01、server01 和 server02。使用以下拓扑,您可以按照 Cumulus Linux on demand 进行实验室教程。graph dc1 { "spine01" [function="spine" os="CumulusCommunity/cumulus-vx" memory="768" config="./helper_scripts/extra_switch_config.sh"] "leaf01" [function="leaf" os="CumulusCommunity/cumulus-vx" memory="768" config="./helper_scripts/extra_switch_config.sh"] "leaf02" [function="leaf" os="CumulusCommunity/cumulus-vx" memory="768" config="./helper_scripts/extra_switch_config.sh"] "server01" [function="host" os="ubuntu/xenial64" memory="512" config="./helper_scripts/extra_server_config.sh"] "server02" [function="host" os="ubuntu/xenial64" memory="512" config="./helper_scripts/extra_server_config.sh"] "spine01":"swp1" -- "leaf01":"swp51" "spine01":"swp2" -- "leaf02":"swp51" "leaf01":"swp49" -- "leaf02":"swp49" "leaf01":"swp50" -- "leaf02":"swp50" "server01":"eth1" -- "leaf01":"swp1" "server01":"eth2" -- "leaf02":"swp1" "server02":"eth1" -- "leaf01":"swp2" "server02":"eth2" -- "leaf02":"swp2" }
运行以下命令将
topology.dot
文件转换为 Vagrantfilelocal@host:$ python3 ./topology_converter.py ./topology.dot
使用 Libvirt,运行以下命令
local@host:$ python3 ./topology_converter.py ./topology.dot -p libvirt
拓扑转换器逐行读取提供的拓扑文件,并了解有关拓扑中每个节点和每个链路的信息。它将此信息存储在
variables
数据结构中。您可以使用jinja2
模板 (/templates/Vagrantfile.j2
) 基于variables
数据结构创建 Vagrantfile。使用
vagrant up
命令启动模拟。使用 Livirt,使用vagrant up --provider=libvirt
命令启动模拟。登录到每个交换机,然后启动接口。
要进一步探索拓扑转换器,请阅读文档并查看您下载的源代码中包含的示例拓扑选择。
如果您遇到任何问题,可以直接在 GitLab 拓扑转换器项目中提交。