一种TCP连接缓存应用数据的内存申请方法和系统

著录项
  • CN201110415220.7
  • 20111213
  • CN102497431A
  • 20120613
  • 曙光信息产业(北京)有限公司
  • 刘灿;刘朝辉;窦晓光;纪奎;邵宗有
  • H04L29/08
  • H04L29/08

  • 北京市海淀区水磨西街64号
  • 北京(11)
  • 北京安博达知识产权代理有限公司
  • 徐国文
摘要
本发明提供一种TCP连接缓存应用数据的方法,其特征在于,TCP连接在应用负载小的情况下,从静态缓存池中申请获得固定长度的缓冲区块;而在应用负载大的情况下,从操作系统动态申请固定长度的缓冲区块。与现有技术相比,本发明的有益效果在于:很好的支持了上层应用暂存负载进行内容分析,在上层应用内存负载小,能快速的从静态缓存池中获取资源;在上层应用内存负载大时,也能做适当的缓冲,避免丢包。
权利要求

1.一种TCP连接缓存应用数据的方法,其包括如下步骤:

(1)初始化,根据应用规模为流缓存节点按多种尺度申请数个节点组成静态 池,转步骤(2);

(2)流节点申请转步骤(3);流节点释放转步骤(7);

(3)从静态池中申请空闲节点,如果申请成功,则进入步骤(5),否则进入 步骤(4);

(4)从操作系统申请动态流缓存节点,如果申请成功,则进入步骤(5),否 则进入步骤(6);

(5)返回节点头指针,转步骤(11);

(6)返回空指针,转步骤(11);

(7)流缓存节点有动态申请标志转步骤(8),否则转步骤(9);

(8)静态池中,相同尺度的流缓存节点数小于设定阈值(如:1k个),转步骤

(9),否则转步骤(10);

(9)流缓存节点放入静态池中,转步骤(11);

(10)流缓存节点归还给操作系统,转步骤(11);

(11)结束;

其中,步骤1中所述的尺度包括三种,分别为:5k,1.5k,0.5k;步骤4中 所述节点大小为静态中能满足需求最小的一种。

2.根据权利要求1所述的方法,其特征在于,步骤(3)中TCP连接从操作系 统动态地申请获得固定长度len的缓冲区块。

3.根据权利要求1‑2所述的方法,其特征在于,步骤(4)中TCP连接从操作 系统动态地申请获得固定长度len的缓冲区块。

4.根据权利要求1‑3所述的方法,其特征在于,步骤(7)~(10)中根据 被释放节点的标识和静态池中相同尺度的节点个数确定节点由静态池回收还 是操作系统回收。

5.根据权利要求1‑4所述方法,其特征在于,所述TCP连接关闭或淘汰时,也 采用节点回收的(7)~(10)模块来处理。

6.一种TCP连接缓存应用数据的内存申请的系统,其包括如下模块:

(1)初始化模块,根据应用规模为流缓存节点按多种尺度申请数个节点组成 静态池;

(2)申请静态缓冲区块模块,流节点申请转模块(3);流节点释放转模块(7);

(3)从静态池中申请空闲节点,如果申请成功,则进入模块(5),否则进入 模块(4);

(4)申请动态缓冲区模块,从操作系统申请动态流缓存节点,如果申请成功, 则进入模块(5),否则进入模块(6);

(5)返回节点头指针,转模块(11);

(6)返回空指针,转模块(11);

(7)流缓存节点有动态申请标志转模块(8),否则转模块(9);

(8)静态池中,相同尺度的流缓存节点数小于设定阈值,转模块(9),否则转 模块(10);

(9)流缓存节点放入静态池中,转模块(11);

(10)流缓存节点归还给操作系统,转模块(11);

(11)结束;

其中,初始化模块中所述的尺度包括三种,分别为:5k,1.5k,0.5k;申请 动态缓冲区模块中所述节点大小为静态中能满足需求最小的一种。

7.根据权利要求6所述的系统,其特征在于,模块(3)中TCP连接从静态的 缓存池中的空闲缓冲区链表中申请获得固定长度len的缓冲区块。

8.根据权利要求6‑7所述的系统,其特征在于,模块(4)中TCP连接从动态 的缓存池中的空闲缓冲区链表中申请获得固定长度len的缓冲区块。

9.根据权利要求6‑8所述的系统,其特征在于,模块(7、8、9、10)中根 据流缓冲节点的标志和静态缓冲池中的流缓存节点数,确定缓冲节点回收给 静态池还是操作系统。

10.根据权利要求6‑9所述系统,其特征在于,所述TCP连接关闭或淘汰时, 也采用节点回收的(7)~(10)模块来处理。

说明书
技术领域

