一种基于FPGA的TCP协议高效数据确认的通信传输方法

文档序号:26357197发布日期:2021-08-20 20:32阅读:153来源:国知局
一种基于FPGA的TCP协议高效数据确认的通信传输方法

本发明涉及计算机通信领域,尤其涉及一种基于fpga的tcp协议高效数据确认的通信传输方法。



背景技术:

tcp协议是一种基于字节流的、可靠的、面向连接的传输层通信协议。其基于连接的数据传输属性使得通信过程中的每一个步骤都需要通信双方的相互确认才能顺利进行。然而,在实际通信过程中,联系通信双方的信道网络可能会具有多种实际情况,在并非特别差的网络通信中,大量繁复的确认指令既占用了网络带宽,又增加了通信终端的调度负载,会对通信的性能造成非常大的影响。

现有基于fpga的协议栈中的tcp通信协议的数据确认操作是以单个数据包接收完成为触发返还确认帧而实现的。这种确认模式在通信网络质量较佳、数据流量较大的通信过程中会产生大量冗余的数据确认帧,既降低了链路的通信效率,又增加了协议栈的帧处理结构的复杂度和帧处理能力负荷量,而且也不利于协议栈处理具有大量并发连接的tcp数据通信。



技术实现要素:

有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是针对现有技术中,tcp数据传输过程的数据确认机制效率过低问题,提供基于tcp的协议的高效数据确认的通信传输方法。本发明提供了一种基于fpga的tcp协议高效数据确认的通信传输方法,针对tcp网络数据的传输特性,采用了对数据确认帧的三种发送判别方案,有效降低了tcp协议栈对大流量、高并发tcp数据流的处理难度并提升了tcp网络数据的传输效率。

为实现上述目的,本发明提供了一种基于fpga的tcp协议高效数据确认的通信传输方法,包括以下步骤:

本地tcp协议栈接收到对端发送的tcp数据帧;

计算tcp数据确认帧发送时间的最佳延时触发阈值和最佳接收缓冲区数据读取量触发阈值;

对tcp数据确认帧进行发送判决;

产生tcp数据确认帧并发送。

进一步地,本地tcp协议栈接收到对端发送的tcp数据帧时,根据tcp数据帧的内容或者网络缺省状况,以及当前tcp协议栈的数据处理能力状态,计算出tcp数据确认帧发送时间的最佳延时触发阈值和最佳接收缓冲区数据读取量触发阈值。

进一步地,计算出tcp数据确认帧发送时间的最佳延时触发阈值和最佳接收缓冲区数据读取量触发阈值,具体包括以下步骤:

a)根据接收的tcp数据帧的传输层协议中的时间戳选项字段,计算出当前传输连接的链路往返时间(rtt),如果没有时间戳选项字段,根据网络缺省状况,将当前传输连接的链路往返时间设置为特定值;对当前协议栈的接收缓冲区的数据读取进行计数监控,获取接收缓冲区的数据读取平均速率;

b)根据得到的链路往返时间(rtt)以及当前网络传输的理论带宽(rb)和帧间距(ifg)、的当前tcp协议栈上次通告的窗口大小(wnd)和当前网络中最大帧长(mss),由下述公式

计算出最佳延时触发阈值(取非负的最小值),其中“[x]”代表取整函数;

c)根据获取的缓冲区的数据读取平均速率(v)和(b)中的最佳延时触发阈值(t),由下述公式

b=v×t

计算出最佳接收缓冲区数据读取量触发阈值。

进一步地,对tcp数据确认帧进行发送判决,产生数据确认帧并发送,具体包括以下步骤:

根据当前数据帧的并发链接号生成参量的哈希值查询并发连接管理表,如果产生并发号冲突,则立即产生数据确认帧并发送。

进一步地,对tcp数据确认帧进行发送判决,产生数据确认帧并发送,具体包括以下步骤:记录接收的一系列数据帧的首帧接收时间,对其采用定时器计时,当计时值超过计算所得最佳延时触发阈值后,产生数据确认帧并发送。

进一步地,对tcp数据确认帧进行发送判决,产生数据确认帧并发送,具体包括以下步骤:对数据接收缓冲区进行数据读取量监测,每当接收缓冲区的数据被取走计算所得最佳接收缓冲区数据读取量触发阈值后,产生数据确认帧并发送。

进一步地,tcp协议栈接收到对端发送的tcp数据帧时,tcp协议栈根据内部计时器,记录所接收tcp数据帧的接收时间,并存入计时器寄存器,其后由计时判别模块对上述存入计时器寄存器的接收时间与计算所得最佳延时触发阈值之和与当前时间进行判决,如果当前时间大于上述存入计时器寄存器的接收时间与计算所得最佳延时触发阈值之和,则产生数据确认帧并发送。

