亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

報文處理方法及裝置與流程

文檔序號:12623724閱讀:644來源:國知局
報文處理方法及裝置與流程

本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種報文處理方法及裝置。



背景技術(shù):

Linux作為免費開源的操作系統(tǒng),其強大的網(wǎng)絡(luò)處理能力和穩(wěn)定性,深受通信設(shè)備制造商們的歡迎,現(xiàn)在絕大多數(shù)網(wǎng)絡(luò)設(shè)備都是基于Linux操作系統(tǒng)開發(fā)。

傳輸控制協(xié)議(TCP)/因特網(wǎng)協(xié)議(IP)體系是當(dāng)前互聯(lián)網(wǎng)的通信協(xié)議標(biāo)準(zhǔn),在Linux網(wǎng)絡(luò)內(nèi)核中得到完整的實現(xiàn),該體系分為四個層次:應(yīng)用層,傳輸層,網(wǎng)絡(luò)層,網(wǎng)絡(luò)介質(zhì)層。Linux網(wǎng)絡(luò)內(nèi)核參照網(wǎng)絡(luò)協(xié)議體系實現(xiàn)了網(wǎng)絡(luò)互聯(lián)功能,包括以下部分:

1.套接字接口,網(wǎng)絡(luò)內(nèi)核最頂層支持應(yīng)用程序開發(fā)的接口,套接字接口是一系列標(biāo)準(zhǔn)函數(shù)。套接字支持多種不同類型的協(xié)議族:UNIX域協(xié)議族、TCP/IP協(xié)議族、互聯(lián)網(wǎng)數(shù)據(jù)包交換(IPX)協(xié)議族,其中TCP/IP協(xié)議族應(yīng)用最為廣泛;

2.傳輸層和網(wǎng)絡(luò)層,傳輸層包括標(biāo)準(zhǔn)的TCP和用戶數(shù)據(jù)報(UDP)協(xié)議模塊,而網(wǎng)絡(luò)層包括標(biāo)準(zhǔn)的IP協(xié)議模塊;

3.數(shù)據(jù)鏈路層,對于需要邏輯鏈路的網(wǎng)絡(luò),數(shù)據(jù)鏈路層提供獨立的邏輯鏈路協(xié)議模塊,比如點對點協(xié)議(PPP)、串行線路網(wǎng)際協(xié)議(SLIP)等。對于以太網(wǎng),該層比較簡單,主要的以太網(wǎng)協(xié)議實現(xiàn)被集成到底層網(wǎng)卡驅(qū)動中;

4.網(wǎng)絡(luò)設(shè)備驅(qū)動,由于物理特性的差異,不同的網(wǎng)絡(luò)設(shè)備采用不同的設(shè)備驅(qū)動。

本發(fā)明的發(fā)明人在研究過程中發(fā)現(xiàn),用戶態(tài)應(yīng)用程序讀取數(shù)據(jù)報文,需要先打開網(wǎng)絡(luò)設(shè)備并綁定套接字。數(shù)據(jù)報文經(jīng)過網(wǎng)絡(luò)設(shè)備驅(qū)動到內(nèi)核網(wǎng)絡(luò)協(xié)議棧,然后到用戶態(tài)應(yīng)用程序,處理流程復(fù)雜,同時內(nèi)核態(tài)到用戶態(tài)空間還需要經(jīng)過一次內(nèi)存拷貝,不適合對性能要求高的場合。

針對相關(guān)技術(shù)通過套接字接口和網(wǎng)絡(luò)協(xié)議棧無法快速進行報文處理的問題,目前尚未提出有效的解決方案。



技術(shù)實現(xiàn)要素:

本發(fā)明提供了一種報文處理方法及裝置,以至少解決相關(guān)技術(shù)中通過套接字接口和網(wǎng)絡(luò)協(xié)議棧無法快速進行報文處理的問題。

