一種基于rdma的數(shù)據(jù)傳輸方法及rdma網(wǎng)卡的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種基于RDMA的數(shù)據(jù)傳輸方法及RDMA網(wǎng)卡。
【背景技術(shù)】
[0002]遠端直接內(nèi)存訪問(Remote Direct Memory Access,簡稱RDMA)是一種直接進行遠程內(nèi)存存取的技術(shù),即可以直接將數(shù)據(jù)從一個系統(tǒng)快速遷移到另一個遠程系統(tǒng)存儲器中,而不對操作系統(tǒng)造成任何影響,減少了中央處理器參與數(shù)據(jù)傳輸過程的消耗,解放了內(nèi)存帶寬和處理器(Central Processing Unit,簡稱CPU)周期,進而提升了系統(tǒng)處理業(yè)務的性能,具有高帶寬、低時延及低CPU占用率的特點。
[0003]由于目前市場上的具有RDMA功能的網(wǎng)卡(簡稱RDMA網(wǎng)卡)的總線接口一般都是采用PCIE (PC1-Express)標準的接口,而PCIE通常屬于系統(tǒng)的二級總線,即無法直接訪問CHJ或內(nèi)存,因此,當利用該RDMA網(wǎng)卡進行數(shù)據(jù)遷移時,系統(tǒng)需要在RDMA網(wǎng)卡與CPU之間添加一個具有CPIE接口的根組件(PCI Express Root Complex,簡稱PCIE RC),即RDMA網(wǎng)卡與PCIE RC進行連接,再將PCIE RC與CPU進行連接,使得RDMA網(wǎng)卡可以將支持RDMA協(xié)議的請求報文轉(zhuǎn)化為支持PCIE協(xié)議的請求報文,然后將支持PCIE協(xié)議的請求報文轉(zhuǎn)化為該PCIE RC與CPU間所支持的總線協(xié)議的請求報文,這樣通過上述一系列的PCIE協(xié)議轉(zhuǎn)換過程,使得該RDMA網(wǎng)卡可以直接訪問該CPU內(nèi)存,將該CPU內(nèi)存中需要的數(shù)據(jù)遷移至另一遠程系統(tǒng)存儲器中。
[0004]但是,在實現(xiàn)上述的數(shù)據(jù)遷移過程中,發(fā)明人發(fā)現(xiàn):由于采用PCIE接口的RDMA網(wǎng)卡是不能直接訪問內(nèi)存的,因此,需要將該請求進行相關(guān)的協(xié)議轉(zhuǎn)換和組件傳遞后,才能使CPU或內(nèi)存產(chǎn)生響應,即將支持該RDMA協(xié)議的請求報文轉(zhuǎn)換為支持PCIE協(xié)議的請求報文,然后再將該支持PCIE協(xié)議的請求報文轉(zhuǎn)換為總線事務報文,即支持直接訪問CPU或內(nèi)存的協(xié)議的請求報文,這樣使得整個數(shù)據(jù)遷移過程過于復雜,增加了系統(tǒng)的時延。同時,由于RDMA網(wǎng)卡并不負責協(xié)議轉(zhuǎn)換前后數(shù)據(jù)一致性的問題,需要CPU進行處理,從而增加了 CPU的工作量。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的實施例提供一種基于RDMA的數(shù)據(jù)傳輸方法及RDMA網(wǎng)卡,能夠簡化RDMA網(wǎng)卡向處理器傳輸報文的過程中繁復的總線轉(zhuǎn)化和多級組件的傳遞過程,提高了 RDMA網(wǎng)卡與處理器之間傳輸報文的效率。
[0006]為達到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
[0007]第一方面,提供一種基于遠程直接內(nèi)存訪問RDMA的數(shù)據(jù)傳輸方法,包括:
[0008]第一節(jié)點的RDMA網(wǎng)卡接收第二節(jié)點的RDMA網(wǎng)卡發(fā)送的RDMA讀請求;所述RDMA讀請求包括所述RDMA讀請求請求讀取的數(shù)據(jù)在所述第一節(jié)點的內(nèi)存中的存儲地址;
[0009]對所述RDMA讀請求進行解析,得到所述存儲地址,生成第一 ACE讀請求,所述第一ACE讀請求中包含所述存儲地址;
[0010]將所述第一 ACE讀請求發(fā)送至所述第一節(jié)點的處理器;
[0011]接收所述第一節(jié)點的處理器返回的第一 ACE響應消息;其中所述第一 ACE響應消息中包含所述RDMA讀請求請求讀取的數(shù)據(jù);
[0012]解析所述第一 ACE響應消息,得到所述RDMA讀請求請求讀取的數(shù)據(jù),并生成RDMA響應消息,所述RDMA響應消息中包含所述RDMA讀請求請求讀取的數(shù)據(jù);
[0013]將所述RDMA響應消息發(fā)送至所述第二節(jié)點的RDMA網(wǎng)卡。
[0014]在第一方面的第一種可能的實現(xiàn)方式中,所述方法還包括:
[0015]所述第一節(jié)點的RDMA網(wǎng)卡接收所述第二節(jié)點的RDMA網(wǎng)卡發(fā)送的RDMA寫請求;其中所述RDMA寫請求中包括所述第二節(jié)點請求寫入所述第一節(jié)點的數(shù)據(jù);
[0016]解析所述RDMA寫請求,得到所述第二節(jié)點請求寫入所述第一節(jié)點的數(shù)據(jù),并生成ACE寫請求;所述ACE寫請求中包含所述第二節(jié)點請求寫入所述第一節(jié)點的數(shù)據(jù);
[0017]將所述ACE寫請求發(fā)送至所述第一節(jié)點的處理器。
[0018]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,所述方法還包括:
[0019]第二節(jié)點的RDMA網(wǎng)卡將第二ACE讀請求發(fā)送至所述第二節(jié)點的處理器;所述第二ACE讀請求包括所述第二 ACE讀請求請求讀取的數(shù)據(jù)在所述第二節(jié)點內(nèi)存中的存儲地址;
[0020]接收所述第二節(jié)點的處理器反饋的第二 ACE響應消息;其中所述第二 ACE響應消息包括所述第二 ACE讀請求請求讀取的數(shù)據(jù);
[0021 ] 解析所述第二 ACE響應消息,得到所述第二 ACE讀請求請求讀取的數(shù)據(jù),并生成所述RDMA寫請求;
[0022]將所述RDMA寫請求發(fā)送至所述第一節(jié)點的RDMA網(wǎng)卡。
[0023]結(jié)合第一方面或第一方面的第一種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,在所述第一節(jié)點的RDMA網(wǎng)卡接收所述第二節(jié)點的RDMA網(wǎng)卡發(fā)送的RDMA讀請求之前,所述方法還包括:
[0024]所述第一節(jié)點的RDMA網(wǎng)卡與所述第二節(jié)點的RDMA網(wǎng)卡相互交換系統(tǒng)參數(shù)。
[0025]結(jié)合第一方面或第一方面的第二種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,所述方法還包括:
[0026]所述第二節(jié)點的RDMA網(wǎng)卡對接收到的所述第一節(jié)點的RDMA網(wǎng)卡發(fā)送的RDMA響應消息進行解析,生成第三ACE響應消息;
[0027]將所述第三ACE響應消息發(fā)送給所述第二節(jié)點的處理器。
[0028]第二方面,提供一種基于遠程直接內(nèi)存訪問RDMA的數(shù)據(jù)傳輸方法,包括:
[0029]第一節(jié)點的RDMA網(wǎng)卡接收第二節(jié)點的RDMA網(wǎng)卡發(fā)送的RDMA寫請求;其中所述RDMA寫請求中包括所述第二節(jié)點請求寫入所述第一節(jié)點的數(shù)據(jù);
[0030]解析所述RDMA寫請求,得到所述第二節(jié)點請求寫入所述第一節(jié)點的數(shù)據(jù),生成ACE寫請求,所述ACE寫請求中包含所述第二節(jié)點請求寫入所述第一節(jié)點的數(shù)據(jù);
[0031]將所述ACE寫請求發(fā)送至所述第一節(jié)點的處理器。
[0032]在第二方面的第一種可能的實現(xiàn)方式中,所述方法還包括:
[0033]第二節(jié)點的RDMA網(wǎng)卡將ACE讀請求發(fā)送至所述第二節(jié)點的處理器;所述ACE讀請求包括所述ACE讀請求請求讀取的數(shù)據(jù)在所述第二節(jié)點內(nèi)存中的存儲地址;
[0034]接收所述第二節(jié)點的處理器反饋的ACE響應消息;其中所述ACE響應消息包括述ACE讀請求請求讀取的數(shù)據(jù);
[0035]解析所述ACE響應消息,得到述ACE讀請求請求讀取的數(shù)據(jù),并生成所述RDMA寫請求發(fā)送至所述第一節(jié)點的RDMA網(wǎng)卡。
[0036]結(jié)合第二方面或第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能的實現(xiàn)方式中,在所述第一節(jié)點的RDMA網(wǎng)卡接收所述第二節(jié)點的RDMA網(wǎng)卡發(fā)送的RDMA讀請求之前,所述方法還包括:
[0037]所述第一節(jié)點的RDMA網(wǎng)卡與所述第二節(jié)點的RDMA網(wǎng)卡相互交換系統(tǒng)參數(shù)。
[0038]第三方面,提供一種RDMA網(wǎng)卡,位于第一節(jié)點中,所述RDMA網(wǎng)卡通過ACE總線與處理器相連,所述RDMA網(wǎng)卡包括:ACE接口、網(wǎng)絡接口、RDMA處理器和協(xié)議轉(zhuǎn)換器,所述RDMA處理器和所述協(xié)議轉(zhuǎn)換器通過所述ACE接口與所述處理器進行通信,所述網(wǎng)絡接口用于與外部設備進行通信,其中:
[0039]所述RDMA處理器,用于通過所述網(wǎng)絡接口接收第二節(jié)點的RDMA網(wǎng)卡發(fā)送的RDMA讀請求;所述RDMA讀請求包括所述RDMA讀請求請求讀取的數(shù)據(jù)在所述第一節(jié)點的內(nèi)存中的存儲地址;
[0040]所述協(xié)議轉(zhuǎn)換器,用于對所述RDMA讀請求進行解析,得到所述存儲地址,生成第一 ACE讀請求,所述第一 ACE讀請求中包含所述存儲地址;
[0041]所述RDMA處理器,還用于通過所述ACE接口將所述第一 ACE讀請求發(fā)送至所述第一節(jié)點的處理器;
[0042]所述RDMA處理器,還用于通過所述ACE接口接收所述第一節(jié)點的處理器返回的第一 ACE響應消息;其中所述第一 ACE響應消息中包含所述RDMA讀請求請求讀取的數(shù)據(jù);
[0043]所述協(xié)議轉(zhuǎn)換器,還用于解析所述第一 ACE響應消息,得到所述RDMA讀請求請求讀取的數(shù)據(jù),并生成RDMA響應消息,所述RDMA響應消息中包含所述RDMA讀請求請求讀取的數(shù)據(jù);
[0044]所述RDMA處理器,用于通過所述網(wǎng)絡接口將所述RDMA響應消息發(fā)送至所述第二節(jié)點的RDMA網(wǎng)卡。
[0045]在第三方面的第一種可能的實現(xiàn)方式中:
[0046]所述RDMA處理器,還用于通過所述網(wǎng)絡接口接收所述第二節(jié)點的RDMA網(wǎng)卡發(fā)送的RDMA寫請求;其中所述RDMA寫請求中包括所述第二節(jié)點請求寫入所述第一節(jié)點的數(shù)據(jù);
[0047]所述協(xié)議轉(zhuǎn)換器,還用于解析所述RDMA寫請求,得到所述第二節(jié)點請求寫入所述第一節(jié)點的數(shù)據(jù),生成ACE寫請求,所述ACE寫請求中包含所述第二節(jié)點請求寫入所述第一節(jié)點的數(shù)據(jù);
[0048]所述RDMA處理器,還用于通過所述ACE接口將所述ACE寫請求發(fā)送至所述第一節(jié)點的處理器。
[0049]結(jié)合第三方面的第一種可能的實現(xiàn)方式,在第三方面的第二種可能的實現(xiàn)方式中:
[0050]所述第二節(jié)點的RDMA處理器,用于通過所述第二節(jié)點的ACE接口將第二 ACE讀請求發(fā)送至所述第二節(jié)點的處理器;所述第二 ACE讀請求包括所述第二 ACE讀請求請求讀取的數(shù)據(jù)在所述第二節(jié)點內(nèi)存中的存儲地址;及用于通過所述第二節(jié)點的ACE接口接收所述第二節(jié)點的處理器反饋的第二 ACE響應消息;其中所述第二 ACE響應消息包括所述第二ACE讀請求請求讀取的數(shù)據(jù);
[0051]所述第二節(jié)點的協(xié)議轉(zhuǎn)換器,用于解析所述第二 ACE響應消息,得到所述第二 ACE讀請求請求讀取的數(shù)據(jù),并生成所述RDMA寫請求;
[0052]所述第二節(jié)點的RDMA處理器,還用于通過所述第二節(jié)點的網(wǎng)絡接口將所述RDMA寫請求發(fā)送至所述第一節(jié)點的RDMA網(wǎng)卡。
[0053]結(jié)合第三方面或第三方面的第一種可能的實現(xiàn)方式,在第三方面的第三種可能的實現(xiàn)方式中:
[0054]所述RDMA處理器,還用于通過所述網(wǎng)絡接口與所述第二節(jié)點的RDMA網(wǎng)卡相互交換系統(tǒng)參數(shù)。
[0055]結(jié)合第三方方面或第三方面的第二種可能的實現(xiàn)方式,在第三方面的第四種可能的實現(xiàn)方式中:
[0056]所述第二節(jié)點的協(xié)議轉(zhuǎn)換器,還用于對接收到的所述第一節(jié)點的RDMA網(wǎng)卡發(fā)送的RDMA響應消息進行解析,生成第三ACE響應消息;
[0057]所述第二節(jié)點的RDMA處理器,還用于通過所述第二節(jié)點的ACE接口將所述第三ACE響應消息發(fā)送給所述第二節(jié)點的處理器。
[0058]第四方面,提供一種RDMA網(wǎng)卡,位于第一節(jié)點中,所述RDMA網(wǎng)