專利名稱:一種基于分流網(wǎng)卡和多核cpu實現(xiàn)的高速包過濾設(shè)備和方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)數(shù)據(jù)處理領(lǐng)域,具體涉及一種基于分流網(wǎng)卡和多核CPU實現(xiàn)的高速包過濾設(shè)備和方法。
背景技術(shù):
包過濾設(shè)備是指防火墻等對網(wǎng)絡(luò)報文進(jìn)行分析過濾的設(shè)備,這類設(shè)備需要對網(wǎng)絡(luò)流量中的每個報文進(jìn)行實時處理,在高速網(wǎng)絡(luò)的應(yīng)用環(huán)境中,對設(shè)備性能要求很高,隨著當(dāng)前多核CPU平臺的普及,很多包過濾設(shè)備是基于多核CPU實現(xiàn)的。多核包過濾設(shè)備要把網(wǎng)絡(luò)流量分配到多個CPU核心上,并行收發(fā)包處理,流量分配的過程要滿足一些要求,比如同一個TCP連接的數(shù)據(jù)要分配到一個CPU核心,CPU核心之間要負(fù)載均衡等。專利號為“CN200810084356. 2”、發(fā)明名稱為“使用多核CPU處理QoS業(yè)務(wù)的方法、 裝置和設(shè)備”公開了一種使用多核CPU處理QoS業(yè)務(wù)的方法、裝置和設(shè)備。該方法包括以下步驟獲取事件緩存隊列中存在事件的CPU Core;根據(jù)所述CPU Core的事件緩存隊列中存在的事件,獲取所述CPU Core處理后的流轉(zhuǎn)發(fā)出去所使用的接口 ;調(diào)度所述CPU Core對所述接口中的QoS隊列進(jìn)行出隊列操作。通過使用本發(fā)明提供的方法、裝置和設(shè)備,實現(xiàn)了設(shè)備任一接口上QoS隊列的收發(fā)均衡,且提高了多核CPU對QoS業(yè)務(wù)的處理效率,提升了多核 CPU設(shè)備的性能。專利號為“CN200510025133.5”、發(fā)明名稱為“在實時通信系統(tǒng)中實現(xiàn)大數(shù)據(jù)包快速轉(zhuǎn)發(fā)的方法”公開了一種在實時通信系統(tǒng)中實現(xiàn)大數(shù)據(jù)包快速轉(zhuǎn)發(fā)的方法,網(wǎng)卡收到由其他設(shè)備發(fā)送過來的數(shù)據(jù)包;CPU每隔一段時間向網(wǎng)卡查詢是否有待處理的數(shù)據(jù)包;如在網(wǎng)卡緩存中有待處理的數(shù)據(jù)包,進(jìn)入中斷處理程序;該程序收到發(fā)送過來的“流”的第一個數(shù)據(jù)包,進(jìn)行流程轉(zhuǎn)發(fā);“流”是指具有相同的源地址,目的地址,源端口,目的端口和協(xié)議的數(shù)據(jù)包;流程轉(zhuǎn)發(fā)包括在接收緩存中對該數(shù)據(jù)包進(jìn)行NAT,防火墻過濾等處理,同時在高速緩沖中建立一個索引,將該流的具體信息和需要轉(zhuǎn)發(fā)的端口記錄下來;當(dāng)“流”的隨后包達(dá)到時,中斷處理程序去查找高速緩沖,根據(jù)高速緩沖中的信息將內(nèi)存的數(shù)據(jù)包由相應(yīng)的端口直接發(fā)送,不再將數(shù)據(jù)包從內(nèi)存拷貝到發(fā)送緩沖。但上述方案中,分流過程是軟件實現(xiàn)的,軟件從網(wǎng)卡收到報文后,按照一定的算法把報文分發(fā)給多個CPU核心去并行處理,每個CPU核心發(fā)送報文時,需要軟件把報文合并到一個發(fā)送隊列中,由網(wǎng)卡硬件發(fā)出。這些技術(shù)的缺點是,報文在網(wǎng)卡和每個cpu核心之間的傳輸過程中,需要軟件進(jìn)行報文分發(fā)和合并,涉及多個緩沖區(qū)和進(jìn)程的交換,往往成為系統(tǒng)的性能瓶頸。
發(fā)明內(nèi)容
本發(fā)明克服現(xiàn)有技術(shù)不足,采用專用的分流網(wǎng)卡和多核cpu結(jié)合的方法實現(xiàn)包過濾設(shè)備,在保證了高速包過濾設(shè)備的性能。
本發(fā)明提供了一種基于分流網(wǎng)卡和多核cpu實現(xiàn)的高速包過濾設(shè)備,其包括多核 CPU系統(tǒng)模塊和分流網(wǎng)卡模塊,所述多核CPU系統(tǒng)模塊中包括對應(yīng)于每個CPU核心的報文緩沖區(qū)模塊。本發(fā)明提供的基于分流網(wǎng)卡和多核cpu實現(xiàn)的高速包過濾設(shè)備,其分流網(wǎng)卡模塊中還包括報文分發(fā)和數(shù)據(jù)讀取模塊,用于把網(wǎng)絡(luò)流量分發(fā)到每個CPU核心對應(yīng)的報文接收緩沖區(qū)模塊內(nèi)和讀取每個報文緩沖區(qū)模塊內(nèi)的數(shù)據(jù)。本發(fā)明提供的基于分流網(wǎng)卡和多核cpu實現(xiàn)的高速包過濾設(shè)備,其報文分發(fā)和數(shù)據(jù)讀取模塊把網(wǎng)絡(luò)流量同源同宿且負(fù)載均衡的分發(fā)到每個CPU核心對應(yīng)的報文接收緩沖區(qū)模塊內(nèi)。本發(fā)明提供的基于分流網(wǎng)卡和多核cpu實現(xiàn)的高速包過濾設(shè)備,其報文分發(fā)和數(shù)據(jù)讀取模塊并行傳輸每個報文緩沖區(qū)模塊內(nèi)的數(shù)據(jù)。本發(fā)明還提供了一種基于分流網(wǎng)卡和多核cpu實現(xiàn)的高速包過濾方法,其在網(wǎng)卡驅(qū)動軟件中,調(diào)用內(nèi)核函數(shù),為每個CPU核心申請本地內(nèi)存的報文緩沖區(qū)。本發(fā)明提供的基于分流網(wǎng)卡和多核cpu實現(xiàn)的高速包過濾方法,其應(yīng)用業(yè)務(wù)的每個進(jìn)程,分別與一個所述CPU核心綁定,并且通過內(nèi)存映射連接到所述CPU核心對應(yīng)的所述報文緩沖區(qū),利用所述緩沖區(qū)接收和發(fā)送報文。本發(fā)明提供的基于分流網(wǎng)卡和多核cpu實現(xiàn)的高速包過濾方法,其分流網(wǎng)卡接收到輸入設(shè)備的報文后,進(jìn)行同源同宿的分流,方法是取出所述報文的源目IP地址和系統(tǒng)預(yù)設(shè)的隨機(jī)數(shù)矩陣進(jìn)行對稱的位運算,計算出所述報文要分流到的報文接收緩沖區(qū)編號,把報文寫到所述緩沖區(qū)內(nèi)。本發(fā)明提供的基于分流網(wǎng)卡和多核cpu實現(xiàn)的高速包過濾方法,其分流網(wǎng)卡依次輪詢每個核心的所述報文發(fā)送緩沖區(qū),從中讀取應(yīng)用業(yè)務(wù)的進(jìn)程發(fā)送的報文,從網(wǎng)口發(fā)送出去。本發(fā)明采用分流網(wǎng)卡和多核cpu結(jié)合的方法實現(xiàn)高速的包過濾設(shè)備。多核Cpu的每個核心上啟動一個進(jìn)程(或線程),使用CPU核心的本地內(nèi)存中的報文緩沖區(qū)接收和發(fā)送數(shù)據(jù),提高內(nèi)存訪問的局部性。分流網(wǎng)卡是專門定制的硬件,可以打通網(wǎng)絡(luò)數(shù)據(jù)從網(wǎng)卡到每個CPU核心的傳輸瓶頸,把網(wǎng)絡(luò)流量同源同宿且負(fù)載均衡的分發(fā)到每個cpu核心對應(yīng)的報文接收緩沖區(qū)內(nèi),把每個核心的報文發(fā)送緩沖區(qū)內(nèi)的數(shù)據(jù)并行讀取到網(wǎng)卡中發(fā)送出去。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于報文在網(wǎng)卡和每個cpu核心之間的傳輸過程中,不需要軟件進(jìn)行報文分發(fā)和合并,沒有多個緩沖區(qū)和進(jìn)程的交換開銷,從而提升包過濾設(shè)備的性能。
圖1是本發(fā)明的結(jié)構(gòu)示意圖。
具體實施例方式圖1是本發(fā)明的結(jié)構(gòu)示意圖,其包括多核cpu系統(tǒng)模塊和分流網(wǎng)卡模塊,所述多核 cpu系統(tǒng)模塊中包括對應(yīng)于每個CPU核心的報文緩沖區(qū)模塊。其分流網(wǎng)卡模塊中還包括報文分發(fā)和數(shù)據(jù)讀取模塊,用于把網(wǎng)絡(luò)流量同源同宿且負(fù)載均衡的分發(fā)到每個cpu核心對應(yīng)的報文接收緩沖區(qū)模塊內(nèi)和并行讀取每個報文緩沖區(qū)模塊內(nèi)的數(shù)據(jù)。本發(fā)明的實現(xiàn)方法和過程如下(1)在網(wǎng)卡驅(qū)動軟件中,調(diào)用內(nèi)核函數(shù),為每個CPU核心申請本地內(nèi)存的報文緩沖區(qū)。(2)應(yīng)用業(yè)務(wù)的每個進(jìn)程,分別與一個CPU核心綁定,并且通過內(nèi)存映射連接到該 CPU核心對應(yīng)的報文緩沖區(qū),利用緩沖區(qū)接收和發(fā)送報文。(3)分流網(wǎng)卡接收到輸入設(shè)備的報文后,進(jìn)行同源同宿的分流,方法是取出報文的源目IP地址,和系統(tǒng)預(yù)設(shè)的隨機(jī)數(shù)矩陣進(jìn)行對稱的位運算,計算出報文要分流到的報文接收緩沖區(qū)編號,把報文寫到緩沖區(qū)內(nèi)。(4)分流網(wǎng)卡依次輪詢每個核心的報文發(fā)送緩沖區(qū),從中讀取應(yīng)用業(yè)務(wù)的進(jìn)程發(fā)送的報文,從網(wǎng)口發(fā)送出去。本發(fā)明報文在網(wǎng)卡和每個cpu核心之間的傳輸過程中,不需要軟件進(jìn)行報文分發(fā),沒有多個緩沖區(qū)和進(jìn)程的交換開銷,從而提升包過濾設(shè)備的性能。以上實施例僅用以說明本發(fā)明的技術(shù)方案而非對其限制,盡管參照上述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,所述領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解依然可以對本發(fā)明的具體實施方式
進(jìn)行修改或者同等替換,而未脫離本發(fā)明精神和范圍的任何修改或者等同替換, 其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.一種基于分流網(wǎng)卡和多核CPU實現(xiàn)的高速包過濾設(shè)備,其包括多核CPU系統(tǒng)模塊和分流網(wǎng)卡模塊,其特征在于,多核CPU系統(tǒng)模塊中包括對應(yīng)于每個CPU核心的報文緩沖區(qū)模塊。
2.根據(jù)權(quán)利要求1所述的過濾設(shè)備,其特征在于分流網(wǎng)卡模塊中還包括報文分發(fā)和數(shù)據(jù)讀取模塊,用于把網(wǎng)絡(luò)流量分發(fā)到每個cpu核心對應(yīng)的報文接收緩沖區(qū)模塊內(nèi)和讀取每個報文緩沖區(qū)模塊內(nèi)的數(shù)據(jù)。
3.根據(jù)權(quán)利要求1-2所述的過濾設(shè)備,其特征在于報文分發(fā)和數(shù)據(jù)讀取模塊把網(wǎng)絡(luò)流量同源同宿且負(fù)載均衡的分發(fā)到每個cpu核心對應(yīng)的報文接收緩沖區(qū)模塊內(nèi)。
4.根據(jù)權(quán)利要求1-2所述的過濾設(shè)備,其特征在于報文分發(fā)和數(shù)據(jù)讀取模塊并行讀取每個報文緩沖區(qū)模塊內(nèi)的數(shù)據(jù)。
5.一種基于分流網(wǎng)卡和多核cpu實現(xiàn)的高速包過濾方法,其特征在于在網(wǎng)卡驅(qū)動軟件中,調(diào)用內(nèi)核函數(shù),為每個CPU核心申請本地內(nèi)存的報文緩沖區(qū)。
6.根據(jù)權(quán)利要求5所述的過濾方法,其特征在于,應(yīng)用業(yè)務(wù)的每個進(jìn)程,分別與一個所述CPU核心綁定,并且通過內(nèi)存映射連接到所述CPU核心對應(yīng)的所述報文緩沖區(qū),利用所述緩沖區(qū)接收和發(fā)送報文。
7.根據(jù)權(quán)利要求5-6所述的過濾方法,其特征在于,分流網(wǎng)卡接收到輸入設(shè)備的報文后,進(jìn)行同源同宿的分流,方法是取出所述報文的源目IP地址和系統(tǒng)預(yù)設(shè)的隨機(jī)數(shù)矩陣進(jìn)行對稱的位運算,計算出所述報文要分流到的報文接收緩沖區(qū)編號,把報文寫到所述緩沖區(qū)內(nèi)。
8.根據(jù)權(quán)利要求5-7所述的過濾方法,其特征在于,分流網(wǎng)卡依次輪詢每個核心的所述報文發(fā)送緩沖區(qū),從中讀取應(yīng)用業(yè)務(wù)的進(jìn)程發(fā)送的報文,從網(wǎng)口發(fā)送出去。
全文摘要
本發(fā)明提供一種基于分流網(wǎng)卡和多核cpu實現(xiàn)的高速包過濾設(shè)備和方法,分流網(wǎng)卡是專門定制的硬件,可以打通網(wǎng)絡(luò)數(shù)據(jù)從網(wǎng)卡到每個cpu核心的傳輸瓶頸,把網(wǎng)絡(luò)流量同源同宿且負(fù)載均衡的分發(fā)到每個cpu核心對應(yīng)的報文接收緩沖區(qū)內(nèi),把每個核心的報文發(fā)送緩沖區(qū)內(nèi)的數(shù)據(jù)并行讀取到網(wǎng)卡中發(fā)送出去,多核Cpu的每個核心上啟動一個進(jìn)程(或線程),使用CPU核心的本地內(nèi)存中的報文緩沖區(qū)接收和發(fā)送數(shù)據(jù),提高內(nèi)存訪問的局部性。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于提升包過濾設(shè)備的性能。
文檔編號H04L29/12GK102497322SQ20111042709
公開日2012年6月13日 申請日期2011年12月19日 優(yōu)先權(quán)日2011年12月19日
發(fā)明者劉朝輝, 張英文, 李靜, 竇曉光, 邵宗有 申請人:曙光信息產(chǎn)業(yè)(北京)有限公司