使用AWS Nitro系统重新实现虚拟化

post-thumb

像亚马逊这样规模的企业,我们经常需要解决其他公司从未遇到过的问题。这样做的缺点是没有“如何”指导我们——很多都是未知的。然而,好处是,当我们解决一个新问题时,这是一个重新设计我们的服务和为我们的客户创造新的利益的机会。事实上,当我们进入未知领域时,我们已经创造了一些最具创新性和最成功的想法。

当你是一家以客户为中心的公司时,你经常会发现自己处于巨大的未知之中,因为客户总是想要更多更好的东西。你需要代表他们进行发明创造。这种创新和解决问题的方法的一个很好的例子是AWS硝基系统(Nitro System), EC2实例的底层平台。

在将传统虚拟化系统优化到极限多年之后,我们知道,如果我们要继续为客户提高性能和安全性,就必须对架构做出巨大的改变。这一认识迫使我们重新思考一切,并成为我们创建Nitro System的灵感源泉,这是第一个将虚拟化功能卸载给专用硬件和软件的基础架构平台。现在,有了Nitro系统,我们可以在云计算中提供最佳的性价比,最安全的环境,以及更快的创新速度。

让我们看看我们的团队在创造Nitro系统的过程,以及这个结果对我们的客户意味着什么。

在开始的时候

hypervisor是提供虚拟机(vm)的系统软件,用户可以在虚拟机上运行操作系统和应用程序。hypervisor提供虚拟机之间的隔离,使虚拟机相互独立运行,允许不同的虚拟机运行各自的操作系统。现成的管理程序从未打算在多租户云环境中使用。但是通过深度调优和自定义,可以针对真正的多租户对虚拟机监控程序进行调整,从而简化机器供应和管理,同时提高利用率并降低客户的成本。

在EC2的早期,我们使用Xen管理程序(纯粹基于软件)来保护物理硬件和系统固件;虚拟化CPU、存储和网络;并提供一组丰富的管理功能。但是在这种体系结构中,一个实例中多达30%的资源被分配给管理程序和用于网络、存储和监视的操作管理。

图1:Xen Hypervisor的EC2“实例”主机架构

30%是非常重要的,而这种浪费并没有为我们的客户提供直接的价值。我们很清楚,如果我们想为客户显著提高性能、安全性和灵活性,我们必须将大多数hypervisor功能迁移到专用硬件上。2012年,我们开始了硝基系统的设计之旅。

单向门

在亚马逊,我们经常谈论单向和双向开门决策。一个双向的决定很容易被逆转,就像测试一个新的网页格式。有了这种类型的决定,你可以快速行动,因为即使需要一点时间,你也可以改变决定。单向门的决定几乎不可能逆转,所以你必须有条不紊地、仔细地、缓慢地、深思熟虑地进行决策。

创造Nitro系统是一个单行道的决定。我们知道我们已经超越了传统虚拟化技术的能力。我们必须创新。但我们并没有迅速或轻率地做出决定。这段旅程包括了5年的仔细试验和错误,每一步都验证了我们所采取的方向。

Nitro系统由三个主要部分组成:Nitro卡、Nitro安全芯片和Nitro Hypervisor。Nitro卡是一组卡,可以为VPC (Virtual Private Cloud)、EBS (Elastic Block Store)和实例存储(Instance Storage)等功能卸载和加速IO,从而提高系统整体性能。

我们在2013年推出了第一个C3实例类型的Nitro卸载卡,将我们的网络进程卸载到硬件中。接下来是2014年的C4实例类型,它将EBS存储卸载到硬件中。对于C4实例类型,我们第一次与一家名为Annapurna Labs的公司合作。我们对那里的技术和团队印象深刻,因此我们在2015年初收购了安纳普尔纳实验室。到2017年,我们已经卸载了最后的组件,包括控制平面和剩余的I/O,并引入了一个新的hypervisor,带有C5实例类型的完整Nitro System。

这对我们来说是一个不可思议的时刻。建造硬件是具有挑战性的。这不仅是一项重大的财务投资,而且对许多员工来说也是一项巨大的时间投入。当Nitro系统推出时,辛苦的工作是值得的。

图2:2017 Nitro系统架构

Nitro架构还使我们能够使管理程序层成为可选的,并提供裸金属实例。裸金属实例为应用程序提供了对底层服务器的处理器和内存资源的直接访问。

对于需要访问硬件特性集(如Intel®VT-x)的工作负载,以及需要在非虚拟化环境中运行以获得许可或支持需求的应用程序,这一点非常重要。例如,I3裸金属实例使VMware能够直接在AWS管理的基础设施上运行其完整的软件定义数据中心(SDDC)堆栈,包括ESXi hypervisor。

