Skip to main content
开放网络的先行者与推动者—星融元
加入我们 | 技术支持(Support)  TEL:(+86)4000989811

AIDC网络运维平台 — AI后端网络场景部署示例1

前言

本文主要介绍通过Asterfusion AIDC网络运维平台部署AI后端网络场景的详细配置示例,涉及新建场所、配置库存、规划拓扑、基础网络配置及有线业务配置,以可视化的方式实现整网业务快速开通。

读者对象

本手册主要适用于方案规划设计及现场实施人员,相关人员应具备以下能力:
• 熟悉Asterfusion数据中心网络交换机产品
• 熟悉Asterfusion AIDC网络运维平台基本操作
• 了解RoCE、PFC、ECN等技术

修改记录

日期版本修改备注
2026-06-12V1.0首次发布

目录

1 概述

AI集群后端网络部署可采用Rail-optimized(轨道优化)架构。AIDC网络运维平台内置的AI后端网络场景也源于此架构进行构建。

Rail-optimized架构、AIDC

图1-1 Rail-optimized架构

如上图,其核心设计思路是将每台服务器的同号网卡接入同一台Leaf交换机,确保GPU间的多机通信尽可能经过最少跳数内完成。在这种设计下,GPU节点间的通信可利用自身的NVSwitch[[1]]内部通路,只需要经过一跳即可到达,而无需跨多台交换机,避免产生额外时延。具体如下:

① 服务器内互联:8张GPU通过NVLink总线连接至NVSwitch,实现服务器内部GPU间的低时延通信,降低Scale-Out网络传输压力;

② 服务器-网络互联:所有服务器遵循统一的连线逻辑,网卡按“NIC1-Leaf1、NIC2-Leaf2……”的规则,分别接入多台Leaf交换机;

③ 网络层互联:Leaf与Spine交换机采用全互联模式,采用2层Clos架构。


[[1]] NVSwitch为NVIDIA推出的承载高速NVLink的交换芯片,在Scale-Up网络实现多GPU以NVLink能够达到的最高速度进行通信。

2 部署AI后端网络示例

下面以构建一个16计算节点(每台服务器4个GPU,共64个GPU)的AI集群为例进行说明,部署6台CX532-N交换机,其中2台作为Spine节点,4台Leaf节点。核心配置思路如下:

  • 每个GPU连接专用网卡,每台服务器的网卡按照“NIC1-Leaf1、NIC2-Leaf2……”的规则接入Leaf交换机,为每个Rail规划一个子网,Leaf交换机作为Rail内的默认网关。
  • 网络采用2层Clos架构,Spine与Leaf全互联,利用IPv6 link-local特性建立unnumbered BGP邻居,宣告各Rail的网段路由,实现路由交换,无需为Leaf-Spine互联接口规划IP地址;
  • Leaf下行与上行容量的比值应严格遵循1:1收敛比,保证无阻塞传输;
  • Leaf、Spine交换机启用一键RoCE及负载均衡特性,构建无损网络。

如图1 为AI后端网络组网拓扑图,后续步骤我们将通过AIDC网络运维平台部署该组网方案以及业务开通。

AI后端网络组网图、AIDC

图2-1 AI后端网络组网图

各节点AS号、Loopback及网关VLAN IP地址规划如下:

设备名称AS号Loopback 0 IP地址VLAN号网关IP地址
Leaf-16520410.1.0.204/3210110.10.1.1/25
Leaf-26520510.1.0.205/3210210.10.1.129/25
Leaf-36520610.1.0.206/3210310.10.2.1/25
Leaf-46520710.1.0.207/3210410.10.2.129/25
Spine-16520210.1.0.202/32––
Spine-26520310.1.0.203/32––
表1 各节点AS号及IP地址规划表

2.1 新建场所

场所是管理员可以用来监控、管理、配置所有网络设备的集合。
首先登录网络运维平台,在【导航】-【地图】页面,新建场所用于单独管理将要部署的AI后端网络,后续的库存管理组网配置将都在此场所下进行。

AIDC运维平台界面

图2-2 新建场所

AIDC运维平台界面

图2-3 新建场所显示

2.2 录入库存

创建或批量导入设备到指定场所/组织,当添加至库存的设备连接网络运维平台上线时,平台会根据设备的MAC地址自动将设备归属至指定的组织/场所。
当前提供两种方式配置库存设备:

  1. 位于组织视图时,可以指定库存的组织/场所。
  2. 位于场所视图时,添加的库存直接指定至该场所。
    本例中我们使用第二种方式,直接在创建好的AIDC-BE场所中配置库存设备。在AIDC-BE场所视图下,点击【配置】-【库存信息】,我们采用csv批量导入库存设备的方式快速配置库存。
AIDC运维平台界面

图2-3 导入库存设备

点击【选择文件】导入预先规划好的库存设备csv文件,本例中库存csv文件内容如表1所示。点击【开始测试上传数据】后,将会显示csv文件的测试结果,如图2-4,测试完成后点击【开始上传设备】即可完成库存导入。图2-5 为导入完成后的设备库存信息。

MACDeviceTypeNameFirmwareTagLoopbackPortScaleProfileDescription
0c1c94fe0000sonic-vmLeaf-2default10.1.0.205/32
0c4d6d3c0000sonic-vmLeaf-1default10.1.0.204/32
0c5a16a70000sonic-vmLeaf-3default10.1.0.206/32
0c936b630000sonic-vmLeaf-4default10.1.0.207/32
0ca74ee50000sonic-vmSpine-2default10.1.0.203/32
0cbf55840000sonic-vmSpine-1default10.1.0.202/32
表2 库存设备信息表
AIDC运维平台界面

图2-4 传库存设备

AIDC运维平台界面

图2-5 库存设备信息显示

您也可以手动录入库存设备。点击【创建】按钮,进行库存设备创建,填入必要信息后即可完成手动录入库存设备。

AIDC、运维平台界面

图2-6 手动录入库存

2.3 设备自动上线

设备应与网络运维平台之间三层互通(本例中的所有设备均通过带外管理网与平台互通)。设备上电后,需要指定平台IP地址以建立连接。建议通过ansible playbook方式批量执行如下命令启用ucentral特性并指定平台服务器IP地址。

sonic# configure terminal
sonic(config)# feature ucentral state enable
sonic(config)# feature ucentral autorestart enable
sonic(config)# ucentral-client server 10.240.3.201

配置完成后,平台会自动发现设备,且会根据之前导入的库存信息将设备归属至AIDC-BE该场所。在AIDC-BE场所视图下,点击【设备】按钮,可看看到所有设备信息状态。

图2-7 设备信息

2.4 规划拓扑

2.4.1 导入规划拓扑

AIDC网络运维平台内置了三大AI数据中心典型场景,本例中选择AI数据中心后端网络部署。在AIDC-BE场所视图下,点击【配置】-【规划拓扑】,初次进行规划拓扑时会直接进入场景选择页面,选择【AI数据中心后端网络部署】,由于我们使用csv导入规划拓扑,点击【生成空白拓扑】按钮清空Spine/Leaf的类型及数量。

AIDC、运维平台界面

图2-8 场景选择

点击完成后会生成空白拓扑,点击【导入配置】选择准备好的规划拓扑csv文件,csv文件内容如图2-9 所示,每台Leaf的1-8接口连接Spine-1,9-16接口连接Spine-2。平台能够自动校验csv内容并显示校验结果,如图2-10所示。

拓扑信息

图2-9 规划拓扑csv信息

AIDC运维平台界面

图2-10 导入拓扑配置

测试通过后,点击【下一步】,进入配置分析页面,页面显示了即将导入的拓扑配置详细信息,确认后点击【应用配置】,即可自动完成拓扑规划,如图2-12 所示为应用配置后生成的规划拓扑。

控制器界面

图2-11 应用配置

AIDC运维平台界面

图2-12 拓扑生成

本平台还支持手动配置规划拓扑,如需手动配置规划拓扑可参考2.4.2-2.4.3章节。

2.4.2 (可选)场景选择

AIDC-BE场所视图下,点击【配置】-【规划拓扑】,初次进行规划拓扑时会直接进入场景选择页面,选择【AI数据中心后端网络部署】,根据图2-1 组网拓扑图,我们需要填入2台Spine,4台Leaf(本例中设备型号选择SONIC-VM类型)。点击【完成】按钮即可自动创建拓扑模板,如图2-14 所示。

AIDC运维平台界面

图2-13 场景选择及设备数量配置

AIDC运维平台界面

图2-14 AIDC后端网络场景拓扑模板

2.4.3 (可选)拓扑编辑

根据拓扑图,我们需要编辑拓扑模板,点击规划拓扑中的每个设备上的【编辑】按钮进入编辑页面,在编辑页面中选择库存中的设备,即可完成设备角色配置。

AIDC运维平台界面

图2-15 配置设备角色

控制器界面

图2-16 配置角色结果

完成设备角色配置后,按照组网架构图配置设备间连线。每个Leaf的接口1-8连接Spine-1,接口9-16连接Spine-2,每个Leaf剩余的16个接口用于连接GPU服务器。以Spine-1配置接口连线为例,点击【编辑】按钮进入编辑页面。选择本端接口与对端接口后,点击保存即可完成连线配置。整个规划拓扑配置完连线后效果如图2-17 所示。

AIDC运维平台界面

图2-17 配置设备互连线

AIDC运维平台界面

图2-18 完整规划拓扑展示

2.4.4 拓扑校验

点击【拓扑一致性验证】按钮对规划拓扑与真实拓扑进行校验,若存在与真实拓扑不一致的情况,将会显示具体不一致原因以及真实拓扑信息。请确保校验通过后再进行后续配置操作以避免业务出现问题。

AIDC运维平台界面

图2-19 拓扑一致性校验

AIDC运维平台界面

图2-20 拓扑校验视图结果

2.5 基础网络配置

AI数据中心后端网络场景的基础网络配置分为接口配置及BGP配置,其主要作用是打通Spine与Leaf间的链路状态和路由协议。

点击【基础网络配置】按钮进入配置页面。

AIDC运维平台界面

图2-21 基础网络配置按钮

AIDC

图2-22 基础网络配置页面

2.5.1 接口配置

本例中Leaf、Spine设备通过建立unnumbered BGP邻居实现路由交换,无需为互联接口人工规划IP地址,因此跳过接口配置。

2.5.2 BGP配置

点击步骤2【AIDC后端网络BGP部署】按钮,进行BGP配置。参考表1 中规划的各设备AS号,配置各设备BGP,以Spine-1为例,在Spine-1的配置部分,使能BGP并配置本地AS号。

AIDC运维平台界面

图2-23 使能BGP及配置本地AS

点击【创建BGP PEER-GROUP】按钮进入BGP对等体配置页面。Spine-1的所有接口与Leaf-1到Leaf-4均建立BGP邻居,最终配置如图2-24 所示。

AIDC运维平台界面

图2-24 配置BGP对等体

点击【完成】按钮,完成对等体配置。图2-25 为Spine-1配置完成BGP后的信息显示。其余设备也按照同样方式参考规划拓扑完成BGP配置。

AIDC运维平台界面

图2-25 Spine-1 BGP配置信息

2.5.3 配置推送

基础网络配置完成后,点击【推送配置】按钮,将基础网络配置推送至设备,完成Spine-Leaf互通。

AIDC运维平台界面

图2-26 推送基础网络配置按钮

选择确认推送配置的设备,点击【下一步】开始推送,等待推送成功完成后,再进行有线业务配置。

AIDC运维平台界面

图2-27 选择推送设备

AIDC运维平台界面

图2-28 开始推送配置

2.6 有线业务配置

基础配置完成后,Spine-Leaf之间完成互通,点击【有线业务配置】进行业务配置。

AIDC运维平台界面

图2-29 有线业务配置按钮

进入有线业务配置页面后点击【创建】按钮进行创建有线业务配置模板。

AIDC运维平台界面

图2-30 有线业务配置模板

为了满足AI后端网络对于无损网络的要求,网络运维平台有线业务配置模块支持RoCE、业务VLAN、智能选路及ARS功能。本例中选择以RoCE、ARS功能协同构建无损网络。

2.6.1 Leaf节点业务配置

  1. 配置一键RoCE

CX-N系列交换机支持队列0-7,共计8个队列,其中3、4队列为无损队列(最多支持两个无损队列),其余队列为有损队列。

默认模板使用系统默认DSCP映射,3、4队列使能PFC和ECN,6、7队列设置严格优先级调度。

在创建模板时,您可指定以下三个参数:

  • cable-length:指定线缆长度,影响PFC与ECN参数的计算。可选5m/40m/100m/300m,若无对应选项,则选择接近的数值,例如实际线缆长度为10米,则选择5m。
  • incast-level:指定流量Incast模型,影响PFC参数的计算,可选low(例如1:1)/medium(例如3:1)/high(例如10:1)。在GPU后端网络中一般选择low。
  • traffic-model:指定业务类型:吞吐敏感型业务、时延敏感型业务,均衡型,影响ECN参数的计算。可选throughput/latency/balance。在GPU后端网络中一般选择balance或throughput模式。

当我们提供的无损RoCE配置不完全适用于您的业务场景时,您可参考3.1 RoCE调参/调优进行配置调整和参数调优,使业务性能达到最优。

以配置Leaf-1 RoCE为例,在有线业务配置页面填写模板名称及设备后,点击【RoCE功能】-【EasyRoCE】-【创建RoCE】,配置RoCE应用到所有接口。

AIDC运维平台界面

图2-31 配置RoCE

点击【添加】按钮完成RoCE配置

AIDC运维平台界面

图2-32 RoCE配置信息显示

  1. 配置业务VLAN

根据组网拓扑以及表2 规划的网关VLAN IP表,配置Leaf设备业务VLAN,以Leaf-1为例,点击【业务VLAN】-【创建】进入业务VLAN配置页面,Leaf-1的业务VLAN规划的为101,网关IP为10.10.1.1/25,下行链路根据规划拓扑配置为17-32口。根据如上信息进行配置。

AIDC运维平台界面

图2-33 创建业务VLAN

点击【添加】按钮完成业务VLAN创建。

AIDC运维平台界面

图2-34 业务VLAN配置显示

  1. 配置ARS

ARS的配置逻辑如下:使能ARS → 创建ARS实例 → 绑定下一跳组 → 调整idle-time。
下面分别对每个步骤进行说明:

(1) 首先使能ARS功能,后续的ARS实例配置均基于ARS功能能使的情况下进行。
(2) 其次,应当明确的是,ARS实例和下一跳组(也即ECMP组)是“一对一”的关系。对于Spine来说,每个Leaf宣告的路由是不同的,例如,Leaf-1宣告的路由的ECMP组成员是Spine与Leaf-1互联的多条链路。因此,每个Leaf都有一个对应的下一跳组,故有多少个Leaf,就应该创建多少个实例。而对于Leaf-1来说,其他Leaf宣告的所有路由的ECMP组成员都是与Spine-1、2互联的链路,故Leaf上只需要创建一个实例。
(3) 接下来,需要指定路由的目的网段,将期望的下一跳组绑定到对应的ARS实例。对于Spine-1来说,下一跳组是与Leaf-1互联链路组成的ECMP组,因此只需要指定Leaf-1的Loopback0 IP即可。对于Leaf-1来说,下一跳组是与两台Spine互联链路组成的ECMP组,因此只需要指定其余任一台Leaf的Loopback 0 IP即可。
(4) 最后,配置idle-time(空闲时间)。Idle-time可以决定一条流被分割成一系列Flowlet(子流)的粒度,若帧间隔大于该时间则触发流分割。理论上建议idle-time配置为RTT[[1]]/2,实际使用时可以先使用默认值,然后视实际业务流量负载情况再调整idle-time。若发现端侧存在较多乱序,可将idle-time调大;若发现Leaf-Spine间负载均衡不均,再将idle-time调小。


[[1]] RTT(Round-Trip Time)是指数据包从发送端到接收端再返回到发送端所需的总时间。

按照如上描述以Leaf-1为例配置ARS,点击【ARS】-【创建ARS Profile】进入ARS Profile页面,该部分为使能ARS功能配置。

AIDC运维平台界面

图2-35 使能ARS功能

点击【保存】按钮,保存配置。完成ARS功能,此时将会出现ARS实例配置按钮,点击【创建ARS Instance】按钮进入ARS实例配置。

AIDC运维平台界面

图2-36 配置ARS实例

点击【保存】按钮完成ARS实例创建。

AIDC运维平台界面

图2-37 ARS配置信息显示

至此Leaf-1的业务配置已全部完成。

2.6.2 Spine节点业务配置

Spine设备业务配置涉及配置RoCE及ARS,后续以Spine-1设备配置为例进行配置。

  1. 配置一键RoCE

在有线业务配置页面新建模板,填写模板名称及设备后,点击【RoCE功能】-【EasyRoCE】-【创建RoCE】,配置RoCE应用到所有接口。完成配置后点击添加完成RoCE配置。

AIDC运维平台界面

图2-38 RoCE配置显示

  1. 配置ARS

如前所示,对于Spine来说,应分别为每台Leaf创建一个ARS实例,并分别指定各Leaf的Loopback0 IP以绑定到对应的下一跳组。点击【ARS】-【创建ARS Profile】进入ARS Profile页面,该部分为使能ARS功能配置,操作配置与Leaf-1一致,不再赘述。点击【创建ARS Instance】按钮进入ARS实例配置,需要配置4个实例,对应4台Leaf设备。

AIDC运维平台界面

图2-39 Spine-1 ARS实例配置

至此Spine-1设备的有线业务配置完成。其余设备按照类似操作根据业务规划配置即可。

2.6.3 配置推送

完成所有设备的业务配置后,在有线业务配置页面可看到所配置的业务模板信息。

AIDC运维平台界面

图2-40 业务配置模板信息

