專利名稱:用戶態(tài)下基于rdma協(xié)議的遠(yuǎn)程過程調(diào)用實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)網(wǎng)絡(luò)通訊領(lǐng)域,具體涉及基于遠(yuǎn)程直接內(nèi)存訪問(RDMA)協(xié)議的遠(yuǎn)程過程調(diào)用(RPC)實(shí)現(xiàn)方法。
背景技術(shù):
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)的性能目前已經(jīng)達(dá)到每秒100千兆比特級(jí)另IJ,如何充分利用高速網(wǎng)絡(luò)的特性是我們面對(duì)的一個(gè)重要問題。RDMA使一臺(tái)計(jì)算機(jī)可以直接將信息傳送到另一臺(tái)計(jì)算機(jī)內(nèi)存中。這項(xiàng)技術(shù)通過減少處理器開銷和減少內(nèi)存的拷貝降低了時(shí)延,提高了網(wǎng)絡(luò)利用率。傳統(tǒng)用戶態(tài)下的遠(yuǎn)程過程調(diào)用傳輸基于傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議(TCP/ IP),利用TCP/IP協(xié)議來傳遞遠(yuǎn)程過程調(diào)用請(qǐng)求信息。傳統(tǒng)的TCP/IP協(xié)議在傳送用戶態(tài)請(qǐng)求信息時(shí),首先需要將請(qǐng)求信息從用戶態(tài)緩存拷貝到內(nèi)核態(tài)緩存,然后從內(nèi)核態(tài)緩存拷貝到網(wǎng)卡驅(qū)動(dòng),最后通過網(wǎng)卡驅(qū)動(dòng)發(fā)送出去,接收過程也類似,需要多次的內(nèi)存拷貝和大量的 CPU開銷。在高速網(wǎng)絡(luò)中使用TCP/IP協(xié)議會(huì)使得系統(tǒng)性能無法滿足需求。RDMA協(xié)議能夠在用戶態(tài)下直接調(diào)用網(wǎng)卡驅(qū)動(dòng),并且能將數(shù)據(jù)直接在客戶端應(yīng)用程序和服務(wù)器應(yīng)用程序之間拷貝,減少CPU和內(nèi)存拷貝開銷,能大幅提高系統(tǒng)性能。當(dāng)前在分布式存儲(chǔ)系統(tǒng)中,用戶態(tài)的應(yīng)用也越來越廣泛,如谷歌文件系統(tǒng)(Google File System), Hadoop文件系統(tǒng)(Hadoop File System)以及其他方面的一些應(yīng)用等。而這些高性能應(yīng)用都需要遠(yuǎn)程過程調(diào)用能夠提供高帶寬,低延遲的數(shù)據(jù)傳輸。將RDMA集成到遠(yuǎn)程過程調(diào)用中取代低性能的TCP/IP協(xié)議能夠有效地提高高速網(wǎng)絡(luò)(比如InfiniBand網(wǎng)絡(luò))的性能。
發(fā)明內(nèi)容
本發(fā)明提供一種用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用實(shí)現(xiàn)方法,目的在于可以通過遠(yuǎn)程過程調(diào)用協(xié)議使用現(xiàn)有高速網(wǎng)絡(luò)的RDMA特性,使得編寫遠(yuǎn)程過程調(diào)用程序的程序員能夠透明的獲得高性能低延遲的網(wǎng)絡(luò)服務(wù),為高性能應(yīng)用程序提供用戶態(tài)下的基礎(chǔ)遠(yuǎn)程過程調(diào)用庫。本發(fā)明關(guān)于用戶態(tài)下基于RDMA的遠(yuǎn)程過程調(diào)用實(shí)現(xiàn)方法,主要包括(1)RDMA協(xié)議傳輸連接的建立。在客戶端和服務(wù)器分別創(chuàng)建RDMA協(xié)議傳輸層相關(guān)的數(shù)據(jù)結(jié)構(gòu),并建立RDMA協(xié)議傳輸連接。(2)客戶端發(fā)送遠(yuǎn)程過程調(diào)用請(qǐng)求相關(guān)邏輯。(3)服務(wù)器處理請(qǐng)求以及發(fā)送響應(yīng)信息的相關(guān)邏輯。(4)客戶端接收服務(wù)器響應(yīng)信息相關(guān)邏輯。作為本發(fā)明的改進(jìn),RDMA協(xié)議傳輸連接的建立包括如下過程(1)首先在服務(wù)器構(gòu)建RDMA協(xié)議監(jiān)聽接口相關(guān)的數(shù)據(jù)結(jié)構(gòu)(包括內(nèi)存注冊(cè)等), 并調(diào)用RDMA監(jiān)聽原語監(jiān)聽來自客戶端的連接請(qǐng)求。(2)客戶端在需要調(diào)用遠(yuǎn)程過程調(diào)用請(qǐng)求之前,需要建立客戶端RDMA協(xié)議傳輸層相關(guān)數(shù)據(jù)結(jié)構(gòu),并調(diào)用RDMA協(xié)議的連接原語連接到服務(wù)器。(3)服務(wù)器監(jiān)聽到有連接請(qǐng)求時(shí),首先建立RDMA協(xié)議的遠(yuǎn)程過程調(diào)用的傳輸層相關(guān)數(shù)據(jù)結(jié)構(gòu),并調(diào)用RDMA協(xié)議的接受連接原語接受請(qǐng)求。此時(shí)連接建立完成,遠(yuǎn)程過程調(diào)用客戶端可以通過此連接發(fā)送遠(yuǎn)程過程調(diào)用請(qǐng)求和接收遠(yuǎn)程過程調(diào)用響應(yīng)信息。作為本發(fā)明的改進(jìn),RDMA協(xié)議的遠(yuǎn)程過程調(diào)用發(fā)送請(qǐng)求邏輯包括如下過程(1)請(qǐng)求數(shù)據(jù)編碼階段,對(duì)于小塊數(shù)據(jù)的請(qǐng)求,直接編碼進(jìn)入外部數(shù)據(jù)表示,跳到 ⑶。(2)請(qǐng)求數(shù)據(jù)編碼階段,對(duì)于大塊數(shù)據(jù)的請(qǐng)求,對(duì)其中的大塊數(shù)據(jù)構(gòu)建一個(gè)大塊數(shù)據(jù)鏈表數(shù)據(jù)結(jié)構(gòu),并將大塊數(shù)據(jù)鏈表數(shù)據(jù)結(jié)構(gòu)編碼到外部數(shù)據(jù)表示中,其中鏈表數(shù)據(jù)結(jié)構(gòu)包括大塊數(shù)據(jù)注冊(cè)的內(nèi)存池的句柄,大塊數(shù)據(jù)的地址和長度,鏈表數(shù)據(jù)結(jié)構(gòu)在外部數(shù)據(jù)表示中的偏移地址等。(3)將編碼后的外部數(shù)據(jù)表示通過RDMA協(xié)議的發(fā)送原語發(fā)送到服務(wù)器。作為本發(fā)明的改進(jìn),RDMA協(xié)議的遠(yuǎn)程過程調(diào)用處理請(qǐng)求并發(fā)出響應(yīng)的處理邏輯包括如下過程(1)服務(wù)器通過調(diào)用RDMA協(xié)議的接收原語接收客戶端發(fā)來的請(qǐng)求信息。(2)對(duì)于小塊數(shù)據(jù)的請(qǐng)求,直接解碼并發(fā)送到對(duì)應(yīng)的服務(wù)器處理程序完成。(3)對(duì)于大塊數(shù)據(jù)的請(qǐng)求,通過解碼獲得大塊數(shù)據(jù)的大塊數(shù)據(jù)鏈表信息,并利用這個(gè)信息通過RDMA協(xié)議的讀原語到客戶端拉取大塊的數(shù)據(jù),此時(shí)大塊數(shù)據(jù)傳輸不需要中央處理器的干預(yù)。(4)請(qǐng)求處理完成后,發(fā)送響應(yīng)信息,對(duì)于其所包括的實(shí)際響應(yīng)數(shù)據(jù)為小塊數(shù)據(jù)的響應(yīng)信息(即小的響應(yīng)信息),將其中的實(shí)際響應(yīng)數(shù)據(jù)直接編碼進(jìn)入外部數(shù)據(jù)表示,跳到 (6)。(5)對(duì)于其所包括的實(shí)際響應(yīng)數(shù)據(jù)為大塊數(shù)據(jù)的響應(yīng)信息(即大的響應(yīng)信息), 對(duì)其中的實(shí)際響應(yīng)數(shù)據(jù)構(gòu)建一個(gè)鏈表數(shù)據(jù)結(jié)構(gòu),并將該鏈表數(shù)據(jù)結(jié)構(gòu)編碼到外部數(shù)據(jù)表示中。(6)將編碼后的外部數(shù)據(jù)表示通過RDMA協(xié)議的發(fā)送原語發(fā)送回客戶端。作為本發(fā)明的改進(jìn),RDMA協(xié)議的遠(yuǎn)程過程調(diào)用接收響應(yīng)邏輯包括如下過程(1)客戶端通過調(diào)用RDMA協(xié)議的接收原語接收服務(wù)器發(fā)來的響應(yīng)信息。(2)對(duì)于小的響應(yīng)信息,直接解碼獲得其實(shí)際響應(yīng)數(shù)據(jù)并返回給上層邏輯。(3)對(duì)于大的響應(yīng)信息,通過解碼獲得實(shí)際響應(yīng)數(shù)據(jù)的大塊數(shù)據(jù)鏈表信息,并利用這個(gè)信息通過RDMA協(xié)議的讀原語從服務(wù)器拉取大塊的數(shù)據(jù),此時(shí)大塊數(shù)據(jù)傳輸不需要中央處理器的干預(yù),完成后向上層邏輯返回結(jié)果。響應(yīng)信息包括很多部分,比如信息的標(biāo)示,信息所述的對(duì)象標(biāo)示,實(shí)際的響應(yīng)數(shù)據(jù)等,小的響應(yīng)信息指響應(yīng)信息中的實(shí)際的響應(yīng)數(shù)據(jù)為小塊數(shù)據(jù),大的響應(yīng)信息指響應(yīng)信息中的實(shí)際的響應(yīng)數(shù)據(jù)為大塊數(shù)據(jù)。本發(fā)明中的小塊數(shù)據(jù)一般指小于一千字節(jié)的數(shù)據(jù)塊,大于等于一千字節(jié)的數(shù)據(jù)塊為大塊數(shù)據(jù)。本發(fā)明適用于支持RDMA協(xié)議的高速網(wǎng)絡(luò)傳輸應(yīng)用,主要面向遠(yuǎn)程過程調(diào)用的相關(guān)應(yīng)用,具有以下特點(diǎn)(1)利用遠(yuǎn)程過程調(diào)用能夠屏蔽底層網(wǎng)絡(luò)復(fù)雜性的特點(diǎn),為用戶態(tài)下的應(yīng)用程序提供透明的網(wǎng)絡(luò)服務(wù)。(2)充分利用RDMA協(xié)議高性能、低延遲的特點(diǎn),實(shí)現(xiàn)用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用,使得用戶態(tài)下的基于遠(yuǎn)程過程調(diào)用的應(yīng)用程序能夠透明的獲得RDMA協(xié)議的高性能、低延遲的優(yōu)勢(shì)。
圖1為本發(fā)明的整體架構(gòu)圖。圖2為本發(fā)明總體流程圖。圖3為本發(fā)明的服務(wù)器創(chuàng)建監(jiān)聽接口以及接受連接的流程圖。圖4為本發(fā)明的客戶端連接到服務(wù)器的流程圖。圖5為本發(fā)明的客戶端發(fā)送遠(yuǎn)程過程調(diào)用請(qǐng)求的流程圖。圖6為本發(fā)明的服務(wù)器端接收并處理遠(yuǎn)程過程調(diào)用請(qǐng)求的流程圖。圖7為本發(fā)明的服務(wù)器發(fā)出遠(yuǎn)程過程調(diào)用響應(yīng)的流程圖。圖8為本發(fā)明的客戶端接收遠(yuǎn)程過程調(diào)用響應(yīng)的流程圖。
具體實(shí)施例方式下面結(jié)合架構(gòu)流程圖對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。圖1為本發(fā)明的整體架構(gòu)圖,圖2為本發(fā)明的總體流程圖。本發(fā)明的實(shí)現(xiàn)用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用的實(shí)現(xiàn)方法,運(yùn)行于支持 RDMA協(xié)議的網(wǎng)絡(luò)之上,具體包括如下四個(gè)步驟(1) RDMA協(xié)議傳輸層的建立。在客戶端和服務(wù)器分別創(chuàng)建RDMA協(xié)議傳輸層,并建立RDMA協(xié)議傳輸連接。( 用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用發(fā)送請(qǐng)求邏輯??蛻舳税l(fā)送遠(yuǎn)程過程調(diào)用請(qǐng)求相關(guān)邏輯。( 用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用處理請(qǐng)求并發(fā)出響應(yīng)的處理邏輯。服務(wù)器處理請(qǐng)求以及發(fā)送響應(yīng)信息的相關(guān)邏輯。(4)用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用接收響應(yīng)邏輯??蛻舳私邮辗?wù)器響應(yīng)信息相關(guān)邏輯。圖3為服務(wù)器創(chuàng)建RDMA協(xié)議傳輸層流程圖。主要步驟包括(1)創(chuàng)建傳輸層數(shù)據(jù)結(jié)構(gòu)并填充RDMA協(xié)議操作;(2)為RDMA協(xié)議操作注冊(cè)內(nèi)存;(3)調(diào)用監(jiān)聽原語(RDMA Listen)開始監(jiān)聽連接請(qǐng)求;(4)當(dāng)有新連接請(qǐng)求到來時(shí),為連接請(qǐng)求創(chuàng)建一個(gè)新的傳輸通道;( 當(dāng)有遠(yuǎn)程過程調(diào)用請(qǐng)求到來時(shí),直接調(diào)用服務(wù)器處理流程。圖4為客戶端創(chuàng)建傳輸層流程圖。主要步驟包括(1)創(chuàng)建傳輸層數(shù)據(jù)結(jié)構(gòu)并填充RDMA協(xié)議操作;( 為RDMA協(xié)議操作注冊(cè)內(nèi)存;C3)發(fā)起連接請(qǐng)求;(4)完成后返回傳輸層數(shù)據(jù)結(jié)構(gòu)供遠(yuǎn)程過程調(diào)用請(qǐng)求調(diào)用。圖5為客戶端發(fā)送遠(yuǎn)程過程調(diào)用請(qǐng)求流程圖。主要步驟包括(1)創(chuàng)建外部數(shù)據(jù)表示并綁定RDMA協(xié)議相關(guān)操作;(2)將用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用請(qǐng)求的頭部消息編碼到外部數(shù)據(jù)表示中;(3)將遠(yuǎn)程過程調(diào)用請(qǐng)求信息編碼到外部數(shù)據(jù)表示中,對(duì)于大塊數(shù)據(jù)只需將他的內(nèi)存地址和長度等信息編碼,對(duì)于小塊數(shù)據(jù)直接編碼進(jìn)入外部數(shù)據(jù)表述;(4)將外部數(shù)據(jù)表示通過RDMA協(xié)議的發(fā)送原語(RDMA SEND)發(fā)送到服務(wù)器。
例如,對(duì)于客戶端寫IM數(shù)據(jù)到服務(wù)器(程序號(hào)為0x30090949,版本號(hào)為1,寫操作的操作號(hào)為0)的請(qǐng)求⑴創(chuàng)建外部數(shù)據(jù)表示(XDR);⑵將寫操作請(qǐng)求對(duì)應(yīng)的RPC協(xié)議頭部信息(程序號(hào),版本號(hào),操作號(hào)),即(0x30090949,1,0)編碼到)(DR中;(3)然后對(duì)于IM 的數(shù)據(jù),注冊(cè)內(nèi)存信息,生成三元組(注冊(cè)的內(nèi)存地址句柄handle,數(shù)據(jù)長度1M,本三元組在》)R中的偏移offset),并將三元組編碼到)(DR中,而實(shí)際數(shù)據(jù)仍然緩存在客戶端內(nèi)存中; (4)調(diào)用RDMA SEND將)(DR發(fā)送到服務(wù)器。圖6為服務(wù)器接收并處理遠(yuǎn)程過程調(diào)用請(qǐng)求的流程圖。主要步驟包括(1)創(chuàng)建外部數(shù)據(jù)表示并綁定RDMA協(xié)議相關(guān)操作;(2)從外部數(shù)據(jù)表示中解碼用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用請(qǐng)求的頭部消息;(3)從外部數(shù)據(jù)表示中解碼遠(yuǎn)程過程調(diào)用的請(qǐng)求信息,如果外部數(shù)據(jù)表示中含有大塊數(shù)據(jù),那么此時(shí)發(fā)起RDMA協(xié)議的讀原語(RDM READ)從客戶端直接拉取數(shù)據(jù)并填充到服務(wù)器遠(yuǎn)程過程調(diào)用消息數(shù)據(jù)結(jié)構(gòu)(RPC MESSAGE)中,否則直接從外部數(shù)據(jù)表示中解碼遠(yuǎn)程過程調(diào)用請(qǐng)求信息并填充到服務(wù)器遠(yuǎn)程過程調(diào)用消息數(shù)據(jù)結(jié)構(gòu)(RPC MESSAGE)中;(4)將解碼的服務(wù)器遠(yuǎn)程過程調(diào)用消息數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)(RPC MESSAGE)交給服務(wù)器處理邏輯處理。例如,對(duì)于客戶端寫IM數(shù)據(jù)到服務(wù)器的請(qǐng)求⑴創(chuàng)建外部數(shù)據(jù)表示(XDR) ; (2) 從》)R解析出遠(yuǎn)程過程調(diào)用協(xié)議頭部信息,即(0x30090949,1,0),通過這個(gè)信息,服務(wù)器找到對(duì)應(yīng)的寫操作處理例程;(3)寫操作處理例程首先解析出寫操作需要的參數(shù)信息(要寫的文件名等),然后解析出待寫數(shù)據(jù)的三元組信息(注冊(cè)的內(nèi)存地址句柄,數(shù)據(jù)長度1M,本三元組在)(DR中的偏移offset),通過這個(gè)信息調(diào)用RDMA READ直接從客戶端拉取數(shù)據(jù)參數(shù);(4)將獲得的所有參數(shù)傳遞給服務(wù)器處理函數(shù)進(jìn)行后續(xù)處理,并獲得處理結(jié)果,成功直接返回0。圖7為服務(wù)器發(fā)出遠(yuǎn)程過程調(diào)用響應(yīng)的流程圖。主要步驟包括(1)創(chuàng)建外部數(shù)據(jù)表示并綁定RDMA協(xié)議相關(guān)操作;(2)將用戶態(tài)基于遠(yuǎn)程RDMA協(xié)議的遠(yuǎn)程過程調(diào)用請(qǐng)求的頭部消息編碼到外部數(shù)據(jù)表示中;(3)將遠(yuǎn)程過程調(diào)用請(qǐng)求信息編碼到外部數(shù)據(jù)表示中,對(duì)于大塊數(shù)據(jù)只需將他的內(nèi)存地址和長度等信息編碼,對(duì)于小塊數(shù)據(jù)直接編碼進(jìn)入外部數(shù)據(jù)表述;(4)將外部數(shù)據(jù)表示通過RDMA協(xié)議的發(fā)送原語(RDMA SEND)發(fā)送到客戶端。例如,對(duì)于客戶端寫IM數(shù)據(jù)到服務(wù)器的請(qǐng)求⑴創(chuàng)建外部數(shù)據(jù)表示(XDR) ; (2) 將寫操作響應(yīng)對(duì)應(yīng)的RPC協(xié)議頭部信息(程序號(hào),版本號(hào),操作號(hào)),即(0x30090949,1,0) 編碼到)(DR中;(3)將寫操作響應(yīng)結(jié)果(成功為0),直接編碼到)(DR中;(4)調(diào)用RDMASEND 將)(DR發(fā)送回客戶端。圖8為客戶端接收遠(yuǎn)程過程調(diào)用的流程圖。主要步驟包括(1)創(chuàng)建外部數(shù)據(jù)表示并綁定RDMA協(xié)議相關(guān)操作;(2)從外部數(shù)據(jù)表示中解碼用戶態(tài)基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用請(qǐng)求的頭部消息;(3)從外部數(shù)據(jù)表示中解碼遠(yuǎn)程過程調(diào)用的請(qǐng)求信息,如果外部數(shù)據(jù)表示中含有大塊數(shù)據(jù),那么此時(shí)發(fā)起RDMA協(xié)議的讀原語(RDM READ)從服務(wù)器直接拉取數(shù)據(jù)并填充到客戶端遠(yuǎn)程過程調(diào)用消息數(shù)據(jù)結(jié)構(gòu)(RPC MESSAGE)中,否則直接從外部數(shù)據(jù)表示中解碼遠(yuǎn)程過程調(diào)用請(qǐng)求信息并填充到客戶端遠(yuǎn)程過程調(diào)用消息數(shù)據(jù)結(jié)構(gòu)(RPC MESSAGE)中;(4)將解碼的客戶端遠(yuǎn)程過程調(diào)用消息數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)(RPC MESSAGE)交給客戶端上層邏輯處理。例如,對(duì)于客戶端寫IM數(shù)據(jù)到服務(wù)器的請(qǐng)求⑴創(chuàng)建外部數(shù)據(jù)表示(XDR) ; (2) 從)(DR解析出RPC協(xié)議頭部信息,S卩(0x30090949,1,0) ; (3)解碼出寫操作響應(yīng)結(jié)果(成功為0) ; (4)將響應(yīng)結(jié)果返回客戶端上層邏輯。本實(shí)施例中的小塊數(shù)據(jù)一般優(yōu)選指小于一千字節(jié)的數(shù)據(jù)塊,大塊數(shù)據(jù)優(yōu)選為大于等于一千字節(jié)的數(shù)據(jù)塊。響應(yīng)信息包括很多部分,比如信息的標(biāo)示,信息所述的對(duì)象標(biāo)示, 實(shí)際的響應(yīng)數(shù)據(jù)等,小的響應(yīng)信息指其中的實(shí)際的響應(yīng)數(shù)據(jù)為小塊數(shù)據(jù)的響應(yīng)信息,大的響應(yīng)信息指響應(yīng)信息中的實(shí)際的響應(yīng)數(shù)據(jù)為大塊數(shù)據(jù)。
權(quán)利要求
1.用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用實(shí)現(xiàn)方法,其特征在于,具體包括如下步驟(1)RDMA協(xié)議傳輸連接的建立在客戶端和服務(wù)器分別創(chuàng)建RDMA協(xié)議傳輸層的數(shù)據(jù)結(jié)構(gòu),從而建立RDMA協(xié)議傳輸連接;(2)客戶端發(fā)送請(qǐng)求邏輯;(3)服務(wù)器處理請(qǐng)求并發(fā)出響應(yīng)信息的處理邏輯;(4)客戶端接收服務(wù)器響應(yīng)信息,實(shí)現(xiàn)遠(yuǎn)程過程調(diào)用。
2.根據(jù)權(quán)利要求1所述的用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用實(shí)現(xiàn)方法,其特征在于,所述步驟(1)中,RDMA協(xié)議傳輸連接的建立具體過程如下(1)首先在服務(wù)器構(gòu)建RDMA協(xié)議監(jiān)聽接口的數(shù)據(jù)結(jié)構(gòu),并調(diào)用RDMA監(jiān)聽原語監(jiān)聽來自客戶端的連接請(qǐng)求;(2)客戶端建立客戶端RDMA協(xié)議傳輸層的數(shù)據(jù)結(jié)構(gòu),并調(diào)用RDMA協(xié)議的連接原語連接到服務(wù)器;(3)服務(wù)器監(jiān)聽到有連接請(qǐng)求,建立RDMA協(xié)議傳輸層的數(shù)據(jù)結(jié)構(gòu),并調(diào)用RDMA協(xié)議的接受連接原語接受請(qǐng)求,此時(shí)連接建立完成。
3.根據(jù)權(quán)利要求1或2所述的用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用實(shí)現(xiàn)方法,其特征在于,所述步驟O)中,客戶端發(fā)送請(qǐng)求邏輯的具體過程如下(1)請(qǐng)求數(shù)據(jù)編碼,其中對(duì)于小塊數(shù)據(jù)的請(qǐng)求,對(duì)該小塊數(shù)據(jù)直接編碼進(jìn)入外部數(shù)據(jù)表示;對(duì)于大塊數(shù)據(jù)的請(qǐng)求,將所述大塊數(shù)據(jù)構(gòu)建為鏈表數(shù)據(jù)結(jié)構(gòu),并將該鏈表數(shù)據(jù)結(jié)構(gòu)編碼到外部數(shù)據(jù)表示中,其中鏈表數(shù)據(jù)結(jié)構(gòu)包括大塊數(shù)據(jù)注冊(cè)的內(nèi)存池的句柄,大塊數(shù)據(jù)的地址和長度以及鏈表數(shù)據(jù)結(jié)構(gòu)在外部數(shù)據(jù)表示中的偏移地址;(2)將編碼后的外部數(shù)據(jù)表示通過RDMA協(xié)議的發(fā)送原語發(fā)送到服務(wù)器,完成請(qǐng)求邏輯的發(fā)送。
4.根據(jù)權(quán)利要求1-3之一所述的用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用實(shí)現(xiàn)方法,其特征在于,所述步驟(3)中,服務(wù)器處理請(qǐng)求并發(fā)出響應(yīng)信息的處理邏輯具體過程如下(1)服務(wù)器通過調(diào)用RDMA協(xié)議的接收原語接收客戶端發(fā)來的請(qǐng)求信息;(2)處理請(qǐng)求如果是小塊數(shù)據(jù)的請(qǐng)求,直接解碼并發(fā)送到對(duì)應(yīng)的服務(wù)器處理程序,完成請(qǐng)求處理;如果是大塊數(shù)據(jù)的請(qǐng)求,通過解碼獲得大塊數(shù)據(jù)的鏈表數(shù)據(jù)結(jié)構(gòu),并利用該鏈表數(shù)據(jù)結(jié)構(gòu)通過RDMA協(xié)議的讀原語到客戶端拉取相應(yīng)的大塊的數(shù)據(jù),完成請(qǐng)求處理;(3)請(qǐng)求處理完成后,發(fā)送響應(yīng)信息的處理邏輯如果響應(yīng)信息中的實(shí)際響應(yīng)數(shù)據(jù)為小塊數(shù)據(jù),則將該實(shí)際響應(yīng)數(shù)據(jù)直接編碼進(jìn)入外部數(shù)據(jù)表示;如果響應(yīng)信息中的實(shí)際響應(yīng)數(shù)據(jù)為大塊數(shù)據(jù),則將該實(shí)際響應(yīng)數(shù)據(jù)構(gòu)建為鏈表數(shù)據(jù)結(jié)構(gòu),并將該鏈表數(shù)據(jù)結(jié)構(gòu)編碼到外部數(shù)據(jù)表示中;(4)將編碼后的外部數(shù)據(jù)表示通過RDMA協(xié)議的發(fā)送原語發(fā)送回客戶端。
5.根據(jù)權(quán)利要求1-4之一所述的用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用實(shí)現(xiàn)方法,其特征在于,所述步驟中,服務(wù)器接收響應(yīng)信息的具體過程如下(1)客戶端調(diào)用RDMA協(xié)議的接收原語接收服務(wù)器發(fā)來的響應(yīng)信息;(2)對(duì)于其實(shí)際響應(yīng)數(shù)據(jù)為小塊數(shù)據(jù)的響應(yīng)信息,直接解碼獲得其實(shí)際響應(yīng)數(shù)據(jù)并返回給上層邏輯;(3)對(duì)于其實(shí)際響應(yīng)數(shù)據(jù)為大塊數(shù)據(jù)的響應(yīng)信息,通過解碼獲得其實(shí)際響應(yīng)數(shù)據(jù)的鏈表數(shù)據(jù)結(jié)構(gòu),并利用該鏈表數(shù)據(jù)結(jié)構(gòu)通過RDMA協(xié)議的讀原語從服務(wù)器拉取相應(yīng)的數(shù)據(jù),完成后向上層邏輯返回結(jié)果。
6.根據(jù)權(quán)利要求1-5之一所述的用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用實(shí)現(xiàn)方法,其特征在于,所述小塊數(shù)據(jù)是指小于一千字節(jié)的數(shù)據(jù),大塊數(shù)據(jù)指不小于一千字節(jié)的數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用實(shí)現(xiàn)方法,屬于分布式通訊領(lǐng)域,包括(1)用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用傳輸邏輯的建立;(2)用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用發(fā)送請(qǐng)求邏輯;(3)用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用處理請(qǐng)求并發(fā)出響應(yīng)的處理邏輯;(4)用戶態(tài)下基于RDMA協(xié)議的遠(yuǎn)程過程調(diào)用接收響應(yīng)邏輯。本發(fā)明擴(kuò)充了用戶態(tài)遠(yuǎn)程過程調(diào)用的傳輸協(xié)議,使得用戶可以通過遠(yuǎn)程過程調(diào)用透明的獲得RDMA協(xié)議的高性能、低延遲等特性。
文檔編號(hào)H04L29/06GK102546612SQ20111044448
公開日2012年7月4日 申請(qǐng)日期2011年12月23日 優(yōu)先權(quán)日2011年12月23日
發(fā)明者萬勇, 付秋雷, 馮丹, 明亮, 朱挺煒, 王芳 申請(qǐng)人:華中科技大學(xué)