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

詳談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)

分享創造快樂