点击【推送配置】按钮可将模板单个进行推送至设备,也可点击【筛选配置模板】进入批量推送页面,本例中选择批量推送配置。在筛选配置模板页面,点击【全选】进行选中所有配置模板。

AIDC运维平台界面

图2-41 筛选配置模板页面

点击【批量推送配置】-【下一步】,即可开始推送配置至设备,等待业务推送完成后,整个网络业务就完成部署。

图2-42 批量推送业务配置

AIDC运维平台界面

图2-43 业务配置推送完成

3 维护

3.1 RoCE调参/调优

当我们提供的无损RoCE配置不完全适用于您的业务场景时,您可以在有线业务配置页面对应的业务配置模板中通过调整PFC/ECN水线,使业务性能达到最优。

ECN水线通过min_th、max_th以及probability来调整:

  • min_th设置显式拥塞通告的下限绝对值,单位为字节。即当队列中的报文长度达到此数值时,接口开始按照概率将报文的ECN字段置为CE;
  • max_th设置显式拥塞通告的上限绝对值,单位为字节。即当队列中的报文长度达到此数值时,接口开始将全部报文的ECN字段置为CE;
  • probability设置最大标记概率,整数形式,取值范围[1,100]。

PFC水线通过修改动态阈值系数dynamic_th来调整:PFC水线= 2dynamic_th×剩余可用buffer。

以Spine-1业务配置模板为例,选中Spine-1业务配置模板,点击【编辑】-【RoCE功能】-【PFC/ECN】,此时会显示之前通过Easy RoCE自动生成的PFC/ECN策略信息。

AIDC运维平台界面

图3-1 PFC/ECN信息

选择ECN条目并点击【编辑】按钮,可对ECN水线进行调整。调整后点击【保存】完成ECN水线调整。

AIDC运维平台界面

图3-2 ECN水线调整

选择PFC条目并点击【编辑】按钮,可对PFC水线进行调整。调整后点击【保存】完成PFC水线调整。

AIDC运维平台界面

图3-3 PFC水线调整

调整完成后,保存Spine-1业务配置模板并重新推送至设备即可应用调整的PFC/ECN水线。

3.2 设备日常运维

点击【设备】选择需要查看的设备,进入设备页面,该页面中提供了丰富的设备级运维功能。

AIDC运维平台界面

图3-4 设备信息

【概览】页面:

显示设备基本信息、接口状态、实时告警信息,关联链路。

AIDC运维平台界面

图3-5 设备概览

【详情】页面

【系统详情】显示设备的综合健康值、设备硬件温度、风扇、电源等信息。

AIDC运维平台界面

图3-6 设备系统详情

【业务详情】显示设备主要业务状态信息。

AIDC运维平台界面

图3-7 设备业务详情

【统计】页面
【概览】提供设备CPU、内存、接口速率、吞吐量、LLDP信息。

AIDC运维平台界面

图3-8 设备统计概览

【接口】提供更为丰富的接口统计指标。
AIDC运维平台界面

图3-9 设备接口详细统计

【光模块】提供光模块详细信息。

AIDC运维平台界面

图3-10 设备光模块信息

       【Buffer】提供设备Buffer统计指标。

AIDC运维平台界面

图3-11 设备Buffer统计信息

       【RoCE】提供设备详细的RoCE统计指标。

AIDC运维平台界面

图3-12 设备RoCE指标统计

【配置】页面
显示设备基础的配置信息。

AIDC运维平台界面

图3-13 设备配置信息

如有其它问题,请填写需求表单联系我们。www.asterfusion.com

基于云控制器与vAsterNOS的园区三层网络搭建指南

目录

1 前期准备

为确保实验顺利进行,请提前确认以下资源:

硬件环境:一台用于部署 GNS3 的本地服务器。由于搭建园区三层网络拓扑需消耗较多计算资源,建议选用性能良好的物理服务器或企业内网的虚拟化平台。