这对我们的客户意味着什么呢?更好的性能和价格,增强的安全性,以及更快的创新步伐。

客户的影响

更好的性能和价格

有了Nitro系统,EC2在CPU、网络和存储方面的性能更好,因为我们将这些功能转移到专用的Nitro卡中。不必为管理软件保留资源意味着可以将更多的节省传递给客户。

Nitro System也影响hypervisor的抖动。在云计算中,将抖动降低到微秒的能力可以实现其他情况下不可能存在的场景。例如,我们有一个管理卫星的客户,它需要一个实时计算环境来支持与其船队的通信。具体来说,对网络数据包的响应必须在150µs以内,才能使工作负载正常工作。传统的管理程序根本无法支持这种类型的工作负载。

下面的图3显示了该客户使用不同实例类型时的抖动比较:C4(前nitro)、C5和I3.metal。如你所见,C5和I3.metal的抖动明显更低。您还可以看到,在非裸金属实例中,系统管理程序对性能的影响很小。

图3:Nitro系统管理程序抖动的改进

此外,Nitro系统提高了存储延迟。在图4中,您可以看到通过从本地磁盘存储卸载开销而实现的存储延迟改善。事实上,我们的网络优化实例的性能提高了4倍。甚至R5d实例(它不是一个存储优化的实例)也提供了比第四代实例更好的延迟。

图4:Nitro系统实例存储改进

最后,Nitro系统还提供了增强的网络性能。AWS是第一个也是唯一一个提供100 Gbps增强以太网网络的云。这对于需要更高吞吐量或网络绑定的工作负载(如HPC应用程序)是有益的。这只能通过硝基系统实现。

增强的安全

Nitro系统最大的好处之一是增强了安全性。首先,我们设计的硝化甘油系统能在我们能想到的最恶劣的网络中运行。这意味着不仅要加密所有通信通道,还要提供安全引导功能。虽然我们的数据中心网络是高度安全的,但这种设计使我们能够推出新产品。例如,去年,我们引入了AWS Outposts,通过Nitro系统将AWS体验带到本地数据中心。

其次,我们使用Nitro安全芯片设计了基于硬件的信任根,允许我们以加密方式持续测量和验证系统。与传统硬件相比,这为正在运行的设备提供了更高级别的信任。通过卸载和简化整个堆栈,我们还最小化了可信计算基础(Trusted Computing Base, TCB),增加了对整个系统的信心。

第三,我们设计的Nitro系统对操作人员的可访问性非常有限。在典型的现成管理程序中,管理员拥有对系统的完全访问权,可以修改任何组件。相比之下,对于Nitro系统,操作人员的唯一接口是受限的API,因此不可能访问客户数据或以未经批准的方式对系统进行更改。没有与“根”用户或SSH等价的用户,因此,Nitro System提供了一种通过简单地锁定传统hypervisor无法获得的信任度。

第四,传统的虚拟化和其他云提供商的虚拟化使用通用服务器。就其本质而言,这些包含额外和不必要的组件和功能。这增加了安全漏洞的表面积。相比之下,Nitro System在使用专门为运行管理程序而设计的专用硬件和服务器方面迈出了巨大的一步。这不仅降低了安全漏洞的风险,而且还使我们能够将特定功能转移到专用的硬件和软件,从而进一步减少了管理程序的攻击面。

最后,使用Nitro系统,我们可以应用形式化的验证来证明Nitro系统没有错误,并且按照预期的方式工作。

更快的创新步伐

有了Nitro System,我们可以通过将虚拟化功能卸载到专用硬件上,将EC2的架构分解成更小的块。这些块可以以许多不同的方式组装,这使我们能够灵活地设计和快速交付EC2实例,并提供越来越多的计算、存储、内存和网络选项。从下面的“Nitro支持的创新”图表中可以看到,自2017年推出Nitro系统以来,我们已经推出了近4倍的实例数量。因此,我们的客户有更广泛的工具选择,因为他们优化价格和性能。我们创新的速度越快,我们的客户创新的速度就越快。

图5:Nitro系统使创新成为可能

不断创新

你是选择把某件事看作一个问题还是一个机会,这对你如何处理它有很大的影响。我们选择将传统管理程序的局限性作为创建全新体系结构的机会。

现在,有了Nitro System,我们的客户可以享受到更好的性能、增强的安全性和更广泛的实例类型选择。我们还没有完成。如果你是一家以客户为中心的公司,你的产品永远不会完成,因为客户总是想要更多,他们总是想要更好。我很期待每次都能给他们这个。

你可以了解更多关于AWS硝基系统在我们的网站上。

评论的Disqus