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&