[发明专利]一种采用静态链表构造TCP节点池优化TCP连接管理的方法有效
申请号: | 201010597787.6 | 申请日: | 2010-12-17 |
公开(公告)号: | CN102098288A | 公开(公告)日: | 2011-06-15 |
发明(设计)人: | 刘朝辉;窦晓光;纪奎;刘灿;李锋伟 | 申请(专利权)人: | 天津曙光计算机产业有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06 |
代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 |
地址: | 300384 天津市西青区华*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 采用 静态 构造 tcp 节点 优化 连接 管理 方法 | ||
技术领域
本发明涉及网络数据处理领域,具体涉及一种采用静态链表构造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节点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津曙光计算机产业有限公司,未经天津曙光计算机产业有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010597787.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:过零型SSR-BCD编码式交流负载器
- 下一篇:硅堆装置