[發明專利]基于零拷貝和Linux內核的軟件流控方法及其系統有效
| 申請號: | 201410603601.1 | 申請日: | 2014-10-27 |
| 公開(公告)號: | CN104320351B | 公開(公告)日: | 2019-04-05 |
| 發明(設計)人: | 劉永強;呂恩泳;沈智杰;景曉軍;唐新民 | 申請(專利權)人: | 任子行網絡技術股份有限公司 |
| 主分類號: | H04L12/801 | 分類號: | H04L12/801;H04L12/863 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 518057 廣東省深圳市南山*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 拷貝 linux 內核 軟件 方法 及其 系統 | ||
本發明涉及軟件流控技術領域,尤其涉及一種基于零拷貝和Linux內核的軟件流控方法及其系統。方法包括:用零拷貝方式獲取網卡上的數據包;判斷數據包是否需要流控;如果數據包需要流控,則將數據包打上流控隊列號標記;將打上流控隊列號標記的數據包發送到Linux內核的虛擬網卡上;將接收到的打上流控隊列號標記的數據包轉換為內核打上標記后的數據包;對該數據包進行流量控制,以產生流控后的數據包。本發明提供的基于零拷貝和Linux內核的軟件流控方法及其系統,結合了零拷貝和Linux內核TC流控各自的優點,采用虛擬網卡的方式連接內核和零拷貝機制,解決了轉發性能和流控之間的矛盾,實現了大流量下高效的流量控制。
技術領域
本發明涉及軟件流控技術領域,尤其涉及一種基于零拷貝和Linux內核的軟件流控方法及其系統。
背景技術
隨著“大數據”與“云計算”概念的提出,各種移動訪問、應用資源、云端服務也不斷涌現出來,帶寬需求不斷擴大,對帶寬資源的占用也越來越高,如果不加以限制,會嚴重消耗企業的帶寬資源,從而影響正常的業務數據傳輸。
在這種情形下,軟件流控也變得越來越重要,當前主流的軟件流控實現方法有兩種:一種方法是基于Linux內核提供的流量控制(Traffic Control,以下簡稱TC)組件,該方法的優點是Linux內核和TC組件提供了豐富的功能支持,可以根據用戶需求較快的開發新功能,缺點是所有數據包均需要經過Linux內核轉發,轉發性能較低。另一種方法是基于零拷貝技術,用戶態程序可直接從網卡上讀取數據包,并實現流控算法,該方法的優點是轉發性能高,缺點是用戶需要自己重頭開發流控框架,實現起來復雜度大。
鑒于以上內容,有必要提供一種能克服以上缺點的流控方法。
發明內容
本發明的目的在于提供一種基于零拷貝和Linux內核的軟件流控方法及其系統,以解決以上技術問題。
本發明是這樣實現的,一種基于零拷貝和Linux內核的軟件流控方法,包括以下步驟:用零拷貝方式獲取網卡上的數據包的步驟;判斷所述數據包是否需要流控的步驟;如果所述數據包需要流控,則將所述數據包打上流控隊列號標記的步驟;通過虛擬網卡驅動提供的接口,將打上流控隊列號標記的數據包發送到Linux內核的虛擬網卡上的步驟;將接收到的所述打上流控隊列號標記的數據包轉換為內核打上標記后的數據包的步驟;以及利用linux內核TC模塊對所述內核打上標記后的數據包進行流量控制,以產生流控后的數據包的步驟。
較優的,所述將接收到的所述打上流控隊列號標記的數據包轉換為內核打上標記后的數據包的步驟進一步包括;所述打上流控隊列號標記的數據包中的網絡數據包轉換為linux內核存儲的sk_buff格式數據包的步驟;以及根據所述打上流控隊列號標記的數據包的標記值,將所述sk_buff格式數據包打上標記的步驟。
較優的,還包括:用戶態程序通過虛擬網卡驅動提供的接口接收所述流控后的數據包,并用零拷貝方式將所述流控后的數據包發送到網卡的步驟。
較優的,所述將接收到的所述打上流控隊列號標記的數據包轉換為內核打上標記后的數據包的步驟是由linux內核的虛擬網卡實現。
較優的,所述流控隊列號標記的值是所述打上流控隊列號標記的數據包對應在Linux內核TC的流控隊列號。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于任子行網絡技術股份有限公司,未經任子行網絡技術股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410603601.1/2.html,轉載請聲明來源鉆瓜專利網。





