當前位置:
首頁 > 科技 > 談談關於NVMe和NVMe-oF的那些事

談談關於NVMe和NVMe-oF的那些事

NVMe傳輸是一種抽象協議層,旨在提供可靠的NVMe命令和數據傳輸。為了支持數據中心的網路存儲,通過NVMe over Fabric實現NVMe標準在PCIe匯流排上的擴展,以此來挑戰SCSI在SAN中的統治地位。NVMe over Fabric支持把NVMe映射到多個Fabrics傳輸選項,主要包括FC、InfiniBand、RoCE v2、iWARP和TCP

然而,在這些Fabrics選項協議中,我們常常認為InfiniBand、RoCE v2(可路由的RoCE)、iWARP是理想的Fabric,其原因在於它們支持RDMA

InfiniBand(IB):從一開始就支持RDMA的新一代網路協議。由於這是一種新的網路技術,因此需要支持該技術的網卡和交換機。

RDMA融合乙太網(RoCE):一種允許通過乙太網進行RDMA的網路協議。其較低的網路頭是乙太網頭,其上網路頭(包括數據)是InfiniBand頭。這允許在標準乙太網基礎架構(交換機)上使用RDMA。只有NIC應該是特殊的,並支持RoCE。

互聯網廣域RDMA協議(iWARP):允許通過TCP執行RDMA的網路協議。在IB和RoCE中存在功能,iWARP不支持這些功能。這允許在標準乙太網基礎架構(交換機)上使用RDMA。只有NIC應該是特殊的,並支持iWARP(如果使用CPU卸載),否則所有iWARP堆棧都可以在SW中實現,並且丟失了大部分的RDMA性能優勢。

那麼為什麼支持RDMA在選擇NVMe over Fabric時就具有先天優勢?這要從RDMA的功能和優勢說起。

RDMA是一種新的內存訪問技術,RDMA讓計算機可以直接存取其他計算機的內存,而不需要經過處理器耗時的處理。RDMA將數據從一個系統快速移動到遠程系統存儲器中,而不對操作系統造成任何影響。RDMA技術的原理及其與TCP/IP架構的對比如下圖所示。

因此,RDMA可以簡單理解為利用相關的硬體和網路技術,伺服器1的網卡可以直接讀寫伺服器2的內存,最終達到高帶寬、低延遲和低資源利用率的效果。如下圖所示,應用程序不需要參與數據傳輸過程,只需要指定內存讀寫地址,開啟傳輸並等待傳輸完成即可。RDMA的主要優勢總結如下:

1)Zero-Copy:數據不需要在網路協議棧的各個層之間來回拷貝,這縮短了數據流路徑。

2)Kernel-Bypass:應用直接操作設備介面,不再經過系統調用切換到內核態,沒有內核切換開銷。

3)None-CPU:數據傳輸無須CPU參與,完全由網卡搞定,無需再做發包收包中斷處理,不耗費CPU資源。

這麼多優勢總結起來就是提高處理效率,減低時延。那如果其他網路Fabric可以通過類似RDMA的技術滿足NVMe over Fabric的效率和時延等要求,是否也可以作為NVMe overFabric的Fabric呢?下面再看看NVMe-oF和NVMe的區別。

NVMe-oF和NVMe之間的主要區別是傳輸命令的機制。NVMe通過外圍組件互連Express(PCIe)介面協議將請求和響應映射到主機中的共享內存。NVMe-oF使用基於消息的模型通過網路在主機和目標存儲設備之間發送請求和響應。

NVMe-oF替代PCIe來擴展NVMe主機和NVMe存儲子系統進行通信的距離。與使用本地主機的PCIe匯流排的NVMe存儲設備的延遲相比,NVMe-oF的最初設計目標是在通過合適的網路結構連接的NVMe主機和NVMe存儲目標之間添加不超過10微秒的延遲。

此外,在技術細節和工作機制上兩者有很大不同,NVMe-oF是在NVMe(NVMe over PCIe)的基礎上擴展和完善起來的,具體差異點如下:

