法律状态公告日
法律状态信息
法律状态
2022-12-30
专利权的转移 IPC(主分类):H04L29/06 专利号:ZL2010105977876 登记生效日:20221219 变更事项:专利权人 变更前权利人:曙光信息产业股份有限公司 变更后权利人:曙光网络科技有限公司 变更事项:地址 变更前权利人:300384 天津西青区华苑产业区(环外)海泰华科大街15号1-3层 变更后权利人:430040 湖北省武汉市临空港经济技术开发区五环大道666号(10)
专利申请权、专利权的转移
2014-01-22
授权
授权
2011-09-07
实质审查的生效 IPC(主分类):H04L29/06 申请日:20101217
实质审查的生效
2011-06-15
公开
公开
技术领域
本发明涉及网络数据处理领域,具体涉及一种采用静态链表构造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连接表和节点池内存。
机译: 内容分发网络服务提供商和内容所有者之间的身份验证方法,包括在提供商的终端节点和所有者的身份验证服务器之间建立TCP连接,包括维护。此TCP连接在节点和服务器之间建立,并通过该请求请求后续连接的身份验证打开TCP连接。
机译: TCP连接管理装置,TCP连接管理方法和程序存储装置
机译: 提供一种使用分布式TCP连接来启用无线TCP会话的协议的方法和装置