软件配置:vAsterNOS 系统镜像文件(点击链接下载https://drive.google.com/file/d/1WJRfZDTmX0Ylyrsk-fg_o2ycxA12KV85/view?usp=sharing)

2 GNS3 项目创建与虚拟机模板配置

创建项目:登录本地服务器的 GNS3 Web 界面,点击创建并进入一个新的 Project。

进入模板设置:在 Project 界面内,点击顶部工具栏的【+】图标,选择【Insert New Node】,随后在弹出的侧边栏中点击【Go to template preferences】。

添加 QEMU 模板:在左侧菜单栏选择【QEMU】,点击【Add QEMU VM template】添加虚拟机模板。

选择运行环境:本样例中 GNS3 部署在本地服务器上,在 Server type 中选择【Run this QEMU VM locally】。

填写虚拟机参数:

  • Name:填写便于识别的名称,例如 AsterNOS-V5.2R17。
  • Qemu binary & memory:Qemu binary选择 /usr/bin/qemu-system-x86_64;RAM 建议至少分配 4096 MB。
  • Console type:选择 telnet。

上传镜像:在 Disk image 步骤中,选择【New image】并点击【Browse】,上传准备好的 sonic-marvell.img 镜像文件。完成后点击【Add template】。

3 优化虚拟机网络与硬件配置

在 QEMU VM templates 列表中,找到刚创建的 AsterNOS-V5.2R17 模板,点击其右侧的菜单进入详细配置页。

按照实际组网需求修改以下参数:

  • CPU:建议至少分配 2 个内核,保障系统运行流畅。
  • Network:修改 Adapters(即交换机可用的接口数量),建议至少配置 6 个,用于后续的上下行链路连接和业务端口。

确认无误后,点击【Save】保存模板。

4 设备连接控制器

4.1 创建库存

登录控制器 https://app.cloudswitch.io

当前支持Google、Microsoft、GitHub、Feishu等多种登录方式,用户可任选一种方式登录。

登录成功后,进入您的个人场所。

控制器界面

在【配置】-【库存信息】页面点击【+】,输入设备型号(虚拟机型号均为CX206Y-48GT-M-HWP4)和MAC地址,创建您的库存设备。

注意:MAC地址由用户自行创建,如果控制器报错:Error creating Device: 1021: Resource already exists,则说明该地址已被控制器的其它用户使用,需更换地址重试。

4.2 设备初始化

Project重启或设备重启,都会导致设备的MAC地址变化,随机产生一个新的MAC,为了保证和控制器的稳定相连,我们需要手动将设备的MAC地址固定为上一步已加入控制器库存的MAC。

接入交换机节点:从节点列表中按需拖入AsterNOS 虚拟机

启动设备:右键点击 AsterNOS 节点,选择【Start】运行

进入控制台:设备启动后,右键点击 AsterNOS 节点,选择【Web console in new tab】打开命令行。

系统登录:等待几分钟系统加载完毕。输入默认用户名 admin 和密码 asteros 登录。进入系统后需再等待片刻,直至底层服务启动并进入 CLI 视图。

  • 登录设备后,输入system bash,找到/usr/bin/路径下的database.sh文件,定位到这两行
MAC ADDRESS=$(sonic-cfggen -H -v 'DEVICE METADATA.localhost.mac')
$SONIC DB CLI STATE DB HSET 'DEVICE METADATA | localhost' 'mac' "$MAC ADDREE"
  • 修改该文件将MAC_ADDRESS=$(sonic-cfggen -H -v ‘DEVICE_METADATA.localhost.mac’)注释掉,然后新增一行MAC_ADDRESS=”60:22:33:44:11:01″,使mac地址固定。
# MAC ADDRESS=$(sonic-cfggen -H -v 'DEVICE METADATA.localhost.mac')
MAC ADDRESS="60:22:33:44:11:01"
$SONIC DB CLI STATE DB HSET 'DEVICE METADATA | localhost' 'mac' "$MAC ADDREE"

注意:此处MAC地址为创建库存时输入的MAC,在此处配置时格式必须严谨(字母大写,中间用”:”分隔),格式错误会导致系统启动异常。

  • 更改完之后,将设备重启一次,然后再配置设备与控制器对接,设备就会以固定的mac与控制器相连

注意:修改系统文件会在设备启动时触发完整性校验告警。此为预期行为,不影响设备功能,请直接忽略。

配置截图

4.3 配置设备与控制器对接

由于本次采用云端控制器,vAsterNOS 交换机必须通过本地网关路由,才能跨越公网与远端的控制器建立连接。

管理网络规划(本处仅为示例,实验时需按照实际测试网络环境进行配置):

  • 云上控制器 IP(公网/云端可达):52.76.134.89(https://app.cloudswitch.io)
  • 本地 GNS3 服务器 IP:192.168.0.100
  • 本地网络网关(用于连接互联网/云端):192.168.0.1
  • AsterNOS 虚拟机管理 IP:192.168.0.201、192.168.0.202、192.168.0.203、192.168.0.204

拓扑搭建:

  • 添加本地网络出口:回到 Project 主界面,点击【+】图标,拖入一个【Cloud】节点。此节点代表 GNS3 所在的本地物理网络,是虚拟机访问公网云控制器的出口。
  • 添加二层集线器:拖入一个 GNS3 自带的基础二层【Ethernet switch】。使用连线工具将【Switch】与【Cloud】的接口相连。
  • 接入交换机节点:将交换机管理口eth0连接至【Switch】。
拓扑

右键点击 AsterNOS 节点,选择【Web console in new tab】打开命令行,依次输入以下指令:

sonic# configure
sonic(config)# interface mgmt 0
sonic(config-mgmt-0)# ip address 192.168.0.201/20 192.168.0.1 
sonic(config-mgmt-0)# vrf mgmt
sonic(config-mgmt-0)# exit
sonic(config)# ucentral-client enable
sonic(config)# ucentral-client server 52.76.134.89 vrf mgmt
sonic(config)# exit
sonic# write running-config -y 

依次配置四台设备,通过show ucentral-client server status命令确定设备已经与控制器成功连接

sonic# show ucentral-client server status 
+--------------+-----------+
| ServerIP      | status    |
+==============+===========+
| 52.76.134.89 | connected |
+--------------+-----------+

等待几分钟后,可以在控制器【设备】页面可以查看到设备已上线。

控制器界面

5 基于控制器配置园区三层网络

5.1 场景介绍

本方案面向中小型园区,采用先进的Spine-Leaf全三层网络架构,通过云化园区控制器实现网络的自动化部署、集中化管理和智能化运维。方案采用分布式网关与DHCP高可用等关键技术,为中小规模终端接入提供了高性能、高可靠的网络基础。

5.2 网络规划

网络拓扑

采用Spine-Leaf组网架构,基于云化园区的经典全三层路由网络,Spine与Leaf间通过控制器自动形成eBGP,分布式网关部署在Leaf设备上。

基础链路数据规划

源设备源设备接口IP地址目的设备目的设备接口IP地址
Spine1Ethernet510.10.100.11/24Core–10.10.100.1/24
Ethernet1–Leaf1Ethernet1–
Ethernet2–Leaf2Ethernet1–
Loopback010.10.15.1/32–––
Spine2Ethernet4910.10.100.12/24Core 10.10.100.1/24
Ethernet1–Leaf1Ethernet2–
Ethernet2–Leaf2Ethernet2–
Loopback010.10.15.2/32   
Leaf1Ethernet1–Spine1Ethernet1–
Ethernet2–Spine2Ethernet1–
Loopback010.10.15.3/32   
Leaf2Ethernet1–Spine-1Ethernet2–
Ethernet2–Spine-2Ethernet2–
Loopback010.10.15.4/32   

业务网络数据规划

业务VLANIP网段IP网关
1081180.10.1.0/24180.10.1.1/24

Core设备配置:

实际网络环境中Core 设备是整个园区网络连接外部网络、数据中心或公网云控制器的出口节点,所有从园区内部发往外部(如公网)的数据流量均通过 Core 进行汇聚和出口转发。但在本实验(GNS3 虚拟化环境)中,业务网络仅在GNS3内部的几台交换机和终端虚拟机(PC)之间进行交互,属于完全闭环的局域网实验。因此,仅需配置Core设备的下行口。用户可选择GNS3中已安装的任意三层交换机或路由器作为Core设备,此处配置以使用vAsterNOS为例:

sonic# configure 
sonic(config)# vlan 100
sonic(config-vlan-100)# exit
sonic(config)# interface ethernet 1
sonic(config-if-1)# switchport access vlan 100
sonic(config-if-1)# exit
sonic(config)# interface ethernet 2
sonic(config-if-2)# switchport access vlan 100
sonic(config-if-2)# exit
sonic(config)# interface vlan 100
sonic(config-vlanif-100)# ip address 10.10.100.1/24
sonic(config)# ip route 10.10.15.1/32 10.10.100.11
sonic(config)# ip route 10.10.15.2/32 10.10.100.12

5.3 规划拓扑

点击【规划拓扑】进入相应页面,选择中小园区部署,根据设备角色填写所需设备的型号和数量,然后单击【完成】完成网络拓扑预规划。控制器将根据填写内容生成网络拓扑。

控制器界面

用户可以单击设备端的【编辑】按钮,在右侧的滑出框中填写相应信息。

控制器界面
  • MAC:通过MAC地址唯一选定一台设备
  • Loopback0 IP:配置该设备的Loopback0口的IP地址,该地址将会作为该设备的带内管理使用
  • 主机名:配置设备的主机名
  • 设备角色:配置当前设备的Spine/Leaf角色
  • 互联接口:
    • 本地接口:当前设备上的接口
    • 对端设备:选择本地接口对端的设备
    • 对端接口:对端设备与当前设备本地接口互联的接口

全部完成后点击页面右上角【保存】,在弹出窗口点击【确认】

5.4 基础网络配置

点击右上角【基础网络配置】,按照网络规划填写上行链路信息和默认路由,Nexthop指向Core交换机下行口地址。

5.5 有线业务配置

5.5.1 有线业务配置

点击【有线业务配置】-【+】创建有线业务配置。Leaf1和Leaf2配置一致,此处可同时选择两台Leaf设备。

控制器截图
5.5.1.1 DHCP中继

由于DHCP Server部署在Spine上,不与Leaf上的业务设备直连,需配置DHCP中继
点击【创建】,在弹出的页面中填写DHCP服务器IP,完成后点击【添加】

此方案两台Spine上均部署DHCP Server并配置DHCP Failover,需填写两个DHCP服务器IP(此处的IP为两台Spine设备的Loopback IP)

控制器界面
5.5.1.2 业务VLAN

点击【创建】,按照页面提示填写相关信息,分别创建VLAN1081的业务网段信息并开启有线终端采集使能。
注意:接口按照虚拟拓扑中PC的实际连接情况为准,本实验示例中为Ethernet3和Ethernet4

全部完成后点击右上角【保存】,即完成Leaf交换机的有线业务配置。

5.5.2 DHCP

控制器支持用户在Spine设备上配置DHCP Server功能且两台Spine之间自动形成DHCP Failover,保证DHCP服务高可靠。

进入场所后,点击【配置】-【有线业务配置】-【DHCP】进入DHCP Server配置界面,点击页面中的【+】创建一个新的配置:

配置界面

名称:用户自行设定。

IP网段:指定DHCP服务器分配给DHCP客户端的IP地址所在网段。

网关地址:指定DHCP服务器分配给DHCP客户端的网关地址。

DNS:指定DNS服务器地址。

IP地址池:指定DHCP服务器分配给DHCP客户端的地址范围。

租约时间:指定IP地址租约时间。

全部完成后点击【保存】

5.6 配置下发

当所有交换机均能连接到控制器,建议先点击【规划拓扑】右上侧【高级功能】-【拓扑一致性验证】确认生成的拓扑与规划拓扑是否一致,确认无误后,再通过控制器为交换机下发配置。

5.6.1 基础网络配置推送

点击【配置】-【规划拓扑】-【基础网络配置】,进入基础网络配置视图,点击右上角的【推送配置】按钮。

控制器默认会选择所有交换机,点击【下一步】-【开始】按钮,开始为交换机下发基础网络配置。

5.6.2 有线业务配置推送

5.6.2.1 有线业务配置

在【配置】-【有线业务配置】界面选择要下发的配置,点击【推送配置】按钮:
在弹出的界面中点击【下一步】-【开始】,为交换机下发业务配置:

5.6.2.2 DHCP

在【配置】-【有线业务配置】-【DHCP】界面选择要下发的配置,点击【推送配置】按钮推送配置,为交换机下发DHCP地址池

6 网络验证

  1. Leaf1的Ethernet3和Ethernet4分别连接虚拟终端PC1和PC2,Leaf2的Ethernet3和Ethernet4分别连接虚拟终端PC3和PC4,在PC上执行ip dhcp命令,可观察到PC成功获取到对应网段的地址并上线控制器。
配置界面
  1. PC1、PC2、PC3、P4之间任意两台均可互通。
配置界面

在分布式网关架构下,Leaf交换机通过ARP代理拦截终端的跨Leaf ARP请求,并统一回复自身的网关MAC地址。直接在边缘节点终结二层广播风暴,并利用高效的核心三层网络将数据单播转发给目的终端。

配置界面
  1. 仪表盘中可看到终端和网络状况
控制器界面

如有其它问题,请填写需求表单联系我们。www.asterfusion.com

白皮书:AI智算双平面网络方案

前言

由于LLM与传统云计算存在显著差异,传统数据中心网络并不适用于LLM训练场景。LLM训练中的流量模型以大象流为主导,使得ECMP算法容易出现哈希极化现象,导致流量分布不均等问题,采用双平面架构设计可以有效避免哈希极化问题。同时LLM训练需要GPU同步完成迭代运算,这使其对单点故障极为敏感,双平面架构使用网卡双上联设计,容错性强,单个Leaf或链路故障不中断训练。
本文聚焦AI智算GPU后端双平面网络设计,以星融元数据中心400G/800G高密度接口交换机为核心硬件载体,采用Clos组网,基于Rail-optimized架构,提供标准化部署的解决方案。

读者对象

本手册主要适用于方案规划设计及现场实施人员,相关人员应具备以下能力:

  • 熟悉Asterfusion数据中心网络交换机产品
  • 了解EVPN Multi-Homing、RoCE等技术

修改记录

日期版本修改备注
2026-4-29V1.0首次发布

1 概述

随着人工智能技术的快速发展,大规模语言模型(LLM)训练已成为数据中心网络面临的新挑战。与传统云计算应用相比,LLM训练呈现出显著不同的流量特征和技术需求:

AI智算网络的演进与挑战

  • 规模爆炸式增长:从千卡到万卡乃至更大规模,GPU集群规模呈指数级增长
  • 流量模式变革:以All-Reduce、All-Gather等集合通信操作为主导的大象流成为主要流量特征
  • 性能要求极致:纳秒级时延、零丢包率、高吞吐量成为AI训练的硬性要求
  • 可靠性压力剧增:单点故障可能导致数万GPU计算资源的浪费和训练任务中断

传统数据中心网络的收敛设计在高密度AI流量下容易引发拥塞和丢包,严重影响训练效率,采用双平面架构设计可以有效解决上述挑战:

  • 避免哈希极化:通过物理隔离的独立转发平面,从根本上消除ECMP哈希冲突
  • 提升容错能力:使用网卡双上联设计,单个Leaf或链路故障不中断训练
  • 保障训练连续性:LLM训练需要GPU同步完成迭代运算,这使其对单点故障极为敏感,双平面架构提供了天然的冗余保护

2 AI智算双平面网络架构

2.1 Rail-Only和Rail-Optimized架构

连接到不同服务器同编号GPU的Leaf节点,被定义为一个Rail(轨道)平面,即Rail N通过第N台Leaf交换机实现所有N号GPU的互联。如下图,每台服务器上的GPU编号为0~7,对应Rail 1~Rail 8。同轨传输是指源GPU与目标GPU的对应网卡接入到同一台Leaf交换机。LLM(Large Language Model)训练通过混合并行(数据并行、张量并行、流水线并行)策略优化流量分布,使得大部分流量集中在节点内和同轨道内。

Rail-only架构
图 1 Rail-only架构

Rail-only架构采用单层组网设计,将整个集群的网络在物理上划分为8个独立的轨道,不同节点的GPU间通信均为同轨传输,轨道内通信可实现“一跳直达”。

在Rail概念的基础上,把由一组Rail组成的基础构建单元视作一个Group,其中包含若干台Leaf交换机与GPU服务器。当集群规模扩大时,可通过水平堆叠多个Group来扩展,从而支撑更大规模的集群部署。
可将计算网想象成一套铁路系统:计算节点是装载算力的“车站”,Rail是连接各站同号GPU的“专属铁路线”保障高速直达;Group则是整合多条轨道及其配套交换机的“标准站台区”单元。通过这种模组化的堆叠,智算中心能像搭积木一样横向扩展,既保证了单条轨道内的极速通信,又实现了万卡集群的高效互联。

Rail-optimized架构
图2 Rail-optimized架构

如上图,Rail-optimized(轨道优化)架构的核心设计思路是将每台服务器的同号网卡接入同一台Leaf交换机,确保GPU间的多机通信尽可能经过最少跳数内完成。在这种设计下,GPU节点间的通信可利用自身的NVSwitch[1]内部通路,只需要经过一跳即可到达,而无需跨多台交换机,避免产生额外时延。具体如下:

  • 服务器内互联:8张GPU通过NVLink总线连接至NVSwitch,实现服务器内部GPU间的低时延通信,降低Scale-Out网络传输压力;
  • 服务器-网络互联:所有服务器遵循统一的连线逻辑,网卡按“NIC1-Leaf1、NIC2-Leaf2……”的规则,分别接入多台Leaf交换机;
  • 网络层互联:Leaf与Spine交换机采用全互联模式,采用2层Clos架构。

2.2 双平面架构

双平面是一种创新的网络架构,通过构建两个完全相同的网络平面来优化大规模GPU集群的互联。每个GPU都对应两个网卡端口,两个端口分别连接不同的网络平面,如图3所示。这两个网络平面的拓扑结构完全相同,且没有任何交叉连接。这种设计大幅降低了哈希极化的概率,优化了通信效率。双平面架构不仅提升了网络性能,还增强了网络的稳定性和可靠性,即使单一设备或单一平面出现网络故障,也不会影响整个集群网络的正常运行。

双平面Rail-optimized架构
图3 双平面Rail-optimized架构

双平面架构将网络划分为两个完全独立的转发平面(Plane 1和Plane 2),每个平面包含完整的Clos架构层次,两个平面在物理上完全隔离,确保转发平面的独立性和故障隔离。

对比维度传统单平面架构双平面架构
哈希冲突哈希极化严重自然分流,流量分布均匀
故障影响全网影响平面隔离
扩展性线性扩展受限平面级扩展支持更大规模
确定性路径多变确定性差路径固定性能可预测
表格 1 双平面架构与传统架构对比

3 支撑双平面网络的技术

3.1 双平面技术

在双平面网络架构中,每张网卡都需要出两个端口同时连接两台Leaf,形成类似双上联Leaf堆叠的效果。在传统数据中心网络中,通常使用MC-LAG(Multi Chassis Link Aggregation Group,跨设备链路聚合组)来实现堆叠式双Leaf架构。在堆叠式双Leaf架构中,两个Leaf通过直连链路相连,这种设计对同步ARP、MAC等数据平面转发信息至关重要。这种方案能显著降低生产环境中因独立Leaf交换机故障导致的系统性能下降问题,但由于两个Leaf之间直连链路还需要负责故障情况下的业务转发,所以会占用交换机的大量带宽。星融元提供的双平面网络架构方案有两种实现双Leaf架构的方式可供按需选择,一种依赖网卡双发ARP的能力,一种依赖交换机具备EVPN MH(EVPN Multi-Homing,EVPN多宿主)的能力。

3.1.1 双上联Leaf网卡双发

该实现的核心是移除两台Leaf之间的物理直连链路 ,转而通过端侧网卡和交换机的协同来实现类似堆叠的高可用效果。在此实现中,服务器的网卡采用bond模式双上行,分别连接到两个平面的Leaf交换机。这两台Leaf交换机不进行物理堆叠,也没有专用的直连同步链路。

其关键技术点在于如何在没有直连链路的情况下,确保两台Leaf对服务器的ARP请求和MAC地址学习保持一致,从而实现流量的无缝切换。主要通过以下几个方面实现:

网卡双发ARP:这是方案的核心依赖。服务器网卡需要具备向两个上行端口同时发送ARP请求的能力。这样,两台Leaf交换机都能学习到服务器的MAC地址和IP地址。

交换机ARP代理与ARP转主机路由:Leaf交换机开启ARP代理功能,并将学习到的ARP表项转换为32位的主机路由(ARP-to-Host Route),通过上行的BGP协议宣告给整个平面。

这样,不同平面的交换机网络都能获得完整的服务器网卡Host路由。

双上联Leaf网卡双发技术
图 4 双上联Leaf网卡双发技术

3.1.2 双上联Leaf EVPN MH

EVPN MH是一种多归多活VXLAN网关方案,在RFC 7432中定义,使用BGP EVPN作为控制平面。与MC-LAG方案类似,EVPN MH方案提供了接入场景下高可靠的支持,实现了负载均衡、故障容错等功能。相比现有的MC-LAG方案,EVPN MH方案按照RFC标准实现,具备良好的兼容性。同时,无需部署多活设备之间的物理连线,便于扩展。

在此实现中,两台Leaf交换机作为EVPN的PE设备,通过管理网或者交换机AUX 10G链路(非业务端口)直连建立BGP-EVPN协议连接,共同服务于同一组GPU服务器。其核心是通过ESI(Ethernet Segment Identifier,以太网段标识符)来标识服务器连接的两个物理链路,从而实现对同一以太网段的多归属接入。

其工作原理示意图如下,服务器网卡发送ARP广播通过bond负载均衡之后发往其中一个平面的Leaf设备,Leaf设备通过向VXLAN隧道泛洪ARP广播使得隧道另一端的Leaf(不同平面)同步学习到了ARP,然后两台不同平面的Leaf将学习到的ARP表项转换为32位的主机路由(ARP-to-Host Route),通过上行的BGP协议宣告给整个平面。

双上联Leaf EVPN MH技术
图 5 双上联Leaf EVPN MH技术

3.2 负载均衡技术

ECMP(Equal-Cost Multi-Path,等价多路径)逐流负载均衡,是数据中心网络中应用最广泛的选路策略。通过对数据包的固定字段(如源/目的MAC地址、IP五元组等)作为哈希因子,利用哈希算法生成哈希值,在多条路径中随机选路。这种基于数据包的特征字段的负载均衡方式也称为静态负载均衡。

然而,逐流负载均衡在流量特征单一时易引发负载分担不均,尤其当“大象流”出现时,会加剧所选中成员链路的拥塞,严重影响网络性能,甚至引起丢包。深度学习模型高度依赖于All-Reduce、All-Gather、Broadcast等集合通信操作,这类操作会在各GPU间产生密集流量交互,传输速率通常高达每秒数太比特(Tbps)。同时,大模型参数同步依赖的集合通信存在木桶效应——若流量分布不均,即使只有一条路径发生拥塞,也可能拖慢整个训练任务的进度,放大负面影响。因此,传统逐流负载均衡方式并不适用于AI智算网络。

针对这一问题,本文介绍三种替代传统逐流负载分担的技术方案:基于子流(Flowlet)的负载均衡技术、智能选路技术,以及包喷洒技术。

3.2.1 自适应路由切换

ARS(Adaptive Routing and Switching,自适应路由切换)是一种基于Flowlet(子流)的负载均衡技术。其借助ASIC提供的硬件ALB(Auto-Load-Balancing)[2]能力,能够在减少乱序的同时实现近乎逐包负载分担的均衡性。该技术通过将哈希值相同的数据流按一定时间间隔分割成一系列Flowlet,再通过实时感知端口的带宽利用率、队列深度等链路质量指标,将Flowlet主动分配至空闲路径,从而提升整体网络带宽利用率。

3.2.2 智能选路

智能选路技术根据负载均衡实现的方式分为动态和静态两种。

动态智能选路是一种基于感知路由的负载均衡技术,综合评估带宽使用、队列占用、转发时延等关键参数,精准判断网络路径质量。其中,带宽和队列使用基于ASIC硬件寄存器统计,精度达百毫秒级;转发时延基于INT(In-band Network Telemetry,带内网络遥测)技术,精度达纳秒级。各交换机实时检测路径质量,通过BGP扩展属性传递信息,并结合逐流的动态WCMP(Weighted Cost Multipath,加权多路径),将流量动态分配至最佳路径,避免网络瓶颈,提升带宽利用率。

静态智能选路是一种基于预设策略的负载均衡技术,将GPU发往Leaf不同下行接口的流量通过业务隔离与定向转发,结合PBR(Policy-Based Routing,策略路由)将流量重定向至指定的Leaf上行接口,从而进入预设的Spine设备,实现1:1收敛下的上行负载均衡。该技术将特定流量与物理路径强绑定,适用于对路径稳定性要求较高、流量模型相对固定的场景。

3.2.3 包喷洒

包喷洒[3]是一种逐包负载均衡技术,通过将数据包均匀喷洒到各条链路上,避免单一路径拥堵。包喷洒技术包含两种算法:

  • Random算法:将数据包随机分散至各条链路;
  • Round Robin算法:按顺序将数据包逐一、等量地分散至各条链路。

尽管逐包负载均衡在理论上能实现网络利用率最大化,但也面临显著挑战——实际组网中,当数据包通过不同链路能到达目的地时,由于各链路的转发时延不同,造成接收端报文出现乱序,影响整体性能。因此,逐包负载均衡技术需要硬件层面的强力支持,即端侧高性能网卡需具备乱序重排能力。

4 搭建400G AI智算双平面网络

4.1 集群组网设计

4.1.1 组网方案

中大规模400G AI智算双平面网络组网
图 6 中大规模400G AI智算双平面网络组网

上图为一个256计算节点(2048个GPU)的400G AI智算双平面Rail-optimized架构组网图,部署48台CX864E-N(16台Spine节点,32台Leaf节点),包含两个平面,每个平面16台Leaf节点和8台Spine节点。其核心设计原则如下:

  • 每个GPU连接专用400G网卡,每个400G网卡出两个端口分别连接两个平面,每台服务器的网卡所出的第一个端口按照“NIC1-Leaf1、NIC2-Leaf2……”的规则接入Plane 1的Leaf交换机,每台服务器的网卡所出的第二个端口按照“NIC1-Leaf1、NIC2-Leaf2……”的规则接入Plane 2的Leaf交换机。
  • 每个平面网络采用2层Clos架构,平面内Spine与Leaf全互联,利用IPv6 link-local特性建立unnumbered BGP邻居,宣告各Rail的网段路由,实现路由交换,无需为Leaf-Spine互联接口规划IP地址;
  • Leaf下行与上行容量的比值应严格遵循1:1收敛比,保证无阻塞传输;
  • Leaf、Spine交换机启用一键RoCE及负载均衡特性,构建无损网络。

4.1.2 设备选型

建设中大规模400Gbps RoCEv2网络,推荐选用星融元数据中心交换机CX864E-N、CX732Q-N,核心依托两款设备的超低转发时延特性——CX864E-N端到端转发时延低至560ns,CX732Q-N更可达500ns,可实现同轨传输约600ns超低时延,跨轨传输(Leaf-Spine-Leaf)三层转发的端到端网络时延控制在2μs以内,充分满足RoCEv2网络对低时延的严苛要求。

在双平面Rail-optimized组网中,单Group内的Leaf节点数量与每台服务器的GPU数量(即Rail数量)相关。以NVIDIA DGX H100 GPU服务器(每台搭载8个GPU)为例,一个Group需配置16个Leaf节点,对应8个Rail。

每个Group可接入的服务器最大数量与Leaf节点的接口形态相关。为保证1:1收敛比,Leaf节点的一半接口用于连接GPU服务器,另一半接口则连接Spine节点,因此每个Group最多可接入的GPU服务器为Leaf节点可用接口数量的一半。

下表分别为选用CX864E-N、CX732Q-N部署不同GPU数量双平面网络的节点配置需求:

总GPU数/服务器数Leaf节点数量Spine节点数量每台Leaf与Spine之间的400G链路数
512/648432
1024/12816816
2048/25632168
4096/51264324
8192/1024128642
16384/20482561281
表格 1 选用CX864E-N部署不同GPU数量的双平面网络所需的节点配置需求
总GPU数/服务器数Leaf节点数量Spine节点数量每台Leaf与Spine之间的400G链路数
256/321684
512/6432162
1024/12864321
表格 2 选用CX732Q-N部署不同GPU数量的双平面网络所需的节点配置需求

5 结语

随着人工智能技术的飞速发展,AI智算网络正经历着前所未有的变革。本方案系统阐述了基于双平面架构的AI智算网络设计理念和技术实现,为大规模GPU集群的网络建设提供了完整的解决方案。本方案可有效支撑不同规模的AI集群双平面计算网部署,如想了解具体配置实施案例,请参阅相关最佳实践。

[1] NVSwitch为NVIDIA推出的承载高速NVLink的交换芯片,在Scale-Up网络实现多GPU以NVLink能够达到的最高速度进行通信。
[2] [3] CX864E-N型号产品具备该能力。


产品型号: 星融元(Asterfusion)CX864E-N (64 x 800G OSFP)
功能特性:RoCEv2, PFC, ECN, DCBX ……
应用场景:GPU算力集群,分布式存储
最后更新:2026-05-18

如有其它问题,请填写需求表单联系我们。www.asterfusion.com

配置指导:Ceph存储集群部署

Ceph存储集群部署方案

1 目标

本文档将简要介绍分布式存储Ceph的基本概念,以及选用Asterfusion CX-N系列超低时延交换机进行组网,部署一个3节点存储集群的具体方法。

2 概要介绍

2.1 关于Ceph

Ceph是一个目前非常流行且应用广泛的SDS(Software Defined Storage)解决方案。Ceph官网上用这句话简明扼要地对其进行定义:“Ceph is a unified, distributed storage system designed for excellent performance, reliability and scalability.” 翻译为中文:“Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式的存储系统。”这句话可以作为理解Ceph系统设计思想和实现机制的基本出发点。在这个定义中,应当特别注意“存储系统”这个概念的两个修饰词,即“统一的”和“分布式的”。

具体而言,“统一的”意味着Ceph可以使用一套存储系统来同时提供对象存储、块存储和文件系统存储三种功能,以便在满足不同应用需求的前提下简化部署和运维。而“分布式的”在Ceph系统中则意味着真正的无中心结构和没有理论上限的系统规模可扩展性。在实践当中,Ceph可以被部署于上千台服务器上。

2.2 关于Asterfusion CX-N系列超低时延交换机

星融元Asterfusion自主开发的面向数据中心网络的CX-N系列超低时延交换机,可为云数据中心中的高性能计算集群、存储集群、大数据分析、高频交易、Cloud OS全面融合等多业务场景提供高性能的网络服务。

本次验证部署的存储集群,选用了两台CX-N系列CX308P-48Y-N进行组网,这款1U交换机拥有48个25G/10G SFP28光口,8个100GE/40GE QSFP28光口,交换容量高达4.0Tbps。

3 存储集群组件介绍

Ceph集群最初有MON、OSD、MDS、RGW共四个服务组件,从Luminous版开始引入了MGR组件,用于采集和统计集群的各种指标。L版之后开始必须部署MGR组件,不过即使MGR服务停止运行,整个集群的IO还是可以进行的,只是各种指标不会继续更新,并且与其相关的命令行无法响应(例如:ceph status)。

本次部署的Ceph版本为N版,各组件功能说明如下。

  • MON:控制器服务,主要维护集群中的各种MAP,同时也提供安全认证服务,是必要组件;
  • OSD:对象存储服务,负责处理数据的复制、恢复、回填与再均衡,是必要组件;
  • MGR:集群监控服务,负责监控整个集群的各种指标,并对外提供接口,是必要组件;
  • MDS:元数据服务,为CFS存储、维护元数据,只在使用CFS时部署,是非必要组件;
  • RGW:对象存储网关,对外提供RESTful访问接口,兼容S3与Swift,是非必要组件。

部署一个最小规模的Ceph集群,必须包含1个MON、1个MGR和2个OSD,否则整个集群是不健康的。因为,Monitor的Leader Elect机制要求集群中的MON最好为奇数,在生产环境中官方推荐使用3个MON来提供高可用性。而2个OSD则是为了满足双副本机制,以确保数据的安全性。

4 环境声明与部署前的准备

4.1 服务器系统与集群版本

  • CEPH:Nautilus 14.2.9(鹦鹉螺)稳定版;
  • 操作系统:Red Hat Enterprise Linux Server 7.6 (Maipo)。

4.2 节点配置与网络架构

主机名IP地址处理器内存硬盘节点角色
node-01192.168.2.81 管理网
192.168.20.81 存储网
32C64G100G 系统盘
200G*5 OSD
MON/OSD/MGR/RGW
node-02192.168.2.82 管理网
192.168.20.82 存储网
32C64G100G 系统盘
200G*5 OSD
MON/OSD/MGR/RGW
node-03192.168.2.83 管理网
192.168.20.83 存储网
32C64G100G 系统盘
200G*5 OSD
MON/OSD/MGR/RGW

集群中3个节点的配置信息如上所示。网络方面按官方推荐,使用管理网(前端)和存储网(后端)两个独立的网络,可以显著提高Ceph集群的性能表现。因此,每台节点上必须配备多块物理网卡(最低两块物理网卡)。

图4.1:官方文档推荐的存储集群网络方案
图4.2:实际部署方案的网络拓扑

4.3 部署前的网络环境准备

使用25G光纤模块将服务器与管理网、存储网交换机按照图4.2的拓扑连线。对于此次的验证方案,需要两个二层网络,在交换机上电开机后无需其他配置操作,只需要在完成连线后确认各个端口状态为UP且速率协商正常即可。

4.4 部署前的系统环境准备

需要在各个节点上都进行操作,下面的所有配置步骤均以节点node-01为例。

  • 禁用SELinux
[root@node-01 ~]# setenforce 0
[root@node-01 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
  • 禁用防火墙
[root@node-01 ~]# systemctl stop firewalld
[root@node-01 ~]# systemctl disable firewalld
  • 配置IP地址

修改两块网卡的配置文件,如下所示:

[root@node-01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens192 
TYPE=Ethernet
BOOTPROTO=none
NAME=ens192
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.2.81
GATEWAY=192.168.2.1
DNS1=223.5.5.5
DNS1=223.6.6.6

[root@node-01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens224 
TYPE=Ethernet
BOOTPROTO=none
NAME=ens224
DEVICE=ens224
ONBOOT=yes
IPADDR=192.168.20.81
GATEWAY=192.168.20.1

[root@node-01 ~]# systemctl stop NetworkManager
[root@node-01 ~]# systemctl disable NetworkManager

[root@node-01 ~]# systemctl restart network
  • 配置主机名
[root@node-01 ~]# hostnamectl set-hostname node-01.open-source.cc
[root@node-01 ~]# cat /etc/hosts
......
# Cluster Node Resolve
192.168.2.81 node-01.open-source.cc node-01
192.168.2.82 node-02.open-source.cc node-02
192.168.2.83 node-03.open-source.cc node-03
......

配置国内YUM源

国内YUM源可选择的非常多,如:阿里、163、中科大、清华等,配置YUM源的具体方法此处不赘述,此处仅列出文档中的所有安装包操作依赖的源,如下所示:

[root@node-01 ~]# ll /etc/yum.repos.d/
total 28
-rw-r--r-- 1 root root 1441 May 19 09:00 CentOS7-Base-163.repo
-rw-r--r-- 1 root root  575 May 20 21:26 ceph.repo
-rw-r--r-- 1 root root  951 Oct  3  2017 epel.repo
-rw-r--r-- 1 root root 1050 Oct  3  2017 epel-testing.repo

5 安装步骤

首先,需要在集群中的所有节点上,安装Ceph软件包及其依赖。

[root@node-01 ~]# yum makecache fast
[root@node-01 ~]# yum install -y ceph ceph-radosgw

5.1 单节点部署

在节点node-01上进行以下操作,以完成单节点部署,后续再进一步介绍集群的扩容操作。

  • 生成集群ID
[root@node-01 ~]# uuidgen 
dd3807d6-0850-4080-8638-a47e946986ed
  • 创建配置文件
[root@node-01 ~]# touch /etc/ceph/ceph.conf
[root@node-01 ~]# cat /etc/ceph/ceph.conf 
[global]
fsid = dd3807d6-0850-4080-8638-a47e946986ed
mon host = 192.168.2.81
public network = 192.168.2.0/24
cluster network = 192.168.20.0/24
auth cluster required = none
auth service required = none
auth client required = none
osd journal size = 1024
osd pool default size = 2
osd pool default min size = 2
osd pool default pg num = 128
osd pool default pgp num = 128
osd crush chooseleaf type = 1
osd_mkfs_type = xfs
max mds = 5
mds max file size = 100000000000000
mds cache size = 1000000
mon osd down out interval = 900

[mon]
mon clock drift allowed = .50
  • 生成monmap文件
[root@node-01 ~]# monmaptool --create --add node-01 192.168.2.81 --fsid <ClusterID> /tmp/monmap
  • 准备mon的数据目录
[root@node-01 ~]# sudo -u ceph mkdir /var/lib/ceph/mon/ceph-node-01
  • 初始化mon服务
[root@node-01 ~]# sudo -u ceph ceph-mon --mkfs -i node-01 --monmap /tmp/monmap
[root@node-01 ~]# sudo -u ceph touch /var/lib/ceph/mon/ceph-node-01/done
  • 启用msgr2协议支持
[root@node-01 ~]# ceph mon enable-msgr2
  • 设置mon开机自启
[root@node-01 ~]# systemctl restart ceph-mon@node-01
[root@node-01 ~]# systemctl enable ceph-mon@node-01
  • 检查集群健康状态
[root@node-01 ~]# ceph status
  • 初始化OSD目录树
[root@node-01 ~]# ceph osd tree

[root@node-01 ~]# ceph osd crush add-bucket node-01 host
[root@node-01 ~]# ceph osd crush add-bucket node-02 host
[root@node-01 ~]# ceph osd crush add-bucket node-03 host

[root@node-01 ~]# ceph osd crush move node-01 root=default
[root@node-01 ~]# ceph osd crush move node-02 root=default
[root@node-01 ~]# ceph osd crush move node-03 root=default
  • 添加OSD
[root@node-01 ~]# ceph-volume lvm create --data /dev/sdb
[root@node-01 ~]# ceph-volume lvm create --data /dev/sdc
[root@node-01 ~]# ceph-volume lvm create --data /dev/sdd
[root@node-01 ~]# ceph-volume lvm create --data /dev/sde
[root@node-01 ~]# ceph-volume lvm create --data /dev/sdf
  • 设置OSD守护进程自启
[root@node-01 ~]# systemctl restart ceph-osd@0.service
[root@node-01 ~]# systemctl enable ceph-osd@0.service

[root@node-01 ~]# systemctl restart ceph-osd@1.service
[root@node-01 ~]# systemctl enable ceph-osd@1.service

[root@node-01 ~]# systemctl restart ceph-osd@2.service
[root@node-01 ~]# systemctl enable ceph-osd@2.service

[root@node-01 ~]# systemctl restart ceph-osd@3.service
[root@node-01 ~]# systemctl enable ceph-osd@3.service

[root@node-01 ~]# systemctl restart ceph-osd@4.service
[root@node-01 ~]# systemctl enable ceph-osd@4.service

5.2 扩容OSD节点

  • 在Node-02上添加OSD
[root@node-02 ~]# ceph-volume lvm create --data /dev/sdb
[root@node-02 ~]# ceph-volume lvm create --data /dev/sdc
[root@node-02 ~]# ceph-volume lvm create --data /dev/sdd
[root@node-02 ~]# ceph-volume lvm create --data /dev/sde
[root@node-02 ~]# ceph-volume lvm create --data /dev/sdf

[root@node-02 ~]# ceph-volume lvm list

[root@node-02 ~]# systemctl restart ceph-osd@5.service
[root@node-02 ~]# systemctl enable ceph-osd@5.service

[root@node-02 ~]# systemctl restart ceph-osd@6.service
[root@node-02 ~]# systemctl enable ceph-osd@6.service

[root@node-02 ~]# systemctl restart ceph-osd@7.service
[root@node-02 ~]# systemctl enable ceph-osd@7.service

[root@node-02 ~]# systemctl restart ceph-osd@8.service
[root@node-02 ~]# systemctl enable ceph-osd@8.service

[root@node-02 ~]# systemctl restart ceph-osd@9.service
[root@node-02 ~]# systemctl enable ceph-osd@9.service
  • 在Node-03上添加OSD
[root@node-03 ~]# ceph-volume lvm create --data /dev/sdb
[root@node-03 ~]# ceph-volume lvm create --data /dev/sdc
[root@node-03 ~]# ceph-volume lvm create --data /dev/sdd
[root@node-03 ~]# ceph-volume lvm create --data /dev/sde
[root@node-03 ~]# ceph-volume lvm create --data /dev/sdf

[root@node-03 ~]# ceph-volume lvm list

[root@node-03 ~]# systemctl restart ceph-osd@10.service
[root@node-03 ~]# systemctl enable ceph-osd@10.service

[root@node-03 ~]# systemctl restart ceph-osd@11.service
[root@node-03 ~]# systemctl enable ceph-osd@11.service

[root@node-03 ~]# systemctl restart ceph-osd@12.service
[root@node-03 ~]# systemctl enable ceph-osd@12.service

[root@node-03 ~]# systemctl restart ceph-osd@13.service
[root@node-03 ~]# systemctl enable ceph-osd@13.service

[root@node-03 ~]# systemctl restart ceph-osd@14.service
[root@node-03 ~]# systemctl enable ceph-osd@14.service

5.3 扩容MON节点

  • 同步配置文件

在Node-01:

[root@node-01 ~]# scp /etc/ceph/ceph.conf node-02:/etc/ceph
[root@node-01 ~]# scp /etc/ceph/ceph.conf node-03:/etc/ceph
  • 创建mon数据目录

在Node-02:

[root@node-02 ~]# sudo -u ceph mkdir /var/lib/ceph/mon/ceph-node-02

在Node-03:

[root@node-03 ~]# sudo -u ceph mkdir /var/lib/ceph/mon/ceph-node-03
  • 同步monmap文件

在Node-01:

[root@node-01 ~]# ceph mon getmap -o /tmp/ceph.mon.map
[root@node-01 ~]# scp /tmp/ceph.mon.map node-02:/tmp/
[root@node-01 ~]# scp /tmp/ceph.mon.map node-03:/tmp/
  • 初始化mon服务

在Node-02:

[root@node-02 ~]# sudo -u ceph ceph-mon --mkfs -i node-02 --monmap /tmp/monmap
[root@node-02 ~]# sudo -u ceph touch /var/lib/ceph/mon/ceph-node-02/done

在Node-03:

[root@node-03 ~]# sudo -u ceph ceph-mon --mkfs -i node-03 --monmap /tmp/monmap
[root@node-03 ~]# sudo -u ceph touch /var/lib/ceph/mon/ceph-node-03/done
  • 将新mon加入集群

在Node-01:

[root@node-01 ~]# ceph mon add node-02 192.168.2.82
[root@node-01 ~]# ceph mon add node-03 192.168.2.83
  • 设置mon守护进程自启

在Node-02:

[root@node-02 ~]# systemctl restart ceph-mon@node-02
[root@node-02 ~]# systemctl enable ceph-mon@node-02

在Node-03:

[root@node-03 ~]# systemctl restart ceph-mon@node-03
[root@node-03 ~]# systemctl enable ceph-mon@node-03
  • 检查集群状态:
[root@node-01 ~]# ceph status

5.4 配置MGR服务

  • 准备MGR服务目录

在Node-01:

[root@node-01 ~]# sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-node-01

在Node-02:

[root@node-02 ~]# sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-node-02

在Node-03:

[root@node-03 ~]# sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-node-03
  • 启动MGR服务,设置开机自启

在Node-01:

[root@node-01 ~]# systemctl restart ceph-mgr@node-01.service
[root@node-01 ~]# systemctl enable ceph-mgr@node-01.service

在Node-02:

[root@node-02 ~]# systemctl restart ceph-mgr@node-02.service
[root@node-02 ~]# systemctl enable ceph-mgr@node-02.service

在Node-03:

[root@node-03 ~]# systemctl restart ceph-mgr@node-03.service
[root@node-03 ~]# systemctl enable ceph-mgr@node-03.service

5.5 配置MDS服务

  • 准备MDS服务目录

在Node-01:

[root@node-01 ~]# sudo -u ceph mkdir /var/lib/ceph/mds/ceph-node-01

在Node-02:

[root@node-02 ~]# sudo -u ceph mkdir /var/lib/ceph/mds/ceph-node-02

在Node-03:

[root@node-03 ~]# sudo -u ceph mkdir /var/lib/ceph/mds/ceph-node-03
  • 修改配置文件,追加配置项

在Node-01:

[root@node-01 ~]# cat /etc/ceph/ceph.conf
……
[mds.node-01]
host = 192.168.2.81

[mds.node-02]
host = 192.168.2.82

[mds.node-03]
host = 192.168.2.83
  • 同步配置文件到各个存储集群节点

在Node-01:

[root@node-01 ~]# scp /etc/ceph/ceph.conf node-02:/etc/ceph
[root@node-01 ~]# scp /etc/ceph/ceph.conf node-03:/etc/ceph
  • 启动MDS服务,设置开机自启

在Node-01:

[root@node-01 ~]# systemctl restart ceph-mds@node-01
[root@node-01 ~]# systemctl enable ceph-mds@node-01

在Node-02:

[root@node-02 ~]# systemctl restart ceph-mds@node-02
[root@node-02 ~]# systemctl enable ceph-mds@node-02

在Node-03:

[root@node-03 ~]# systemctl restart ceph-mds@node-03
[root@node-03 ~]# systemctl enable ceph-mds@node-03
  • 创建文件系统的存储池

在Node-01:

[root@node-01 ~]# ceph osd pool create CFS_Data 128
[root@node-01 ~]# ceph osd pool create CFS_Metadata 128
[root@node-01 ~]# ceph fs new CFS CFS_Metadata CFS_Data

[root@node-01 ~]# ceph fs ls
name: CFS, metadata pool: CFS_Metadata, data pools: [CFS_Data ]

[root@node-01 ~]# ceph mds stat
CFS:1 {0=node-02=up:active} 2 up:standby
  • 文件系统的挂载与使用

在客户端(Node-00)测试:

[root@node-00 ~]# yum install -y ceph-fuse
[root@node-00 ~]# mkdir /mnt/ceph_fs
[root@node-00 ~]# ceph-fuse -m 192.168.2.81:6789 /mnt/ceph_fs/
[root@node-00 ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   50G   11G   40G  21% /
devtmpfs               7.8G     0  7.8G   0% /dev
tmpfs                  7.8G     0  7.8G   0% /dev/shm
tmpfs                  7.8G   18M  7.8G   1% /run
tmpfs                  7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda1             1014M  146M  869M  15% /boot
/dev/mapper/rhel-home  146G   33M  146G   1% /home
tmpfs                  1.6G     0  1.6G   0% /run/user/0
ceph-fuse              1.4T     0  1.4T   0% /mnt/ceph_fs
[root@node-00 ~]# cd /mnt/ceph_fs
[root@node-00 ceph_fs]# touch ce.file 
[root@node-00 ceph_fs]# ll
total 0
-rw-r--r--  1 root root   0 Feb 22 10:57 ce.file

5.6 配置RGW服务

  • 对象存储服务简介

RGW是Ceph集群的对象存储网关,也称Rados网关,它使客户端能够利用标准对象存储API来访问存储集群,它支持S3和Swift API。

通过对象存储,将数据存储为对象,每个对象除了包含数据,还包含数据自身的元数据。对象通过Object ID来检索,无法通过普通文件系统操作来直接访问对象,只能通过API来访问,或者第三方客户端(实际上也是对API的封装)。对象存储中的一个个对象不是整理到目录树中,而是存储在扁平的命名空间中,Amazon S3将这个扁平命名空间称为Bucket,而Swift则将其称为容器。无论是Bucket还是容器都不能嵌套,且Bucket需要被授权才能访问到。一个帐户可以获取多个Bucket的授权,而且不同Bucket的权限是互不干扰、分别制定的。

  • 内置网关前端CivetWEB的配置

在所有节点的配置文件中,追加以下配置信息:

[root@node-01 ~]# cat /etc/ceph/ceph.conf
……
[client.rgw.node-01]
host = node-01
log file = /var/log/radosgw/client.radosgw.gateway.log
rgw_s3_auth_use_keystone = False
rgw_frontends = civetweb port = 8080

[client.rgw.node-02]
host = node-02
log file = /var/log/radosgw/client.radosgw.gateway.log
rgw_s3_auth_use_keystone = False
rgw_frontends = civetweb port = 8080

[client.rgw.node-03]
host = node-03
log file = /var/log/radosgw/client.radosgw.gateway.log
rgw_s3_auth_use_keystone = False
rgw_frontends = civetweb port = 8080
  • 创建对象存储服务的存储资源池

编写脚本,在Node-01上创建对象存储服务所需的存储资源池:

[root@node-01 ~]# cat rgwPools.txt 
.rgw
.rgw.root
.rgw.control
.rgw.gc
.rgw.buckets
.rgw.buckets.index
.rgw.buckets.extra
.log
.intent-log
.usage
.users
.users.email
.users.swift
.users.uid

[root@node-01 ~]# cat createPool.sh 
#!/bin/bash
PG_NUM=32
PGP_NUM=32
SIZE=2
for i in `cat /root/rgwPools.txt`
do
  ceph osd pool create $i $PG_NUM $PGP_NUM 
done

[root@node-01 ~]# bash createPool.sh
  • 创建日志文件目录

在Node-01:

[root@node-01 ~]# mkdir /var/log/radosgw/
[root@node-01 ~]# chown ceph:ceph /var/log/radosgw/

在Node-02:

[root@node-02 ~]# mkdir /var/log/radosgw/
[root@node-02 ~]# chown ceph:ceph /var/log/radosgw/

在Node-03:

[root@node-03 ~]# mkdir /var/log/radosgw/
[root@node-03 ~]# chown ceph:ceph /var/log/radosgw/
  • 启动并设置RGW守护进程自启

在Node-01:

[root@node-01 ~]# systemctl restart ceph-radosgw@rgw.node-01
[root@node-01 ~]# systemctl enable ceph-radosgw@rgw.node-01

在Node-02:

[root@node-02 ~]# systemctl restart ceph-radosgw@rgw.node-02
[root@node-02 ~]# systemctl enable ceph-radosgw@rgw.node-02

在Node-03:

[root@node-03 ~]# systemctl restart ceph-radosgw@rgw.node-03
[root@node-03 ~]# systemctl enable ceph-radosgw@rgw.node-03
  • 测试RGW服务状态

确认所有节点上的RGW服务状态正常,端口监听状态正常(以Node-01为例):

[root@node-01 ~]# systemctl status ceph-radosgw@rgw.node-01
[root@node-01 ~]# netstat -ntlp | grep 8080
tcp    0    0 0.0.0.0:8080         0.0.0.0:*               LISTEN      7889/radosgw
  • 使用S3CMD连接验证对象存储服务

创建用户:

[root@node-01 ~]# radosgw-admin user create --uid="admin" --display-name="admin"

获取Access Key ID和Secret Access Key:

[root@node-01 ~]# radosgw-admin user info --uid="admin"

配置S3CMD:

[root@node-01 ~]# s3cmd –configure #进入交互配置模式

查看所有Bucket:

[root@node-01 ~]# s3cmd ls

创建Bucket:

[root@node-01 ~]# s3cmd mb s3://nextcloud-bucket

删除Bucket:

[root@node-01 ~]# s3cmd rb s3://nextcloud-bucket

查看Bucket中的文件:

[root@node-01 ~]# s3cmd ls s3://nextcloud-bucket/

上传文件到Bucket中:

[root@node-01 ~]# s3cmd put ./Bigfile s3://nextcloud-bucket/Bigfile

从Bucket中下载文件:

[root@node-01 ~]# s3cmd get s3://nextcloud-bucket/Bigfile

5.7 常用的监控解决方案

  • Ceph-Dash

此监控解决方案是一个开源项目,使用Python Flask框架开发,界面干净、简单、整洁,风格让人感到非常舒服。虽然呈现的内容不多,只是将ceph status命令的输出进行了可视化,但是简单的开发框架和界面结构,使得它有二次开发的余地,且便于上手学习。

选择一个 MON 节点部署,或者在所有 MON 节点部署均可:

[root@node-01 ~]# git clone https://github.com/Crapworks/ceph-dash.git
[root@node-01 ~]# pip2 install --upgrade pip
[root@node-01 ~]# pip2 install flask
[root@node-01 ~]# pip2 install rados
[root@node-01 ~]# mv ceph-dash/ /opt/
[root@node-01 ~]# nohup python /opt/ceph-dash/ceph-dash.py > /var/log/ceph/dashboard.log &

启动成功后,监控界面如下图所示:

图5.1:Ceph Dashboard 01
图5.2:Ceph Dashboard 02
  • MGR Dashboard

在集群中的所有MGR节点上安装相应的软件包:

[root@node-01 ~]# yum install -y ceph-mgr-dashboard

在集群中的任意MON节点上,开启Dashboard模块:

[root@node-01 ~]# ceph mgr module enable dashboard

Web端配置自签名证书、设置用户名密码:

[root@node-01 ~]# ceph dashboard create-self-signed-cert
Self-signed certificate created

[root@node-01 ~]# ceph dashboard set-login-credentials admin admin
Username and password updated

[root@node-01 ~]# ceph mgr services
{
    "dashboard": "https://node-02.open-source.cc:8443/"
}

按照提示的地址,使用设置的用户名密码进行登录,界面如下:

图5.3:Ceph Dashboard 03

6 参考资料

【1】 Ceph 浅析系列文章(开源技术专家章宇著)
【2】 Ceph 国内社区中文文档
【3】 Ceph 官网的Document
【4】 Ceph 读写性能估算方法

如有其它问题,请填写右侧需求表单联系我们。www.asterfusion.com

配置指导:Ceph存储对接OpenStack开源云平台

Ceph存储对接OpenStack开源云平台

1 目标

       本文档使用Stein版OpenStack开源云平台与Nautilus版Ceph存储集群,实现OpenStack与Ceph的集成。

2 Ceph简介

Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供块存储服务(RDB)、对象存储服务(RGW)以及文件系统存储服务(CephFS)。目前也是OpenStack的主流后端存储,为OpenStack提供统一共享的存储服务。

Ceph的整体架构如下图所示:

图2-1:Ceph的整体架构

3 OpenStack简介

OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合,而不是一个软件。由NASA(美国国家航空航天局)和Rackspace合作研发,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)进行开源授权。我们可以使用OpenStack来管理一个数据中心的大量硬件资源,起初它主要有计算、存储、网络三大子项目,面向IaaS服务。发展至今,整个生态已经涉及到PaaS服务、SaaS服务和FaaS服务等层面。

OpenStack项目的整体框架如下图所示:

图3-1:OpenStack项目的整体框架

4 OpenStack集成Ceph做存储后端的优势

使用Ceph作为OpenStack后端存储,具有如下优点:

  1. 计算节点共享存储,可以保证实例运行时的健壮性,也可以实现各节点间实例的快速迁移;
  2. 统一平台提供多种类型存储,减轻部署复杂度与工作量,可在运行时灵活扩展;
  3. 利用COW特性,从而可以实现云平台秒级创建实例;

5 实验环境

5.1 系统与软件版本

  • CEPH:Nautilus 14.2.9(鹦鹉螺)稳定版;
  • OpenStack:Stein (April 2019);
  • 操作系统:Red Hat Enterprise Linux Server 7.6 (Maipo);

5.2 节点配置与部署架构

本次实验共使用了4台节点,OpenStack与Ceph已经提前部署完成,为节省资源进行了角色融合。其中,node-01、node-02、node-03为3个节点的N版Ceph存储集群,同时也是OpenStack的计算节点。在部署OpenStack时,考虑到现有3个节点的承载能力,新加入一台节点node-00作为OpenStack的云控节点。

各节点的配置与角色设置如下表所示:

主机名IP地址处理器内存硬盘节点角色
node-00192.168.2.80 管理网8C16G200G 系统盘云控节点
node-01192.168.2.81 管理网
192.168.20.81 存储网
8C32G100G 系统盘
200G*5 OSD
计算节点/存储节点
node-02192.168.2.82 管理网
192.168.20.82 存储网
8C32G100G 系统盘
200G*5 OSD
计算节点/存储节点
node-03192.168.2.83 管理网
192.168.20.83 存储网
8C32G100G 系统盘
200G*5 OSD
计算节点/存储节点

表5-1:节点配置与角色

部署架构如下图所示:

图5-1:部署架构

6 集成步骤

6.1 创建所需存储池

  • 为OpenStack创建所需的RBD存储池:
[root@node-01 ~]# ceph osd pool create volumes
[root@node-01 ~]# ceph osd pool create images
[root@node-01 ~]# ceph osd pool create vms
  • 初始化RBD存储池:
[root@node-01 ~]# rbd pool init volumes
[root@node-01 ~]# rbd pool init images
[root@node-01 ~]# rbd pool init vms
  • 设置存储池类型:
[root@node-01 ~]# ceph osd pool application enable volumes rbd
[root@node-01 ~]# ceph osd pool application enable images rbd
[root@node-01 ~]# ceph osd pool application enable vms rbd
  • 检查存储池创建结果:
[root@node-01 ~]# ceph osd pool ls
.rgw
.rgw.root
.rgw.control
.rgw.gc
.rgw.buckets
.rgw.buckets.index
.rgw.buckets.extra
.log
.intent-log
.usage
.users
.users.email
.users.swift
.users.uid
default.rgw.control
default.rgw.meta
default.rgw.log
default.rgw.buckets.index
default.rgw.buckets.data
default.rgw.buckets.non-ec
volumes
images
vms
CFS_Data
CFS_Metadata

6.2 配置Ceph客户端

  • 导出Ceph配置文件到OpenStack中的所有节点,对于本文档,仅需导出至云控节点(node-00):
[root@node-00 ~]# mkdir /etc/ceph/
[root@node-00 ~]# scp node-01:/etc/ceph/ceph.conf /etc/ceph/
  • 在云控节点上(node-00):
[root@node-00 ~]# yum install python-rbd
[root@node-00 ~]# yum install ceph-common

6.3 配置Glance使用Ceph RBD

  • 在Glance的控制节点中(node-00),修改 /etc/glance/glance-api.conf 配置文件:
[DEFAULT]
……
show_image_direct_url = True
show_multiple_locations = True
......
[glance_store]
stores = rbd,file
filesystem_store_datadir = /var/lib/glance/images
default_store = rbd
rbd_store_pool = images
rbd_store_user = admin
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_chunk_size = 8

6.4 配置Cinder使用Ceph RBD

  • 在所有存储节点中(node-00、node-01、node-02、node-03),修改 /etc/cinder/cinder.conf 配置文件:
[DEFAULT]
……
enabled_backends = ceph
glance_api_version = 2
……
[ceph]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = ceph
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4

6.5 配置Nova使用Ceph RBD

  • 在所有计算节点中,向配置文件/etc/nova/nova.conf中增加如下部分:
[libvirt]
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
disk_cachemodes="network=writeback"
inject_password = false
inject_key = false
inject_partition = -2

6.6 重启OpenStack服务使生效

  • 在云控节点中(node-00):
[root@node-00 ~]# systemctl restart openstack-glance-api.service
  • 在各个计算/存储节点中(node-01/node-02/node-03):
[root@node-01 ~]# systemctl restart openstack-nova-compute.service
[root@node-01 ~]# systemctl restart openstack-cinder-volume.service
[root@node-02 ~]# systemctl restart openstack-nova-compute.service
[root@node-02 ~]# systemctl restart openstack-cinder-volume.service
[root@node-03 ~]# systemctl restart openstack-nova-compute.service
[root@node-03 ~]# systemctl restart openstack-cinder-volume.service

7 结果验证

  • Glance:
图7-1:Glance服务集成Ceph效果验证
[root@node-00 ~]# rbd ls images
……
75978fcd-1f18-477b-8ce4-9ce7ac47b353
  • Cinder:
图7-2:Cinder服务集成Ceph效果验证
[root@node-00 ~]# rbd ls volumes
……
volume-62bc9247-8f4a-4604-990c-10c42c9ee48e
  • Nova:
图7-3:Nova服务集成Ceph效果验证
[root@node-00 ~]# rbd ls volumes
……
volume-c0387940-3bd9-47c5-942f-38e287722bfb

8 参考资料

【1】 官方文档:BLOCK DEVICES AND OPENSTACK
【2】 Glance&Cinder集成Ceph
【3】 Nova集成Ceph

如有其它问题,请填写右侧需求表单联系我们。www.asterfusion.com

配置指导:OpenStack Magnum 部署

OpenStack Magnum 部署方案

1 目标与物理网络拓扑

本文主要描述在现有OpenStack(stein版)平台上如何扩展安装Magnum功能组件,实现容器管理服务。
涉及物理拓扑,如图1所示:

图1:物理网络拓扑

部署过程中所涉及到的设备、接口及管理网口的IP地址如下表所示:

设备名称接口IP地址备注
Switch-A管理口192.168.0.254三层交换机
Switch-B管理口192.168.4.1二层交换机
Switch-C管理口192.168.5.1二层交换机
Server-1管理口192.168.4.144/
Server-2管理口192.168.5.145/

表1:设备管理口列表

2 硬件与软件环境

部署环境中涉及到的硬件和软件如表2和表3所示:

名称型号硬件指标数量备注
服务器1.至少8G内存
2.磁盘不少于500G
2Server-1计算节点+存储节点
Server-2 控制节点+网络节点

表2:硬件环境

软件版本备注
服务器Centos7.6安装时选择Compute Node 模式,根目录/至少500G
OpenStackstein

表3:软件环境

3 Magnum简介

Magnum项目是OpenStack中的容器编排服务引擎,向上提供统一API,向下异构兼容K8S,Mesos,Swarm等容器管理平台,是OpenStack与容器结合的官方正式项目

Magnum使用Heat部署一个包含Docker和Kubernetes的操作系统镜像,让容器集群运行在虚拟机(Virtual Machine)或者裸机(Bare Metal)中。

Magnum 由三个代码库组成:

  • Magnum: http://git.openstack.org/cgit/openstack/magnum
  • Python-magnumclient: http://git.openstack.org/cgit/openstack/python-magnumclient
  • Magnum-ui: http://git.openstack.org/cgit/openstack/magnum-ui

Magnum主要提供两个服务:

  • Magnum API 和 Magnum Conductor。
  • Magnum API是提供资源的Rest接口。

Magnum Conductor是整个项目的核心,首先通过Heat部署虚拟机实例或者裸机实例上,然后通过Cloud init在虚拟机实例或者裸机实例上,调用Kubernetes、Swarm或者Mesos部署容器集群。

Python-magnumclient封装Magnum Rest API向外提供Magnum的接口调用,同时提供CLI功能。

Magnum-ui提供一个Horizon的插件,使用Django和AngularJS实现Magnum的界面操作。

下面是Magnum的整体架构:

图2: Magnum架构图

主要概念:

  • Bay:Bay在magnum主要表示一个集群,新版改为Cluster,现在通过Magnum可以创建K8s和Swarm的Bay,也就是K8s和Swarm的集群。
  • Baymodel:Baymodel是Flavor的一个扩展,新版改为Cluster Template,Flavor主要是定义虚拟机或者物理机的规格,Baymodel主要是定义一个Docker集群的一些规格,例如这个集群的管理节点的Flavor,计算节点的Flavor,集群使用的Image等等,都可以通过Baymodel去定义。
  • Node:主要是指Bay中的某个节点。
  • Container:就是具体的某个Docker容器。

Pod、Replication Controller和Service的意思和在K8s的意思是一样的。

  • Pod:是Kubernetes最基本的部署调度单元,可以包含多个Container,逻辑上表示某种应用的一个实例。比如一个Web站点应用由前端、后端及数据库构建而成,这三个组件将运行在各自的容器中,那么我们可以创建包含三Pod,每个Pod运行一个服务。或者也可以将三个服务创建在一个Pod,这个取决于用户的应用需求。一个Pod会包含N个Container,多出来的那一个Container是Net Container,专门做路由的。
  • Service:可以理解为是Pod的一个路由,因为Pod在运行中可能被删除或者IP发生变化,Service可以保证Pod的动态变化对访问端是透明的。
  • Replication Controller:是Pod的复制抽象,用于解决Pod的扩容缩容问题。通常,分布式应用为了性能或高可用性的考虑,需要复制多份资源,并且根据负载情况动态伸缩。通过Replication Controller,我们可以指定一个应用需要几份复制,Kubernetes将为每份复制创建一个Pod,并且保证实际运行Pod数量总是与预先定义的数量是一致的(例如,当前某个Pod宕机时,自动创建新的Pod来替换)。

简单总结:Magnum自身作为一套 API 框架,本身调用其它的容器管理平台的 API 来实现功能。目前支持的后端包括 Kubernetes、Swarm和Mesos。

如果说 Nova 是一套支持不同 Hypervisor 虚拟机平台的API 框架,那么 Magnum 则是支持不同容器机制的 API 框架。

4 安装步骤

[root@controller ~] 表示在控制节点上执行

[root@compute ~] 表示在计算节点上执行

4.1 创建数据库

  • 创建数据库并授权:
[root@controller ~]# mysql -uroot -p
MariaDB [(none)]> CREATE DATABASE magnum;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON magnum.* TO magnum@'localhost' \
  IDENTIFIED BY 'magnum';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON magnum.* TO magnum@'%' \
  IDENTIFIED BY 'magnum';

注:帐号密码根据自己的情况修改

4.2 创建openstack用户、服务凭据、API端点

  • 在安装和配置Magnum之前,必须创建用户、服务凭据和API端点:
[root@controller ~]# . admin-openrc
[root@controller ~]# openstack user create --domain default --password-prompt magnum
[root@controller ~]# openstack role add --project service --user magnum admin
[root@controller ~]#openstack service create --name magnum \
  --description "OpenStack Container Infrastructure Management Service" \
  container-infra
[root@controller ~]#openstack endpoint create --region RegionOne \
  container-infra public http://controller:9511/v1
[root@controller ~]#openstack endpoint create --region RegionOne \
  container-infra internal http://controller:9511/v1
[root@controller ~]#openstack endpoint create --region RegionOne \
  container-infra admin http://controller:9511/v1
  • Magnum需要身份服务中的其他信息来管理COE群集

创建 magnum域

[root@controller ~]# openstack domain create --description "Owns users and projects \
  created by magnum" magnum

在magnum域中创建magnum_domain_admin用户

[root@controller ~]# openstack user create --domain magnum --password-prompt \
  magnum_domain_admin

添加admin角色到 magnum域 中的magnum_domain_admin用户

[root@controller ~]# openstack role add --domain magnum --user-domain magnum --user \
  magnum_domain_admin admin

4.3 在controller节点上安装magnum服务

  • 创建用户、组:
[root@controller ~]#groupadd --system magnum
[root@controller ~]#useradd --home-dir "/var/lib/magnum" \
      --create-home \
      --system \
      --shell /bin/false \
      -g magnum \
      magnum
  • 创建目录:
[root@controller ~]#mkdir -p /var/log/magnum
[root@controller ~]#mkdir -p /etc/magnum
[root@controller ~]#chown magnum:magnum /var/log/magnum
[root@controller ~]#chown magnum:magnum /var/lib/magnum
[root@controller ~]#chown magnum:magnum /etc/magnum
  • 安装软件包:
[root@controller ~]#yum install openstack-magnum-api openstack-magnum-conductor  \
python-magnumclient
  • 编辑配置文件:
[root@controller ~]#vi /etc/magnum/magnum.conf
[DEFAULT]
transport_url = rabbit://openstack:tera123@controller
log_dir = /var/log/magnum
[api]
host = 192.168.4.144
port = 9511
[certificates]
#生产环境建议用barbican,如果没有安装barbican则使用x509keypair
#cert_manager_type = barbican
cert_manager_type = x509keypair
[cinder_client]
region_name = RegionOne
[database]
connection = mysql+pymysql:://magnum:magnum@controller/magnum
[keystone_authtoken]
memcached_servers = controller:11211
auth_version = v3
www_authenticate_uri = http://controller:5000/v3
project_domain_id = default
project_name = service
user_domain_id = default
password = magnum
username = magnum
auth_url = http://controller:5000
auth_type = password
admin_user = magnum
admin_password = magnum
admin_tenant_name = service
[trust]
trustee_domain_name = magnum
trustee_domain_admin_name = magnum_domain_admin
trustee_domain_admin_password = magnum_domain_admin
# trustee_keystone_interface with either public or internal 取决于网络配置 默认public
trustee_keystone_interface = public
[oslo_messaging_notifications]
driver = messaging
[oslo_concurrency]
lock_path = /var/lib/magnum/tmp
  • 填充数据库:
[root@controller ~]#su -s /bin/sh -c "magnum-db-manage upgrade" magnum
  • 启动服务:
[root@controller ~]# systemctl enable openstack-magnum-api.service \
  openstack-magnum-conductor.service
[root@controller ~]# systemctl start openstack-magnum-api.service \
  openstack-magnum-conductor.service

4.4 在controller节点上安装magnum-ui服务

  • 安装magnum-ui:
[root@controller ~]#pip install magnum-ui==5.0.1
  • 复制文件:
[root@controller ~]#cd /usr/lib/python2.7/site-packages/magnum_ui
[root@controller ~]#cp enabled/*  \
 /usr/share/openstack-dashboard/openstack_dashboard/local/enabled/
  • 重启服务:
[root@controller ~]#systemctl restart httpd memcached

5 结果验证

在controller节点列出magnum服务

  • 列出服务
[root@controller ~]#source admin-openrc
[root@controller ~]#openstack coe service list
  • 启动实例

(1)创建一个外部网络

[root@controller ~]#openstack network create public --provider-network-type vxlan \
                                  --external \
                                  --project service
[root@controller ~]#openstack subnet create public-subnet --network public \
                                  --subnet-range 192.168.5.0/24 \
                                  --gateway 192.168.5.1 \
                                  --ip-version 4

(2)创建一个密钥对

[root@controller ~]#openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

(3)创建一个卷类型

[root@controller ~]#openstack volume type create volumnType1

(4)上传集群必须的镜像

VM版本的Kubernetes和Docker Swarm驱动程序需要Fedora Atomic映像。以下是由Atomic团队构建并经过Magnum团队测试的Fedora Atomic原始图像。

a. 先下载镜像

[root@controller ~]#wget https://download.fedoraproject.org/pub/alt/atomic/stable/Fedora-Atomic-27-20180419.0/CloudImages/x86_64/images/Fedora-Atomic-27-20180419.0.x86_64.qcow2

b. 注册镜像到镜像服务并将os_distro 属性设为fedora-atomic

[root@controller ~]#openstack image create \
                      --disk-format=qcow2 \
                      --container-format=bare \
                      --file=Fedora-Atomic-27-20180419.0.x86_64.qcow2\
                      --property os_distro='fedora-atomic' \
                      fedora-atomic-latest

(5)设置Docker Swarm集群并且创建容器

a. 使用fedora-atomic-latest镜像为Docker Swarm集群创建集群模板:

[root@controller ~]#openstack coe cluster template create swarm-cluster-template \
                     --image fedora-atomic-latest \
                     --external-network public \
                     --dns-nameserver 8.8.8.8 \
                     --master-flavor m1.small \
                     --flavor m1.small \
                     --coe swarm

b. 使用一个master和一个node创建一个集群:

[root@controller ~]# openstack coe cluster create swarm-cluster \
                        --cluster-template swarm-cluster-template \
                        --master-count 1 \
                        --node-count 1 \
                        --keypair mykey  \
                        --labels docker_volume_type=volumnType1

c. 检查创建的集群状态

[root@controller ~]# openstack coe cluster list
[root@controller ~]#openstack coe cluster show swarm-cluster

d.将集群验证凭据添加到环境变量里:

[root@controller ~]#mkdir myclusterconfig
[root@controller ~]#$(openstack coe cluster config swarm-cluster --dir myclusterconfig)

上面的命令会将身份验证工件保存在 myclusterconfig目录中,导出环境以下变量:DOCKER_HOST,DOCKER_CERT_PATH和DOCKER_TLS_VERIFY

[root@controller ~]#export DOCKER_HOST=tcp://172.24.4.10:2376
[root@controller ~]#export DOCKER_CERT_PATH=myclusterconfig
[root@controller ~]#export DOCKER_TLS_VERIFY=True

e. 创建一个容器:

[root@controller ~]#docker run busybox echo "Hello from Docker!"

f. 删除集群

[root@controller ~]# openstack coe cluster delete swarm-cluster

(6)设置Kubernetes集群并且创建部署

本示列中,将会使用一个master和一个node创建一个k8s集群,然后用k8s原生命令kubectl来创建一个部署

a. 使用fedora-atomic-latest镜像为kubernetes集群创建集群模板:

[root@controller ~]# openstack coe cluster template create kubernetes-cluster-template \
                     --image fedora-atomic-latest \
                     --external-network public \
                     --dns-nameserver 8.8.8.8 \
--docker-volume-size=5  \
                     --master-flavor m1.small \
                     --flavor m1.small \
                     --coe kubernetes

b. 使用一个master和一个node创建一个集群:

[root@controller ~]# openstack coe cluster create kubernetes-cluster \
                        --cluster-template kubernetes-cluster-template \
                        --master-count 1 \
                        --node-count 1 \
                        --keypair mykey \
                        --labels docker_volume_type=volumnType1

c. 检查创建的集群状态

[root@controller ~]# openstack coe cluster list
[root@controller ~]#openstack coe cluster show kubernetes-cluster

d. 将集群验证凭据添加到环境变量里:

[root@controller ~]# mkdir -p ~/clusters/kubernetes-cluster
[root@controller ~]# $(openstack coe cluster config kubernetes-cluster --dir ~/clusters/kubernetes-cluster)

上面的命令会将身份验证工件保存在~/clusters/kubernetes-clusterg目录中,导出环境以下变量:KUBECONFIG

[root@controller ~]# export KUBECONFIG=/home/user/clusters/kubernetes-cluster/config

e. 检查k8s集群的控制器组件:

[root@controller ~]# kubectl -n kube-system get po

f. 验证部署一个nginx:

[root@controller ~]# kubectl run nginx --image=nginx --replicas=5
deployment "nginx" created
[root@controller ~]#kubectl get po

g. 删除集群:

[root@controller ~]#openstack coe cluster delete kubernetes-cluster

6 参考资料

https://wiki.openstack.org/wiki/Magnum
https://docs.openstack.org/magnum/latest/install/install.html
https://docs.openstack.org/python-magnumclient/latest/
https://docs.openstack.org/magnum-ui/latest/
https://releases.openstack.org/teams/magnum.html
https://docs.openstack.org/magnum/latest/admin/troubleshooting-guide.html

如有其它问题,请填写右侧需求表单联系我们。www.asterfusion.com

配置指导:PXE无人值守自动化安装系统平台

PXE无人值守自动化安装系统平台

1 PXE使用场景

PXE,全名Pre-boot Execution Environment,预启动执行环境,通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统

  • 批量服务器的部署
  • 信息安全要求高,需要使用无盘系统(系统在特定的服务器上,而不在本地电脑)
  • 远程安装,通过BMC启动远程服务器,然后通过PXE启动本地系统

2 PXE工作流程

  • 客户机从自己的PXE网卡启动,向网络中的DHCP服务器索取IP,并搜寻引导文件的位置
  • DHCP服务器返回给客户机IP以及引导文件的位置
  • 客户机向网络中的TFTP服务器索取引导文件并执行该文件
  • 客户机根据引导文件的执行结果,通过TFTP服务器加载内核和文件系统
  • 进入安装画面,客户机根据自动应答配置文件完成操作系统的自动化部署

3 PXE必要组件

  • DCHP:动态主机配置协议,用于自动分配IP地址,定位引导文件
  • TFTP:简单文件传输协议,用于PXE预引导加载环境,提供pxelinux.0文件
  • FTP:文件传输协议,用于加载pxelinux.0文件执行的结果
  • kickstart:kickstart生成自动应答文件,无需人工干涉自动化装机

4 PXE服务器配置

主机系统IP地址软件
PXECentos7.6192.168.5.222PXE+TFTP+VSFTP+kickstart

服务器具体配置要求如下:

  • 至少2G内存
  • 至少2核CPU

5 环境准备

5.1 关闭SELinux

SELinux不关闭的情况下无法实现,会限制客户机和PXE服务器的通信。

[root@PXE ~]# setenforce 0
[root@PXE ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

5.2 关闭防火墙

防止安装时出现各个组件的端口不能访问的问题。

[root@PXE ~]# systemctl stop firewalld && systemctl disable firewalld                          

6 部署PXE

部署PXE的必要服务,并且修改相关服务的配置文件。

6.1 部署DHCP服务

[root@pxe ~]# yum -y install dhcp
[root@pxe ~]# vi /etc/dhcp/dhcpd.conf
subnet 192.168.5.0 netmask 255.255.255.0 {
        range 192.168.5.180 192.168.5.199;  #地址池
        option routers 192.168.5.1;  #网关
        option domain-name-servers 114.114.114.114; #DNS地址
        next-server 192.168.5.222;  #TFTP地址
        filename "pxelinux.0";   #引导文件
}
[root@pxe ~]# systemctl start dhcpd
[root@pxe ~]# systemctl enable dhcpd

6.2 部署TFTP服务

[root@pxe ~]# yum -y install tftp-server syslinux
[root@pxe ~]# vi /etc/xinetd.d/tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
[root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
[root@pxe ~]# systemctl start tftp
[root@pxe ~]# systemctl enable tftp

6.3 部署VSFTP服务

[root@pxe ~]# yum -y install vsftpd
[root@pxe ~]# mkdir /var/ftp/centos7
[root@pxe ~]# mount /dev/cdrom /var/ftp/centos7/
[root@pxe ~]# cd /var/ftp/centos7/images/pxeboot/
[root@pxe pxeboot]# cp initrd.img vmlinuz  /var/lib/tftpboot/
[root@pxe ~]# systemctl start vsftpd
[root@pxe ~]# systemctl enable vsftpd

6.4 编辑启动菜单

[root@pxe ~]# cd /var/lib/tftpboot/
[root@pxe tftpboot]# mkdir pxelinux.cfg
[root@pxe tftpboot]# vi pexlinux.cfg/default
default auto
timeout 60
label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.5.222/centos7 ks=ftp://192.168.5.222/ks.cfg

6.5 装机测试

创建未安装系统的裸机:

裸机成功获取IP并且加载文件系统:

PXE批量部署成功:

7 kickstart无人值守

7.1 安装kickstart

安装kickstart并创建ks.cfg文件,这里我们直接给出了完整的ks.cfg配置文件。安装完成之后,可以跳过部署操作系统中的手动配置过程。配置文件中的root密码:tera123。

[root@pxe ~]# yum -y install system-config-kickstart
[root@pxe ~]# vi /var/ftp/ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$7PKyC0GQ$lcdaVO2JUK8wOCnSiMr7S0
# System language
lang en_US
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled

# Firewall configuration
firewall --disabled
# Network information
network  --bootproto=dhcp --device=ens160
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="ftp://192.168.5.222/centos7"
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all
# Disk partitioning information
autopart
ignoredisk --only-use=sda

%packages
@^minimal
@core
chrony
kexec-tools

%end

8 PXE自动化部署注意事项

8.1 安装虚拟机失败

安装虚拟机的时候要注意,非最小化安装,需要给虚拟机分配2G以上内存,否则会报错。

8.2 安装完成之后重启黑屏

虚拟机安装完成之后,重启卡在黑屏是因为通过图形化配置时ks.cfg文件没有生效,导致在安装的过程中引导装载程序失败。我们需要手动修改ks.cfg为文档里推荐的配置。

8.3 服务器无法进入PXE

如果要覆盖安装原有的操作系统,需要手动将启动顺序调整为网络启动,并且在安装完成之后改为本地硬盘启动。

8.4 硬盘分区

利用工具system-config-kickstart进行ks.cfg文件生成时,LVM无法支持。如果需要配置LVM,建议寻找一台通过LVM手动部署的主机,打开该主机root下的anaconda-ks.cfg文件,在此基础上修改并保存为我们需要的ks.cfg文件。

9 参考文献

PXE官网:https://pxe.org/

如有其它问题,请填写右侧需求表单联系我们。www.asterfusion.com

配置指导:AsterNOS-VPP 部署指南

前言

目标读者:本文档主要面向网络工程师、系统管理员以及想在虚拟化环境中构建高性能网络测试平台的开发人员。

前置要求,建议读者具备以下基础知识:

  • Linux 基础:熟练掌握 Linux 命令行操作,包括文件编辑与系统管理。
  • 网络基础:理解 L2/L3 网络概念,如 IP 地址、子网掩码、网关和 VLAN。
  • 虚拟化概念:了解虚拟机与宿主系统的基本原理,并对 QEMU/KVM 有一定认识。

1. 目标

本文档提供了在Ubuntu主机系统上使用QEMU/KVM和PCI直通技术配置AsterNOS-VPP虚拟机的详细指南。最终目标是构建和验证一个支持VLAN间路由和互联网访问NAT的高性能虚拟网关。

2. 适用型号和版本

硬件要求:

  • 宿主机:ThinkCentre-M8600t-N000(仅为示例型号)。
  • 网卡:Intel Corporation I350 千兆网络连接(4 端口)。
  • CPU:宿主机 CPU 必须支持 sse4 指令集。可通过 lscpu 命令验证,确保输出中包含 sse4。
配图

软件要求:

  • 主机操作系统:Ubuntu Linux 24.04
  • 虚拟化:QEMU/KVM 8.2.2,libvirt 10.0.0
  • 虚拟机系统:AsterNOS-VPP

3. 功能概述

  • PCI 直通:一种虚拟化技术,允许虚拟机直接、独占地控制物理主机的硬件设备,提供接近原生的性能。
  • VLAN 间路由:路由器的核心功能,通过为不同 VLAN 创建虚拟接口(网关),实现不同子网之间的流量转发。
  • 网络地址转换(NAT):允许私有网络上的设备通过共享路由器的公共 IP 地址来访问互联网。

4. 典型配置示例:双子网路由和 NAT

4.1 需求

  • 部署一台 AsterNOS-VPP 虚拟路由器,该路由器拥有 1 个专用的 WAN 口和多个专用的物理 LAN 口。
  • 将 LAN 口划分为两个不同的 VLAN,每个 VLAN 连接到一台独立的 PC。
  • 确保两个子网中的 PC 都能通过路由器的 NAT 功能访问互联网。
  • 确保两个子网中的 PC 能够相互通信。

4.2 拓扑结构

物理连接:

  • 主机接口 ens3f0 (PCI 地址 01:00.0) -> 上行路由器 (WAN)
  • 主机接口 ens3f1 (PCI 地址 01:00.1) -> PC1 (LAN1)
  • 主机接口 ens3f2 (PCI 地址 01:00.2) -> PC2 (LAN2)
  • 主机接口 ens3f3 (PCI 地址 01:00.3) -> PC3 (LAN3)
配图

4.3 环境和软件获取

设备类型型号/系统角色/描述
主机ThinkCentre-M8600t-N000Ubuntu 系统,作为 QEMU/KVM 和 libvirt 的宿主机
虚拟机AsterNOS-VPP8GB 内存,4核 CPU,64GB 磁盘
PC1Windows PCLAN1 客户端,连接至 ens3f1
PC2Windows PCLAN2 客户端,连接至 ens3f2
PC3Windows PCLAN3 客户端,连接至 ens3f3
网络规划接口 (AsterNOS)IP 地址 / 网段描述
WANEthernet1192.168.200.178/24连接至上游路由器 192.168.200.1
LAN1Vlan10010.0.1.0/24Subnet for PC1 and PC3, Gateway 10.0.1.1
LAN2Vlan20010.0.2.0/24Subnet for PC2, Gateway 10.0.2.1

软件:

必须从星融元官方渠道获取 sonic-vpp.img 虚拟机镜像文件。请参考:https://asterfusion.com/d-asternos-vpp-x86/

4.4 配置步骤:Ubuntu 主机

  1. BIOS/UEFI 设置:
  • 目的:在固件层面启用 IOMMU 功能,使操作系统能够使用此硬件特性。
  • 操作:重启主机并进入 BIOS/UEFI 设置界面。确保同时启用 Intel(R) VT-d 和 Intel(R) Virtualization Technology。
  1. GRUB 参数配置:
  • 目的:指示 Linux 内核启用并使用已在固件中开启的 IOMMU 功能。
# 1. Edit the GRUB configuration file
sudo nano /etc/default/grub
# 2. Find the line starting with GRUB_CMDLINE_LINUX_DEFAULT and add "intel_iommu=on iommu=pt" inside the quotes.
 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on iommu=pt"
# 3.  After saving the file, update the GRUB configuration
sudo update-grub
  1. 配置 VFIO 驱动:
  • 目的:使用专用的 vfio-pci 驱动程序来接管准备用于直通的物理网卡。这将阻止主机操作系统加载其默认驱动,从而使网卡可供虚拟机使用。
  • 操作步骤:

A. 查找网卡的设备 ID:

# This command lists all network devices and their IDs
lspci -nn | grep -i ethernet

注意:[8086:1521] 是设备 ID。如果您的网卡型号不同,请将后续命令中的 8086:1521 替换为您查到的实际 ID。

B. 配置驱动绑定与黑名单:

# Tell the system that devices with ID 8086:1521 should be managed by vfio-pci
echo "options vfio-pci ids=8086:1521" | sudo tee /etc/modprobe.d/vfio.conf
# Prevent Ubuntu from loading the default 'igb' driver for this NIC to avoid conflicts
echo "blacklist igb" | sudo tee /etc/modprobe.d/blacklist-igb.conf

C. 强制预加载 VFIO 模块:编辑 /etc/initramfs-tools/modules 文件,在末尾添加以下行:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

D. 更新配置并重启:

sudo update-initramfs -u
sudo reboot
  1. 验证主机配置:重启后,在主机终端中运行以下命令:lspci -nnk | grep -iA3 02:00
  • 预期结果:所有四个网卡(从 02:00.0 到 02:00.3)的 Kernel driver in use: 字段现在应显示为 vfio-pci。
配图

4.5 启动虚拟机

4.5.1 方法 A:使用 QEMU 手动启动(适用于快速测试)

此方法通过单条命令直接启动虚拟机,操作简单便捷,适合临时测试与验证。

  1. 启动虚拟机:在主机上运行以下 QEMU 命令。
sudo qemu-system-x86_64 \
  -enable-kvm \
  -m 8192 \
  -smp 4 \
  -cpu host \
  -drive file=/var/lib/libvirt/images/sonic-vpp.img,if=virtio,format=qcow2 \ # Please replace this with the actual path to your image file
  -device vfio-pci,host=02:00.0,id=wan-nic \
  -device vfio-pci,host=02:00.1,id=lan-nic1 \
  -device vfio-pci,host=02:00.2,id=lan-nic2 \
  -device vfio-pci,host=02:00.3,id=lan-nic3 \
  -nographic \
  -serial mon:stdio
  1. 接口映射:-device 参数的顺序决定了 AsterNOS 虚拟机内部的接口名称。在此示例中:
QEMU -device 参数PCI 地址(主机)接口名称(AsterNOS 虚拟机)规划用途
host=02:00.002:00.0Ethernet1WAN 端口
host=02:00.102:00.1Ethernet2LAN 端口 (PC1)
host=02:00.202:00.2Ethernet3LAN 端口 (PC2)
host=02:00.302:00.3Ethernet4LAN 端口 (PC3)

⚠️ 重要提示:网络端口顺序
AsterNOS-VPP 系统内部识别的接口名称(如 Ethernet1、Ethernet2 等)取决于 QEMU 启动命令中 -device 参数的顺序(即 PCI 地址的排列顺序)。该顺序可能与服务器机箱后面板上网络端口的物理排列顺序(例如从上至下、从左至右)不一致。

强烈建议:在进行后续配置前,请仅连接一根网线(例如 WAN 端口),启动虚拟机后使用 show interface status 命令观察哪个以太网接口状态变为 up。通过此方法可准确映射物理端口与逻辑端口,避免因错误接线导致配置失败。

4.5.2 方法 B:使用 libvirt 实现持久化启动(推荐)

此方法通过 libvirt 管理虚拟机,可实现持久化运行及开机自动启动。

  1. 创建虚拟机:在主机上执行以下命令。该命令执行后,虚拟机将自动完成定义并启动。您可在当前终端中直接观察启动过程及登录提示。
sudo virt-install \
--name AsterNOS \
--virt-type kvm \
--memory 8192 \
--vcpus 4 \
--cpu host-passthrough \
--disk path=/var/lib/libvirt/images/sonic-vpp.img,bus=virtio \ # Please replace this with the actual path to your image file
--import \
--os-variant debian11 \
--network none \
--host-device 02:00.1 \
--host-device 02:00.2 \
--host-device 02:00.3 \
--host-device 02:00.0 \
--nographics
  1. 设置虚拟机开机自启:成功创建虚拟机后,在主机上打开新终端并运行以下命令,将其设置为开机自动启动:
sudo virsh autostart AsterNOS

4.6 访问并配置 AsterNOS-VPP 虚拟机

无论您采用哪种方式启动虚拟机,后续配置步骤完全一致。

  1. 访问虚拟机控制台:
  • 若使用方式 A(QEMU),虚拟机控制台已显示在当前终端中
  • 若使用方式 B(libvirt),您可随时通过主机终端执行以下命令连接至虚拟机控制台:
sudo virsh console AsterNOS
  1. 登录系统并进入配置模式:

在登录提示符处使用默认凭据访问系统:

  • 用户名:admin
  • 密码:asteros
  1. 分步配置与验证:
  • 步骤 A:启动命令行界面并进入配置模式
sonic-cli
configure terminal
  • 步骤B:配置WAN接口
interface ethernet 1
  description WAN_Port
  ip address 192.168.200.178/24
  # Assign this interface to NAT zone 1. By convention, the outside (WAN) interface is a non-zero zone, and inside interfaces are zone 0.
  nat-zone 1
exit
  • 步骤C:配置VLAN及网关接口
vlan 100
exit
vlan 200
exit

interface vlan 100
  description LAN1_Gateway_for_PC1_and_PC3
  ip address 10.0.1.1/24
exit

interface vlan 200
  description LAN2_Gateway_for_PC2
  ip address 10.0.2.1/24
exit
  • 步骤D:将物理LAN端口划分至VLAN
interface ethernet 2 # Connects to PC1
  description Port_for_PC1
  switchport access vlan 100
exit

interface ethernet 3 # Connects to PC2
  description Port_for_PC2
  switchport access vlan 200
exit

interface ethernet 4 # Connects to PC3
  description Port_for_PC3
  switchport access vlan 100
exit
  • 步骤E:配置路由与NAT
# Configure the default route to point to the upstream router
ip route 0.0.0.0/0 192.168.200.1
# Enable NAT globally
nat enable
# Create a NAT pool named 'lan_pool' using the router's public IP
nat pool lan_pool 192.168.200.178
# Bind the pool to a policy named 'lan_binding' to apply NAT to all traffic crossing zones
nat binding lan_binding lan_pool
  • 步骤F:保存配置
write
  • 步骤G:验证配置
show ip interfaces
show ip route
show vlan summary
show nat config

注意:请确保接口的管理/运行状态显示为 up/up。

配图
配图
配图
配图

4.7 客户端PC配置步骤

  • PC1:设置IP地址为10.0.1.10,子网掩码为24位,网关为10.0.1.1,DNS服务器为8.8.8.8
  • PC2:设置IP地址为10.0.2.10,子网掩码为24位,网关为10.0.2.1,DNS服务器为8.8.8.8
  • PC3:设置IP地址为10.0.1.11,子网掩码为24位,网关为10.0.1.1,DNS服务器为8.8.8.8

5. 功能与性能验证

本章将通过一系列测试,全面验证虚拟路由器的核心功能和性能指标是否符合预期。

5.1 整体测试计划

我们将按照以下测试序列进行:

  1. 二层交换性能(VLAN 内):使用 iperf3 测试 PC1 与 PC3 之间的传输速率,以验证同一 VLAN 内的交换性能。
  2. 三层路由性能(VLAN 间):使用 iperf3 测试 PC1 与 PC2 之间的传输速率,以验证不同 VLAN 之间的路由性能,并使用路由器侧命令进行监控。
  3. 外部连通性(NAT 验证):使用 ping 测试内部 PC 能否访问公共互联网,以验证基本的 NAT 连通性。

5.2 二层交换性能测试(PC1 <-> PC3)

  • 目的:验证虚拟路由器在同一 VLAN 内的二层数据转发能力。由于 PC1 和 PC3 同属 VLAN 100,它们之间的通信由二层交换处理。
  • 步骤:
  1. 在 PC1 (10.0.1.10) 上,打开命令提示符并确保运行 iperf3 服务器:iperf3 -s。
  2. 在 PC3 (10.0.1.11) 上,打开命令提示符并执行客户端测试:iperf3 -c 10.0.1.10 -t 30。
  • 结果分析:测试速率应稳定在 950 Mbits/秒 左右,达到千兆线速。
配图

5.3 三层路由性能测试(PC1 <-> PC2)

  • 目的:验证虚拟路由器在不同 VLAN 之间的三层路由性能。PC1(VLAN 100)与 PC2(VLAN 200)之间的通信需要经过三层路由。
  • 步骤:
  1. 在 PC1 (10.0.1.10) 上,打开命令提示符并确保运行 iperf3 服务器:iperf3 -s。
  2. 在 PC2 (10.0.2.10) 上,打开命令提示符并执行客户端测试:iperf3 -c 10.0.1.10 -t 30。
  • 结果分析:测试速率同样应达到约 950 Mbits/秒 的线速性能。
配图
  • 路由器端验证:在进行 iperf3 测试期间,您可以通过在 AsterNOS 设备上执行 show counters interface 命令,实时监控接口统计信息。

5.4 互联网访问功能测试

  • 目的:验证 NAT 功能对所有内部 VLAN 均生效。
  • Ping 连通性测试:
  1. 在 PC1(VLAN 100)上执行 ping 8.8.8.8。您应当能收到成功的回复。
配图
  1. 在 PC2(VLAN 200)上执行 ping 8.8.8.8。您同样应当能收到成功的回复。
配图

6. 结论

本文档充分证明,AsterNOS-VPP 成功融合了成熟的 SONiC 生态与高性能 VPP 数据平面。

通过基于标准 x86 服务器部署虚拟机并采用 PCI 直通技术,用户能够快速构建支持线速二层/三层转发及 NAT 功能的企业级虚拟网关。对于追求高性能、灵活性及成本效益的网络环境而言,AsterNOS-VPP 无疑是理想解决方案。

配置指导:新一代云化园区方案设计及实施指南

1 准备工作

1.1 方案规划

按照用户的建筑格局、走线、预算、可靠性要求等因素确定整体网络架构。
方案确定后与客户核对,确定。

1.1.1 方案选型

云化园区控制器目前支持3种典型场景:

  • Spine-Leaf:经典云化园区场景。
  • Spine-Aggregation-Leaf:支持单Aggregation、双Aggregation;Spine-Leaf混合场景。
  • 传统二层场景:单核心下挂接入交换机。
  • 开放云联场景:仅Leaf交换机,上游设备不管控。
1.1.1.1 中小型园区

适合一组Spine可以承接所有Leaf的单PoD场景。

中小型园区
1.1.1.2 中大型园区

一组Spine无法承接所有Leaf的多PoD场景。其中单汇聚只需要一台汇聚设备;多汇聚需要2台,更加可靠。

中大型园区
1.1.1.3 混合场景

客户现场可能因为各种原因,多个建筑的组网不尽相同,比如新建楼栋线路富裕、老旧楼栋线路故障且修复困难;混合场景适应性更强。

混合场景部署
1.1.1.4 传统二层场景

二层场景Leaf交换机业务二层透传,VLAN-MAC转发;Leaf通过带内管理。

传统二层场景
1.1.1.5 开放云联场景

适合于上游设备为其他厂商,Leaf部署在二层或者三层的场景。

开放云联场景

1.1.2 与上游设备对接方式

根据上游设备的网络能力或者用户偏好选择合适的对接方式。

  • Spine-Aggregation-Leaf场景支持多种方式与上游设备对接:本地三层接口+静态路由;MC-LAG+静态路由;eBGP;OSPF等。
  • Spine-Leaf场景支持通过三层接口或VLANif与上游对接;静态路由做业务转发,eBGP。
  • 二层场景只需要通过三层接口与上游设备对接;静态路由做业务转发。
  • 开放云联场景支持三层接口与上游设备对接。

依据网络规模、接口形态等因素选择合适的型号。

1.2 设备选型

依据网络规模、接口形态等因素选择合适的型号。

1.2.1 命名规则介绍

CX202P-24Y-M、CX204Y-48GT-HPW2-M

高速接口低速接口可选
Q : 400G
D : 200G
P : 100G
GT : 1GE电
MT : 2.5GE电
S : 10GE光
Y :25GE光
-HPW[1..4] PoE+,HPW2:24口PoE+ HPW3:36口PoE+

1.2.2 产品彩页

产品彩页-星融元CX-M系列云化园区交换机-CN-e-20250710.v2.4.pdf

1.3 设备清单

按照规划拓扑整理设备、模块、光纤等物料清单。

型号用途数量
CX532P-Mspine2/2
CX202P-24Y-MAggregation4/4
CX206P-48S-MAggregation2/2
CX204Y-48GT-MLeaf80/80
CX204Y-48GT-HPW2-MLeaf接AP4/4
CAP6020-Z10/10
ET2500模拟终端,每台出12个电口上联Leaf1/10
42U的机柜放置设备5/5
100G多模光模spine-agg互联(已+2备用)26
25G多模光模块agg-leaf互联(已+10备用)350
10G多模光模块Spine-Router互联4
多模光纤其中30根7-10米,160根3-5米(分别用于跨机柜和较远距离、本机柜链接)(已+10备用)200
网线1-3米,ET2500-Leaf互联(已+10备用)10
总电源功率10%冗余8788瓦
电源插座(已+10备用)108
CCN控制器云端wifi.asterfusion.com1/1
出口跳纤从设备部署位置到苏州办网出口路由器,根据实际情况准备跳纤2/2

1.4 设备License

通过技服或销售获取AP的授权文件,借测项目默认2个月授权,正式销售永久授权。

1.5 设备信息表

信息用于记录设备安装位置、MAC、SN、hostname,并记录连线表等实施中的重要信息。
云化园区-100shades-信息表-i-20250110-v1.0

1.6 业务规划

IP规划

总网段172.22.0.0/16
业务业务子类IP地址段地址池范围VLAN网关所在设备
spine上联10.210.1.252/24100openwrt
互联地址172.22.253.128/25128-255
AP管理地址AP管理地址172.22.254.1/24172.22.254.1-172.22.254.2551000
控制器172.22.254.2/24
Agg带内管理172.22.253.1/27172.22.253.1-172.22.253.311001
peer-link1002
loopback地址172.22.252.1/24172.22.252.1-172.22.252.255
有线终端172.22.251.1/24172.22.251.1-172.22.251.2551003
无线终端172.22.249.1/24172.22.250.1-172.22.249.2551004

2 开始部署

2.1 设备安装

按照规划拓扑安装设备,记录设备序列号和MAC地址,填写设备信息表。

2.2.1 部署位置选择

控制器部署在spine旁、公网服务器、leaf下三种情况的配置方式有所不同,根据用户实际情况选择。
推荐部署在公网服务器随时随地都可访问;部署在spine旁通常比Leaf下有更高的可靠性。
本案为方便从西安访问控制器,部署在云端服务器:wifi.asterfusion.com。

注意:控制器部署在一台Spine旁边时,为保证从另外一台Spine过来的流量能够访问控制器,需要通过iBGP发布控制器路由:network 172.22.253.253/30。

2.2.2 安装控制器

将控制器版本的打包文件上传到需要部署的环境,一键安装,-i参数指定控制器IP地址:

./controller_V1.0_R07.bin –i

部署成功后,用户可以通过 https://ip_address 直接访问控制器。
注意:若从R7之前的版本升级到R7之后的版本,且需要保留之前的配置,在安装时不携带-i参数即可.

  • 使用docker-compose一键启动控制器,控制器默认安装目录为 /opt/controller/ 下:
cd /opt/controller/controller_V1.0_R07/wlan-cloud-ucentral-deploy/docker-compose/
docker-compose up -d

参数说明:

  • -d :表示后台执行
  • up :表示启动控制器
  • down :表示关闭控制器
  • 完全清除重新安装

注:无需保留原有数据清除重新安装。以下为清除方法,安装方法同“初次安装”。

docker-compose down
docker image ls
docker rmi 手动列出IMAGE ID
docker volume ls
docker volume rm openwifi_kafka_data openwifi_postgresql_data openwifi_zookeeper_data openwifi_zookeeper_datalog

2.2.3 登录控制器

https://控制器IP或域名
默认用户名/密码: aster@asterfusion.com / Asteria
初次登录系统强制要求修改密码。
本案控制器:https://wifi.asterfusion.com

2.3 创建组织和场所

登录控制器后,点击右上角的【+】添加场所

步骤

完成组织创建后,双击创建的组织,进入该组织下:

步骤

点击【+】按钮创建一个新的场所
所是管理员可以用来监控、管理、配置所有网络设备的集合。

步骤

2.4 设备入库

设备导入至场所

下载导入模板:

导入模版

将设备信息按照模板填写后,导入到所在场所。

上传后先点击“测试上传数据”对数据进行校验,通过点击“上传数据”开始入库。

3 开始配置

3.1 规划拓扑

拓扑规划

采用中大型园区,多汇聚场景。接入交换机分为3组。

手动规划拓扑

3.1.1 自动生成规划拓扑

自动生成拓扑

3.1.2 按照规划设置

注:红色框内为手动必填内容,与规划表核对填写,预留充足时间。规划拓扑50台设备需要至少1.5h。

设置

3.1.3 快速导入规划拓扑

适合设备数量非常多的情况,excel也为项目管理提供材料,这种方式非常快速。
导入方式不需要选择方案和设备,会根据导入信息自动创建设备。

3.1.3.1 下载模板

下载模版

3.1.3.2 填写规划表

填写规划表

3.1.3.3 导入规划表

导入

3.1.3.4 自动校验规划表

WEB会校验用户输入,并做出提示。修复所有错误,确认无误后点击应用配置。

校验

3.1.3.5 自动生成拓扑

完成互联信息后将得到包含互联关系的完整拓扑。

自动生成拓扑

3.2 基础网络配置

3.2.1 Agg带内管理IP设置

Agg工作在二层模式,所以配置并不需要经常变动,但为了监控设备和网络状态需要为他提供带内管理网段。这里只需要设置网段,控制器会自动从中分配IP给所有Agg设备。

配置

3.2.2 Agg组MC-LAG的互联IP和VLAN设置

Agg组都会建立MC-LAG,PeerLink的IP仅用于本地控制器面通信、MAC和ARP表同步,所以所有Agg组的PeerLink和IP都是相同。

配置2

3.2.3 Spine与上游设备互联设置

配置

3.2.4 交换机的统一系统设置

配置

3.3 业务配置

3.3.1 有线业务配置

3.3.1.1 有线终端业务配置

配置

3.3.1.2 AP管理和业务配置

配置

3.3.1.3 高可用DHCP服务器

可选将DHCP服务器设置在Spine上,2台Spine将自动启用DHCP failover高可用服务器;两台服务器协同工作,可靠性更高。

注意:failover必须两台设备时间同步,否则信息无法同步。

配置

创建DHCP配置

配置
配置

支持静态地址绑定,绑定的地址需要在网段内且动态地址池之外。

配置

查看地址池使用情况

配置

3.3.2 无线业务配置

注意:设置无线配置模板的“标签”:该标签必须与AP设备的“标签”一致,控制器会在AP初次上线时自动下发“标签”一致的无线配置。

无线业务配置

AP设备的“标签”:在导入库存时设置“AFtag”,或在系统库存中批量修改。

无线业务配置

4 设备上线

4.1 Spine-1初始配置

上线阶段只需要给其中一台Spine手动配置上线,其他设备自动获取地址上线。
注意:Spine-1上与Spine-2的互联接口也划为downlink,spine2通过该接口获取地址上线。

interface ethernet 130
    ip address 10.210.1.252/24

connect-controller
    uplink ethernet 130 ip address 10.210.1.252/24 gw 10.210.1.1
    controller-server ip address 172.22.253.254
    downlink ethernet 1-125 ip address 172.22.55.1/24

4.2 Agg第一阶段配置

将脚本添加到控制器,类型为sonic-cli,保存。下发给Agg-G3-1。
注意:如果Leaf上行口连了2台Agg,只需将其中一台Agg下行口加到Access Vlan,否则Leaf的两个上行接口将获取到相同的IP地址。另外一台Agg无需下发脚本。
本案只给Agg-G3-1下发该脚本:

configure
vlan 101
exit
port-group ethernet 1-20
switchport access vlan 101
exit
interface ethernet 49(连接dhcp地址池所在spine1的上行口必须放在最后下发)
no router-interface
switchport access vlan 101
exit
interface vlan 101(最后vlan重新获取ip)
ip address dhcp-alloc
exit
end

4.3 所有设备上线

5 下发配置

5.1 下发基础网络配置

配置
配置
配置

5.2 下发有线业务配置

配置

5.3 下发无线业务配置

将配置推送给“标签”匹配的设备。

配置

6 业务验证

6.1 设备在线情况

验证

6.2 有线业务验证

终端可以获取到地址,访问互联网正常。

6.3 无线业务验证

终端可以获取到地址,访问互联网正常。

7 运维

7.1 告警

7.1.1 告警信息

运维-告警展示了当前告警和管理员对当前告警处理/确认后执行清除动作后的历史告警信息。

运维

7.1.2 告警阈值设置

每一个告警监测项都有其阈值,针对不同的环境和场景可自行设置默认值。

告警阈值同样可以一件同步到子场所或子组织,修改后需再次执行同步操作生效。

运维

7.1.3 告警阈值同步

将当前组织或场所的告警配置同步到其子组织或子场所;同步操作只执行一次,修改后需要重新执行同步。

运维

7.1.4 邮件告警

  • 发件人设置

设置内容参见邮件服务商设置页面的“第三方邮箱客户端登录”。
设置完成后,点击“网络连通性”测试按钮验证配置是否正确。

告警
  • 设置告警收件人

在组织或者场所的“配置-邮件通知”页面设置收件人,收件人是控制器已经存在的用户。
可选发送不同的告警类型、告警级别。

告警
  • 收件人设置同步

将当前组织或场所的告警收件人配置同步到其子组织或子场所;同步操作只执行一次,修改后需要重新执行同步。

告警
  • 邮件告警内容

控制器会将一段时间的告警信息合并后发送给收件人。

告警

7.2 巡检

7.2.1 业务巡检

  • 一键巡检

一键巡检将立即对指定场所和巡检内容执行一次巡检,并生成巡检记录。

巡检
  • 周期巡检

开启周期巡检后,控制器将对指定场所和项目执行周期性的巡检,并生成巡检报告。

巡检
  • 巡检记录

查看详细信息

巡检
巡检
  • 巡检报告
巡检

巡检报告内容:

巡检

7.2.2 系统巡检

系统巡检是对控制器服务器系统的状态检查。

巡检

8 扩容

8.1 扩容一个接入交换机组

一个接入交换机组包含了1台或2台Aggregation和若干台Leaf交换机。
扩容时如果已经完成规划拓扑并给spine下发了配置,需要先将spine连接agg的下行口移出LAG,否则下行口无法加到4094、dhcp临时地址池无法生效。

1、临时地址池路由宣告

扩容时spine-1和spine-2都已经下发了正式配置,流量可能从spine-1或spine-2过来,但此时spine-2上没有临时地址池的路由,所以spine-1需要将临时地址池网段宣告出去。

注意:推送配置后,该network会被控制器清除;如需保留,请使用frr对比工具。

router bgp 64513
    address-family ipv4 unicast
    network 172.22.55.0/24(临时地址池网段)

2、Spine-1扩容脚本

将扩容脚本添加到控制器,类型为sonic-cli,保存。下发给Spine-1。
注意:确定好扩容接入交换机组在spine上的接口,将其设置为downlink。

configure
connect-controller
downlink ethernet 1,5,9,13 ip address 172.22.55.1/24
do configure
dhcp pool connect-controller
capwap-ac {{CONTROLLER_SERVER_IP}}
end

3、Agg上线

Agg通过临时地址池自动获取地址、并在控制器上线。

4、Agg第一阶段配置脚本

将扩容脚本添加到控制器,类型为sonic-cli,保存。下发给Agg-1。
注意:如果Leaf上行口连了2台Agg,只需将其中一台Agg下行口加到Access Vlan,否则Leaf的两个上行接口将获取到相同的IP地址。另外一台Agg无需下发脚本。
本案只给Agg1下发该脚本:

configure
vlan 101
exit
port-group ethernet 1-20
switchport access vlan 101
exit
interface ethernet 25(连接dhcp地址池所在spine1的上行口必须放在最后下发)
no router-interface
switchport access vlan 101
exit
interface vlan 101(最后vlan重新获取ip)
ip address dhcp-alloc
exit
end

5、扩容组所有设备上线

观察Spine-1上ARP情况,该接入交换机组的Agg和Leaf都获取到了IP,并在控制器上线。

6、确认版本、升级、重启

7、下发基础网络配置

8、下发有线业务配置
先将新Leaf加入有线业务配置模板或新建模板。下发方法与初次下发相同。

7.2、同Agg的Leaf扩容

临时地址池宣告

扩容时spine-1和spine-2都已经下发了正式配置,流量可能从spine-1或spine-2过来,但此时spine-2上没有临时地址池的路由,所以spine-1需要将临时地址池网段宣告出去。
注意:推送配置后,该network会被控制器清除;如需保留,请使用frr对比工具。

router bgp 64513
    address-family ipv4 unicast
    network 172.22.55.0/24(临时地址池网段)

在spine-1添加回程路由
路由指向扩容的Leaf所在Agg的带内管理地址。
注:控制器下发配置自动清除该配置。

ip route 172.22.55.0/24 172.22.253.7

Agg-1下发扩容脚本
注:控制器下发配置自动清除该配置。

configure
connect-controller
downlink ethernet 21 ip address 172.22.55.1/24
do configure
dhcp pool connect-controller
capwap-ac {{CONTROLLER_SERVER_IP}}
end

确认版本、升级、重启

切换设备场所

扩容
扩容

注:此时一并设置设备“名称”。

修改规划拓扑

新加设备

扩容

链接拓扑

设置设备信息

下发基础网络配置

注意:下发基础网络时,仅需下发相关设备,不涉及的设备无需下发。

下发有线业务配置

先将新Leaf加入有线业务配置模板或新建模板。下发方法与初次下发相同。

7.3 跨Agg组的Leaf扩容

临时地址池宣告

扩容时spine-1和spine-2都已经下发了正式配置,流量可能从spine-1或spine-2过来,但此时spine-2上没有临时地址池的路由,所以spine-1需要将临时地址池网段宣告出去。
注意:推送配置后,该network会被控制器清除;如需保留,请使用frr对比工具。

router bgp 64513
    address-family ipv4 unicast
    network 172.22.55.0/24(临时地址池网段)

Spine-1地址池配置【命令行】

注意:show link-aggregation summary确认Leaf上联的Agg与Spine互联的下行LAG口。
本案需要为G1、G2、G3分别扩容1、1、2台Leaf设备。

vlan 4093

interface link-aggregation 1(到Agg-G1)
    switchport access vlan 4093
interface link-aggregation 2(到Agg-G2)
    switchport access vlan 4093
interface link-aggregation 3(到Agg-G3)
    switchport access vlan 4093
    
dhcp pool connect-controller
 address-pool 172.22.55.1 172.22.55.254
 capwap-ac 120.26.204.254
 network 172.22.55.0 255.255.255.0
 routers 172.22.55.1
 vlan 4093

Agg放行DHCP【命令行】

注意:正式配置中,Agg只有trunk vlan,需要放通acces vlan 4093,Leaf的dhcp请求才能被转发到Spine。双汇聚场景只需要其中一台Agg添加如下配置即可。
将Agg-1连接扩容Leaf的下行接口和Agg-1连接Spine-1的上行口加入vlan 4093 access。

vlan 4094

interface ethernet 25(上行口)
    switchport access vlan 4093
interface ethernet 21(下行口)
    switchport access vlan 4093

注:后续步骤同“扩容一台Leaf交换机”

附:现场照片

现场照片
现场照片
现场照片

配置指导:基于Asterfusion CX-M系列产品的园区网实现- 4. 测试验收及运维

1 Purpose

为了介绍使用Asterfusion CX-M系列产品及控制器产品实现园区网络整网部署的方法,我们编写了园区网规划、安装、实施和测试验收等一系列文档。通过阅读这些文档,用户可以简单快捷的实现园区网络的规划和部署上线,当用户已经规划好整体网络并做好上线前准备工作后,用户可以在30分钟内实现整网部署上线。本文是第四部分:测试验收及运维;主要阐述网络实施完成后的验收测试工作,看是否达到设计标准,并且介绍整网的运维工作。

2 Asterfusion整网情况介绍

根据整体网络规划,我们已经将整张Asterfusion campus network建设完成,下面介绍一下整体网络情况。

2.1 整网示意图

从控制器上可以查看整网示意图,点击右上角map按钮,显示如下:

示意图
示意图

通过map可以很直观的查看当前设备在线情况。

2.2 各office真实拓扑

通过左侧导航栏的组织菜单,可以快速查看各office的真实拓扑,以BJ office为例,如下:

真实拓扑

3 网络验收测试

3.1 同Leaf下WI-FI漫游测试

将手机从AP-1附近接入网络,然后移动到AP-2附近,期间持续ping外部网站。并观察设备切换到AP-2时,是否会断网。
本次测试流量路径如下:

漫游测试

手机终端从AP-1接入,流量如红色所示,当发生AP切换后,手机终端流量到达leaf的路径切换为绿色。
本次测试在BJ office进行,使用cloudcampus app进行测试,测试截图如下:

测试截图

从上面结果可以看到,漫游切换的时间为3ms,并且漫游切换时,0丢包,0掉线。

后续又经过多次测试,发生切换时,均为网络0丢包,0掉线,说明发生漫游时,网络比较稳定。

3.2 不同Leaf之间的WI-FI漫游测试

本次测试拓扑如下图所示:

漫游测试

手机终端从AP1开始接入网络,然后保持移动,分别经过AP2,AP3等所有AP,手机数据流量路径从红色虚线变为绿色虚线,期间从Leaf1设备跨越到Leaf2设备。本次测试在SZ office进行,测试结果如下:

截图

从上面结果可以看到,手机终端在移动过程中,持续在各个AP之间漫游,但始终没有断网,也没有丢失数据包,漫游切换时间在及时毫秒左右,比较稳定。

3.3 同一leaf下的有线终端设备互传文件速率测试

将leaf1上链接一台笔记本电脑,并上传文件到leaf1下的server上,查看传输速率。
本次测试的流量路径如下:

测试拓扑

如上图所示,红色虚线表示流量路径。
本次测试采用Xterm工具进行传输测试,测试截图如下:

xterm

从截图可以看出,传输一个5GB大小的文件,传输速率为946.86Mb/S,基本已经达到千兆网卡的上限速率。

3.4 不同leaf下的有线终端设备互传文件速率测试

将leaf3上链接的一台电脑上的文件上传到leaf1的server上,查看传输速率。
本次测试的流量路径如下:

测试拓扑

如上图所示,红色虚线表示流量路径。
本次测试采用Xterm工具进行传输测试,测试截图如下:

测试截图

从截图可以看出,传输一个1.6GB大小的文件,传输速率为941.32Mb/S,基本已经达到千兆网卡的上限速率。
3.4及3.4章节测试结果说明内网传输速率可达千兆速率,满足设计规划时的需求。同时可以看出,内网速率瓶颈在终端网卡性能,不论是否跨leaf传输数据,整个内网带宽都不存在瓶颈。

3.5 手机下载速率测试

用手机下载文件,查看速率,测试结果如下:

测试结果

测试结果说明网络颜值在11毫秒左右,下载和上传速率都符合预期。

3.6 WI-FI稳定性测试

用手机连接WI-FI,在办公区域内移动查看信号稳定性,结果如下

结果

测试结果表明,无论静止在一个AP区域,还是在整个office区域内移动,WI-FI信号都很稳定,会根据信号强弱自动漫游到合适的AP下面。

4 网络运维

前面已经将Asterfusion campus network建设完成,并且测试结论符合建设预期。接下来介绍一下网络运维工作,整网都通过控制器来运维管理。

4.1 设备状态查看

设备状态查看

此处可以看到所有设备的基本信息,包括内存及cpu使用率等等。同时点击每台设备的mac信息,还可以单独查看每台设备详细信息。

详细信息
详细信息

如果需要链接到设备命令行查看底层信息,可以点击链接按钮进入:

面板信息
命令行

4.2 网络整体信息呈现

此处可以查看整网设备的信息,包括告警、健康状态等。

dashboard
dashboard

4.3 日志信息

此处可以查看设备日志及控制器日志等信息

日志信息

4.4 整网告警信息

此处可以查看告警信息,包括当前信息及历史告警信息。

告警信息

4.5 用户信息

此处可以查看、添加和删除各种用户。

用户信息

角色包括系统管理员,组织管理员,一般管理员及普通用户, 系统管理员拥有最高权限,其余角色还可以选择对应的组织及场所。

用户信息2
用户信息3

4.6 用户信息分析

可以通过控制器直观分析各研发中心的终端设备上线情况,信号状态等信息。以BJ为例,如下:
有线终端信息。

用户信息分析

无线终端信息。

无线终端信息

4.7 流量可视化呈现

各研发中心的网络都可以查看内网的流量情况,通过web客户端访问出口设备CX102S上DPU2的ip地址,可以查看网络流量的具体统计信息。

以WH office为例,总览信息如下:

信息总览

活跃流信息,如下:

活跃流信息

主机信息如下:

主机信息

通过查看流量统计信息,可以及时发现特定主机的访问流量,并可根据这些信息在出口不止ACL规则来限制特定流量。

5 结论

Asterfusion campus netork已经完成部署,总结一下整个部署过程,有以下优点:
1、 整网部署简单快捷。在做好控制器安装及完成综合布线之后,从设备上电到完成部署,单个研发中心仅需30分钟即可完成。
2、 无线网络支持无线漫游,终端设备可以在各AP之间无缝切换,切换过程用户无感知,不丢包,不掉线。
3、 全三层组网,分布式网关,网络内部没有广播报文,有效提高了内部网络带宽利用率。
4、 各地办公室内网带宽高,基本不存在网络传输性能瓶颈。
5、 业务添加方便,如需新增有线业务网段,只需配置业务vlan及网关,下发即可生效。
6、 整网运行状态可直观呈现,能够随时查看设备及控制器的运行状态,CPU及内存使用率,运行时长等信息。
7、 运维方便,能够实时查看设备健康状态,并能够根据日志及告警信息快速定位问题,及时处理。
8、 整个内网流量信息可视化呈现,方便管理员分析各终端上网情况。

6 云化园区交换机

对星融元产品感兴趣?

立即联系!

返回顶部

© 星融元数据技术(苏州)有限公司 苏ICP备17070048号-2