[發(fā)明專利]一種網(wǎng)卡發(fā)包功能的實(shí)現(xiàn)裝置和方法無效
| 申請?zhí)枺?/td> | 201110383377.6 | 申請日: | 2011-11-28 |
| 公開(公告)號: | CN102420749A | 公開(公告)日: | 2012-04-18 |
| 發(fā)明(設(shè)計(jì))人: | 竇曉光;姬乃軍;李旭;李鋒偉;劉朝輝 | 申請(專利權(quán))人: | 曙光信息產(chǎn)業(yè)(北京)有限公司 |
| 主分類號: | H04L12/56 | 分類號: | H04L12/56 |
| 代理公司: | 北京安博達(dá)知識產(chǎn)權(quán)代理有限公司 11271 | 代理人: | 徐國文 |
| 地址: | 100084 *** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 網(wǎng)卡 發(fā)包 功能 實(shí)現(xiàn) 裝置 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明屬于計(jì)算機(jī)網(wǎng)絡(luò)通信領(lǐng)域,具體講涉及一種網(wǎng)卡發(fā)包功能的實(shí)現(xiàn)裝置和方法。
背景技術(shù)
現(xiàn)有技術(shù)中實(shí)現(xiàn)網(wǎng)卡發(fā)包功能時一般都是CPU將待發(fā)送報(bào)文內(nèi)容拷貝到一塊內(nèi)存區(qū)域,然后CPU通知網(wǎng)卡報(bào)文已經(jīng)準(zhǔn)備好,并將待發(fā)送報(bào)文的描述符信息(報(bào)文在主機(jī)內(nèi)存中的地址和長度)通知網(wǎng)卡。網(wǎng)卡收到發(fā)包描述符信息后啟動DMA讀操作從主存讀取報(bào)文內(nèi)容發(fā)送,并在發(fā)送完成之后通過中斷通知CPU。
在上述發(fā)包過程中,存在幾個影響發(fā)包性能的問題:
每個發(fā)送報(bào)文都需要CPU將描述符告知外設(shè),每次發(fā)包完成之后網(wǎng)卡都需要通知CPU,這增加了CPU的負(fù)擔(dān);而且由于IO總線的特性,DMA操作在數(shù)據(jù)包長度較大時效率較高,如果發(fā)送大量長度較小的數(shù)據(jù)包,將嚴(yán)重影響帶寬利用率;還有當(dāng)發(fā)包應(yīng)用程序存在多個線程(進(jìn)程)同時發(fā)包時,各個線程之間對內(nèi)存的訪問會存在競爭,這將導(dǎo)致系統(tǒng)性能下降。
專利號為ZL200710120039.7的、名稱為“一種產(chǎn)生網(wǎng)絡(luò)流量的方法及其裝置”的發(fā)明披露了一種網(wǎng)卡發(fā)包方法,該方法的主要步驟有:主控單元將需要發(fā)送的每個數(shù)據(jù)流的發(fā)包控制參數(shù)和數(shù)據(jù)包模板寫入緩沖區(qū)中;發(fā)送單元讀取所述緩沖區(qū)中的發(fā)包控制參數(shù)和數(shù)據(jù)包模板,并分別根據(jù)每個發(fā)包控制參數(shù)和數(shù)據(jù)包模板生成對應(yīng)的數(shù)據(jù)流發(fā)送出去。但是該方法主要用于構(gòu)造發(fā)送報(bào)文,并不涉及報(bào)文的具體發(fā)送。
發(fā)明內(nèi)容
為克服上述缺陷,本發(fā)明提供了一種網(wǎng)卡發(fā)包功能的實(shí)現(xiàn)裝置和方法,解決了現(xiàn)有的網(wǎng)卡發(fā)送長度小的數(shù)據(jù)包導(dǎo)致發(fā)包性能不高以及多發(fā)包線程(進(jìn)程)之間資源競爭導(dǎo)致性能下降的問題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供一種網(wǎng)卡發(fā)包功能的實(shí)現(xiàn)裝置,其包括主機(jī)單元和網(wǎng)卡單元;所述主機(jī)單元包括內(nèi)存區(qū)域BUF和控制所述內(nèi)存區(qū)域BUF的CPU;其改進(jìn)之處在于,所述網(wǎng)卡單元包括依次連接的寄存器組、DMA讀引擎模塊和發(fā)送引擎模塊。
本發(fā)明提供的優(yōu)選技術(shù)方案中,所述寄存器組包括:基地址寄存器、長度寄存器、寫指針寄存器和讀指針寄存器;所述基地址寄存器、所述長度寄存器、所述寫指針寄存器和所述讀指針寄存器并列設(shè)置。
本發(fā)明提供的第二優(yōu)選技術(shù)方案中,所述基地址寄存器、所述長度寄存器、所述寫指針寄存器和所述讀指針寄存器分別存儲緩沖區(qū)基地址base_addr、緩沖區(qū)長度len、緩沖區(qū)寫指針wr_ptr和緩沖區(qū)讀指針rd_ptr;所有寄存器初始化為0。
本發(fā)明提供的第三優(yōu)選技術(shù)方案中,所述CPU包括讀指針變量rd_ptr_cpu和寫指針變量wr_ptr_cpu。
本發(fā)明提供的第四優(yōu)選技術(shù)方案中,所述讀指針變量rd_ptr_cpu用于存儲CPU定時讀取的所述讀指針寄存器的值;所述寫指針變量wr_ptr_cpu用于將wr_ptr_cpu的數(shù)值寫入所述寫指針寄存器。
本發(fā)明提供的第五優(yōu)選技術(shù)方案中,所述DMA讀引擎模塊,比較讀、寫指針wr_ptr和rd_ptr,計(jì)算出當(dāng)前待讀取數(shù)據(jù)長度cur_rd_len;并向主機(jī)單元發(fā)送DMA讀請求,請求地址為base_addr+rd_ptr,長度為cur_rd_len;之后等待DMA讀請求返回,更新讀指針rd_ptr到rd_ptr+cur_rd_len。
本發(fā)明提供的第六優(yōu)選技術(shù)方案中,所述發(fā)送引擎模塊將從所述內(nèi)存區(qū)域BUF讀回來的數(shù)據(jù)包解析成單個報(bào)文,并向外發(fā)送。
本發(fā)明提供的第其優(yōu)選技術(shù)方案中,提供一種網(wǎng)卡發(fā)包功能的實(shí)現(xiàn)方法,其改進(jìn)之處在于,所述方法包括如下步驟:
(1).對所有寄存器進(jìn)行初始化;(2).從內(nèi)存區(qū)域中申請發(fā)包緩沖區(qū);(3).得到緩沖區(qū)空閑區(qū)域大小free_buf_len;(4).若free_buf_len的長度大于待發(fā)送報(bào)文pkt_len的大小,則分別讀取wr_ptr?reg和rd_ptr?reg的值,并再次得到緩沖區(qū)空閑區(qū)域大小free_buf_len,其中,free_buf_len=(wr_ptr+len-rd_ptr)%len;(5).將待發(fā)送報(bào)文拷貝到緩沖區(qū)的寫指針,并將寫指針寄存器更新為wr_ptr_pkt_len;(6).計(jì)算cur_rd_len,如果cur_rd_len的值為0,則進(jìn)行DMA讀操作;(7).將返回的數(shù)據(jù)解析成單個報(bào)文格式,并從指定網(wǎng)口發(fā)送出去。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于曙光信息產(chǎn)業(yè)(北京)有限公司,未經(jīng)曙光信息產(chǎn)業(yè)(北京)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110383377.6/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 可選擇多網(wǎng)絡(luò)手機(jī)
- 多操作系統(tǒng)中網(wǎng)卡之間的切換方法和系統(tǒng)
- 一種網(wǎng)卡配置的方法及裝置
- 一種多網(wǎng)卡自動聚合并監(jiān)控報(bào)警方法及系統(tǒng)
- 一種報(bào)文轉(zhuǎn)發(fā)方法、系統(tǒng)及網(wǎng)卡和存儲介質(zhì)
- 網(wǎng)卡性能統(tǒng)計(jì)方法以及裝置
- 網(wǎng)卡處理方法、裝置、電子設(shè)備及存儲介質(zhì)
- 一種網(wǎng)絡(luò)配置方法、裝置、設(shè)備及可讀存儲介質(zhì)
- 基于Kylin系統(tǒng)的網(wǎng)卡識別處理方法、系統(tǒng)、終端及存儲介質(zhì)
- 一種網(wǎng)卡冗余系統(tǒng)及服務(wù)器
- 互動業(yè)務(wù)終端、實(shí)現(xiàn)系統(tǒng)及實(shí)現(xiàn)方法
- 街景地圖的實(shí)現(xiàn)方法和實(shí)現(xiàn)系統(tǒng)
- 游戲?qū)崿F(xiàn)系統(tǒng)和游戲?qū)崿F(xiàn)方法
- 圖像實(shí)現(xiàn)裝置及其圖像實(shí)現(xiàn)方法
- 增強(qiáng)現(xiàn)實(shí)的實(shí)現(xiàn)方法以及實(shí)現(xiàn)裝置
- 軟件架構(gòu)的實(shí)現(xiàn)方法和實(shí)現(xiàn)平臺
- 數(shù)值預(yù)報(bào)的實(shí)現(xiàn)方法及實(shí)現(xiàn)系統(tǒng)
- 空調(diào)及其冬眠控制模式實(shí)現(xiàn)方法和實(shí)現(xiàn)裝置以及實(shí)現(xiàn)系統(tǒng)
- 空調(diào)及其睡眠控制模式實(shí)現(xiàn)方法和實(shí)現(xiàn)裝置以及實(shí)現(xiàn)系統(tǒng)
- 輸入設(shè)備實(shí)現(xiàn)方法及其實(shí)現(xiàn)裝置