本发明属于网络安全领域,具体涉及一种TCP连接缓存应用数据的内存申请 方法和系统。

随着网路的高速发展,网路给人们带来了便利,同时带来不少问题。如: 情,反政府舆论等都可以通过网络来传输。因此,对网络的监控的重要性也越 来越显著。当前网络大部分采用TCP/IP的四层模型,若要对应用层中数据内容 进行监控,必须对数据包的应用负载内容进行检查。在TCP/IP模型下,只要在 传输层对负载分析即可。基于TCP连接的应用,可以对每个TCP连接的数据进 行检查,确定其内容是否非法。

专利号CN200580031571.0(在网络元件处缓存内容和状态数据)公开了用于 在网络元件处缓存内容和状态数据的方法。在一个实施例中,在网络元件处截 取数据。从数据分组中确定指定向服务器应用对指定数据的请求的应用层消息。 确定包含在网络元件的缓存中的指定数据的第一部分。向服务器应用发送请求 未包含在缓存中的数据的第二部分的消息。接收包含第二部分但不包含第一部 分的第一响应。向客户端应用发送包含第一和第二部分的第二响应。在一个实 施例中,在网络元件处截取数据分组。从数据分组中确定指定会话或数据库连 接状态信息的应用层消息。在网络元件处缓存状态信息。

专利号CN200680012181.3(分布式数据管理系统及其动态订阅数据的方法) 公开了一种分布式数据管理系统,包括:应用模块(1)和数据管理器(2);所述 应用模块(1)中设有数据访问模块(11)和数据缓存器(12);所述数据管理器(2) 中设有订阅管理模块(21)、订阅列表模块(22)、通知模块(23)和数据存储器 (24);另外,所述应用模块(1)中还设有动态订阅管理模块(14)和数据记录模块 (15);所述数据管理器(2)中还设有数据发布模块(25),该数据发 布模块(25)与所述数据存储器(24)连接;所述动态订阅管理模块(14)分别与所 述数据记录模块(15)、所述数据缓存器(12)以及所述数据访问模块(11)连接, 与所述订阅管理模块(21)、所述通知模块(23)以及所述数据发布模块(25)通信 连接;本发明还包括一种动态订阅数据的方法。采用本发明,可有效减小网络 传输和系统处理的数据量,减轻网络负担,提高系统的工作性能。

上述tcp卸载系统中,软硬件不配置或只配置对少量的缓冲区用于缓存应用数 据。

上述技术的缺点是:在tcp卸载系统中,硬件不配置或只配置对少量的缓冲区 用于缓存应用数据。对于TCP连接的负载内容不做检查,有不支持为上层应用暂 时缓存部分数据,因此,不能很好的配合上层应用的内容分析,在上层应用较 忙时,也只能丢包。

本发明克服现有技术的不足,提供应用的缓存分配机制,能为每个连接静态 分配一定容量的内存,当内存不够时,通过动态分配从OS获得内存资源动静结 合,即节省资源又能尽快满足应用需求。

本发明提供了一种TCP连接缓存应用数据的内存申请方法,其包括如下步骤:

(1)初始化,根据应用规模为流缓存节点按多种尺度(如三种尺度,5k, 1.5k,0.5k)申请数个节点组成静态池,转步骤(2);

(2)流节点申请转步骤(3);流节点释放转步骤(7);

(3)从静态池中申请空闲节点,如果申请成功,则进入步骤(5),否则进入 步骤(4);

(4)从操作系统申请动态流缓存节点(大小为静态中能满足需求最小的一 种),如果申请成功,则进入步骤(5),否则进入步骤(6);

(5)返回节点头指针,转步骤(11);

(6)返回空指针,转步骤(11);

(7)流缓存节点有动态申请标志转步骤(8),否则转步骤(9);

(8)静态池中,相同尺度的流缓存节点数小于设定阈值(如:1k个),转步骤

(9),否则转步骤(10);

(9)流缓存节点放入静态池中,转步骤(11);

(10)流缓存节点归还给操作系统,转步骤(11);

(11)结束。

本发明提供的TCP连接缓存应用数据的内存申请方法,步骤(3)中TCP连 接从静态的缓存池中的空闲缓冲区链表中申请获得固定长度len的缓冲区块。

本发明提供的TCP连接缓存应用数据的内存申请方法,步骤(4)中TCP连 接从操作系统动态地申请获得固定长度len的缓冲区块。

本发明提供的TCP连接缓存应用数据的内存申请方法,步骤(7)~(10) 中根据被释放节点的标识和静态池中相同尺度的节点个数(与静态池中相同 尺度的预设阈值比较)确定节点由静态池回收还是操作系统回收。