根據(jù)本發(fā)明的一個方面,提供了一種報文處理方法,包括:在用戶態(tài)應(yīng)用程序與網(wǎng) 絡(luò)設(shè)備驅(qū)動之間創(chuàng)建快速通道緩沖區(qū);判斷待傳輸報文是否屬于預(yù)設(shè)報文類型;在判斷到所述待傳輸報文屬于所述預(yù)設(shè)報文類型的情況下,通過所述快速通道緩沖區(qū),在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸所述待傳輸報文。

優(yōu)選地,在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間創(chuàng)建所述快速通道緩沖區(qū)包括:創(chuàng)建并注冊快速通道字符節(jié)點;通過所述快速通道字符節(jié)點,用戶態(tài)應(yīng)用程序通過系統(tǒng)調(diào)用創(chuàng)建共享隊列,得到所述快速通道緩沖區(qū);通過所述快速通道字符節(jié)點,用戶態(tài)應(yīng)用程序設(shè)置所述預(yù)設(shè)報文類型。

優(yōu)選地,在判斷到所述待傳輸報文屬于所述預(yù)設(shè)報文類型的情況下,在通過所述快速通道緩沖區(qū),在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸所述待傳輸報文之前,所述方法還包括:判斷所述快速通道緩沖區(qū)是否已滿;其中,在判斷到所述快速通道緩沖區(qū)未滿的情況下,通過所述快速通道緩沖區(qū),在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸所述待傳輸報文。

優(yōu)選地,在判斷到所述快速通道緩沖區(qū)已滿的情況下,所述方法還包括:丟棄所述待傳輸報文。

優(yōu)選地,在判斷到所述待傳輸報文不屬于所述預(yù)設(shè)報文類型的情況下,所述方法還包括:通過網(wǎng)絡(luò)協(xié)議棧在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸所述待傳輸報文。

優(yōu)選地,通過所述網(wǎng)絡(luò)協(xié)議棧在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸所述待傳輸報文包括:將所述待傳輸報文存儲到所述網(wǎng)絡(luò)協(xié)議棧;通過套接字接口從所述網(wǎng)絡(luò)協(xié)議棧讀取所述待傳輸報文。

根據(jù)本發(fā)明的另一個方面,還提供了一種報文處理裝置,包括:創(chuàng)建模塊,用于在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間創(chuàng)建快速通道緩沖區(qū);第一判斷模塊,用于判斷待傳輸報文是否屬于預(yù)設(shè)報文類型;第一傳輸模塊,用于在判斷到所述待傳輸報文屬于所述預(yù)設(shè)報文類型的情況下,通過所述快速通道緩沖區(qū),在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸所述待傳輸報文。

優(yōu)選地,所述裝置還包括:第二判斷模塊,用于判斷所述快速通道緩沖區(qū)是否已滿;其中,在判斷到所述快速通道緩沖區(qū)未滿的情況下,通過所述快速通道緩沖區(qū),在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸所述待傳輸報文。

優(yōu)選地,所述裝置還包括:丟棄模塊,用于在判斷到所述快速通道緩沖區(qū)已滿的情況下,丟棄所述待傳輸報文。

優(yōu)選地,所述裝置還包括:第二傳輸模塊,用于在判斷到所述待傳輸報文不屬于所述預(yù)設(shè)報文類型的情況下,通過網(wǎng)絡(luò)協(xié)議棧在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸所述待傳輸報文。

通過本發(fā)明,采用用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間創(chuàng)建快速通道緩沖區(qū);判斷 待傳輸報文是否屬于預(yù)設(shè)報文類型;在判斷到待傳輸報文屬于預(yù)設(shè)報文類型的情況下,通過快速通道緩沖區(qū),在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸待傳輸報文的方式,解決了通過套接字接口和網(wǎng)絡(luò)協(xié)議棧無法快速進行報文處理的問題,進而達到了快速進行報文處理的效果。

附圖說明

