Revisiting Network Support for RDMA

重新審視RDMA的網(wǎng)絡(luò)支持

本文為SIGCOMM 2018會議論文。
筆者翻譯了該論文。由于時間倉促,且筆者英文能力有限,錯誤之處在所難免;歡迎讀者批評指正。
本文及翻譯版本僅用于學(xué)習(xí)使用。如果有任何不當(dāng),請聯(lián)系筆者刪除。
如需轉(zhuǎn)載,請于筆者聯(lián)系。

摘要

RoCE(RDMA over Converged Ethernet,基于融合以太網(wǎng)的RDMA)的出現(xiàn)使得RDMA在數(shù)據(jù)中心網(wǎng)絡(luò)中的使用量顯著增加。為了獲得良好的性能,RoCE要求網(wǎng)絡(luò)是不丟包網(wǎng)絡(luò),這通過在網(wǎng)絡(luò)中啟用優(yōu)先級流控(Priority Flow Control, PFC)來實現(xiàn)。然而,PFC帶來了許多問題,例如隊頭阻塞、擁塞擴散和偶爾的死鎖。 我們不是解決這些問題,而是要詢問:為了支持基于以太網(wǎng)的RDMA,RFC是否是必須的?

我們表明,對PFC的需求是當(dāng)前RoCE NIC設(shè)計的一種人為因素,而不是其基本要求。我們提出了一種改進(jìn)的RoCE NIC (IRN)設(shè)計,通過對RoCE NIC進(jìn)行一些簡單的更改,以便更好地處理數(shù)據(jù)包丟失。我們表明,對于典型的網(wǎng)絡(luò)場景,IRN(沒有PFC)優(yōu)于RoCE(使用PFC) 6-83%。 因此,IRN不僅消除了對PFC的需求,而且還提高了處理過程中的性能!我們進(jìn)一步表明,IRN引入的更改可以通過大約3-10%的適度NIC資源開銷來實現(xiàn)。根據(jù)我們的結(jié)果,我們認(rèn)為研究界和工業(yè)界應(yīng)重新考慮當(dāng)前RDMA的網(wǎng)絡(luò)支持。

引言

與傳統(tǒng)的廣域網(wǎng)相比,數(shù)據(jù)中心網(wǎng)絡(luò)具有更高的帶寬和更低的延遲。但是,傳統(tǒng)的主機端網(wǎng)絡(luò)協(xié)議棧具有較高延遲和較大的CPU開銷,這限制了應(yīng)用程序利用數(shù)據(jù)中心網(wǎng)絡(luò)高帶寬和低延遲特性的程度。因此,最近幾個大型數(shù)據(jù)中心采用了RDMA;RDMA繞過了傳統(tǒng)的網(wǎng)絡(luò)協(xié)議棧,采用直接內(nèi)存訪問。

融合以太網(wǎng)上的RDMA(RoCE)已經(jīng)成為在基于以太網(wǎng)的數(shù)據(jù)中心中部署RDMA的規(guī)范方法[23,38]。RoCE的核心是一個NIC,它(i)提供了在沒有CPU參與的情況下訪問主機內(nèi)存的機制,并(ii)支持非?;镜木W(wǎng)絡(luò)傳輸功能。早期的經(jīng)驗表明,RoCE NIC只有在不丟包網(wǎng)絡(luò)上運行時才能取得良好的端到端性能,因此運營商轉(zhuǎn)向以太網(wǎng)優(yōu)先級流控(PFC)機制,以實現(xiàn)最少的數(shù)據(jù)包丟失。 RoCE和PFC的組合成為數(shù)據(jù)中心RDMA部署的浪潮。

然而,目前的解決方案仍然存在問題。特別地,PFC增加了管理的復(fù)雜性,并可能導(dǎo)致嚴(yán)重的性能問題,如隊頭阻塞、擁塞傳播和偶爾的死鎖[23,24,35,37,38]。 與繼續(xù)沿著當(dāng)前路徑解決PFC的各種問題不同,本文中我們退后一步,詢問PFC是否是必須的。 需要明確的是,目前的RoCE NIC需要網(wǎng)絡(luò)是不丟包的才能獲得良好的性能。 但是,我們提出的問題是:RoCE網(wǎng)卡設(shè)計是否可以改變,以便我們不再需要不丟包網(wǎng)絡(luò)?

我們肯定地回答了這個問題,提出了一個名為IRN(Improved RoCE NIC,改進(jìn)的RoCE NIC)的新設(shè)計,它對當(dāng)前的RoCE NIC進(jìn)行了兩個增量式更改(i)更有效的丟包恢復(fù)機制,以及(ii)基本的端到端流控(限制飛行中(in-flight)數(shù)據(jù)包的數(shù)量(§3))。 我們在從商用NIC供應(yīng)商處獲得的RoCE仿真器上進(jìn)行了大量仿真,結(jié)果表明IRN的性能優(yōu)于當(dāng)前的RoCE NIC,并且IRN不需要PFC來取得高性能。實際上,IRN在沒有PFC的情況下通常表現(xiàn)更好(§4)。 我們詳細(xì)介紹了IRN要求的對RDMA協(xié)議的擴展(§5),并使用比較分析和FPGA綜合來評估IRN在NIC硬件資源方面引入的開銷(§6)。我們的結(jié)果表明,在當(dāng)前的RoCE網(wǎng)卡中添加IRN功能會增加3-10%的資源開銷,而不會降低消息速率。

一個明顯的問題是與iWARP比較,IRN如何?很久以前,iWARP [33]提出了與IRN類似的哲學(xué):在NIC中有效地處理數(shù)據(jù)包丟失而不是使網(wǎng)絡(luò)不丟包。我們表明iWARP的失敗之處在于它的設(shè)計選擇。iWARP和IRN設(shè)計之間的差異源于他們的出發(fā)點:iWARP旨在實現(xiàn)全面的通用性,這使得他們將完整的TCP/IP協(xié)議棧實現(xiàn)于NIC中,需要在RDMA抽象和傳統(tǒng)的TCP字節(jié)流抽象之間進(jìn)行多層轉(zhuǎn)換。 因此,iWARP NIC通常比RoCE更復(fù)雜、成本更高,且性能更低(§2)。相比之下,IRN從更簡單的RoCE設(shè)計開始,并詢問可以通過添加哪些最小功能以消除對PFC的需求。

更一般地說:雖然iWARP與RoCE的優(yōu)點一直是業(yè)界長期爭論的問題,但沒有比較兩種架構(gòu)的結(jié)論性或嚴(yán)格的評估。相反,RoCE已成為市場上事實上的贏家,并帶來了隱含(并且仍然揮之不去)的假設(shè),即不丟包網(wǎng)絡(luò)是實現(xiàn)RoCE高性能所必需的。我們的結(jié)果是第一個嚴(yán)格表明(與市場采用建議相反),盡管具有一種不必要的復(fù)雜設(shè)計方法,iWARP實際上具有正確的架構(gòu)理念。

