[發明專利]一種用于工業控制系統網絡的數據包零拷貝獲取方法有效
| 申請號: | 201410466615.3 | 申請日: | 2014-09-12 |
| 公開(公告)號: | CN104333533B | 公開(公告)日: | 2017-09-08 |
| 發明(設計)人: | 吳克河;安思成;丁雪偉;王曉翔;崔文超;李佳瑋 | 申請(專利權)人: | 北京華電天益信息科技有限公司;華北電力大學 |
| 主分類號: | H04L29/06 | 分類號: | H04L29/06 |
| 代理公司: | 南京蘇高專利商標事務所(普通合伙)32204 | 代理人: | 王云 |
| 地址: | 102200 北京市昌平*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 用于 工業 控制系統 網絡 數據包 拷貝 獲取 方法 | ||
1.一種用于工業控制系統網絡的數據包零拷貝獲取方法,其特征在于:包括以下步驟:
步驟1,加載內核模塊,指定需要獲取數據包的網絡接口;
步驟2,初始化內核模塊,其中包括分配內核模塊和用戶程序的共享內存區域,所述共享的內存區域分配在用戶態區;
步驟3,格式化和結構化共享內存區的數據模型,并將共享內存區的數據模型中各部分設置初始狀態;
步驟4,創建用于用戶態和內核模塊之間通信交互的虛擬字符設備,并將虛擬字符設備返回給用戶態以加載;
步驟5,用戶程序通過虛擬字符設備通知內核模塊,開始數據包零拷貝獲取操作;
步驟6,內核模塊經過準備工作后,開始獲取網卡鏈路層數據包,并從網卡直接寫到共享內存區域;
步驟7,內核模塊把原始的鏈路層數據包進行TCP流表重組,這其中用到序列號和應答號信息;如果數據包在TCP流表內組織為順序包,那么作為就緒包處理,設置一個定標志位;內核模塊通知用戶態就緒數據包已經到達,用戶態取下數據包后,做應用處理;如果數據包在TCP流表內組織不為順序包,由TCP流表重組功能暫時緩存,等待直到后面數據包到達后可以組成順序包,再進行就緒處理;
步驟8,用戶態處理完數據包后,通知內核模塊數據包以處理完成,內核模塊將處理完數據包從共享內存區中刪除,將刪除后的空間給后面的數據包獲取過程使用。
2.根據權利要求1所述的用于工業控制系統網絡的數據包零拷貝獲取方法,其特征在于:所述步驟2中共享內存區域是通過內核模塊與用戶態之間映射形成,主要方法為:利用alloc_pages函數申請物理頁,然后使用vmap函數將申請的物理頁映射到內核模塊,再通過vm_insert_page函數將申請的物理頁插入到用戶地址空間;其中,所述alloc_pages函數用于在內核模塊中申請物理內存頁框的函數;所述vmap函數用于把申請的物理頁框的內容映射到內核模塊虛擬地址的一段連續地址;所述vm_insert_page函數用于把物理頁框映射到用戶進程虛擬地址的一塊連續地址。
3.根據權利要求1所述的用于工業控制系統網絡的數據包零拷貝獲取方法,其特征在于:所述步驟3中共享內存區的數據模型包括五部分,分別為內存管理結構體、哈希表、連接結點、數據存儲管理單元和數據存放區塊。
4.根據權利要求1所述的用于工業控制系統網絡的數據包零拷貝獲取方法,其特征在于:所述步驟6中內核模塊進行的準備工作主要包括,首先通過虛擬字符設備的mmap函數申請映射一塊設備空間用作內核模塊與用戶程序之間通信存儲臨時消息;然后判斷網卡驅動是否運行,如運行則不進行操作,如果網卡驅動不運行則把網卡的數據緩沖區替換為所述共享內存區,最后,使網卡驅動繼續運行。
5.根據權利要求3所述的用于工業控制系統網絡的數據包零拷貝獲取方法,其特征在于:所述數據存儲管理單元被組織成一個雙向循環鏈表,其中有三個控制結點:head、use和tail,所述head表示數據包管理鏈表的頭節點;所述use表示數據包管理鏈表的中間節點;所述tail表示數據包管理鏈表的尾節點;其中,head和use節點之間是用戶態使用中的節點,use和tail節點之間是內核態使用中的節點,tail和head節點之間是目前空閑中的節點,所述網卡得到數據包后,調用接口首先將head和use節點之間已經處理完成的結點放到ail和head節點之間的末端,然后從tail和head節點之間取第一個結點放到use和tail節點之間用于存放網卡直接內存存取過來的數據;use和tail節點之間的結點經過處理之后或被丟棄或移動到head和use節點之間供用戶程序處理。
6.根據權利要求5所述的用于工業控制系統網絡的數據包零拷貝獲取方法,其特征在于:所述數據存儲管理單元被組織成的雙向循環鏈表中使用延時函數。
7.根據權利要求1所述的用于工業控制系統網絡的數據包零拷貝獲取方法,其特征在于:所述步驟7中內核模塊把原始的鏈路層數據包進行TCP流表重組的方法為:通過數據包的IP頭獲得源IP和目的IP,從TCP頭獲得源端口和目的端口,通過源IP、目的IP、源端口和目的端口的四元組來存放到不同的連接中;然后通過TCP機制和ACK、SYN、FIN控制包,將數據包重組成為數據流。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京華電天益信息科技有限公司;華北電力大學,未經北京華電天益信息科技有限公司;華北電力大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410466615.3/1.html,轉載請聲明來源鉆瓜專利網。