此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:

圖1是根據(jù)本發(fā)明實施例的報文處理方法的流程圖;

圖2是根據(jù)本發(fā)明實施例的報文處理裝置的結(jié)構(gòu)框圖;

圖3是根據(jù)本發(fā)明實施例的報文處理裝置的優(yōu)選結(jié)構(gòu)框圖一;

圖4是根據(jù)本發(fā)明實施例的報文處理裝置的優(yōu)選結(jié)構(gòu)框圖二;

圖5是根據(jù)本發(fā)明實施例的報文處理裝置的優(yōu)選結(jié)構(gòu)框圖三;

圖6是根據(jù)本發(fā)明優(yōu)選實施例的快速報文處理裝置的結(jié)構(gòu)框圖;

圖7是根據(jù)本發(fā)明優(yōu)選實施例的快速通道初始化流程圖;

圖8是根據(jù)本發(fā)明優(yōu)選實施例的內(nèi)核和用戶態(tài)共享隊列數(shù)據(jù)交互結(jié)構(gòu)框圖;

圖9是根據(jù)本發(fā)明優(yōu)選實施例的快速報文處理方法流程圖。

具體實施方式

下文中將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。

需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。

在本實施例中提供了一種報文處理方法,圖1是根據(jù)本發(fā)明實施例的報文處理方法的流程圖,如圖1所示,該流程包括如下步驟:

步驟S102,在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間創(chuàng)建快速通道緩沖區(qū);

步驟S104,判斷待傳輸報文是否屬于預(yù)設(shè)報文類型;

步驟S106,在判斷到待傳輸報文屬于預(yù)設(shè)報文類型的情況下,通過快速通道緩沖區(qū),在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸待傳輸報文。

通過上述步驟,根據(jù)待傳輸報文的報文類型,對于屬于預(yù)設(shè)報文類型的待傳輸報文, 通過創(chuàng)建的快速通道緩沖區(qū)對報文進行傳輸,使得屬于預(yù)設(shè)報文類型的待傳輸報文不必經(jīng)過網(wǎng)絡(luò)協(xié)議棧以及套接字接口的復(fù)雜處理,可以根據(jù)需要實現(xiàn)預(yù)設(shè)類型報文的快速傳輸??梢姡捎蒙鲜霾襟E,解決了通過套接字接口和網(wǎng)絡(luò)協(xié)議棧無法快速進行報文處理的問題,進而達到了快速進行報文處理的效果。

優(yōu)選地,預(yù)設(shè)報文類型可以是分片重組報文。

優(yōu)選地,在步驟S102中,可以通過創(chuàng)建并注冊快速通道字符節(jié)點;通過快速通道字符節(jié)點,用戶態(tài)應(yīng)用程序通過系統(tǒng)調(diào)用創(chuàng)建共享隊列,得到快速通道緩沖區(qū);通過快速通道字符節(jié)點,用戶態(tài)應(yīng)用程序設(shè)置預(yù)設(shè)報文類型,在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間創(chuàng)建快速通道緩沖區(qū)。

優(yōu)選地,快速通道緩沖區(qū)可以是環(huán)形緩沖區(qū),該環(huán)形緩沖區(qū)可以反復(fù)使用固定大小的內(nèi)存空間,寫入與讀出需要進行信息的協(xié)調(diào)與同步。

優(yōu)選地,網(wǎng)絡(luò)設(shè)備驅(qū)動可以將數(shù)據(jù)報文的接收函數(shù)掛接快速通道報文處理的回調(diào)函數(shù),通過回調(diào)函數(shù)判斷預(yù)設(shè)報文類型;用戶態(tài)應(yīng)用程序打開快速通道設(shè)備節(jié)點,創(chuàng)建共享隊列。用戶態(tài)應(yīng)用程序設(shè)置要處理的快速報文類型,通過系統(tǒng)調(diào)用獲取隊列的物理地址,映射到用戶態(tài)地址空間用戶態(tài)應(yīng)用程序。

