首页> 中国专利> 用随机存储器实现的TCP连接定时器及其实现方法

用随机存储器实现的TCP连接定时器及其实现方法

摘要

本发明涉及用RAM实现的TCP/IP卸载引擎中的TCP连接定时器及其实现方法,其中将双端口RAM中的存储单元映射为TCP连接定时器;并由初始化模块将需要启动的定时器置初始值,其余则清零;在时钟信号的上升沿,由递减操作模块从RAM的起始地址开始读取存储单元的值;如果该值为0,则继续读取下一存储单元的值;如果该值不为0,则将其减1后再写入原存储单元,如果这个不为0的值为1,则同时输出一个用于控制中断控制器的置位信号,然后再读取下一存储单元的值;在同一时钟信号周期内,对RAM中的每一个存储单元完成上述操作,即可实现相应的定时器功能。利用本发明的方法,可使硬件TOE可支持的TCP连接数大大增加。

著录项

  • 公开/公告号CN1494293A

    专利类型发明专利

  • 公开/公告日2004-05-05

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN02145698.4

  • 发明设计人 李敏秋;孙文华;

    申请日2002-10-29

  • 分类号H04L29/06;H04L12/56;H04L12/24;H04L12/02;

  • 代理机构

  • 代理人

  • 地址 518057 广东省深圳市科技园科发路华为用户服务中心大厦知识产权部

  • 入库时间 2023-12-17 15:18:03

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-10-23

    未缴年费专利权终止 IPC(主分类):H04L29/06 授权公告日:20060426 终止日期:20171029 申请日:20021029

    专利权的终止

  • 2017-10-24

    专利权的转移 IPC(主分类):H04L29/06 登记生效日:20170928 变更前: 变更后: 申请日:20021029

    专利申请权、专利权的转移

  • 2006-04-26

    授权

    授权

  • 2004-09-29

    实质审查的生效

    实质审查的生效

  • 2004-05-05

    公开

    公开

说明书

技术领域

本发明涉及网络技术的TCP/IP(传输控制协议/网际协议)卸载引擎(TOE,即TCP Offload Engine)中的TCP连接定时器的实现和管理。

背景技术

随着网络带宽的日益增加,特别是在数据存储网络中,目前传统的服务器的网络接口正朝着千兆以太网以及10Gbps的方向发展,这对于处理器系统来讲是一个强大的挑战,在这种情况下出现了TCP/IP加速技术,即卸载引擎,TCP Offload Engine,简称TOE。也就是将TCP/IP协议栈的功能从传统的处理器移到智能网卡的I/O处理器或ASIC(专用集成电路)进行处理,以减轻HOST(主机)处理器的负担。

目前各厂家在TOE实现上存在两种倾向,一种是基于软件实现,在网络接口卡上加入I/O处理器完成TCP/IP协议栈的处理;而另一种是基于硬件ASIC实现TCP/IP协议栈的卸载。

在TCP协议中,每个TCP连接要使用7个定时器,它们分别是连接建立定时器、重传定时器、延迟确认定时器、坚持定时器、保活定时器、FIN_WAIT_2定时器以及TIME_WAIT定时器。关于这几个定时器的功能和作用,可参见TCP/IP协议中相关描述。其中有些定时器彼此间是互斥的,包括连接建立定时器和保活定时器,FIN_WAIT_2定时器和TIME_WAIT定时器,因此这两组定时器可以复用。

由于这些定时器的精度要求不是太高,在传统的TCP实现中这些定时器都是采用软件方式实现的。而在TOE硬件中由于TCP连接是动态地和并发地建立的,而且一般都要支持几K~几十K的TCP连接,如果采用传统的硬件定时器方法则需要耗费较大的资源,并且可扩展性不强。

可见,在目前的TCP卸载引擎的硬件实现方案中,TCP定时器采用传统的硬件定时器实现,一旦TCP卸载芯片完成,它所支持的最大并发TCP连接数就不可改变,而且耗费的资源较大。