因此,可以通過以下兩種方式之一來審視IRN和我們的結(jié)果:(i)RoCE NIC的新設(shè)計,以少量增量修改為代價,消除了對PFC的需求并導(dǎo)致更好的性能,或者,(ii)iWARP理念的新實現(xiàn),其實現(xiàn)更簡單,性能更好。

背景

我們以回顧一些相關(guān)背景開始。

2.1 Infiniband RDMA和RoCE

長期以來,HPC(高性能計算)社區(qū)一直在特定用途的Infiniband集群中使用RDMA,這些集群使用基于信用的流控制來使網(wǎng)絡(luò)不丟包[4]。由于數(shù)據(jù)包丟失在此類群集中很少見,因此RDMA Infiniband傳輸層(在NIC上實現(xiàn))并非旨在高效恢復(fù)數(shù)據(jù)包丟失。 當(dāng)接收方收到無序數(shù)據(jù)包時,它只是丟棄該數(shù)據(jù)包并向發(fā)送方發(fā)送否定確認(rèn)(NACK)。當(dāng)發(fā)送方接收到NACK時,它重新發(fā)送在最后一個確認(rèn)的數(shù)據(jù)包之后發(fā)送的所有數(shù)據(jù)包(即,它執(zhí)行回退N重傳)。

為了利用以太網(wǎng)在數(shù)據(jù)中心中廣泛使用的優(yōu)勢,引入了RoCE [5,9],以便在以太網(wǎng)上使用RDMA(我們對RoCE [5]及其后繼者RoCEv2 [9]使用術(shù)語RoCE,RoCEv2使得RDMA不僅可以通過以太網(wǎng)運行,還可以運行在IP路由網(wǎng)絡(luò)。)。RoCE采用了相同的Infiniband傳輸層設(shè)計(包括回退N重傳),并且使用PFC使網(wǎng)絡(luò)不丟包。

2.2 優(yōu)先級流控

優(yōu)先級流控(PFC)[6]是以太網(wǎng)的流量控制機制,當(dāng)隊列超過某個特定的配置閾值時,交換機會向上游實體(交換機或NIC)發(fā)送暫停(或X-OFF)幀。當(dāng)隊列低于此閾值時,將發(fā)送X-ON幀以恢復(fù)傳輸。正確配置后,PFC使網(wǎng)絡(luò)不丟包(只要所有網(wǎng)絡(luò)元素保持正常運行)。然而,這種對擁堵的粗略反應(yīng)對擁塞是由哪些流導(dǎo)致是不可知的,這導(dǎo)致了近年來在許多論文中提到的各種性能問題[23,24,35,37,38]。這些問題的范圍從輕微(例如,不公平和隊頭阻塞)到嚴(yán)重(例如[23]中突出的“暫停傳播”),甚至是網(wǎng)絡(luò)死鎖[24,35,37]。為了緩解這些問題,為RoCE提出了擁塞控制機制(例如,DCQCN [38]和Timely [29]),其降低了擁塞時的發(fā)送速率,但是不足以消除對PFC的需求。因此,現(xiàn)在普遍認(rèn)為PFC使網(wǎng)絡(luò)更難理解和管理,并且可能導(dǎo)致需要處理的無數(shù)性能問題。

2.3 iWARP對比RoCE

iWARP [33]旨在通過完全通用(即非不丟包網(wǎng)絡(luò))的網(wǎng)絡(luò)支持RDMA。iWARP在硬件中實現(xiàn)了整個TCP協(xié)議棧,以及將TCP的字節(jié)流語義轉(zhuǎn)換為RDMA分段所需的多個其他層。 在我們的早期工作中,我們與多家NIC供應(yīng)商和數(shù)據(jù)中心運營商合作,試圖了解為什么iWARP沒有得到更廣泛的采用(因為我們認(rèn)為iWARP的基本架構(gòu)前提是正確的)。我們聽到的一致反應(yīng)是iWARP明顯比RoCE更復(fù)雜和昂貴,且性能較差[13]。

我們還尋找經(jīng)驗數(shù)據(jù)以驗證或駁斥這些觀點。我們在兩臺相互連接的機器上運行RDMA寫入基準(zhǔn)測試,兩臺機器上的Chelsio T-580-CR 40Gbps iWARP網(wǎng)卡用于一組實驗,Mellanox MCX416A-BCAT 56Gbps RoCE網(wǎng)卡(鏈路速度設(shè)置為40Gbps)用于另一組實驗。兩個NIC的規(guī)格類似,在購買時,iWARP NIC售價760美元,而RoCE NIC售價420美元。表1中給出了單個隊列對上64字節(jié)批量寫入的原始NIC性能值。我們發(fā)現(xiàn)iWARP的延遲比RoCE高3倍,吞吐量低4倍。

NIC 吞吐量 延遲
Chelsio T-580-CR (iWARP) 3.2 Mpps 2.89 us
Mellanox MCX416A-BCAT (RoCE) 14.7Mpps 0.94 us

這些價格和性能差異可歸因于除運輸層設(shè)計復(fù)雜性之外的許多因素(例如,利潤率差異、支持的特征和工程效率),因此應(yīng)被視為最佳的軼事證據(jù)。盡管如此,他們表明:基于當(dāng)前的iWARP NIC,我們的猜想(支持在終端主機NIC上實現(xiàn)丟包恢復(fù))肯定是不明顯的。

我們的主要貢獻(xiàn)是表明iWARP實際上確實具有正確的理念(盡管有些驚訝):在NIC中顯式處理數(shù)據(jù)包丟失可以取得比不丟包網(wǎng)絡(luò)更好的性能。但是,有效地處理數(shù)據(jù)包丟失并不需要像iWARP那樣在硬件中實現(xiàn)整個TCP協(xié)議棧。相反,我們確定了對當(dāng)前RoCE NIC進(jìn)行的增量更改,從而導(dǎo)致一種設(shè)計(i)不需要PFC,但取得比RoCE和iWARP(§4)更好的網(wǎng)絡(luò)性能,并且(ii)就NIC性能和復(fù)雜度而言,更接近于RoCE的實現(xiàn)(§6),因此復(fù)雜度比iWARP顯著簡化。

3 IRN設(shè)計

我們首先描述IRN的傳輸層邏輯。 為了簡單起見,我們將其作為一種獨立于特定RDMA操作類型的通用設(shè)計。我們將在§5中詳細(xì)介紹如何使用IRN處理特定的RDMA操作。

對RoCE傳輸層設(shè)計的更改可能會以新硬件邏輯或額外的每個流狀態(tài)的形式引入開銷。為了盡可能減少這種開銷,IRN努力對RoCE NIC設(shè)計進(jìn)行微小的更改,以消除其PFC要求,而不是通過更復(fù)雜的設(shè)計來擠出最佳性能(我們在§6評估 IRN引入的小開銷)。

