深入探索Amazon Nitro系统
关键字: [Amazon Web Services re:Invent 2024, 亚马逊云科技, Nitro system, Amazon Web Services Nitro System, Custom Silicon, Hardware Offloading, Bare Metal Performance, Enhanced Security]
导读
亚马逊云科技 Nitro系统是一个丰富的构建模块技术集合,包括由亚马逊云科技构建的硬件卸载和安全组件,正在为最新和未来几代Amazon EC2实例提供动力,提供越来越广泛的计算、存储、内存和网络选项。在本次会议中,我们将深入探讨亚马逊云科技 Nitro系统,回顾其设计和架构,探索Nitro平台的新创新,并了解它如何实现了看似不可能的事情。
演讲精华
以下是小编为您整理的本次演讲的精华。
在2024年亚马逊云科技 re:Invent大会上,亚马逊云科技高级首席工程师Ali Sighte就亚马逊云科技 Nitro系统进行了深入的演讲。他首先阐明亚马逊云科技已经在各个领域构建了定制硅和芯片,包括AI/ML、核心计算和机器学习。对硅的首次投资是Nitro系统,该系统将功能从传统的虚拟机监控程序转移到专用芯片上,始于2013年收购Annapurna Labs,一直持续到今天。
Sighte接着阐述了亚马逊云科技在定制硅方面的其他投资领域,例如为云工作负载设计的Graviton主机CPU,像Epic Games、Stripe、Pinterest、Datadog,甚至SAP等客户都在Graviton上运行工作负载,其中一些客户大部分计算都在Graviton上进行。此外,亚马逊云科技还投资了Inferentia和Trainium机器学习加速器,这些加速器是从头开始构建的,旨在为机器学习推理和训练工作负载提供最佳的性价比,像Databricks这样的客户都在使用它们。
Sighte解释说,构建自己的芯片使亚马逊云科技能够针对自身的使用场景进行专门设计,通过拥有端到端的开发过程加快执行速度,通过跨越孤岛优化来创新,并通过硬件根信任和固件验证来增强安全性。他阐述说,Nitro系统是对云中虚拟化应该如何在最低层进行的根本性重新思考,包括提供网络、存储和安全功能的Nitro卡,以及在主机处理器上运行的Nitro虚拟机监控程序,客户虚拟机和应用程序在其之上运行。这种隔离提供了更好的安全性,并允许亚马逊云科技进行创新并引入新功能。
Sighte随后深入探讨了Nitro系统的历史,从2013年亚马逊云科技推出Enhanced Networking的C3实例开始,当时将一些功能从虚拟机监控程序转移到专用芯片上。随着时间的推移,他们将这一做法扩展到其他I/O,如存储,并构建了一个虚拟机监控程序,在该监控程序中他们可以消除大量功能。自2017年以来,所有新的EC2实例都使用了Nitro系统,而且数量非常多。
在Nitro之前,Xen虚拟机监控程序处理了许多任务,包括内存管理、CPU调度、设备模拟、限制器和安全组实施,利用主机CPU上的资源。通过Nitro,亚马逊云科技开始将这些功能卸载到专用设备上,从网络开始。
Sighte解释了Nitro卡如何为VPC卸载VPC数据平面,如ENI附件、安全组、路由、DNS、DHCP等,并将其卸载到专用硬件上。这些卡的较新版本还支持对网络流量进行透明的256位AES加密,而不会影响性能。他强调了Elastic Network Adapter (ENA)及其随时间的性能改进,从10 Gbps到25 Gbps、100 Gbps,现在是200 Gbps,使用相同的设备模型和驱动程序,这是一种独特的情况,在相同的设备和驱动程序下,性能提高了一个数量级。
Sighte讨论的另一项网络技术是Elastic Fabric Adapter (EFA),它采用亚马逊云科技的Scalable Reliable Datagram (SRD)技术,通过多路径负载均衡流量,减少拥塞和尾部延迟,适用于需要高带宽和低延迟的HPC和机器学习工作负载。他详细阐述了SRD的工作原理,通过亚马逊云科技的Clos网络在多条路径上分配带宽,快速检测拥塞,将流量转移到未拥塞的路径,并避开存在链路问题的路径,从而降低尾部延迟并增加带宽。尾部延迟对于这些分布式应用程序尤为重要,因为它们通常以批量同步的方式运行,中位数或平均延迟不太重要,而p100或尾部延迟才是关键。Sighte展示了图表,说明了EFA如何使近乎线性扩展的时间大大延长,第一版本支持高达100 Gbps的网络,第二版本支持高达200 Gbps的网络,延迟降低30%。
Sighte还讨论了亚马逊云科技如何将SRD应用于通用网络,即ENA Express,将重新组装无序数据包的任务卸载到Nitro卡上,使应用程序能够利用SRD和多网络路径的优势,而无需进行修改。这种优势可能是巨大的,单流带宽可从5 Gbps提高到25 Gbps,高达5倍;在高负载下,对于文件系统、内存数据库和媒体编码等工作负载,in-cast基准测试的性能可提高高达85%。
转向存储方面,Sighte解释了Nitro卡如何公开连接到亚马逊云科技的EBS数据平面的NVMe设备,具有透明加密功能,并利用SRD实现更好的尾部延迟。他还讨论了亚马逊云科技如何将闪存翻译层(FTL)集成到Nitro卡上,以获得比供应商特定FTL实现更好的性能、可靠性和更低的延迟变化。Sighte强调了最近宣布的IM4gd实例,采用亚马逊云科技第三代SSD,与几年前的I4g实例相比,实时存储性能提高了65%,延迟变化降低了50%。
Sighte阐述了闪存存储和SSD的复杂性,解释了两个关键组件:NAND(存储位的地方)和闪存翻译层(FTL),FTL将逻辑地址映射到物理地址,执行垃圾收集和磨损均衡。他指出,每个SSD供应商都有自己的FTL实现,有时会导致奇怪和不可预测的行为,使得很难实现一致的性能,并运行需要一致延迟的工作负载,如数据库。为了解决这个问题,亚马逊云科技将FTL集成到了他们的Nitro卡上,从而将延迟降低了60%,并提高了可靠性。
在将I/O功能卸载后,亚马逊云科技重新审视了虚拟机监控程序真正需要做什么,从而得到了一个轻量级的Nitro虚拟机监控程序,主要处理内存和CPU分配,提供类似裸机的性能。它没有SSH、systemd或网络堆栈,体积小、效率高,在不被要求执行任务时不会占用太多资源或造成阻碍。此外,还添加了Nitro安全芯片,用于测量和验证服务器上的固件,并启用带外更新。
Sighte强调了Nitro系统的模块化设计,这使亚马逊云科技能够在短短七年内将实例类型的数量从70种迅速增加到约850种,为不同的存储、网络和加速器配置提供了灵活性。他表示,亚马逊云科技用了11年时间从一种实例增加到70种实例,但有了Nitro系统,他们在7年内就从70种增加到了约850种实例,实例数量的大幅增加为不同配置提供了灵活性,这在Nitro之前是不可能的。
在存储性能方面,Sighte强调,十年前亚马逊云科技提供的EBS带宽为2 Gbps,而现在他们提供高达100 Gbps的带宽和高达400,000 IOPS。
在安全性方面,Sighte解释了亚马逊云科技的共享责任模型,亚马逊云科技负责云的安全性,操作、管理和控制从主机软件和虚拟化层到设施的物理安全的所有组件。客户负责云中的安全性,对于像EC2这样的服务,意味着执行必要的安全配置,如设置安全组、保持操作系统的最新状态以及配置VPC。
Sighte接着讨论了保密计算,以及亚马逊云科技 NitroEnclaves如何提供一个与父实例隔离的环境,具有证明报告和加密功能,用于保护敏感数据,如签名密钥或个人身份信息(PII)。他解释说,虽然常规Nitro实例提供了保护,但Enclaves提供了一个额外的实例,父实例向其捐赠一些CPU和内存,Nitro虚拟机监控程序创建一个新的VM,没有持久存储或SSH访问权限,受到高度约束,只与父实例有一个小连接。父实例无法访问Enclave内运行的进程,但通过公钥的证明报告,可以对发送到Enclave的数据进行加密,从而保护敏感数据免受父实例的影响。
Sighte讨论的其他最新安全功能包括UEFI安全启动,AMI提供了一种不可变的方式来启动实例,在启动时根据EFI变量测量引导加载程序和操作系统,只有通过验证才会启动,从而防御跨重启的持久威胁。亚马逊云科技还增加了对可信平台模块(TPM)的支持,向实例公开标准的TPM 2.0接口,在启动期间将测量值扩展到TPM中,用于平台身份识别和生成解锁BitLocker、Lux或自定义应用程序所需的加密数据。
Sighte接着演示了启动EC2实例的端到端过程,以Graviton 4服务器为例,它可以托管多个VM或裸机实例。在亚马逊云科技的系统中,Nitro卡是枢纽,在测量和验证所有固件后控制主机CPU的启动。对于Graviton 2,亚马逊云科技是首家对DRAM进行加密的公司,而在Graviton 4中,他们将加密扩展到Graviton 4 CPU与Nitro卡之间的接口,以及多个相干的Graviton 4插槽之间的接口。
当客户呼叫EC2控制平面启动实例时,控制平面会对请求进行身份验证,识别满足所请求大小、可用区域和放置组的容量池,然后选择一台服务器来托管该实例。控制平面会向Nitro控制器发送消息以分配资源,并向管理程序发送另一条消息,以使用所请求的内核和内存(如192GB内存和96个内核的c6g.24xlarge实例)创建实例的外壳。然后,控制平面会指示Nitro卡直接为实例连接存储和网络等设备。最后,控制平面启动实例,该实例将从EBS卷引导操作系统并运行。
Sighte演示了裸机实例的过程类似,唯一区别是没有Nitro管理程序,因为VPC网络和EBS的功能位于Nitro卡上。无论是虚拟机还是裸机,实例都具有相同的I/O设备和监控。
Sighte进一步阐释了亚马逊云科技如何使用相同的机制创建Mac mini实例,将Nitro控制器的Thunderbolt到PCIe桥接连接到Mac mini,允许开发人员使用Mac构建和签名iOS、iPad或Mac软件,同时受益于EC2的弹性和可配置性,并在客户的VPC中运行。
总之,亚马逊云科技 Nitro系统是对云虚拟化的根本性重新思考,将功能从管理程序卸载到专用芯片和卡上,以获得更好的性能、安全性和创新能力。它使亚马逊云科技能够快速扩展其实例产品,同时通过硬件根信任、固件验证和隔离环境(如Nitro Enclaves)提供一致的裸机般性能和增强的安全功能。
下面是一些演讲现场的精彩瞬间:
亚马逊云科技自2013年以来一直在为人工智能/机器学习、核心计算和机器学习等各个领域投资定制硅和芯片,Nitro系统是最早的倡议之一。
亚马逊云科技量身定制芯片设计,以优化特定用例的性能和功耗效率,从而实现专业化并满足亚马逊云科技环境的独特需求。
Andy Jassy解释了Amazon的可扩展可靠数据报(SRD)网络协议如何利用Clos网络中的多条路径提供更快、更高效的数据传输。
亚马逊云科技为Nitro实例引入UEFI安全启动,通过验证引导加载程序和操作系统与受信任密钥的完整性,提供了一种不可变和安全的实例启动方式,增强了跨重启防御持久性威胁的能力。
控制平面协调资源分配和存储、网络等设备直接连接到EC2实例,绕过了传统的虚拟机管理程序层。
总结
Nitro系统代表了云虚拟化在核心层面上应该如何进行的根本性重新思考。它是一种结合了定制硬件和软件的组合,将网络、存储和安全等关键功能从传统的虚拟机监控程序卸载到专用的Nitro卡上。这种专门化使亚马逊云科技能够针对其独特的云基础设施需求优化性能、功率效率和安全性。
通过拥有端到端的开发过程,亚马逊云科技可以跨越典型的孤岛,为客户更快地带来新功能和新能力。Nitro系统通过硬件根信任、固件验证和将主机交互限制在一组狭窄的经过身份验证和可审计的API上,提高了安全性。它为虚拟化实例提供了类似裸机的性能,并提供了模块化设计灵活性,使亚马逊云科技能够快速扩展其实例产品。
Nitro系统是亚马逊云科技保密计算能力的关键支持者,保护客户代码和数据免受未经授权的访问,同时为敏感工作负载提供安全的隔离区。凭借其独特的架构,Nitro系统限制了运营商对客户数据的访问,这一点得到了独立安全审查的验证。总的来说,Nitro系统体现了亚马逊云科技通过定制硅和创新系统设计为客户提供直接价值的承诺。
亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。做为全球生成式AI前行者,亚马逊云科技正在携手广泛的客户和合作伙伴,缔造可见的商业价值 – 汇集全球40余款大模型,亚马逊云科技为10万家全球企业提供AI及机器学习服务,守护3/4中国企业出海。