交换矩阵配置 Juniper Apstra 使用演练
本部分介绍在 AI JVD 实验室中部署其中一个 AI GPU 后端 IP 交换矩阵的步骤,并以如何使用 Juniper Apstra 部署新交换矩阵为 例 。
这些步骤将介绍使用 QFX5220-32CD 和 QFX5230-64CD 交换机作为主干和叶角色的 AI GPU 后端 IP 交换矩阵。应遵循类似的步骤来设置前端和存储后端交换矩阵。
本节还提供了 Nvidia GPU 服务器的配置步骤。
设置 Apstra 服务器
首次连接到 Apstra 服务器虚拟机时,配置向导将启动。此时,可以配置 Apstra 服务器、Apstra UI 和网络配置的密码。
有关使用 Apstra 安装和分步配置的更多详细信息,请参阅 Juniper Apstra 用户指南。
在 Apstra 中接入设备
有两种方法将瞻博网络设备添加到 Apstra:
- 使用 ZTP
在 Apstra ZTP 服务器中,按照 Juniper Apstra 用户指南中所述的 ZTP 步骤进行操作。
- 手动(下一节将详细介绍)
最佳做法是避免在此基准配置中设置环路、接口(管理接口除外)、路由实例(管理实例除外)或任何其他设置。
Apstra 会在设备成功确认后设置协议 LLDP 和 RSTP。
要载入每台设备,请在 Apstra Web UI 中执行以下步骤:
在 Apstra 中接入设备 步骤
步骤 1:为 Junos 设备创建代理配置文件。
- 导航到设备 >> 代理配置文件
- 单击创建代理配置文件。
图 23.在 Apstra 中创建代理配置文件
注意:就本 JVD 而言,所有设备使用相同的用户名和密码。因此,只需一个 Junos 代理配置文件即可载入所有设备。 - 输入代理配置文件名称,选择平台 (Junos),然后输入 Apstra 用于与设备通信的用户名和密码。
- 这需要设备预配置 root 密码、在 Apstra 中配置的用户名和密码、管理 IP 和适当的静态路由(如果需要)以及 ssh Netconf,以便 Apstra 访问和配置这些设备。
图 24:Apstra 代理配置文件参数
- 输入所需信息后,点击 创建。
- 确认 代理配置文件 创建。
图 25:全新 Apstra 代理配置文件验证
第 2 步:为其他设备创建代理配置文件。
- 导航到 设备 >> 代理配置文件
- 单击创建 代理配置文件。
图 26.在 Apstra 中创建代理配置文件
- 输入代理配置文件名称,选择平台 (Junos),然后输入 Apstra 用于与设备通信的用户名和密码。
这需要设备预配置 root 密码、在 Apstra 中配置的用户名和密码、管理 IP 和适当的静态路由(如果需要)以及 ssh Netconf,以便 Apstra 访问和配置这些设备。
图 27:Apstra 代理配置文件参数
- 输入所需信息后,点击 创建。
- 确认 代理配置文件 创建。
图 28:全新 Apstra 代理配置文件验证
步骤 3:为 QFX 设备创建异机代理。
- 导航至 设备 >> 托管设备
- 单击 创建异机代理。确保选择 异机代理。
图 29:在 Apstra 中创建异机代理
- 确定要接入的设备。您可以输入以逗号分隔的主机名、单个 IP 地址或 IP 地址范围列表。
注意:您也可以提供 IP 地址范围,以便一次在 Apstra 中载入多台设备。以下示例中显示的范围仅用于演示目的。
- 选择平台和 代理配置文件 (选择在上一步中创建的配置文件)。
图 30:使用一系列 IP 地址识别要接入的设备
注意:如果未选中“设置用户名?”和“设置密码?”,Apstra 将使用在上一步中创建的配置文件中的信息。
- 单击“创建”。
- 确认已添加设备以进行载入。创建异机代理后,设备将添加到受管理设备列表中。Apstra 将尝试连接,如果连接成功,将填充相关信息。
图 31:正在上线的新设备
第 4 步:创建本机代理并载入 AMD 服务器。
- 导航至 设备 >> 托管设备
- 单击 “创建自带代理”。确保选择 Onbox Agent(s)。
图 32:在 Apstra 中创建 Onbox 代理
- 确定要接入的设备。您可以输入以逗号分隔的主机名、单个 IP 地址或 IP 地址范围列表。
注意:您也可以提供 IP 地址范围,以便一次在 Apstra 中载入多台设备。以下示例中显示的范围仅用于演示目的。
- 选择平台和 代理配置文件 (选择在上一步中创建的配置文件)。
图 33:使用一系列 IP 地址识别要接入的设备
注意:如果未选中“ 设置用户名?”和“ 设置密码?”,Apstra 将使用在上一步中创建的配置文件中的信息, - 单击“创建”。
- 确认已添加设备以进行载入。创建机载代理后,设备将添加到受管理设备列表中。Apstra 将尝试连接,如果连接成功,将填充相关信息。
图 34:正在加载的新设备
第 5 步:确认在 Apstra 蓝图中使用托管设备。
设备必须得到用户确认才能完成上线,并允许其成为 Apstra 蓝图的一部分。
为每台设备成功执行异机代理创建后,用户必须确认这些设备才能完成上线,并使其成为 Apstra 蓝图的一部分。这会将设备状态从 OOS-QUARANTINE 移至 OOS-READY。
- 选择设备
- 单击“确认所选系统按钮”
图 35:确认 Apstra 蓝图中的托管设备
Apstra Web UI 中的交换矩阵配置
要配置交换矩阵,请在 Apstra Web UI 中执行以下步骤:
步骤 1:为叶节点和主干节点创建逻辑设备和接口图。
该示例说明如何为带有 LC1301 主干节点的 PTX10008 创建接口图和逻辑设备。
- 导航至 设计>逻辑设备
- 单击 创建逻辑设备。
图 36:创建逻辑设备
- 提供名称,添加其他端口,然后将速度更改为 800G。
- 单击 添加面板。
图 37:创建逻辑设备面板 1.
- 在第二个面板上提供名称,添加其他端口并将速度更改为 800G。
图 38:创建逻辑设备面板 2。
- 单击面板 1 和 2 的 创建端口组 。
图 39:创建逻辑设备端口组。
- 单击 “创建”。
图 40:创建逻辑设备
- 验证 逻辑设备的 创建。
图 41:新逻辑设备
- 导航至 设计>逻辑设备
图 42:创建接口映射
对于 QFX5220 叶节点,逻辑设备和接口映射如图 43 和 44 所示:
图 43:用于 QFX5220 叶节点的 Apstra 逻辑设备
图 44:QFX5220 叶节点的 Apstra 接口图
对于 QFX5230-64CD 叶节点,逻辑设备和接口映射如图 45 和 46 所示:
图 45:用于QFX5230叶节点的 Apstra 逻辑设备
图 46:QFX5230叶节点的 Apstra 接口图
对于 QFX5230 主干节点,逻辑设备和接口映射如图 47 和 48 所示:
图 47:用于QFX5230主干节点的 Apstra 逻辑设备
图 48:QFX5230 个主干节点的 Apstra 接口图
对于QFX5240主干节点和叶节点,逻辑设备和接口映射分别如图 49-50 和 51-52 所示。
下表显示了新旧端口映射之间的差异。
表 25.QFX5240-64DC 端口映射
QFX5240-64DC 叶式和主干节点的接口映射和逻辑设备是按照新的端口映射创建的,如图 49-50 所示
图 49:QFX5240 个主干节点的 Apstra 接口图
图 50:用于QFX5240主干节点的 Apstra 逻辑设备
图 51:QFX5240 叶节点的 Apstra 接口图
图 52:用于QFX5240叶节点的 Apstra 逻辑设备
对于还测试的 PTX10008 LC1201 主干节点,逻辑设备和接口映射如图 53-54 所示。
图 53:PTX 主干节点的 Apstra 接口图
图 54:用于 PTX 主干节点的 Apstra 逻辑设备
步骤 2:为 GPU 服务器创建接口图和逻辑设备
AMD NVIDIA GPU 服务器的逻辑设备和接口映射分别如图 55-56 所示。
图 55:A100 Nvidia 服务器的 Apstra 接口图
图 56:H100 Nvidia 服务器的 Apstra 接口图
图 57:A100 Nvidia 服务器的逻辑设备
图 58:H100 Nvidia 服务器的逻辑设备
步骤 3.为 GPU 后端交换矩阵创建机架类型
- 导航到 设计→机架类型→在构建器中创建
注意:在 Apstra 中,机架在技术上等同于 AI 交换矩阵环境中的条带
- 单击“ 创建机架类型”
图 59:在 Apstra 中创建机架类型
注意:您可以在“在构建器中创建”或“在设计器中创建”(图形版本)之间进行选择。我们在这里演示“在构建器中创建”选项。 - 提供名称和描述,然后选择 L3 Clos。
图 60:使用“在构建器中创建”选项在 Apstra 中创建机架。
- 通过单击“添加叶子”按钮创建第一个叶子。
图 61:创建叶节点
选择已创建的交换机,然后单击管理所选节点的属性。
选择相应的逻辑设备。
图 62:配置叶节点属性
- 通过克隆在上一步中创建的叶来创建其他叶节点。重复此操作,直到总共添加 8 片叶子。
图 62:通过克隆叶节点创建其他叶叶节点
图 63:创建的其他叶节点
- 通过单击添加通用系统创建第一个 GPU 服务器(通用系统)
图 64:克隆叶节点。
选择已创建的服务器,然后单击“管理所选节点的属性”。
提供服务器的名称并选择相应的逻辑设备。
图 65:创建和配置第一个 GPU 服务器(通用系统)
- 创建 GPU 服务器到叶节点的连接。
选择服务器和第一个叶,然后单击管理链接。
确保选中“是轨道的一部分”框。
重复此操作,直到服务器与所有叶节点之间的所有连接都已创建。
图 66:在 GPU 服务器和叶节点之间创建连接
图 67:在 GPU 服务器和叶节点之间创建连接
- 通过克隆在上一步中创建的服务器来创建其他服务器。重复此操作,直到总共添加 8 片叶子。所有连接都将被克隆。
图 68:创建其他服务器
图 69:创建其他服务器
- 验证机架是否已正确创建:
图 70:在 GPU 服务器和叶节点之间创建连接
图 71:在 GPU 服务器和叶节点之间创建连接
图 72:在 GPU 服务器和叶节点之间创建连接
图 73:在 GPU 服务器和叶节点之间创建连接
第 4 步:创建模板。
导航到 设计 -> 模板 -> 创建模板
- 点击创建 模板
图 74:创建 Apstra 模板
注意:您可以选择创建 模板 或 创建 AI 集群模板 (根据每个条带所需的 GPU 数量和条带数量从预先存在的设计中进行选择)。我们将在这里演示创建 模板选项 。 - 输入模板的名称,然后选择类型、基于机架、策略 ASN 分配、唯一和叠加纯 IP 交换矩阵。
图 75:在 Apstra 中创建模板 - 参数
- 向下滚动并选择在前面步骤中创建的机架类型和主干逻辑设备,设置机架数量(相当于说条带数量)和主干数量。准备就绪后单击 create,如图 75 所示。
图 76:在 Apstra 中创建模板 - 结构
图 77:验证新模板创建
步骤 5.创建 GPU 后端交换矩阵蓝图
- 导航到 Blueprints 部分并点击 Create Blueprint, 如图 78 所示。
图 78:在 Apstra 中创建蓝图
- 为新蓝图提供名称,选择数据中心作为参考设计,然后选择基于机架。然后选择在上一步中创建的模板,其中将包括之前创建的两种机架类型。
图 79:Apstra
中的新蓝图属性
Apstra 成功启动蓝图后,该蓝图将包含在蓝图仪表板中,如下所示。
图 80:新蓝图添加到蓝图仪表板
请注意,部署状态、服务异常、探测异常和根本原因均显示为 N/A。这是因为您需要完成其他步骤,包括将蓝图中的不同角色映射到物理设备、定义将使用哪些接口等。
当您点击蓝图名称并进入蓝图仪表盘时,将表示该蓝图尚未部署。
图 81:新蓝图的仪表板
图 82 所示的暂存视图显示拓扑是正确的,但必须由用户提供属性,例如主干和叶节点的强制 ASN 和环路寻址,以及主干到叶链路寻址。
图 82:未部署的蓝图仪表板
您需要编辑这些属性中的每一个,并从预定义的地址和 ASN 池中进行选择,如图 83 上的示例所示,以解决此问题。
图 83:为主干节点
选择 ASN 池
您还需要为每个设备的角色选择接口图,并分配系统 ID,如图 84-85 所示。
图 84:将接口映射映射到主干节点
图 85:将主干节点映射到物理设备(系统 ID)
完成所有这些步骤后,您可以提交所有更改,Apstra 将生成所有必要的供应商特定配置,并将其推送到节点。完成此操作后,您应该能够查看代表成功部署的交换矩阵的活动蓝图,如图 86 所示。
图 86:将主干节点映射到物理设备 2(系统 ID)
步骤 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 功能的配置如下:
-
/* 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 的名称,选择操作系统、供应商和配置模式,然后将上述配置片段粘贴到模板文本框中,如下所示:
图 87:在 Apstra 中创建 DCQCN Configlet