当前位置: 首页 > article >正文

基于DPU的Openstack裸金属服务网络解决方案

1.  方案背景和挑战

裸金属服务器作为一类特别设计的计算类云服务,向最终用户提供了云端部署的专属物理服务器,这意味着最终用户不再需要与其他租户共享硬件资源,从而确保了资源的独占性、性能的最优化以及数据的最高级别安全。

裸金属服务器作为云上资源的重要部分,其网络需要与云主机和容器同样连接在VPC下,并且能够像云主机和容器一样使用云上的网络功能和能力。

当前,基于OpenStack的裸金属服务实现主要依赖于Ironic组件,并通过OpenStack的Neutron网络组件来实现裸金属服务器的网络连接。在该方案下,裸金属服务器的网络使用的是物理网卡,因此网络配置依赖于物理上的网络拓扑(例如需要知道裸金属网卡连接到交换机的端口编号),物理网络拓扑连接完成后就确定了,为了实现 VPC 等网络功能,需要对裸金属服务器的上联交换机做一些动态配置,以实现网络的切换。

Neutron原本是为虚拟机网络环境设计的,因此在应用于裸金属服务时,便暴露出了不足之处,带来了一系列的问题与挑战,具体体现在以下几个方面:

a. 网络管理复杂性增加,提高了管理难度

- VLAN支持要求:Ironic的网络实现需要物理交换机的VLAN支持,并且要实现VLAN和VPC的匹配和转换,以确保裸金属服务器能够正确地接入网络。这不仅增加了网络配置的复杂性,也提高了管理难度。

- 拓扑要求:物理网络拓扑需要能够支持VLAN的划分和管理,这可能涉及到复杂的网络设备配置和维护。

b. SDN集成困难,降低网络性能

- 流量转换需求:在裸金属场景下,直接使用软件定义网络(SDN)技术存在困难。通常需要将网络流量引导到一个特定的网络节点进行转换,这不仅会降低网络性能,还会增加网络管理的复杂度。

- 性能与管理权衡:这种流量转换机制可能导致网络性能下降,同时也增加了网络管理和维护的工作量。

c. 安全组实现困难,增加运维成本

- 安全组规则不适用:传统裸金属服务器直接连接到物理交换机,导致OpenStack的安全组规则无法直接应用于裸金属服务器。安全组是OpenStack中用于控制网络流量的安全机制,其规则定义了允许或拒绝的网络流量类型。

- 交换机防火墙规则影响:如果尝试通过物理交换机的防火墙规则来实现类似的安全控制,可能会影响到其他业务的正常运行,并且会大幅增加运维成本。

d. 网卡热插拔支持不足,限制了系统灵活性

- 物理限制:传统裸金属服务器的物理网卡不支持热插拔功能。这意味着在不关闭服务器的情况下,无法添加或移除网络适配器,这限制了系统的灵活性和服务的可用性。

- 维护与更新挑战:缺乏热插拔支持使得网络维护和更新变得更加困难,可能需要计划停机时间,从而影响服务的连续性和用户体验。

基于OpenStack的裸金属服务网络实现,虽然借助Ironic和Neutron组件获得了良好的表现,但在网络管理、SDN集成、安全组应用以及网卡热插拔支持等方面仍面临一系列挑战。这些挑战需要通过技术创新和架构优化来逐步解决,以提高裸金属服务的性能、安全性和管理效率。

2.  方案介绍

2.1. 整体方案架构

为了解决上文提到的问题与挑战,本方案创新性的引入了DPU组件,并仍然使用Openstack Ironic node资源来管理裸金属实例。在开源Ironic组件(ironic-api、ironic-conductor)之外,我们自研了Ironic-dpu-agent组件,运行在每个裸金属节点的DPU Soc中,用于管理裸金属实例的存储、网络资源。

 整体方案架构如下图:

各组件作用如下:

  • Ironic-api:裸金属rest api服务。
  • Ironic-conductor:裸金属实例的任务控制服务,负责裸金属开关机、重启、部署等任务。
  • Ironic-dpu-agent:运行在DPU Soc上,与Ironic-conductor通过RPC通信,负责管理本节点裸金属实例的存储、网络资源。
  • Neutron-server:OpenStack网络服务,为裸金属实例提供network、subnet、port管理功能。

2.2. 方案详细描述

在基于DPU的OpenStack裸金属网络方案中,裸金属服务器的网络配置完全由DPU卡负责,裸金属服务器本身不需要任何传统的物理网卡。DPU卡为裸金属服务器提供物理功能(PF)、虚拟功能(VF)或可分割功能(SF)设备,作为网络接口。这些网络接口完全由DPU的系统级芯片(SOC)侧的Open vSwitch(OVS)进行配置,无需依赖外部物理交换机即可实现网络连接。