命名機制在兼容NVMe over PCIe的基礎上做了擴展,例如:引入了SUBNQN等。

術語上的變化,使用Capsule、Response Capsule來表示傳輸的報文

擴展了Scatter Gather Lists (SGLs)支持In Capsule Data傳輸。此前NVMe over PCIe中的SGL不支持In Capsule Data傳輸。

增加了Discovery和Connect機制,用於發現和連接拓撲結構中的NVM Subsystem

在Connection機制中增加了創建Queue的機制,刪除了NVMe over PCIe中的創建和刪除Queue的命令。

在NVMe-oF中不存在PCIe架構下的中斷機制。

NVMe-oF不支持CQ的流控,所以每個隊列的OutStanding Capsule數量不能大於對應CQ的Entry的數量,從而避免CQ被OverRun

NVMe-oF僅支持SGL,NVMe over PCIe 支持SGL/PRP

先談談博科一直推崇的FC Fabric,FC-NVMe將NVMe命令集簡化為基本的FCP指令。由於光纖通道專為存儲流量而設計,因此系統中內置了諸如發現,管理和設備端到端驗證等功能。

光纖通道是面向NVMe overFabrics(NVMe-oF)的Fabric傳輸選項,由NVMExpress Inc.(一家擁有100多家成員技術公司的非營利組織)開發的規範。其他NVMe傳輸選項包括乙太網和InfiniBand上的遠程直接內存訪問(RDMA)。NVM Express Inc.於2016年6月5日發布了1.0版NVMe-oF。

國際信息技術標準委員會(INCITS)的T11委員會定義了一種幀格式和映射協議,將NVMe-oF應用到光纖通道。T11委員會於2017年8月完成了FC-NVMe標準的第一版,並將其提交給INCITS出版。

FC協議(FCP)允許上層傳輸協議,如NVMe,小型計算機系統介面(SCSI)和IBM專有光纖連接(FICON)的映射,以實現主機和外圍目標存儲設備或系統之間的數據和命令傳輸。

在大規模基於塊快閃記憶體的存儲環境最有可能採用NVMeover FC。FC-NVMe光纖通道提供NVMe-oF結構、可預測性和可靠性特性等與給SCSI提供的相同,另外,NVMe-oF流量和傳統的基於SCSI的流量可以在同一FC結構上同時運行。

基於FC標準的NVMe定義了FC-NVMe協議層。NVMe over Fabrics規範定義了NVMe-oF協議層。NVMe規範定義了NVMe主機軟體和NVM子系統協議層。

要求必須支持基於光纖通道的NVMe才能發揮潛在優勢的基礎架構組件,包括存儲操作系統(OS)和網路適配器卡。FC存儲系統供應商必須讓其產品符合FC-NVMe的要求。目前支持FC-NVMe的主機匯流排適配器(HBA)的供應商包括Broadcom和Cavium。Broadcom和思科是主要的FC交換機供應商,目前博科的Gen 6代FC交換機已經支持NVMe-oF協議。

NVMe over fabric白皮書明確列出了光纖通道作為一個NVMeover Fabrics選擇,也描述了理想的Fabrics需要具備可靠的、以Credit為基礎的流量控制和交付機制。然而,基於Credit的流程式控制制機制是FC、PCIe傳輸原生能力。在NVMe的白皮書中並沒有把RDMA列為「理想」NVMe overFabric的重要屬性,也就是說RDMA除了只是一種實現NVMeFabric的方法外,沒有什麼特別的。

FC也提供零拷貝(Zero-Copy)技術支持DMA數據傳輸。RDMA通過從本地伺服器傳遞Scatter-Gather List到遠程伺服器有效地將本地內存與遠程伺服器共享,使遠程伺服器可以直接讀取或寫入本地伺服器的內存。更多關於NVMe over FC的內容,請參考「基於FC的NVMe或FC-NVMe標準」和「Brocade為何認為FC是最好的Fabric」。