優(yōu)選地,在判斷到待傳輸報文屬于預(yù)設(shè)報文類型的情況下,在步驟S104之前,還可以判斷快速通道緩沖區(qū)是否已滿;其中,在判斷到快速通道緩沖區(qū)未滿的情況下,通過快速通道緩沖區(qū),在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸待傳輸報文。

優(yōu)選地,在判斷到快速通道緩沖區(qū)已滿的情況下,可以丟棄待傳輸報文。

優(yōu)選地,在判斷到快速通道緩沖區(qū)已滿的情況下,也可以將待傳輸報文發(fā)送到網(wǎng)絡(luò)協(xié)議棧,由網(wǎng)絡(luò)協(xié)議棧對報文進行處理。

優(yōu)選地,在判斷到待傳輸報文不屬于預(yù)設(shè)報文類型的情況下,則可以通過網(wǎng)絡(luò)協(xié)議棧在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸待傳輸報文,例如,通過網(wǎng)絡(luò)協(xié)議棧在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸待傳輸報文的情況下:可以將由網(wǎng)絡(luò)設(shè)備驅(qū)動發(fā)送至用戶態(tài)應(yīng)用程序的待傳輸報文存儲到網(wǎng)絡(luò)協(xié)議棧,用戶態(tài)應(yīng)用程序再通過網(wǎng)絡(luò)設(shè)備驅(qū)動綁定的套接字接口從網(wǎng)絡(luò)協(xié)議棧讀取待傳輸報文;相應(yīng)的,由用戶態(tài)應(yīng)用程序發(fā)送至網(wǎng)絡(luò)設(shè)備驅(qū)動的待傳輸報文也經(jīng)過套接字接口和網(wǎng)絡(luò)協(xié)議棧傳輸。

通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機,計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。

在本實施例中還提供了一種報文處理裝置,該裝置用于實現(xiàn)上述實施例及優(yōu)選實施方式,已經(jīng)進行過說明的不再贅述。如以下所使用的,術(shù)語“模塊”可以實現(xiàn)預(yù)定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現(xiàn),但是硬件,或者軟件和硬件的組合的實現(xiàn)也是可能并被構(gòu)想的。

圖2是根據(jù)本發(fā)明實施例的報文處理裝置的結(jié)構(gòu)框圖,如圖2所示,該裝置包括;創(chuàng)建模塊22、第一判斷模塊24、第一傳輸模塊26,其中,創(chuàng)建模塊22,用于在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間創(chuàng)建快速通道緩沖區(qū);第一判斷模塊24,耦合至創(chuàng)建模塊22,用于判斷待傳輸報文是否屬于預(yù)設(shè)報文類型;第一傳輸模塊26,耦合至第一判斷模塊24,用于在判斷到待傳輸報文屬于預(yù)設(shè)報文類型的情況下,通過快速通道緩沖區(qū),在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸待傳輸報文。

優(yōu)選地,上述創(chuàng)建模塊22用于創(chuàng)建并注冊快速通道字符節(jié)點;通過快速通道字符節(jié)點,用戶態(tài)應(yīng)用程序通過系統(tǒng)調(diào)用創(chuàng)建共享隊列,得到快速通道緩沖區(qū);通過快速通道字符節(jié)點,用戶態(tài)應(yīng)用程序設(shè)置預(yù)設(shè)報文類型。

圖3是根據(jù)本發(fā)明實施例的報文處理裝置的優(yōu)選結(jié)構(gòu)框圖一,如圖3所示,該裝置還包括:第二判斷模塊32,耦合至第一判斷模塊24和第一傳輸模塊26之間,用于判斷快速通道緩沖區(qū)是否已滿;其中,在判斷到快速通道緩沖區(qū)未滿的情況下,通過快速通道緩沖區(qū),在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸待傳輸報文。

