交换矩阵配置 Juniper Apstra 使用演练
本节介绍在 AI JVD 实验室中部署 AI GPU 后端 IP 交换矩阵的步骤,并以如何使用 Juniper Apstra 部署交换矩阵为例。
这些步骤将涵盖使用 QFX5240-64CD 交换机作为主干叶角色的 AI GPU 后端 IP 交换矩阵,以及 AMD GPU 服务器和 Vast 存储设备。应遵循类似的步骤来设置前端和存储后端交换矩阵。
本节还提供了 AMD GPU 服务器的配置步骤。
设置 Apstra 服务器
首次连接到 Apstra 服务器虚拟机时,配置向导将启动。此时,可以配置 Apstra 服务器、Apstra UI 和网络配置的密码。
有关使用 Apstra 安装和分步配置的更多详细信息,请参阅 Juniper Apstra 用户指南。
在 Apstra 中接入设备
有两种方法将瞻博网络设备添加到 Apstra:
- 使用 ZTP
在 Apstra ZTP 服务器中,按照 Juniper Apstra 用户指南中所述的 ZTP 步骤进行作。
- 手动(下一节将详细介绍)
Apstra 将设备配置导入到称为原始配置的基准配置中,该配置干净、最小,没有任何可能干扰 Apstra 管理的预期网络设计的预先存在的设置。Apstra 会忽略 Junos 配置“组”部分,并且不会验证继承模型中列出的任何组配置,请参阅配置组使用指南。最佳做法是避免在此基准配置中设置环路、接口(管理接口除外)、路由实例(管理实例除外)或任何其他设置。Apstra 会在设备成功确认后设置协议 LLDP 和 RSTP。
要载入每台设备,请在 Apstra Web UI 中执行以下步骤:
步骤 1: 为 Junos 设备创建代理配置文件。
- 导航到设备 >> 代理配置文件
- 单击创建代理配置文件。
图 26.在 Apstra 中创建代理配置文件
注意:就此 JVD 而言,所有设备使用相同的用户名和密码。因此,只需一个 Junos 代理配置文件即可载入所有设备。
- 输入代理配置文件名称,选择平台 (Junos),然后输入 Apstra 用于与设备通信的用户名和密码。
- 这需要设备预配置 root 密码、在 Apstra 中配置的用户名和密码、管理 IP 和适当的静态路由(如果需要)以及 ssh Netconf,以便 Apstra 访问和配置这些设备。
图 27:Apstra 代理配置文件参数
- 输入所需信息后,点击创建。
- 确认代理配置文件创建。
图 28:全新 Apstra 代理配置文件验证
第 2 步: 为其他设备创建代理配置文件。
- 导航到 设备 >> 代理配置文件
- 单击创建 代理配置文件。
图 29.在 Apstra 中创建代理配置文件
- 输入代理配置文件名称,选择平台 (Junos),然后输入 Apstra 用于与设备通信的用户名和密码。
这需要设备预配置 root 密码、在 Apstra 中配置的用户名和密码、管理 IP 和适当的静态路由(如果需要)以及 ssh Netconf,以便 Apstra 访问和配置这些设备。
图 30:Apstra 代理配置文件参数
- 单击“创建”。
- 确认代理配置文件创建。
图 31:全新 Apstra 代理配置文件验证
步骤 3:为 QFX 设备创建异机代理。
- 导航至 设备 >> 托管设备
- 单击 创建异机代理。确保选择 异机代理。
图 32:在 Apstra 中创建异机代理
- 确定要接入的设备。您可以输入以逗号分隔的主机名、单个 IP 地址或 IP 地址范围列表。
注意:
您也可以提供 IP 地址范围,以便一次在 Apstra 中载入多台设备。以下示例中显示的范围仅用于演示目的。
- 选择平台和 代理配置文件 (选择在上一步中创建的配置文件)。
图 33:使用一系列 IP 地址识别要接入的设备
注意:注意:如果未选中“设置用户名?”和“设置密码?”,Apstra 将使用在上一步中创建的配置文件中的信息。
- 单击“创建”。
- 确认已添加设备以进行载入。创建异机代理后,设备将添加到受管理设备列表中。Apstra 将尝试连接,如果连接成功,将填充相关信息。
图 34:正在加载的新设备
第 4 步:创建 机载代理 并载入 NVIDIA 服务器。
- 导航至 设备 >> 托管设备
- 单击 “创建自带代理”。确保选择 Onbox Agent(s)。
图 35:在 Apstra 中创建自机代理
- 确定要接入的设备。您可以输入以逗号分隔的主机名、单个 IP 地址或 IP 地址范围列表。
注意:您也可以提供 IP 地址范围,以便一次在 Apstra 中载入多台设备。以下示例中显示的范围仅用于演示目的。
- 选择平台和 代理配置文件 (选择在上一步中创建的配置文件)。
图 36:使用一系列 IP 地址识别要接入的设备
注意:如果未选中“设置用户名?”和“设置密码?”,Apstra 将使用在上一步中创建的配置文件中的信息。
- 单击 “创建”。
- 确认已添加设备以进行载入。创建机载代理后,设备将添加到受管理设备列表中。Apstra 将尝试连接,如果连接成功,将填充相关信息。
图 37:正在加载的新设备
第 5 步:确认在 Apstra 蓝图中使用托管设备。
设备必须得到用户确认才能完成上线,并允许其成为 Apstra 蓝图的一部分。
为每台设备成功执行代理创建后,用户必须确认这些设备才能完成上线,并使其成为 Apstra 蓝图的一部分。这会将设备状态从 OOS-QUARANTINE 移至 OOS-READY。
- 选择设备
- 单击“确认所选系统按钮”
图 38:在 Apstra 蓝图中确认托管设备
Apstra Web UI 中的交换矩阵配置
要配置交换矩阵,请在 Apstra Web UI 中执行以下步骤:
这些步骤以 GPU 后端交换矩阵为例进行演示。
步骤 1:为叶节点和主干节点创建逻辑设备和接口图。
该示例说明如何为带有 LC1301 主干节点的 PTX10008 创建接口图和逻辑设备。
- 导航至 设计>逻辑设备
- 单击 创建逻辑设备。
图 39:创建逻辑设备
- 提供名称,添加其他端口,然后将速度更改为 800G。
-
单击 添加面板。
图 40:创建逻辑设备面板 1.

