歡迎光臨
每天分享高質量文章

詳談NVMe和NVMe-oF基礎架構和概念

<NVMe基礎架構和概念詳解>電子書已經上線,可通過點擊文末“閱讀原文”選購或查看詳情。

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可以通過類似RD6MA的技術滿足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到遠程服務器有效地將本地記憶體與遠程服務器共享,使遠程服務器可以直接讀取或寫入本地服務器的記憶體。

 

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

 

最後,談談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協議更加簡單,可以說是取其精華。

 

本文分享就到這裡了,更多NVMe相關知識已梳理成電子書,請通過原文鏈接獲取電子書詳情(以下是電子書目錄介紹)。

 


已同步到看一看
赞(0)

分享創造快樂