进一步地,tcp协议栈在将接收的tcp数据帧接收时间存入计时器寄存器后,在下一次产生数据确认帧之前,不对存入的接收数据帧的接收时间进行更改;在下一次产生数据确认帧之后,存入tcp协议栈接收到对端发送的数据帧的接收时间。

进一步地,tcp协议栈由时钟触发,比较当前接数据收缓冲区读取量与计算所得最佳接收缓冲区数据读取量触发阈值,如果当前接数据收缓冲区读取量超过计算所得最佳接收缓冲区数据读取量触发阈值,或者接收缓冲区数据被读空的时刻,则产生数据确认帧并发送。

进一步地,对tcp数据确认帧进行发送判决的优先级为:并发连接序号冲突触发为最高优先级,最佳延时阈值触发次之,最佳接收缓冲区数据读取量阈值触发优先级最低,针对同一序列数据的确认,较高优先级判决触发之后所有判决复位。

技术效果

本发明提出了一种基于fpga的tcp协议高效数据确认的通信传输方法,采用了数据帧的并发链接序号查询冲突检测、由对网络链路延迟的预估计算得到的最佳延时触发阈值及最佳接收缓冲区数据读取量触发阈值为数据确认帧产生的判决条件的设计,在tcp协议的通信过程中仅采用必要数量的数据确认帧实现高效的数据确认,克服了传统tcp协议的通信过程中产生的大量冗余的数据确认信息后,对通信链路和通信协议栈造成效率负面影响的弊端。

以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。

附图说明

图1是传统tcp协议栈数据传输交互示意图;

图2是本发明的一个较佳实施例的tcp协议栈高效数据确认的系统结构图;

图3是本发明的一个较佳实施例的tcp协议栈数据传输交互示意图;

图4是本发明的一个较佳实施例的tcp协议栈高效数据确认的系统流程图。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

以下描述中,为了说明而不是为了限定,提出了诸如特定内部程序、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。

如图1所示,是传统tcp协议栈数据传输交互示意图。在数据传输开始之前,通信双方已经进行了tcp建链过程。当发送方开始发送数据后,接收方每收到一帧数据,经处理后发送数据的确认帧。这种确认模式在通信网络质量较佳、数据流量较大的通信过程中会产生大量冗余的数据确认帧,既降低了链路的通信效率,又增加了协议栈的帧处理结构的复杂度和帧处理能力负荷量,是tcp协议栈在进行高速率、大并发量的tcp数据通信过程中的一个巨大挑战。

本发明实施例提供了一种基于fpga的tcp协议高效数据确认的通信传输方法,针对tcp网络数据的传输特性,采用了对数据确认帧的三种发送判别方案,有效降低了tcp协议栈对大流量、高并发tcp数据流的处理难度并提升了tcp网络数据的传输效率。

为实现上述目的,本发明提供了一种基于fpga的tcp协议高效数据确认的通信传输方法,包括以下步骤:

步骤100,本地tcp协议栈接收到对端发送的tcp数据帧;

步骤200,计算tcp数据确认帧发送时间的最佳延时触发阈值和最佳接收缓冲区数据读取量触发阈值;其中,本地tcp协议栈接收到对端发送的tcp数据帧时,根据tcp数据帧的内容或者网络缺省状况,以及当前tcp协议栈的数据处理能力状态,计算出tcp数据确认帧发送时间的最佳延时触发阈值和最佳接收缓冲区数据读取量触发阈值;

步骤300,对tcp数据确认帧进行发送判决;

步骤400,产生tcp数据确认帧并发送。

其中,步骤200,计算出tcp数据确认帧发送时间的最佳延时触发阈值和最佳接收缓冲区数据读取量触发阈值,具体包括以下步骤:

步骤a)、根据接收的tcp数据帧的传输层协议中的时间戳选项字段,计算出当前传输连接的链路往返时间(rtt),如果没有时间戳选项字段,根据网络缺省状况,将当前传输连接的链路往返时间设置为特定值;对当前协议栈的接收缓冲区的数据读取进行计数监控,获取接收缓冲区的数据读取平均速率;

步骤b)、根据得到的链路往返时间(rtt)以及当前网络传输的理论带宽(rb)和帧间距(ifg)、的当前tcp协议栈上次通告的窗口大小(wnd)和当前网络中最大帧长(mss),由下述公式

计算出最佳延时触发阈值(取非负的最小值),其中“[x]”代表取整函数;

步骤c)、根据获取的缓冲区的数据读取平均速率(v)和(b)中的最佳延时触发阈值(t),由下述公式

b=v×t

计算出最佳接收缓冲区数据读取量触发阈值。

步骤300对tcp数据确认帧进行发送判决,产生数据确认帧并发送,采用以下三种途径对tcp数据确认帧进行发送判决:

