CN110753035B - 一种基于tcp协议的fpga超低延迟通信传输方法 - Google Patents
一种基于tcp协议的fpga超低延迟通信传输方法 Download PDFInfo
- Publication number
- CN110753035B CN110753035B CN201910925458.0A CN201910925458A CN110753035B CN 110753035 B CN110753035 B CN 110753035B CN 201910925458 A CN201910925458 A CN 201910925458A CN 110753035 B CN110753035 B CN 110753035B
- Authority
- CN
- China
- Prior art keywords
- tcp
- frame
- link establishment
- client
- response frame
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
Abstract
本发明公开提供了一种基于TCP协议的FPGA超低延迟通信传输方法,包括以下步骤:TCP客户端接收新的数据发送请求后,向TCP服务器端发送建链帧、应答帧以及数据帧,TCP客户端发送建链帧和应答帧后,TCP客户端的TCP有限状态机更新状态;TCP服务器接收到TCP客户端发送过来的建链帧后,产生建链应答帧。本发明的一种基于FPGA的超低延迟TCP协议栈建链方法通过对协议栈三次握手方式的修改,将TCP客户端的数据发送延迟从原本的至少一个RTT减少到远小于1个RTT,能够达到与传统UDP通信几乎相同的延迟特性,在提供可靠通信的情况下对建链过程产生的延迟进行优化。
Description
技术领域
本发明涉及计算机通信领域,尤其涉及一种基于FPGA的超低延迟TCP协议栈建链方法。
背景技术
TCP/IP协议栈是互联网的核心协议,同时也是数据中心最为广泛使用的可靠通信协议。然而TCP协议的三次握手过程产生的固有延迟,对于数据中心这类对延迟非常敏感的用户会带来非常大的影响。
现有的数据中心中所采用的基于FPGA的网络卸载应用,仅仅是对吞吐量、带宽、处理器的负载分担做了优化与提升,没有有效的针对建链过程产生的延迟的优化。建链过程产生的延迟与网络环境中的往返时间(RTT)大小和客户端与服务器端的响应延迟成正相关。客户端和服务器端的响应延迟可以通过使用FPGA或者专用ASIC等硬件加速代理的方式进行优化,然而RTT大小是网络环境的固有特性,没法在不修改协议栈的情况下进行优化。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是针对现有技术中,没有有效的针对建链过程产生的延迟的优化和没法在不修改协议栈的情况下进行优化,提供一种基于FPGA的超低延迟TCP协议栈建链方法。本发明公开实现的方法通过对协议栈三次握手方式的修改,将TCP客户端的数据发送延迟从原本的至少一个RTT减少到远小于1个RTT,能够达到与传统UDP通信几乎相同的延迟特性。而UDP通信由于存在着不可靠的特性,协议本身对于数据内容的交付不提供保障,因此无法应用在数据中心等对可靠通信有要求的场景。因此本发明的TCP协议栈能在提供可靠通信的情况下对建链过程产生的延迟进行优化。
为实现上述目的,本发明提供了一种基于TCP协议的FPGA超低延迟通信传输方法,包括以下步骤:
TCP客户端接收新的数据发送请求后,向TCP服务器端发送建链帧、应答帧以及数据帧,TCP客户端发送建链帧和应答帧后,TCP客户端的TCP有限状态机更新状态;TCP服务器接收到TCP客户端发送过来的建链帧后,产生建链应答帧。
进一步地,TCP客户端发送建链帧和应答帧后,TCP客户端的TCP有限状态机更新状态,具体为:
TCP有限状态机从CLOSED状态跳转到一个新的状态PRE_ESTABLISHED状态,在PRE_ESTABLISHED状态下TCP客户端能够执行数据发送。
进一步地,TCP客户端发送的应答帧中的TCP确认序号是一个系统预设的固定数值N。
进一步地,TCP服务器端在接收到TCP客户端发送过来的建链帧后,产生的建链应答帧中的TCP发送序号为N-1。
进一步地,TCP客户端在收到正确的建链应答帧后,TCP有限状态机从的PRE_ESTABLISHED状态跳转到ESTABLISHED状态,TCP客户端后续的TCP有限状态机与正常的TCP有限状态机工作机制一样。
进一步地,TCP客户端在PRE_ESTABLISHED状态下启动等待建链应答帧的超时定时器,若在超时前收到有效建链应答帧则TCP客户端TCP有限状态机状态由PRE_ESTABLISHED状态转入ESTABLISHED状态,完成三次握手;若TCP客户端在超时前未收到有效建链应答帧,则跳转回SYN_SENT状态重发建链帧,TCP客户端后续的TCP有限状态机与正常的TCP有限状态机工作机制一样。
技术效果
本发明提出了一种基于FPGA的超低延迟TCP协议栈建链方法,采用了在客户端超前进行第三次握手的设计,这样TCP客户端在进行TCP数据发送的时候,依次发送TCP建链帧(SYNC帧)、应答帧(ACK帧)以及TCP数据帧,克服了传统TCP发送端需要等待至少1个RTT时间才能进行数据发送的弊端。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1是传统TCP客户端建链的三次握手示意图;
图2是传统TCP客户端的TCP有限状态转换图;
图3是本发明的一较佳实施例提出TCP无握手应答建链的实现方案示意图;
图4是本发明的一较佳实施例提出的TCP客户端TCP有限状态转换图;
图5是本发明的一较佳实施例的流程示意图;
图6是本发明的一较佳实施例的流程示意图;
图7是传统TCP服务器端的TCP有限状态转换图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
以下描述中,为了说明而不是为了限定,提出了诸如特定内部程序、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
图1是TCP客户端建链的传统三次握手示意图,TCP客户端在进行TCP数据发送前需要与TCP服务器端完成TCP建链。图2是传统TCP客户端TCP有限状态机转换图。TCP客户端在与TCP服务器端进行通信前,向TCP服务器端发送第一次握手信号,也即TCP客户端首先向TCP服务器端发起SYNC帧,相应的如图2所示TCP客户端的TCP有限状态机从关闭状态转换为SYN_SENT状态;TCP服务器端接收到该建链请求后,向TCP客户端发送第二次握手信号,也即发送建链应答帧。TCP客户端收到该建链应答帧后,向TCP服务器端发送第三次握手信号,也即发送应答帧,相应的TCP客户端的TCP状态从SYN_SENT状态转换到ESTABLISHED状态。然后TCP客户端就可以与TCP服务器端进行正常的数据通信了。从上述描述可以看出,传统TCP客户端要与TCP服务器端进行数据传输的时候,必须至少等待TCP客户端与TCP服务器端的1倍往返时间(RTT)。
为了解决上述TCP客户端至少等待1RTT的数据发送延迟,本发明专利提出无握手应答的实现方案如图3所示,TCP客户端接收新的数据发送请求后,向TCP服务器端发送TCP建链帧、TCP应答帧完成TCP的预建链。对应的TCP服务端的TCP状态转换图如图4所示,与TCP传统转换状态图相比,本发明专利新增了一个TCP状态(PRE_ESTABLISHED),也即TCP客户端发送完建链帧以及TCP应答帧后,TCP客户端的TCP有限状态机从关闭状态跳转到PRE_ESTABLISHED状态。从上述描述可以看出,TCP客户端在发送TCP应答帧时,并不等待TCP服务器端发送过来的建链应答帧,从而减少了系统的建链延迟。在TCP客户端处于PRE_ESTABLISHED状态时,TCP客户端允许发送TCP数据。
实施例一
在TCP客户端与TCP服务器端无数据传输丢失的情况下,本实施例流程如图5所示。TCP客户端检测到有数据需要发送,则向TCP服务器端发送建链帧,其中建链帧中的TCP发送序号(sequence number,简称seq)采用系统随机生成的随机序号,在本实施例中设置该随机序号seq为1000,应答序号(Acknowledgment number,简称ack)设置为0。然后TCP客户端随后马上发送一个应答帧,与TCP通信协议规范一致,其中应答帧的发送序号设置为建链帧的发送序号加1,也即应答帧的发送序号设置为1001。在传统的TCP通信协议中,TCP客户端发送的TCP应答帧中的应答序号应该设置为TCP服务器端发送过来的建链应答帧的发送序号加1,而本实施例为了减少通信握手交互的延迟,需要在没有接收到建链应答帧的情况下发送应答帧,为了不违背TCP通信协议,本实施例对应答帧的应答序号进行了一个约束(也即该应答序号需要设置一个收发双方确认的固定数值N,在本实施例中N设置为3000)。在TCP客户端发送完应答帧后,TCP有限状态机从关闭状态跳转到PRE_ESTABLISHED状态,PREESTABLISHED(是链接预先建立状态),表示在客户端未收到第二次握手应答的时候进入的状态。在TCP客户端处于PRE_ESTABLISHED状态时,TCP客户端允许发送TCP数据,在本发明实施例中,若TCP客户端有1000个数据要发送,则构建TCP发送数据帧0(TCP数据长度为1000),其中数据帧0的发送序号设置为1001,应答序号为3000。
若发送建链帧、应答帧以及数据帧0的时间都为10us,则从上述描述可以看出TCP客户端接从接收到TCP有数据要发送到TCP数据发送出去,需要的延迟仅仅为30us。
在TCP客户端,在发送TCP数据的过程中,若接收到了正确的TCP建链应答帧(如图5所示接收到的建链应答帧中的发送序号为2999且应答序号为1001的时候),TCP客户端的TCP有限状态机跳转为ESTABLISHED状态。随后TCP客户端的有限状态机跳转与传统的TCP有限状态机跳转保持一致。
如图7所示,TCP服务器端的TCP有限状态机与传统的有限状态机工作状态没有任何的区别。TCP服务端如果允许TCP进行通信,则把TCP有限状态机从CLOSED状态(服务器关闭)设置为LISTEN状态(服务器开启侦听,打开一个端口侦听客户端的建链请求),在接收到TCP客户端发送的建链帧后,从LISTEN状态跳转到SYNC_RCVD(服务器收到了建链请求,发送了建链应答帧并等待客户端的应答帧)状态,并发送建链应答帧。需要注意的是如前所述,TCP服务器端发送的建链应答帧中的发送序号不是设置为随机序号,其数值需要设置成TCP客户端与TCP服务器端约定的数值N-1(在本发明实施例中,N设置为3000,也即发送序号设置为2999)。然后TCP服务器端的TCP有限状态机跳转到ESTABLISHED。
从上述描述可以看出,对TCP客户端的TCP有限状态机新增了一个状态PRE_ESTABLISHED状态,本实施例实现的低延迟通信对TCP服务器端的实现方案修改非常小。在工程上非常容易实现。
实施例二:
在TCP客户端与TCP服务器端存在数据传输丢失的情况下,本实施例如图6所示。由于网络传输链路发生问题或者接收端不能接收新的以太网数据的时候,TCP客户端发送的建链帧不能被TCP服务器端接收。则根据上述实施例的介绍,TCP客户端会依次发送建链帧、应答帧以及数据帧。但是由于TCP服务端不能接收到建链帧,所以TCP服务端的TCP有限状态机仍然停留在LISTEN状态(服务器开启侦听,打开一个端口侦听客户端的建链请求)并不产生TCP有限状态机的跳转。TCP客户端在设定的一段时间内没有检测到建链应答帧,则TCP客户端认为前述的建链帧产生了丢失,因此TCP客户端接着重发对应的建链帧,并把TCP有限状态机设置成SYNC_SENT状态(TCP客户端已经发送建链请求,等待服务器端的应答)。此后TCP客户端的操作与传统的TCP操作保持一致,也即TCP客户端接收到TCP服务器的建链应答帧后,发送应答帧,然后把TCP有效状态机设置为ESTABLISHED状态(TCP链接已经建立)。接着重发前述已经发送的数据帧0。TCP服务器端的TCP有限状态机跳转如实施例一所示。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (1)
1.一种基于TCP协议的FPGA超低延迟通信传输方法,其特征在于,包括以下步骤:
TCP客户端接收新的数据发送请求后,向TCP服务器端发送建链帧、应答帧以及数据帧,所述TCP客户端发送建链帧和应答帧后,所述TCP客户端的TCP有限状态机更新状态;所述TCP服务器接收到所述TCP客户端发送过来的建链帧后,产生建链应答帧;具体的,
TCP有限状态机从CLOSED状态跳转到一个新的状态PRE_ESTABLISHED状态,在所述PRE_ESTABLISHED状态下TCP客户端能够执行数据发送;所述TCP客户端发送的应答帧中的TCP确认序号是一个系统预设的固定数值N;所述TCP服务器端在接收到TCP客户端发送过来的建链帧后,产生的建链应答帧中的TCP发送序号为N-1;所述TCP客户端在所述PRE_ESTABLISHED状态下启动等待建链应答帧的超时定时器,若在超时前收到有效建链应答帧则所述TCP客户端TCP有限状态机状态由所述PRE_ESTABLISHED状态转入ESTABLISHED状态,完成三次握手;若所述TCP客户端在超时前未收到有效建链应答帧,则跳转回SYN_SENT状态重发所述建链帧,所述TCP客户端后续的TCP有限状态机与正常的TCP有限状态机工作机制一样。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910925458.0A CN110753035B (zh) | 2019-09-27 | 2019-09-27 | 一种基于tcp协议的fpga超低延迟通信传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910925458.0A CN110753035B (zh) | 2019-09-27 | 2019-09-27 | 一种基于tcp协议的fpga超低延迟通信传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110753035A CN110753035A (zh) | 2020-02-04 |
CN110753035B true CN110753035B (zh) | 2021-11-05 |
Family
ID=69277269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910925458.0A Active CN110753035B (zh) | 2019-09-27 | 2019-09-27 | 一种基于tcp协议的fpga超低延迟通信传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110753035B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113163025B (zh) * | 2021-03-25 | 2022-10-21 | 盛立安元科技(杭州)股份有限公司 | 一种数据传输方法、装置、设备及存储介质 |
CN113285914B (zh) * | 2021-03-29 | 2022-10-28 | 上海大学 | 一种基于fpga的tcp协议高效数据确认的通信传输方法 |
CN113259432B (zh) * | 2021-05-12 | 2022-07-08 | 北京杰迈科技股份有限公司 | 一种基于tcp协议的通信方法及机器人远程控制系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103795632A (zh) * | 2012-10-31 | 2014-05-14 | 华为技术有限公司 | 一种数据报文传输方法及相关设备、系统 |
CN104219215A (zh) * | 2013-06-05 | 2014-12-17 | 深圳市腾讯计算机系统有限公司 | 一种tcp连接的建立方法、装置、终端、服务器及系统 |
US9602330B1 (en) * | 2013-05-23 | 2017-03-21 | Amazon Technologies, Inc. | Two-stage TCP handshake |
CN108833487A (zh) * | 2018-05-23 | 2018-11-16 | 南京大学 | 一种tcp传输协议代理方法 |
-
2019
- 2019-09-27 CN CN201910925458.0A patent/CN110753035B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103795632A (zh) * | 2012-10-31 | 2014-05-14 | 华为技术有限公司 | 一种数据报文传输方法及相关设备、系统 |
US9602330B1 (en) * | 2013-05-23 | 2017-03-21 | Amazon Technologies, Inc. | Two-stage TCP handshake |
CN104219215A (zh) * | 2013-06-05 | 2014-12-17 | 深圳市腾讯计算机系统有限公司 | 一种tcp连接的建立方法、装置、终端、服务器及系统 |
CN108833487A (zh) * | 2018-05-23 | 2018-11-16 | 南京大学 | 一种tcp传输协议代理方法 |
Non-Patent Citations (1)
Title |
---|
LTE网络TCP建链时延优化研究;庄彦;《中国科技信息》;20190819;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110753035A (zh) | 2020-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8769116B2 (en) | Full-duplex bi-directional communication over a remote procedure call based communications protocol, and applications thereof | |
CN110753035B (zh) | 一种基于tcp协议的fpga超低延迟通信传输方法 | |
US9641650B2 (en) | TCP proxy server | |
Loreto et al. | Known issues and best practices for the use of long polling and streaming in bidirectional http | |
US6950947B1 (en) | System for sharing network state to enhance network throughput | |
US8925068B2 (en) | Method for preventing denial of service attacks using transmission control protocol state transition | |
EP2461524B1 (en) | Network proxy implementation method and apparatus | |
US9516114B2 (en) | Data packet transmission method and related device and system | |
US20060031518A1 (en) | Method and apparatus for transparent negotiations | |
KR101430032B1 (ko) | 물리적 전송 매체의 인터럽션 경우에 있어서 tcp 데이터 전송 프로세스를 향상시키는 방법 | |
US9787770B2 (en) | Communication system utilizing HTTP | |
WO2008036086A1 (en) | Handoff and optimization of a network protocol stack | |
WO2017107148A1 (zh) | 一种数据传输方法及网络侧设备 | |
CN108092993B (zh) | 一种网络数据传输控制方法和系统 | |
US11349934B2 (en) | Opportunistic transmission control protocol (TCP) connection establishment | |
CN109714135B (zh) | 一种数据包传输方法及装置 | |
KR100377852B1 (ko) | 부하 균형 기능을 갖는 메시지 전송 시스템 및 그 방법 | |
WO2015167375A1 (en) | Method and tcp proxy for supporting communication between a client device and a server node | |
US7672239B1 (en) | System and method for conducting fast offloading of a connection onto a network interface card | |
JP3741421B2 (ja) | データ通信方法及び通信端末装置 | |
US8676993B1 (en) | Bundled transmission control protocol connections | |
JP6268027B2 (ja) | 通信システム、送信装置、及び通信方法 | |
Liqing et al. | TCP optimization implementation of a small embedded system | |
KR101396785B1 (ko) | 네트워크 장치에서 tcp 기능을 수행하는 방법 | |
JP2000115241A (ja) | データ転送制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230105 Address after: 201900 Zone B, Floor 5, Building 1, No. 668, Shangda Road, Baoshan District, Shanghai Patentee after: Shanghai Tianyu Optical Communication Technology Co.,Ltd. Address before: 200444 No. 99, upper road, Shanghai, Baoshan District Patentee before: Shanghai University |