原創: Hardy 架構師技術聯盟

一篇最詳盡的NVMe/TCP技術疑問解答

NVMExpress, Inc. 最近宣佈將NVMe over TCP (NVMe/ TCP)添加到NVMe傳輸系列中。NVMe/TCP的加入是VNMe一個非常重要的發展。

作者2019年的首次網絡直播是對新規範的重要優勢和特點的深入探索。如果錯過了直播,可通過以鏈接觀看(https://www.brighttalk.com/webcast/12367/348656)

在網絡直播期間,作者收到了很多來自觀衆的許多引人入勝的問題,由於當時無法全部回答。在這篇博客中,作者計劃回答了所有未解決的NVMe / TCP問題。

1、當NVMe 1.4規範最終確定時,是否應該期待NVMe / TCP的官方文檔?

NVMe/TCP是NVMe-oF的一種傳輸綁定協議實現,因此我們應該期望已批准的技術提議TP 8000被集成到NVMe-oF 1.1發佈的規範文檔中。雖然NVMe董事會尚未公佈正式時間表,但我們預計將在今年晚些時候發佈。

2、主機端需要什麼(硬件,固件,軟件,驅動程序等)來支持TCP上的NVMe?

NVMe/TCP軟件不需要任何特殊的硬件/固件即可運行,儘管不同類別的CPU和網絡適配器可以從更好的性能中受益。當然,爲了運行NVMe/TCP,需要安裝NVMe/TCP主機軟件(Host)和NVM子系統軟件。這些軟件可與Linux Kernel(v5.0)和SPDK(v.19.01)以及商業NVMe/TCP目標設備(Target Device)一起使用。

3、一個主機在運行時可以擁有的命名空間數量是否有任何限制?主機端需要什麼資源(CPU核心,內存,端口)?

NVMe/TCP不對NVMe架構的基本功能施加任何限制,因爲它是NVMe-oF傳輸層的協議綁定。因此,NVMe/TCP可以支持的命名空間數量沒有限制。從傳輸的角度來看,命名空間是一個純粹的邏輯概念,沒有分配任何主機資源。

4、對於直接連接的NVMe SSD來說,NVMe/TCP會增加延遲嗎?

僅通過NVMe/TCP可能不會直接增加NVMe的時延,特定的控制器實現可能通過特殊的升級規避時延。

5、哪個操作系統內核支持NVMe/TCP?

Linux Kernel版本5.0和以上版本支持NVMe/TCP。

6、在基於數據平面的網絡堆棧(如DPDK)上運行NVMe /TCP時,是否會存在顯著的性能差異?

如果運行控制器的平臺具有足夠的功能,在通用Linux網絡堆棧之上運行NVMe/TCP預計不會出現根本性的差異。但是,如果控制器沒有足夠的CPU專用於運行Linux網絡堆棧。例如,如果它有一些其他操作需要CPU處理,那麼基於DPDK的解決方案可能會因效率提高而獲得更好的性能。

7、是否建議使用Data Center TCP來運行NVMe/TCP工作負載?

一般來說,Data Center TCP有可能比其他TCP具有更好的擁塞控制算法。通常,無論NVMe/TCP如何,它在網絡流量控制上都是有優勢的。問題是,如果在DC網絡和現代TCP/IP堆棧中發生模式擁塞,他們是否有其他機制來有效地處理擁塞?

8、NVMe/TCP有多個R2T嗎?這些與FCP中的緩衝區相比如何?

理論上,控制器可以將多個輕量R2T PDU發送到主機以獲取特定命令。但是,主機有最大值(MAXR2T)限制。R2T PDU具有與FC中的FCPBBC等效的信用機制,但是它在NVMe命令級別而不是FC端口級別上運行。

9、如何管理流量,是僅使用R2T和標準TCP擁塞窗口嗎?

是的,端到端流流控制由TCP/IP處理,NVMe傳輸級流控制通過R2T信用機制進行管理。

10、在SQ中,多個未完成請求是否受到PDU排序約束?

沒有約束,對應於不同NVMe命令的PDU沒有定義排序規則。

11、在NVMe/TCP中,如何管理修補和升級?是非破壞性的嗎?

在大型環境中如何使用NVMe/TCP的回滾流程?建議諮詢供應商詢問具體解決方案,NVMe/TCP協議本身沒有強制要求或禁止此類操作要求。

12、是否有可用的NVMe/TCP開源項目實現?

有的,Linux和SPDK都包含NVMe/TCP的目標實現。

13、iSCSI中是否存在等效的NVMe/TCP實現?

iSCSI中沒有NVMe/TCP的等效實現,但有許多等效概念。NVMe/TCP和iSCSI在某種意義上是等效的,即iSCSI是通過TCP/IP運行的SCSI傳輸,而NVMe/TCP是通過TCP/IP運行的NVMe傳輸。

14、在性能(帶寬,IOPS,延遲等)上,NVMe/TCP如何與NVMe/FC進行比較?

筆者尚未測試任何NVMe/FC產品或開源實現,也未看見過任何類似NVMe/FC性能基準測試,但是,相比接連接的NVMe,NVMe/TCP如何與NVMe/FC兩者都會有相對較小的下降。

15、目前有NVMe/RoCE與NVME/TCP的CPU利用率數據嗎?

沒有官方數據,但是,NVMe/TCP軟件需要比NVMe/RDMA更多的CPU資源,因爲NVMe/RDMA會卸載部分傳輸協議到硬件中。此外,這還取決於工作負載和網絡適配器實現的無狀態卸載的效果。

16、相比NVMe/RDMA,使用NVMe/TCP有哪些優缺點?是否存在性能差異?

NVMe/TCP只是一種傳輸綁定,可提供商用硬件優勢和良好的可擴展性,無需修改網絡基礎架構即可支持RDMA(例如,使以太網無損)。NVMe/RDMA可以具有較低延遲,較低的CPU利用率(具體取決於實現和無狀態卸載效果)。在決定投資時,應該綜合權衡性能差異,成本,規模等因素。

17、NVMe/TCP與NVMe/RDMA相比有何不同?可否在同一個以太網100Gb/s網絡上組合這兩種流量?

首先,NVMe/TCP與NVMe/RDMA不同,因爲它是在TCP/IP上運行NVMe-oF封裝數據;而NVMe/RDMA是通過RoCE(InfiniBand over UDP)或iWARP(TCP與DDP和MPA)運行NVMe-oF封裝和數據。

當然,NVMe/TCP和NVMe/RDMA都通過以太網運行,因此它們可以在相同的以太網100Gb/s網絡上運行。

18、在數據中心/私有云內,跨地理分佈式數據中心/私有云以太網交換機上,NVMe PDU最大可容忍延遲是多少?

NVMe/TCP沒有指定的最大延遲,實際上,網絡延遲不是問題,NVMe Keep Alive Timeout默認值爲兩分鐘。

總結:NVMe/TCP傳輸綁定規範目前已公開下載,TCP是添加到現有NVMe傳輸系列中的新傳輸協議(除了PCIe、RDMA和FC)。NVMe/TCP定義了NVMe隊列,NVMe-oF封裝和IETF傳輸控制協議(TCP)上的數據傳輸的映射。NVMe/TCP傳輸提供可選的增強功能,如內聯數據完整性(DIGEST)和在線傳輸層安全性(TLS)等。

NVMe/TCP令人興奮的是它可以在NVMe-oF主機和NVMe-oF控制器設備之間實現高效的端到端NVMe操作,這些設備通只需過任何標準IP網絡互連,具有出色的性能和延遲特性。這使得大規模數據中心能夠利用其現有的以太網基礎設施,多層交換機拓撲和傳統的以太網網絡適配器。

在軟件方面,NVMe/TCP主機和控制器設備驅動程序也可在Linux內核和SPDK環境中直接採用,這兩種NVMe/TCP實現均旨在無縫將其插入其現有的NVMe和NVMe-oF軟件堆棧。

一篇最詳盡的NVMe/TCP技術疑問解答

推薦閱讀:

  • 詳談NVMe和NVMe-oF架構和知識點
  • NVMe Over Fabrics架構概述

    參考鏈接:

    https://nvmexpress.org/answering-your-questions-nvme-tcp-what-you-need-to-know-about-the-specification-webcast-qa/

  • 相關文章