因此,IRN對當(dāng)前的RoCE NIC進(jìn)行了兩個關(guān)鍵更改,如以下小節(jié)所述:(1)改進(jìn)丟包恢復(fù)機制,以及(2)基本的端到端流控(稱為BDP-FC),它通過網(wǎng)絡(luò)的帶寬-延遲積限制了網(wǎng)絡(luò)中數(shù)據(jù)包的數(shù)量。 我們通過實證評估它們的重要性來證明這些變化,并在§4.3中探索一些替代設(shè)計選擇。 請注意,這些更改與使用顯式擁塞控制機制(例如DCQCN [38]和Timely [29])正交;即,與當(dāng)前的RoCE NIC一樣,可以在IRN選擇啟用它們。

3.1 IRN丟包恢復(fù)機制

如§2中所述,當(dāng)前的RoCE NIC使用回退N丟包恢復(fù)方案。 在沒有PFC的情況下,由回退N丟包恢復(fù)引起的冗余重傳導(dǎo)致顯著的性能損失(如§4中所評估的)。因此,我們使用IRN進(jìn)行的第一個更改是基于選擇性重傳(受TCP的丟包恢復(fù)啟發(fā))的更有效的丟失恢復(fù)機制,其中接收方不丟棄無序數(shù)據(jù)包,并且發(fā)送方選擇性地重傳丟失的數(shù)據(jù)包,如下所述。

在每個亂序數(shù)據(jù)包到達(dá)時,IRN接收方發(fā)送NACK,其攜帶累積確認(rèn)(暗示其預(yù)期序列號)和觸發(fā)NACK的數(shù)據(jù)包的序列號(作為選擇性確認(rèn)或SACK的簡化形式)。

當(dāng)收到NACK或發(fā)生超時時,IRN發(fā)送方進(jìn)入丟包恢復(fù)模式。它還維護(hù)一個位圖,以跟蹤哪些數(shù)據(jù)包已被累積并有選擇地確認(rèn)。當(dāng)處于丟失恢復(fù)模式時,發(fā)送方選擇性地重新發(fā)送丟失的數(shù)據(jù)包(根據(jù)位圖信息),而不是發(fā)送新的數(shù)據(jù)包。 在進(jìn)入丟失恢復(fù)時重新發(fā)送的第一個數(shù)據(jù)包對應(yīng)于累積確認(rèn)值。 只有在選擇性地確認(rèn)了具有更高序列號的另一個數(shù)據(jù)包時,才認(rèn)為后續(xù)數(shù)據(jù)包丟失了。 當(dāng)沒有更多丟失的數(shù)據(jù)包要重新傳輸時,發(fā)送方繼續(xù)傳輸新數(shù)據(jù)包(如果BDP-FC允許)。 當(dāng)接收到大于恢復(fù)序列號的累積確認(rèn)時,它退出丟包恢復(fù)模式,其中恢復(fù)序列號對應(yīng)于在重傳丟失分組之前發(fā)送的最后一個常規(guī)分組。

只有在有多個飛行中數(shù)據(jù)包時,SACK才能實現(xiàn)有效的丟包恢復(fù)。 對于其他情況(例如,對于單個數(shù)據(jù)包消息),通過超時觸發(fā)丟包恢復(fù)。 高超時值可能會增加此類短消息的尾部延遲。 但是,保持太小的超時值會導(dǎo)致過多的虛假重傳,從而影響整體結(jié)果。 因此,IRN發(fā)送方僅在存在少量N個飛行中數(shù)據(jù)包時使用RTOlow的低超時值(使得虛假重傳較小且可忽略),否則使用較高的RTOhigh值。 我們將在§4中討論如何設(shè)置這些參數(shù)的值,以及在§6中討論如何輕松擴展當(dāng)前RoCE NIC中的超時功能以支持此功能。

3.2 IRN的BDP-FC機制

我們對IRN做出的第二個改變是引入了一個基本的端到端數(shù)據(jù)包級流控的概念,稱為BDP-FC,它通過網(wǎng)絡(luò)的帶寬延遲乘(BDP)限制數(shù)據(jù)流的飛行中數(shù)據(jù)包的數(shù)量, 如[17]中所建議的。 這是一個靜態(tài)上限,我們通過將網(wǎng)絡(luò)中最長路徑的BDP(以字節(jié)為單位)除以RDMA隊列對設(shè)置的數(shù)據(jù)包MTU(在RoCE網(wǎng)卡中通常為1KB)來計算。 只有當(dāng)飛行中的數(shù)據(jù)包數(shù)量(按當(dāng)前數(shù)據(jù)包的序列號和最后確認(rèn)的序列號之間的差異計算)小于此BDP上限時,IRN發(fā)送方才會發(fā)送新數(shù)據(jù)包。

BDP-FC通過減少網(wǎng)絡(luò)中不必要的排隊來提高性能。 此外,通過嚴(yán)格限制亂序數(shù)據(jù)包到達(dá)的數(shù)量,它大大減少了跟蹤NIC中數(shù)據(jù)包丟失所需的狀態(tài)量(在第6節(jié)中有更詳細(xì)的討論)。

如前所述,IRN的丟包恢復(fù)受到了TCP丟包恢復(fù)的啟發(fā)。 但是,IRN不是像iWARP網(wǎng)卡那樣整合整個TCP協(xié)議棧,而是:(1)將丟包恢復(fù)與擁塞控制解耦,并且不包含涉及慢啟動、AIMD或高級快速恢復(fù)的TCP擁塞窗口控制的任何概念(2)直接在RDMA分段上運行,而不是使用TCP的字節(jié)流抽象,這不僅避免了多個轉(zhuǎn)換層引入的復(fù)雜性(在iWARP中需要),而且還允許IRN簡化其選擇性確認(rèn)和丟包跟蹤方案。 我們將在§4結(jié)束時討論這些變化如何影響性能。

4 評估IRN的傳輸層邏輯

我們現(xiàn)在面對本文的核心問題:RDMA是否需要不丟包網(wǎng)絡(luò)? 如果答案是肯定的,那么我們必須解決PFC的諸多難題。 如果答案是否定的,那么我們可以通過放棄PFC來大大簡化網(wǎng)絡(luò)管理。 為了回答這個問題,我們通過大量的模擬評估了IRN傳輸層邏輯的網(wǎng)絡(luò)性能。 我們的結(jié)果表明IRN比RoCE表現(xiàn)更好,并且不需要PFC。 我們在各種實驗場景和不同的性能指標(biāo)中對此進(jìn)行了測試。 我們以IRN與彈性RoCE [34]和iWARP [33]的模擬比較結(jié)束本節(jié)。

4.1 實驗設(shè)置

我們首先介紹實驗設(shè)置。