接下來,談談基於RDMA技術實現NVMe over fabric的Fabric技術,RDMA技術最早出現在Infiniband網路,用於HPC高性能計算集群的互聯。基於InfiniBand的NVMe傾向於吸引需要極高帶寬和低延遲的高性能計算工作負載。InfiniBand網路通常用於後端存儲系統內的通信,而不是主機到存儲器的通信。與FC一樣,InfiniBand是一個需要特殊硬體的無損網路,它具有諸如流量和擁塞控制以及服務質量(QoS)等優點。但與FC不同的是,InfiniBand缺少發現服務自動將節點添加到結構中。關於更多RDMA知識,請讀者參考文章「RDMA技術原理分析、主流實現對比和解析」。

最後,談談NVMe/TCP協議選項(暫記為NVMe over TCP),在幾年前,NVMe Express組織計劃支持傳輸控制協議(TCP)的傳輸選項(不同於基於TCP的iWARP)。近日NVM Express Inc.歷時16個月發布了NVMe over TCP第一個版本。該Fabric標準的出現已經回答了是否滿足承載NVMe協議標準的Fabric即可作為NVMe over fabric的Fabric的問題。

但是TCP 協議會帶來遠高於本地PCIe訪問的網路延遲,使得NVMe協議低延遲的目標遭到破壞。在沒有採用RDMA技術的前提下,NVMe/TCP是採用什麼技術達到類似RDMA技術的傳輸效果呢?下面引用楊子夜(Intel存儲軟體工程師)觀點,談談促使了NVMe/TCP的誕生幾個技術原因:

1. NVMe虛擬化的出現:在NVMe虛擬化實現的前提下,NVMe-oF target那端並不一定需要真實的NVMe 設備,可以是由分散式系統抽象虛擬出來的一個虛擬NVMe 設備,為此未必繼承了物理NVMe設備的高性能的屬性 。那麼在這一前提下,使用低速的TCP協議也未嘗不可。

2. 向後兼容性:NVMe-oF協議,在某種程度上希望替換掉iSCSI 協議(iSCSI最初的協議是RFC3720,有很多擴展)。iSCSI協議只可以在乙太網上運行,對於網卡沒有太多需求,並不需要網卡一定支持RDMA。當然如果能支持RDMA, 則可以使用iSER協議,進行數據傳輸的CPU 資源卸載。 但是NVMe-oF協議一開始沒有TCP的支持。於是當用戶從iSCSI向NVMe-oF 轉型的時候,很多已有的網路設備無法使用。這樣會導致NVMe-oF協議的接受度下降。在用戶不以性能為首要考量的前提下,顯然已有NVMe-oF協議對硬體的要求,會給客戶的轉型造成障礙,使得用戶數據中心的更新換代不能順滑地進行。

3. TCP OffLoading:雖然TCP協議在很大程度上會降低性能,但是TCP也可以使用OffLoading,或者使用Smart NIC或者FPGA。那麼潛在的性能損失可得到一定的彌補。總的來說短期有性能損失,長期來講協議對硬體的要求降低,性能可以改進。為此總的來講,接受度會得到提升。

4. 相比Software RoCE:在沒有TCP Transport的時候,用戶在不具備RDMA網卡設備的時候。如果要進行NVMe-oF的測試,需要通過Software RoCE,把網路設備模擬成一個具有RDMA功能的設備,然後進行相應的測試。其真實實現是通過內核的相應模塊,實際UDP 包來封裝模擬RDMA協議。有了TCP transport協議,則沒有這麼複雜,用戶可以採用更可靠的TCP協議來進行NVMe-oF的一些相關測試。 從測試部署來講更加簡單有效。

NVMe/TCP(NVMe over TCP)的協議,在一定程度上借鑒了iSCSI的協議,例如iSCSI數據讀寫的傳輸協議。這個不太意外,因為有些協議的指定參與者,也是iSCSI協議的指定參與者。另外iSCSI協議的某些部分確實寫得很好。 但是NVMe/TCP相比iSCSI協議更加簡單,可以說是取其精華。


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

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


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

一篇漫畫,看懂晶元咋就這麼難造?
機櫃伺服器如何選擇,有哪些學問?

TAG:架構師技術聯盟 |