发明内容

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种用随机存储器实现的TCP连接定时器及其实现方法,使硬件TOE支持可配置的最大连接数,一方面节省资源,另一方面增强定时器的可扩展性和可管理性。

本发明解决其技术问题所采用的技术方案是:提供一种用随机存储器实现TCP连接定时器的方法,其特征在于,采用双端口随机存储器,按以下步骤实现定时器功能:

(1)将所述双端口随机存储器中与所需TCP连接定时器对应数目的存储单元关系映射为所需的TCP连接定时器;

(2)对所述双端口随机存储器中的各个存储单元进行初始化,将需要启动的TCP连接定时器所对应的存储单元置初始值,并将其余存储单元清零;

(3)在每一个时钟信号到来时,从所述双端口随机存储器的起始地址开始读取对应存储单元的值;

(4)如果所读取的存储单元的值为0,则继续读取下一存储单元的值,

如果所读取的存储单元的值为1,则同时输出一个用于控制中断控制器的置位信号,然后再读取下一存储单元的值,

如果所读取的存储单元的值不为0且不为1,则将其减1后再写入原存储单元,然后再读取下一存储单元的值;

(5)在一个时钟信号周期内,重复所述第(4)步,直至对所述双端口随机存储器中的每一个存储单元完成第(4)步中的操作。

在同一时钟信号周期内,对所述双端口随机存储器中的每一个存储单元完成上述第(4)步操作,即可实现相应的定时器功能。

本发明还提供一种用随机存储器实现的TCP连接定时器,其特征在于,包括:

一个双端口随机存储器,其中包含多个存储单元,每一个存储单元能够映射为一个TCP连接定时器;

一个与所述双端口随机存储器的一端连接,可将所述双端口随机存储器中需要启动的定时器所对应的存储单元置初始值,并将其余存储单元清零的初始化模块;

一个与所述双端口随机存储器的另一端连接的递减操作模块,所述递减操作模块从所述双端口随机存储器的起始地址依次各个存储单元的值,如果所读取的存储单元的值为0,则继续读取下一存储单元的值,如果所读取的存储单元的值为1,则同时输出一个用于控制中断控制器的置位信号,然后再读取下一存储单元的值,如果所读取的存储单元的值不为0且不为1,则将其减1后再写入原存储单元,然后再读取下一存储单元的值。

在本发明用随机存储器实现的TCP连接定时器及其实现方法中,如果每一个时钟信号的周期为200ms,则对应的最大TCP连接数可达到500000个;可见,本发明使硬件TOE可支持的TCP连接数大大增加,一方面节省了资源,另一方面也增强了定时器的可扩展性和可管理性。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明定时器的原理框图;

图2是本发明定时器的工作流程图。

具体实施方式

本发明定时器的原理如图1所示,从图中可以看出,本发明采用一个双端口随机存储器(DPRAM),其中包含多个存储单元,一个存储单元可映射为TCP连接的一个定时器。DPRAM的右边是一个初始化模块,左边是一个递减操作模块。DPRAM与这两个模块之间的信号包括地址信号、时钟信号和RAM数据信号。

其中,初始化模块与一个TCP状态机主模块连接,可根据TCP状态机主模块输入的置初始值或清零信号,对DPRAM的存储单元进行相应的置初始值或清零操作。

递减操作模块在时钟信号的控制下,可读取DPRAM中各存储单元的值,并可对各存储单元的值进行改写。递减操作模块的置位信号输出端与中断控制器连接,中断控制器的输出端又连接到所述TCP状态机主模块。

在TCP连接中,各个定时器的取值均不一样,一般的设置如表1所示:

            表1  TCP连接定时器参数设置一览表

定时器时间设置    1连接建立定时器75秒    2重传定时器1~64秒    3延迟确认定时器200毫秒    4坚持定时器5~60秒    5保活定时器7200秒    6 FIN_WAIT_2定时器600秒(第一次);75秒(第二次)    7 TIME_WAIT定时器30秒