模擬器:我們的模擬器,是從某個商業(yè)NIC供應(yīng)商處獲得,其擴展了INET/OMNET++ [1,2],以模擬Mellanox ConnectX4 RoCE NIC [10]。 RDMA隊列對(QP)被建模為具有RoCE或IRN傳輸層邏輯的UDP應(yīng)用,其生成數(shù)據(jù)流(如稍后所述)。我們將數(shù)據(jù)流定義為數(shù)據(jù)傳輸單元,包括與[29,38]中相同的源-目的地對之間的一個或多個消息。 當(dāng)發(fā)送方QP準(zhǔn)備好發(fā)送數(shù)據(jù)包時,它會周期性地輪詢MAC層,直到鏈路可用于傳輸。 模擬器實現(xiàn)了在Mellanox ConnectX-4 ROCE NIC [34]中實現(xiàn)的DCQCN,并且我們添加了對基于NIC的Timely實現(xiàn)的支持。 我們模擬中的所有交換機都使用虛擬輸出端口的輸入端口排隊機制,使用循環(huán)調(diào)度。 通過設(shè)置適當(dāng)?shù)木彌_閾值,可以配置交換機以生成PFC幀。

默認(rèn)情景:對于我們的默認(rèn)情景,我們模擬一個由54臺服務(wù)器構(gòu)成的三層胖樹拓?fù)?,由一個45個6端口交換機構(gòu)成網(wǎng)絡(luò)設(shè)施連接,具有完整的折半帶寬,組成6個pod[16]。 我們考慮40Gbps鏈路,每個鏈路的傳播延遲為2μs,導(dǎo)致沿最長(6跳)路徑的帶寬延遲乘(BDP)為120KB(筆者注:40Gbpsx2usx6x2=120KB,最后一個乘2的原因是BDP計算的往返時間)。 這相當(dāng)于約110個MTU大小的數(shù)據(jù)包(假設(shè)典型的RDMA MTU為1KB)。

每個終端主機產(chǎn)生具有Poisson到達(dá)時間的新數(shù)據(jù)流[17,30]。 每個數(shù)據(jù)流的目的地都是隨機挑選的,大小來自[19]的現(xiàn)實重尾分布。大多數(shù)流量很?。?0%的數(shù)據(jù)流是單個數(shù)據(jù)包消息,大小介于32字節(jié)-1KB之間,表示小型RPC,例如基于RDMA的鍵值存儲生成的那些[21,25]),大多數(shù)字節(jié)都在大數(shù)據(jù)流中(15%的數(shù)據(jù)流在200KB-3MB之間,代表背景RDMA數(shù)據(jù)流,如存儲)。對于我們的默認(rèn)情景,網(wǎng)絡(luò)負(fù)載設(shè)置為70%利用率。 我們使用ECMP進(jìn)行負(fù)載平衡[23]。 我們在§4.4中的改變默認(rèn)方案(包括拓?fù)浯笮。ぷ髫?fù)載模式和鏈路利用率)的不同方面。

參數(shù):RTOhigh設(shè)置為具有一條擁塞鏈路的估計最大往返時間。我們將其計算為最長路徑上的傳播延遲與數(shù)據(jù)包在擁塞鏈路上的交換機完全滿時所經(jīng)歷的最大排隊延遲之和。對于我們的默認(rèn)情況,這大約是320μs。對于IRN,我們將RTOlow設(shè)置為100μs(表示短消息的尾部延遲的期望上限),其中N設(shè)置為較小的值3。當(dāng)使用不帶PFC的RoCE時,我們使用固定超時值RTOhigh。我們在啟用PFC時禁用超時以防止虛假重傳。對于每個輸入端口,我們使用大小為網(wǎng)絡(luò)BDP兩倍的緩沖區(qū)(在默認(rèn)情況下為240KB)[17,18]。交換機的PFC閾值設(shè)置為緩沖區(qū)大小減去凈空間(等于上游鏈路的帶寬延遲乘,需要吸收沿鏈路上飛行中的所有數(shù)據(jù)包)。對于我們的默認(rèn)情況,這是220KB。我們在§4.4中改變這些參數(shù),以表明我們的結(jié)果對這些特定選擇不是非常敏感。當(dāng)使用具有Timely或DCQCN的RoCE或IRN時,我們分別使用與[29]和[38]中指定的相同的擁塞控制參數(shù)。為了與基于PFC的方案進(jìn)行公平比較[37,38],所有情形下數(shù)據(jù)流均從線速開始。

度量標(biāo)準(zhǔn):我們主要考慮三個指標(biāo):(i)平均放緩,其中數(shù)據(jù)流的放緩是其完成時間除以在空網(wǎng)絡(luò)中以線速穿越其路徑所花費的時間,(ii)平均流完成時間(FCT),(iii)99%ile或尾部FCT。 雖然平均和尾部FCT主要受吞吐量敏感性數(shù)據(jù)流的影響,但平均減速主要受延遲敏感性短流的影響。

4.2 基礎(chǔ)結(jié)果

我們現(xiàn)在提供我們的基本結(jié)果,比較IRN和RoCE的默認(rèn)情況。 除非另有說明,IRN始終在沒有PFC的情況下使用,而RoCE始終與PFC一起使用。

4.2.1 IRN比RoCE表現(xiàn)更好。

我們首先將IRN的性能與當(dāng)前的RoCE NIC進(jìn)行比較。 結(jié)果如圖1所示。在三個指標(biāo)中,IRN的性能比RoCE高2.8-3.7倍。這是由于兩個因素的綜合作用:(i)IRN的BDP-FC機制減少了不必要的排隊;(ii)與RoCE不同,IRN不會遇到任何擁塞傳播問題,因為它不使用PFC。 (在下面更詳細(xì)地解釋)。


圖1:比較IRN和RoCE的性能。

4.2.2 IRN不需要PFC。

我們接下來研究啟用PFC如何影響IRN的性能。如果啟用PFC不會使IRN的性能提高,我們可以得出結(jié)論,IRN的丟包恢復(fù)足以消除對PFC的要求。但是,如果啟用PFC可以顯著提高IRN的性能,我們必須得出結(jié)論,即使使用IRN的丟包恢復(fù)機制,PFC仍然很重要。圖2顯示了這種比較的結(jié)果。值得注意的是,我們認(rèn)為不僅不需要PFC,而且它還會顯著降低IRN的性能(將每個指標(biāo)的值增加約1.5-2倍)。這是因為PFC的臭名昭著的線頭阻塞和擁塞擴散問題:一條鏈路上的擁塞引發(fā)的暫停,導(dǎo)致隊列建立并暫停其他上游實體,從而產(chǎn)生級聯(lián)效應(yīng)。請注意,如果沒有PFC,IRN會經(jīng)歷顯著較高的數(shù)據(jù)包丟失(8.5%),這也會對性能產(chǎn)生負(fù)面影響,因為它需要大約一個往返時間來檢測數(shù)據(jù)包丟失以及另一個往返時間以恢復(fù)丟包。然而,數(shù)據(jù)包丟失的負(fù)面影響(考慮有效的丟包恢復(fù)機制)僅限于經(jīng)歷擁塞的數(shù)據(jù)流,并且不會擴散到其它數(shù)據(jù)流(如PFC的情況)。雖然在[23,29,38]已經(jīng)觀察到這些PFC問題,但我們認(rèn)為我們的工作首次表明設(shè)計良好的丟包恢復(fù)機制優(yōu)于不丟包網(wǎng)絡(luò)。

