基于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中,用于管理裸金属实例的存储、网络资源。

 整体方案架构如下图:

DPU

各组件作用如下:

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的网络架构可以大幅提高数据中心的资源利用率,并为多租户环境下的虚拟机和裸金属服务器提供高效、安全的网络隔离和互通。

DPU

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

DPU

网卡热插拔

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

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

3.  测试与验证

3.1.  网络拓扑

以下是示例网络拓扑:

DPU

其中,普通业务流量和存储流量最好划分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
openstack subnet create --network
  --subnet-range
  --gateway --dns-nameserver
##路由器
openstack router create
###链接
openstack router add subnet

DPU

创建flavor

openstack flavor create --ram --vcpus --disk
###裸机属性设置
openstack flavor set --property resources:VCPU=
  --property resources:MEMORY_MB=
  --property resources:DISK_GB=
  --property capabilities:boot_option=local

DPU

创建镜像

openstack image create
  --disk-format raw
  --container-format bare
  --file
  --public
openstack image set --property hypervisor_type=baremetal

DPU

创建node

openstack baremetal node create
  --driver
  --driver-info ipmi_address=
  --driver-info ipmi_username=
  --driver-info ipmi_password=
  --property cpus=
  --property memory_mb=
  --property local_gb=
  --property cpu_arch=

DPU

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

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

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

DPU

3.3.3.  安全组

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

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

DPU

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 

DPU

3.3.5.  网卡热插拔

先卸载port,再添加port:

openstack port delete-port01
openstack baremetal port set --node --port

DPUDPU

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裸金属网络方案通过一系列创新设计,不仅提高了网络的可管理性、可扩展性和安全性,还增强了系统的灵活性和服务的可用性,从而为裸金属服务器提供了更加强大和高效的网络支持。

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

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分