- 在第二个面板上提供名称,添加其他端口并将速度更改为 800G。
图 41:创建逻辑设备面板 2.
- 单击面板 1 和 2 的创建端口组。
图 42:创建逻辑设备端口组。
- 单击“创建”。
图 43:创建逻辑设备
- 验证逻辑设备的创建。
图 44:新逻辑设备
- 导航至 设计>逻辑设备
图 45:创建接口映射
对于 QFX5220 叶节点,逻辑设备和接口映射如图 46 和 47 所示:
图 46:用于 QFX5220 叶节点的 Apstra 逻辑设备
图 47:QFX5220 叶节点的 Apstra 接口图
对于 QFX5230-64CD 叶节点,逻辑设备和接口映射如图 48 和 49 所示:
图 48:用于QFX5230叶节点的 Apstra 逻辑设备
图 49:QFX5230叶节点的 Apstra 接口图
对于 QFX5230 主干节点,逻辑设备和接口映射如图 50 和 51 所示:
图 50:用于QFX5230主干节点的 Apstra 逻辑设备
图 51:QFX5230 个主干节点的 Apstra 接口图
对于QFX5240主干节点和叶节点,逻辑设备和接口映射分别如图 52-53 和 54-55 所示。
Junos OS 23.4R2 版中的 QFX5240 端口号已修改。表 24 显示了新旧端口映射之间的差异。
下表显示了新旧端口映射之间的差异。
表 24.QFX5240-64DC 端口映射
图 52:QFX5240 个主干节点的 Apstra 接口图
图 53:用于QFX5240主干节点的 Apstra 逻辑设备
图 54:QFX5240 叶节点的 Apstra 接口图
图 55:用于QFX5240叶节点的 Apstra 逻辑设备
对于还测试的 PTX10008 LC1201 主干节点,逻辑设备和接口映射如图 56-57 所示。
图 56:PTX 主干节点的 Apstra 接口图
图 57:用于 PTX 主干节点的 Apstra 逻辑设备
步骤 2:为 GPU 服务器创建接口图和逻辑设备
AMD MI300X GPU 服务器的逻辑设备和接口映射分别如图 58-59 所示。
图 58:AMD 服务器的 Apstra 接口图
图 59:用于 AMD 服务器的 Apstra 逻辑设备
步骤 3.为 GPU 后端交换矩阵创建机架类型
- 导航到设计→机架类型→在 Builder 中创建
注意:在 Apstra 中,机架在技术上等同于 AI 交换矩阵环境中的条带
- 单击“ 创建机架类型”
图 60:在 Apstra 中创建机架类型
注意:您可以在“在构建器中创建”或“在设计器中创建”(图形版本)之间进行选择。我们在这里演示“在构建器中创建”选项。
-
提供名称和描述,然后选择 L3 Clos。
图 61:使用“在构建器中创建”选项在 Apstra 中创建机架。
- 通过单击“添加叶子”按钮创建第一个叶子。
图 62:创建叶节点
选择已创建的交换机,然后单击管理所选节点的属性。
选择相应的逻辑设备。
图 63:配置叶节点属性
- 通过克隆在上一步中创建的叶来创建其他叶节点。重复此作,直到总共添加 8 片叶子。
图 64:通过克隆叶节点创建额外的叶叶节点
图 65:创建的附加叶节点
- 通过单击添加通用系统创建第一个 GPU 服务器(通用系统)
图 66:克隆叶节点。
选择已创建的服务器,然后单击“管理所选节点的属性”。
提供服务器的名称并选择相应的逻辑设备。
图 67:创建和配置第一个 GPU 服务器(通用系统)
- 创建 GPU 服务器到叶节点的连接。
选择服务器和第一个叶,然后单击管理链接。
确保选中“是轨道的一部分”框。
重复此作,直到服务器与所有叶节点之间的所有连接都已创建。
图 68:在 GPU 服务器和叶节点之间创建连接
图 69:在 GPU 服务器和叶节点之间创建连接
- 通过克隆在上一步中创建的服务器来创建其他服务器。重复此作,直到总共添加 8 片叶子。所有连接都将被克隆。
图 70:在 GPU 服务器和叶节点之间创建连接
图 71:在 GPU 服务器和叶节点之间创建连接
- 验证机架是否已正确创建:
图 72:在 GPU 服务器和叶节点之间创建连接
图 73:在 GPU 服务器和叶节点之间创建连接
图 74:在 GPU 服务器和叶节点之间创建连接
图 75:在 GPU 服务器和叶节点之间创建连接
第 4 步:创建模板。
- 导航到 设计 -> 模板
-
点击创建 模板
图 76:创建 Apstra 模板
注意:您可以选择创建模板或创建 AI 集群模板(从预先存在的设计中选择)。我们在这里演示创建模板选项。
- 输入模板的名称,然后选择类型、基于机架、策略 ASN 分配、唯一和叠加纯 IP 交换矩阵。
图 77:在 Apstra 中创建模板 - 参数
-
向下滚动并选择在前面步骤中创建的机架类型和主干逻辑设备,设置机架数量(相当于说条带数量)和主干数量。准备就绪后单击 create ,如图 75 所示。
图 78:在 Apstra 中创建模板 - 结构
图 79:验证新模板创建
第 5 步:创建 GPU 后端交换矩阵蓝图。
- 导航到 Blueprints 部分,然后单击 Create Blueprint, 如图 80 所示。
图 80:在 Apstra 中创建蓝图
- 为新蓝图提供名称,选择数据中心作为参考设计,然后选择基于机架。然后选择在上一步中创建的模板,其中将包括之前创建的两种机架类型。
图 81:Apstra 中的新蓝图属性
Apstra 成功启动蓝图后,该蓝图将包含在蓝图仪表板中,如下所示。
图 82:新蓝图添加到蓝图仪表板
请注意,部署状态、服务异常、探测异常和根本原因均显示为 N/A。这是因为您需要完成其他步骤,包括将蓝图中的不同角色映射到物理设备、定义将使用哪些接口等。
当您点击蓝图名称并进入蓝图仪表盘时,将表示该蓝图尚未部署。
图 83:新蓝图的仪表板
如图 84 所示,暂存视图显示拓扑是正确的,但用户仍必须提供属性,例如主干和叶节点的强制 ASN 和环路地址,以及主干到叶链路寻址。
图 84:未部署的蓝图仪表板
您需要编辑这些属性中的每一个,并从预定义的地址和 ASN 池中进行选择,如图 85 上的示例所示,以解决此问题。
图 85:为主干节点
选择 ASN 池
您还需要为每个设备的角色选择接口映射,并分配系统 ID,如图 86-87 所示。
图 86:将接口映射映射到主干节点
图 87:将主干节点映射到物理设备(系统 ID)
完成所有这些步骤后,您可以提交更改,Apstra 将生成特定于供应商和设备类型的配置,并将其推送到蓝图中的所有设备。此过程完成后,应成功部署交换矩阵,如图 88 所示的绿色复选标记所示。
图 88:活动蓝图。
步骤 6:为 DCQCN 和 DLB 创建 Configlet。
在此瞻博网络验证设计中使用的 Apstra 版本中,ECN、PFC (DCQCN) 和 DLB 等功能本身不可用。因此,在将这些功能部署到交换矩阵设备之前,应使用 Apstra Configlet 将其添加到配置中。
用于 QFX 叶节点上的 DCQCN 和 DLB 功能的 configlet 如下所示:
/* DLB configuration for Thor NIC2 Adapter */
hash-key {
family inet {
layer-3;
layer-4;
}
}
enhanced-hash-key {
ecmp-dlb {
flowlet {
inactivity-interval 128;
flowset-table-size 2048;
}
ether-type {
ipv4;
ipv6;
}
sampling-rate 1000000;
}
}
protocols {
bgp {
global-load-balancing {
load-balancer-only;
}
}
}
/* DCQCN configuration */
classifiers {
dscp mydscp {
forwarding-class CNP {
loss-priority low code-points 110000;
}
forwarding-class NO-LOSS {
loss-priority low code-points 011010;
}
}
}
drop-profiles {
dp1 {
interpolate {
fill-level [ 55 90 ];
drop-probability [ 0 100 ];
}
}
}
shared-buffer {
ingress {
buffer-partition lossless {
percent 66;
dynamic-threshold 10;
}
buffer-partition lossless-headroom {
percent 24;
}
buffer-partition lossy {
percent 10;
}
}
egress {
buffer-partition lossless {
percent 66;
}
buffer-partition lossy {
percent 10;
}
}
}
forwarding-classes {
class CNP queue-num 3;
class NO-LOSS queue-num 4 no-loss pfc-priority 3;
}
congestion-notification-profile {
cnp {
input {
dscp {
code-point 011010 {
pfc;
}
}
}
output {
ieee-802.1 {
code-point 011 {
flow-control-queue 4;
}
}
}
}
}
interfaces {
et-* {
congestion-notification-profile cnp;
scheduler-map sm1;
unit * {
classifiers {
dscp mydscp;
}
}
}
}
scheduler-maps {
sm1 {
forwarding-class CNP scheduler s2-cnp;
forwarding-class NO-LOSS scheduler s1;
}
}
schedulers {
s1 {
drop-profile-map loss-priority any protocol any drop-profile dp1;
explicit-congestion-notification;
}
s2-cnp {
transmit-rate percent 5;
priority strict-high;
}
}
用于 QFX 主干节点上的 DCQCN 和 DLB 功能的 configlet 如下所示:
/* DLB configuration */
hash-key {
family inet {
layer-3;
layer-4;
}
}
enhanced-hash-key {
ecmp-dlb {
flowlet {
inactivity-interval 128;
flowset-table-size 2048;
}
ether-type {
ipv4;
ipv6;
}
sampling-rate 1000000;
}
}
protocols {
bgp {
global-load-balancing {
helper-only;
}
}
}
/* DCQCN configuration */
class-of-service {
classifiers {
dscp mydscp {
forwarding-class CNP {
loss-priority low code-points 110000;
}
forwarding-class NO-LOSS {
loss-priority low code-points 011010;
}
}
}
drop-profiles {
dp1 {
interpolate {
fill-level [ 55 90 ];
drop-probability [ 0 100 ];
}
}
}
shared-buffer {
ingress {
buffer-partition lossless {
percent 66;
dynamic-threshold 10;
}
buffer-partition lossless-headroom {
percent 24;
}
buffer-partition lossy {
percent 10;
}
}
egress {
buffer-partition lossless {
percent 66;
}
buffer-partition lossy {
percent 10;
}
}
}
forwarding-classes {
class CNP queue-num 3;
class NO-LOSS queue-num 4 no-loss pfc-priority 3;
}
congestion-notification-profile {
cnp {
input {
dscp {
code-point 011010 {
pfc;
}
}
}
output {
ieee-802.1 {
code-point 011 {
flow-control-queue 4;
}
}
}
}
}
interfaces {
et-* {
congestion-notification-profile cnp;
scheduler-map sm1;
unit * {
classifiers {
dscp mydscp;
}
}
}
}
scheduler-maps {
sm1 {
forwarding-class CNP scheduler s2-cnp;
forwarding-class NO-LOSS scheduler s1;
}
}
schedulers {
s1 {
drop-profile-map loss-priority any protocol any drop-profile dp1;
explicit-congestion-notification;
}
s2-cnp {
transmit-rate percent 5;
priority strict-high;
}
}
}
PTX10008 上作为主干设备上用于 DCQCN 功能的配置如下:
注意:将 PTX10008 用作主干节点时,GLB 不是一个选项。
/* ALB configuration */
policy-options {
policy-statement ALB-TEST {
term 1 {
from {
route-filter 10.200.1.0/24 exact;
}
then {
load-balance adaptive;
}
}
}
}
routing-options {
forwarding-table {
export ALB-TEST;
}
}
chassis {
ecmp-alb {
tolerance 20;
}
interoperability express5-enhanced;
}
/* DCQCN configuration */
classifiers {
dscp rdma-dscp {
forwarding-class rdma-cnp {
loss-priority low code-points 110000;
}
forwarding-class rdma-data {
loss-priority low code-points 011010;
}
}
}
drop-profiles {
dp-ecn {
fill-level 3 drop-probability 100;
}
}
forwarding-classes {
class network-control queue-num 3;
class other queue-num 1;
class rdma-cnp queue-num 0;
class rdma-data queue-num 2 no-loss;
}
monitoring-profile {
myMon {
export-filters qall {
peak-queue-length {
percent 100;
}
queue [ 3 1 2 ];
}
}
}
interfaces {
et-* {
scheduler-map sched-map-aiml;
monitoring-profile myMon;
unit * {
classifiers {
dscp rdma-dscp;
}
}
}
}
scheduler-maps {
sched-map-aiml {
forwarding-class network-control scheduler sched-nc;
forwarding-class other scheduler sched-other;
forwarding-class rdma-cnp scheduler sched-rdma-cnp;
forwarding-class rdma-data scheduler sched-rdma-data;
}
}
options {
hierarchical-scheduler-disable;
}
schedulers {
sched-nc {
transmit-rate percent 1;
priority medium-high;
}
sched-other {
priority low;
}
sched-rdma-cnp {
transmit-rate percent 1;
priority high;
}
sched-rdma-data {
transmit-rate percent 97;
buffer-size temporal 400;
priority medium-high;
drop-profile-map loss-priority any protocol any drop-profile dp-ecn;
explicit-congestion-notification;
ecn-enhanced {
head-marking;
}
}
}
要创建这些 configlet,请执行以下作:
- 导航到 Design -> Configlet -> Create Configlet ,然后单击 Create Configlet。
- 提供 configlet 的名称,选择作系统、供应商和配置模式,然后将上述配置片段粘贴到模板文本框中,如下所示:
图 89:在 Apstra 中创建 DCQCN Configlet
第 7 步:将之前创建的 configlet 应用于蓝图。
该 configlet 应应用于设备,包括蓝图中的叶角色和主干角色。
导航回蓝图仪表板,然后移至 Staged -> Catalog -> Import。
选择要应用的 configlet 以及要应用它的设备角色。
图 90 将 DCQCN Configlet 应用于 Apstra 中的设备
将 configlet 成功导入蓝图后,应将其列在目录中。您需要提交要部署到设备的配置更改。
图 91:将 DCQCN Configlet 应用于 Apstra 中的设备
您可以通过单击“活动”选项卡中的每个设备,然后在右侧的“设备”选项卡下选择渲染的配置,快速检查状态和已部署的配置。
图 92:Apstra 中的设备配置验证
https://rocm.blogs.amd.com/software-tools-optimization/amd-smi-overview/README.html