本文在绿泡泡"狗哥琐话"首发于2025.2.17 <-关注不走丢。
最近看到一篇不错的文章,叫做"Modern Hardware for Future Databases",里面从几个方向讲了下现在数据库的硬件发展趋势,今天先来说说网络篇。

内容中,一位大佬对(获过图灵奖的大佬)OLTP系统进行了一些基准测试,发现TCP-IP协议栈对于总体CPU使用率是占在47~68%。如果使用的网络带宽增加,这个开销还会提升。这种东西在业内也叫做datacenter tax,数据中心税。
大佬信息⬇️

那如何降低datacenter tax呢?
一种方案是将TCP换成在UDP上运行的协议,比如QUIC。然而并没有软用,因为QUIC就是将TCP封装并加密在UDP中,所以带来的开销是一样的。
还有一种做法就是把计算密集型,但是简单的部分交给硬件。比如payload的分段和校验,KTLS还允许把加密解密也放到网卡上。这些都是切实可行的的方案,但是比较依赖于社区的推进。比如更激进的TOE(TCP offload engine------卸载整个TCP协议到网卡里)就被内核开发者基于维护成本的原因否定了。
既然内核为TCP IP花了这么多计算资源,能不能绕开内核呢?有的,这就是Intel于2010年领导发起的 DPDK(Data Plane Development Kit)。
发起它主要是intel为了卖自家硬件,针对intel处理器和网卡开发的高性能网络驱动组件,后来DPDK开源以后,越来越多厂商加入进来,所以也算是变成了业界的事实标准了。

左边是传统的内核网络,而右边是DPDK。可以看到右边是直接绕开DPDK基础库的,在用户空间直接对数据包做收发、处理。
根据网上的实践反馈呢,用下来至少可以提供50%+的网络吞吐,缺点就是它需要独占一张网卡,并且它的开发并不简单,需要有经验的开发人员进行开发维护,这就是高性能的代价。
另一种思路则是基于DMA(Direct Memory Access,直接内存访问)的RDMA(Remote Direct Memory Access,远程直接内存访问)是一种允许主机之间直接访问彼此内存的技术。DMA 技术中,无需 CPU 参与,主机内部的设备(如硬盘或网卡)能够直接与内存交换数据,所以RDMA也不需要CPU参与的,就直接走网卡。

目前比较常见的实现方案是RoCE(RDMA over Converged Ethernet,融合以太网的远程直接内存访问)和Infiniband。
- Infiniband,是一种专门为 RDMA 而生的技术,由 IBTA(InfiniBand Trade Association, InfiniBand 贸易协会)在 2000 年提出,因不错的性能在高性能计算领域中很受欢迎。 但构建 Infiniband 网络需要配置全套专用设备,如专用网卡、专用交换机和专用网线,限制了其普及性。其次,它的技术架构封闭,不兼容现有的以太网标准。所以通用数据中心很难搞这套。
- 为了降低 RDMA 技术的使用成本,并使其应用于通用数据中心领域,2010 年,IBTA 发布了 RoCE(RDMA over Converged Ethernet,融合以太网的远程直接内存访问)技术,只需配备支持 RoCE 的专用网卡和标准以太网交换机,就可以赶上Infiniband速度了,相当于Wrapper了一层。
最后要注意的是:RDMA 网络对丢包极为敏感,任何数据包的丢失都可能导致大量重传,降低传输性能。所以对于整体的基础设施要求是比较高的,都会涉及到一些专用硬件。
最后一种解决方案,是个比较新的玩意儿。叫DPU(Data Processing Unit),或者叫做SmartNIC,它会将更多的CPU要做的事放到这里,聪明的你肯定想到了前面TOE(TCP offload engine------卸载整个TCP协议到网卡里)的方案。的确有点像,但是它还能涉及到一些存储、安全、虚拟化的能力,而且这玩意儿会是一个标准的硬件,很多硬件大厂都在推进这个事儿,未来成为数据中心事实标准也就是花时间的事儿。