欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于hash算法的萬兆網(wǎng)卡多路分流方法及其系統(tǒng)的制作方法

文檔序號(hào):7863186閱讀:577來源:國(guó)知局
專利名稱:一種基于hash算法的萬兆網(wǎng)卡多路分流方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)絡(luò)傳輸與處理領(lǐng)域,具體涉及一種基于hash算法的萬兆網(wǎng)卡多路分流方法及其系統(tǒng)。
背景技術(shù)
目前的萬兆零拷貝技術(shù)主要是基于Intel網(wǎng)卡提供硬件多隊(duì)列來實(shí)現(xiàn),一般來說,硬件端開啟N個(gè)硬件隊(duì)列,則軟件端開啟N路接收緩沖區(qū)進(jìn)行N路流量的并行處理。
目前的萬兆零拷貝技術(shù)主要是基于Intel網(wǎng)卡提供硬件多隊(duì)列來實(shí)現(xiàn),需要 Intel網(wǎng)卡上打開RSS (Receive Side Scaling)模式,將收到的流量進(jìn)行N路分流。但目前Intel網(wǎng)卡有個(gè)限制,RSS是基于網(wǎng)卡硬件hash的結(jié)果進(jìn)行分流的,但I(xiàn)ntel網(wǎng)卡只提供4bit來描述hash的結(jié)果,也就是說最多只能支持到16個(gè)分流結(jié)果,即16路分流。但目前主流的服務(wù)器CPU核數(shù)基本都在24以上,也就是說,目前的零拷貝機(jī)制不能 滿足現(xiàn)在多核服務(wù)器的處理需求,意味著有大量的CPU核處于空閑狀態(tài),浪費(fèi)資源。發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提供一種基于hash算法的萬兆網(wǎng)卡多路分流方法及其系統(tǒng),本發(fā)明在網(wǎng)卡硬件多隊(duì)列的基礎(chǔ)上,利用軟件分流的方式實(shí)現(xiàn)了對(duì)超過16個(gè) CPU核服務(wù)器處理的支持。本發(fā)明要解決了如何讓32個(gè)cpu核同時(shí)處理16個(gè)網(wǎng)卡硬件隊(duì)列上數(shù)據(jù)的問題。
本發(fā)明的目的是采用下述技術(shù)方案實(shí)現(xiàn)的
一種基于hash算法的萬兆網(wǎng)卡多路分流方法,其改進(jìn)之處在于,所述方法包括下述步驟
(I)當(dāng)CPU核數(shù)大于Intel萬兆網(wǎng)卡支持的最大分流隊(duì)列數(shù)時(shí),開啟最大能支持的網(wǎng)卡硬件隊(duì)列數(shù)目;
(2)為每個(gè)網(wǎng)卡硬件隊(duì)列分配獨(dú)立的數(shù)據(jù)緩沖區(qū),并通過內(nèi)存映射的方式將數(shù)據(jù)緩沖區(qū)映射到應(yīng)用程序中;
(3)每個(gè)數(shù)據(jù)緩沖區(qū)采用循環(huán)隊(duì)列的數(shù)據(jù)結(jié)構(gòu);
(4)計(jì)算CPU核數(shù)M與網(wǎng)卡硬件隊(duì)列數(shù)N的對(duì)應(yīng)關(guān)系;
(5) CPU核調(diào)用hash函數(shù)并從數(shù)據(jù)緩沖區(qū)中選取網(wǎng)絡(luò)報(bào)文數(shù)據(jù)包。
其中,所述步驟(2)中,內(nèi)核驅(qū)動(dòng)對(duì)數(shù)據(jù)緩沖區(qū)的修改對(duì)應(yīng)到應(yīng)用程序中。
其中,所述步驟(3)中,所述循環(huán)隊(duì)列的數(shù)據(jù)結(jié)構(gòu)為無鎖算法。
其中,所述步驟(4)中,所述CPU核數(shù)M大于網(wǎng)卡硬件隊(duì)列數(shù)N,對(duì)于所述單個(gè)網(wǎng)卡硬件隊(duì)列,是多對(duì)一的映射關(guān)系。
其中,所述步驟(5)中,至少一個(gè)CPU線程調(diào)用同一個(gè)hash函數(shù);至少一個(gè)的CPU 核選取同一個(gè)網(wǎng)卡硬件隊(duì)列的網(wǎng)絡(luò)報(bào)文數(shù)據(jù)包。
本發(fā)明基于另一目的提供的一種基于hash算法的萬兆網(wǎng)卡多路分流系統(tǒng),其改CN 102916905 A書明說2/3頁進(jìn)之處在于,所述系統(tǒng)包括內(nèi)核驅(qū)動(dòng)、共享內(nèi)存和至少一個(gè)的CPU核;網(wǎng)絡(luò)數(shù)據(jù)報(bào)文傳送給內(nèi)核驅(qū)動(dòng)后載傳輸給共享內(nèi)存;所述共享內(nèi)存的數(shù)據(jù)報(bào)文對(duì)應(yīng)到應(yīng)用程序中,供至少一個(gè)的CPU核選取網(wǎng)絡(luò)報(bào)文數(shù)據(jù)包。
其中,所述內(nèi)核驅(qū)動(dòng)包括至少一個(gè)的Intel萬兆網(wǎng)卡硬件隊(duì)列,所述Intel萬兆網(wǎng)卡硬件隊(duì)列與共享內(nèi)存數(shù)據(jù)緩沖區(qū)一一對(duì)應(yīng)。
其中,所述網(wǎng)卡硬件隊(duì)列與CPU核采用一對(duì)多的映射關(guān)系。
與現(xiàn)有技術(shù)比,本發(fā)明達(dá)到的有益效果是
本發(fā)明提供的基于hash算法的萬兆網(wǎng)卡多路分流方法及其系統(tǒng),在硬件多隊(duì)列的基礎(chǔ)上,利用軟件分流的方式實(shí)現(xiàn)了對(duì)超過16個(gè)CPU核服務(wù)器處理的支持,并實(shí)現(xiàn)了網(wǎng)卡硬件隊(duì)列與CPU核一對(duì)多的映射關(guān)系。本發(fā)明要解決了如何讓32個(gè)cpu核同時(shí)處理16 個(gè)網(wǎng)卡硬件隊(duì)列上數(shù)據(jù)的問題。


