全球第一大雲廠商AWS的Nitro介紹

2021-12-31 IEEE

AWS(Amazon Web Services)Nitro架構為Amazon的雲服務提供了底層的支持。Nitro架構的總體設計思想是:輕量化的hypervisor配合定製化的硬體,讓用戶無法區分出運行在虛擬機內和運行在裸金屬上作業系統的性能差異。為了實現定製化的硬體(ASIC),Amazon和以色列的一家晶片公司——Annapurna實驗室合作,並在後面將其收購,其晶片的logo就是Annapurna山(世界第十高峰)。

 

原本基於Xen架構的虛擬化系統中,伺服器既要運行提供給客戶的虛擬機,也要運行Xen Hypervisor,還要運行Domain0中的各種設備模擬,包括網絡、存儲、管理、安全和監控等功能,導致伺服器中大概只有七成的資源能夠提供給用戶。

 

為此,Nitro項目將焦點放在這三成的虛擬化損耗上,通過定製化的硬體,將這些虛擬化損耗挪到定製的Nitro系統上,讓伺服器上的資源基本上都能夠提供給用戶。

 

Nitro系統並不是一蹴而就的,而是經過了好幾代的迭代發展,從原本的Xen架構慢慢過渡過來的。原本的Xen架構中,虛擬機的設備都是由Domain0的Amazon Linux模擬和管理,這樣帶來的問題是:雖然Domain0功能強大,但是卻臃腫龐大,而且會搶佔伺服器的資源。

 

經過多代發展,Nitro架構終於將虛擬機的計算(主要是CPU和內存)和I/O(主要是網絡和存儲)子系統分離開來,將原本一個大的計算機系統分成兩部分(如下圖所示):

基於Intel主板的通用伺服器系統,該系統主要提供計算資源。

Amazon自己定製的Nitro系統,該系統主要提供I/O資源。

兩個系統之間通過PCIe總線連接到一起,如下圖所示:

Nitro系統主要由三部分組成:

以PCIe卡形式呈現的Nitro卡,主要包括支持網絡功能的VPC(Virtual Private Cloud)卡,支持存儲功能的EBS(Elastic Block Store)、Instance Storage卡和支持系統控制的Nitro Controller卡。

Nitro安全晶片,該晶片提供Hardware Root of Trust,防止運行於通用伺服器上的軟體對non-volatile storage進行修改,比如虛擬機的UEFI程序。

運行於通用伺服器的Nitro Hypervisor,這是個基於kvm的輕量級hypervisor,主要提供CPU和內存的管理功能,不提供設備的模擬(因為所有的設備都是通過透傳的方式添加到虛擬機中)。

 

由於找不到詳細的資料來解釋兩個系統之間是怎麼通過PCIe總線連接到一起的,所以這邊只能做個猜測。理論上,應該可以在Intel主板上插入一個PCIe擴展槽(PCIe riser)之類的卡,然後該卡對PCIe總線進行了擴展,讓PCIe總線能夠以連接線的方式擴展出來(目前PCIe的標準能支持的PCIe Gen3的最長連接線只有大概20釐米,兩個系統的連接線一般不止這個,所以需要進行擴展),該連接線連接到Nitro系統的Nitro Controller上,Nitro Controller再和各種類型的Nitro卡(存儲、網絡)連接起來,控制這個擴展出來的PCIe連接線上能夠看到的PCIe資源。這樣,基於Intel主板的系統能夠看到的PCIe外設資源完全可以通過Nitro Controller進行控制。

 

對於支持VMX功能的虛擬化系統而言,虛擬化的損耗主要來源於VM Exit導致CPU退出到root-operation mode,hypervisor對各種VM Exit的原因進行處理。VM Exit主要來源於兩個方面:

對於Nitro Hypervisor而言,虛擬機運行起來後將會很少發生VM Exit,一方面是因為PCI設備都能夠通過基於SR-IOV進行透傳,hypervisor不進行設備模擬,解決了設備模擬,DMA配置和數據拷貝觸發的VM Exit;另外一方面是在中斷傳遞方面,採用了類似論文 A Comprehensive Implementation and Evalution of Direct Interrupt Delivery 介紹的DID (Direct Interrupt Delivery)方式,極大地減少了由於中斷傳輸觸發的VM Exit。

 