在该方案中,DPU负责处理包括VXLAN、Geneve等在内的各种虚拟网络协议,能够支持虚拟机与裸金属服务器之间的网络互通,保证灵活且高效的网络连接。这种网络拓扑简化了裸金属服务器的部署流程,因为服务器无需依赖外部交换设备,所有的网络管理和配置工作都在DPU卡上完成,大大减少了对传统物理网络基础设施的依赖。

在控制节点上,OpenStack的Neutron组件负责网络服务的管理,并通过OVN(Open Virtual Network)来与DPU通信。DPU的SOC上运行着OVS(Open vSwitch),这是整个方案中负责网络流量转发和管理的关键组件。同时,DPU的SOC侧还运行着OVN控制器(ovn-controller)和Ironic-dpu-agent,分别负责虚拟网络的控制和裸金属网络的管理。

OVN控制器:负责与Neutron进行通信,并根据网络需求配置OVS,实现裸金属服务器与虚拟机之间的网络连接。

Ironic-dpu-agent:这是Ironic服务的一个代理,它通过控制和配置OVS上的端口,管理DPU网络资源,负责为裸金属服务器分配和管理网络接口。

在这个架构下,DPU卡上提供的PF、VF等网络设备通过其代表接口(pfRep和vfRep)连接到OVS。裸金属服务器通过这些网络设备与DPU卡通信,进而连接到整个虚拟网络系统中。OVS通过在SOC上运行的p0和p1端口负责管理所有的网络流量,从而使裸金属服务器能够无缝地加入虚拟网络。

这种架构极大地提升了裸金属服务器的网络性能,同时减少了对外部交换机的依赖,降低了部署成本和复杂度。在实际应用中,这种基于DPU的网络架构可以大幅提高数据中心的资源利用率,并为多租户环境下的虚拟机和裸金属服务器提供高效、安全的网络隔离和互通。

裸金属node节点绑定创建的虚拟port,Neutron Server 通过 OVN Plugin 将端口信息写入 OVN NB DB,当Ironic-dpu-agent 获得node绑定port信息后,配置OVS的interface中的iface-id,然后通过ovn-controller下发流表,跟虚拟机网络流标下发方式一致。

网卡热插拔

在原生Ironic中,可以实现一定程度网卡热插拔,但是要求机器上有冗余的网卡设备,这些网卡设备可以在需要的时候被启用/禁用。这种方式也有一些缺陷,一方面这不够灵活,不同的用户需求不一样,冗余多少块网卡不便于确定。另一方面,如果冗余的网卡没有得到使用,造成了资源浪费。

在基于 DPU 的方案中,如前文所述,裸金属的网卡是由DPU的 PF/VF/SF 设备提供的,而 DPU 往往提供了大量的 VF/SF(数百个以上),足够满足用户的需求。那么网卡的热插拔就变成了 PF/VF/SF 设备的动态插拔和配置问题,这仍然是由 Ironic-dpu-agent组件完成的。

3.  测试与验证

3.1.  网络拓扑

以下是示例网络拓扑:

其中,普通业务流量和存储流量最好划分VLAN。BMC 带外管理网和千兆管理网需要打通,测试时也可简单用同一个网络。

3.2.  软件环境

依赖以下软件环境:

类别

名称

版本

来源

备注

OpenStack集群

OpenStack

zed

开源社区

网络

neutron

zed

内部版本

存储

volume-attacher

cloudV5.4-6

内部版本

opi-bridge

cloudV2-4

内部版本

裸金属组件

ironic

zed

内部版本

ironic-dpu-agent

cloudV1.0

内部版本

3.3.  测试用例及结果

3.3.1.  创建资源
  • 创建网络、子网、路由器、链接路由器和子网

openstack network create <network_name>

openstack subnet create --network <network_name> \

  --subnet-range <subnet_cidr> \

  --gateway <gateway_ip> \--dns-nameserver <dns_ip> <subnet_name>

##路由器

openstack router create <router_name>

###链接

openstack router add subnet <router_name> <subnet_name>

  • 创建flavor

openstack flavor create <flavor_name> --ram <ram_in_mb> --vcpus <vcpus> --disk <disk_in_gb>

###裸机属性设置

openstack flavor set --property resources:VCPU=<vcpus> \

  --property resources:MEMORY_MB=<ram_in_mb> \

  --property resources:DISK_GB=<disk_in_gb> \

  --property capabilities:boot_option=local <flavor_name>

  • 创建镜像

openstack image create <image_name> \

  --disk-format raw \

  --container-format bare \

  --file <path_to_image_file> \

  --public
openstack image set --property hypervisor_type=baremetal <image_name>

  • 创建node

