協(xié)議報(bào)文處理方法、裝置及終端的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及協(xié)議報(bào)文處理方法、裝置及終端。
【背景技術(shù)】
[0002]目前,RDMA(Remote Direct Memory Access,即遠(yuǎn)程直接內(nèi)存訪問(wèn))技術(shù)已經(jīng)普遍應(yīng)用到數(shù)據(jù)傳輸過(guò)程,RDMA技術(shù)使計(jì)算機(jī)可以通過(guò)網(wǎng)絡(luò)直接存取其它計(jì)算機(jī)的內(nèi)存,即通過(guò)DMA(Direct Memory Access,直接內(nèi)存訪問(wèn))的方式傳輸數(shù)據(jù)。這種傳輸可通過(guò)在NIC (Network Interface Card,網(wǎng)卡)的硬件中部署一項(xiàng)可靠的RDMA協(xié)議實(shí)現(xiàn),例如基于TCP (Transmiss1n Control Protocol,傳輸控制協(xié)議)/IP(Internet Protocol,網(wǎng)絡(luò)協(xié)議)的 iWARP (Internet Wide Area Rdma Protocol,互聯(lián)網(wǎng)廣域 RDMA 協(xié)議)協(xié)議。
[0003]以基于TCP/IP的iWARP協(xié)議為例,現(xiàn)有技術(shù)在利用RDMA技術(shù)傳輸數(shù)據(jù)時(shí),發(fā)送端處理RDMA協(xié)議的模塊以及處理TCP協(xié)議的模塊的工作流程為:如圖1所示,處理RDMA協(xié)議的模塊完成RDMA連接調(diào)度;為RDMA協(xié)議分配存儲(chǔ)報(bào)文的緩存區(qū)域(buffer);通過(guò)DMA的方式從發(fā)送端的主機(jī)傳輸需要傳輸?shù)臄?shù)據(jù);進(jìn)行RDMA協(xié)議報(bào)文的組裝;RDMACRC(CyclicRedundancy Check,循環(huán)冗余校驗(yàn))校驗(yàn)值計(jì)算。之后,處理TCP協(xié)議的模塊進(jìn)行連接調(diào)度;分配PCT報(bào)文存儲(chǔ)的緩存區(qū)域;數(shù)據(jù)拷貝(將需要傳輸?shù)臄?shù)據(jù)從處理RDMA協(xié)議的模塊中搬移到處理TCP協(xié)議的模塊中);進(jìn)行TCP報(bào)文組裝;TCP CRC校驗(yàn)值計(jì)算,最后將封裝好的數(shù)據(jù)發(fā)送到接收端。
[0004]接收端的接收流程則按照與發(fā)送端的發(fā)送流程基本相反的步驟依次解析數(shù)據(jù),從而得到需要傳輸?shù)臄?shù)據(jù)。
[0005]上述現(xiàn)有技術(shù)中利用基于TCP的RDMA協(xié)議傳輸數(shù)據(jù)時(shí),發(fā)送流程和接收流程都有多次調(diào)度、多次緩存區(qū)域分配且存在數(shù)據(jù)搬移過(guò)程,因此存在時(shí)延較大的問(wèn)題。
【發(fā)明內(nèi)容】
[0006]有鑒于此,本發(fā)明實(shí)施例提供一種協(xié)議報(bào)文處理方法、裝置及終端,以降低傳輸數(shù)據(jù)時(shí)的時(shí)延。
[0007]為達(dá)到上述目的,本發(fā)明實(shí)施例采用如下技術(shù)方案:
[0008]第一方面,提供了一種協(xié)議報(bào)文處理方法,由統(tǒng)一調(diào)度模塊執(zhí)行,包括:
[0009]獲取用于本層協(xié)議報(bào)文組裝或解析的至少兩種數(shù)據(jù)的信息,所述信息包括本層協(xié)議報(bào)文的最大長(zhǎng)度、下層協(xié)議報(bào)文的負(fù)載最大長(zhǎng)度,所述至少兩種數(shù)據(jù)的類型和各自的長(zhǎng)度;
[0010]當(dāng)獲取用于本層協(xié)議報(bào)文組裝的至少兩種數(shù)據(jù)的信息時(shí),根據(jù)所述本層協(xié)議報(bào)文的最大長(zhǎng)度和所述下層協(xié)議報(bào)文的負(fù)載最大長(zhǎng)度,確定所述至少兩種數(shù)據(jù)的總長(zhǎng)度;或,當(dāng)獲取用于本層協(xié)議報(bào)文解析的至少兩種數(shù)據(jù)的信息時(shí),根據(jù)所述本層協(xié)議報(bào)文的最大長(zhǎng)度,確定所述至少兩種數(shù)據(jù)的總長(zhǎng)度;
[0011]根據(jù)所述確定的至少兩種數(shù)據(jù)的總長(zhǎng)度,分配一個(gè)共享緩存區(qū)域;
[0012]根據(jù)所述至少兩種數(shù)據(jù)的類型和各自的長(zhǎng)度,在所述共享緩存區(qū)域中對(duì)所述至少兩種數(shù)據(jù)并行處理,其中每種數(shù)據(jù)由一個(gè)數(shù)據(jù)處理模塊來(lái)處理,一個(gè)數(shù)據(jù)處理模塊對(duì)一種數(shù)據(jù)的處理時(shí)間與另一個(gè)數(shù)據(jù)處理模塊對(duì)另一種數(shù)據(jù)的處理時(shí)間相重疊。
[0013]在第一種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述本層協(xié)議報(bào)文的最大長(zhǎng)度和所述下層協(xié)議報(bào)文的最大負(fù)載長(zhǎng)度,確定所述至少兩種數(shù)據(jù)的總長(zhǎng)度具體包括:
[0014]從所述本層協(xié)議報(bào)文的最大長(zhǎng)度和所述下層協(xié)議報(bào)文的最大負(fù)載長(zhǎng)度中選擇兩者中長(zhǎng)度的最小值,該最小值作為所述至少兩種數(shù)據(jù)的總長(zhǎng)度。
[0015]在第二種可能的實(shí)現(xiàn)方式中,在所述獲取用于協(xié)議報(bào)文解析的至少兩種數(shù)據(jù)的信息后,所述共享緩存區(qū)域中對(duì)所述至少兩種數(shù)據(jù)并行處理之前,所述方法還包括:
[0016]確定所述至少兩種數(shù)據(jù)是否是完整數(shù)據(jù);
[0017]根據(jù)所述至少兩種數(shù)據(jù)的類型和各自的長(zhǎng)度,在所述共享緩存區(qū)域中對(duì)所述至少兩種數(shù)據(jù)并行處理具體為,
[0018]當(dāng)確定所述至少兩種數(shù)據(jù)是完整數(shù)據(jù)時(shí),根據(jù)所述至少兩種數(shù)據(jù)的類型和各自的長(zhǎng)度,在所述共享緩存區(qū)域中對(duì)所述至少兩種數(shù)據(jù)并行解析。
[0019]結(jié)合第一方面或第一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述至少兩種數(shù)據(jù)具體包括:
[0020]傳輸控制協(xié)議TCP報(bào)文數(shù)據(jù)和需要傳輸?shù)臄?shù)據(jù);或,
[0021]TCP報(bào)文數(shù)據(jù)、RDMA報(bào)文數(shù)據(jù);或,
[0022]TCP報(bào)文數(shù)據(jù)、RDMA報(bào)文數(shù)據(jù)和需要傳輸?shù)臄?shù)據(jù)。
[0023]第二方面,本發(fā)明提供了一種協(xié)議報(bào)文處理裝置,所述裝置包括至少一個(gè)處理器、存儲(chǔ)器、通信接口及總線,其中,
[0024]所述處理器用于:
[0025]獲取用于本層協(xié)議報(bào)文組裝或解析的至少兩種數(shù)據(jù)的信息,所述信息包括本層協(xié)議報(bào)文的最大長(zhǎng)度、下層協(xié)議報(bào)文的負(fù)載最大長(zhǎng)度,所述至少兩種數(shù)據(jù)的類型和各自的長(zhǎng)度;
[0026]當(dāng)獲取用于本層協(xié)議報(bào)文組裝的至少兩種數(shù)據(jù)的信息時(shí),根據(jù)所述本層協(xié)議報(bào)文的最大長(zhǎng)度和所述下層協(xié)議報(bào)文的負(fù)載最大長(zhǎng)度,確定所述至少兩種數(shù)據(jù)的總長(zhǎng)度;或,當(dāng)獲取用于本層協(xié)議報(bào)文解析的至少兩種數(shù)據(jù)的信息時(shí),根據(jù)所述本層協(xié)議報(bào)文的最大長(zhǎng)度,確定所述至少兩種數(shù)據(jù)的總長(zhǎng)度;
[0027]根據(jù)確定的至少兩種數(shù)據(jù)的總長(zhǎng)度,分配一個(gè)共享緩存區(qū)域;
[0028]根據(jù)獲取的至少兩種數(shù)據(jù)的類型和各自的長(zhǎng)度,在所述共享緩存區(qū)域中對(duì)所述至少兩種數(shù)據(jù)并行處理,其中每種數(shù)據(jù)由一個(gè)數(shù)據(jù)處理模塊來(lái)處理,一個(gè)數(shù)據(jù)處理模塊對(duì)一種數(shù)據(jù)的處理時(shí)間與另一個(gè)數(shù)據(jù)處理模塊對(duì)另一種數(shù)據(jù)的處理時(shí)間相重疊。
[0029]在第一種可能的實(shí)現(xiàn)方式中,所述處理器具體用于:
[0030]從所述本層協(xié)議報(bào)文的最大長(zhǎng)度和所述下層協(xié)議報(bào)文的最大負(fù)載長(zhǎng)度中選擇兩者中長(zhǎng)度的最小值,該最小值作為所述至少兩種數(shù)據(jù)的總長(zhǎng)度。
[0031]在第二種可能的實(shí)現(xiàn)方式中,所述處理器還用于:
[0032]確定所述至少兩種數(shù)據(jù)是否是完整數(shù)據(jù);
[0033]當(dāng)確定所述至少兩種數(shù)據(jù)是完整數(shù)據(jù)時(shí),根據(jù)所述至少兩種數(shù)據(jù)的類型和各自的長(zhǎng)度,在所述共享緩存區(qū)域中對(duì)所述至少兩種數(shù)據(jù)并行解析。
[0034]第三方面,提供一種終端,所述終端包括第二方面或第二方面中的任意一種可能的實(shí)現(xiàn)方式所述的協(xié)議報(bào)文處理裝置。
[0035]本發(fā)明實(shí)施例提供的協(xié)議報(bào)文處理方法、裝置及終端。首先,獲取用于本層協(xié)議報(bào)文組裝或解析的至少兩種數(shù)據(jù)的信息,并確定所述至少兩種數(shù)據(jù)的總長(zhǎng)度;然后,根據(jù)確定的至少兩種數(shù)據(jù)的總長(zhǎng)度,分配一個(gè)共享緩存區(qū)域;并在共享緩存區(qū)域中對(duì)所述至少兩種數(shù)據(jù)并行處理。由此可看出,這種通過(guò)一次調(diào)度、一次性分配共享緩存區(qū)域且并行處理數(shù)據(jù)的方式,避免了現(xiàn)有技術(shù)中存在的多次調(diào)度、多次分配緩存區(qū)域且數(shù)據(jù)搬移過(guò)程的問(wèn)題。因此,本發(fā)明縮短了數(shù)據(jù)發(fā)送時(shí)所用的數(shù)據(jù)組裝時(shí)間和數(shù)據(jù)接收時(shí)所用的數(shù)據(jù)解析時(shí)間,從而降低數(shù)據(jù)傳輸?shù)臅r(shí)延。
【附圖說(shuō)明】
[0036]為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0037]圖1為現(xiàn)有技術(shù)中協(xié)議報(bào)文處理方法的發(fā)送流程圖;
[0038]圖2為iWARP協(xié)議報(bào)文封裝層次的示意圖;
[0039]圖3為本發(fā)明實(shí)施例一的協(xié)議報(bào)文處理方法的流程圖;
[0040]圖4為本發(fā)明實(shí)施例一的TCP協(xié)議報(bào)文和RDMA協(xié)議報(bào)文的示意圖;
[0041]圖5為本發(fā)明實(shí)施例二的協(xié)議報(bào)文處理方法的流程圖;
[0042]圖6為本發(fā)明實(shí)施例三的協(xié)議報(bào)文處理方法的流程圖;
[0043]圖7為本發(fā)明實(shí)施例四的協(xié)議報(bào)文處理裝置的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0044]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0045]為了更清楚地說(shuō)明本發(fā)明的方案,首先對(duì)現(xiàn)有技術(shù)中協(xié)議報(bào)文的封裝結(jié)構(gòu)進(jìn)行簡(jiǎn)單介紹。
[0046]以基于TCP/IP的RDMA技術(shù)的iWARP協(xié)議為例,如圖2所示,從上到下一共分為六層,第一層為上層協(xié)議報(bào)文結(jié)構(gòu)。第二層和第三層為iWARP協(xié)議層的封裝結(jié)構(gòu),其中,第二層為 DDP (Direct Data Placement Protocol,直接數(shù)據(jù)置放協(xié)議)/RDMAP (Remote DirectMemory Access Protocol,遠(yuǎn)程直接內(nèi)存存取協(xié)議)段,該段包括DDP/RDMAP報(bào)文頭(DDP/RDMAP Headers)以及 DDP/RDMAP 負(fù)載(DDP/RDMAP Payload),其中,RDMAP 用于標(biāo)識(shí)消息類型,DDP用于數(shù)據(jù)分段和重組;第三層為MPA FPDU(Marker-based ULP (Upper LayerProtocol,上層協(xié)議)層,包括兩個(gè)MPA負(fù)載(MPA Payload)、標(biāo)記(Marker)以及CRC結(jié)果,其中,MPA用于從數(shù)據(jù)流中界定報(bào)文。第四層為T(mén)CP協(xié)議的封裝結(jié)構(gòu),包括TCP報(bào)文頭(TCPHeader)以及TCP負(fù)載(TCP Payload);第五層為IP數(shù)據(jù)包(Datagram)層,包括IP報(bào)文頭(IP Header)以及IP負(fù)載(IP Payload);第六層為以太網(wǎng)幀(Fram