本文簡單描述了InfiniBand 和遠(yuǎn)程直接訪問(RDMA)是什么,以及在實(shí)踐中如何配置InfiniBand網(wǎng)絡(luò)硬件。另外,本文檔解釋了如何配置與 InfiniBand 相關(guān)的服務(wù)。
01InfiniBand 和 RDMA 介紹
InfiniBand代表兩個(gè)不同的因素:
1、InfiniBand網(wǎng)絡(luò)的物理鏈路協(xié)議
2、InfiniBand Verbs API,這是RDMA(remote direct memory access)技術(shù)的一個(gè)實(shí)現(xiàn)。
RDMA 可在不涉及計(jì)算機(jī)操作系統(tǒng)的情況下,從一個(gè)計(jì)算機(jī)訪問另一臺計(jì)算機(jī)的內(nèi)存。此技術(shù)啟用了高吞 吐量和低延遲聯(lián)網(wǎng),且 CPU 使用率較低。 在典型的 IP 數(shù)據(jù)傳輸中,當(dāng)機(jī)器中的某個(gè)應(yīng)用程序向另一臺機(jī)器上的應(yīng)用程序發(fā)送數(shù)據(jù)時(shí),在接收層時(shí)會出現(xiàn)以下情況:
1、內(nèi)核必須接收數(shù)據(jù)。
2、內(nèi)核必須確定該數(shù)據(jù)是否屬于該應(yīng)用程序。
3、內(nèi)核喚醒應(yīng)用程序。
4、內(nèi)核會等待應(yīng)用程序執(zhí)行系統(tǒng)調(diào)用到內(nèi)核。
5、應(yīng)用程序?qū)?nèi)核本身的內(nèi)部內(nèi)存空間數(shù)據(jù)復(fù)制到應(yīng)用程序提供的緩沖中。
這個(gè)過程意味著,如果主機(jī)適配器使用直接內(nèi)存訪問(DMA),或者至少兩次,則大多數(shù)網(wǎng)絡(luò)流量會被復(fù)制 到系統(tǒng)的主內(nèi)存中。另外,計(jì)算機(jī)執(zhí)行很多上下文開關(guān)以在內(nèi)核和應(yīng)用程序上下文間進(jìn)行切換。這些上下 文切換都可能造成高流量率的 CPU 負(fù)載,并可能造成其他任務(wù)的性能下降。 RDMA 通訊會繞過內(nèi)核在溝通過程中的干預(yù),這和普通的 IP 通訊不同這可減少 CPU 開銷。RDMA 協(xié)議 讓主機(jī)適配器知道數(shù)據(jù)包何時(shí)來自網(wǎng)絡(luò),應(yīng)用程序應(yīng)該接收它,并在應(yīng)用程序的內(nèi)存空間中保存數(shù)據(jù)包。對于 InfiniBand,主機(jī)適配器不將數(shù)據(jù)包發(fā)送到內(nèi)核,然后將其復(fù)制到用戶應(yīng)用程序的內(nèi)存中,而是,主機(jī)適 配器將數(shù)據(jù)包的內(nèi)容直接放置在應(yīng)用程序的緩沖中。此過程需要單獨(dú)的 API、InfiniBand Verbs API,應(yīng)用 程序必須支持這個(gè)API才能使用 RDMA。 Red Hat Linux同時(shí)支持 InfiniBand 硬件和 InfiniBand Verbs API。另外,Red Hat Enterprise Linux 支持以下技術(shù),以便在非 InfiniBand 硬件中使用 InfiniBand Verbs API:
互聯(lián)網(wǎng)廣域 RDMA 協(xié)議(iWARP):通過 IP 網(wǎng)絡(luò)實(shí)施 RDMA 的網(wǎng)絡(luò)協(xié)議。
RDMA over Converged Ethernet(RoCE),也稱為以太網(wǎng)的 InfiniBand(IBoE):通過以太網(wǎng)實(shí)現(xiàn) RDMA 的網(wǎng)絡(luò)協(xié)議。
02配置 ROCE
比如 Mellanox、Broadcom 和 QLogic 都提供 RoCE 硬件。 RoCE 是一種網(wǎng)絡(luò)協(xié)議,可實(shí)現(xiàn)通過以太網(wǎng)的遠(yuǎn)程直接訪問(RDMA)。以下是不同的 RoCE 版本:
RoCE v1
RoCE 版本 1 協(xié)議是帶有 ethertype 0x8915 的以太網(wǎng)鏈路層協(xié)議,它允許同一以太網(wǎng)廣播域中任何兩個(gè)主機(jī)之間進(jìn)行通信。 默認(rèn)情況下,在使用 Mellanox ConnectX-3 網(wǎng)絡(luò)適配器時(shí),Red Hat Enterprise Linux 使用 RoCE v1 作為 RDMA 連接管理器(RDMA_CM)。
RoCE v2
RoCE 版本 2 協(xié)議在 IPv4 或 IPv6 協(xié)議的 UDP 上存在。RoCE v2 保留 UDP 目標(biāo)端口號 4791。默認(rèn)情況下,在使用 Mellanox ConnectX-3 Pro、ConnectX-4 Lx 或 ConnectX-5 網(wǎng)絡(luò)適配器時(shí),Red Hat Enterprise Linux將RoCE v2 用于 RDMA_CM,但硬件支持 RoCE v1 和 RoCE v2。 RDMA_CM 設(shè)置客戶端和服務(wù)器之間用來傳輸數(shù)據(jù)的可靠連接。RDMA_CM 為建立連接提供了一個(gè)與 RDMA 傳輸相關(guān)的接口。該通信使用特定的 RDMA 設(shè)備,數(shù)據(jù)傳輸是基于消息的。 在客戶端使用 RoCE v2,在服務(wù)器使用 RoCE v1 不被支持。在這種情況下,將服務(wù)器和客戶端都配置為通過 RoCE v1 進(jìn)行通信。 不支持在客戶端和服務(wù)器上的 RoCE v1 使用 RoCE v2 協(xié)議。如果您的服務(wù)器中硬件只支持 RoCE v1,請將 您的客戶端配置為使用 RoCE v1 與服務(wù)器通信。這部分論述了如何在將 mlx5_0驅(qū)動(dòng)程序用于 Mellanox ConnectX-5 Infiniband 設(shè)備的客戶端上強(qiáng)制實(shí)施 RoCE v1。 Soft-RoCE 是 RDMA over Ethernet 的一個(gè)軟件實(shí)現(xiàn),它也稱為 RXE。在沒有 RoCE 主機(jī)頻道適配器(HCA)的主機(jī)上使用 Soft-RoCE。 Soft-RoCE 功能僅作為技術(shù)預(yù)覽提供。紅帽產(chǎn)品服務(wù)級別協(xié)議(SLA)不支持技術(shù)預(yù)覽功 能,且其功能可能并不完善,因此紅帽不建議在生產(chǎn)環(huán)境中使用它們。
03配置核心RDMA子系統(tǒng)
默認(rèn)情況下,內(nèi)核命名 IP over InfiniBand(IPoIB)設(shè)備,如 ib0,ib1 等。為避免沖突,紅帽建議在 udev 設(shè) 備管理器中創(chuàng)建一條規(guī)則來創(chuàng)建持久且有意義的名稱,如 mlx4_ib0。 RDMA 操作需要固定物理內(nèi)存。這意味著內(nèi)核不允許把內(nèi)存寫入到 swap 空間中。如果用戶固定太多內(nèi) 存,系統(tǒng)會耗盡內(nèi)存,并且內(nèi)核會終止進(jìn)程來釋放更多內(nèi)存。因此,內(nèi)存固定是一個(gè)特權(quán)操作。如果非 root 用戶運(yùn)行大型 RDMA 應(yīng)用程序,則可能需要增加這些用戶可在系統(tǒng)中的內(nèi)存量。這部分論述 了如何為 rdma 組配置無限內(nèi)存。 配置RDMA服務(wù),rdma 服務(wù)在內(nèi)核中管理RDMA堆棧。如果Red Hat Enterprise Linux 檢測到 InfiniBand、iWARP 或 RoCE 設(shè)備,udev 設(shè)備管理器會指示 systemd 啟動(dòng) rdma 服務(wù)。
04配置InfiniBand子網(wǎng)管理器
所有 InfiniBand 網(wǎng)絡(luò)都必須運(yùn)行子網(wǎng)管理器才能正常工作。即使兩臺機(jī)器沒有使用交換機(jī)直接進(jìn)行連接, 也是如此。有可能有一個(gè)以上的子網(wǎng)管理器。在那種情況下,當(dāng)主子網(wǎng)管理器出現(xiàn)故障時(shí),另外一個(gè)作為從網(wǎng)管理器 的系統(tǒng)會接管。大多數(shù) InfiniBand 交換機(jī)都包含一個(gè)嵌入式子網(wǎng)管理器。 但是,如果您需要一個(gè)更新的子網(wǎng)管理器,需使用 Red Hat Enterprise Linux 提供的 OpenSM 子網(wǎng)管理器。
05配置 IPOIB
默認(rèn)情況下,InfiniBand 不使用 IP 進(jìn)行通信。但是,IP over InfiniBand(IPoIB)在 InfiniBand 遠(yuǎn)程直接訪問(RDMA)網(wǎng)絡(luò)之上提供一個(gè) IP 網(wǎng)絡(luò)模擬層。這允許現(xiàn)有未經(jīng)修改的應(yīng)用程序通過 InfiniBand 網(wǎng)絡(luò)傳輸數(shù) 據(jù),但性能低于應(yīng)用程序原生使用 RDMA 時(shí)的數(shù)據(jù)。 互聯(lián)網(wǎng)廣域 RDMA 協(xié)議(iWARP)和 RoCE 網(wǎng)絡(luò)已基于 IP。因此,您不能在 IWARP 或 RoCE 設(shè)備之上創(chuàng)建 IPoIB 設(shè)備。Mellanox 設(shè)備從 ConnectX-4 及更高版本開始,默認(rèn)使用 Enhanced IPoIB 模式(僅限數(shù) 據(jù)報(bào))。這些設(shè)備不支持連接的模式。 IPOIB通訊模式,在Datagram或Connected模式下配置 IPoIB 設(shè)備。不同之處在,IPoIB 層試圖使用什么類型的隊(duì)列對在通信的另一端的機(jī)器中打開: 在Datagram模式中,系統(tǒng)打開了一個(gè)不可靠、斷開連接的隊(duì)列對。這個(gè)模式不支持大于 InfiniBand link-layer 的最大傳輸單元(MTU)的軟件包。IPoIB 層在傳輸?shù)?IP 數(shù)據(jù)包之上添加了一個(gè) 4 字節(jié) IPoIB 標(biāo)頭。因此,IPoIB MTU 需要比 InfiniBand link-layer MTU 小 4 字節(jié)。因?yàn)?2048 是一個(gè)常見的 InfiniBand 鏈路層 MTU,數(shù)據(jù)數(shù)報(bào)模式中常見的 IPoIB 設(shè)備 MTU 是 2044。 在Connected模式中,系統(tǒng)會打開一個(gè)可靠、連接的隊(duì)列對。此模式允許大于 InfiniBand 鏈路層 MTU 的消息,主機(jī)適配器處理數(shù)據(jù)包分段和重新傳輸。因 此,InfiniBand 適配器以Connected模式發(fā)送的 IPoIB 信息大小沒有限制。但是,IP 數(shù)據(jù)包會受size字段和 TCP/IP 標(biāo)頭的限制。因此,Connected模式中的 IPoIB MTU 最大為65520字節(jié)。 連接 模式模 的性能更高,但消耗的內(nèi)核內(nèi)存更多。 如果系統(tǒng)被配置為使用Connected模式,它仍然會以Datagram模式發(fā)送多播流量,因?yàn)?InfiniBand 交換機(jī)和光纖無法在Connected模式下傳遞多播流量。另外,當(dāng)與任何未在Connected模式中配置的主 機(jī)通信時(shí),系統(tǒng)將返回Datagram模式。 在運(yùn)行將多播數(shù)據(jù)發(fā)送到接口上最大 MTU 的應(yīng)用程序時(shí),您必須將接口配置為Datagram模式,或者將應(yīng)用程序配置為以數(shù)據(jù)包大小數(shù)據(jù)包的大小封頂數(shù)據(jù)包發(fā)送的大小。
審核編輯:郭婷
-
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7488瀏覽量
87849 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6801瀏覽量
123283 -
RDMA
+關(guān)注
關(guān)注
0文章
77瀏覽量
8945
原文標(biāo)題:關(guān)于InfiniBand和RDMA網(wǎng)絡(luò)配置實(shí)踐
文章出處:【微信號:算力基建,微信公眾號:算力基建】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論