圖2: 使能RFC對IRN的影響。

4.2.3 RoCE需要PFC。

鑒于上述結(jié)果,下一個可能的問題是RoCE是否需要PFC? 圖3顯示了使用和不使用PFC的RoCE的性能。 我們認(rèn)為PFC的使用在這里有很大幫助。 禁用PFC會使三個指標(biāo)的性能降低1.5-3倍。 這是因為當(dāng)前RoCE NIC使用的返回N損失恢復(fù),由于(i)由冗余重傳引起的擁塞增加以及(ii)發(fā)送這些冗余分組時所浪費的時間和帶寬,這會損害性能。


圖3:不使用PFC對RoCE的影響。

4.2.4顯式擁塞控制的影響。

之前的比較沒有使用任何顯式的擁塞控制。 然而,如前所述,今天的RoCE通常與一些顯式擁塞控制機制(例如Timely或DCQCN)一起部署。 我們現(xiàn)在評估使用這種顯式擁塞控制機制是否影響上述關(guān)鍵趨勢。

圖4:使用顯式擁塞控制(Timely和DCQCN)時IRN和RoCE的性能比較。

圖5評估了使用Timely或DCQCN時啟用PFC對IRN的影響。 我們發(fā)現(xiàn),由于顯式擁塞控制降低了數(shù)據(jù)包丟包率以及生成的暫停幀數(shù),因此IRN的性能在很大程度上不受PFC的影響。 由于啟用PFC,最大性能提升不到1%,而其最大的負(fù)面影響約為3.4%。

圖5:使用顯式擁塞控制時,啟用RFC對IRN的影響。

最后,圖6比較了使用Timely或DCQCN時,使用和不使用RFC時RoCE的性能。我們發(fā)現(xiàn),與IRN不同,RoCE(使用低效的的回退N丟包恢復(fù))需要PFC,即使使用顯式擁塞控制也是如此。 在三個指標(biāo)中,啟用PFC可將RoCE的性能提高1.35倍至3.5倍。

圖6:當(dāng)使用顯式控制時,不啟用RFC對RoCE的影響。

關(guān)鍵要點:因此,以下是這些結(jié)果的三個要點:(1)IRN(無PFC)的性能優(yōu)于RoCE(帶PFC),(2)IRN不需要PFC,(3)RoCE需要PFC。

4.3 IRN的因子分析

我們現(xiàn)在進(jìn)行IRN的因子分析,以單獨研究IRN對RoCE做出的兩個關(guān)鍵更改的重要性,即(1)有效的丟包恢復(fù)和(2)BDP-FC。 為此,我們將IRN的性能(在§4.2中評估)與兩個不同的更改進(jìn)行比較,突出了每個更改的重要性:(1)啟用回退N丟包恢復(fù)而不是使用SACK,以及(2)禁用BDP-FC。 圖7顯示了得到的平均FCT(我們看到了與其他指標(biāo)類似的趨勢)。 我們將在下面詳細(xì)討論這些結(jié)果。

圖7:本圖給出回退N丟包恢復(fù)和不使用BDP-FC時IRN的影響。y軸限制到3ms以更好地突出趨勢。

需要有效的丟包恢復(fù):圖7中的前兩個條形圖分別比較了默認(rèn)的基于SACK的IRN和使用回退N的IRN的平均FCT。我們認(rèn)為后者會導(dǎo)致性能顯著下降。 這是因為由于回退N的冗余重傳導(dǎo)致的帶寬浪費,如前所述。

在使用IRN目前的丟包恢復(fù)機制之前,我們嘗試了其它替代設(shè)計。 我們特別探討了以下問題:

(1)回退N可以更有效嗎?相比于選擇性重傳, Go-back-N確實具有簡單的優(yōu)點,因為它允許接收端簡單地丟棄亂序數(shù)據(jù)包。 因此,我們試圖探討是否可以減輕回退N的負(fù)面影響。 我們發(fā)現(xiàn):對于Timely(但不是DCQCN)丟失時的顯式回退可以提高回退N的性能。 盡管如此,基于SACK的丟包恢復(fù)在不同的情景中繼續(xù)表現(xiàn)得更好(Timely的平均FCT差異在20%-50%之間)。

(2)我們需要SACK嗎?我們嘗試了一種沒有SACK的選擇性重傳方案(發(fā)送方?jīng)]有維護(hù)位圖來跟蹤選擇性確認(rèn))。這比回退N表現(xiàn)得更好。然而,當(dāng)窗口中出現(xiàn)多處丟包時,它的表現(xiàn)很差,需要多次往返才能從中恢復(fù)。 與基于SACK的IRN相比,在不同情況下,平均FCT的相應(yīng)降級范圍從<1%到75%不等。

(3)可以動態(tài)計算超時值嗎? 如§3所述,IRN使用兩個靜態(tài)(低和高)超時值,以便更快地恢復(fù)短消息,同時避免大消息的虛假重傳。 我們還嘗試了一種使用動態(tài)計算超時值的替代方法(與TCP一樣),這不僅使設(shè)計復(fù)雜化,而且沒有幫助,因為這些效果隨后由初始超時值主導(dǎo)。

BDP-FC的重要性:圖7中的第一和第三條分別比較了有和沒有BDP-FC的IRN的平均FCT。 我們認(rèn)為BDP-FC可以通過減少不必要的排隊來顯著提高性能。 此外,它可以防止從丟包中恢復(fù)的數(shù)據(jù)流發(fā)送額外的新數(shù)據(jù)包并增加擁塞,直到丟包已經(jīng)恢復(fù)。

BDP-FC和高效丟包恢復(fù)對比:比較圖7中的第二和第三條柱,顯示:回退N丟包恢復(fù)的IRN性能通常比沒有BDP-FC的IRN性能差。 這表明在IRN做出的兩個更改中,有效的丟包恢復(fù)比BDP-FC更有助于提高性能。

4.4 基礎(chǔ)結(jié)果的魯棒性

我們現(xiàn)在評估§4.2在不同場景和性能指標(biāo)中的基礎(chǔ)結(jié)果的穩(wěn)健性。

4.4.1不同的實驗場景

