做系统架构的人看技术,不只是看它能做什么,更看重它为什么这么做。每一项技术选择背后都体现了对问题域的理解和权衡。紫金DPU的设计不是凭空而来的,它反映了天翼云对数据中心基础设施发展趋势的判断,以及在性能、安全、成本、可运维性之间的平衡取舍。这篇文章从架构师的视角,拆解紫金DPU设计理念中的几个关键决策。
决策一:专用化而非通用化
紫金DPU最根本的设计决策是走专用化路线。它的内部不是单一通用处理器,而是通用核心+多个专用加速引擎的组合。这个决策背后的逻辑是:数据中心的网络、存储、安全处理具有高度的模式化特征——数据包格式固定、处理流程可预测、操作类型有限。对于这类任务,专用硬件的效率远超通用处理器。
但也有反对的声音。通用化的好处是灵活性,一块芯片可以跑各种软件,功能可以通过软件更新来扩展。专用化的缺点是硬件一旦设计完成,功能就固定了,灵活性差。为什么紫金DPU选择了专用化路线?
答案是规模效应。在数据中心场景下,网络和存储处理的量级极大,每秒处理数百万个数据包,专用硬件的效率优势被放大到极致。在这个量级下,灵活性让位于效率是合理的取舍。而且紫金DPU保留了通用核心来处理需要灵活性的控制平面任务,做到了"数据面专用、控制面通用"的平衡。
决策二:独立运行环境
紫金DPU不只是一块加速卡,它有自己的处理器、内存、操作系统,可以独立运行。这个设计决策看起来增加了复杂度,但背后的考虑是安全和管理两个维度。
安全方面,DPU的独立运行环境构成了一个与宿主机隔离的安全边界。网络流量在DPU上过滤后再传递给宿主机,即使宿主机被攻破,DPU上的安全策略和网络隔离仍然有效。这比将安全功能放在宿主机软件层要可靠得多——攻击者拿到宿主机root权限后,可以篡改宿主机上的任何软件安全策略,但无法篡改DPU硬件中的策略。
管理方面,DPU的独立运行环境支持带外管理。当宿主机操作系统崩溃或卡死时,传统的管理通道(如SSH、远程桌面)都无法使用,只能依赖底层的带外管理接口(如BMC)。紫金DPU可以作为更强大的带外管理通道,不仅可以远程重启服务器,还可以查看网络流量、排查存储故障,甚至在不影响业务的情况下收集诊断信息。这大幅提升了运维的可靠性。
决策三:数据面与控制面分离
电信网络设计中有一个经典原则:数据面和控制面分离。数据面负责转发用户数据,控制面负责路由决策和管理。两者在物理上或逻辑上分离,互不干扰。紫金DPU的设计也体现了这个原则。
在DPU内部,数据面的网络转发和存储IO处理由硬件加速引擎完成,速度快但功能固定。控制面的策略下发、连接管理、监控统计由通用核心处理,速度慢但灵活。两者通过内部接口通信,数据面不需要等待控制面就能持续转发数据,控制面的策略变更可以实时生效到数据面。
这个设计的好处是:数据面可以保持线速处理不受控制面影响,控制面的处理延迟不会拖慢数据转发。在传统架构中,CPU同时处理数据面和控制面任务,控制面的突发负载(如大量新连接建立)会挤占数据面处理时间,导致网络延迟波动。分离后,两者各司其职,整体性能更稳定。
决策四:面向云原生优化
紫金DPU的设计面向云原生场景做了多项优化。云原生环境有几个特征:容器密度高、网络流量模式复杂(东西向流量占比大)、多租户隔离要求严格、微服务间通信频繁。
针对这些特征,紫金DPU在网络虚拟化方面做了深度优化。容器之间的网络通信通常通过虚拟网络(如VXLAN)实现,虚拟网络的封装解封装在DPU上完成,性能损耗极小。东西向流量(服务器之间的流量)的转发可以在DPU上直接完成,不需要绕道外部网络设备,降低了东西向通信延迟。
多租户隔离方面,DPU在硬件层面实现了网络流量隔离。不同租户的虚拟机或容器的网络流量在DPU上通过不同的虚拟通道传输,通道之间在硬件层面隔离。这比软件实现的网络隔离更安全,因为硬件隔离不依赖软件正确性,即使虚拟化软件有漏洞,硬件隔离也能防止跨租户流量泄漏。
决策五:可编程性
最后一个值得讨论的决策是可编程性。紫金DPU的加速引擎虽然功能固定,但通用核心是可编程的。这意味着可以通过软件更新来添加新的控制平面功能、调整安全策略、适配新的网络协议。这种"硬件固定+软件可编程"的设计,在专用化效率和灵活性之间找到了折中点。
可编程性还体现在DPU可以运行自定义的网络功能。对于有特殊需求的企业,可以在DPU上部署自定义的流量监控、安全审计、负载均衡等网络功能,而不需要在服务器上额外部署软件。这相当于将一部分网络功能虚拟化(NFV)的能力内嵌到了服务器中。
总结
从架构师视角来看,紫金DPU的设计体现了几个清晰的思路:用专用化换取效率、用独立运行换取安全和可运维性、用数据面控制面分离换取稳定性、用可编程性换取长期灵活性。这些决策不是互相独立的,而是一个相互支撑的整体。它们共同构成了DPU作为一种新型基础设施组件的设计哲学——不是简单地加速某个操作,而是重新定义数据处理的架构范式。