[發(fā)明專利]一種采用靜態(tài)鏈表構(gòu)造TCP節(jié)點池優(yōu)化TCP連接管理的方法有效
| 申請?zhí)枺?/td> | 201010597787.6 | 申請日: | 2010-12-17 |
| 公開(公告)號: | CN102098288A | 公開(公告)日: | 2011-06-15 |
| 發(fā)明(設(shè)計)人: | 劉朝輝;竇曉光;紀奎;劉燦;李鋒偉 | 申請(專利權(quán))人: | 天津曙光計算機產(chǎn)業(yè)有限公司 |
| 主分類號: | H04L29/06 | 分類號: | H04L29/06 |
| 代理公司: | 北京安博達知識產(chǎn)權(quán)代理有限公司 11271 | 代理人: | 徐國文 |
| 地址: | 300384 天津市西青區(qū)華*** | 國省代碼: | 天津;12 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 采用 靜態(tài) 構(gòu)造 tcp 節(jié)點 優(yōu)化 連接 管理 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)處理領(lǐng)域,具體涉及一種采用靜態(tài)鏈表構(gòu)造TCP節(jié)點池優(yōu)化TCP連接管理的方法。
背景技術(shù)
TCP連接管理是TCP協(xié)議棧處理的重要內(nèi)容,需要使用一個并發(fā)TCP連接表,保存當前的每個TCP連接,當一個新的TCP連接建立時,需要在TCP連接表中新建一個表項,當一個TCP連接關(guān)閉時,需要把該連接表項從并發(fā)連接表中刪除。
在高速網(wǎng)絡(luò)監(jiān)測系統(tǒng)上,往往需要管理百萬到千萬個并發(fā)連接,TCP連接的建立和刪除十分頻繁,每秒鐘內(nèi)新建和關(guān)閉的連接數(shù)有時高達幾十萬個,每次新建和關(guān)閉連接都要申請和釋放TCP節(jié)點結(jié)構(gòu),也就是說要頻繁進行小內(nèi)存的申請和釋放,這會明顯降低整個系統(tǒng)的效率。
專利號200710178168.1公開了一種互聯(lián)網(wǎng)旁路監(jiān)測系統(tǒng)的TCP連接管理方法,因為每個報文都要查找TCP連接表,所以在有大量的并發(fā)的TCP連接的情況下,大容量的TCP連接表必須使用hash表以提高查找效率。因為并發(fā)的TCP連接數(shù)是動態(tài)變化的,所以在hash表初始化時,沒有給每個表項分配保存TCP連接信息的數(shù)據(jù)結(jié)構(gòu),而是用一個動態(tài)申請的TCP節(jié)點數(shù)據(jù)結(jié)構(gòu)來保存TCP連接信息,當一個TCP連接建立或刪除時,需要動態(tài)申請或釋放一個TCP節(jié)點的內(nèi)存。
發(fā)明內(nèi)容
本發(fā)明的目的是減少避免新建和關(guān)閉TCP連接時的內(nèi)存申請和釋放操作。
一種采用靜態(tài)鏈表構(gòu)造TCP節(jié)點池優(yōu)化TCP連接管理的方法,包括TCP并發(fā)連接hash表和TCP節(jié)點池,步驟如下:
A、申請內(nèi)存,初始化保存TCP連接的hash表,每個hash表項指向TCP節(jié)點的索引指針設(shè)為-1,表示未分配的節(jié)點;
B、根據(jù)系統(tǒng)需要支持的最大并發(fā)TCP連接數(shù),初始化時一次申請下所有TCP節(jié)點需要的內(nèi)存,構(gòu)造連續(xù)的TCP節(jié)點數(shù)組,每個TCP節(jié)點通過一個后繼節(jié)點的索引指針連接起來,形成一個節(jié)點鏈表;
C、當TCP連接表中分配了一個hash表項,需要新建一個TCP連接時,就從TCP節(jié)點池的可用節(jié)點鏈表表頭,摘下一個節(jié)點,把hash表項的節(jié)點索引指針設(shè)置為指向該節(jié)點的索引;
D、當TCP連接表中需要關(guān)閉一個TCP連接時,就把該連接的hash表項指向的TCP節(jié)點索引取出,從TCP節(jié)點池中找到該節(jié)點,把該節(jié)點連接到TCP可用節(jié)點鏈表表頭,同時把hash表項的節(jié)點索引指針設(shè)置為-1,表示該表項沒有分配TCP節(jié)點;
E、退出時釋放TCP連接表和節(jié)點池內(nèi)存。
本發(fā)明的一種優(yōu)選技術(shù)方案在于:所述TCP并發(fā)連接表使用hash表結(jié)構(gòu)實現(xiàn),每個表項的指向是指向TCP節(jié)點結(jié)構(gòu)的指針;所述TCP節(jié)點池使用靜態(tài)鏈表構(gòu)造,在內(nèi)存分配時,節(jié)點池是連續(xù)的靜態(tài)內(nèi)存的TCP節(jié)點構(gòu)成的數(shù)組,只在系統(tǒng)初始化時申請一次,節(jié)點池中的每個可用的TCP節(jié)點通過節(jié)點索引連成一個鏈表,可以動態(tài)的從節(jié)點池取出或放回。
本發(fā)明采用靜態(tài)鏈表構(gòu)造和hash表結(jié)合,在系統(tǒng)開始時一次申請所有TCP節(jié)點需要的內(nèi)存,并串聯(lián)在一個靜態(tài)鏈表中,形成一個TCP節(jié)點池,當一個TCP連接建立時,只需要從節(jié)點池中取出一個節(jié)點掛到hash表中,當一個TCP連接刪除時,只需要把該TCP節(jié)點從hash表摘下放回節(jié)點池,避免系統(tǒng)運行過程中,頻繁新建和關(guān)閉TCP連接時的內(nèi)存申請和釋放操作,提高TCP連接管理系統(tǒng)的效率。
附圖說明
圖1是本發(fā)明連接表和節(jié)點池結(jié)構(gòu)圖
具體實施方式
本發(fā)明的TCP管理功能有兩部分構(gòu)成,一個是TCP并發(fā)連接表,另一個是TCP節(jié)點池。
連接表使用hash表結(jié)構(gòu)實現(xiàn),每個表項指向是指向TCP節(jié)點結(jié)構(gòu)的指針。
TCP節(jié)點池使用靜態(tài)鏈表構(gòu)造,在內(nèi)存分配時,節(jié)點池是連續(xù)的靜態(tài)內(nèi)存的TCP節(jié)點構(gòu)成的數(shù)組,只在系統(tǒng)初始化時申請一次;節(jié)點池中的每個可用的TCP節(jié)點通過節(jié)點索引聯(lián)成一個鏈表,可以動態(tài)的從節(jié)點池取出或放回。
TCP連接管理的方法和過程如下:
(1)系統(tǒng)開始時初始化TCP連接表。
申請內(nèi)存,初始化保存TCP連接的hash表,每個hash表項指向TCP節(jié)點的索引指針設(shè)為-1,表示未分配節(jié)點。
(2)系統(tǒng)開始時初始化TCP節(jié)點池。
根據(jù)系統(tǒng)需要支持的最大并發(fā)TCP連接數(shù),初始化時一次申請下所有TCP節(jié)點需要的內(nèi)存,構(gòu)造連續(xù)的TCP節(jié)點數(shù)組,每個TCP節(jié)點通過一個后繼節(jié)點的索引指針連結(jié)起來,形成一個可用節(jié)點鏈表。
(3)新建TCP連接時分配TCP節(jié)點。
該專利技術(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/201010597787.6/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:過零型SSR-BCD編碼式交流負載器
- 下一篇:硅堆裝置
- 復(fù)雜背景中實現(xiàn)靜態(tài)目標檢測和識別的方法
- 一種設(shè)置靜態(tài)認證信息的方法及裝置
- 一種基于物聯(lián)網(wǎng)技術(shù)的機房靜態(tài)資源快速定位的方法
- 一種動態(tài)網(wǎng)頁靜態(tài)化的方法和裝置
- 瀏覽器靜態(tài)資源加載方法、瀏覽器程序及可讀存儲介質(zhì)
- 靜態(tài)資源更新方法、裝置、存儲介質(zhì)和計算機設(shè)備
- 一種圖像顯示方法及裝置
- 一種靜態(tài)方法修改非靜態(tài)對象的方法
- 一種靜態(tài)資源加載方法、裝置、設(shè)備及可讀存儲介質(zhì)
- 一種靜態(tài)資源獲取方法、裝置及其相關(guān)設(shè)備