DID中斷傳輸方式對是建立在普通的外部中斷和IPI不觸發VM Exit(kvm中,外部中斷基本是會觸發VM Exit的),只有NMI才會觸發VM Exit的基礎上,對各種中斷的傳輸方式進行了一定的改造。

SR-IOV透傳的設備中斷,當Hypervisor調度運行一個vCPU的時候,需修改IOMMU的中斷重映射表,將VF產生的中斷直接傳遞給運行vCPU的CPU。當vCPU退出,hypervisor需再次修改IOMMU的中斷重映射表,讓VF產生的中斷在host看來是NMI以確保VF產生的中斷能夠被Hypervisor看到(中斷傳遞的目標CPU可能在運行其他vCPU,這個時候就需要觸發VM Exit),然後通過軟體注入的方式將該中斷傳遞給目標vCPU。

模擬設備產生的中斷,基本思路是將模擬設備轉化為IPI中斷,原來的IPI由NMI替代,由於Nitro系統中,不再有模擬設備,所以可以跳過該部分。

定時器中斷,也是屬於外部中斷的一種,只是該外部中斷的傳遞不會經過IOMMU的中斷重映射,所以為了確保該中斷能夠傳遞到正確的vCPU上,需要對定時器的配置進行限制。即CPU在運行vCPU的時候,需要確保CPU對應的LAPIC上配置的定時器都是vCPU的,如果不止,需要轉移到其他的CPU上,當CPU不運行vCPU的時候,需要將vCPU相應的定時器轉移到其他CPU上,並且產生的中斷類型修改為NMI。

軟體注入中斷,這種類型的中斷需要轉化為硬體的Self-IPI,這樣vCPU接收到的所有中斷都能夠被硬體LAPIC控制器感受到,在中斷處理完畢後寫EOI(End-of-Interrpt)告知硬體LAPIC控制器中斷已經處理完畢可以繼續處理下一個中斷的時候,就不用觸發VM Exit進行特殊的處理。因為如果硬體LAPIC沒有接收到中斷,而CPU去寫EOI就可能造成LAPIC狀態錯亂。

 

Nitro架構不僅強大(虛擬機的性能在大部分情況下和裸機的性能相差遠小於%),而且特別靈活,不僅可以基於Nitro Hypervisor運行虛擬機,而且可以基於一些常用的Hypervisor(如qemu-kvm,vmware)運行虛擬機,甚至可以直接裸跑作業系統。

下面開始聚焦安全方面:

參考資料

https://aws-de-media.s3.amazonaws.com/images/AWS_Summit_2018/June7/Alexandria/Introducing-Nitro.pdf

http://www.brendangregg.com/blog/2017-11-29/aws-ec2-virtualization-2017.html

https://www.hotchips.org/hc31/HC31_T1_AWS_Nitro_Hot_Chips_20190818-2.pdf

https://www.metricly.com/aws-nitro/

https://cseweb.ucsd.edu/~yiying/cse291j-winter20/reading/Nitro.pdf

https://www.allthingsdistributed.com/2020/09/reinventing-virtualization-with-aws-nitro.html

https://d1.awsstatic.com/events/reinvent/2019/REPEAT_2_Powering_next-gen_Amazon_EC2_Deep_dive_into_the_Nitro_system_CMP303-R2.pdf

https://www.kovarus.com/blog/deep-dive-into-the-aws-nitro-system/

https://www.twosixlabs.com/running-thousands-of-kvm-guests-on-amazons-new-i3-metal-instances/

https://compas.cs.stonybrook.edu/~mferdman/downloads.php/VEE15_Comprehensive_Implementation_and_Evaluation_of_Direct_Interrupt_Delivery.pdf

https://blog.csdn.net/lindahui2008/article/details/109397778