圖I是本發(fā)明提供的基于hash算法的萬兆網(wǎng)卡多路分流方法實(shí)現(xiàn)示意圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式
作進(jìn)一步的詳細(xì)說明。
如圖I所示,本發(fā)明提供的基于hash算法的萬兆網(wǎng)卡多路分流方法包括下述步驟
(I)當(dāng)CPU核數(shù)大于Intel萬兆網(wǎng)卡支持的最大分流隊(duì)列數(shù)時(shí),開啟最大能支持的網(wǎng)卡硬件隊(duì)列數(shù)目當(dāng)CPU核數(shù)M大于萬兆網(wǎng)卡支持的最大分流網(wǎng)卡硬件隊(duì)列數(shù)N時(shí),開啟最大能支持的網(wǎng)卡硬件隊(duì)列數(shù)目;M和N為自然數(shù),M和N均大于2。
硬件隊(duì)列為網(wǎng)卡上的硬件隊(duì)列queue,如intel萬兆網(wǎng)卡支持的硬件隊(duì)列個(gè)數(shù)最多為16,那么在8CPU核的服務(wù)器上開啟8個(gè)網(wǎng)卡上的硬件隊(duì)列,在32CPU核的服務(wù)器上開啟16個(gè)網(wǎng)卡上的硬件隊(duì)列。
(2)為每個(gè)網(wǎng)卡硬件隊(duì)列分配獨(dú)立的數(shù)據(jù)緩沖區(qū),并通過內(nèi)存映射的方式將數(shù)據(jù)緩沖區(qū)映射到應(yīng)用程序中對(duì)于每個(gè)網(wǎng)卡硬件隊(duì)列,都為其分配了獨(dú)立的數(shù)據(jù)緩沖區(qū),并通過內(nèi)存映射的方式將數(shù)據(jù)緩沖區(qū)隊(duì)列映射到應(yīng)用程序中去,從而驅(qū)動(dòng)對(duì)數(shù)據(jù)緩沖區(qū)的修改可以直接反映到應(yīng)用程序中來,從而避免了不必要的內(nèi)存拷貝。
(3)每個(gè)數(shù)據(jù)緩沖區(qū)采用循環(huán)隊(duì)列的數(shù)據(jù)結(jié)構(gòu)每個(gè)數(shù)據(jù)緩沖區(qū)隊(duì)列采用循環(huán)隊(duì)列的數(shù)據(jù)結(jié)構(gòu),此算法為無鎖(lock-free)算法,避免了加鎖對(duì)性能的影響。
(4)計(jì)算CPU核數(shù)M與網(wǎng)卡硬件隊(duì)列數(shù)N的對(duì)應(yīng)關(guān)系計(jì)算出CPU核數(shù)M與硬件隊(duì)列數(shù)N的對(duì)應(yīng)關(guān)系,由于M>N,對(duì)于單個(gè)硬件隊(duì)列來說,是多對(duì)一的映射關(guān)系。
(5) CPU核調(diào)用hash函數(shù)并從數(shù)據(jù)緩沖區(qū)中選取網(wǎng)絡(luò)報(bào)文數(shù)據(jù)包在上述軟件架構(gòu)基礎(chǔ)上,添加了一層軟件分類層,即hash函數(shù)接口。每個(gè)線程從其對(duì)應(yīng)的硬件隊(duì)列中取數(shù)據(jù),每個(gè)CPU線程使用同一個(gè)hash函數(shù),不同線程對(duì)應(yīng)不同的hash結(jié)果,雖然出現(xiàn)多個(gè) CPU從同一個(gè)隊(duì)列中取數(shù)據(jù)的情況,但每個(gè)CPU核只會(huì)取走屬于自己的數(shù)據(jù)包,從而實(shí)現(xiàn)了多個(gè)CPU核取同一個(gè)硬件隊(duì)列中的數(shù)據(jù)。
本發(fā)明提供一種基于hash算法的萬兆網(wǎng)卡多路分流系統(tǒng),包括內(nèi)核驅(qū)動(dòng)、共享內(nèi)4存和至少一個(gè)的CPU核;網(wǎng)絡(luò)數(shù)據(jù)報(bào)文傳送給內(nèi)核驅(qū)動(dòng)后載傳輸給共享內(nèi)存;所述共享內(nèi)存的數(shù)據(jù)報(bào)文對(duì)應(yīng)到應(yīng)用程序中,供至少一個(gè)的CPU核選取網(wǎng)絡(luò)報(bào)文數(shù)據(jù)包。
內(nèi)核驅(qū)動(dòng)包括至少一個(gè)的Intel萬兆網(wǎng)卡硬件隊(duì)列,所述Intel萬兆網(wǎng)卡硬件隊(duì)列與共享內(nèi)存數(shù)據(jù)緩沖區(qū)一一對(duì)應(yīng)。(請(qǐng)核實(shí)描述的是否正確)
所述網(wǎng)卡硬件隊(duì)列與CPU核采用一對(duì)多的映射關(guān)系。
最后應(yīng)當(dāng)說明的是以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非對(duì)其限制,盡管參照上述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解依然可以對(duì)本發(fā)明的具體實(shí)施方式
進(jìn)行修改或者等同替換,而未脫離本發(fā)明精神和范圍的任何修改或者等同替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.一種基于hash算法的萬兆網(wǎng)卡多路分流方法,其特征在于,所述方法包括下述步驟(1)當(dāng)CPU核數(shù)大于Intel萬兆網(wǎng)卡支持的最大分流隊(duì)列數(shù)時(shí),開啟最大能支持的網(wǎng)卡硬件隊(duì)列數(shù)目;(2)為每個(gè)網(wǎng)卡硬件隊(duì)列分配獨(dú)立的數(shù)據(jù)緩沖區(qū),并通過內(nèi)存映射的方式將數(shù)據(jù)緩沖區(qū)映射到應(yīng)用程序中;(3)每個(gè)數(shù)據(jù)緩沖區(qū)采用循環(huán)隊(duì)列的數(shù)據(jù)結(jié)構(gòu);(4)計(jì)算CPU核數(shù)M與網(wǎng)卡硬件隊(duì)列數(shù)N的對(duì)應(yīng)關(guān)系;(5)CPU核調(diào)用hash函數(shù)并從數(shù)據(jù)緩沖區(qū)中選取網(wǎng)絡(luò)報(bào)文數(shù)據(jù)包。
2.如權(quán)利要求I所述的萬兆網(wǎng)卡多路分流方法,其特征在于,所述步驟(2)中,內(nèi)核驅(qū)動(dòng)對(duì)數(shù)據(jù)緩沖區(qū)的修改對(duì)應(yīng)到應(yīng)用程序中。
3.如權(quán)利要求I所述的萬兆網(wǎng)卡多路分流方法,其特征在于,所述步驟(3)中,所述循環(huán)隊(duì)列的數(shù)據(jù)結(jié)構(gòu)為無鎖算法。
4.如權(quán)利要求I所述的萬兆網(wǎng)卡多路分流方法,其特征在于,所述步驟(4)中,所述CPU 核數(shù)M大于網(wǎng)卡硬件隊(duì)列數(shù)N,對(duì)于所述單個(gè)網(wǎng)卡硬件隊(duì)列,是多對(duì)一的映射關(guān)系。
5.如權(quán)利要求I所述的萬兆網(wǎng)卡多路分流方法,其特征在于,所述步驟(5)中,至少一個(gè)CPU線程調(diào)用同一個(gè)hash函數(shù);至少一個(gè)的CPU核選取同一個(gè)網(wǎng)卡硬件隊(duì)列的網(wǎng)絡(luò)報(bào)文數(shù)據(jù)包。
6.一種基于hash算法的萬兆網(wǎng)卡多路分流系統(tǒng),其特征在于,所述系統(tǒng)包括內(nèi)核驅(qū)動(dòng)、共享內(nèi)存和至少一個(gè)的CPU核;網(wǎng)絡(luò)數(shù)據(jù)報(bào)文傳送給內(nèi)核驅(qū)動(dòng)后載傳輸給共享內(nèi)存;所述共享內(nèi)存的數(shù)據(jù)報(bào)文對(duì)應(yīng)到應(yīng)用程序中,供至少一個(gè)的CPU核選取網(wǎng)絡(luò)報(bào)文數(shù)據(jù)包。
7.如權(quán)利要求6所述的萬兆網(wǎng)卡多路分流系統(tǒng),其特征在于,所述內(nèi)核驅(qū)動(dòng)包括至少一個(gè)的Intel萬兆網(wǎng)卡硬件隊(duì)列,所述Intel萬兆網(wǎng)卡硬件隊(duì)列與共享內(nèi)存數(shù)據(jù)緩沖區(qū) --對(duì)應(yīng)。
8.如權(quán)利要求6所述的萬兆網(wǎng)卡多路分流系統(tǒng),其特征在于,所述網(wǎng)卡硬件隊(duì)列與CPU 核采用一對(duì)多的映射關(guān)系。
全文摘要
本發(fā)明涉及一種基于hash算法的萬兆網(wǎng)卡多路分流方法及其系統(tǒng),方法包括下述步驟當(dāng)CPU核數(shù)大于Intel萬兆網(wǎng)卡支持的最大分流隊(duì)列數(shù)時(shí),開啟最大能支持的網(wǎng)卡硬件隊(duì)列數(shù)目;為每個(gè)網(wǎng)卡硬件隊(duì)列分配獨(dú)立的數(shù)據(jù)緩沖區(qū),并通過內(nèi)存映射的方式將數(shù)據(jù)緩沖區(qū)映射到應(yīng)用程序中;每個(gè)數(shù)據(jù)緩沖區(qū)采用循環(huán)隊(duì)列的數(shù)據(jù)結(jié)構(gòu);計(jì)算CPU核數(shù)M與網(wǎng)卡硬件隊(duì)列數(shù)N的對(duì)應(yīng)關(guān)系;CPU核調(diào)用hash函數(shù)并從數(shù)據(jù)緩沖區(qū)中選取網(wǎng)絡(luò)報(bào)文數(shù)據(jù)包。系統(tǒng)包括內(nèi)核驅(qū)動(dòng)、共享內(nèi)存和至少一個(gè)CPU核。本發(fā)明在網(wǎng)卡硬件多隊(duì)列的基礎(chǔ)上,解決了如何讓32個(gè)CPU核同時(shí)處理16個(gè)網(wǎng)卡硬件隊(duì)列上數(shù)據(jù)的問題。
文檔編號(hào)H04L12/863GK102916905SQ20121039754
公開日2013年2月6日 申請(qǐng)日期2012年10月18日 優(yōu)先權(quán)日2012年10月18日
發(fā)明者萬偉 申請(qǐng)人:曙光信息產(chǎn)業(yè)(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
临高县| 滦平县| 东光县| 北宁市| 文成县| 方正县| 蓝田县| 定州市| 台湾省| 涡阳县| 南投县| 玛多县| 炎陵县| 乐平市| 余姚市| 易门县| 莲花县| 白水县| 揭西县| 汉源县| 武宣县| 吴江市| 清苑县| 沙湾县| 金沙县| 偃师市| 昭平县| 台州市| 泰州市| 怀化市| 乌什县| 明光市| 遵化市| 梅州市| 余庆县| 常熟市| 淮安市| 永泰县| 个旧市| 镇沅| 咸阳市|