當前位置:
首頁 > 科技 > NVMe over Fabric誕生記——RDMA篇

NVMe over Fabric誕生記——RDMA篇

公元2016年6月8日,伴隨著眾多粉絲的期待,這部耗資1.6億美元,改編自《魔獸爭霸:人類與獸人》遊戲,擁有眾多英雄人物史詩般的IMAX 3D電影在中國大陸上映。《魔獸》電影展現了兩個各自安詳的世界艾澤拉斯與德拉諾本在黑暗之門的作用下,兩個世界聯繫在了一起,而文明的碰撞和衝擊帶來了新的秩序。

兩天後,存儲界的黑暗之門也正式開啟:當地時間6月9日,NVM Express公司宣布發布NVM Express over Fabrics協議。對於眾多的Fabric廠商和存儲廠商來說,這必然是一次嶄新的較量。

計算、存儲、網路是現代企業IT硬體基礎架構的核心。基於Flash和新一代PCM固態存儲的SSD正在極大的改變企業存儲的格局。可以說NVMe就是針對新型的Nonvolatile memory而量身定製的。對於今天的應用來說,基於NVMe協議的SSD可以提供對性能、延遲、IO協議棧開銷的完美優化。

而對於計算和網路來說,如何能夠適應這種存儲上的變化,則是在NVMe協議逐漸走向成熟後需要解決的一個核心問題。一個簡單的例子就是今天隨便一個SSD高達幾十萬IOPS的隨機讀寫性能對於今天的單機應用來說簡直是過於浪費了。同時,固態存儲也帶來了客觀上高密存儲的可能性。今天的基於2.5英寸 U.2介面的NVMe SSD可以輕易做到10TB以上的容量。如果一個伺服器接入8個這樣的SSD,可以實現80TB的存儲容量。

解決這樣問題的關鍵,則是通過共享機制,並將存儲容量池化在多個計算節點間共享使用。顯然,這與存儲的虛擬化和雲化以及軟體定義存儲的方向是吻合的。從更廣泛的意義上來說,公有雲和私有雲正式通過了高度的共享和靈活的配置來實現成本節約,可靠性提升和便利管理。

從下面的Wikibon ServerSAN Research Project報告結果來看,基於DAS和傳統的SAN,NAS的市場正在被超大規模企業雲和企業Server SAN存儲方式逐漸取代。而決定這種替換的速度,則是來源於新技術的可行性以及企業對於採納這些新技術的接受程度。

NVMe over Fabrics把NVMe協議在單系統時代提供的高性能、低延遲和低協議負擔的優勢進一步發揮到了NVMe存儲系統互連結構中。在這種結構里,基於NVMe over Fabrics的主機可以通過互連結構訪問到任何一個數據中心的存儲節點,而這種訪問是具有同樣高性能、低延遲和低協議負擔的優勢。

更加難能可貴的是,NVMe over Fabrics協議是構造在其他的傳輸層協議基礎之上的,因此可以使用原來的傳輸層協議配合NVMe over Fabrics的協議實現這些優勢,並不需要摒棄數據中心已經建設好的硬體環境。

在NVMe over Fabrics協議誕生之前,基於SCSI的眾多互聯協議已經在考慮如何改善系統性能並降低CPU的負擔了。iSCSI協議提供了基於IP乙太網的SCSI互聯協議,它僅僅依賴傳統的IP網路,提供了可共享的存儲方式。

由於iSCSI依賴於TCP協議,並且TCP協議本身代價較大,因此它的性能在通常的配置下並不好。為了優化iSCSI的性能,擴展了iSCSI Extensions for RDMA (iSER)。iSER是面向各種RDMA傳輸層協議的存儲協議,由於RDMA效率很高,iSER相比於iSCSI協議來說具有非常好的性能、極低的延遲和CPU使用率。

但是由於iSER仍然是基於SCSI這個存儲協議進行擴展的,因此在協議棧的組織上仍然受限於SCSI協議的限制,例如隊列的數量、深度等。在性能達到幾十萬IOPS的時候仍然會有較大的協議開銷。基於上述原因和出於對未來NVM存儲功能要求的需要,NVMe over Fabrics協議應運而生。

NVMe over Fabrics協議定義了使用各種通用的傳輸層協議來實現NVMe功能的方式。在協議中所指的傳輸層包括了RDMA,Fiber Channel,PCIe Fabrics等實現方式。依據具體的傳輸層不同,又有不同的傳輸層綁定協議去具體規範每一種互聯網路所具體需要實現的傳輸轉換層實現。例如,INCITS 540 Fibre Channel – Non-Volatile Memory Express (FC-NVMe)規定了對於FiberChannel這種媒體所支持NVMe over Fabrics所必需實現的介面方式。