一、根据当前数据帧的并发链接号生成参量的哈希值查询并发连接管理表,如果产生并发号冲突,则立即产生数据确认帧并发送。

二、记录接收的一系列数据帧的首帧接收时间,对其采用定时器计时,当计时值超过计算所得最佳延时触发阈值后,产生数据确认帧并发送。具体的,tcp协议栈接收到对端发送的tcp数据帧时,tcp协议栈根据内部计时器,记录所接收tcp数据帧的接收时间,并存入计时器寄存器,其后由计时判别模块对上述存入计时器寄存器的接收时间与计算所得最佳延时触发阈值之和与当前时间进行判决,如果当前时间大于上述存入计时器寄存器的接收时间与计算所得最佳延时触发阈值之和,则产生数据确认帧并发送。

三、对数据接收缓冲区进行数据读取量监测,每当接收缓冲区的数据被取走计算所得最佳接收缓冲区数据读取量触发阈值后,产生数据确认帧并发送。具体的,tcp协议栈由时钟触发,比较当前接数据收缓冲区读取量与计算所得最佳接收缓冲区数据读取量触发阈值,如果当前接数据收缓冲区读取量超过计算所得最佳接收缓冲区数据读取量触发阈值,或者接收缓冲区数据被读空的时刻,则产生数据确认帧并发送。

对上述tcp数据确认帧进行发送判决的三种途径的优先级为:并发连接序号冲突触发为最高优先级,最佳延时阈值触发次之,最佳接收缓冲区数据读取量阈值触发优先级最低,针对同一序列数据的确认,较高优先级判决触发之后所有判决复位。针对后两种判决,轮询连接管理表中的所有连接,若符合判决条件,即产生确认帧并发送。

如图2所示,是本发明的tcp协议栈高效数据确认的系统结构框图。本地tcp协议栈接收到对端发送的tcp数据帧时,在将其数据存入接收缓冲区的同时,记录下系列帧的首帧接收时间并分析该帧的协议字段。根据其并发连接号计算哈希值,并查找并发连接管理表;根据tcp协议的选项字段获取当前链路的往返时间,或根据网络缺省情况设置固定的往返时间参数值。此外,根据对接收缓冲区流量的检测,获取接收缓冲区的平均读取速率及累计读取量。其后根据上述的参量值及其二次计算得出的阈值进行三种确认帧发送判决,针对同一序列数据的确认,较高优先级判决触发之后所有判决复位。

tcp协议栈在将接收的tcp数据帧接收时间存入计时器寄存器后,在下一次产生数据确认帧之前,不对存入的接收数据帧的接收时间进行更改;在下一次产生数据确认帧之后,存入tcp协议栈接收到对端发送的数据帧的接收时间。

图3所示,是本发明的tcp协议栈数据传输交互示意图。经发送判别后,在某个时机产生的数据确认帧经通信网络路由转发至数据发送方接收到时,使其恰好是其对于一次系列帧的发送结束的时刻。确认帧携带有相应的接收窗口大小等信息,可以是数据发送方重新启动数据发送进程,从而在仅保留必要确认帧的前提下,使数据流量保持在接近于线速的水平。

图4所示,是本发明的tcp协议栈高效数据确认的系统流程图。当tcp协议栈接收到tcp数据帧时,根据所述的三种判别方式对数据进行处理。首先是由数据帧头相应协议字段的哈希值查询并发连接管理表,如果存在并发连接号冲突,则产生数据确认帧并发送。在数据帧接收时,由内部时钟信息记录获取一系列数据帧的首帧接收时刻,并由tcp选项字段或网络缺省配置获取当前链接的网络链路往返时间,之后根据该往返时间以及其他网络和协议栈的特性参数计算出当前链接的最佳延时触发阈值并存入寄存器中,由轮询机制判断经历时间超出上述计算得出的阈值时便产生数据确认帧并发送。同时,对于当前链接的数据接收缓冲区读取速率做实时监测,并根据上述得到的当前链接的网络链路往返时间计算出最佳接收缓冲区数据读取量触发阈值并存入寄存器,由轮询机制判断当前链接的数据接收缓冲区读取量超出上述计算得出的阈值时便产生数据确认帧并发送。

本发明实施例的一种基于fpga的tcp协议高效数据确认的通信传输方法,采用了数据帧的并发链接序号查询冲突检测、由对网络链路延迟的预估计算得到的最佳延时触发阈值及最佳接收缓冲区数据读取量触发阈值为数据确认帧产生的判决条件的设计,在tcp协议的通信过程中仅采用必要数量的数据确认帧实现高效的数据确认,克服了传统tcp协议的通信过程中产生的大量冗余的数据确认信息后,对通信链路和通信协议栈造成效率负面影响的弊端。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1