CN104601484B - 一种tcp卸载引擎的发送单元 - Google Patents
一种tcp卸载引擎的发送单元 Download PDFInfo
- Publication number
- CN104601484B CN104601484B CN201510027950.8A CN201510027950A CN104601484B CN 104601484 B CN104601484 B CN 104601484B CN 201510027950 A CN201510027950 A CN 201510027950A CN 104601484 B CN104601484 B CN 104601484B
- Authority
- CN
- China
- Prior art keywords
- state
- data
- closed
- counter
- connection request
- 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.)
- Expired - Fee Related
Links
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了一种TCP卸载引擎的发送单元,总共设定了12个状态,发送单元发起连接并进行数据发送,当进入数据超时重传状态后,如果重传次数超过预设阈值,进行待机状态,在待机状态下,采用试探机制对通信信道的质量进行监测,即周期性发送探查报文,如果能收到接收端的确认报文,则恢复至数据预装载状态,如果探查次数超过预设阈值,则跳转回关闭状态。在关闭连接过程中,当进入连接关闭确认状态2后,增加一个连接关闭确认状态3来控制对接收端的关闭连接请求的等待时间,超出则跳转回关闭状态。本发明通过试探机制来解决通信阻塞问题,并在连接请求过程和连接关闭过程增加状态来使连接的建立和关闭更为可靠。
Description
技术领域
本发明属于TCP卸载引擎技术领域,更为具体地讲,涉及一种TCP卸载引擎的发送单元。
背景技术
当今的网络发展非常迅速,人们对网络的质量要求也越来越高。作为互联网中最基本的网络协议——TCP/IP协议的应用也非常广泛。但是随着对网络需求的增大和网络应用领域的扩大,应用操作系统来执行TCP/IP协议的方法已经显示出了它的不足。
就目前网络和设备的发展而言,CPU(Central Processing Unit,中央处理器)处理性能增加速度明显小于网络带宽增加速度。随着时间的推移,传统采用CPU处理带宽网络应用越来越捉襟见肘,功耗和成本大大增加,甚至根本无法支持宽带网络应用。而且互联网协议变得无处不在,从PC到非PC设备都需要采用TCP/IP连接,为了在这些设备上高效安全支持网络多媒体应用,需要支持分组分类和分组头压缩等特性,并支持IP安全协议等,这些新的需求大大也增加了互联网协议处理的复杂度。
传统的TCP协议都是用软件实现的,并且通常是由CPU来执行数据包的封装等相关操作的。在一些CPU性能较低的系统中,要实现TCP/IP协议的话就非常困难了。因为要实现TCP/IP协议,CPU必须具有很强的实时处理网络数据包的能力,也就是说能够快速地对网络数据包进行打包和拆包。相对来说,CPU就得具有较高的系统资源,而像8051这类MCU(MicroController Unit,微控制单元)却没有这么高的系统资源。所以当要求在这样的系统中实现网络的连接的话,就变的十分困难了。然而目前像8051之类的MCU在许多应用中还大量的存在;如果要在这样的系统上实现网络连接功能,就迫切需要一种解决这个矛盾的方案。
此外,当前TCP协议的运行依赖体积庞大的操作系统,一旦操作系统崩溃则整个通信进程将收到严重的影响,甚至出现大面积通信瘫痪。这对于关键应用场合是十分致命的如军事、航天、电力等领域。
在这种情况下,硬件协议处理器也就应运而生了(也叫做协议卸载引擎)。采用以硬件(如FPGA:Field Programmable Gate Array,现场可编程逻辑门阵列)为基础的TCP卸载引擎,可以有效提高通信效率和安全性。但是TCP卸载引擎目前虽然有许多理论分析,但是具体实现的难度较大。其中发送单元是TCP协议硬件化过程中最为关键、最为复杂的一个部分,目前仍然存在一些问题,例如数据的误重传引起的通信拥塞、连接关闭不完全所造成的资源浪费等。
发明内容
本发明的目的在于克服现有技术的不足,提供一种TCP卸载引擎的发送单元,根据标准TCP协议的实现原理,并考虑到实际通信中的阻塞、连接关闭不完全等情况,基于硬件来实现TCP协议的发送单元。
为实现上述发明目的,本发明TCP卸载引擎的发送单元包括发送处理模块、发送控制器和计时/计数模块,其中发送处理模块包括校验和产生模块、数据封装模块和FIFO缓存模块,计时/计数模块包括2MSL计时器、超时重传计时器、重传次数计数器、连接请求计数器、探查次数计数器、关闭连接请求计数器和状态计数器,其中:
发送处理模块在生成报文后,将数据就序信号syn_ok置为有效电平;
发送控制器监测到数据就序信号syn_ok为有效电平,从关闭状态跳转至连接等待状态,启动连接请求连接计数器对连接请求次数进行计数,控制发送处理模块向接收端发送握手信号SYN,启动超时重传计时器;如果发送控制器接收到接收端返回的有效的确认信号ACK,有效的确认信号是指在规定往返时间RTT内接收到接收端返回的确认信号,复位超时重传计时器,跳转至数据预装载状态,否则复位超过重传计时器,重新发送握手信号SYN;如果连接请求次数等于预设阈值,跳转回关闭状态;
在数据预装载状态,发送控制器向发送处理模块发送预加载指令,发送处理模块开始加载数据;判断结束信号是否有效,如果是,进入关闭连接请求状态,否则进入数据发送状态;
在数据发送状态,发送控制器向发送处理模块发送数据发送指令,发送处理模块向接收端发送数据;然后判断本地上层应用发送给发送单元的复位信号和接收端发送给发送单元的复位信号是否都为无效,如果有任意一个有效,跳转回关闭状态,否则继续发送数据;当该报文的数据包发送完毕,跳转至数据超时检测状态;
在数据超时检测状态,如果发送控制器接收到接收端返回的有效的确认信号ACK,跳转回数据预装载状态,否则跳转至数据超时重传状态;
在数据超时重传状态,发送控制器令发送处理模块重传报文,启动重传次数计数器对重传次数进行计数,如果在超时重传计时器溢出前收到接收端返回的确认信号ACK,复位重传次数计数器,跳转回数据预装载状态,否则再次重传,如果重传次数等于预设阈值,复位重传次数计数器,跳转至待机状态;
在待机状态,采用试探机制对通信信道的质量进行监控,试探机制的具体过程为:启动探查次数计数器对探查次数进行计数,发送处理模块每隔一段时间发送一个探查报文,如果接收到接收端返回的有效的确认信号ACK,探查结果置为有效,复位探查次数计数器,跳转回数据预装载状态,如果探查次数等于预设阈值,探查结果置为无效,跳转回关闭状态;
在关闭连接请求状态,启动关闭连接请求计数器对发送关闭连接请求的次数进行计数,发送控制器向发送处理模块发送指令,向接收端发送关闭连接请求,启动重传超时计时器,跳转至连接关闭确认状态1,在连接关闭确认状态1,如果发送控制器接收到接收端返回的有效的确认信号ACK,复位重传超时计时器和关闭连接请求计数器,跳转至连接关闭确认状态2,否则复位重传超时计时器,跳转回关闭连接请求状态再次发送关闭连接请求;如果发送关闭连接请求的次数大于预设阈值,跳转回关闭状态;
在连接关闭确认状态2,如果接收到接收端返回的关闭连接请求信号,向接收端发送确认报文ACK,然后跳转至2MSL状态,否则启动状态计数器对进入连接关闭确认状态3的次数进行计数,如果进入连接关闭确认状态3的次数大于预设阈值,跳转回关闭状态,否则跳转至连接关闭确认状态3;
在连接关闭确认状态3,启动状态机内部计时器进行计时,如果计时值小于RTT,保持在连接关闭确认状态3,否则复位内部计时器,跳转回连接关闭确认状态2;
在2MSL状态,启动2MSL计时器,如果2MSL计时器计时值小于2倍RTT,保持在2MSL状态,否则判断是否再次接收到接收端返回的关闭连接请求信号,如果是,跳转回连接关闭确认状态2,否则跳转回关闭状态。
本发明TCP卸载引擎的发送单元,总共设定了12个状态,发送单元发起连接并进行数据发送,当进入数据超时重传状态后,如果重传次数超过预设阈值,进行待机状态,在待机状态下,采用试探机制对通信信道的质量进行监测,即周期性发送探查报文,如果能收到接收端的确认报文,则恢复至数据预装载状态,如果探查次数超过预设阈值,则跳转回关闭状态。在关闭连接过程中,当进入连接关闭确认状态2后,增加一个连接关闭确认状态3来控制对接收端的关闭连接请求的等待时间,超出则跳转回关闭状态。
本发明具有以下有益效果:
(1)本发明采用了试探机制来解决通信阻塞问题,可以使通信的效率提高,避免出现“死锁”现象的产生。相比于传统的滑动窗口方式来减轻拥塞,具有效果明显,容易实现的特点。
(2)本发明在连接请求过程中增加了Setup_Wait连接等待状态,在关闭连接过程中增加了Fin_Wait3连接关闭确认状态3,能够全面的判断连接是否已建立或者关闭,从而使连接的建立和关闭更为可靠。
附图说明
图1是本发明TCP卸载引擎的发送单元的结构图;
图2是发送控制器的状态机示意图;
图3是试探机制的流程示意图。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
实施例
图1是本发明TCP卸载引擎的发送单元的结构图。如图1所示,本发明TCP卸载引擎的发送单元包括发送处理模块1、发送控制器2和计时/计数模块3。
发送处理模块1包括校验和产生模块11、数据封装模块12和FIFO缓存模块13,校验和产生模块11用于产生校验和,发送给数据封装模块12。本实施例中采用的校验算法为:首先将校验和字段设为0,然后将TCP数据包头按16比特分成多个单元,如果包头不是16比特的倍数,则对各个单元采用反码加法运算(即高位溢出位会加到低位,通常的补码运算是直接丢掉溢出的高位),将得到的和的反码填入到校验和字段。数据封装模块12用于对检验和、头部信息和发送数据进行封装,即将源端口号、目的端口号、发送序列号、应答序列号、控制标志位、窗口大小、紧急指针以及校验和添加到数据字段的头部信息形成完整的报文。FIFO缓存模块13用于对数据封装模块12生成的报文信息进行缓存。数据封装模块12生成报文后,发送处理模块1将数据就序信号syn_ok置为有效电平。
计时/计数模块3包括2MSL计时器31、超时重传计时器32、重传次数计数器33、连接请求计数器34、探查次数计数器35、关闭连接请求计数器36和状态计数器37。其中2MSL计时器31也就是TIME_WAIT定时器,2MSL指两倍的MSL,即最大报文段生存时间(MaximumSegment Lifetime)。超时重传计时器32用于对对数据包发送时间进行计时,如果超过阈值则发送超时,需要重传。重传次数计数器33用于对数据重传次数进行计数。连接请求计数器34用于对发起连接时的发送连接请求次数进行计数。探查次数计数器35用于对采用探查机制进行信道探查时发送探查报文的次数进行计数。关闭连接请求计数器36用于对关闭连接时发送的关闭连接请求次数进行计数。状态计数器37用于关闭连接过程中对进入Fin_wait3连接关闭确认状态3的次数进行计数。各个计时器和计数器的初始值均为0。
发送控制器2用于负责产生各种控制信号以驱动其他各个模块的正常工作。图2是发送控制器的状态机示意图。如图2所示,本发明发送控制器存在12个状态,分别为Closed(关闭状态)、Setup_Wait(连接等待状态)、Data_Load(数据预装载状态)、Data_Send(数据发送状态)、Timeover_Check(数据超时检查状态)、Data_Retransmit(数据超时重传状态)、Halt(待机状态)、Close_Req(关闭连接请求状态)、Fin_Wait1(连接关闭确认状态1)、Fin_Wait2(连接关闭确认状态2)、Fin_Wait3(连接关闭确认状态3)、Time_Wait(2MSL状态),各状态的具体迁移过程如下:
S201:发送单元的初始状态为Closed关闭状态,在此状态下,所有的计数器或计时器都是初始值。
S202:发送控制器2监测数据序信息syn_ok是否有效。本实施例中所有有效状态均为1,即高电平。如果有效,进入步骤S203,否则返回步骤S201,保持Closed关闭状态。
S203:发送单元跳转至Setup_Wait连接等待状态,上层应用通过发送控制器2向发送处理模块1发送指令,向接收端发送握手信号SYN,启动超时重传计时器32,进入步骤S204。
S204:发送控制器2判断是否接收到接收端返回的有效的确认信号ACK(Acknowledgement,确认字符),ACK有效的含义是指在规定时间内接收到接收端返回的ACK,规定时间即为RTT(往返时间),如果在超时重传计时器32溢出仍未接收到ACK或ACK超时都表示无效。如果有效表示收到了接收端的数据应答,进入步骤S207,否则进入步骤S205。
S205:发送控制器2向连接请求计数器34发送计数信号,一般是一个脉冲,连接请求计数器34将连接请求次数Req_cnt=Req_cnt+1,连接请求次数也就是发送握手信号SYN的次数。
S206:判断连接请求次数Req_cnt是否等于预设阈值,本实施例中为3,如果是,返回步骤S201;否则发送控制器2向超时重传计时器32发送复位信号,超时重传计时器32复位,返回步骤S203。
S207:发送控制器2向超时重传计时器32和连接请求计数器34发送复位信号,跳转至Data_Load数据预装载状态,发送控制器2向发送处理模块1发送预加载指令,发送处理模块1开始加载数据。
S208:判断结束信号fin是否有效,如果是,进入步骤S220,跳转至Close_Req关闭连接请求状态,否则进入步骤S209。
S209:跳转至Data_Send数据发送状态,发送控制器2向发送处理模块1发送数据发送指令,发送处理模块1向接收端发送数据。
S210:发送控制器2判断本地上层应用发送给发送单元的复位信号rst和接收端发送给发送单元的复位信号rst_rx是否都为无效,如果均无效,进入步骤S211,否则返回步骤S201。
S211:判断数据包剩余数量send_count是否为0,如果为0,表示本次需要发送的报文数据已经发送完毕,启动超时重传计时器32,进入步骤S212,否则返回步骤S207继续发送。
S212:跳转至Timeover_Check数据超时检查状态。
S213:发送控制器2判断是否接收到接收端返回的有效的确认信号ACK,如果是,说明接收端已经正确收到所发送的数据,发送控制器2向超时重传计时器32发送复位信号,向发送处理模块1发送指令将已发送的报文数据从FIFO缓存模块13删除,返回步骤S207,否则发送控制器2向超时重传计时器32发送复位信号,进入步骤S214。
S214:跳转至Data_Retransmit数据超时重传状态,发送控制器2向发送处理模块1发送数据重传指令,发送处理模块1进行数据重传,数据重传完毕后启动超时重传计时器32。
S215:发送控制器2判断是否在超时重传计时器32溢出前接收到接收端返回的确认信号ACK,如果是,发送控制器2向超时重传计时器32发送复位信号,向发送处理模块1发送指令将已发送的报文数据从FIFO缓存模块13删除,返回步骤S207,否则进入步骤S216。
S216:发送控制器2向重传次数计数器34发送计数信号,重传次数计数器34将重传次数Retry_cnt=Retry_cnt+1。
S217:判断重传次数Retry_cnt是否等于预设阈值,本实施例中为3,如果是,说明多次重传均未成功,通信信道的质量很差,发送控制器2向超时重传计时器32和重传次数计数器33发送复位信号,进入步骤S218,否则向超时重传计时器32发送复位信号,返回步骤S214再次重传。可见,在重传过程中,如果重传成功,将会转入下一次正常数据发送流程。
S218:跳转至Halt待机状态。在Halt待机状态下,采用试探机制对通信信道的质量进行监控。图3是试探机制的流程示意图。如图3所示,试探机制包括以下步骤:
S301:发送控制器2控制发送处理模块1每隔N个RTT发送一个detect探查报文,N为预设的常数,本实施例中设置N=3。启动重传超时计时器32。
S302:发送控制器2判断是否接收到接收端返回的有效的确认信号ACK,如果有效,发送控制器2向超时重传计时器32和重传次数计数器33发送复位信号,进入步骤S303,否则进入步骤S304。
S303:探查结果detect_result置为有效。
S304:发送控制器2向探查次数计数器35发送计数信号,探查次数计数器35将探查次数detect_cnt=detect_cnt+1,进入步骤S305。
S305:判断探查计数detect_cnt是否等于预设阈值3,如果是,发送控制器2向重传次数计数器33和探查次数计数器35发送复位信号,进入步骤S306,否则发送控制器2向超时重传计时器32发送复位信号,返回步骤S302。
S306:探查结果detect_result置为无效。
S219:发送控制器2判断探查结果detect_result是否为有效,如果是,说明当前通信信道已经缓和,可以发送数据,因此返回步骤S207,如果为无效,则说明当前信道拥塞已经非常严重,需要暂时关闭本方的连接以缓解信道的压力,此时返回步骤S201。
S220:跳转至Closed_Req关闭连接请求状态,发送控制器2向发送处理模块1发送指令,向接收端发送关闭连接请求,即带有fin标志的报文,启动超时重传计时器32。
S221:跳转至Fin_Wait1状态。
S222:发送控制器2判断是否接收到接收端返回的有效的确认信号ACK,如果是,进入步骤S225,否则进入步骤S223。
S223:发送控制器2向关闭连接请求计数器36发送计数信号,关闭连接请求计数器36将关闭连接请求次数Req_cnt_2=Req_cnt_2+1,进入步骤S224。
S224:判断关闭连接请求次数Req_cnt_2是否大于预设阈值3,如果是,发送控制器2向超时重传计时器32和关闭连接请求计数器36发送复位信号,返回步骤S201,否则发送控制器2向超时重传计时器32发送复位信号,返回步骤S220。
S225:跳转到Fin_Wait2状态。
S226:在Fin_Wati2状态下,本方的连接已关闭,这时发送控制器2判断是否接收到接收端返回的关闭连接请求信号,在本实施例中,每当收到关闭连接请求信号时,发送控制器将标志信号eof_req置为1。则直接判断标志信号eof_req置是否为1即可,如果是,向接收端发送确认报文ACK,进入步骤S231,否则进入步骤S227。
S227:发送控制器2向状态计数器37发送计数信号,关闭连接请求计数器37将进入Fin_Wait3状态次数Wait3_cnt=Wait3_cnt+1。
S228:判断进入Fin_Wait3状态次数Wait3_cnt是否大于预设阈值3,如果是,返回步骤S201,否则进入步骤S229。
S229:跳转到Fin_Wait3状态,采用状态机内部计时器进行计时。
S230:判断状态机内部计时器的计时值Wait_cnt是否小于RTT,如果是,保持在连接关闭确认状态3,否则复位内部计时器,跳转回Fin_Wait2。
设置Fin_Wait3状态的目的是为了控制对接收端的关闭连接请求信号的等待时间。
S231:跳转至Time_Wait状态,将标志信号强制置为0,启动2MSL定时器31进行计时。
S232:判断2MSL定时器31的计时值2MSL_cnt是否小于2*RTT,如果是,保持在Time_wait状态,否则进入步骤S233。
S233:发送控制器2判断是否再次接收到接收端返回的关闭连接请求信号,即判断标志信号标志信号eof_req是否为1,如果是,说明接收端因为没有收到确认信号而再次发送了关闭连接请求,发送控制器2向2MSL定时器31发送复位信号,返回步骤S225,否则返回步骤S201,跳转回Closed关闭状态。
如果本方至接收端的线路故障导致接收端无法收到确认报文ACK,但是本方可以正常接收到接收端的关闭连接请求信号,由于对于关闭连接请求信号,接收端是发起方,那么在多次发送得不到确认后,接收端会停止发送关闭连接请求,那么本方在步骤S233中就会跳转回Closed关闭状态了。
在实际应用中,如果本方和接收端之间的线路状况发生变化,使正常的往返时间RTT增大,那么还是采用之前的往返时间RTT为标准,会增加重传次数,浪费网络资源,因此本发明中,还可以对往返时间RTT进行自适应管理。发送单元中还包括重传时间计数器、平均重传时间寄存器,初始值均为0,在数据超时重传状态下,如果在超时重传计时器溢出前收到接收端返回的确认信号ACK,记重传时间计数器当前值为K,平均重传时间寄存器当前值为t0,根据超时重传计时器的计时值得到本次确认信号ACK返回时间t,计算平均重传时间tA=(Kt0+t)/(K+1),将平均重传时间tA更新至平均重传时间寄存器,重传时间计数器计数值加1;如果此时重传时间计数器计数值等于预设阈值,本实施例中为3,将平均重传时间寄存器中存储的平均重传时间作为新的往返时间RTT,将重传时间计数器和平均重传时间寄存器复位。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
Claims (2)
1.一种TCP卸载引擎的发送单元,包括发送处理模块、发送控制器和计时/计数模块,其中发送处理模块包括校验和产生模块、数据封装模块和FIFO缓存模块,计时/计数模块包括2MSL计时器、超时重传计时器、重传次数计数器,2MSL指两倍的MSL,MSL即最大报文段生存时间,其特征在于,所述计时/计数模块还包括连接请求计数器、探查次数计数器、关闭连接请求计数器和状态计数器,其中:
发送处理模块在生成报文后,将数据就序信号syn_ok置为有效电平;
发送控制器监测到数据就序信号syn_ok为有效电平,从关闭状态跳转至连接等待状态,启动连接请求连接计数器对连接请求次数进行计数,控制发送处理模块向接收端发送握手信号SYN,启动超时重传计时器;如果发送控制器接收到接收端返回的有效的确认信号ACK,有效的确认信号是指在规定往返时间RTT内接收到接收端返回的确认信号,复位超时重传计时器,跳转至数据预装载状态,否则复位超过重传计时器,重新发送握手信号SYN;如果连接请求次数等于预设阈值,跳转回关闭状态;
在数据预装载状态,发送控制器向发送处理模块发送预加载指令,发送处理模块开始加载数据;判断结束信号是否有效,如果是,进入关闭连接请求状态,否则进入数据发送状态;
在数据发送状态,发送控制器向发送处理模块发送数据发送指令,发送处理模块向接收端发送数据;然后判断本地上层应用发送给发送单元的复位信号和接收端发送给发送单元的复位信号是否都为无效,如果有任意一个有效,跳转回关闭状态,否则继续发送数据;当该报文的数据包发送完毕,跳转至数据超时检测状态;
在数据超时检测状态,如果发送控制器接收到接收端返回的有效的确认信号ACK,跳转回数据预装载状态,否则跳转至数据超时重传状态;
在数据超时重传状态,发送控制器令发送处理模块重传报文,启动重传次数计数器对重传次数进行计数,如果在超时重传计时器溢出前收到接收端返回的确认信号ACK,复位重传次数计数器,跳转回数据预装载状态,否则再次重传,如果重传次数等于预设阈值,复位重传次数计数器,跳转至待机状态;
在待机状态,采用试探机制对通信信道的质量进行监控,试探机制的具体过程为:启动探查次数计数器对探查次数进行计数,发送处理模块每隔N个RTT发送一个探查报文,N为预设的常数,如果接收到接收端返回的有效的确认信号ACK,探查结果置为有效,复位探查次数计数器,跳转回数据预装载状态,如果探查次数等于预设阈值,探查结果置为无效,跳转回关闭状态;
在关闭连接请求状态,启动关闭连接请求计数器对发送关闭连接请求的次数进行计数,发送控制器向发送处理模块发送指令,向接收端发送关闭连接请求,启动重传超时计时器,跳转至连接关闭确认状态1,在连接关闭确认状态1,如果发送控制器接收到接收端返回的有效的确认信号ACK,复位重传超时计时器和关闭连接请求计数器,跳转至连接关闭确认状态2,否则复位重传超时计时器,跳转回关闭连接请求状态再次发送关闭连接请求;如果发送关闭连接请求的次数大于预设阈值,跳转回关闭状态;
在连接关闭确认状态2,如果接收到接收端返回的关闭连接请求信号,向接收端发送确认报文ACK,然后跳转至2MSL状态,否则启动状态计数器对进入连接关闭确认状态3的次数进行计数,如果进入连接关闭确认状态3的次数大于预设阈值,跳转回关闭状态,否则跳转至连接关闭确认状态3;
在连接关闭确认状态3,启动状态机内部计时器进行计时,如果计时值小于RTT,保持在连接关闭确认状态3,否则复位内部计时器,跳转回连接关闭确认状态2;
在2MSL状态,启动2MSL计时器,如果2MSL计时器计时值小于2倍RTT,保持在2MSL状态,否则判断是否再次接收到接收端返回的关闭连接请求信号,如果是,跳转回连接关闭确认状态2,否则跳转回关闭状态。
2.根据权利要求1所述的发送单元,其特征在于,还包括重传时间计数器、平均重传时间寄存器,初始值均为0;在数据超时重传状态下,如果在超时重传计时器溢出前收到接收端返回的确认信号ACK,记重传时间计数器当前值为K,平均重传时间寄存器当前值为t0,根据超时重传计时器的计时值得到本次确认信号ACK返回时间t,计算平均重传时间tA=(Kt0+t)/(K+1),将平均重传时间tA更新至平均重传时间寄存器,重传时间计数器计数值加1;如果此时重传时间计数器计数值等于预设阈值,将平均重传时间寄存器中存储的平均重传时间作为新的往返时间RTT,将重传时间计数器和平均重传时间寄存器复位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510027950.8A CN104601484B (zh) | 2015-01-20 | 2015-01-20 | 一种tcp卸载引擎的发送单元 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510027950.8A CN104601484B (zh) | 2015-01-20 | 2015-01-20 | 一种tcp卸载引擎的发送单元 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104601484A CN104601484A (zh) | 2015-05-06 |
CN104601484B true CN104601484B (zh) | 2017-10-31 |
Family
ID=53127001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510027950.8A Expired - Fee Related CN104601484B (zh) | 2015-01-20 | 2015-01-20 | 一种tcp卸载引擎的发送单元 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104601484B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105516191B (zh) * | 2016-01-13 | 2019-08-20 | 成都市智讯联创科技有限责任公司 | 基于fpga实现的万兆网tcp协议卸载引擎toe的系统 |
CN109032987A (zh) * | 2018-07-05 | 2018-12-18 | 山东超越数控电子股份有限公司 | 一种基于fpga使国产处理器加速的计算机系统及方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7346701B2 (en) * | 2002-08-30 | 2008-03-18 | Broadcom Corporation | System and method for TCP offload |
EP1552408A4 (en) * | 2002-08-30 | 2010-10-06 | Broadcom Corp | SYSTEM AND METHOD FOR DELAYING TCP / IP INDEPENDENTLY OF A BANDWIDTH DELAY PRODUCT |
US7324540B2 (en) * | 2002-12-31 | 2008-01-29 | Intel Corporation | Network protocol off-load engines |
US7373500B2 (en) * | 2003-04-15 | 2008-05-13 | Sun Microsystems, Inc. | Secure network processing |
US20040249957A1 (en) * | 2003-05-12 | 2004-12-09 | Pete Ekis | Method for interface of TCP offload engines to operating systems |
CN100484136C (zh) * | 2003-10-27 | 2009-04-29 | 英特尔公司 | 网络协议引擎 |
US6996070B2 (en) * | 2003-12-05 | 2006-02-07 | Alacritech, Inc. | TCP/IP offload device with reduced sequential processing |
KR100648837B1 (ko) * | 2004-12-08 | 2006-11-24 | 한국전자통신연구원 | Tcp 프로토콜의 재전송 및 지연확인 타이머 관리 장치및 방법 |
CN103546424A (zh) * | 2012-07-10 | 2014-01-29 | 华为技术有限公司 | 一种tcp数据传输方法、tcp卸载引擎及系统 |
-
2015
- 2015-01-20 CN CN201510027950.8A patent/CN104601484B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN104601484A (zh) | 2015-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Paxson et al. | Known TCP implementation problems | |
EP1841118B1 (en) | Communication terminal and retransmission control method | |
US7940665B2 (en) | Transparent optimization for transmission control protocol flow control | |
AU2017385021B2 (en) | Packet loss tolerant transmission control protocol congestion control | |
WO2016192478A1 (zh) | 数据传输方法及装置 | |
JP5625748B2 (ja) | 通信装置、通信システム、プログラム及び通信方法 | |
WO2019001042A1 (zh) | 数据传输方法及相关设备 | |
CN104243097A (zh) | 基于卫星网络的数据传输方法及系统 | |
US20150029863A1 (en) | Network Congestion Control with Awareness of Random Packet Losses | |
CN102780593B (zh) | 基于bfd协议检测链路的方法、装置和网络处理器 | |
CN111711680A (zh) | 基于udp协议的文件断点续传方法及装置 | |
Dunaytsev et al. | Modeling TCP SACK performance over wireless channels with completely reliable ARQ/FEC | |
CN104601484B (zh) | 一种tcp卸载引擎的发送单元 | |
CN103929286A (zh) | 数据传输控制方法和装置 | |
KR20050078096A (ko) | 데이터 프레임 재전송 방법 및 상기 방법을 사용하는네트워크 장치 | |
US10728131B2 (en) | Terminal and communication method thereof | |
CN102546531B (zh) | 数据流量的控制方法及用户终端 | |
CN102201901A (zh) | 数据重传方法及装置 | |
CN104580171B (zh) | Tcp协议的传输方法、装置和系统 | |
CN108449280B (zh) | 一种避免tcp报文乒乓的方法及装置 | |
Jiong et al. | TP-satellite: A new transport protocol for satellite IP networks | |
Liu et al. | On the performance of additive increase multiplicative decrease (AIMD) protocols in hybrid space-terrestrial networks | |
Murray et al. | Solving ack inefficiencies in 802.11 networks | |
Li et al. | Improving TCP performance for asymmetric networks | |
Naito et al. | New analytical model for TCP in wireless environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171031 Termination date: 20210120 |