CN102098288A - 一种采用静态链表构造tcp节点池优化tcp连接管理的方法 - Google Patents
一种采用静态链表构造tcp节点池优化tcp连接管理的方法 Download PDFInfo
- Publication number
- CN102098288A CN102098288A CN2010105977876A CN201010597787A CN102098288A CN 102098288 A CN102098288 A CN 102098288A CN 2010105977876 A CN2010105977876 A CN 2010105977876A CN 201010597787 A CN201010597787 A CN 201010597787A CN 102098288 A CN102098288 A CN 102098288A
- Authority
- CN
- China
- Prior art keywords
- tcp
- node
- pool
- node pool
- hash
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种采用静态链表构造TCP节点池优化TCP连接管理的方法。连接管理结构包括TCP并发连接hash表和TCP节点池,在系统开始时一次申请所有TCP节点需要的内存,并串联在一个静态链表中,形成一个TCP节点池,当一个TCP连接建立时,只需要从节点池中取出一个节点挂到hash表中,当一个TCP连接删除时,只需要把该TCP节点从hash表摘下放回节点池,避免系统运行过程中,频繁新建和关闭TCP连接时的内存申请和释放操作,提高TCP连接管理系统的效率。
Description
技术领域
本发明涉及网络数据处理领域,具体涉及一种采用静态链表构造TCP节点池优化TCP连接管理的方法。
背景技术
TCP连接管理是TCP协议栈处理的重要内容,需要使用一个并发TCP连接表,保存当前的每个TCP连接,当一个新的TCP连接建立时,需要在TCP连接表中新建一个表项,当一个TCP连接关闭时,需要把该连接表项从并发连接表中删除。
在高速网络监测系统上,往往需要管理百万到千万个并发连接,TCP连接的建立和删除十分频繁,每秒钟内新建和关闭的连接数有时高达几十万个,每次新建和关闭连接都要申请和释放TCP节点结构,也就是说要频繁进行小内存的申请和释放,这会明显降低整个系统的效率。
专利号200710178168.1公开了一种互联网旁路监测系统的TCP连接管理方法,因为每个报文都要查找TCP连接表,所以在有大量的并发的TCP连接的情况下,大容量的TCP连接表必须使用hash表以提高查找效率。因为并发的TCP连接数是动态变化的,所以在hash表初始化时,没有给每个表项分配保存TCP连接信息的数据结构,而是用一个动态申请的TCP节点数据结构来保存TCP连接信息,当一个TCP连接建立或删除时,需要动态申请或释放一个TCP节点的内存。
发明内容
本发明的目的是减少避免新建和关闭TCP连接时的内存申请和释放操作。
一种采用静态链表构造TCP节点池优化TCP连接管理的方法,包括TCP并发连接hash表和TCP节点池,步骤如下:
A、申请内存,初始化保存TCP连接的hash表,每个hash表项指向TCP节点的索引指针设为-1,表示未分配的节点;
B、根据系统需要支持的最大并发TCP连接数,初始化时一次申请下所有TCP节点需要的内存,构造连续的TCP节点数组,每个TCP节点通过一个后继节点的索引指针连接起来,形成一个节点链表;
C、当TCP连接表中分配了一个hash表项,需要新建一个TCP连接时,就从TCP节点池的可用节点链表表头,摘下一个节点,把hash表项的节点索引指针设置为指向该节点的索引;
D、当TCP连接表中需要关闭一个TCP连接时,就把该连接的hash表项指向的TCP节点索引取出,从TCP节点池中找到该节点,把该节点连接到TCP可用节点链表表头,同时把hash表项的节点索引指针设置为-1,表示该表项没有分配TCP节点;
E、退出时释放TCP连接表和节点池内存。
本发明的一种优选技术方案在于:所述TCP并发连接表使用hash表结构实现,每个表项的指向是指向TCP节点结构的指针;所述TCP节点池使用静态链表构造,在内存分配时,节点池是连续的静态内存的TCP节点构成的数组,只在系统初始化时申请一次,节点池中的每个可用的TCP节点通过节点索引连成一个链表,可以动态的从节点池取出或放回。
本发明采用静态链表构造和hash表结合,在系统开始时一次申请所有TCP节点需要的内存,并串联在一个静态链表中,形成一个TCP节点池,当一个TCP连接建立时,只需要从节点池中取出一个节点挂到hash表中,当一个TCP连接删除时,只需要把该TCP节点从hash表摘下放回节点池,避免系统运行过程中,频繁新建和关闭TCP连接时的内存申请和释放操作,提高TCP连接管理系统的效率。
附图说明
图1是本发明连接表和节点池结构图
具体实施方式
本发明的TCP管理功能有两部分构成,一个是TCP并发连接表,另一个是TCP节点池。
连接表使用hash表结构实现,每个表项指向是指向TCP节点结构的指针。
TCP节点池使用静态链表构造,在内存分配时,节点池是连续的静态内存的TCP节点构成的数组,只在系统初始化时申请一次;节点池中的每个可用的TCP节点通过节点索引联成一个链表,可以动态的从节点池取出或放回。
TCP连接管理的方法和过程如下:
(1)系统开始时初始化TCP连接表。
申请内存,初始化保存TCP连接的hash表,每个hash表项指向TCP节点的索引指针设为-1,表示未分配节点。
(2)系统开始时初始化TCP节点池。
根据系统需要支持的最大并发TCP连接数,初始化时一次申请下所有TCP节点需要的内存,构造连续的TCP节点数组,每个TCP节点通过一个后继节点的索引指针连结起来,形成一个可用节点链表。
(3)新建TCP连接时分配TCP节点。
当TCP连接表中分配了一个hash表项,需要新建一个TCP连接时,就从TCP节点池的可用节点链表表头,摘下一个节点,把hash表项的节点索引指针设置为指向该节点的索引。
(4)关闭TCP连接时释放TCP节点。
当TCP连接表中需要关闭一个TCP连接时,就把该连接的hash表项指向的TCP节点索引取出,从TCP节点池中找到该节点,把该节点链接到TCP可用节点链表表头,同时,把hash表项的节点索引指针设置为-1,表示该表项没有分配TCP节点。
(5)系统退出时释放TCP连接表和节点池内存。
Claims (2)
1.一种采用静态链表构造TCP节点池优化TCP连接管理的方法,其特征在于:包括TCP并发连接hash表和TCP节点池,步骤如下:
A、申请内存,初始化保存TCP连接的hash表,每个hash表项指向TCP节点的索引指针设为-1,表示未分配的节点;
B、根据系统需要支持的最大并发TCP连接数,初始化时一次申请下所有TCP节点需要的内存,构造连续的TCP节点数组,每个TCP节点通过一个后继节点的索引指针连接起来,形成一个节点链表;
C、当TCP连接表中分配了一个hash表项,需要新建一个TCP连接时,就从TCP节点池的可用节点链表表头,摘下一个节点,把hash表项的节点索引指针没置为指向该节点的索引;
D、当TCP连接表中需要关闭一个TCP连接时,就把该连接的hash表项指向的TCP节点索引取出,从TCP节点池中找到该节点,把该节点连接到TCP可用节点链表表头,同时把hash表项的节点索引指针设置为-1,表示该表项没有分配TCP节点;
E、退出时释放TCP连接表和节点池内存。
2.如权利要求1所述一种采用静态链表构造TCP节点池优化TCP连接管理的方法,其特征在于:所述TCP并发连接表使用hash表结构实现,每个表项的指向是指向TCP节点结构的指针;所述TCP节点池使用静态链表构造,在内存分配时,节点池是连续的静态内存的TCP节点构成的数组,只在系统初始化时申请一次,节点池中的每个可用的TCP节点通过节点索引连成一个链表,可以动态的从节点池取出或放回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010597787.6A CN102098288B (zh) | 2010-12-17 | 2010-12-17 | 一种采用静态链表构造tcp节点池优化tcp连接管理的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010597787.6A CN102098288B (zh) | 2010-12-17 | 2010-12-17 | 一种采用静态链表构造tcp节点池优化tcp连接管理的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102098288A true CN102098288A (zh) | 2011-06-15 |
CN102098288B CN102098288B (zh) | 2014-01-22 |
Family
ID=44131151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010597787.6A Active CN102098288B (zh) | 2010-12-17 | 2010-12-17 | 一种采用静态链表构造tcp节点池优化tcp连接管理的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102098288B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104363175A (zh) * | 2014-11-21 | 2015-02-18 | 迈普通信技术股份有限公司 | 一种资源表构建方法和装置 |
CN109634966A (zh) * | 2018-12-17 | 2019-04-16 | 广州天懋信息系统股份有限公司 | 基于哈希算法的千万级网络会话表管理方法、系统、介质和设备 |
CN109918203A (zh) * | 2019-03-18 | 2019-06-21 | 深圳市网心科技有限公司 | 接入服务器内存管理优化方法、接入服务器及通信系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060168281A1 (en) * | 2003-12-05 | 2006-07-27 | Alacritech, Inc. | TCP/IP offload device with reduced sequential processing |
CN1940922A (zh) * | 2005-09-30 | 2007-04-04 | 腾讯科技(深圳)有限公司 | 一种提高搜索信息速度的方法及系统 |
-
2010
- 2010-12-17 CN CN201010597787.6A patent/CN102098288B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060168281A1 (en) * | 2003-12-05 | 2006-07-27 | Alacritech, Inc. | TCP/IP offload device with reduced sequential processing |
CN1940922A (zh) * | 2005-09-30 | 2007-04-04 | 腾讯科技(深圳)有限公司 | 一种提高搜索信息速度的方法及系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104363175A (zh) * | 2014-11-21 | 2015-02-18 | 迈普通信技术股份有限公司 | 一种资源表构建方法和装置 |
CN109634966A (zh) * | 2018-12-17 | 2019-04-16 | 广州天懋信息系统股份有限公司 | 基于哈希算法的千万级网络会话表管理方法、系统、介质和设备 |
CN109918203A (zh) * | 2019-03-18 | 2019-06-21 | 深圳市网心科技有限公司 | 接入服务器内存管理优化方法、接入服务器及通信系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102098288B (zh) | 2014-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103488704B (zh) | 一种数据存储方法及装置 | |
CN103905311B (zh) | 流表匹配方法和装置以及交换机 | |
US20160117115A1 (en) | Disk partition stitching and rebalancing using a partition table | |
CN105447014B (zh) | 基于binlog的元数据管理方法和用于提供元数据的方法及装置 | |
CN104462185B (zh) | 一种基于混合结构的数字图书馆云存储系统 | |
RU2005120652A (ru) | Способы развертывания и свертывания для обеспечения управления свойствами файлов между системами объектов | |
CN105868033A (zh) | 基于Redis实现优先级消息队列的方法及系统 | |
CN102033882B (zh) | 一种性能数据的存储方法及系统 | |
CN105205143B (zh) | 一种文件存储及处理方法、设备和系统 | |
CN104462549A (zh) | 一种数据处理方法和装置 | |
CN103688257B (zh) | 元数据管理方法和装置 | |
CN102098288B (zh) | 一种采用静态链表构造tcp节点池优化tcp连接管理的方法 | |
CN102546823A (zh) | 一种云存储系统的文件存储管理系统 | |
CN102663007A (zh) | 一种支持敏捷开发和横向扩展的数据存储与查询方法 | |
CN107026876A (zh) | 一种文件数据访问系统及方法 | |
CN103324763A (zh) | 一种手机端树形数据结构的展现方法 | |
CN101707513A (zh) | 基于正则表达式的深度包检测方法及设备 | |
CN106230938A (zh) | 一种客户端与服务器之间的目录信息同步方法及系统 | |
CN102520994A (zh) | 流式加载虚拟文件方法及系统 | |
CN106156227A (zh) | 一种数据传输方法及装置 | |
CN102663020A (zh) | 一种cdc数据分发方法和装置 | |
CN109885423A (zh) | 一种区块链源数据备份方法 | |
CN102567419A (zh) | 基于树结构的海量数据存储装置及方法 | |
CN106384292A (zh) | 社交网络用户关系采集系统及方法 | |
CN107423321A (zh) | 适用大批量小文件云存储的方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221219 Address after: 430040 NO.666, Wuhuan Avenue, linkonggang economic and Technological Development Zone, Wuhan City, Hubei Province (10) Patentee after: Dawning Network Technology Co.,Ltd. Address before: 300384 Xiqing District, Tianjin Huayuan Industrial Zone (outside the ring) 15 1-3, hahihuayu street. Patentee before: DAWNING INFORMATION INDUSTRY Co.,Ltd. |
|
TR01 | Transfer of patent right |