我們評估結(jié)果的穩(wěn)健性,因為實驗場景與我們的默認(rèn)情景不同。 特別是,我們進(jìn)行了以下實驗:(i)鏈路利用率水平在30%-90%之間變化,(ii)鏈路帶寬從默認(rèn)的40Gbps到10Gbps和100Gbps不等,(iii)更大的胖樹拓?fù)浣Y(jié)構(gòu),128和250臺服務(wù)器 ,(iv)不同的工作負(fù)載,數(shù)據(jù)流大小均勻分布在500KB到5MB之間,代表RDMA的背景和存儲數(shù)據(jù)流,(v)每端口緩沖區(qū)大小在60KB-480KB之間變化,(vi)改變其他IRN參數(shù)(增加RTOhigh) 值最多為默認(rèn)值320μs的4倍,并將使用RTOlow的N值增加到10和15)。 我們在此總結(jié)了我們的主要觀察結(jié)果,并在擴展報告的附錄§A中為每個場景提供了詳細(xì)的結(jié)果[31]。

總體結(jié)果:在所有這些實驗場景中,我們發(fā)現(xiàn):
(a) IRN(沒有PFC)總是比RoCE(使用PFC)表現(xiàn)更好,在不同情況下性能改善范圍從6%到83%。
(b) 在沒有任何擁塞控制的情況下,啟用PFC總會降低IRN的性能,不同情況下的最大降級高達(dá)2.4倍。
(c) 即使與Timely和DCQCN一起使用,啟用PFC通常會降低IRN的性能(Timely的最大降級為39%,DCQCN的降級最大為20%)。 由于啟用PFC導(dǎo)致的性能改善對Timely保持在1.6%之內(nèi),對于DCQCN保持在5%之內(nèi)。

一些觀察到的趨勢:使IRN啟用PFC的缺點:
(a) 通常隨著鏈路利用率的增加而增加,這是因為PFC導(dǎo)致?lián)砣麛U散的負(fù)面影響增加。
(b) 隨著帶寬的增加而減少,因為在沒有PFC的情況下對丟包做出反應(yīng)所需的往返的相對成本也會增加。
(c) 隨著緩存大小的減少而增加,這是因為更多的暫停幀和更大的擁塞擴散的影響。

我們進(jìn)一步觀察到,增加RTOhigh或N對我們的基礎(chǔ)結(jié)果的影響非常小,表明IRN對特定參數(shù)值不是非常敏感。

4.4.2小消息的尾部延遲

我們現(xiàn)在看一下我們的默認(rèn)場景的單數(shù)據(jù)包消息的尾部延遲(或尾部FCT),這是數(shù)據(jù)中心的另一個相關(guān)指標(biāo)[29]。 圖8顯示了不同擁塞控制算法的尾部延遲(從90%ile到99.9%ile)的CDF。 我們關(guān)于§4.2的主要趨勢甚至適用于該指標(biāo)。 這是因為由于RTOlow超時值較低,IRN(無PFC)能夠快速從單包消息丟失中恢復(fù)。 使用PFC,由于暫停和擁塞傳播,這些消息最終會在隊列中等待相似(或更長)的持續(xù)時間。 對于所有情況,IRN比RoCE表現(xiàn)更好。

圖8:本圖比較了不同擁塞控制算法下,IRN、使用PFC的IRN和RoCE(使用RFC)的單包消息尾部延遲。

4.4.3 Incast

我們現(xiàn)在評估incast場景,無論是否有交叉流量。 沒有任何交叉流量的incast工作負(fù)載被認(rèn)為PFC的最佳情況,因為只有有效的導(dǎo)致?lián)砣臄?shù)據(jù)流被暫停而沒有不必要的線頭阻塞。

沒有交叉流量的Incast:我們通過在M個隨機選擇的發(fā)送方節(jié)點上分送150MB數(shù)據(jù)來模擬我們默認(rèn)拓?fù)渲械膇ncast工作負(fù)載,這些節(jié)點將數(shù)據(jù)其發(fā)送到固定目標(biāo)節(jié)點[17]。 我們將M從10到50變化。我們將請求完成時間(RCT)視為incast性能的度量標(biāo)準(zhǔn),即最后一個數(shù)據(jù)流完成的時間。 對于每個M,我們重復(fù)實驗100次并報告平均RCT。 圖9顯示了將IRN與RoCE進(jìn)行比較的結(jié)果。 我們發(fā)現(xiàn)兩者具有相似的性能:不使用IRN的的PFC導(dǎo)致的RCT的增加保持在2.5%以內(nèi)。 比較IRN在有和沒有PFC的情況下的性能結(jié)果非常相似。 我們還通過將帶寬更改為10Gbps和100Gbps以及增加每臺計算機的連接數(shù)來改變我們的默認(rèn)incast設(shè)置。 禁用IRN的PFC而導(dǎo)致的性能下降保持在9%以內(nèi)。


圖9: 本圖給出IRN(不使用PFC)與RoCE(使用RFC)相比,使用不同的擁塞控制算法,改變扇入度的情況下,請求完成時間的比率。

包含交叉流量的incast:在實踐中,我們期望在網(wǎng)絡(luò)中incast和網(wǎng)絡(luò)中的其它較差流量同時存在[23,29]。 我們?nèi)缟纤鲩_始了一個M = 30的incast,以及我們的默認(rèn)案例工作負(fù)載以50%的鏈路利用率運行。 在三種擁塞控制方案中,IRN(沒有PFC)的incast RCT總是低于RoCE(使用PFC)4%-30%。 對于后臺工作負(fù)載,在三種擁塞控制方案和三個指標(biāo)(即平均減緩,平均FCT和尾部FCT)中,IRN的性能優(yōu)于RoCE 32%-87%。 啟用PFC的IRN通常會使三個方案和指標(biāo)中的incast和較差流量的性能降低1-75%,并且僅針對一種情況提高性能(DCQCN的工作負(fù)載為1.13%)。

4.4.4基于窗口的擁塞控制

我們還實現(xiàn)了傳統(tǒng)的基于窗口的擁塞控制方案,如TCP的AIMD和DCTCP [15],并觀察到類似于§4.2中討論的趨勢。 事實上,當(dāng)IRN與TCP的AIMD一起使用時,禁用PFC的好處甚至更強,因為它利用數(shù)據(jù)包丟包作為擁塞信號,當(dāng)啟用PFC時該好處丟失。

總結(jié):我們的關(guān)鍵結(jié)果,即(1)IRN(沒有PFC)比RoCE(使用PFC)表現(xiàn)更好,(2)IRN不需要PFC,適用于不同的現(xiàn)實場景,擁塞控制方案和性能指標(biāo)。

4.5 與彈性RoCE比較

最近關(guān)于彈性RoCE [34]的提案探討了在特定情況下使用DCQCN來避免數(shù)據(jù)包丟失,從而消除了對PFC的要求。 然而,如先前在圖6中所觀察到的,DCQCN可能并不總是成功地避免在具有更多動態(tài)數(shù)據(jù)流模式的所有現(xiàn)實場景中的分組丟失,因此PFC(及其伴隨的問題)仍然是必要的。 圖10提供了IRN與彈性RoCE的直接比較。 我們發(fā)現(xiàn)IRN,即使沒有任何顯式的擁塞控制,由于更好的丟包恢復(fù)和BDP-FC,也比彈性RoCE表現(xiàn)得更好。