圖4是根據(jù)本發(fā)明實施例的報文處理裝置的優(yōu)選結(jié)構(gòu)框圖二,如圖4所示,該裝置還包括:丟棄模塊42,耦合至第二判斷模塊32,用于丟棄待傳輸報文。

圖5是根據(jù)本發(fā)明實施例的報文處理裝置的優(yōu)選結(jié)構(gòu)框圖三,如圖5所示,該裝置還包括:第二傳輸模塊52,耦合至第一判斷模塊24,用于通過網(wǎng)絡(luò)協(xié)議棧在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸待傳輸報文。

優(yōu)選地,第二傳輸模塊52可以用于將待傳輸報文存儲到網(wǎng)絡(luò)協(xié)議棧;通過套接字接口從網(wǎng)絡(luò)協(xié)議棧讀取待傳輸報文。

需要說明的是,上述各個模塊是可以通過軟件或硬件來實現(xiàn)的,對于后者,可以通過以下方式實現(xiàn),但不限于此:上述模塊均位于同一處理器中;或者,上述模塊分別位于多個處理器中。

本發(fā)明的實施例還提供了一種軟件,該軟件用于執(zhí)行上述實施例及優(yōu)選實施方式中描述的技術(shù)方案。

本發(fā)明的實施例還提供了一種存儲介質(zhì)。在本實施例中,上述存儲介質(zhì)可以被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:

S20,在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間創(chuàng)建快速通道緩沖區(qū);

S40,判斷待傳輸報文是否屬于預(yù)設(shè)報文類型;

S60,在判斷到待傳輸報文屬于預(yù)設(shè)報文類型的情況下,通過快速通道緩沖區(qū),在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸待傳輸報文。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:

S22,創(chuàng)建并注冊快速通道字符節(jié)點;

S24,通過快速通道字符節(jié)點,用戶態(tài)應(yīng)用程序通過系統(tǒng)調(diào)用創(chuàng)建共享隊列,得到快速通道緩沖區(qū);

S26,通過快速通道字符節(jié)點,用戶態(tài)應(yīng)用程序設(shè)置預(yù)設(shè)報文類型。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:

S62,判斷快速通道緩沖區(qū)是否已滿。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:

S622,在判斷到快速通道緩沖區(qū)未滿的情況下,丟棄待傳輸報文。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:

S50,在判斷到待傳輸報文不屬于預(yù)設(shè)報文類型的情況下,通過網(wǎng)絡(luò)協(xié)議棧在用戶態(tài)應(yīng)用程序與網(wǎng)絡(luò)設(shè)備驅(qū)動之間傳輸待傳輸報文。

可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:

S52,將待傳輸報文存儲到網(wǎng)絡(luò)協(xié)議棧;

S54,通過套接字接口從網(wǎng)絡(luò)協(xié)議棧讀取待傳輸報文。

可選地,在本實施例中,上述存儲介質(zhì)可以包括但不限于:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

為了使本發(fā)明實施例的描述更加清楚,下面結(jié)合優(yōu)選實施例進行描述和說明。

本發(fā)明優(yōu)選實施例提供了一種基于Linux操作系統(tǒng)的快速報文處理方法,以解決Linux內(nèi)核協(xié)議棧無法高效處理網(wǎng)卡性能要求高的報文的問題,同時充分發(fā)揮Linux協(xié)議棧的功能。

本發(fā)明優(yōu)選實施例提供的一種基于Linux操作系統(tǒng)的快速報文處理方案,包括如下模塊:

網(wǎng)絡(luò)設(shè)備驅(qū)動模塊,用于網(wǎng)絡(luò)設(shè)備的探測,數(shù)據(jù)包的接收和發(fā)送。

Linux網(wǎng)絡(luò)協(xié)議棧,Linux提供的標(biāo)準(zhǔn)模塊,用于網(wǎng)絡(luò)報文處理。

