一種讀數(shù)據(jù)的方法及設(shè)備的制造方法
【專利摘要】一種讀數(shù)據(jù)的方法及設(shè)備,用于解決因傳輸完成命令消息而造成傳輸資源浪費(fèi)的技術(shù)問(wèn)題。第一種讀數(shù)據(jù)的方法包括:第一設(shè)備接收第二設(shè)備發(fā)送的基于RDMA協(xié)議的提交命令消息,所述提交命令消息用于請(qǐng)求通過(guò)所述第一設(shè)備讀取第一數(shù)據(jù);所述第一設(shè)備根據(jù)所述提交命令消息獲取所述第一數(shù)據(jù);所述第一設(shè)備將所述第一數(shù)據(jù)攜帶在至少一個(gè)數(shù)據(jù)包中,且所述第一設(shè)備將完成信息攜帶在所述至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中;所述完成信息用于指示所述第一數(shù)據(jù)已讀取完成;所述第一設(shè)備向所述第二設(shè)備發(fā)送所述至少一個(gè)數(shù)據(jù)包。
【專利說(shuō)明】
_種讀數(shù)據(jù)的方法及設(shè)備
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種讀數(shù)據(jù)的方法及設(shè)備。
【背景技術(shù)】
[0002]承載在交換網(wǎng)上的非易失存儲(chǔ)系統(tǒng)交互協(xié)議(NVMe over Fabrics,N0F)是承載在以太網(wǎng)上的基于閃存(flash)應(yīng)用的協(xié)議標(biāo)準(zhǔn),NOF定義了驅(qū)動(dòng)軟件與非易失存儲(chǔ)子系統(tǒng)之間交互的命令集、隊(duì)列和寄存器的接口?;贜0F,在以遠(yuǎn)程直接數(shù)據(jù)存取(Remote DirectMemory Access,RDMA)作為架構(gòu)(Fabrics)承載NVMe交互的架構(gòu)中,客戶端在需要讀取數(shù)據(jù)時(shí),可以向數(shù)據(jù)的存儲(chǔ)端發(fā)送用于讀取數(shù)據(jù)的命令,客戶端發(fā)送的命令一般被封裝成提交命令消息(commond capsule)的格式,通過(guò)基于RDMA協(xié)議的網(wǎng)絡(luò)完成交換發(fā)送到存儲(chǔ)端的命令提交隊(duì)列(Submiss1n Queue,SQ)隊(duì)列中,存儲(chǔ)端在讀取數(shù)據(jù)后,會(huì)向客戶端發(fā)送讀取的數(shù)據(jù),在數(shù)據(jù)發(fā)送完畢后,存儲(chǔ)端還會(huì)向客戶端發(fā)送用于表示讀操作已完成的信息,例如該信息可以被封裝為完成命令消息(response capsule)的格式,通過(guò)基于RDMA協(xié)議的網(wǎng)絡(luò)發(fā)送給客戶端,以表示操作完成。
[0003]可見(jiàn),基于RDMA協(xié)議的網(wǎng)絡(luò)需要傳輸多個(gè)完成命令消息,特別是在頻繁讀數(shù)據(jù)的場(chǎng)景下,傳輸大量的完成命令消息顯然比較浪費(fèi)傳輸資源,從而導(dǎo)致系統(tǒng)性能下降,
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例提供一種讀數(shù)據(jù)的方法及設(shè)備,用于解決因傳輸完成命令消息而造成傳輸資源浪費(fèi)的技術(shù)問(wèn)題。
[0005]第一方面,提供一種讀數(shù)據(jù)的方法,該方法可以包括:第一設(shè)備接收第二設(shè)備發(fā)送的基于RDMA協(xié)議的提交命令消息,該提交命令消息用于請(qǐng)求通過(guò)第一設(shè)備讀取第一數(shù)據(jù)。第一設(shè)備根據(jù)該提交命令消息獲取第一數(shù)據(jù),第一設(shè)備將第一數(shù)據(jù)攜帶在至少一個(gè)數(shù)據(jù)包中,且第一設(shè)備將完成信息攜帶在至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中,完成信息用于指示第一數(shù)據(jù)已讀取完成。第一設(shè)備向第二設(shè)備發(fā)送至少一個(gè)數(shù)據(jù)包。
[0006]本發(fā)明實(shí)施例中,第一設(shè)備在讀取第一數(shù)據(jù)后,可以將完成信息攜帶在用于承載數(shù)據(jù)的數(shù)據(jù)包中,即,可以將用于指示讀取完畢的信息,即完成信息,和數(shù)據(jù)放在一起發(fā)送,無(wú)需在數(shù)據(jù)發(fā)送完畢后再額外發(fā)送完成信息,這樣可以有效節(jié)省傳輸資源,對(duì)于兩個(gè)設(shè)備來(lái)說(shuō)也減少了交互過(guò)程,減輕設(shè)備負(fù)擔(dān),也可以在一定程度上提高系統(tǒng)性能。
[0007]結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,第一設(shè)備將第一數(shù)據(jù)攜帶在至少一個(gè)數(shù)據(jù)包中,可以通過(guò)以下方式實(shí)現(xiàn):第一設(shè)備按照最大傳輸單元的大小將第一數(shù)據(jù)分成至少一個(gè)子數(shù)據(jù),第一設(shè)備將至少一個(gè)子數(shù)據(jù)分別攜帶在與至少一個(gè)子數(shù)據(jù)一一對(duì)應(yīng)的至少一個(gè)數(shù)據(jù)包中。
[0008]最大傳輸單元規(guī)定了通信協(xié)議的某一層所能通過(guò)的最大的數(shù)據(jù)包的大小,因此數(shù)據(jù)包的大小只有滿足最大傳輸單元才能正常傳輸。而按照最大傳輸單元的大小來(lái)將第一數(shù)據(jù)分為至少一個(gè)子數(shù)據(jù),可以在滿足通信協(xié)議的規(guī)定的情況下,通過(guò)一個(gè)數(shù)據(jù)包傳輸盡可能多的數(shù)據(jù),以盡量節(jié)省傳輸資源。
[0009]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,第一設(shè)備將完成信息攜帶在至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中,可以通過(guò)以下方式實(shí)現(xiàn):第一設(shè)備將完成信息攜帶在用于攜帶第一子數(shù)據(jù)的第一數(shù)據(jù)包中。其中,第一子數(shù)據(jù)為第一數(shù)據(jù)的至少一個(gè)子數(shù)據(jù)中的一個(gè)子數(shù)據(jù),第一子數(shù)據(jù)的大小小于最大傳輸單元的大小,第一子數(shù)據(jù)中包括第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。
[0010]S卩,可以將完成信息攜帶在承載了第一數(shù)據(jù)的尾切片的數(shù)據(jù)包中。一般來(lái)說(shuō),完成信息是用于指示第一數(shù)據(jù)已讀取完成,那么將完成信息攜帶在承載了第一數(shù)據(jù)的尾切片的數(shù)據(jù)包中才最能說(shuō)明數(shù)據(jù)已讀取完成。另外,在將第一數(shù)據(jù)分為子數(shù)據(jù)時(shí),一般都是按照最大傳輸單元的最大值在進(jìn)行,例如最大傳輸單元最大支持4096字節(jié),那么可以按照4096字節(jié)來(lái)將第一數(shù)據(jù)分成至少一個(gè)子數(shù)據(jù),即除了第一數(shù)據(jù)的尾切片之外,其他子數(shù)據(jù)的大小都可以是4096字節(jié),那么,也就尾切片的大小可能會(huì)小于或等于4096字節(jié),直接選擇將完成信息攜帶在承載了尾切片的數(shù)據(jù)包中,也是減少了判斷其他數(shù)據(jù)包的大小以確定其他數(shù)據(jù)包是否能攜帶完成信息的過(guò)程,減輕設(shè)備的工作量。
[0011]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,第一設(shè)備在第一數(shù)據(jù)包的包頭中攜帶指示信息,指示信息用于指示完成信息在第一數(shù)據(jù)包中的位置。
[0012]在第一數(shù)據(jù)包里攜帶完成信息后,可以在第一數(shù)據(jù)包的包頭中攜帶指示信息,這樣接收設(shè)備在接收第一數(shù)據(jù)包后就可以根據(jù)第一數(shù)據(jù)包的包頭的指示信息從第一數(shù)據(jù)包里獲取完成?目息。
[0013]第二方面,提供另一種讀數(shù)據(jù)的方法,該方法可以包括:第二設(shè)備向第一設(shè)備發(fā)送基于RDMA協(xié)議的提交命令消息,該提交命令消息用于請(qǐng)求通過(guò)第一設(shè)備讀取第一數(shù)據(jù)。第二設(shè)備根據(jù)該提交命令消息接收第一設(shè)備發(fā)送的攜帶第一數(shù)據(jù)的至少一個(gè)數(shù)據(jù)包。其中,至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中攜帶了完成信息,該完成信息用于指示第一數(shù)據(jù)已讀取完成。
[0014]第一設(shè)備在讀取第一數(shù)據(jù)后,可以將完成信息攜帶在用于承載數(shù)據(jù)的數(shù)據(jù)包中,即,可以將完成信息和數(shù)據(jù)放在一起發(fā)送,無(wú)需在數(shù)據(jù)發(fā)送完畢后再額外發(fā)送完成信息,第二設(shè)備也無(wú)需在數(shù)據(jù)接收完成后再額外接收專門(mén)承載完成信息的消息,這樣可以有效節(jié)省傳輸資源,對(duì)于兩個(gè)設(shè)備來(lái)說(shuō)也減少了交互過(guò)程,減輕設(shè)備負(fù)擔(dān),也可以在一定程度上提高系統(tǒng)性能。
[0015]結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,完成信息攜帶在至少一個(gè)數(shù)據(jù)包中的第一數(shù)據(jù)包中,第一數(shù)據(jù)包攜帶的第一子數(shù)據(jù)為第一數(shù)據(jù)的一個(gè)子數(shù)據(jù),第一子數(shù)據(jù)中包括第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。
[0016]S卩,完成信息可以攜帶在承載了第一數(shù)據(jù)的尾切片的數(shù)據(jù)包中。一般來(lái)說(shuō),完成信息是用于指示第一數(shù)據(jù)已讀取完成,那么將完成信息攜帶在承載了第一數(shù)據(jù)的尾切片的數(shù)據(jù)包中,第二設(shè)備通過(guò)第一數(shù)據(jù)包獲得了第一數(shù)據(jù)的尾切片,又獲得了完成信息,就可以確定數(shù)據(jù)已讀取完成,后面可能無(wú)需再接收承載了第一數(shù)據(jù)的其他數(shù)據(jù)包。
[0017]結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,該方法還可以包括:第二設(shè)備獲取第一數(shù)據(jù)包的包頭攜帶的指示信息,第二設(shè)備根據(jù)指示信息確定完成信息在第一數(shù)據(jù)包中的位置,第二設(shè)備根據(jù)確定的位置從第一數(shù)據(jù)包中獲取完成信息。
[0018]在第一數(shù)據(jù)包里攜帶完成信息后,可以在第一數(shù)據(jù)包的包頭中攜帶指示信息,這樣第二設(shè)備在接收第一數(shù)據(jù)包后就可以根據(jù)第一數(shù)據(jù)包的包頭的指示信息從第一數(shù)據(jù)包的相應(yīng)位置獲取完成信息。
[0019]第三方面,提供第一種讀數(shù)據(jù)的設(shè)備,該設(shè)備可以包括存儲(chǔ)器、處理器、接收器和發(fā)送器。其中,存儲(chǔ)器可以用于存儲(chǔ)處理器執(zhí)行任務(wù)所需的指令,接收器可以用于接收第二設(shè)備發(fā)送的基于RDMA協(xié)議的提交命令消息,該提交命令消息用于請(qǐng)求通過(guò)該設(shè)備讀取第一數(shù)據(jù)。處理器可以用于執(zhí)行存儲(chǔ)器所存儲(chǔ)的指令,根據(jù)接收器接收的該提交命令消息獲取第一數(shù)據(jù),將第一數(shù)據(jù)攜帶在至少一個(gè)數(shù)據(jù)包中,且將完成信息攜帶在至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中,完成信息用于指示第一數(shù)據(jù)已讀取完成,發(fā)送器可以用于向第二設(shè)備發(fā)送至少一個(gè)數(shù)據(jù)包。
[0020]結(jié)合第三方面,在第三方面的第一種可能的實(shí)現(xiàn)方式中,處理器可以用于將第一數(shù)據(jù)攜帶在至少一個(gè)數(shù)據(jù)包中,可以通過(guò)以下方式實(shí)現(xiàn):按照最大傳輸單元的大小將第一數(shù)據(jù)分成至少一個(gè)子數(shù)據(jù),將至少一個(gè)子數(shù)據(jù)分別攜帶在與至少一個(gè)子數(shù)據(jù)一一對(duì)應(yīng)的至少一個(gè)數(shù)據(jù)包中。
[0021]結(jié)合第三方面或第三方面的第一種可能的實(shí)現(xiàn)方式,在第三方面的第二種可能的實(shí)現(xiàn)方式中,處理器可以用于將完成信息攜帶在至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中,可以通過(guò)以下方式實(shí)現(xiàn):將完成信息攜帶在用于攜帶第一子數(shù)據(jù)的第一數(shù)據(jù)包中。其中,第一子數(shù)據(jù)為第一數(shù)據(jù)的至少一個(gè)子數(shù)據(jù)中的一個(gè)子數(shù)據(jù),第一子數(shù)據(jù)的大小小于最大傳輸單元的大小,第一子數(shù)據(jù)中包括第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。
[0022]結(jié)合第三方面的第二種可能的實(shí)現(xiàn)方式,在第三方面的第三種可能的實(shí)現(xiàn)方式中,處理器還可以用于在第一數(shù)據(jù)包的包頭中攜帶指示信息,該指示信息用于指示完成信息在第一數(shù)據(jù)包中的位置。
[0023]第四方面,提供第二種讀數(shù)據(jù)的設(shè)備,該設(shè)備可以包括發(fā)送器和接收器。發(fā)送器可以用于向第一設(shè)備發(fā)送基于RDMA協(xié)議的提交命令消息,該提交命令消息用于請(qǐng)求通過(guò)第一設(shè)備讀取第一數(shù)據(jù)。接收器可以用于根據(jù)發(fā)送器發(fā)送的該提交命令消息接收第一設(shè)備發(fā)送的攜帶第一數(shù)據(jù)的至少一個(gè)數(shù)據(jù)包。其中,至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中攜帶了完成信息,完成信息用于指示第一數(shù)據(jù)已讀取完成。
[0024]結(jié)合第四方面,在第四方面的第一種可能的實(shí)現(xiàn)方式中,完成信息攜帶在至少一個(gè)數(shù)據(jù)包中的第一數(shù)據(jù)包中,第一數(shù)據(jù)包攜帶的第一子數(shù)據(jù)為第一數(shù)據(jù)的一個(gè)子數(shù)據(jù),第一子數(shù)據(jù)中包括第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。
[0025]結(jié)合第四方面的第一種可能的實(shí)現(xiàn)方式,在第四方面的第二種可能的實(shí)現(xiàn)方式中,該設(shè)備還可以包括存儲(chǔ)器和處理器。存儲(chǔ)器可以用于存儲(chǔ)處理器執(zhí)行任務(wù)所需的指令,處理器可以用于執(zhí)行存儲(chǔ)器所存儲(chǔ)的指令,獲取第一數(shù)據(jù)包的包頭攜帶的指示信息,根據(jù)指示信息確定完成信息在第一數(shù)據(jù)包中的位置,根據(jù)確定的位置從第一數(shù)據(jù)包中獲取完成?目息O
[0026]第五方面,提供第三種讀數(shù)據(jù)的設(shè)備,該設(shè)備可以包括用于執(zhí)行第一方面的方法的模塊。
[0027]第六方面,提供第四種讀數(shù)據(jù)的設(shè)備,該設(shè)備可以包括用于執(zhí)行第二方面的方法的模塊。
[0028]第七方面,提供一種計(jì)算機(jī)存儲(chǔ)介質(zhì),其中,該計(jì)算機(jī)存儲(chǔ)介質(zhì)可存儲(chǔ)程序,該程序執(zhí)行時(shí)包括第一方面中記載的任何一種讀數(shù)據(jù)的方法的部分或全部步驟。
[0029]第八方面,提供另一種計(jì)算機(jī)存儲(chǔ)介質(zhì),其中,該計(jì)算機(jī)存儲(chǔ)介質(zhì)可存儲(chǔ)程序,該程序執(zhí)行時(shí)包括第二方面中記載的任何一種讀數(shù)據(jù)的方法的部分或全部步驟。
【附圖說(shuō)明】
[0030]為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)本發(fā)明實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面所介紹的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0031 ]圖1為本發(fā)明實(shí)施例的一種可能的應(yīng)用場(chǎng)景不意圖;
[0032]圖2為本發(fā)明實(shí)施例提供的進(jìn)行讀數(shù)據(jù)的一種可能的硬件架構(gòu)示意圖;
[0033]圖3為本發(fā)明實(shí)施例提供的一種讀數(shù)據(jù)的方法的可能的流程圖;
[0034]圖4為本發(fā)明實(shí)施例提供的另一種讀數(shù)據(jù)的方法的可能的流程圖;
[0035]圖5為本發(fā)明實(shí)施例提供的基于圖4和圖5的一種讀數(shù)據(jù)的方法的可能的流程圖;
[0036]圖6A為本發(fā)明實(shí)施例提供的第二數(shù)據(jù)包的幀結(jié)構(gòu)示意圖;
[0037]圖6B為本發(fā)明實(shí)施例提供的第一數(shù)據(jù)包的幀結(jié)構(gòu)示意圖;
[0038]圖7A為現(xiàn)有技術(shù)中在NOF下讀取數(shù)據(jù)的示意圖;
[0039]圖7B為本發(fā)明實(shí)施例提供的在NOF下讀取數(shù)據(jù)的示意圖;
[0040]圖8為本發(fā)明實(shí)施例提供的第一種讀數(shù)據(jù)的設(shè)備的結(jié)構(gòu)示意圖;
[0041 ]圖9為本發(fā)明實(shí)施例提供的第二種讀數(shù)據(jù)的設(shè)備的結(jié)構(gòu)示意圖;
[0042]圖10為本發(fā)明實(shí)施例提供的第一種讀數(shù)據(jù)的設(shè)備的結(jié)構(gòu)框圖;
[0043]圖11為本發(fā)明實(shí)施例提供的第二種讀數(shù)據(jù)的設(shè)備的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0044]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明實(shí)施例保護(hù)的范圍。
[0045]本文中描述的技術(shù)可用于各種網(wǎng)絡(luò),例如基于RDMA協(xié)議的網(wǎng)絡(luò),或者也可以用于其他可能的網(wǎng)絡(luò)。
[0046]以下,對(duì)本發(fā)明實(shí)施例中的部分用語(yǔ)進(jìn)行解釋說(shuō)明,以便于本領(lǐng)域技術(shù)人員理解。
[0047]I)終端設(shè)備,是指向用戶提供語(yǔ)音和/或數(shù)據(jù)連通性的設(shè)備,例如可以包括具有無(wú)線連接功能的手持式設(shè)備、或連接到無(wú)線調(diào)制解調(diào)器的處理設(shè)備。該終端設(shè)備可以經(jīng)無(wú)線接入網(wǎng)(Rad1 Access Network,RAN)與核心網(wǎng)進(jìn)行通信,與RAN交換語(yǔ)音和/或數(shù)據(jù)。該終端設(shè)備可以包括UE、無(wú)線終端設(shè)備、移動(dòng)終端設(shè)備、訂戶單元(Subscriber Unit)、訂戶站(Subscriber Stat1n),移動(dòng)站(Mobile Stat1n)、移動(dòng)臺(tái)(Mobile)、遠(yuǎn)程站(RemoteStat1n)、接入點(diǎn)(Access Point,AP)、遠(yuǎn)程終端設(shè)備(Remote Terminal)、接入終端設(shè)備(Access Terminal)、用戶終端設(shè)備(User Terminal)、用戶代理(User Agent)、或用戶裝備(User Device)等。例如,可以包括移動(dòng)電話(或稱為“蜂窩”電話),具有移動(dòng)終端設(shè)備的計(jì)算機(jī),便攜式、袖珍式、手持式、計(jì)算機(jī)內(nèi)置的或者車載的移動(dòng)裝置。例如,個(gè)人通信業(yè)務(wù)(Personal Communicat1n Service,PCS)電話、無(wú)繩電話、會(huì)話發(fā)起協(xié)議(SIP)話機(jī)、無(wú)線本地環(huán)路(Wireless Local Loop,WLL)站、個(gè)人數(shù)字助理(Personal Digital Assistant,PDA)等設(shè)備。
[0048]2)網(wǎng)絡(luò)設(shè)備,例如包括基站(例如,接入點(diǎn)),具體可以是指接入網(wǎng)中在空中接口上通過(guò)一個(gè)或多個(gè)扇區(qū)與無(wú)線終端設(shè)備通信的設(shè)備?;究捎糜趯⑹盏降目罩袔c網(wǎng)際協(xié)議(IP)分組進(jìn)行相互轉(zhuǎn)換,作為無(wú)線終端設(shè)備與接入網(wǎng)的其余部分之間的路由器,其中接入網(wǎng)的其余部分可包括IP網(wǎng)絡(luò)?;具€可協(xié)調(diào)對(duì)空中接口的屬性管理。例如,基站可以是無(wú)線網(wǎng)絡(luò)控制器(Rad1 Network Controller,RNC)或基站控制器(Base Stat1n Controller,BSC),或者也可以是演進(jìn)的LTE系統(tǒng)(LTE-Advanced,LTE-A)中的演進(jìn)型基站(NodeBSeNBSe-NodeB,evolut1nal Node B),本發(fā)明實(shí)施例并不限定。
[0049]3)第一設(shè)備,例如可以包括終端設(shè)備,或者也可以包括網(wǎng)絡(luò)設(shè)備。
[0050]第二設(shè)備,例如可以包括終端設(shè)備,或者也可以包括網(wǎng)絡(luò)設(shè)備。
[0051]其中,第一設(shè)備的類型和第二設(shè)備的類型可以相同,或者也可以不同。例如可以兩個(gè)設(shè)備都是終端設(shè)備或者兩個(gè)設(shè)備都是網(wǎng)絡(luò)設(shè)備,或者也可以一個(gè)設(shè)備是終端設(shè)備另一個(gè)設(shè)備是網(wǎng)絡(luò)設(shè)備。
[0052]4)本發(fā)明實(shí)施例中的術(shù)語(yǔ)“系統(tǒng)”和“網(wǎng)絡(luò)”可被互換使用?!岸鄠€(gè)”是指兩個(gè)或兩個(gè)以上。“和/或”,描述關(guān)聯(lián)對(duì)象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,A和/或B,可以表示:單獨(dú)存在A,同時(shí)存在A和B,單獨(dú)存在B這三種情況。另外,字符,如無(wú)特殊說(shuō)明,一般表示前后關(guān)聯(lián)對(duì)象是一種“或”的關(guān)系。
[0053]請(qǐng)參見(jiàn)圖1,首先介紹本發(fā)明實(shí)施例的一種可能的應(yīng)用架構(gòu)。
[0054]例如將需請(qǐng)求其他設(shè)備讀取數(shù)據(jù)的設(shè)備稱為客戶端,將需讀取數(shù)據(jù)并將讀取的數(shù)據(jù)發(fā)送給請(qǐng)求數(shù)據(jù)的設(shè)備的設(shè)備稱為存儲(chǔ)端。例如客戶端可以包括NVMe客戶端軟件(NVMeHost software)和RDMA模塊,其中NVMe客戶端軟件可以用于生成用于請(qǐng)求數(shù)據(jù)的提交命令消息,RDMA模塊可以通過(guò)基于RDMA協(xié)議的網(wǎng)絡(luò)發(fā)送該提交命令消息。例如存儲(chǔ)端可以包括RDMA模塊、NVMe控制器(NVMe controIler)和存儲(chǔ)模塊,數(shù)據(jù)都存儲(chǔ)在存儲(chǔ)模塊中,圖1中以4個(gè)存儲(chǔ)模塊為例,在實(shí)際應(yīng)用中存儲(chǔ)模塊的數(shù)量不限于此。另外為了區(qū)分,圖1中將客戶端的RDMA模塊稱為RDMA模塊I,將存儲(chǔ)端的RDMA模塊稱為RDMA模塊2。圖1中,以客戶端和存儲(chǔ)端之間的交換網(wǎng)是基于RDMA協(xié)議的網(wǎng)絡(luò)為例。
[0055]在圖1中可以看到,若按照現(xiàn)有技術(shù)的方式,例如客戶端向存儲(chǔ)端發(fā)送提交命令消息,則存儲(chǔ)端除了向客戶端發(fā)送提交命令消息所請(qǐng)求的數(shù)據(jù)之外,還要向客戶端發(fā)送完成命令消息,較為浪費(fèi)傳輸資源。
[0056]可選的,RDMA模塊,可以包括能夠?qū)崿F(xiàn)RDMA協(xié)議的功能模塊。
[0057]可選的,圖1中的NVMe客戶端軟件、RDMA模塊1、RDMA模塊2、和NVMe控制器,都是既可以通過(guò)軟件方式實(shí)現(xiàn),也可以通過(guò)硬件方式實(shí)現(xiàn),存儲(chǔ)模塊一般可以通過(guò)硬件方式實(shí)現(xiàn)。
[0058]請(qǐng)參見(jiàn)圖2,介紹本發(fā)明實(shí)施例的另一種可能的應(yīng)用架構(gòu)。圖2中的客戶端可以包括中央處理器(CHJ)和網(wǎng)卡,CI3U和網(wǎng)卡例如可以通過(guò)一種總線和接口標(biāo)準(zhǔn)(PeripheralComponent Interconnect-Express,PCIe)連接,當(dāng)然也可能通過(guò)其他方式連接。例如圖2中的CPU能夠?qū)崿F(xiàn)圖1中的NVMe客戶端軟件的功能,圖2中的網(wǎng)卡能夠?qū)崿F(xiàn)圖1中的RDMA模塊I的功能。存儲(chǔ)端可以包括RDMA模塊和NVMe控制器,NVMe控制器連接存儲(chǔ)模塊,為了與圖1保持連續(xù),圖2中存儲(chǔ)端的RDMA模塊繼續(xù)標(biāo)示為RDMA模塊2。圖2中的RDMA模塊2能夠?qū)崿F(xiàn)圖1中的RDMA模塊2的功能,圖2中的NVMe控制器能夠?qū)崿F(xiàn)圖1中的NVMe控制器的功能。圖2中的存儲(chǔ)模塊也繼續(xù)以4個(gè)為例。在圖2中,以RDMA模塊和NVMe控制器都通過(guò)FPGA實(shí)現(xiàn)為例,即將RDMA的功能和NVMe控制器的功能融合在同一個(gè)FPGA內(nèi)部,S卩FPGA兼容對(duì)客戶端發(fā)送的基于RDMA協(xié)議的幀的解析以及兼容NVMe控制器,以及還承載向客戶端發(fā)送基于RDMA協(xié)議的幀的功能和對(duì)存儲(chǔ)模塊進(jìn)行讀寫(xiě)的功能。在實(shí)際應(yīng)用中當(dāng)然不限于此,存儲(chǔ)端的RDMA模塊和NVMe控制器除了可以通過(guò)FPGA實(shí)現(xiàn)之外,還可以通過(guò)任意可能的硬件實(shí)現(xiàn),例如在通過(guò)其他硬件實(shí)現(xiàn)時(shí),存儲(chǔ)端的RDMA模塊和NVMe控制器可以通過(guò)不同的硬件實(shí)現(xiàn),或者也可以通過(guò)同一硬件實(shí)現(xiàn)。
[0059]可選的,圖2中的存儲(chǔ)模塊以flash為例,在實(shí)際應(yīng)用中不限于此,例如存儲(chǔ)模塊還可以通過(guò)雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(Double Data Rate,DDR)實(shí)現(xiàn),或者還可以通過(guò)其他可能的硬件模塊實(shí)現(xiàn)。圖2中的flash能夠?qū)崿F(xiàn)圖1中的存儲(chǔ)模塊的功能。
[0060]可選的,存儲(chǔ)端還可以包括CPU,F(xiàn)PGA與CPU例如可以通過(guò)PCIe連接,或者也可能通過(guò)其他方式連接。交換網(wǎng)例如可以是基于RDMA協(xié)議的網(wǎng)絡(luò)。
[0061 ]可選的,例如客戶端和存儲(chǔ)端分別是兩塊獨(dú)立的單板,這兩塊單板通過(guò)交換網(wǎng),例如基于RDMA協(xié)議的網(wǎng)絡(luò)實(shí)現(xiàn)拉遠(yuǎn)。在通信過(guò)程中,例如客戶端和存儲(chǔ)端可以通過(guò)客戶端的CPU和存儲(chǔ)端的CPU完成RDMA鏈路的協(xié)商,同時(shí)可以通過(guò)PCIe的接口完成對(duì)各自單板的硬件配置管理等。存儲(chǔ)端即承載N0F,將RDMA和NVMe融合在同一個(gè)現(xiàn)場(chǎng)可編程門(mén)陣列(Field —Programmable Gate Array,F(xiàn)PGA)內(nèi)部,兼容客戶端的RDMA協(xié)議解析和flash的控制器,承載客戶端RDMA幀的解析發(fā)送和flash的讀寫(xiě)功能。
[0062]可選的,例如客戶端的CPU可以實(shí)現(xiàn)圖1中的NVMe客戶端軟件的功能,例如客戶端的網(wǎng)卡可以實(shí)現(xiàn)圖1中的RDMA模塊I的功能。當(dāng)然,在實(shí)際應(yīng)用中也不限于此,例如客戶端也可以通過(guò)其他可能的硬件模塊來(lái)實(shí)現(xiàn)圖1中的NVMe客戶端軟件的功能,例如可以通過(guò)微控制單元(MicrocontrolIer Unit,MOJ)來(lái)實(shí)現(xiàn),客戶端也可以通過(guò)其他可能的硬件模塊來(lái)實(shí)現(xiàn)圖1中的RDMA模塊I的功能,只要能夠?qū)崿F(xiàn)RDMA協(xié)議的硬件模塊即可。
[0063]可選的,例如存儲(chǔ)端的通過(guò)FPGA實(shí)現(xiàn)的RDMA模塊可以實(shí)現(xiàn)圖1中的RDMA模塊2的功能,存儲(chǔ)端的通過(guò)FPGA實(shí)現(xiàn)的NVMe控制器能夠?qū)崿F(xiàn)圖1中的NVMe控制器的功能。
[0064]圖1和圖2均是以將本發(fā)明實(shí)施例提供的方案應(yīng)用在NOF為例,在實(shí)際應(yīng)用中當(dāng)然不限于此。
[0065]下面結(jié)合附圖介紹本發(fā)明實(shí)施例提供的方法。
[0066]請(qǐng)參見(jiàn)圖3,提供一種讀數(shù)據(jù)的方法,該方法的流程描述如下:
[0067]步驟301:第一設(shè)備接收第二設(shè)備發(fā)送的基于RDMA協(xié)議的提交命令消息,提交命令消息用于請(qǐng)求通過(guò)第一設(shè)備讀取第一數(shù)據(jù);
[0068]步驟302:第一設(shè)備根據(jù)提交命令消息獲取第一數(shù)據(jù);
[0069]步驟303:第一設(shè)備將第一數(shù)據(jù)攜帶在至少一個(gè)數(shù)據(jù)包中,且第一設(shè)備將完成信息攜帶在至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中;完成信息用于指示第一數(shù)據(jù)已讀取完成;
[0070]步驟304:第一設(shè)備向第二設(shè)備發(fā)送至少一個(gè)數(shù)據(jù)包。
[0071]請(qǐng)參見(jiàn)圖4,提供另一種讀數(shù)據(jù)的方法,該方法的流程描述如下:
[0072]步驟401:第二設(shè)備向第一設(shè)備發(fā)送基于RDMA協(xié)議的提交命令消息,提交命令消息用于請(qǐng)求通過(guò)第一設(shè)備讀取第一數(shù)據(jù);
[0073]步驟402:第二設(shè)備根據(jù)提交命令消息接收第一設(shè)備發(fā)送的攜帶第一數(shù)據(jù)的至少一個(gè)數(shù)據(jù)包;其中,至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中攜帶了完成信息;完成信息用于指示第一數(shù)據(jù)已讀取完成。
[0074]可選的,圖3和圖4中所述的第一設(shè)備可以是圖1或圖2中的存儲(chǔ)端,圖3和圖4中所述的第二設(shè)備可以是圖1或圖2中的客戶端。
[0075]圖3和圖4是相應(yīng)的方法,因此下面一起介紹。
[0076]請(qǐng)參見(jiàn)圖5,介紹一種比較完整的在NOF下讀取數(shù)據(jù)的例子,圖5的例子可以依托于圖1或圖2的架構(gòu)實(shí)現(xiàn),即圖5繼續(xù)以將本發(fā)明實(shí)施例提供的方案應(yīng)用在NOF為例,且在介紹過(guò)程中以依托于圖1所示的架構(gòu)為例。另外在下面的介紹過(guò)程中,以第一設(shè)備是存儲(chǔ)端、第二設(shè)備是客戶端為例。
[0077]1、客戶端的NVMe客戶端軟件生成用于讀取數(shù)據(jù)的提交命令信息,并將提交命令信息發(fā)送給客戶端的RDMA模塊,即圖1中的RDMA模塊I。
[0078]例如,若按照?qǐng)D2的架構(gòu),那么NVMe客戶端軟件可以承載在CPU中,NVMe客戶端軟件可以通過(guò)PCI e將提交命令信息發(fā)送給網(wǎng)卡。
[0079 ] 2、客戶端的RDMA模塊I將提交命令消息通過(guò)基于RDMA協(xié)議的網(wǎng)絡(luò),即客戶端和存儲(chǔ)端之間的交換網(wǎng),發(fā)送給存儲(chǔ)端的RDMA模塊2,則存儲(chǔ)端的RDMA模塊2可以接收提交命令消息。
[0080 ]例如若按照?qǐng)D2的架構(gòu),則客戶端的RDMA模塊I可以承載在網(wǎng)卡中,該網(wǎng)卡例如可以是標(biāo)準(zhǔn)網(wǎng)卡,在該網(wǎng)卡中集成了 RDMA的標(biāo)準(zhǔn)協(xié)議。該網(wǎng)卡接收提交命令信息后,可以將接收的提交命令信息按照RDMA協(xié)議進(jìn)行封裝,得到提交命令消息,之后通過(guò)交換網(wǎng)將提交命令消息發(fā)送給存儲(chǔ)端的RDMA模塊2。根據(jù)協(xié)議的要求,被封裝后的幀會(huì)攜帶目的地址。即在本實(shí)施例中,提交命令消息是基于RDMA協(xié)議的消息。
[0081 ]提交命令消息是NOF中規(guī)定的命令格式,提交命令消息可以是commond capsule格式的消息,因?yàn)榭蛻舳说腞DMA模塊I是將提交命令消息發(fā)送給存儲(chǔ)端的SQ隊(duì)列,因此又可以將提交命令消息稱為SQ消息。在其他網(wǎng)絡(luò)中,提交命令消息自然可以有其他的定義及格式,只要提交命令消息是用于請(qǐng)求其他設(shè)備讀取數(shù)據(jù)的消息即可,提交命令消息的名稱不構(gòu)成對(duì)該消息本身的限制。
[0082]例如RDMA模塊2可以通過(guò)發(fā)送(send)操作來(lái)發(fā)送封裝后的幀,send操作是RDMA中的一種固有的操作類型。
[0083]3、存儲(chǔ)端的RDMA模塊2解析接收的提交命令消息,將提交命令消息所攜帶的讀指令發(fā)送給存儲(chǔ)端的NVME控制器,則NVME控制器可以接收該讀指令。
[0084]其中,讀指令可以理解為提交命令消息攜帶的有效信息,比如NVMe客戶端軟件發(fā)送給RDMA模塊I的提交命令信息就可以用于指示該讀指令,比如提交命令信息可以是該讀指令本身,或者可以其他用于獲得該讀指令的指示信息,則RDMA模塊I根據(jù)提交命令信息就可以獲得該讀指令,并可以將該讀指令攜帶在提交命令消息中。一般來(lái)說(shuō),一個(gè)提交命令消息可以攜帶一個(gè)指令,或者攜帶讀指令,或者攜帶寫(xiě)指令。
[0085]存儲(chǔ)端的RDMA模塊2接收來(lái)自交換網(wǎng)的命令幀,對(duì)其進(jìn)行校驗(yàn)和解析,可以得到提交命令消息,以及可以從提交命令消息中得到讀指令,從而可以將讀指令發(fā)送給存儲(chǔ)端的NVMe控制器。例如讀指令中可以攜帶需讀取的數(shù)據(jù)的長(zhǎng)度、及需讀取的數(shù)據(jù)的地址等信息。
[0086]4、存儲(chǔ)端的NVMe控制器接收讀指令后,可以從存儲(chǔ)模塊中讀取數(shù)據(jù),例如將該數(shù)據(jù)稱為第一數(shù)據(jù),并將讀取的第一數(shù)據(jù)發(fā)送給存儲(chǔ)端的RDMA模塊2,則RDMA模塊2可以接收第一數(shù)據(jù),即RDMA模塊2獲取第一數(shù)據(jù)。
[0087]可選的,存儲(chǔ)端的NVMe控制器中設(shè)置了多個(gè)并行的SQ處理引擎,也就是說(shuō),NVMe控制器在處理指令時(shí)可以并行處理,例如可以并行處理多個(gè)讀指令和/或?qū)懼噶睿@樣可以提高處理效率。
[0088]5、存儲(chǔ)端的RDMA模塊2將第一數(shù)據(jù)分成至少一個(gè)子數(shù)據(jù),RDMA模塊2將至少一個(gè)子數(shù)據(jù)和完成信息承載在數(shù)據(jù)包中。其中,完成信息可以用于指示第一數(shù)據(jù)已讀取完成。
[0089]存儲(chǔ)端的RDMA模塊2接收第一數(shù)據(jù)后,可以按照RDMA協(xié)議支持的最大傳輸單元(Maximum Transmiss1n Unit,MTU)的大小來(lái)將第一數(shù)據(jù)分為至少一個(gè)部分,其中每個(gè)部分可以稱為一個(gè)切片,也可以稱為一個(gè)子數(shù)據(jù),即至少一個(gè)部分,或者稱為至少一個(gè)子數(shù)據(jù),里面的每個(gè)子數(shù)據(jù)都是第一數(shù)據(jù)的一部分。RDMA模塊2可以生成至少一個(gè)數(shù)據(jù)包,并將至少一個(gè)子數(shù)據(jù)分別攜帶在與至少一個(gè)子數(shù)據(jù)一一對(duì)應(yīng)的至少一個(gè)數(shù)據(jù)包中,這里的一一對(duì)應(yīng),可以是指每個(gè)數(shù)據(jù)包攜帶一個(gè)子數(shù)據(jù),而究竟哪個(gè)數(shù)據(jù)包攜帶哪個(gè)子數(shù)據(jù),比如可以預(yù)先設(shè)定,或者也可以隨機(jī),或者還可以有其他分配方式,本發(fā)明實(shí)施例不作限制。
[0090]可選的,RDMA模塊2在發(fā)送攜帶了第一數(shù)據(jù)的數(shù)據(jù)包時(shí),可以將完成信息攜帶在數(shù)據(jù)包的凈荷(payload)中一起發(fā)送給客戶端的RDMA模塊I,即,在數(shù)據(jù)包中可以將完成信息和數(shù)據(jù)放在一起,這種傳輸方式可以稱為RDMA最后的寫(xiě)切片攜帶立即數(shù)(RDMA WRITE LASTwith Immediate)的方式。
[0091]存儲(chǔ)端讀取的第一數(shù)據(jù)需按照RDMA協(xié)議配置的MTU的大小進(jìn)行發(fā)送,第一數(shù)據(jù)分成的每個(gè)子數(shù)據(jù)的大小都需小于等于MTU的大小。例如RDMA協(xié)議支持的MTU的大小為4096字節(jié)(Byte),那么如果第一數(shù)據(jù)的大小為2G,則RDMA模塊2可以將第一數(shù)據(jù)分成2G/4096Byte個(gè)部分,每一個(gè)部分就是一個(gè)RDMA寫(xiě)(RDMA_WRITE)切片,也可以稱為子數(shù)據(jù),S卩,在本發(fā)明實(shí)施例中,切片的概念和子數(shù)據(jù)的概念可互換??蛇x的,根據(jù)讀取的數(shù)據(jù)的長(zhǎng)度不同,得到的子數(shù)據(jù)的數(shù)量可能不同,另外根據(jù)MTU的大小不同,得到的子數(shù)據(jù)的大小也可能不同。按照MTU來(lái)將第一數(shù)據(jù)分為至少一個(gè)子數(shù)據(jù),可以在滿足通信協(xié)議的規(guī)定的情況下,通過(guò)一個(gè)數(shù)據(jù)包傳輸盡可能多的數(shù)據(jù),以盡量節(jié)省傳輸資源。
[0092]可選的,如果將完成信息封裝在一個(gè)單獨(dú)的消息中進(jìn)行發(fā)送,則可以以responsecapsule格式進(jìn)行封裝,那么封裝后得到的消息就可以是完成命令消息。因此可以認(rèn)為,本發(fā)明實(shí)施例是將需要單獨(dú)發(fā)送的完成信息放在數(shù)據(jù)中一并發(fā)送了,這樣可以節(jié)省傳輸資源。
[0093]可選的,完成命令消息也是NOF中規(guī)定的命令格式,完成命令消息例如可以是response capsule格式的消息,因?yàn)榇鎯?chǔ)端在向客戶端發(fā)送完成命令消息之前,是將完成命令消息先存儲(chǔ)到存儲(chǔ)端的CQ隊(duì)列,因此又可以將完成命令消息稱為CQ消息。
[0094]可選的,RDMA模塊2可以將完成信息攜帶在至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中進(jìn)行發(fā)送。例如,RDMA模塊2可以將完成信息攜帶在至少一個(gè)數(shù)據(jù)包中的最后一個(gè)數(shù)據(jù)包中進(jìn)行發(fā)送,例如將最后一個(gè)數(shù)據(jù)包稱為第一數(shù)據(jù)包,例如第一數(shù)據(jù)包攜帶的子數(shù)據(jù)可以稱為第一數(shù)據(jù)的尾切片,這種方式形成新的幀格式(即第一數(shù)據(jù)包的幀格式)可以稱為RDMAWRITE LAST with Immediate,這是RDMA協(xié)議中固有的命名規(guī)范,通俗地講可以認(rèn)為是搭“順風(fēng)車”的概念。那么在至少一個(gè)數(shù)據(jù)包中,第一數(shù)據(jù)包相當(dāng)于攜帶了立即數(shù),這中帶立即數(shù)的幀可以攜帶立即數(shù)字節(jié)域,例如可以將立即數(shù)字節(jié)域攜帶在第一數(shù)據(jù)包的幀頭部位,例如該立即數(shù)字節(jié)域的長(zhǎng)度可以是4字節(jié),可以用來(lái)指示完成信息在第一數(shù)據(jù)包中的位置,以便接收端可以正確讀取完成信息。其中所謂的最后一個(gè)數(shù)據(jù)包,可以是指該數(shù)據(jù)包中攜帶的子數(shù)據(jù)的尾地址就是第一數(shù)據(jù)的尾地址,比如將第一數(shù)據(jù)包攜帶子數(shù)據(jù)稱為第一子數(shù)據(jù),那么第一子數(shù)據(jù)的尾地址就是第一數(shù)據(jù)的尾地址,第一子數(shù)據(jù)就是第一數(shù)據(jù)的尾切片。
[0095]一般來(lái)說(shuō),完成信息是用于指示第一數(shù)據(jù)已讀取完成,那么將完成信息攜帶在最后一個(gè)數(shù)據(jù)包時(shí)才最能說(shuō)明數(shù)據(jù)已讀取完成。另外,RDMA模塊2在將第一數(shù)據(jù)分為子數(shù)據(jù)時(shí),一般都是按照MTU的最大值在進(jìn)行,例如MTU的最大支持4096字節(jié),那么RDMA模塊2可以按照4096字節(jié)來(lái)將第一數(shù)據(jù)分成至少一個(gè)子數(shù)據(jù),即除了第一數(shù)據(jù)的尾切片之外,其他子數(shù)據(jù)的大小都可以是4096字節(jié),那么,也就尾切片的大小可能會(huì)等于4096字節(jié),或者可能小于4096字節(jié),那么這里也需要分情況,如果尾切片的大小小于4096字節(jié),即小于MTU的最大值,則RDMA模塊2可以將完成信息攜帶在承載尾切片的數(shù)據(jù)包中進(jìn)行發(fā)送,而如果切分后得到的尾切片的大小等于4096字節(jié),那么RDMA模塊2也可以不將完成信息攜帶在承載最后尾切片的數(shù)據(jù)包中進(jìn)行發(fā)送,而可以繼續(xù)按照現(xiàn)有技術(shù)的方式,在發(fā)送完數(shù)據(jù)后再發(fā)送完成命令消息,以避免數(shù)據(jù)包的大小超過(guò)MTU的最大值。但切分后得到的尾切片的大小等于4096字節(jié)的這種情況畢竟是少數(shù)情況,因此本發(fā)明實(shí)施例能夠在很大程度上節(jié)省傳輸資源。
[0096]當(dāng)然,存儲(chǔ)端也可以將完成信息攜帶在其他的數(shù)據(jù)包中進(jìn)行發(fā)送,不限于只能攜帶在承載了尾切片的數(shù)據(jù)包中。
[0097]其中,RDMA_WRITE、及RDMAWRITE LAST with Immediate都是RDMA協(xié)議中固定的幀格式的名稱,攜帶的內(nèi)容不同,則名稱就可能不同。
[0098]請(qǐng)參見(jiàn)圖6A,為一種可能的用于承載子數(shù)據(jù)的數(shù)據(jù)包的幀結(jié)構(gòu)示意圖,例如圖6A為至少一個(gè)數(shù)據(jù)包中的第二數(shù)據(jù)包的幀結(jié)構(gòu)示意圖,第二數(shù)據(jù)包可以是至少一個(gè)數(shù)據(jù)包中除了第一數(shù)據(jù)包之外的任意一個(gè)數(shù)據(jù)包,即,第二數(shù)據(jù)包中未承載完成信息??梢钥吹?,該第二數(shù)據(jù)包可以包括RDMA頭,其中,RDMA頭中可以包括媒體接入控制(Media AccessControl,MAC)字段、全局路由報(bào)頭(Global Route Header,GRH)字段和基本傳輸報(bào)頭(Bacetransport Header,BTH)字段,MAC字段可以用于指示當(dāng)前的網(wǎng)絡(luò)類型,在網(wǎng)絡(luò)不同時(shí),MAC字段也可以更換為其他網(wǎng)絡(luò)對(duì)應(yīng)的字段,GRH字段可以攜帶該第二數(shù)據(jù)包的源網(wǎng)際協(xié)議(Internet Protocol,IP)地址和目的IP地址,BTH字段可以用于指示該第二數(shù)據(jù)包的操作類型,比如為發(fā)送(send)類型,還可以用于攜帶序列號(hào),以盡量避免出現(xiàn)亂序的情況等。該第二數(shù)據(jù)包還可以包括凈荷(payload)和校驗(yàn)字段,payload可以用于承載子數(shù)據(jù),校驗(yàn)字段例如可以包括恒定循環(huán)冗余校驗(yàn)(Invariant Cyclic Redundancy Check,ICRC)字段和可變循環(huán)冗余校驗(yàn)(Volatile Cyclic Redundancy Check,VCRC)字段。
[0099]請(qǐng)參見(jiàn)圖6B,為一種可能的用于承載子數(shù)據(jù)的數(shù)據(jù)包的幀結(jié)構(gòu)示意圖,例如圖6B為第一數(shù)據(jù)包的幀結(jié)構(gòu)示意圖,即,第一數(shù)據(jù)包中承載了完成信息??梢钥吹剑摰谝粩?shù)據(jù)包可以包括RDMA頭,其中,RDMA頭中可以包括MAC、,GRH字段、BTH字段和擴(kuò)展傳輸報(bào)頭(Extended transport Header,ΕΤΗ)字段,該第一數(shù)據(jù)包還可以包括pay load、即時(shí)數(shù)據(jù)(Immediate data,I data)字段和校驗(yàn)字段,校驗(yàn)字段例如可以包括ICRC字段和VCRC字段。與第二數(shù)據(jù)包相同的字段不再解釋,I data字段可以用于承載本發(fā)明實(shí)施例所述的完成信息,ETH字段可以用于完成如前所述的立即數(shù)字節(jié)域的功能,S卩,ETH可以指示I data在第一數(shù)據(jù)包中的位置。
[0100]6、存儲(chǔ)端的RDMA模塊I將至少一個(gè)數(shù)據(jù)包發(fā)送給客戶端的RDMA模塊I,則客戶端的RDMA模塊I可以接收至少一個(gè)數(shù)據(jù)包。其中,至少一個(gè)數(shù)據(jù)包中的第一數(shù)據(jù)包中攜帶了完成
?目息O
[0101 ] 7、客戶端的RDMA模塊I接收至少一個(gè)數(shù)據(jù)包,可以通過(guò)第一數(shù)據(jù)包獲取完成信息。
[0102]可選的,客戶端的RDMA模塊I接收RDMA WRITE LAST with I_ediate后,可以根據(jù)第一數(shù)據(jù)包的幀頭中的立即數(shù)字節(jié)域的指示從第一數(shù)據(jù)包中讀取完成信息。
[0103]8、RDMA模塊I將完成信息發(fā)送給客戶端的NVMe客戶端軟件。
[0104]9、客戶端的NVMe客戶端通過(guò)解析完成信息即可知道提交命令消息已經(jīng)執(zhí)行完成,讀取第一數(shù)據(jù)的流程結(jié)束。
[0105]需注意的是,本發(fā)明實(shí)施例中圖3-圖5所介紹的方法中,各個(gè)步驟可以按照任意可能的順序執(zhí)行,步驟的編號(hào)不代表對(duì)步驟的執(zhí)行順序的限制。
[0106]為了更為明確地說(shuō)明本發(fā)明實(shí)施例能夠?qū)崿F(xiàn)的效果,請(qǐng)參見(jiàn)圖7A,為現(xiàn)有技術(shù)中在NOF下讀取數(shù)據(jù)的示意圖,及請(qǐng)參見(jiàn)圖7B,為本發(fā)明實(shí)施例提供的在NOF下讀取數(shù)據(jù)的示意圖。圖7A中,例如客戶端向存儲(chǔ)端發(fā)送提交命令消息,則存儲(chǔ)端除了向客戶端發(fā)送提交命令消息所請(qǐng)求的數(shù)據(jù)之外,還要向客戶端發(fā)送完成命令消息,較為浪費(fèi)傳輸資源,而圖7B中,例如客戶端向存儲(chǔ)端發(fā)送提交命令消息,則存儲(chǔ)端可以將完成信息攜帶在承載了數(shù)據(jù)的數(shù)據(jù)包中一起發(fā)送給客戶端,即存儲(chǔ)端可以將數(shù)據(jù)和完成信息一并進(jìn)行發(fā)送,無(wú)需再額外專門(mén)發(fā)送完成命令消息,節(jié)省了傳輸資源,也減少了兩個(gè)設(shè)備的交互過(guò)程,有利于提高系統(tǒng)性能。
[0107]下面結(jié)合附圖介紹讀數(shù)據(jù)的設(shè)備。
[0108]請(qǐng)參見(jiàn)圖8,提供第一種讀數(shù)據(jù)的設(shè)備,該設(shè)備例如可以是如前所述的第一設(shè)備,例如第一設(shè)備可以是圖1或圖2中的存儲(chǔ)端,若再細(xì)化,則也可以將第一設(shè)備理解為圖1或圖2中的RDMA模塊2。該設(shè)備可以包括存儲(chǔ)器801、處理器802、接收器803和發(fā)送器804。
[0109]其中,處理器802例如可以包括中央處理器(CPU)或特定應(yīng)用集成電路(Applicat1n Specific Integrated Circuit,ASIC),可以包括一個(gè)或多個(gè)用于控制程序執(zhí)行的集成電路,可以包括使用現(xiàn)場(chǎng)可編程門(mén)陣列(Field Programmable Gate Array,FPGA)開(kāi)發(fā)的硬件電路。可選的,若該設(shè)備是如前所述的RDMA模塊2,則處理器802可以是RDMA模塊2中用于實(shí)現(xiàn)RDMA協(xié)議的功能模塊,比如可以通過(guò)FPGA實(shí)現(xiàn)處理器802的功能。
[0110]存儲(chǔ)器801的數(shù)量可以是一個(gè)或多個(gè)。存儲(chǔ)器801可以包括只讀存儲(chǔ)器(Read OnlyMemory,ROM)、隨機(jī)存取存儲(chǔ)器(Random Access Memory,RAM)和磁盤(pán)存儲(chǔ)器,等等。存儲(chǔ)器801可以用于存儲(chǔ)處理器802執(zhí)行任務(wù)所需的指令,還可以用于存儲(chǔ)數(shù)據(jù)等。
[0111]接收器803可以用于與外部設(shè)備進(jìn)行網(wǎng)絡(luò)通信,例如可以通過(guò)以太網(wǎng)、無(wú)線接入網(wǎng)、無(wú)線局域網(wǎng)、或有線網(wǎng)等網(wǎng)絡(luò)與外部設(shè)備進(jìn)行通信。
[0112]發(fā)送器804可以用于與外部設(shè)備進(jìn)行網(wǎng)絡(luò)通信,例如可以通過(guò)以太網(wǎng)、無(wú)線接入網(wǎng)、無(wú)線局域網(wǎng)、或有線網(wǎng)等網(wǎng)絡(luò)與外部設(shè)備進(jìn)行通信。
[0113]可選的,接收器803和發(fā)送器804可以是一個(gè)功能模塊,比如一個(gè)功能模塊可以既實(shí)現(xiàn)發(fā)送功能又實(shí)現(xiàn)接收功能,或者可以是一個(gè)功能模塊中的不同的子模塊,或者接收器803和發(fā)送器804也可以是兩個(gè)彼此獨(dú)立的功能模塊。
[0114]存儲(chǔ)器801、接收器803和發(fā)送器804可以通過(guò)總線800與處理器802相連接(圖8以此為例),或者也可以通過(guò)專門(mén)的連接線與處理器802連接。
[0115]通過(guò)對(duì)處理器802進(jìn)行設(shè)計(jì)編程,將前述所示的方法所對(duì)應(yīng)的代碼固化到芯片內(nèi),從而使芯片在運(yùn)行時(shí)能夠執(zhí)行前述實(shí)施例中的所示的方法。如何對(duì)處理器802進(jìn)行設(shè)計(jì)編程為本領(lǐng)域技術(shù)人員所公知的技術(shù),這里不再贅述。
[0116]該設(shè)備可以用于執(zhí)行上述圖3-圖5、圖7所述的方法,例如可以是如前所述的第一設(shè)備。因此,對(duì)于該設(shè)備中的各單元所實(shí)現(xiàn)的功能等,可參考如前方法部分的描述,不多贅述。
[0117]請(qǐng)參見(jiàn)圖9,提供第二種讀數(shù)據(jù)的設(shè)備,該設(shè)備例如可以是如前所述的第二設(shè)備,例如第二設(shè)備可以是圖1或圖2中的客戶端,若再細(xì)化,則也可以將第二設(shè)備理解為圖1中的RDMA模塊I或圖2中的網(wǎng)卡。該設(shè)備可以包括存儲(chǔ)器901、處理器902、接收器903和發(fā)送器904。
[0118]其中,處理器902例如可以包括CPU或ASIC,可以包括一個(gè)或多個(gè)用于控制程序執(zhí)行的集成電路,可以包括使用FPGA開(kāi)發(fā)的硬件電路。可選的,若該設(shè)備是如前所述的RDMA模塊I,則處理器902可以是RDMA模塊I中用于實(shí)現(xiàn)RDMA協(xié)議的功能模塊,若該設(shè)備是如前所述的網(wǎng)卡,則處理器902可以是網(wǎng)卡中用于實(shí)現(xiàn)RDMA協(xié)議的功能模塊。
[0119]存儲(chǔ)器901的數(shù)量可以是一個(gè)或多個(gè)。存儲(chǔ)器901可以包括R0M、RAM和磁盤(pán)存儲(chǔ)器,等等。存儲(chǔ)器901可以用于存儲(chǔ)處理器902執(zhí)行任務(wù)所需的指令,還可以用于存儲(chǔ)數(shù)據(jù)等。
[0120]發(fā)送器904可以用于與外部設(shè)備進(jìn)行網(wǎng)絡(luò)通信,例如可以通過(guò)以太網(wǎng)、無(wú)線接入網(wǎng)、無(wú)線局域網(wǎng)、或有線網(wǎng)等網(wǎng)絡(luò)與外部設(shè)備進(jìn)行通信。
[0121]接收器903可以用于與外部設(shè)備進(jìn)行網(wǎng)絡(luò)通信,例如可以通過(guò)以太網(wǎng)、無(wú)線接入網(wǎng)、無(wú)線局域網(wǎng)、或有線網(wǎng)等網(wǎng)絡(luò)與外部設(shè)備進(jìn)行通信。
[0122]可選的,接收器903和發(fā)送器904可以是一個(gè)功能模塊,比如一個(gè)功能模塊可以既實(shí)現(xiàn)發(fā)送功能又實(shí)現(xiàn)接收功能,或者可以是一個(gè)功能模塊中的不同的子模塊,或者接收器903和發(fā)送器904也可以是兩個(gè)彼此獨(dú)立的功能模塊。
[0123]存儲(chǔ)器901、接收器903和發(fā)送器904可以通過(guò)總線900與處理器902相連接(圖9以此為例),或者也可以通過(guò)專門(mén)的連接線與處理器902連接。
[0124]通過(guò)對(duì)處理器902進(jìn)行設(shè)計(jì)編程,將前述所示的方法所對(duì)應(yīng)的代碼固化到芯片內(nèi),從而使芯片在運(yùn)行時(shí)能夠執(zhí)行前述實(shí)施例中的所示的方法。如何對(duì)處理器902進(jìn)行設(shè)計(jì)編程為本領(lǐng)域技術(shù)人員所公知的技術(shù),這里不再贅述。
[0125]該設(shè)備可以用于執(zhí)行上述圖3-圖5、圖7所述的方法,例如可以是如前所述的第二設(shè)備。因此,對(duì)于該設(shè)備中的各單元所實(shí)現(xiàn)的功能等,可參考如前方法部分的描述,不多贅述。
[0126]請(qǐng)參見(jiàn)圖10,提供第一種讀數(shù)據(jù)的設(shè)備,該設(shè)備可以包括接收模塊1001、處理模塊1002和發(fā)送模塊1003。
[0127]在實(shí)際應(yīng)用中,接收模塊1001對(duì)應(yīng)的實(shí)體設(shè)備可以是圖1中的RDMA模塊2或圖2中的RDMA模塊2,更細(xì)一步,接收模塊1001對(duì)應(yīng)的實(shí)體設(shè)備可以是圖8中的接收器803,處理模塊1002對(duì)應(yīng)的實(shí)體設(shè)備可以是圖1中的RDMA模塊2或圖2中的RDMA模塊2,更細(xì)一步,處理模塊1002對(duì)應(yīng)的實(shí)體設(shè)備可以是圖8中的處理器802,發(fā)送模塊1003對(duì)應(yīng)的實(shí)體設(shè)備可以是圖1中的RDMA模塊2或圖2中的RDMA模塊2,更細(xì)一步,發(fā)送模塊1003對(duì)應(yīng)的實(shí)體設(shè)備可以是圖8中的發(fā)送器804。
[0128]該設(shè)備可以用于執(zhí)行上述圖3-圖5、圖7所述的方法,例如可以是第一設(shè)備。因此,對(duì)于該設(shè)備中的各單元所實(shí)現(xiàn)的功能等,可參考如前方法部分的描述,不多贅述。
[0129]請(qǐng)參見(jiàn)圖11,提供第二種讀數(shù)據(jù)的設(shè)備,該設(shè)備可以包括接收模塊1101和發(fā)送模塊1102。可選的,該設(shè)備還可以包括處理模塊1103,在圖11中一并示出。
[0130]在實(shí)際應(yīng)用中,接收模塊1101對(duì)應(yīng)的實(shí)體設(shè)備可以是圖1中的RDMA模塊I或圖2中的網(wǎng)卡,更細(xì)一步,接收模塊1101對(duì)應(yīng)的實(shí)體設(shè)備可以是圖9中的接收器903,處理模塊1103對(duì)應(yīng)的實(shí)體設(shè)備可以是圖1中的RDMA模塊I或圖2中的RDMA模塊I,更細(xì)一步,處理模塊1103對(duì)應(yīng)的實(shí)體設(shè)備可以是圖9中的處理器902,發(fā)送模塊1102對(duì)應(yīng)的實(shí)體設(shè)備可以是圖1中的RDMA模塊I或圖2中的網(wǎng)卡,更細(xì)一步,發(fā)送模塊1102對(duì)應(yīng)的實(shí)體設(shè)備可以是圖9中的發(fā)送器904。
[0131]該設(shè)備可以用于執(zhí)行上述圖3-圖5、圖7所述的方法,例如可以是第二設(shè)備。因此,對(duì)于該設(shè)備中的各單元所實(shí)現(xiàn)的功能等,可參考如前方法部分的描述,不多贅述。
[0132]本發(fā)明實(shí)施例還提供一種計(jì)算機(jī)存儲(chǔ)介質(zhì),其中,該計(jì)算機(jī)存儲(chǔ)介質(zhì)可存儲(chǔ)有程序,該程序執(zhí)行時(shí)包括上述圖3、圖5或圖7的方法實(shí)施例中記載的任何一種讀數(shù)據(jù)的方法的部分或全部步驟。
[0133]本發(fā)明實(shí)施例還提供另一種計(jì)算機(jī)存儲(chǔ)介質(zhì),其中,該計(jì)算機(jī)存儲(chǔ)介質(zhì)可存儲(chǔ)有程序,該程序執(zhí)行時(shí)包括上述圖4、圖5或圖7的方法實(shí)施例中記載的任何一種讀數(shù)據(jù)的方法的部分或全部步驟。
[0134]本發(fā)明實(shí)施例中,第一設(shè)備在讀取第一數(shù)據(jù)后,可以將用于指示第一數(shù)據(jù)已讀取完成的信息攜帶在用于攜帶數(shù)據(jù)的數(shù)據(jù)包中,即,可以將用于指示讀取完畢的信息和數(shù)據(jù)放在一起發(fā)送,無(wú)需在數(shù)據(jù)發(fā)送完畢后再額外發(fā)送用于指示數(shù)據(jù)已讀取完成的信息,這樣可以有效節(jié)省傳輸資源,對(duì)于兩個(gè)設(shè)備來(lái)說(shuō)也減少了交互過(guò)程,減輕設(shè)備負(fù)擔(dān),也可以在一定程度上提尚系統(tǒng)性能。
[0135]在本發(fā)明中,應(yīng)該理解到,所揭露的設(shè)備和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元或單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性或其它的形式。
[0136]所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施例。
[0137]在本發(fā)明實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,或者各個(gè)單元也可以均是獨(dú)立的物理模塊。
[0138]所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備,例如可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等,或處理器(processor)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:通用串行總線閃存盤(pán)(Universal Serial Bus flash drive)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(Read-Only Memory,ROM)、隨機(jī)存取存儲(chǔ)器(random access memory,RAM)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0139]以上所述,以上實(shí)施例僅用以對(duì)本發(fā)明的技術(shù)方案進(jìn)行了詳細(xì)介紹,但以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明實(shí)施例的方法,不應(yīng)理解為對(duì)本發(fā)明實(shí)施例的限制。本技術(shù)領(lǐng)域的技術(shù)人員可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明實(shí)施例的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種讀數(shù)據(jù)的方法,其特征在于,包括: 第一設(shè)備接收第二設(shè)備發(fā)送的基于遠(yuǎn)程直接數(shù)據(jù)存取RDMA協(xié)議的提交命令消息,所述提交命令消息用于請(qǐng)求通過(guò)所述第一設(shè)備讀取第一數(shù)據(jù); 所述第一設(shè)備根據(jù)所述提交命令消息獲取所述第一數(shù)據(jù); 所述第一設(shè)備將所述第一數(shù)據(jù)攜帶在至少一個(gè)數(shù)據(jù)包中,且所述第一設(shè)備將完成信息攜帶在所述至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中;所述完成信息用于指示所述第一數(shù)據(jù)已讀取完成; 所述第一設(shè)備向所述第二設(shè)備發(fā)送所述至少一個(gè)數(shù)據(jù)包。2.如權(quán)利要求1所述的方法,其特征在于,所述第一設(shè)備將所述第一數(shù)據(jù)攜帶在至少一個(gè)數(shù)據(jù)包中,包括: 所述第一設(shè)備按照最大傳輸單元的大小將所述第一數(shù)據(jù)分成至少一個(gè)子數(shù)據(jù); 所述第一設(shè)備將所述至少一個(gè)子數(shù)據(jù)分別攜帶在與所述至少一個(gè)子數(shù)據(jù)一一對(duì)應(yīng)的所述至少一個(gè)數(shù)據(jù)包中。3.如權(quán)利要求1或2所述的方法,其特征在于,所述第一設(shè)備將完成信息攜帶在所述至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中,包括: 所述第一設(shè)備將所述完成信息攜帶在用于攜帶第一子數(shù)據(jù)的第一數(shù)據(jù)包中;其中,所述第一子數(shù)據(jù)為所述第一數(shù)據(jù)的至少一個(gè)子數(shù)據(jù)中的一個(gè)子數(shù)據(jù),所述第一子數(shù)據(jù)的大小小于最大傳輸單元的大小,所述第一子數(shù)據(jù)中包括所述第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。4.如權(quán)利要求3所述的方法,其特征在于,所述方法還包括: 所述第一設(shè)備在所述第一數(shù)據(jù)包的包頭中攜帶指示信息,所述指示信息用于指示所述完成信息在所述第一數(shù)據(jù)包中的位置。5.一種讀數(shù)據(jù)的方法,其特征在于,包括: 第二設(shè)備向第一設(shè)備發(fā)送基于遠(yuǎn)程直接數(shù)據(jù)存取RDMA協(xié)議的提交命令消息,所述提交命令消息用于請(qǐng)求通過(guò)所述第一設(shè)備讀取第一數(shù)據(jù); 所述第二設(shè)備根據(jù)所述提交命令消息接收所述第一設(shè)備發(fā)送的攜帶所述第一數(shù)據(jù)的至少一個(gè)數(shù)據(jù)包;其中,所述至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中攜帶了完成信息;所述完成信息用于指示所述第一數(shù)據(jù)已讀取完成。6.如權(quán)利要求5所述的方法,其特征在于,所述完成信息攜帶在所述至少一個(gè)數(shù)據(jù)包中的第一數(shù)據(jù)包中,所述第一數(shù)據(jù)包攜帶的第一子數(shù)據(jù)為所述第一數(shù)據(jù)的一個(gè)子數(shù)據(jù),所述第一子數(shù)據(jù)中包括所述第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。7.如權(quán)利要求6所述的方法,其特征在于,所述方法還包括: 所述第二設(shè)備獲取所述第一數(shù)據(jù)包的包頭攜帶的指示信息; 所述第二設(shè)備根據(jù)所述指示信息確定所述完成信息在所述第一數(shù)據(jù)包中的位置; 所述第二設(shè)備根據(jù)確定的位置從所述第一數(shù)據(jù)包中獲取所述完成信息。8.一種讀數(shù)據(jù)的設(shè)備,其特征在于,包括: 接收模塊,用于接收第二設(shè)備發(fā)送的基于遠(yuǎn)程直接數(shù)據(jù)存取RDMA協(xié)議的提交命令消息,所述提交命令消息用于請(qǐng)求通過(guò)所述第一設(shè)備讀取第一數(shù)據(jù); 處理模塊,用于根據(jù)所述接收模塊接收的所述提交命令消息獲取所述第一數(shù)據(jù),將所述第一數(shù)據(jù)攜帶在至少一個(gè)數(shù)據(jù)包中,且將完成信息攜帶在所述至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中;所述完成信息用于指示所述第一數(shù)據(jù)已讀取完成; 發(fā)送模塊,用于向所述第二設(shè)備發(fā)送所述處理模塊處理后的所述至少一個(gè)數(shù)據(jù)包。9.如權(quán)利要求8所述的設(shè)備,其特征在于,所述處理模塊用于將所述第一數(shù)據(jù)攜帶在至少一個(gè)數(shù)據(jù)包中,包括: 所述處理模塊按照最大傳輸單元的大小將所述第一數(shù)據(jù)分成至少一個(gè)子數(shù)據(jù); 所述處理模塊將所述至少一個(gè)子數(shù)據(jù)分別攜帶在與所述至少一個(gè)子數(shù)據(jù)一一對(duì)應(yīng)的所述至少一個(gè)數(shù)據(jù)包中。10.如權(quán)利要求8或9所述的設(shè)備,其特征在于,所述處理模塊用于將完成信息攜帶在所述至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中,包括: 所述處理模塊將所述完成信息攜帶在用于攜帶第一子數(shù)據(jù)的第一數(shù)據(jù)包中;其中,所述第一子數(shù)據(jù)為所述第一數(shù)據(jù)的至少一個(gè)子數(shù)據(jù)中的一個(gè)子數(shù)據(jù),所述第一子數(shù)據(jù)的大小小于最大傳輸單元的大小,所述第一子數(shù)據(jù)中包括所述第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。11.如權(quán)利要求10所述的設(shè)備,其特征在于,所述處理模塊還用于: 在所述第一數(shù)據(jù)包的包頭中攜帶指示信息,所述指示信息用于指示所述完成信息在所述第一數(shù)據(jù)包中的位置。12.一種讀數(shù)據(jù)的設(shè)備,其特征在于,包括: 發(fā)送模塊,用于向第一設(shè)備發(fā)送基于遠(yuǎn)程直接數(shù)據(jù)存取RDMA協(xié)議的提交命令消息,所述提交命令消息用于請(qǐng)求通過(guò)所述第一設(shè)備讀取第一數(shù)據(jù); 接收模塊,用于根據(jù)所述發(fā)送模塊發(fā)送的所述提交命令消息接收所述第一設(shè)備發(fā)送的攜帶所述第一數(shù)據(jù)的至少一個(gè)數(shù)據(jù)包;其中,所述至少一個(gè)數(shù)據(jù)包中的其中一個(gè)數(shù)據(jù)包中攜帶了完成信息;所述完成信息用于指示所述第一數(shù)據(jù)已讀取完成。13.如權(quán)利要求12所述的設(shè)備,其特征在于,所述完成信息攜帶在所述至少一個(gè)數(shù)據(jù)包中的第一數(shù)據(jù)包中,所述第一數(shù)據(jù)包攜帶的第一子數(shù)據(jù)為所述第一數(shù)據(jù)的一個(gè)子數(shù)據(jù),所述第一子數(shù)據(jù)中包括所述第一數(shù)據(jù)的尾地址所指向的數(shù)據(jù)。14.如權(quán)利要求13所述的設(shè)備,其特征在于,所述設(shè)備還包括處理模塊,用于: 獲取所述第一數(shù)據(jù)包的包頭攜帶的指示信息; 根據(jù)所述指示信息確定所述完成信息在所述第一數(shù)據(jù)包中的位置;根據(jù)確定的位置從所述第一數(shù)據(jù)包中獲取所述完成信息。
【文檔編號(hào)】H04L29/08GK105893323SQ201610343792
【公開(kāi)日】2016年8月24日
【申請(qǐng)日】2016年5月23日
【發(fā)明人】高棟棟, 石仔良, 王 琦
【申請(qǐng)人】華為技術(shù)有限公司