圖10: IRN和彈性RoCE(RoCE+DCQCN,沒有PFC)的比較。

4.6 與iWARP對比

我們最后探討IRN比iWARP中實現(xiàn)的更簡單的TCP棧是否會影響性能。我們將IRN的性能(沒有任何顯式的擁塞控制)與完整的TCP棧進(jìn)行比較,使用INET模擬器的內(nèi)置TCP實現(xiàn)來實現(xiàn)后者。圖11顯示了我們的默認(rèn)方案的結(jié)果。我們認(rèn)為沒有慢啟動(使用BDP-FC代替)導(dǎo)致IRN減緩減少21%,并且平均和尾部FCT相當(dāng)。這些結(jié)果表明,盡管設(shè)計更簡單,但即使沒有任何顯式的擁塞控制,IRN的性能也優(yōu)于完整的TCP棧。使用TCP的AIMD邏輯增強IRN進(jìn)一步提高了其性能,與iWARP相比,平均減緩降低了44%,平均FCT降低了11%。此外,IRN的簡單設(shè)計使其能夠以非常小的開銷實現(xiàn)與當(dāng)前RoCE NIC相當(dāng)?shù)南⑺俾剩ㄈ纭?中所述)。另一方面,iWARP NIC的消息速率最高可比RoCE NIC小4倍(§2)。因此,IRN提供了比iWARP更簡單且更高性能的解決方案,以消除RDMA對不丟包網(wǎng)絡(luò)的要求。

圖11: iWARP傳輸層(TCP棧)和IRN的對比。

5 實現(xiàn)考量

我們現(xiàn)在討論如何逐步更新RoCE NIC以支持IRN的傳輸層邏輯,同時保持RDMA語義的正確性(如Infiniband RDMA規(guī)范所定義[4])。 我們的實現(xiàn)依賴于對RDMA數(shù)據(jù)包格式的擴展,例如,引入新的域和數(shù)據(jù)包類型。這些擴展封裝在IP和UDP頭中(如RoCEv2中),因此它們只影響端主機行為,而不影響網(wǎng)絡(luò)行為(即交換機不需要進(jìn)行任何更改)。 在描述IRN如何支持它們之前,我們首先提供一些關(guān)于不同RDMA操作的相關(guān)上下文。

5.1 相關(guān)上下文

與RDMA消息傳輸相關(guān)聯(lián)的兩個遠(yuǎn)程端點稱為請求者和響應(yīng)者。 用戶應(yīng)用程序和RDMA NIC之間的接口由工作隊列元素或WQE(發(fā)音為wookies)提供。 應(yīng)用程序為每個RDMA消息傳輸發(fā)布WQE,其中包含用于傳輸?shù)膽?yīng)用程序特定的元數(shù)據(jù)。它在處理消息時存儲在NIC中,并在消息完成時過期。 在請求者和響應(yīng)者NIC上發(fā)布的WQE分別稱為請求WQE和接收WQE。 在消息完成時WQE到期之后是創(chuàng)建完成隊列元素或CQE(發(fā)音為cookie),其向用戶應(yīng)用程序發(fā)信號通知消息完成。 RDMA NIC支持四種類型的消息傳輸:

寫:請求者將數(shù)據(jù)寫入響應(yīng)者的內(nèi)存。 數(shù)據(jù)長度、源和接收者的位置在請求WQE中指定,通常不需要接收WQE。 然而,立即寫入操作要求用戶應(yīng)用程序發(fā)布在完成時到期的接收WQE以生成CQE(從而也在響應(yīng)者處發(fā)信號通知寫入完成)。

讀:請求者從響應(yīng)者的內(nèi)存中讀取數(shù)據(jù)。 數(shù)據(jù)長度、源和接收者的位置在請求WQE中指定,并且不需要接收WQE。

發(fā)送:請求者將數(shù)據(jù)發(fā)送給響應(yīng)者。 數(shù)據(jù)長度和源位置在請求WQE中指定,而接收者位置在接收WQE中指定。

原子:請求者讀取并原子地更新響應(yīng)者內(nèi)存中某個位置的數(shù)據(jù),該位置在請求WQE中指定。 不需要接收WQE。 原子操作僅限于單包消息。

5.2 支持RDMA讀和原子

IRN依賴于BDP-FC的每包ACK和丟包恢復(fù)。 對于寫和發(fā)送,RoCE NIC已經(jīng)支持每個數(shù)據(jù)包的ACK。 但是,在執(zhí)行讀取時,請求者(數(shù)據(jù)接收器)不會顯式確認(rèn)讀響應(yīng)數(shù)據(jù)包。 因此,IRN引入了由請求者為每個讀響應(yīng)數(shù)據(jù)包發(fā)送的讀(N)ACK數(shù)據(jù)包。 RoCE目前有八個未使用的操作碼值可用于可靠連接的QP,我們使用其中一個用于讀(N)ACK。 IRN還需要Read響應(yīng)者(它是數(shù)據(jù)源)實現(xiàn)超時。 過去,新的計時器驅(qū)動操作已添加到NIC硬件實現(xiàn)中[34]。 因此,這不是問題。

RDMA原子操作的處理類似于單包RDMA讀取消息。

我們從§4開始的模擬沒有使用針對RoCE(帶有PFC)基線的ACK,對所有讀取的極端情況進(jìn)行建模。 因此,我們的結(jié)果考慮了IRN中每數(shù)據(jù)包ACK的開銷。

5.3 支持亂序包交付

實現(xiàn)IRN的關(guān)鍵挑戰(zhàn)之一是在接收者上支持無序(OOO)數(shù)據(jù)包傳輸 - 當(dāng)前的RoCE NIC只是簡單地丟棄OOO數(shù)據(jù)包。 處理OOO數(shù)據(jù)包的一種簡單方法是將所有數(shù)據(jù)包存儲在NIC內(nèi)存中。 IRN中OOO數(shù)據(jù)包的總數(shù)受BDP上限的限制(對于我們的默認(rèn)情況,大約為110個MTU大小的數(shù)據(jù)包,如第4.1節(jié)所述)。因此,為了支持一千個數(shù)據(jù)流,一個NIC需要增加110MB的數(shù)據(jù)包緩存,這超過大多數(shù)商用RDMA網(wǎng)卡的內(nèi)存容量。

因此,我們探索了另一種實現(xiàn)策略,其中NIC將OOO數(shù)據(jù)包直接通過DMA發(fā)送到應(yīng)用程序內(nèi)存中的最終地址,并使用位圖(其大小為BDP上限)追蹤它們。 這將NIC內(nèi)存要求從每個OOO數(shù)據(jù)包1KB減少到僅幾個比特,但是我們在此處提出了一些額外的挑戰(zhàn)。 請注意,Mellanox ConnectX-5網(wǎng)卡中引入了對OOO數(shù)據(jù)包傳輸?shù)牟糠种С?,以實現(xiàn)自適應(yīng)路由[11]。 但是,它僅限于寫入和讀取操作。 我們改進(jìn)并擴展了此設(shè)計,以支持所有的RDMA操作。