快速通道模塊,用于共享隊列(相當(dāng)于上述快速通道緩沖區(qū))的創(chuàng)建,快速通道注冊,報文的接收處理。

用戶態(tài)接收模塊,用于打開共享隊列,將共享隊列映射到用戶態(tài)空間,以及報文的接收處理。

本發(fā)明優(yōu)選實施例提供的一種基于Linux的快速報文處理方法,包括如下步驟:

步驟一,網(wǎng)絡(luò)設(shè)備驅(qū)動在探測時注冊快速報文處理模塊;

步驟二,網(wǎng)絡(luò)設(shè)備驅(qū)動,數(shù)據(jù)報文接收函數(shù)掛接快速通道報文處理的回調(diào)函數(shù);

步驟三,用戶態(tài)應(yīng)用程序,打開快速通道設(shè)備節(jié)點,創(chuàng)建共享隊列,設(shè)置待處理的快速報文類型(相當(dāng)于上述預(yù)設(shè)報文類型),通過系統(tǒng)調(diào)用獲取隊列的物理地址,映射到用戶態(tài)地址空間;

步驟四,按照上述步驟初始化以后,網(wǎng)絡(luò)設(shè)備驅(qū)動模塊接收的數(shù)據(jù)報文,可以進行正常處理,根據(jù)設(shè)置的報文類型,確定后續(xù)處理方式;

步驟五,對于快速報文,直接存儲到快速通道模塊的共享隊列,應(yīng)用程序通過映射共享內(nèi)存的方式,獲取數(shù)據(jù)報文;對于沒有匹配的報文,全部上送到Linux網(wǎng)絡(luò)協(xié)議棧,應(yīng)用程序需要通過套接字接口讀取報文。

下面結(jié)合附圖對本發(fā)明優(yōu)選實施例進行說明。

為了解決Linux網(wǎng)絡(luò)協(xié)議棧處理高速報文性能低的問題,本發(fā)明優(yōu)選實施例提供了一種快速處理報文的方法,同時對于普通報文可以使用Linux網(wǎng)絡(luò)協(xié)議棧。

圖6是根據(jù)本發(fā)明優(yōu)選實施例的快速報文處理裝置的結(jié)構(gòu)框圖,如圖6所示,該裝置包括:在Linux內(nèi)核態(tài)創(chuàng)建的快速通道模塊,耦合至應(yīng)用程序和網(wǎng)絡(luò)設(shè)備驅(qū)動模塊之間,用于高速報文的處理,應(yīng)用程序快速報文通過映射共享內(nèi)存的方式,訪問快速通道模塊的報文;套接字接口,耦合至應(yīng)用程序和Linux網(wǎng)絡(luò)協(xié)議棧,用于普通報文通過網(wǎng)絡(luò)套接字的方式訪問Linux網(wǎng)絡(luò)協(xié)議棧;Linux網(wǎng)絡(luò)協(xié)議棧,耦合至套接字接口和網(wǎng)絡(luò)設(shè)備驅(qū)動模塊之間,用于存儲與處理普通報文。

本發(fā)明優(yōu)選實施例中,需要處理的快速報文可以為分片重組報文,普通報文可以為除了分片重組報文以外的其他報文,例如地址解析協(xié)議(ARP)請求報文,因特網(wǎng)協(xié)議版本4(IPv4)報文。

本發(fā)明優(yōu)選實施例中,快速通道模塊用于提供創(chuàng)建共享隊列接口,獲取共享內(nèi)存地址,報文接收處理,共享隊列的管理。

圖7是根據(jù)本發(fā)明優(yōu)選實施例的快速通道初始化流程圖,如圖7所示,該流程包括 以下步驟:

步驟S702,網(wǎng)絡(luò)設(shè)備驅(qū)動探測,驅(qū)動加載;

