• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    RDMA高速網(wǎng)絡(luò)狀態(tài)感知與度量指標(biāo)體系研究

    2022-02-19 10:23:32徐佳瑋
    關(guān)鍵詞:網(wǎng)卡度量數(shù)據(jù)包

    徐佳瑋 嚴(yán) 明 吳 杰

    (復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院 上海 200433)(復(fù)旦大學(xué)教育部網(wǎng)絡(luò)信息安全審計(jì)與監(jiān)控工程研究中心 上海 200433)

    0 引 言

    近幾年來,數(shù)據(jù)呈爆炸式增長。根據(jù)國際超級(jí)計(jì)算機(jī)500強(qiáng)排名的數(shù)據(jù),基于TCP/IP的傳統(tǒng)以太網(wǎng)是世界排名前500中最流行的互聯(lián)方式,隨著40 Gbit/s乃至100 Gbit/s網(wǎng)卡的出現(xiàn),遠(yuǎn)程直接內(nèi)存訪問(Remote direct memory access,RDMA)技術(shù)已經(jīng)在世界頂級(jí)超級(jí)計(jì)算領(lǐng)域獨(dú)領(lǐng)風(fēng)騷[1],成為目前主流的高性能計(jì)算機(jī)互連技術(shù)之一。RDMA技術(shù)將數(shù)據(jù)直接從一臺(tái)計(jì)算機(jī)的內(nèi)存?zhèn)鬏數(shù)搅硪慌_(tái)計(jì)算機(jī),它核心在于將網(wǎng)絡(luò)層和傳輸層下移到服務(wù)器的硬件網(wǎng)卡中,使得數(shù)據(jù)報(bào)文在網(wǎng)卡上完成四層解析后直接到達(dá)應(yīng)用層軟件而無須CPU的干預(yù)。與傳統(tǒng)基于TCP/IP協(xié)議的網(wǎng)絡(luò)相比,RDMA網(wǎng)絡(luò)通過將大多網(wǎng)絡(luò)功能卸載到物理網(wǎng)卡上、繞開操作系統(tǒng)內(nèi)核、零拷貝技術(shù)實(shí)現(xiàn)在提高吞吐量的同時(shí)降低時(shí)延和CPU占用率。

    RDMA技術(shù)最早出現(xiàn)在IB(Infiniband)網(wǎng)絡(luò)中,用于高性能計(jì)算集群的互聯(lián),后來業(yè)界廠商把RDMA移植到傳統(tǒng)以太網(wǎng)上,推動(dòng)了RDMA技術(shù)的普及,這樣RDMA得以部署在目前使用最廣泛的數(shù)據(jù)中心網(wǎng)絡(luò)上。在以太網(wǎng)上RDMA又根據(jù)協(xié)議棧的不同,分為RoCE(RDMA over Converged Ethernet)和iWARP(RDMA over TCP/IP)兩種技術(shù)。根據(jù)相關(guān)的性能測試,RoCE相對(duì)于iWARP吞吐量更高、時(shí)延更低[2]。RoCE分為RoCE v1版本和RoCE v2版本,RoCE v2相對(duì)于v1來說支持了IP路由,因此現(xiàn)在RoCE網(wǎng)卡大多使用RoCE v2版本。隨著數(shù)據(jù)中心網(wǎng)絡(luò)轉(zhuǎn)發(fā)數(shù)據(jù)的增大,許多數(shù)據(jù)中心都在利用RoCE來加速網(wǎng)絡(luò)傳輸?,F(xiàn)在許多的框架、人工智能分布式模型訓(xùn)練場景、主流的數(shù)據(jù)庫系統(tǒng)、并行存儲(chǔ)文件系統(tǒng)的應(yīng)用中,也廣泛使用了RDMA技術(shù)[3-4]。另外,隨著應(yīng)用部署的復(fù)雜性增大,當(dāng)出現(xiàn)故障時(shí),非硬件故障性的網(wǎng)絡(luò)問題不容易輕易復(fù)現(xiàn),因此數(shù)據(jù)中心非常需要對(duì)RoCE網(wǎng)絡(luò)進(jìn)行實(shí)時(shí)度量。

    然而,目前業(yè)界在針對(duì)RoCE網(wǎng)絡(luò)的狀態(tài)感知監(jiān)控方案和TCP網(wǎng)絡(luò)相比還不成熟,度量指標(biāo)體系不夠完善。首先,現(xiàn)有對(duì)RoCE網(wǎng)絡(luò)的度量更多地是以依靠在本地網(wǎng)卡軟件抓包之后離線分析或用昂貴的硬件設(shè)備分析為主,缺少針對(duì)RoCE深入到應(yīng)用層業(yè)務(wù)流的基于軟件實(shí)時(shí)狀態(tài)感知系統(tǒng)。其次,從度量指標(biāo)而言,目前RDMA還沒有成熟的多維度、多層次、完善的指標(biāo)體系,RoCE廠商只給出了系統(tǒng)上硬件統(tǒng)計(jì)故障診斷信息,從單節(jié)點(diǎn)角度,憑借現(xiàn)有的網(wǎng)卡錯(cuò)誤項(xiàng)的累計(jì)值不足以了解RDMA網(wǎng)絡(luò)狀態(tài)和定位問題。另外,根據(jù)實(shí)驗(yàn)測試結(jié)果,采用本地抓包之后離線分析的方式,會(huì)對(duì)網(wǎng)卡的最大傳輸性能造成一定損耗。如圖1的測試結(jié)果所示,若在服務(wù)器節(jié)點(diǎn)本地用tcpdump之類的開源工具進(jìn)行流量捕獲從而離線分析的方法,隨著消息長度不斷增大,當(dāng)消息大小在256字節(jié)以上時(shí),本地抓包使得單網(wǎng)卡的最大傳輸性能下降了10%~47%。且對(duì)于多節(jié)點(diǎn)的離線分析,需要匯總分析結(jié)果,二次分析的分析工作復(fù)雜。

    圖1 未開啟抓包選項(xiàng)和tcpdump抓包時(shí)的網(wǎng)卡帶寬對(duì)比

    傳統(tǒng)以太網(wǎng)對(duì)TCP流的分析可以幫助數(shù)據(jù)中心網(wǎng)絡(luò)管理員優(yōu)化網(wǎng)絡(luò)管理,類似地,對(duì)RoCE網(wǎng)絡(luò)進(jìn)行類似業(yè)務(wù)流的分析也可以對(duì)網(wǎng)絡(luò)中系統(tǒng)的服務(wù)調(diào)用和數(shù)據(jù)傳輸?shù)牧髁糠植加羞M(jìn)一步的認(rèn)識(shí)。隨著RoCE的普及,對(duì)數(shù)據(jù)包的進(jìn)一步分析是很有必要的。對(duì)傳輸類型以及基于流等方面的統(tǒng)計(jì)度量,有利于進(jìn)一步研究流控機(jī)制、擁塞控制、優(yōu)化資源調(diào)度,也有助于數(shù)據(jù)中心的網(wǎng)絡(luò)管理員了解網(wǎng)絡(luò)情況,進(jìn)行故障定位和網(wǎng)絡(luò)規(guī)劃,有助于指導(dǎo)應(yīng)用服務(wù)的研發(fā)人員優(yōu)化和加速應(yīng)用。

    針對(duì)上述問題,本文設(shè)計(jì)了一種基于軟件的RDMA網(wǎng)絡(luò)狀態(tài)感知與度量系統(tǒng)并針對(duì)RoCE網(wǎng)絡(luò)進(jìn)行實(shí)現(xiàn)和實(shí)驗(yàn)評(píng)估。本文的主要貢獻(xiàn)如下:

    (1) 提出了一個(gè)多角度、多維度、多層次的RoCE網(wǎng)絡(luò)指標(biāo)度量體系,全方位分析網(wǎng)絡(luò)狀態(tài),彌補(bǔ)了現(xiàn)有工作只有硬件統(tǒng)計(jì)的錯(cuò)誤累積數(shù)據(jù)、缺失應(yīng)用層和業(yè)務(wù)流方面指標(biāo)而無法全方位感知網(wǎng)絡(luò)狀態(tài)的不足;

    (2) 設(shè)計(jì)了一種基于軟件的RDMA實(shí)時(shí)網(wǎng)絡(luò)狀態(tài)感知和度量系統(tǒng),采取旁路分布式捕獲流量的方式并同時(shí)采用Sketch流抽樣算法對(duì)RDMA的業(yè)務(wù)流進(jìn)一步分析,成本低,易于部署,可擴(kuò)展性和靈活性高,且對(duì)原傳輸節(jié)點(diǎn)的影響較??;

    (3) 針對(duì)RoCE網(wǎng)絡(luò)實(shí)現(xiàn)并模擬網(wǎng)絡(luò)場景進(jìn)行實(shí)驗(yàn)評(píng)估,實(shí)驗(yàn)結(jié)果顯示,本文系統(tǒng)能夠在較低的誤差范圍對(duì)RoCE網(wǎng)絡(luò)進(jìn)行客觀的度量,從多角度展現(xiàn)網(wǎng)絡(luò)狀態(tài)和問題,能夠?qū)?shù)據(jù)中心的故障定位和應(yīng)用服務(wù)調(diào)度提供一定指導(dǎo)。

    1 相關(guān)工作

    目前工業(yè)界和學(xué)術(shù)界針對(duì)RDMA的度量主要有三種類型,分別是基于硬件的流量捕獲抓包方式、基于軟件的流量捕獲離線分析方式及針對(duì)鏈路的帶寬時(shí)延基準(zhǔn)性能測試工具。

    文獻(xiàn)[5]介紹了ibdump,它是Mellanox公司官方提供的OFED驅(qū)動(dòng)的一個(gè)抓包組件,其缺陷是當(dāng)流量速率很高時(shí)會(huì)丟包,只適用于Mellanox的硬件設(shè)備,只能作為軟件運(yùn)行在傳輸節(jié)點(diǎn)上,它的最大捕獲能力依賴于主機(jī)上的RAM或者磁盤空間,且隨著流量增大會(huì)發(fā)生無意識(shí)無規(guī)律的丟包。另外,根據(jù)Mellanox最新的OFED驅(qū)動(dòng)文檔,ibdump僅支持Connect-X3和Connect-X3 Pro[6],不支持之后的網(wǎng)卡版本。ibdump只具有抓包功能,而不具有任何流量分析的功能。

    文獻(xiàn)[7]的CatC是LecCroy公司的一個(gè)硬件分析器。它在部署時(shí)必須串聯(lián)在一條IB鏈路中,部署繁瑣,價(jià)格昂貴,并且它抓包存儲(chǔ)下來的.ibt文件只能通過本公司的專用IBTracer軟件打開,此外CatC只適用于SDR (8 Gbit/s) 的速率且只有2 GB的存儲(chǔ)容量。

    文獻(xiàn)[8]的tcpdump是一個(gè)常用的流式網(wǎng)絡(luò)數(shù)據(jù)采集分析工具,從OFED3.2版本、Connect-X4網(wǎng)卡開始,配合libpcap 1.9.0-lp150.76.3[9]及以上版本,tcpdump可以支持捕獲RDMA數(shù)據(jù)包[10],它對(duì)截獲的數(shù)據(jù)并沒有進(jìn)行徹底解碼,更適合使用簡單的過濾規(guī)則保存到文件中,然后再使用其他程序進(jìn)行離線解碼分析。tcpdump在大流量下受性能和存儲(chǔ)容量的影響不適合長期在線實(shí)時(shí)監(jiān)測。

    文獻(xiàn)[11]的Perftest和文獻(xiàn)[12]的qperf是用于各種RDMA通訊類型的性能測試應(yīng)用程序。Perftest是Mellanox OFED驅(qū)動(dòng)中的基準(zhǔn)測試程序包,可以用于調(diào)優(yōu)和功能測試。qperf由Linux操作系統(tǒng)默認(rèn)自帶,以用來測試兩個(gè)節(jié)點(diǎn)之間的帶寬和延遲,可以用來測試RDMA傳輸?shù)闹笜?biāo)。它們都是基于單點(diǎn)的鏈路角度的測量帶寬時(shí)延的工具,不涉及對(duì)業(yè)務(wù)數(shù)據(jù)流的度量。

    現(xiàn)有關(guān)于RoCE度量的研究工作和工具,在基于硬件的流量捕獲方面,雖然在性能和精度方面較有優(yōu)勢,但是部署時(shí)需要在鏈路中部署專用硬件,成本較高,靈活性不強(qiáng);在基于軟件的RoCE流量度量方面,廠商自產(chǎn)的抓包工具只有抓包功能,開源的抓包分析工具對(duì)業(yè)務(wù)維度方面沒有進(jìn)一步的統(tǒng)計(jì),只有簡單的帶寬時(shí)延測試,缺乏業(yè)務(wù)數(shù)據(jù)的分析。并且,基于軟件的工具在傳輸節(jié)點(diǎn)上捕獲流量時(shí)需要開啟RoCE網(wǎng)卡的sniffer模式,這會(huì)帶來性能損失[13],影響原本的傳輸性能。另外,在RDMA度量體系來講,RoCE廠商除了一些基于硬件上統(tǒng)計(jì)信息外,并不關(guān)注傳輸內(nèi)容和事務(wù)本身,RDMA還沒有完善的度量指標(biāo)體系。

    2 RDMA度量指標(biāo)體系設(shè)計(jì)

    度量指標(biāo)體系的層次設(shè)計(jì)以面向應(yīng)用業(yè)務(wù)需求為目的,主要關(guān)注應(yīng)用層的指標(biāo),用以指導(dǎo)應(yīng)用加速優(yōu)化和網(wǎng)絡(luò)規(guī)劃調(diào)度,輔以部分網(wǎng)絡(luò)層面指標(biāo)和硬件故障統(tǒng)計(jì)信息來展示RoCE網(wǎng)絡(luò)狀態(tài),用以指導(dǎo)網(wǎng)絡(luò)問題和故障定位。

    原有廠商提供的硬件統(tǒng)計(jì)指標(biāo)只能從單個(gè)物理主機(jī)節(jié)點(diǎn)角度獲得某個(gè)RDMA網(wǎng)卡一些錯(cuò)誤信息總體的累計(jì)統(tǒng)計(jì)值,未細(xì)分RDMA操作和連接。而當(dāng)需要進(jìn)行網(wǎng)絡(luò)狀態(tài)感知、服務(wù)故障定位,對(duì)采用RDMA加速的服務(wù)進(jìn)行優(yōu)化調(diào)度時(shí),單從整體統(tǒng)計(jì)值上難以判定具體問題,需要分析RDMA數(shù)據(jù)包協(xié)議內(nèi)容,結(jié)合應(yīng)用層面的指標(biāo)一起聯(lián)合分析。

    如圖2所示,度量指標(biāo)體系總體上從網(wǎng)絡(luò)狀態(tài)感知和業(yè)務(wù)應(yīng)用狀態(tài)感知兩個(gè)大層面進(jìn)行劃分。網(wǎng)絡(luò)狀態(tài)感知層包括針對(duì)節(jié)點(diǎn)可用性、連接可用性、網(wǎng)絡(luò)負(fù)載狀態(tài)。業(yè)務(wù)狀態(tài)感知層包括針對(duì)RDMA操作相關(guān)的指標(biāo)和基于業(yè)務(wù)流的分析指標(biāo)。各層次之后從表征的網(wǎng)絡(luò)模型角度再向下細(xì)分,分為鏈路層、系統(tǒng)層、網(wǎng)絡(luò)層、應(yīng)用層。所有單項(xiàng)指標(biāo)從指標(biāo)意義角度,分為運(yùn)行狀態(tài)指標(biāo)和負(fù)指標(biāo)。運(yùn)行狀態(tài)指標(biāo)指的是除負(fù)指標(biāo)這類關(guān)于軟硬件錯(cuò)誤和故障信息的指標(biāo)的其他指標(biāo)。負(fù)指標(biāo)根據(jù)方向的不同,又分為作為發(fā)送端檢測到的和作為接收端檢測到的兩個(gè)角度。

    圖2 度量指標(biāo)體系層次圖

    2.1 節(jié)點(diǎn)可用性指標(biāo)

    節(jié)點(diǎn)可用性考慮的是針對(duì)網(wǎng)絡(luò)和服務(wù)性能下降時(shí),關(guān)于RDMA節(jié)點(diǎn)方面的狀態(tài)感知。

    (1) 指標(biāo)內(nèi)容。節(jié)點(diǎn)可用性指標(biāo)內(nèi)容如表1所示。

    (2) 指標(biāo)來源。鏈路層指標(biāo)通過讀取Linux系統(tǒng)下的/sys/class/infiniband/的統(tǒng)計(jì)文件獲取后計(jì)算得出[14],連同系統(tǒng)資源統(tǒng)一在本地收集。

    2.2 連接可用性指標(biāo)

    連接可用性指標(biāo)從網(wǎng)絡(luò)層數(shù)據(jù)包角度表征網(wǎng)絡(luò)狀態(tài)。

    (1) 指標(biāo)內(nèi)容。連接可用性指標(biāo)內(nèi)容如表2所示。

    (2) 指標(biāo)來源。負(fù)指標(biāo)通過讀取Linux系統(tǒng)下的/sys/class/infiniband/的統(tǒng)計(jì)文件獲取后計(jì)算得出。

    2.3 網(wǎng)絡(luò)負(fù)載指標(biāo)

    網(wǎng)絡(luò)負(fù)載指標(biāo)主要針對(duì)網(wǎng)絡(luò)規(guī)劃和網(wǎng)絡(luò)擁塞發(fā)現(xiàn)兩個(gè)角度。

    (1) 指標(biāo)內(nèi)容。網(wǎng)絡(luò)負(fù)載指標(biāo)內(nèi)容見表3。

    表3 網(wǎng)絡(luò)負(fù)載指標(biāo)

    盡管傳統(tǒng)RDMA的應(yīng)用場景多以高速傳輸為主,但隨著RDMA技術(shù)在企業(yè)應(yīng)用服務(wù)中的應(yīng)用,RDMA調(diào)用前的連接建立時(shí)間對(duì)于服務(wù)吞吐量也變得尤為重要,因此選用建立RDMA連接的TCP RTT作為指標(biāo),計(jì)算請(qǐng)求端進(jìn)行握手時(shí)發(fā)出SYN包到發(fā)送ACK的多個(gè)連接的平均值作為該連接的RTT。

    (2) 指標(biāo)來源。RTT通過度量系統(tǒng)進(jìn)行在線實(shí)時(shí)分析計(jì)算得出, RDMA操作時(shí)延通過在節(jié)點(diǎn)發(fā)送探測包計(jì)算得出。其余指標(biāo)通過讀取Linux系統(tǒng)下的/sys/class/infiniband/的統(tǒng)計(jì)文件獲取后計(jì)算得出。

    2.4 RDMA操作相關(guān)流量指標(biāo)

    RDMA操作相關(guān)指標(biāo)旨在發(fā)現(xiàn)網(wǎng)絡(luò)中各種服務(wù)調(diào)用中RDMA操作類型的分布,從而了解網(wǎng)絡(luò)中真正關(guān)鍵操作,發(fā)現(xiàn)性能瓶頸,指導(dǎo)基于RDMA的應(yīng)用的優(yōu)化方向。RDMA各Opcode類型流量速率、RDMA消息吞吐量、Queue pairs的消耗量可以為研究時(shí)延敏感型、吞吐量敏感型、帶寬敏感型的應(yīng)用之間的互相競爭分析提供依據(jù)。

    (1) 指標(biāo)內(nèi)容。RDMA操作相關(guān)指標(biāo)內(nèi)容見表4。

    表4 RDMA操作相關(guān)指標(biāo)

    (2) 指標(biāo)來源。負(fù)指標(biāo)通過讀取Linux系統(tǒng)下的/sys/class/infiniband/的統(tǒng)計(jì)文件獲取。

    opcode流量速率指標(biāo)通過度量系統(tǒng)Sketch算法進(jìn)行在線實(shí)時(shí)分析計(jì)算得出。RDMA消息吞吐量通過系統(tǒng)解析opcode中的“LAST”來標(biāo)記一條消息的結(jié)束,從而統(tǒng)計(jì)得出。其余指標(biāo)通過讀取Linux系統(tǒng)下的/sys/class/infiniband/的統(tǒng)計(jì)文件獲取后計(jì)算得出。

    本文目前針對(duì)RoCE使用最廣泛的Mellanox的RoCE v2協(xié)議,其支持ConnectX-3 Pro及以上版本的網(wǎng)卡。

    如圖3所示,RoCE在以太網(wǎng)數(shù)據(jù)包中封裝了IB。RoCE v2(Layer 3)運(yùn)作在UDP/IPv4或UDP/IPv6之上,采用專用端口4791。

    圖3 RoCE v2 報(bào)文格式[16]

    ① 操作碼(8 bits):該字段表示IBA數(shù)據(jù)包的類型。例如CNP數(shù)據(jù)包的操作碼是0x81(10000001b),Reliable Connection(RC)-SEND First的操作碼是0x00。該字段可以從數(shù)據(jù)包角度將RDMA的操作類型的統(tǒng)計(jì)細(xì)化到消息和opcode層面。

    ② Solicited Event(SE)(1 bit):該字段表示responder方是否應(yīng)該產(chǎn)生一個(gè)事件。

    ③ Pad Count(PadCnt)(2 bits):該字段表示將多少額外字節(jié)添加到有效負(fù)載以對(duì)齊4字節(jié)邊界。

    ④ 傳輸層報(bào)頭版本(TVer)(4 bits):該字段表示IBA傳輸層報(bào)頭的版本。

    ⑤ 目的Queue Pair(DestQP)(24 bits):該字段表示了目的方的Work Queue Pair(QP)的序號(hào),例如0x0000d2=210。

    ⑥ 確認(rèn)請(qǐng)求(A)(1 bit):該字段用來表示需要responder回復(fù)一次確認(rèn)。

    2.5 業(yè)務(wù)流指標(biāo)

    網(wǎng)絡(luò)流量測量除了捕獲之外需要對(duì)流量進(jìn)一步的解析和分析,從而掌握網(wǎng)絡(luò)運(yùn)行狀態(tài),提取行為特征。

    Queue pairs可以唯一表示RDMA操作,因此定義RDMA的流是同一個(gè)Queue pairs的包序列號(hào)連續(xù)的所有RDMA消息,即SrcQP+DstQP或源IP+目的IP+UDP源端口的消息。RDMA流的大小的定義是一條流在時(shí)間窗口內(nèi)的messages的字節(jié)長度總和。在TCP網(wǎng)絡(luò)中,基于流的分析是很有意義的,本文借鑒TCP網(wǎng)絡(luò)中的定義,對(duì)RDMA流的大小超過配置文件中設(shè)定的閾值的RDMA流稱為大流,小于閾值的為小流。大流一般對(duì)于帶寬較為敏感,小流一般對(duì)于時(shí)延較為敏感。

    RDMA流維度的相關(guān)指標(biāo)包括RDMA流總個(gè)數(shù)、RDMA流速率大小、RDMA大流個(gè)數(shù)、流抖動(dòng)率、小流時(shí)延。

    3 RDMA狀態(tài)感知度量系統(tǒng)總體架構(gòu)

    系統(tǒng)框架如圖4所示,系統(tǒng)總體分為度量系統(tǒng)和Agent。度量系統(tǒng)運(yùn)行在網(wǎng)絡(luò)中獨(dú)立的一臺(tái)服務(wù)器上,網(wǎng)絡(luò)流量由交換機(jī)鏡像口鏡像,可經(jīng)過分流器分流,連接到多個(gè)度量系統(tǒng)所在的服務(wù)器上,捕獲流量的網(wǎng)卡是以太網(wǎng)網(wǎng)卡。部署環(huán)境要求在被鏡像出的流量在進(jìn)入服務(wù)器之前的鏈路不發(fā)生丟包且不存在重復(fù)流量。

    圖4 系統(tǒng)架構(gòu)圖

    度量系統(tǒng)主要負(fù)責(zé)流量的旁路捕獲和分析。Agent作為度量系統(tǒng)的信息收集輔助工具運(yùn)行在每個(gè)RDMA傳輸節(jié)點(diǎn)上,主要負(fù)責(zé)監(jiān)聽傳輸節(jié)點(diǎn)的硬件網(wǎng)卡自帶的網(wǎng)卡、端口統(tǒng)計(jì),輔助探測鏈路的時(shí)延,并發(fā)送給Controller,對(duì)本地節(jié)點(diǎn)的影響很小。對(duì)于需要測量時(shí)延的節(jié)點(diǎn),Controller將指令發(fā)送給其上的Agent,之后Agent發(fā)送探測數(shù)據(jù)包得到節(jié)點(diǎn)之間的時(shí)延發(fā)送給Controller。

    采用旁路分布式全量捕獲流量和Agent輔助收集基礎(chǔ)信息相結(jié)合的方式的優(yōu)點(diǎn)是實(shí)現(xiàn)了在高流量場景下,在減輕觀察者效應(yīng)的同時(shí),可以從網(wǎng)絡(luò)和應(yīng)用兩個(gè)角度,兼顧實(shí)現(xiàn)多維度指標(biāo)的收集。

    度量系統(tǒng)從架構(gòu)上分為控制平面和數(shù)據(jù)平面。

    1) 控制平面??刂破矫媸荂ontroller控制模塊。Controller模塊主要負(fù)責(zé)配置相關(guān)元數(shù)據(jù)信息、添加度量處理任務(wù)、進(jìn)行相關(guān)網(wǎng)絡(luò)狀態(tài)的查詢操作,它還負(fù)責(zé)和節(jié)點(diǎn)上的Agent交互,檢測Agent的心跳,接收Agent上報(bào)的節(jié)點(diǎn)上的RDMA端口、錯(cuò)誤信息和時(shí)延相關(guān)數(shù)據(jù)。元數(shù)據(jù)包括服務(wù)器網(wǎng)卡IP端口、流處理的任務(wù)和類型、統(tǒng)計(jì)間隔,以及Agent采集信息的頻率和Sketch算法的參數(shù)如時(shí)間間隔、黑白名單、任務(wù)類型、大小流閾值等一系列可配置項(xiàng)。配置文件使用YAML格式進(jìn)行描述。

    2) 數(shù)據(jù)平面。數(shù)據(jù)平面分為流量捕獲解析模塊、度量任務(wù)處理模塊、整合模塊。

    (1) 流量捕獲解析模塊。Collector從網(wǎng)卡中全量捕獲流量,Parser根據(jù)RDMA協(xié)議格式解析數(shù)據(jù)包各個(gè)字段,提取有效信息。服務(wù)器每個(gè)網(wǎng)卡對(duì)應(yīng)一個(gè)Collector,之后由多個(gè)Parser并行進(jìn)行數(shù)據(jù)包的解析處理。

    (2) 度量任務(wù)處理模塊。根據(jù)配置中新建若干度量任務(wù),每個(gè)任務(wù)都會(huì)利用流量捕獲解析模塊的輸出使用不同的Sketch算法進(jìn)行統(tǒng)計(jì),將統(tǒng)計(jì)結(jié)果輸入到整合模塊。

    (3) 整合模塊。整合模塊匯總整合各個(gè)分布式度量節(jié)點(diǎn)處理的結(jié)果,對(duì)于某個(gè)指標(biāo),累計(jì)分流到的節(jié)點(diǎn)的計(jì)算數(shù)值,并提供給Controller查詢統(tǒng)計(jì)值的接口或者輸出成離線文件。

    4 系統(tǒng)主要功能具體實(shí)現(xiàn)

    4.1 流量捕獲方法

    基于硬件的流量捕獲方式有精度和性能的優(yōu)勢,但是不易部署且價(jià)格昂貴。本文采用軟件旁路方式進(jìn)行分布式流量捕獲,采用軟件方式比較輕量,可以根據(jù)配置和網(wǎng)絡(luò)情況指定過濾規(guī)則,以插件方式添加流量分析處理任務(wù),使得指標(biāo)顯示可組合,分析更加靈活。

    流量捕獲解析模塊中,Collector使用零拷貝技術(shù),根據(jù)配置文件全量捕獲設(shè)定的時(shí)間窗口的數(shù)據(jù)包。度量系統(tǒng)根據(jù)流量大小和服務(wù)器資源情況可以是一個(gè)或多個(gè),當(dāng)需要處理的流量很大時(shí),可將總流量分成交換機(jī)的多個(gè)端口鏡像再經(jīng)過分流器基于IP規(guī)則、方向、RoCE中的序列號(hào)字段過濾出分散的無重復(fù)的流量,再輸入到分布式度量服務(wù)器的多個(gè)網(wǎng)卡中并行處理。采用多網(wǎng)卡分布式抓包后整合的方式實(shí)時(shí)分析流量,整合模塊匯總顯示各網(wǎng)卡的統(tǒng)計(jì)結(jié)果。

    4.2 RDMA流維度的指標(biāo)度量方法

    在數(shù)據(jù)中心中,更關(guān)注流量的分布和趨勢,沒有必要使用hash table類型的計(jì)數(shù)器統(tǒng)計(jì)獲取非常精確的數(shù)值。采用基于概率統(tǒng)計(jì)理論的Sketch算法統(tǒng)計(jì)RDMA流維度指標(biāo)雖然會(huì)產(chǎn)生一定誤差,但是其誤差在可以接受的范圍之內(nèi),足以獲取需要的流量分布和趨勢特征[17]。此外,sketch的內(nèi)存占用更小,降低了設(shè)備的成本。

    如圖5所示,度量任務(wù)類型根據(jù)Controller配置文件下發(fā)。流量捕獲分析模塊采用純軟件方法解析出發(fā)送端、接收端、操作碼、Queue Pair、數(shù)據(jù)包大小之后,判斷數(shù)據(jù)包所屬的流是否是新流,更新時(shí)間窗口內(nèi)的流總個(gè)數(shù)和流大小。對(duì)于高于一定閾值的大流來講,判斷大流的抖動(dòng)情況;對(duì)于小于一定閾值的流來講,進(jìn)一步向Agent發(fā)送信號(hào),示意Agent定期發(fā)送時(shí)延檢測數(shù)據(jù)包,最后Agent將結(jié)果返回給Controller。

    圖5 RDMA流維度度量流程

    (1) RDMA流總個(gè)數(shù)估計(jì)。流總數(shù)估計(jì)任務(wù)使用Linear Counting(LC)算法[18]估計(jì)一個(gè)時(shí)間窗口內(nèi)不同的流的個(gè)數(shù)。LC算法是一種計(jì)數(shù)估計(jì)算法,假設(shè)一個(gè)哈希函數(shù)結(jié)果服從均勻分布,結(jié)果空間為{0,1,…,m-1}的m個(gè)值。再有一個(gè)長度為m的bitmap,每個(gè)比特都是初始化為0。對(duì)流式數(shù)據(jù)里每個(gè)元素,也就是RDMA流的標(biāo)識(shí),LC算法先通過哈希函數(shù)將標(biāo)識(shí)映射到bitmap的某個(gè)比特x上,如果第x個(gè)比特為0,那么將第x個(gè)比特設(shè)置為1。查詢時(shí),根據(jù)1的個(gè)數(shù)和比例得到關(guān)于RDMA流的總數(shù)的估計(jì)。

    (2) RDMA流大小估計(jì)、RDMA opcode大小估計(jì)。流大小估計(jì)任務(wù)和RDMA opcode大小估計(jì)任務(wù)使用Count-Min(CM)算法[19]獲得任意流在某時(shí)間窗口內(nèi)的大小估計(jì)值,即RDMA流速率,從而在下一階段針對(duì)不同類型的流進(jìn)行進(jìn)一步的分析。CM算法是一種概率數(shù)據(jù)結(jié)構(gòu),維護(hù)一個(gè)長度為i的數(shù)組,每個(gè)數(shù)組對(duì)應(yīng)j個(gè)計(jì)數(shù)器和一個(gè)對(duì)應(yīng)的哈希函數(shù),初始化每個(gè)計(jì)數(shù)器為0。面對(duì)流式數(shù)據(jù)里每個(gè)新的事件元素,計(jì)算每個(gè)元素在每個(gè)數(shù)組中根據(jù)哈希得到的值,作為數(shù)組的位置索引,然后將數(shù)組對(duì)應(yīng)位置索引下的計(jì)數(shù)器加一。當(dāng)需要查詢某個(gè)元素時(shí),返回這個(gè)元素在不同數(shù)組中計(jì)數(shù)值的最小值。

    根據(jù)Controller的配置,判定RDMA流大小大于設(shè)定閾值的流為大流,小于設(shè)定閾值的流為小流,分情況進(jìn)行下一步度量。

    (3) 大流抖動(dòng)檢測。抖動(dòng)檢測是針對(duì)大流,估計(jì)在兩個(gè)相鄰的時(shí)間窗口內(nèi),流的大小變化是否超過一定的閾值。使用與Count-Min類似的數(shù)據(jù)結(jié)構(gòu),通過比較兩個(gè)時(shí)間窗口的值的偏差和上一個(gè)時(shí)間窗口的值的比值,檢測流量大小是否發(fā)生抖動(dòng)。

    (4) 小流檢測。對(duì)于網(wǎng)絡(luò)中大小超過一定閾值的小流,進(jìn)一步探測傳輸節(jié)點(diǎn)之間的時(shí)延。Controller查詢當(dāng)前時(shí)間窗口流大小前p小的流對(duì)應(yīng)的傳輸節(jié)點(diǎn),將信號(hào)發(fā)送給節(jié)點(diǎn)上的Agent,每個(gè)Agent都可以當(dāng)做Server和Client。在下一個(gè)時(shí)間窗口內(nèi),Agent以一定頻率連續(xù)發(fā)送10個(gè)時(shí)延探測包。在時(shí)間窗口結(jié)束后,將時(shí)延探測平均值返回給Controller。

    5 實(shí) 驗(yàn)

    5.1 物理實(shí)驗(yàn)環(huán)境

    本文使用了四臺(tái)服務(wù)器與一臺(tái)交換機(jī),實(shí)驗(yàn)環(huán)境如圖6所示,其中三臺(tái)服務(wù)器用于傳輸數(shù)據(jù)且部署Agent,另一臺(tái)服務(wù)器用作運(yùn)行度量系統(tǒng)。

    圖6 實(shí)驗(yàn)環(huán)境拓?fù)鋱D

    四臺(tái)服務(wù)器使用RoCE 100G ConnectX-5網(wǎng)卡,服務(wù)器系統(tǒng)上安裝的網(wǎng)卡OFED驅(qū)動(dòng)版本為MLNX_OFED_LINUX-4.0-2.0.0.1,交換機(jī)型號(hào)為Mellanox SN2100,服務(wù)器具體規(guī)格如表5、表6所示。

    表5 服務(wù)器操作系統(tǒng)和內(nèi)核版本

    表6 服務(wù)器CPU和內(nèi)存

    傳輸節(jié)點(diǎn)之間使用官方的Perftest基準(zhǔn)性能測試工具,以及用RDMA ibverbs標(biāo)準(zhǔn)庫函數(shù)編寫的程序,模擬客戶端和服務(wù)端發(fā)送流量。

    5.2 指標(biāo)驗(yàn)證

    本節(jié)利用狀態(tài)感知度量系統(tǒng)指標(biāo)討論不同網(wǎng)絡(luò)狀態(tài)下的指標(biāo)特征變化情況。實(shí)驗(yàn)過程中,單節(jié)點(diǎn)度量系統(tǒng)服務(wù)器CPU占用率平均約為64%,Agent對(duì)服務(wù)器的CPU占用率基本低于2%,對(duì)原傳輸節(jié)點(diǎn)的資源影響非常小。

    (1) RDMA RC-Write/Send/Read操作時(shí)延隨流量變化情況。圖7顯示了單流情況下基于RDMA可靠傳輸Write/Send/Read操作隨流量增長的變化情況,Write操作的操作時(shí)延一般性低于Send和Read操作,符合RDMA的特征,并且度量系統(tǒng)分析的結(jié)果和通過tcpdump抓包后離線分析呈現(xiàn)同樣的結(jié)果。

    圖7 負(fù)指標(biāo)數(shù)值的增長情況

    (2) 建立連接時(shí)TCP RTT隨流量變化情況。如圖8所示,實(shí)驗(yàn)測量了兩個(gè)傳輸節(jié)點(diǎn)單流情況下隨著流量不斷增大,再次建立RDMA連接時(shí)的TCP RTT平均時(shí)間。當(dāng)流量在10 Gbit/s以上時(shí),建立連接時(shí)的網(wǎng)絡(luò)時(shí)延有明顯增大。度量系統(tǒng)分析的結(jié)果和通過tcpdump抓包后離線分析呈現(xiàn)同樣的結(jié)果。

    圖8 建立連接時(shí)TCP RTT隨流量變化

    (3) RoCE流個(gè)數(shù)與流大小指標(biāo)驗(yàn)證。本節(jié)測試多節(jié)點(diǎn)多流時(shí)的流大小和個(gè)數(shù)分布情況,在192.168.2.201服務(wù)器和192.168.2.20之間產(chǎn)生的10條速率小于5 Mbit/s的穩(wěn)定RDMA背景流,另外在三臺(tái)服務(wù)器上產(chǎn)生四條速率分別為1/3/4/6 Gbit/s的流。多流分布情況如圖9所示,接近橫坐標(biāo)軸的實(shí)線部分的流flow1-flow10是背景流。系統(tǒng)可以客觀顯示網(wǎng)絡(luò)中的流分布情況。

    圖9 多流流大小分布情況

    (4) RDMA 操作的相互影響。在192.168.2.206和192.168.2.202之間產(chǎn)生25個(gè)QP用來進(jìn)行RC-Send/Write/Read、UD/UC-Send、UC Write操作傳輸流量,所有操作同時(shí)開始,模擬多操作并存時(shí)的流量相互影響情況,同時(shí)作為下一節(jié)網(wǎng)絡(luò)擁塞場景模擬的流量來源。

    如圖10所示,在流量傳輸過程中,Read操作程序產(chǎn)生訪問遠(yuǎn)程地址錯(cuò)誤日志,而狀態(tài)感知系統(tǒng)可以客觀顯示由于流之間存在相互影響,Read操作先占用了大部分資源,導(dǎo)致其他操作在建立連接時(shí)略微滯后。

    圖10 多流RDMA操作的流量大小分布情況

    5.3 RDMA常見場景問題驗(yàn)證

    1) 場景一:當(dāng)傳輸過程中接收端程序斷開導(dǎo)致連接斷開的情況模擬。模擬在進(jìn)行RC-Send傳輸中接收端程序突然中止的情況,RDMA操作相關(guān)指標(biāo)變化累計(jì)和如圖11所示。

    圖11 場景一RDMA操作相關(guān)指標(biāo)變化

    發(fā)送端的Ack超時(shí)錯(cuò)誤的次數(shù)、請(qǐng)求端檢測到CQE錯(cuò)誤的次數(shù)、請(qǐng)求端檢測到CQE發(fā)生flush錯(cuò)誤的次數(shù)都同時(shí)增長。但網(wǎng)卡與鏈路的狀態(tài)無任何異常,節(jié)點(diǎn)可用性指標(biāo)、連接可用性指標(biāo)、網(wǎng)絡(luò)負(fù)載指標(biāo)正常,排除網(wǎng)絡(luò)擁塞造成的傳輸故障,表征了接收端的應(yīng)用程序存在著故障。

    (2) 場景二:網(wǎng)絡(luò)擁塞模擬。使用如圖10所示的同樣的流量生成方法,模擬單節(jié)點(diǎn)發(fā)送網(wǎng)絡(luò)擁塞的場景。如圖12、圖13所示,當(dāng)Read操作程序產(chǎn)生訪問遠(yuǎn)程地址錯(cuò)誤日志時(shí),RDMA操作時(shí)延較正常情況下增加了9.1%~87.7%,同時(shí)發(fā)送端和接收端的網(wǎng)絡(luò)負(fù)載相關(guān)指標(biāo)同時(shí)變成非零,并且接收端的CNP信號(hào)(responder-rp_cnp_handled)數(shù)量較其他指標(biāo)在傳輸時(shí)段的累積和更多,因此可以說明是發(fā)送端節(jié)點(diǎn)導(dǎo)致的網(wǎng)絡(luò)擁塞。

    圖12 RDMA RC操作時(shí)延的前后對(duì)比

    圖13 場景二網(wǎng)絡(luò)負(fù)載相關(guān)指標(biāo)數(shù)值在傳輸階段的累計(jì)

    (3) 場景三:大流抖動(dòng)模擬。針對(duì)帶寬敏感的應(yīng)用場景,模擬在大流出現(xiàn)抖動(dòng)的情況,同樣產(chǎn)生如圖9中的10條背景RDMA流,另外產(chǎn)生流量趨勢隨機(jī)變化三條高速率的RDMA流,設(shè)定大流閾值為5 Gbit/s,抖動(dòng)閾值為2.5 Gbit/s,抖動(dòng)窗口為1秒。如圖14所示,度量系統(tǒng)可以準(zhǔn)確識(shí)別出三條流的大小抖動(dòng)變化。

    圖14 場景三大流抖動(dòng)檢測

    5.4 誤差評(píng)估

    本文選取識(shí)別、檢索、分類、翻譯等領(lǐng)域常用評(píng)估指標(biāo):平均絕對(duì)誤差、平均相對(duì)誤差和準(zhǔn)確率。

    (1) 平對(duì)絕對(duì)誤差。平均絕對(duì)誤差是所有流某個(gè)指標(biāo)測量值和實(shí)際值偏差的絕對(duì)值和實(shí)際值的比值的平均。對(duì)于流的大小的估計(jì)和Opcode流量速率估計(jì)將使用平均絕對(duì)誤差來評(píng)估誤差。

    (2) 相對(duì)誤差。相對(duì)誤差是絕對(duì)誤差和測量值的平均值的比值的平均值,通常用絕對(duì)值。對(duì)于總的流個(gè)數(shù)的估計(jì)使用相對(duì)誤差來評(píng)估誤差。

    (3) 準(zhǔn)確率。準(zhǔn)確率是系統(tǒng)正確識(shí)別的指標(biāo)項(xiàng)個(gè)數(shù)和應(yīng)當(dāng)被識(shí)別出的指標(biāo)項(xiàng)個(gè)數(shù)的比值的平均值。

    除從系統(tǒng)上收集的文件數(shù)據(jù)外,其余所有指標(biāo)的真實(shí)值采用RoCE官方的Perftest基準(zhǔn)性能測試工具以及用tcpdump同步抓包離線分析的結(jié)果,和系統(tǒng)計(jì)算出的各項(xiàng)指標(biāo)進(jìn)行誤差計(jì)算。

    (1) RoCE流個(gè)數(shù)估計(jì)誤差。網(wǎng)絡(luò)中的總的RoCE流個(gè)數(shù)采用相對(duì)誤差驗(yàn)證,在三個(gè)節(jié)點(diǎn)之間隨時(shí)間變化產(chǎn)生共1~72條流量速率范圍在0.5 Mbit/s~20 Gbit/s的流,估計(jì)值和真實(shí)值的相對(duì)誤差小于2.7%。

    (2) 流大小估計(jì)和Opcode操作流量估計(jì)的誤差。流大小分布估計(jì)和RDMA操作流量估計(jì)采用平均絕對(duì)誤差,流量模擬分別采用5.2節(jié)(3)、(4)中的流量產(chǎn)生方法,測試時(shí)長為2分鐘,每兩秒計(jì)算一次,兩者的平均絕對(duì)誤差分別為4%和11.3%。

    (3)大流和流抖動(dòng)識(shí)別誤差。產(chǎn)生5條流量速率小于0.5 Gbit/s背景RDMA流,5條速率在1~5 Gbit/s的RC-send RDMA流,與離線文件對(duì)比,大流閾值設(shè)定梯度為1.5/2.5/3.5 Gbit/s,抖動(dòng)閾值設(shè)置為2 Gbit/s,流量速率大小分別變化4次,測的大流和抖動(dòng)識(shí)別準(zhǔn)確率平均值為95%。

    經(jīng)過誤差分析,該狀態(tài)感知度量系統(tǒng)可以客觀地反映網(wǎng)絡(luò)狀態(tài)的變化趨勢。

    6 結(jié) 語

    本文設(shè)計(jì)、實(shí)驗(yàn)并評(píng)估了一個(gè)可擴(kuò)展、低成本、面向多點(diǎn)網(wǎng)絡(luò)的RDMA網(wǎng)絡(luò)在線實(shí)時(shí)狀態(tài)感知度量系統(tǒng),設(shè)計(jì)了多維度多層次的RoCE網(wǎng)絡(luò)度量指標(biāo)體系,在RoCE網(wǎng)絡(luò)中針對(duì)不同類型和大小的流量對(duì)RDMA的特征數(shù)據(jù)進(jìn)行估計(jì),由此給出一些可供參考的故障診斷意見。結(jié)果顯示,系統(tǒng)可以在較低誤差下多方位展現(xiàn)網(wǎng)絡(luò)狀態(tài)。

    下一步工作將細(xì)化RDMA的操作,將更多的指標(biāo)變化的含義和網(wǎng)絡(luò)錯(cuò)誤匹配,另外考慮增加系統(tǒng)對(duì)iWARP和IB網(wǎng)絡(luò)場景下的適用支持。

    猜你喜歡
    網(wǎng)卡度量數(shù)據(jù)包
    有趣的度量
    在DDS 中間件上實(shí)現(xiàn)雙冗余網(wǎng)卡切換的方法
    模糊度量空間的強(qiáng)嵌入
    迷向表示分為6個(gè)不可約直和的旗流形上不變愛因斯坦度量
    Server 2016網(wǎng)卡組合模式
    SmartSniff
    地質(zhì)異常的奇異性度量與隱伏源致礦異常識(shí)別
    挑戰(zhàn)Killer網(wǎng)卡Realtek網(wǎng)游專用Dragon網(wǎng)卡
    基于Libpcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲器的設(shè)計(jì)與實(shí)現(xiàn)
    視覺注意的數(shù)據(jù)包優(yōu)先級(jí)排序策略研究
    辽阳市| 宝应县| 灌阳县| 瓦房店市| 乡宁县| 宿迁市| 门头沟区| 姜堰市| 申扎县| 凤山县| 洪洞县| 基隆市| 文登市| 武义县| 邯郸县| 巧家县| 民勤县| 孝感市| 晴隆县| 衡东县| 乐陵市| 三门县| 清河县| 息烽县| 方城县| 怀安县| 杂多县| 伊宁县| 油尖旺区| 温泉县| 黄冈市| 绥化市| 丹东市| 洛浦县| 吉首市| 鄢陵县| 新沂市| 石河子市| 建湖县| 邛崃市| 兴海县|