[發(fā)明專利]用戶態(tài)到內(nèi)核態(tài)的數(shù)據(jù)報文處理方法有效
| 申請?zhí)枺?/td> | 201310213794.5 | 申請日: | 2013-05-31 |
| 公開(公告)號: | CN103312601B | 公開(公告)日: | 2017-04-19 |
| 發(fā)明(設(shè)計)人: | 高福亮 | 申請(專利權(quán))人: | 漢柏科技有限公司 |
| 主分類號: | H04L12/70 | 分類號: | H04L12/70 |
| 代理公司: | 北京路浩知識產(chǎn)權(quán)代理有限公司11002 | 代理人: | 王瑩 |
| 地址: | 300384 天津市華*** | 國省代碼: | 天津;12 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 用戶 內(nèi)核 數(shù)據(jù) 報文 處理 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及報文處理技術(shù)領(lǐng)域,特別涉及一種用戶態(tài)到內(nèi)核態(tài)的數(shù)據(jù)報文處理方法。
背景技術(shù)
主機在收發(fā)和處理網(wǎng)絡(luò)報文時,通常采用兩種方式:
一種是由內(nèi)核加載網(wǎng)卡驅(qū)動,進行報文收發(fā),通過數(shù)據(jù)拷貝送到用戶態(tài)進程進行業(yè)務(wù)處理;
另一種是由用戶態(tài)加載網(wǎng)卡驅(qū)動,進行報文收發(fā),對于需要轉(zhuǎn)發(fā)到內(nèi)核處理的主機報文,通過socket創(chuàng)建特殊套接字或通過proc文件系統(tǒng)創(chuàng)建文件實現(xiàn)與內(nèi)核的數(shù)據(jù)交互。
第一種方式的缺點在于:內(nèi)核加載網(wǎng)卡驅(qū)動進行報文收發(fā),在萬兆網(wǎng)卡大流量的沖擊下會引發(fā)大量中斷,消耗一定的CPU性能(特別是X86體系架構(gòu)),同時Linux操作系統(tǒng)的內(nèi)核態(tài)到用戶態(tài)的數(shù)據(jù)拷貝也會造成系統(tǒng)性能的損耗;
第二種方式的缺點在于:用戶態(tài)加載網(wǎng)卡驅(qū)動進行報文收發(fā),雖然降低了性能損耗,但是針對一些主機報文業(yè)務(wù)處理(例如Linux內(nèi)核的PPPoE、DHCP等)需要感知實際物理網(wǎng)絡(luò)及網(wǎng)絡(luò)接口狀態(tài),而內(nèi)核沒有網(wǎng)絡(luò)接口可感知操作,此時就會出現(xiàn)問題,同時還涉及用戶態(tài)報文PKB與內(nèi)核SKB格式轉(zhuǎn)換問題。
發(fā)明內(nèi)容
(一)所要解決的技術(shù)問題
本發(fā)明的目的在于提供一種用戶態(tài)到內(nèi)核態(tài)的數(shù)據(jù)報文處理方法,以降低網(wǎng)卡驅(qū)動加載造成的性能損耗,同時使內(nèi)核態(tài)能夠感知實際物理網(wǎng)絡(luò)及網(wǎng)絡(luò)接口狀態(tài)。
(二)技術(shù)方案
為了解決上述技術(shù)問題,本發(fā)明提出了一種用戶態(tài)到內(nèi)核態(tài)的數(shù)據(jù)報文處理方法,所述方法包括以下步驟:
S1、通過TUN/TAP驅(qū)動的方式在內(nèi)核態(tài)創(chuàng)建虛擬網(wǎng)卡;
S2、在用戶態(tài)進行網(wǎng)卡驅(qū)動加載,并將用戶態(tài)的網(wǎng)絡(luò)接口信息發(fā)送給所述虛擬網(wǎng)卡;
S3、所述虛擬網(wǎng)卡根據(jù)用戶態(tài)的網(wǎng)絡(luò)接口信息創(chuàng)建虛擬接口,所述虛擬接口的數(shù)量及狀態(tài)與用戶態(tài)的網(wǎng)絡(luò)接口保持一致;
S4、當(dāng)接收到需要內(nèi)核態(tài)處理的報文時,用戶態(tài)的網(wǎng)絡(luò)接口將所述需要內(nèi)核態(tài)處理的報文發(fā)送給所述虛擬網(wǎng)卡,所述虛擬網(wǎng)卡將所述需要內(nèi)核態(tài)處理的報文發(fā)送給內(nèi)核態(tài)進行處理。
可選的,步驟S4之后還包括步驟:
S5、內(nèi)核態(tài)將處理后得到的待發(fā)送報文發(fā)送給所述虛擬網(wǎng)卡,所述虛擬網(wǎng)卡將所述待發(fā)送報文發(fā)送給用戶態(tài)的網(wǎng)絡(luò)接口進行發(fā)送。
可選的,步驟S3進一步包括:在所述虛擬接口中掛載所述虛擬網(wǎng)卡的報文處理函數(shù)。
可選的,步驟S4具體包括:
當(dāng)接收到需要內(nèi)核態(tài)處理的報文時,用戶態(tài)的網(wǎng)絡(luò)接口將所述需要內(nèi)核態(tài)處理的報文發(fā)送給所述虛擬網(wǎng)卡,所述虛擬網(wǎng)卡查找出所述需要內(nèi)核態(tài)處理的報文對應(yīng)的虛擬接口,并調(diào)用該虛擬接口中掛載的所述虛擬網(wǎng)卡的報文處理函數(shù),所述虛擬網(wǎng)卡的報文處理函數(shù)將所述需要內(nèi)核態(tài)處理的報文發(fā)送給內(nèi)核態(tài)進行處理。
可選的,步驟S4之前還包括步驟:
S0、在用戶態(tài)創(chuàng)建報文鏈表A和報文鏈表B,其中,報文鏈表A用于對所述需要內(nèi)核態(tài)處理的報文進行緩存,報文鏈表B用于對所述待發(fā)送報文進行緩存。
可選的,步驟S4具體包括:
S401、當(dāng)接收到需要內(nèi)核態(tài)處理的報文時,用戶態(tài)的網(wǎng)絡(luò)接口將所述需要內(nèi)核態(tài)處理的報文放入報文鏈表A;
S402、所述虛擬網(wǎng)卡從報文鏈表A中提取所述需要內(nèi)核態(tài)處理的報文并將其發(fā)送給內(nèi)核態(tài)進行處理。
可選的,步驟S5具體包括:
S501、內(nèi)核態(tài)將處理后得到的待發(fā)送報文發(fā)送給所述虛擬網(wǎng)卡,所述虛擬網(wǎng)卡將所述待發(fā)送報文放入報文鏈表B;
S502、用戶態(tài)的網(wǎng)絡(luò)接口從報文鏈表B中提取所述待發(fā)送報文并將其進行發(fā)送。
可選的,步驟S402中,所述虛擬網(wǎng)卡通過write函數(shù)從報文鏈表A中提取所述需要內(nèi)核態(tài)處理的報文。
可選的,步驟S501中,所述虛擬網(wǎng)卡通過read函數(shù)將所述待發(fā)送報文放入報文鏈表B。
可選的,步驟S1具體包括:
調(diào)用open函數(shù)以設(shè)備文件的形式在內(nèi)核態(tài)創(chuàng)建虛擬網(wǎng)卡,并為所述虛擬網(wǎng)卡配置默認IP和路由。
(三)有益效果
與現(xiàn)有技術(shù)相比,本發(fā)明的技術(shù)方案具有如下優(yōu)點:
本發(fā)明的技術(shù)方案實現(xiàn)了網(wǎng)卡驅(qū)動加載及收發(fā)報文在用戶態(tài)進行,消除了內(nèi)核態(tài)網(wǎng)卡驅(qū)動中斷及數(shù)據(jù)拷貝造成的性能損耗;同時,注冊維護的一套網(wǎng)絡(luò)接口和一套虛擬接口,可分別滿足用戶態(tài)、內(nèi)核態(tài)對物理網(wǎng)絡(luò)及網(wǎng)絡(luò)接口狀態(tài)的感知需求,且無需考慮用戶態(tài)報文PKB與內(nèi)核態(tài)SKB格式轉(zhuǎn)換的問題。
附圖說明
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于漢柏科技有限公司,未經(jīng)漢柏科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310213794.5/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設(shè)備、數(shù)據(jù)中繼方法、數(shù)據(jù)系統(tǒng)、接收設(shè)備和數(shù)據(jù)讀取方法
- 數(shù)據(jù)記錄方法、數(shù)據(jù)記錄裝置、數(shù)據(jù)記錄媒體、數(shù)據(jù)重播方法和數(shù)據(jù)重播裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)發(fā)送系統(tǒng)、數(shù)據(jù)發(fā)送裝置以及數(shù)據(jù)結(jié)構(gòu)
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設(shè)備、數(shù)據(jù)中繼方法及數(shù)據(jù)系統(tǒng)
- 數(shù)據(jù)嵌入裝置、數(shù)據(jù)嵌入方法、數(shù)據(jù)提取裝置及數(shù)據(jù)提取方法
- 數(shù)據(jù)管理裝置、數(shù)據(jù)編輯裝置、數(shù)據(jù)閱覽裝置、數(shù)據(jù)管理方法、數(shù)據(jù)編輯方法以及數(shù)據(jù)閱覽方法
- 數(shù)據(jù)發(fā)送和數(shù)據(jù)接收設(shè)備、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收方法
- 數(shù)據(jù)發(fā)送裝置、數(shù)據(jù)接收裝置、數(shù)據(jù)收發(fā)系統(tǒng)、數(shù)據(jù)發(fā)送方法、數(shù)據(jù)接收方法和數(shù)據(jù)收發(fā)方法
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置





