[發明專利]零拷貝網絡報文發送、接收方法和裝置有效
| 申請號: | 200910242100.4 | 申請日: | 2009-12-04 |
| 公開(公告)號: | CN101707565A | 公開(公告)日: | 2010-05-12 |
| 發明(設計)人: | 邵宗有;聶華;歷軍;李永成 | 申請(專利權)人: | 曙光信息產業(北京)有限公司 |
| 主分類號: | H04L12/56 | 分類號: | H04L12/56;G06F13/28 |
| 代理公司: | 北京市德恒律師事務所 11306 | 代理人: | 梁永 |
| 地址: | 100084 北*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 拷貝 網絡 報文 發送 接收 方法 裝置 | ||
技術領域
本發明涉及零拷貝網絡報文發送、接收領域,尤其涉及一種在內核 空間申請可映射到用戶空間的連續內存空間作為發送、接收報文DMA 緩沖區的零拷貝網絡報文發送、接收方法和裝置。
背景技術
零拷貝(zero-copy)是指在某節點的網絡報文收發過程中不會出現任 何內存間的拷貝,發送時數據包由應用程序的用戶緩沖區直接經過網絡接口 到達外部網絡。中國專利文獻CN101150487A公開了一種零拷貝網絡報文 發送方法,包括如下操作步驟:A.應用程序調用接口庫提供的函數打開設 備接口;B.打開設備接口函數在用戶空間內存中申請一片連續的內存作為 報文緩沖區,并把報文緩沖區首地址傳送給內核驅動;C.內核驅動根據緩 沖區首地址及緩沖區大小,構造緩沖區控制結構,并把控制結構的物理地址 傳送給接口函數,結構包括報文緩沖區隊列的信息及隊列中每個緩沖區的物 理地址;D.接口函數根據緩沖區控制結構的地址,通過內存映射得到緩沖 區控制結構中的信息;E.網卡驅動程序從緩沖區隊列中取空閑緩沖區作為 發送報文的DMA緩沖區,并把發送的報文數據不經內核空間直接DMA傳 送到報文緩沖區中;F.應用程序處理用戶內存中報文發送緩沖區的報文數 據。
中國專利文獻CN101150488A公開了一種零拷貝網絡報文接收方法, 包括如下操作步驟:A.應用程序調用接口庫提供的函數打開設備接口;B.打 開設備接口函數在用戶空間內存中申請一片連續的內存作為報文緩沖區,并 把報文緩沖區首地址傳送給內核驅動;C.內核驅動根據緩沖區首地址及緩 沖區大小,構造緩沖區控制結構,并把控制結構的物理地址傳送給接口函數, 所述結構包括報文緩沖區隊列的信息及隊列中每個緩沖區的物理地址;D.接 口函數根據緩沖區控制結構的地址,通過內存映射得到緩沖區控制結構中的 信息;E.網卡驅動程序從緩沖區隊列中取空閑緩沖區作為接收報文的DMA 緩沖區,并把接收到的報文數據不經內核空間直接DMA傳送到報文緩沖區 中;F.應用程序處理用戶內存中報文接收緩沖區的報文數據。
上述現有技術存在的共同問題是:在步驟B中,打開設備接口函數在 用戶空間內存申請的連續的內存可能在內核空間中并不是連續的內存地 址,這樣就需要將內存地址按頁面(內存空間被分為若干個長度相等的區 域,每個區域即本申請文件中所說的頁面)大小轉換成DMA(直接存儲器 訪問)操作所需的物理地址;而且網卡硬件在進行DMA操作時,數據報 文長度受頁面大小限制,比如頁面大小為4K字節,那么數據報文長度將 被限制在4K字節內。此外,中國專利文獻CN101150487A公開的一種零 拷貝網絡報文發送方法還存在的問題是,驅動程序需要使用中斷方式與網 卡硬件通訊以獲得網卡進行報文傳輸后的硬件狀態,為后續的報文接收 準備報文DMA緩沖區,占用CPU資源。中國專利文獻CN101150488A 公開的一種零拷貝網絡報文接收方法還存在的問題是,在網卡驅動程序中, 需要使用中斷或輪詢方式進行數據報文接收,造成CPU資源使用率過高; 特別是在接收大流量64字節短數據報文情況下,應用程序無法快速處理 這些報文;這樣網卡無法接收后續的數據報文,就出現了報文丟棄的現 象。
發明內容
針對現有技術在零拷貝網絡報文發送、接收過程中需要將內存地址 進行轉換、網卡硬件在進行DMA操作時數據報文長度受頁面大小限制、 占用CPU資源的問題,本發明的目的是提供一種零拷貝網絡報文發送、 接收方法和裝置,以解決上述問題中的至少之一。
為實現上述目的,根據本發明的一個方面,提供了一種零拷貝網絡 報文發送方法,包括下列步驟:使用內存分配函數在網卡驅動程序中不 斷地申請特定大小的連續內存直至網卡驅動程序中空閑的內存空間不足 夠申請;從申請到的連續內存中確定一塊連續內存地址空間;以及使用 連續內存地址空間進行網絡報文發送。其中,從申請到的連續內存中確 定一塊連續內存地址空間的具體步驟包括:將申請到的每片連續內存的 首地址存儲到地址數組;將地址數組中的連續內存的首地址根據大小進 行排序;在地址數組中根據排序后的首地址確定一塊連續內存地址空間。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于曙光信息產業(北京)有限公司,未經曙光信息產業(北京)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200910242100.4/2.html,轉載請聲明來源鉆瓜專利網。