openstack baremetal node create \

  --driver <driver_name> \

  --driver-info ipmi_address=<bmc_ip_address> \

  --driver-info ipmi_username=<bmc_username> \

  --driver-info ipmi_password=<bmc_password> \

  --property cpus=<cpu_count> \

  --property memory_mb=<memory_in_mb> \

  --property local_gb=<disk_size_in_gb> \

  --property cpu_arch=<architecture>

3.3.2.  创建裸金属服务器实例

创建裸金属实例与创建虚拟机操作流程一致,选择裸金属的flavor即可:

openstack server create --flavor bm-flavor-01 --image centos8.5 --boot-from-volume --network net01 bm-01

3.3.3.  安全组

创建裸金属实例与创建虚拟机安全组添加一样,创建port的时候选择一个安全组即可:

openstack port create --network net01 --vnic-type direct port01 --security-group default

3.3.4.  连通性验证

在同一个net01下创建VM、BM,然后验证BM和VM的网络互通情况

创建VM:

openstack port create --network net01 --vnic-type direct  port01

openstack server create --flavor test-flavor- --image centos8.5  --port port01 vm01

登录通过bmc登录裸机bm-01验证:

ping  <vm_ip>

3.3.5.  网卡热插拔

先卸载port,再添加port:

openstack port delete-port01

openstack baremetal port set --node <node_id> --port <neutron_port_id>

4.  方案总结

DPU赋能的Openstack裸金属网络解决方案,在以下几个方面具有显著优势:

1)Overlay网络终结在DPU侧,降低网络的复杂性:通过在DPU侧终结Overlay网络,可以减少中间网络元素,摆脱了对物理交换机的依赖,简化整体网络拓扑架构。这种方式不仅降低了网络的复杂性,提高了网络的可管理性,还减少了设备成本和运维成本,使整个网络更加经济高效。

2)支持统一的SDN控制器,提升网络灵活性和响应速度:采用统一的SDN控制器实现策略下发和调度,SDN网络不仅支持VLAN还可以使用Vxlan和Geneve,摆脱VLAN网络4096的限制。同时,有效简化SDN软件架构,提高网络的灵活性和响应速度,降低维护和管理的复杂性。

3)通过SDN实现安全组,降低运维成本:通过SDN网络的ACL功能,可以在不依赖物理交换机的情况下实现安全组功能。这样可以直接在DPU上应用安全规则,而不需要通过物理交换机的防火墙规则,从而避免对其他业务的影响并降低运维成本。

4)支持网络接口热插拔,提升网络设备灵活性:利用DPU的动态特性,可以实现网络接口的热插拔。这意味着在不影响服务器运行的情况下,可以增加新的网络接口或移除现有接口,从而提高系统的灵活性和服务的可用性。

综上所述,DPU驱动的Openstack裸金属网络方案通过一系列创新设计,不仅提高了网络的可管理性、可扩展性和安全性,还增强了系统的灵活性和服务的可用性,从而为裸金属服务器提供了更加强大和高效的网络支持。

本方案来自于中科驭数软件研发团队,团队核心由一群在云计算、数据中心架构、高性能计算领域深耕多年的业界资深架构师和技术专家组成,不仅拥有丰富的实战经验,还对行业趋势具备敏锐的洞察力,该团队致力于探索、设计、开发、推广可落地的高性能云计算解决方案,帮助最终客户加速数字化转型,提升业务效能,同时降低运营成本。


http://www.kler.cn/news/361728.html

相关文章:

  • (北京政务服务满意度公司)满意度调查助力服务质量提升
  • 【Hive】3-HiveSQL 数据定义语言(DDL)
  • 数据结构——广义表
  • Android 13 修改系统源码强制夸克浏览器支持横竖屏显示
  • Python Flask 框架下的 API 接口开发与封装示例
  • 100个人物介绍字幕动画PR视频模板MOGRT
  • 【Linux】如何升级宝塔面板
  • 第十六届蓝桥杯嵌入式真题
  • 科大讯飞:成本降低 60%,性能提升 10 倍,从 ES Loki 到 Apache Doris 可观测性存储底座升级
  • 【MySQL】提高篇—视图与存储过程:使用触发器(Triggers)进行自动化操作
  • unity学习-烘焙光照参数详解
  • 西门子嵌入式面试题及参考答案(万字长文)
  • windows中命令行批处理脚本学习
  • 用.NET开发跨平台应用程序采用 Avalonia 与MAUI如何选择
  • vscode 功能、设置备忘
  • Docker大全
  • C++ [项目] 愤怒的小鸟
  • 决策树(2)
  • 学会 学习
  • 京东笔试题
  • 【Python数据分析】利用Pandas库轻松处理大数据
  • LRDDR4芯片学习(三)——命令和时序
  • MySQL 中如何优化 DISTINCT 查询:基于 Java 的实践与应用
  • git-合并连续两次提交(一个功能,备注相同)
  • [区间dp]合并石子升级版
  • 如何借助通达信API构建自动化交易系统?