步驟S704,創(chuàng)建快速通道字符設(shè)備,注冊設(shè)備節(jié)點,提供系統(tǒng)調(diào)用接口,包括創(chuàng)建共享隊列,獲取映射關(guān)系,設(shè)置快速報文類型;

步驟S706,網(wǎng)絡(luò)設(shè)備驅(qū)動的報文接收處理函數(shù),掛接快速通道報文的接收函數(shù);

步驟S708,Linux內(nèi)核啟動,加載快速通道模塊;

步驟S710,用戶程序通過系統(tǒng)調(diào)用,創(chuàng)建快速通道緩沖區(qū),設(shè)置快速通道的報文類型(相當(dāng)于上述預(yù)設(shè)報文類型)。

優(yōu)選地,上述共享隊列是一個先進先出的環(huán)形隊列,圖8是根據(jù)本發(fā)明優(yōu)選實施例的內(nèi)核和用戶態(tài)共享隊列數(shù)據(jù)交互結(jié)構(gòu)框圖,如圖8所示,環(huán)形隊列不需要進行動態(tài)的內(nèi)存釋放和分配,可以反復(fù)使用固定大小的內(nèi)存空間;快速通道模塊作為寫入模塊將報文插入隊列;用戶程序作為讀出模塊將報文彈出隊列;寫入模塊和讀出模塊需要進行信息的協(xié)調(diào)和同步;對于多線程和多進程的寫入或讀出模塊,寫入模塊間以及讀出模塊間需要進行臨界區(qū)處理。

在實際的隊列插入和彈出操作中,是不斷交叉進行的,當(dāng)插入(push)操作時,隊列頭(head)會增加;而彈出(pop)操作時,隊列尾(tail)會增加。push的速度快的時候,會追上tail,這個時候說明隊列已滿,不能再進行push的操作了,需要等待pop操作騰出隊列的空間。當(dāng)pop的操作快,使得tail追上head,這個時候說明隊列已空,不能再進行pop操作,需要等待push進來數(shù)據(jù)。

圖9是根據(jù)本發(fā)明優(yōu)選實施例的快速報文處理方法流程圖,如圖9所示,該流程包括以下步驟:

步驟S902,網(wǎng)卡設(shè)備驅(qū)動從硬件設(shè)備獲取數(shù)據(jù)報文;

步驟S904,對數(shù)據(jù)報文的二層頭進行分析,如果匹配快速通道的關(guān)鍵字(即判斷是否屬于預(yù)設(shè)報文類型),則執(zhí)行步驟S906,進入快速通道處理流程,否則,轉(zhuǎn)到步驟S914,報文進入Linux網(wǎng)絡(luò)協(xié)議棧處理;

步驟S906,判斷隊列的管理節(jié)點的讀寫指針。若環(huán)形隊列首尾相接,隊列已滿,則執(zhí)行步驟S908,否則執(zhí)行步驟S910;

步驟S908,處理隊列滿的報文,直接丟掉報文;

步驟S910,將報文存儲到環(huán)形隊列;

步驟S912,調(diào)整環(huán)形隊列的寫指針,執(zhí)行下一空閑的緩沖區(qū);

步驟S914,處理普通報文,對于高性能沒有要求,數(shù)據(jù)報文被送到Linux網(wǎng)絡(luò)協(xié)議棧處理。

綜上所述,通過本發(fā)明的上述實施例和優(yōu)選實施例,新增了一種報文處理模式,利用快速通道緩沖區(qū),可以有選擇的繞過Linux網(wǎng)絡(luò)協(xié)議棧,簡化報文的接收流程,減少中央處理器(Central Processing Unit,簡稱為CPU)資源的損耗,使接收性能大幅提升,可以滿足萬兆以太網(wǎng)對性能的要求,同時兼顧了網(wǎng)絡(luò)協(xié)議棧的強大功能,使普通報文可以直接通過Linux網(wǎng)絡(luò)協(xié)議棧處理。

顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。

以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1