本发明提供的TCP连接缓存应用数据的内存申请方法,所述TCP连接关闭或 淘汰时,也采用节点回收的(7)~(10)模块来处理。

本发明还提供了一种TCP连接缓存应用数据的内存申请的系统,其包括如下模 块:

(1)初始化模块,根据应用规模为流缓存节点按多种尺度申请数个节点组成 静态池;

(2)申请静态缓冲区块模块,流节点申请转模块(3);流节点释放转模块(7);

(3)从静态池中申请空闲节点,如果申请成功,则进入模块(5),否则进入 模块(4);

(4)申请动态缓冲区模块,从操作系统申请动态流缓存节点,如果申请成功, 则进入模块(5),否则进入模块(6);

(5)返回节点头指针,转模块(11);

(6)返回空指针,转模块(11);

(7)流缓存节点有动态申请标志转模块(8),否则转模块(9);

(8)静态池中,相同尺度的流缓存节点数小于设定阈值,转模块(9),否则转 模块(10);

(9)流缓存节点放入静态池中,转模块(11);

(10)流缓存节点归还给操作系统,转模块(11);

(11)结束;

其中,初始化模块中所述的尺度包括三种,分别为:5k,1.5k,0.5k;申请 动态缓冲区模块中所述节点大小为静态中能满足需求最小的一种。

本发明还提供的TCP连接缓存应用数据的内存申请系统,模块(2)中TCP连 接从静态的缓存池中的空闲缓冲区链表中申请获得固定长度len的缓冲区块。

本发明还提供的TCP连接缓存应用数据的内存申请系统,模块(4)中TCP连 接从动态的缓存池中的空闲缓冲区链表中申请获得固定长度len的缓冲区块。

本发明还提供的TCP连接缓存应用数据的内存释放系统,模块(7、8、9、 10)中根据流缓冲节点的标志(动态申请还是静态申请)和静态缓冲池中的 流缓存节点数,确定缓冲节点回收给静态池还是操作系统。

本发明提供的TCP连接缓存应用数据的内存申请系统,所述TCP连接关闭或 淘汰时,也采用节点回收的(7)~(10)模块来处理。

与现有技术相比,本发明的有益效果在于:很好的支持了上层应用暂存负 载进行内容分析,在上层应用cpu负载大时,也能做适当的缓冲,避免丢包;将 静态申请和动态申请结合,兼顾了申请速度和申请的效率,系统流缓存节点消 耗少时,直接从静态池中获取,实现快速申请。系统流缓存节点消耗大时,从 操作系统获取,有效地利用了操作系统资源。静态释放和动态释放结合,从静 态池中申请的流缓存节点,释放给静态池,从操作系统申请的动态节点,根据 系统消耗的静态节点情况,确定释放给静态池还是操作系统。可以划分成以下 几点:1.避免从操作系统频繁地申请和释放流缓存节点,一定数目的缓存直接 从优先申请的流缓存节点池中申请和释放;2.当静态池中的流缓存节点不够时, 可以从操作系统中申请,满足应用需求;3.流缓存节点在释放时,根据流缓存 节点的标志(从静态缓存获得还是操作系统动态获得)和系统对静态池中的空 闲流缓存节点的情况,来判断释放给静态池还是操作系统。

图1是本发明流程示意图。

参见图1的本发明流程示意图,本发明的方法是如下进行的:

1.为TCP连接从静态的缓存池中的空闲缓冲区链表中申请获得固定长度len(以 后说的len即为固定长度的len)的缓冲区块。

2.步骤1失败,则静态内存不够,则动态申请len的缓冲区,若申请失败,则说 明系统资源耗尽,返回空,动态申请成功,则把此缓冲区的信息节点连接到 动态链表中,在信息节点中记录动态标志,步骤1成功,则把缓冲区块连接 到连接到静态链表中,在信息节点中记录动态标志;

3.TCP连接关闭或淘汰时,根据信息节点的标志,把缓冲区返回给系统或放回静 态空闲链表。

本发明首先静态分配一片缓存作为缓存池,满足正常流量下TCP流的缓存, 在流量较大时,动态分配缓存,当流量恢复正常水平后,按一定的策略把动态 分配的缓存返回给系统。缓冲保存上传给应用的数据,根据需求上传给应用。 从而解决为tcp连接缓存应用层数据提供一种内存分配机制的问题。

以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施 例对本发明进行了详细的说明,所述领域的普通技术人员应当理解:依然可以对 本发明的具体实施方式进行修改或者同等替换,而未脱离本发明精神和范围的 任何修改或者等同替换,其均应涵盖在本发明的权利要求范围当中。

本文发布于:2024-09-24 04:22:42,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/85545.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议