新四季網

傳輸控制協議/網間協議的協議棧讀取數據的方法和裝置的製作方法

2023-07-23 09:53:01 2

專利名稱:傳輸控制協議/網間協議的協議棧讀取數據的方法和裝置的製作方法
技術領域:
本發明涉及通信技術領域,特別涉及一種傳輸控制協議/網間協議的協議 棧讀取數據的方法和裝置。
背景技術:
在網絡編程中有時候需要從傳輸控制協議/網間協議(Transmission Control Protocol/Internet Protocol, TCP/IP)的協議棧中讀取用戶數據報協議
(User Datagram Protocol, UDP)悽U居包。
現有技術中提取UDP.教據包的技術方案可以為首先,數據的接收方和 發送方協商UDP數據包負載的格式,以及接收UDP數據包的埠 ;接收方 使用捆綁bind函數來指定上述協商好的埠接收UDP數據包,接收方通過 系統調用接收recv ( )、 recvfrom 或recvmsg 函悽tli聽上述接收UDP 數據包的埠;然後,發送方發送數據包給接收方,接收方執行系統調用將 一個UDP數據包從TCP/IP協議棧中拷貝到用戶態,然後根據協商的數據包 負載的格式對UDP數據包負載進行解析,接下來可以進行各種處理和修改
(如刪除和替換),還可以執行把處理結果發回給原始發送方或者其它設備 等。
發明人在實現本發明的過程中發現每次系統調用都需要耗費一定的時 間; 一次系統調用還會進行一次數據從內核態向用戶態的搬移,花費了較多 的中央處理器(central processing皿it, CPU)的計算時間,造成了網絡輸入 輸出(Input/Output, I/O)能力低下。

發明內容
本發明實施例要解決的技術問題是提供一種傳輸控制協議/網間協議的協 議棧讀取數據的方法和裝置,提升網絡輸入輸出能力。
為解決上述技術問題,本發明所提供的傳輸控制協議/網間協議的協議棧 讀取數據的方法實施例可以通過以下技術方案實現
獲取標識;所述標識指定了讀取傳輸控制協議/網間協議TCP/IP的協議棧 中的多個用戶數據報協議UDP數據包;獲取長度;所述長度指定將要讀取的UDP數據包的總長度; 獲取數據根據所述指定的UDP數據包的總長度從所述協議棧中讀取對 應個數的UDP數據包;
將所述個數的UDP數據包拷貝到用戶態。
可選地,所述標識指定的讀取UDP數據包的總長度為5個UDP數據包的長 度到7個UDP數據包的長度之間。
可選地,在未獲取到所述標識時,從協議棧中讀取一個UDP數據包。
可選地,所述獲取到的指定標識為UDP保留標識。
可選地,所述獲取標識之前還包括
通過系統調用從UDP套接口接收UDP數據包。
可選地,所述根據所述指定的UDP數據包的總長度從所述協議棧中讀取 對應個數的UDP數據包包括
根據所述指定的UDP數據包的總長度讀取與所述總長度相同的UDP數據 包;或
根據所述指定的UDP數據包的總長度讀取與所述總長度最接近且不小於 所述總長度的整數個UDP數據包。
本發明實施例還提供了 一種數據讀取裝置,包括
標識獲取單元,用於獲取標識;所述標識指定了讀取傳輸控制協議/網間 協議TCP/IP的協議棧中的多個用戶數據報協議UDP數據包;
長度獲取單元,用於獲取長度;所述長度指定了讀取UDP數據包的總長
度;
讀取單元,用於根據上述指定的UDP數據包的總長度從所述協議棧中讀 取對應個數的UDP數據包;
拷貝單元,用於將所述個數的UDP數據包拷貝到用戶態。 可選地,上述數據讀取裝置還包括
所述讀取單元,還用於當標識獲取單元未獲取到所述標識時,執行從所 述協議棧中讀取一個UDP數據包。
可選地,上述數據讀取裝置還包括
接收單元,用於通過系統調用從UDP套接口接收UDP數據包。可選地,所述讀取單元,具體用於根據所述指定的UDP數據包的總長度
讀取與所述總長度相同的UDP數據包;或
根據所述指定的UDP數據包的總長度讀取與所述總長度最接近且不小於 所述總長度的整數個UDP數據包。
上述技術方案具有如下有益效果通過標識指定讀取多個UDP數據包, 通過長度指定可以讀取的UDP數據包的個數,這樣就可以一次讀取多個UDP 數據包;在讀取相同數量的UDP數據包時減少了系統調用的次數,降低了系 統調用佔用的時間,從而提升了網絡輸入輸出能力。