相關焦點

  • SoC之一:AWS Nitro Family
    但是從2009年就開始從事雲計算基礎設施的人,如果沒有到這個網站 https://perspectives.mvdirona.com/上膜拜過,可能有點說不過去了。        對,這種長發男就是大名鼎鼎的James, Hamilton, 職業的生涯的早期在IBM 做DB2資料庫,然後到了MS SQL Server,之後就到了AWS,專注於雲計算相關的基礎設施。
  • AWS算力布局,彪悍!一線閃電報導!
    AWS每年舉辦一次,被稱為全球最有「含金量」的雲計算大會。今年一張門票價格就是1799美金。大家隨意感受下雖然來自世界各地,但是有個共同特徵:人人背著一個電腦雙肩包開會當天,媒體提前入場,看著望不到邊的座位,突然小感慨,「全球幹雲計算的,咋這麼多人?!
  • AWS 的邊界在哪裡?
    注意,以下介紹完全代表個人理解,不一定正確。1.—開啟了無伺服器計算時代在 2014 年的 Re:invent 上,AWS 正式發布了AWS Lambda,全球雲計算領域第一款無伺服器計算服務這個領域已有前輩 WebEx 和新貴 Zoom,構建全球暢通無阻的視頻會議系統是一項比較有挑戰的事情,因為視頻會議系統建設最大的難點其實是全球基礎設施網絡的建設,但這個對於 AWS 來說,簡直就是順手的事情,因此,AWS 還開放了 Chime 是如何基於 AWS 來構建的,對於其他視頻供會議廠商來說,AWS 親自給做了一個真實的生產案例。
  • NitroShare:內網多作業系統間快捷文件共享工具
    現在,雖然有多種方式可以讓在同一網絡中的 Linux 和 Windows 以及 MacOS X 用戶之間共享文件,但這篇文章,我們只打算介紹 NitroShare。這是一款跨平臺、開源[1]以及易於使用的應用軟體,可以在本地網絡(內網)中共享文件。NitroShare 大大簡化了本地網絡的文件共享操作,一旦安裝上,它就會與作業系統無縫集成。
  • nitro pro 9(PDF編輯器)中文版
    而其中最為一提的的,當屬nitro pro 9,這是該系列產品中一款經典,出色的PDF編輯器,該版本類別於其他版本而言有著得天獨厚的優勢所在,首先這款nitro pro 9中界面簡潔直觀,所有的功能一目了然的呈現在用戶眼前。其次,軟體中功能十分強大,它不僅可以為你簡化文檔工作流程,消除不必要的列印,甚至還能最大程度的為你降低成本,以100%的數字方式進行工作,大大的提高了工作當中的諸多效率。
  • AWS執行長Andy Jassy介紹AWS容器生態系統
    在本周拉斯維加斯舉辦的年度Re:Invent[1]用戶會議上,由AWS執行長Andy Jassy對這些服務以及升級進行了介紹。AWS Fargate:當前業界一直在期待某種新的對Kubernetes支持方式時,新推出的AWS Fargate服務給大家帶來了一個驚喜,或者是一種更重要的呈現,根據Jassy的介紹,從企業角度來看,該服務提供了一種直接通過EKS或者AWS自家的Elastic Container Server[2]運行容器的方式,而不需要管理底層服務或者集群。
  • 中國移動展現雲端硬實力 引領「大雲」時代
    在全球數位化轉型浪潮下,中國移動積極引入大數據、雲計算等新技術要素,從開放的雲化基礎架構、敏捷的數位化運營、創新的雲業務等方面進行數位化轉型
  • 微軟雲猛漲 年收入增96%居全球第二大雲供應商
    根據市場調查公司Synergy Research Group在2月2日發布的數據,微軟雲業務在2014年實現了96%的營收增長,佔2014年全球雲計算市場(IaaS、PaaS、私有雲及混合雲服務)10%的份額,成為全球第二大雲供應商。
  • 面向小白的AWS入門介紹
    首先你可以訪問https://aws.amazon.com/cn/getting-started/  觀看AWS 基礎知識的視頻,或者去B站上搜一下看一下。那上面講的非常好,生動又形象,不是我們文字可以比的。所以小編我就不贅述了。(絕對不是懶!)然後申請一個免費的帳號。
  • AWS Marketplace China 產品系列介紹 - Qlik Sense
    在未來的分析和 BI 領域,Gartner 認為,雲生態、增強的功能正成為分析和 BI 平臺的關鍵差異化因素,預測未來,這個領域將呈現如下趨勢:在這樣一個大趨勢之下,Gartner 給予 Qlik 很高的評價,認為 Qlik 憑藉三大特色,一直佔據魔力象限的領導位置:第一,Qlik Sense 是一款強大的分析與BI工具。
  • 別人的宕機時間是AWS的七倍,AWS做了什麼?
    市面上有一些公開的監測數據,比如來自downdetector.com和cloudharmony.com的數據,也有廠商比較自豪說自己宕機時間比同行老夥計時間短的,比如在2018年,亞馬遜雲服務(AWS)表示第二大雲計算公司的宕機時間是AWS的7倍。AWS坐擁全球近一半的雲市場份額,理論上規模越大越容易出錯才對,AWS為了減少宕機時間都做了什麼呢?
  • AWS Marketplace China 產品系列介紹——雲鎖
    要訪問這個控制臺,您可以在登陸後,在網站(https://awsmarketplace.amazonaws.cn/)的右上角您的用戶名的下拉菜單中選擇您的 AWS Marketplace China 軟體選項(https://console.amazonaws.cn/marketplace/home?
  • AWS Nitro:雲主機價格戰終結者
    當然,以上性價比數值都是AWS或者Netflix根據精確的計算算出來的,普通用戶想直觀感受下性價比差異的話,可以參考這一網址(https://aws.amazon.com/ec2/pricing/on-demand/),中國用戶可查看(https://www.amazonaws.cn/en/ec2/pricing/ec2-
  • 全球筆電八大整機代工廠商介紹
    三、主流OEM/ODM廠商下面我們來簡單介紹一下主流OEM/ODM廠商。NO1:廣達官網:www.quantatw.com廣達(Quanta)成立於1988年,是全球最大的IT產品代工廠商之一,包攬了幾乎所有OEM與ODM代工業務,據不完全統計目前全球有至少1/3的筆記本電腦均出自於廣達之手,是名副其實的「幕後英雄」。
  • 什麼,AWS才是最大的存儲公司?
    AWS是全球最大的企業存儲廠商嗎?或者說戴爾才是老大,AWS排第二,微軟排第三,NetApp和華為緊隨其後?這可不是我隨便說的,這是有數據做支撐的結論。結論來自於IT Brand Pulse的發現,為了得出這個結論,這家諮詢公司先是看了AWS和微軟的IaaS營收數據,然後做了兩個大膽的假設:第一,假設存儲營收佔IaaS整體營收的15%。第二,假設存儲營收佔IaaS整體營收的20%。存儲作為非常基礎的服務,各種服務都離不開存儲,我拍大腿估算一下,這一數值並不過分。
  • AWS是全球「最大的企業存儲供應商」?
    然後,IT Brand Pulse將這些估計值與2020年第三季度IDC的全球企業存儲系統跟蹤器數字混在一起。您可以在下表中看到將AWS和Azure包含在內的情況。IT Brand Pulse將帶有AWS和Azure編號的存儲排行榜表添加到了IDC全球季度企業存儲跟蹤器表中。
  • 淺析 AWS S3 子域名接管漏洞
    可以看到,各類廠商都是非常願意為這類漏洞買單的,我個人認為子域名接管漏洞,屬於利用成本低,危害較大的一個漏洞類型。給大家介紹一下今天的主角 AWS S3。Amazon Simple Storage Service (Amazon S3) 是一種對象存儲服務,提供行業領先的可擴展性、數據可用性、安全性和性能[5]。
  • 介紹AWS Graviton Ready計劃,用於支持Graviton的軟體產品
    基於AWS Graviton的實例在全球23個Amazon Web服務(AWS)地區都可用。從初創企業到大型企業(如Intuit、Snap、EPIC Games和Lyft)的數千名客戶正在Amazon EC2中使用基於AWS Graviton的實例實現顯著的性價比。
  • AWS「芯」事:從Nitro「神卡」到ARM伺服器晶片
    雲廠商(超大規模數據中心)是伺服器廠商又愛又恨的客戶,早在幾年前,雲廠商要求定製化伺服器,去掉不用的組件,因為採購規模很大,所以還可以進一步壓價
  • 投影機介紹及其全球知名廠商總匯
    介紹