本文是其中的一部分沟通和系统设计系列:有SmartNIC -会计算吗
每个服务器都通过网络接口卡(NIC)连接到网络。有时这些是嵌入式无线连接,通常支持物联网(IoT)设备,如摄像头和恒温器,但绝大多数服务器都连接到网络。他们使用连线的原因有很多,但最突出的两个原因是性能和可用性。
当谈到可用性时,有线网络只有在电缆损坏或移除时才会失效;相比之下,无线网络受到拥塞和外部干扰的影响。对于网络性能,我们经常讨论两个指标:带宽(可以在网络中移动的数据量)和延迟(等待移动数据的时间)。有线网络的带宽和延迟很容易比无线网络好一个或多个数量级。
例如,今天的有线数据中心网络通常是25gb /s,而无线网络在1.3 Gb/s(使用5-GHz标准)时的速度是这个速度的1/20。这些相同的有线数据中心网络测量的延迟在2- 5µs范围内,而无线网络通常是1 - 2 ms的1/1000。
在数据中心中的服务器为服务器进行专用有线NIC对服务器的整体性能至关重要,但我们可以更好吗?是的,我们可以通过添加计算资源来处理网络流量,因为它进入并退出服务器或者甚至在应用程序级别卸载主机CPU来进行NIC。
计算元素
Smartnics是同一卡上有线网络和计算资源的融合。这些计算资源可以由以下一个或多个类别组成:古典X86 CPU,如ARM核心,用于数字信号处理器(DSP),人工智能(AI),网络处理单元(NPU)或现场可编程的专用内置核心门阵列(FPGA)。
这些用于创建SmartNIC的计算模型中,哪些是由该SmartNIC的目标市场决定的?SmartNIC是只专注于减少网络或存储流量的影响,还是为减轻主机CPU负担而设计的?
在SmartNIC上包含以上多个计算元素并不罕见。例如,一个双核或四核Arm复合体经常用于控制平面管理任务,如将软件加载到其他计算单元和日志记录。那么,smartnic如何将主机CPU从网络、存储甚至特定于应用程序的计算任务中卸载出来呢?
DDoS防御、防火墙、包包装
首先,我们有明显的网络任务,如分布式拒绝服务(DDoS)缓解、防火墙和包包装。虽然DDoS和防火墙看起来很相似,但它们是两种截然不同的任务。从设计上讲,DDoS攻击主要是海量的,这意味着它们的全部目的是发送数百万次攻击;我们甚至看到过每秒向网络发送数亿个数据包。
当网络出现拥塞时,组件就会失效,真正的客户流量就会延迟甚至下降。传统防火墙的设计并不能处理这样的数据包速率,但是SmartNIC可以使用一些基本的技巧来动态地计算并丢弃DDoS攻击数据包。早在2015年,RioRey就制作了一款DDOS攻击的分类这调用了25种攻击向量。这些最常见的可以加载到一个明智的中,为公司的边缘互联网服务器创建DDOS防御。
Smartnic还可以包含一个基本的NetFilter防火墙从过滤所有入站和出站数据包中卸载主机CPU。NetFilter是Iptables的新版本,它为过滤网络流量提供了非常强大的体系结构。所有Edge-Connected Server,甚至驻留在网络DMZ中的服务器也应该运行防火墙。将此防火墙卸载到Smartnic可以每秒保存主机CPU数百万指令,然后可以应用于该服务器上运行的应用程序。
我们还有数据包包装,称为封装。每当我们利用虚拟化或集装箱系统的覆盖网络时,我们需要包装网络数据包,以便可以在这些覆盖网络之间路由。覆盖网络处理的一个例子是开放的vSwitch(OVS),这可能是非常CPU强化,因此将此任务卸载到Smartnic释放了重要的主机CPU周期。
最后,我们还可以卸载通常在服务器上运行的主要网络应用程序,比如DNS或内存数据库。完全在SmartNIC内部处理DNS查询是一个典型的SmartNIC应用程序,因为事务很小,而且表查找可以快速处理。
SmartNIC应用程序的另一个优秀示例是内存中的数据库。如今,许多客户应用程序都依赖于使用内存数据库应用程序存储的非结构化数据。这些数据元素通常利用简单的键,这些键的值通常也很小。例如,如果名称是x,那么特定主机的网络地址是什么?网络地址,即使是IPv6地址,也只有16个字节,并且在Linux上,主机名被限制为63个字节——这两个都很容易装入单个小网络数据包中。
存储控制与SmartNIC
SmartNIC还可以同时作为存储控制器使用。一些SmartNICs,像Xilinx的Alveo U25(见图)它的芯片和板载内存都是千兆字节(U25的内存是6gb),有自己的本地存储。这种存储可以轻松地作为服务器自己NVMe磁盘的缓存。这将很快变得特别重要,因为像计算快速链接(CXL)这样的协议使未来的智能网卡能够直接管理与NVMe驱动器的主从关系。
smartnic还可以在硬件中进行擦除编码和存储加密。在驱动器加密方面,smartnic提供了独特的安全角度。从安全的角度来看,将加密密钥保存在已加密的项目附近(甚至更糟)从来都不是一个好习惯。如果SmartNIC对进入NVMe存储的数据进行加密或解密,那么如果有人希望打破加密,这两个元素都是必需的。如果管理员删除驱动器以在其他地方解密它们,那么他们就需要使用蛮力来猜测遗留在SmartNIC上的丢失的加密密钥。
Smartnics可以轻松采用加密,以保护其在电源周期之间的键,进一步使系统既有稳健和安全。例如,Solarflare在NIC上维护了一个硬件安全机构,在过去几年中将NIC的钥匙存储在其X2芯片中。未来的智能安全飞地可能会为SSL / TLS终点加密保存并确保数千万的安全键。
卸载
CPU卸载也是一个明显的聪明记性的重要主张。使用当今可用的代码是可能的,将计算密集的任务卸载到智能组织中。这些可以是哈希为区块链和转码视频的任务。
区块链依靠解决工作证明或类似类型的问题。提供达到解决方案的网络上的第一个节点是奖励,然后允许捆绑并在链上发布下一个块。Smartnics可以在计算下一个解决方案时在内存中持有区块链和待处理的事务。如果他们赢了,那么Smartnic会发布块并移到下一个块。
我们并不是提倡把smartnic变成互联网上的采矿设备,而是恰恰相反。精明的架构师可以在其基础设施中使用一系列smartnic,通过使用本地托管的区块链来维护公司自己的交易账簿。所有这些都可以通过利用smartnic的计算能力来实现,而不会影响主机CPU的性能。像Silex Insight这样的公司已经开发了所需的区块链组件来实现这一点。
视频转码是另一个受欢迎的主机CPU卸载,对Smartnics提供很好。代码转换视频,特别是实时视频,使用Adaptive-Bitrate(ABR)压缩来支持移动设备,是另一个CPU密集型任务。这些压缩任务是非常线性的,并且已移植到基于FPGA的加速器,它们已经证明比通用CPU更有效地为10倍至20倍。
电子交易
Smartnics Shine的最后一个特殊情况是超低延迟电子交易。在这里,我们正在谈论移动网络数据包的十亿分之一。今天,高性能25-GBE NIC的延迟在1,000 ns的范围内。使用适当的架构系统,合适的软件和调整的Smartnic,可以在接收到四个字节时分析网络数据包。然后可以在致盲的快速22ns中将响应分组注入网络中。这比传统的高性能NIC快40倍。部署在电子交易中,这些Smartnics的投资回报(ROI)有时可以在一秒钟的分数中测量。
今天的服务器通常要花费30%的CPU周期来管理网络;这被戏称为数据中心税。想象一下,如果可以在数据中心的每个服务器上恢复这些周期。这就像在生产环境中,每三个服务器对应一个新服务器。
smartnic使系统架构师能够将高性能计算资源置于服务器的最边缘——网络。然后,可以利用smartnic来保护服务器,从而保护企业,同时也可以大大减少昂贵得多的服务器cpu。因此,当您设计下一个数据中心部署时,不要默认使用服务器自带的标准网卡,而应该考虑如何将smartnic适应您的计划。
Scott Schweitzer是技术福音师赛灵思公司.
阅读更多的文章沟通和系统设计系列:有SmartNIC -会计算吗