圖l為本發明實施例一方法流程示意圖; 圖2為本發明實施例二方法流程示意圖; 圖3為本發明實施例二方法應用系統結構示意圖; 圖4為本發明實施例三裝置結構示意圖; 圖5為本發明實施例三另 一裝置結構示意圖。
具體實施例方式
本發明實施例要解決的技術問題是提供一種傳輸控制協議/網間協議的協 議棧讀取數據的方法和裝置,提升網絡輸入輸出能力。
實施例一,如圖l所示,本發明實施例提供的一種傳輸控制協議/網間協議 的協議棧讀取數據的方法,包括
步驟101:獲取標識;所述標識指定了讀取傳輸控制協議/網間協議TCP/IP 的協議棧中的多個用戶數據報協議UDP數據包;
步驟102:獲取長度;所述長度指定了即將讀取的UDP數據包的總長度
步驟103:根據上述指定的UDP數據包的總長度從上述協議棧中讀取對應 個數的UDP數據包;
步驟104:將上述個數的UDP數據包拷貝到用戶態。
通過標識指定讀取多個UDP數據包,通過長度指定可以讀取的UDP數據 包的個數,這樣就可以一次讀取多個UDP數據包;在讀取相同數量的UDP數 據包時減少了系統調用的次數,降低了系統調用佔用的時間,從而提升了網 絡輸入輸出能力。進一步地,由於一次系統調用可以讀取多個UDP數據包,CPU可以不用 每次系統調用都進行將UDP數據包從內核態搬移到用戶態,減少了 CPU的計 算時間,從而提升了網絡輸入輸出能力。
進一步地,由於減少了CPU的計算時間,CPU負載量就會減小,降低了 CPU的功耗,同時也降低了CPU的發熱量,CPU可以安裝較小的散熱器和風扇 來降溫;特別是在1U架構下的機房裡面的大量數位電視前端設備具有標準尺 寸,有利於設4^故的小巧。
上述步驟104之後還可以釋放上述UDP數據包在內核態佔據的內存空間;
可選地,上述總長度可以為5個UDP數據包長度到7個UDP數據包的長度 之間。在後續實施例中將對此作更詳細的說明。
可選地,上述標識位為UDP〗呆留標識。
上述實施方式給出了一種具體的UDP標識,上述UDP^f呆留標識可以為 MSG—WAITALL標識,當然採用其它標識或者自定義一個標識都是可以的, 不影響本發明實施例的實現。
可選地,上述獲取標識之前還可以包括
通過系統調用從UDP套接口接收UDP數據包,將上述UDP數據包裝入 TCP/IP協議棧。
可選地,上述根據上述指定的UDP數據包的總長度讀取對應個數的UDP 數據包包括
根據上述指定的UDP數據包的總長度讀取與上述總長度相同的UDP數據 包;或
根據上述指定的UDP數據包的總長度讀取與上述總長度最接近且不小於 上述總長度的整數個UDP數據包。
上述實施方式給出了兩種指定的UDP數據包總長度與讀取的UDP數據包 總長度的對應關係,可以理解的是採用其他類型的對應也是可以的,並不影 響本發明實施例的實現。
實施例二,本實施例將就實施例一的實現思想作更詳細的說明,本實施 例將以linux - 2.6.15內核為本發明實施例的應用環境為例進行i兌明,可以理解 的是本發明實施例還可以用於其它環境,上述linux - 2.6.15內核不應理解為對本發明實施例的限定。如圖2所示,包括以下步驟
步驟201:應用程式使用系統調用函數從UDP套接口用來接收UDP數據
包;
上述系統調用函數可以為recv ( )、 recvfrom 或recvmsg ;
Recv、 recvfrom或recvmsg在UDP數據包的接收過程中的作用都是從UDP 埠對應的套接字上面接收一個UDP數據包,區別在於入參不同,如
ssize—t recv (int socket, void *buffer, size_t length, int flags );
ssize」recvfrom (int socket, void *restrict buffer, size—t length,int flags, struct sockaddr *restrict address, socklen_t *restrict address_len);(最後兩個參 數默認都填入NULL )
ssize—t recvmsg (int socket, struct msghdr *message, int flags);(這個時候 length淨皮隱含在message裡面)
當然調用其它函數接收UDP數據包也是可以的,並不影響本發明實施例 的實現。
步驟202:系統調用函數引起一次系統中斷,進一步調用內核中的數據接 收函數;
上述的數據接收函數可以為udp—recvmsg,當然採用其它接收函數也是 可以的,這並不影響本發明實施例的實現;
步驟203:數據接收函數判斷傳進來的參數flag是否為MSG_WAITALL; 如果是,則進入步驟205,否則,進入步驟204;上述MSG—WAITALL標識了 是否可以一次讀取多個UDP數據包;
步驟204:讀取一個UDP數據包並4巴它拷貝到用戶態
步驟205:將ret定義為udpjecvmsg中可以接收的UDP數據包的總長度, 初始4直為0;
步驟206:判斷該UDP套接口對應的數據隊列中是否為空;如果為空,則 跳到步驟212;否則進入步驟207;
步驟207:從數據隊列中取出 一個UDP數據包; 步驟208:計算出這個UDP數據包的長度;
步驟209:把這個UDP數據包從內核態的內存空間拷貝到用戶態的內存空間,並釋放掉該UDP數據包在內核態的佔據的內存空間; 步驟210:將ret^。上此UDP數據包的長度,
步驟211:判斷ret是否已經超過了參數len。如果ret已經大於等於參數len, 則跳到步驟212;否則,跳到步驟206然後可以繼續接收UDP包;
步驟212:退出udp—recvmsg函數,並返回ret。表示在udp—recvmsg函悽t中 一共接收到多少長度的UDP包。
由上可知返回的ret可能有很多種結果,下面舉例說明其中的三種情況 假設指定可以讀取負載的總長度為1316位元組(參數len等於1316)的UDP數據 包。
有I設UDP包長度為564,這時一次udp—recvmsg可以讀取到564 + 564 + 564 =1692長度(3個UDP數據包,當然這裡也可以指定為只讀2個);
UDP包長度為188,這時一個udp—recvmsg可以讀取到188 x 7=1316長度(7 個UDP數據包);
UDP包長度為564,套接口隊列中僅有兩個udp包(如在一個節目的最後 一幀就可能出現這種情況),這時一次udpjecvmsg可以讀取到564 + 564 = 1128 長度(2個包)。
對上述實施方式進行效果測試,設定中央處理器為825MHZ主頻的 MPC8541,存儲器為333MHZ主頻的DDR,每個UDP包負載長度為1316 ( 188 x7), 600mbps碼流輸入的條件下,僅僅接收碼流
使用未修改過的linux2.6.15內核,系統調用為recvfrom, CPU的使用率為 70%左右;
使用修改過的linux2.6.15內核,系統調用為recvfrom,指定一次讀取5個 UDP包,這個時候CPU的佔用率為55。/。左右;指定一次讀取7個UDP包,這個 時候的CPU佔用率為50。/。左右;繼續增加指定提取的UDP數據包,發現UDP 包有丟失的情況產生。
由上可知採用本發明實施例的方案可以kCPU佔用率降低了20。/。之 多,也就是說CPU的網絡處理能力提高了40。/c)(原有情況下1MHZ主頻處理 600/577.5=1.0389mbps碼流,現在情況下lMHZ主頻處理600/412.5^.454mbps 碼流)。上述指定的讀取UDP數據包的總長度可以為任意個UDP數據包長度,在 實際使用此方法時可以進行測量,使CPU佔用率和指定一次讀取UDP數據包 個數取得一個均衡值,在保證網^"接收的質量下儘可能降低CPU使用率。
如圖3所示,為本發明實施例的一種應用環境的系統結構示意圖,包括 UDP數據包進入本地網絡協議棧301; UDP輸入處理模塊302將UDP數據包添 加到UDP接收隊列304;用戶態的系統調用函數305^f吏用內核態的讀取函數 306,讀取函數306從UDP接收隊列304中讀取指定總長度的UDP數據包,讀取 函數306將數據包返回給用戶態的系統調用函數305。
實施例三,如圖4所示,本發明實施例還提供了一種數據讀取裝置,包括
標識獲取單元401,用於獲取的標識;所述標識指定了讀取傳輸控制協議 /網間協議TCP/IP的協議棧中的多個用戶數據報協議UDP數據包;
長度獲取單元402,用於獲取的長度;所述長度指定了即將讀取的UDP數 據包的總長度
讀取單元403,用於根據上述指定的UDP數據包的總長度從上述協議棧中 讀取對應個數的UDP數據包;
拷貝單元404,用於將上述個數的UDP數據包拷貝到用戶態。
上述讀取單元403 ,還用於當標識獲取單元401未獲取到上述標識時,執 行從所述協議棧中讀取一個UDP數據包。
如圖5所示上述讀取裝置還可以包括
接收單元501,用於通過系統調用從UDP套接口接收UDP數據包。 可選地,上述讀取單元403,具體用於根據上述指定的UDP數據包的總長 度讀取與上述總長度相同的UDP數據包;或
根據上述指定的UDP數據包的總長度讀取與上述總長度最接近且不小於 上述總長度的整數個UDP數據包。
上述實施例,通過標識表示可以讀取的UDP數據包的個數,這樣就可以 一次讀取多個UDP數據包;在讀取相同數量的UDP數據包時減少了系統調用 的次數,P爭低了系統調用佔用的時間,從而提升了網絡輸入輸出能力。
進一步地,由於一次系統調用可以讀取多個UDP^t據包,CPU可以不用 每次系統調用都進行將UDP數據包從內核態搬移到用戶態,減少了 CPU的計算時間,從而提升了網絡輸入輸出能力。
進一步地,由於減少了CPU的計算時間,CPU負載量就會減小,降低了
CPU的功耗,同時也降低了CPU的發熱量,CPU可以安裝較小的散熱器和風扇 來降溫;特別是在1U架構下的機房裡面的大量數位電視前端設備具有標準尺 寸,有利於設4^故的小巧。
是可以通過程序來指令相關的硬體完成,所述的程序可以存儲於一種計算機 可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁碟或光碟等。
以上對本發明實施例所提供的一種傳輸控制協議/網間協議的協議棧讀取 數據的方法和裝置進行了詳細介紹,本文中應用了具體個例對本發明的原理 及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法 及其核心思想;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施方式
及應用範圍上均會有改變之處,綜上所述,本說明書內容不應 理解為對本發明的限制。
ii
權利要求
1、一種傳輸控制協議/網間協議的協議棧讀取數據的方法,其特徵在於,包括獲取標識;所述標識指定了讀取傳輸控制協議/網間協議TCP/IP的協議棧中的多個用戶數據報協議UDP數據包;獲取長度;所述長度指定將要讀取的UDP數據包的總長度;獲取數據根據所述指定的UDP數據包的總長度從所述協議棧中讀取對應個數的UDP數據包;將所述個數的UDP數據包拷貝到用戶態。
2、 根據權利要求l所述方法,其特徵在於,所述標識指定的讀取UDP數據包的總長度為5個UDP數據包的長度到7個 UDP數據包的長度之間。
3、 根據權利要求l所述方法,其特徵在於,在未獲取到所述標識時,從 協議棧中讀取一個UDP數據包。 _
4、 根據權利要求3所述方法,其特徵在於, 所述獲取到的指定標識為UDP保留標識。
5、 根據權利要求l所述方法,其特徵在於,所述獲取標識之前還包括 通過系統調用從UDP套接口接收UDP數據包。
6、 根據權利要求l所述方法,其特徵在於,所述根據所述指定的UDP數 據包的總長度從所述協議棧中讀取對應個數的UDP數據包包括根據所述指定的UDP數據包的總長度讀取與所述總長度相同的UDP數據 包;或根據所述指定的UDP數據包的總長度讀取與所述總長度最接近且不小於 所述總長度的整數個UDP數據包。
7、 一種數據讀取裝置,其特徵在於,包括標識獲取單元,用於獲取標識;所述標識指定了讀取傳輸控制協議/網間 協議TCP/IP的協議棧中的多個用戶數據報協議UDP數據包;長度獲取單元,用於獲取長度;所述長度指定了讀取UDP數據包的總長度;讀取單元,用於根據上述指定的UDP數據包的總長度從所述協議棧中讀取對應個數的UDP數據包;拷貝單元,用於將所述個數的UDP數據包拷貝到用戶態。
8、 根據權利要求7所述裝置,其特徵在於,還包括 所述讀取單元,還用於當標識獲取單元未獲取到所述標識時,執行從所述協議棧中讀取一個UDP數據包。
9、 根據權利要求7所述裝置,其特徵在於,還包括 接收單元,用於通過系統調用從UDP套接口接收UDP數據包。
10、 根據權利要求7所述裝置,其特徵在於,所述讀取單元,具體用於根據所述指定的UDP數據包的總長度讀取與所 述總長度相同的UDP數據包;或根據所述指定的UDP數據包的總長度讀取與所述總長度最接近且不小於 所述總長度的整數個UDP數據包。
全文摘要
本發明實施例公開了一種傳輸控制協議/網間協議的協議棧讀取數據的方法和裝置。獲取標識;所述標識指定了讀取傳輸控制協議/網間協議TCP/IP的協議棧中的多個用戶數據報協議UDP數據包;獲取長度;所述長度指定將要讀取的UDP數據包的總長度;獲取數據根據所述指定的UDP數據包的總長度從所述協議棧中讀取對應個數的UDP數據包;將所述個數的UDP數據包拷貝到用戶態。通過標識指定讀取多個UDP數據包,通過長度指定可以讀取的UDP數據包的個數,這樣就可以一次讀取多個UDP數據包;在讀取相同數量的UDP數據包時減少了系統調用的次數,降低了系統調用佔用的時間,從而提升了網絡輸入輸出能力。
文檔編號H04L29/08GK101494661SQ20081018914
公開日2009年7月29日 申請日期2008年12月29日 優先權日2008年12月29日
發明者凡 劉 申請人:深圳市同洲電子股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