本发明的前提是将DPRAM中的各个存储单元映射为TCP连接的多个定时器,使每个定时器对应为DPRAM中的一个16位存储单元,也就是对应存储单元中的16位二进制数。本发明采用的定时器时钟基准为200ms,也就是说,每一个时钟信号的周期为200ms。以连接建立定时器为例,因其设置为75s,且每200ms进行一次操作,则对应的数据应该等于75*1000/200=375,相当于16位二进制数0000000101110111,其它定时器依此类推。

从表1中可以看出,延迟确认定时器为200ms,因此不宜采用本发明的方案实现。其余的6个定时器中,连接建立定时器与保活定时器可以复用,同时FIN_WAIT_2定时器与TIME_WAIT定时器可以复用,因此每个TCP连接定时器只需要对应DPRAM中四个地址连续的存储单元,例如:存储单元1对应连接建立定时器(或保活定时器)、存储单元2对应重传定时器、存储单元3对应坚持定时器、存储单元4对应FIN_WAIT_2定时器(或TIME_WAIT定时器),依此重复类推。

在上述基础上,本发明定时器可按图2所示流程工作,下面进行详细说明。

步骤101:由初始化模块对DPRAM中的各个存储单元进行初始化,将需要启动的定时器所对应的存储单元置初始值,其余存储单元清零。假设需要启动连接建立定时器,则将它所对应的存储单元1置初始值,也就是将二进制数0000000101110111写入其中。

步骤102:判断是否有一个时钟上升沿信号输入递减操作模块,如果是则进入步骤103。

步骤103:从起始地址开始读取DPRAM存储单元的值,也就是从存储单元1开始。

步骤104:判断所读取的存储单元的值是否为0,是则表示该定时器未启动工作,此时不需要执行步骤105-107,直接跳到步骤108;否则表示该定时器处于启动工作状态,需执行步骤105;

步骤105:再判断这个不为0的值是否为1,是则执行步骤106,否则执行步骤107;

步骤106:此时所读取的存储单元的值不为0并且也不为1,将由递减操作模块将该值减1后再写入原存储单元,即进行读-减1-写操作。这样,每收到一个时钟信号,该存储单元的数据都会减1。本步骤之后直接进入步骤108。

步骤107:此时所读取的存储单元的值为1,表示存储单元的数据经过多次递减后,从初始值减到了0000000000000001,已完成了一个计数周期,此时递减操作模块会向中断控制器发出一个置位信号,将中断控制器的相应位置位,然后由中断控制器通知TCP状态机主模块,进行相应处理,例如是否要再次将该存储单元置初始值,重新开始一个计数周期。

步骤108:当所读取的存储单元的值为0时,或者不为0但已执行完步骤105至106或107时,本步骤判断是否已读取完该DPRAM中的所有存储单元的值,也就是对存储单元1到存储单元N都已执行了步骤104-107中的动作,是则回到步骤102,等待新的时钟上升沿信号到来,开始新一轮读-减1-写操作;否则执行步骤109。

步骤109、此时表示至少还有一个存储单元未执行步骤104-107中的动作,需要读取下一存储单元的值,然后回到步骤104,重复上述动作,一直到对存储单元1到存储单元N都已执行了步骤104-107中的动作为止。

上面介绍了本发明定时器的工作流程,假设对DPRAM进行一次读-减1-写操作时间为100ns,则在一个时钟周期内,即200ms的周期内可以对2000000(200*1000000/100=2000000)个存储单元执行步骤103-109的动作,也就是说,可遍历的存储单元数为2000000;如前所述,因每一个TCP连接定时器占用4个存储单元,则对应的TCP连接数为500000(2000000/4=500000)个;对应最大可管理的DPRAM为2M*16bits,并且该值可以根据TOE支持的最大连接数而改变。

可见,本发明使硬件TOE可支持的TCP连接数大大增加,一方面节省了资源,另一方面也增强了定时器的可扩展性和可管理性。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号