我們將由亂序數(shù)據(jù)包傳送引起的問題分為四類。

5.3.1第一個數(shù)據(jù)包問題

對于某些RDMA操作,關(guān)鍵信息攜帶在消息的第一個數(shù)據(jù)包中,這是處理消息中其他數(shù)據(jù)包所必需的。 因此,啟用OOO傳送要求第一個數(shù)據(jù)包中的某些信息由所有數(shù)據(jù)包承載。

特別地,RETH報頭(包含遠(yuǎn)程存儲器位置)僅由寫消息的第一個分組攜帶。 IRN需要將其添加到每個數(shù)據(jù)包。

5.3.2 WQE匹配問題

某些操作要求到達(dá)的每個數(shù)據(jù)包與響應(yīng)者處的相應(yīng)WQE匹配。 對于有序分組到達(dá),這是隱式完成的。 但是,這種隱式匹配會被OOO數(shù)據(jù)包到達(dá)破壞。 解決此問題的方法是分配顯式WQE序列號,這些序列號在數(shù)據(jù)包報頭中攜帶,可用于識別每個數(shù)據(jù)包的相應(yīng)WQE。 IRN將此解決方法用于以下RDMA操作:

發(fā)送和立即寫入:要求發(fā)送和立即寫入請求按照發(fā)布的相同順序使用接收WQE。 因此,對于IRN,每個接收WQE以及這些操作的每個請求WQE都維護(hù)一個recv_WQE_SN,指示它們的發(fā)布順序。 該值在所有發(fā)送數(shù)據(jù)包和最后一個Write-with-Immediate數(shù)據(jù)包中攜帶,用于標(biāo)識相應(yīng)的接收WQE。 IRN還要求發(fā)送數(shù)據(jù)包攜帶數(shù)據(jù)包序列號中設(shè)置的相對偏移值,用于在放置數(shù)據(jù)時識別精確地址。

讀/原子:響應(yīng)者無法開始處理讀/原子請求R,直到所有預(yù)期在R之前到達(dá)的數(shù)據(jù)包被接收為止。 因此,需要在響應(yīng)者(已由當(dāng)前RoCE NIC維護(hù))的讀WQE緩沖區(qū)中放置OOO讀/原子請求包。 使用IRN,每個讀/原子請求WQE維護(hù)一個read_WQE_SN,由所有讀/原子請求包攜帶,并允許在該讀WQE緩沖區(qū)中識別正確的索引。

5.3.3最后的數(shù)據(jù)包問題

對于許多RDMA操作,關(guān)鍵信息在最后一個數(shù)據(jù)包中攜帶,這是完成消息處理所必需的。 因此,啟用OOO傳送需要跟蹤最后的數(shù)據(jù)包到達(dá)并將此信息存儲在端點(NIC或主存儲器上),直到該消息的所有其他數(shù)據(jù)包都到達(dá)。 我們將在下面詳細(xì)解釋這一點。

RoCE響應(yīng)器維護(hù)消息序列號(MSN),當(dāng)接收到寫入/發(fā)送消息的最后一個包或者接收到讀取/原子請求時,該消息序列號增加。該MSN值在ACK分組中被發(fā)送回請求者,并用于使相應(yīng)的請求WQE到期。當(dāng)接收到Send或Write-With-Immediate消息的最后一個數(shù)據(jù)包并產(chǎn)生CQE時,響應(yīng)者也使其接收WQE到期。 CQE填充有關(guān)于傳輸?shù)哪承┰獢?shù)據(jù),其由最后一個分組攜帶。因此,IRN需要確保即使消息的最后一個數(shù)據(jù)包到達(dá)其他數(shù)據(jù)包之前,完成信令機制也能正常工作。為此,IRN響應(yīng)者維護(hù)2位圖,除了跟蹤包p是否已到達(dá)之外,還跟蹤它是否是將觸發(fā)(1)MSN更新的消息的最后一個包,以及(2)在某些情況下,接收WQE到期,然后是CQE生成。只有在收到所有直到p的數(shù)據(jù)包后才會觸發(fā)這些操作。對于第二種情況,由p攜帶的recv_WQE_SN(如第5.3.2節(jié)中所討論的)可以識別與p中的元數(shù)據(jù)需要關(guān)聯(lián)的接收WQE,從而實現(xiàn)過早的CQE創(chuàng)建。過早的CQE可以存儲在主存儲器中,直到它在到達(dá)p的所有數(shù)據(jù)包到達(dá)之后被傳送到應(yīng)用程序。

5.3.4應(yīng)用程序級問題

某些應(yīng)用程序(例如FaRM [21])依賴于輪詢Write消息的最后一個數(shù)據(jù)包來檢測完成,這與OOO數(shù)據(jù)放置不兼容。 這種基于輪詢的方法違反了RDMA規(guī)范(Sec o9-20 [4]),并且比特別支持的方法更昂貴(FaRM [21]提到將來使用特定支持的Write-withImmediate方法以獲得更好的可擴展性)。 IRN的設(shè)計根據(jù)RDMA規(guī)范提供了所有寫完成保證。 這在擴展報告[31]的附錄§B中有更詳細(xì)的討論。

OOO數(shù)據(jù)放置還可能導(dǎo)致寫入特定存儲器位置的數(shù)據(jù)被來自較舊消息的重新發(fā)送的數(shù)據(jù)包覆蓋的情況。 通常,使用分布式內(nèi)存框架的應(yīng)用程序假定放寬內(nèi)存排序,并在需要強內(nèi)存一致性時使用應(yīng)用程序?qū)訃鷻赱14,36]。 因此,支持OOO數(shù)據(jù)放置的iWARP和Mellanox ConnectX-5都希望應(yīng)用程序能夠處理潛在的內(nèi)存覆蓋問題,而不是在NIC或驅(qū)動程序中處理它。 IRN可以采用相同的策略。 另一種方法是在驅(qū)動程序中處理此問題,方法是為新發(fā)布的請求啟用fence指示符,該請求可能會覆蓋舊的請求。

5.4 其他考量

目前,請求者發(fā)送和接收的數(shù)據(jù)包使用相同的數(shù)據(jù)包序列號(PSN)空間。 這會干擾丟失跟蹤和BDP-FC。 因此,IRN將PSN空間分成兩個不同的空間(1)sPSN來跟蹤請求者發(fā)送的請求包,以及(2)rPSN跟蹤請求者接收的響應(yīng)包。 這種解耦對應(yīng)用程序仍然是透明的,并且與當(dāng)前的RoCE數(shù)據(jù)包格式兼容。 IRN還可以支持共享接收隊列,并通過無效操作發(fā)送,并與端到端信用的使用兼容。 我們在擴展報告的附錄§B中提供了有關(guān)這些的更多細(xì)節(jié)[31]。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容