由於NVMe over Fabrics協議的這種靈活性,它可以非常方便地生長在各個主流的傳輸層協議中。不過由於不同的互聯協議本身的特點不同,因此基於各種協議的NVMe over Fabrics的具體實現活躍都是不同的。一些協議本身的協議開銷較大,另一些需要專用的硬體網路設備,客觀上限制了NVMe over Fabrics協議在其中的推廣。下表列出了一些典型的協議的優缺點。

雖然有著眾多可以選擇的互聯方式,這些互聯方式按照介面類型可分成三類:內存型介面,消息型介面和消息內存混合型介面。相應的互聯類型和例子參見下圖。

在這些眾多的傳輸層協議中,重點介紹一下RDMA。RDMA是一項古老的技術。它通過互聯網路把數據直接傳入某台計算機的一塊存儲區域,不需用到多少計算機的處理功能。

普通網卡集成了支持硬體校驗和的功能,並對軟體進行了改進,從而減少了發送數據的複製量,但無法減少接收數據的複製量,而這部分複製量要佔用處理器的大量計算周期。為充分發揮萬兆位乙太網的性能優勢,必須消除主機CPU中不必要的頻繁數據傳輸,減少系統間的信息延遲。

從下面的圖中看出,RDMA通過網路把數據直接傳入計算機的存儲區,降低了CPU的處理工作量。當一個應用執行RDMA讀或寫請求時,不執行任何數據複製。在不需要任何內核內存參與的條件下,RDMA請求從運行在用戶空間中的應用中發送到本地NIC(網卡),然後經過網路傳送到遠程NIC。

RDMA對於NVMe over Fabrics協議的便利性體現在下面幾個方面:

提供了低延遲、低抖動和低CPU使用率的傳輸層協議;

最大限度利用硬體加速,避免軟體協議棧的開銷;

依賴於開放互聯聯盟組織維護的Verbs和代碼庫,RDMA定義了豐富的可非同步訪問的介面機制,這對於提高IO性能是至關重要的。

RDMA依據底層的不同,可進一步分成InfiniBand,RoCE和iWarp。它們的區別主要是底層實現協議的不同。其中InfiniBand需要依賴於專用的InfiniBand網路,因此可以提供非常好的服務質量,而RoCE和iWarp則可以基於乙太網絡,並使用專用的RDMA NIC和Switch來實現高服務質量。

RoCE的兩個版本中,v2依賴於UDP/IP協議提供了在區域網中靈活的路由和擁塞控制功能;iWarp則是基於TCP協議提供了更加靈活的網路互聯方式。

在各種RDMA中,定義了硬體操作的基本原語。在軟體層面,需要執行RDMA操作的命令按照硬體制定的方式組織成命令請求項,並添加到位於內存中的工作隊列中。

硬體再依次從這些隊列中取出命令開始執行;命令的執行結果會記錄到一個完成隊列中,這個完成隊列也是處於內存中的,因此可以為軟體層面感知到並進行後續處理。

由於RDMA底層實現可以使用任意一中介面方式實現詳盡的功能,在每種協議背後又有眾多的廠商支持,為了統一應用介面,便於軟體開發人員理解和使用RDMA,每種RDMA協議定義了Verbs用於非同步操作實現RDMA的語義。Verbs是一種比API更加底層的編程方式,根據使用方式的不同,可分為兩類:

控制路徑Verbs,用於管理RDMA的資源,通常需要上下文切換。例如Create,Destroy,Modify,Query,Work with events;

數據路徑Verbs,用於使用Handle來發送、接收數據的操作,不需要上下文切換。例如Post Send,Post Receive,Poll CQ,Request for completion event;

對於RDMA至關重要的遠端內存空間,在RDMA協議中是通過內存區域(MR)來進行描述。定義內存區域實際上就是把這個虛擬內存鎖定到物理內存中,並告訴NIC對應的關係。這樣,依據MR的Key,NIC硬體可以不依賴硬體去操作數據在本地內存和遠端的MR之間進行傳輸。

從上面關於RDMA的介紹來看,RDMA設計初衷就是為了高性能、低延遲訪問遠端節點的,並且它的語義非常類似本地DMA的過程,因此很自然就可以將RDMA作為NVMe協議的載體,實現基於網路的NVMe協議。

但是,畢竟基於網路的傳輸模型與本地的PCIe傳輸模型還有種種差異,因此將NVMe協議拓展到互聯層面需要解決一系列問題。因此,綜合RDMA,FC等等各種不同傳輸層協議的特點,NVM Express Inc.提出了NVMe over Fabrics協議實現了一個完整的網路高效存儲協議。

需要注意的是,NVMe over Fabrics協議的基礎是NVMe Base specification,目前特指的版本是NVM Express revision 1.2.1。在下篇文章中將對NVMe over Fabrics要解決的問題及協議規範下IO的傳輸過程等話題進行詳細介紹。

溫馨提示:


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 架構師技術聯盟 的精彩文章:

POE交換機應用技術知識大全
獨家揭秘:阿里大規模數據中心的性能分析

TAG:架構師技術聯盟 |