CN113791901B - 一种高效的负载均衡设备tcp重传实现方法 - Google Patents
一种高效的负载均衡设备tcp重传实现方法 Download PDFInfo
- Publication number
- CN113791901B CN113791901B CN202111009456.0A CN202111009456A CN113791901B CN 113791901 B CN113791901 B CN 113791901B CN 202111009456 A CN202111009456 A CN 202111009456A CN 113791901 B CN113791901 B CN 113791901B
- Authority
- CN
- China
- Prior art keywords
- message
- retransmission
- tcp
- descriptor
- load balancing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 22
- 230000003139 buffering effect Effects 0.000 claims abstract description 4
- 230000005540 biological transmission Effects 0.000 claims description 10
- 230000006870 function Effects 0.000 abstract description 7
- 238000009825 accumulation Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种高效的负载均衡设备TCP重传实现方法,首先形成待发送报文A;如果待发送报文A属于TCP协议中可能会出现重传情况的报文,则设置报文A的描述符上的重传标志位,调用网卡驱动的报文发送接口来发送报文A;在报文释放函数中对报文A描述符上的重传标志位进行判断,如果发现报文A重传标志置位,则不释放报文A;当出现重传情况时,TCP协议栈无需申请新报文缓存或复制报文处理;当TCP协议栈收到报文A的描述符回复报文B时,可在待重传队列中删除并直接释放报文A,而不再进行重新发送。本发明提高了TCP重传的执行效率,节省负载均衡设备的CPU和内存等关键资源。
Description
技术领域
本发明涉及通信技术领域,具体是指一种高效的负载均衡设备TCP重传实现方法。
背景技术
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。
通常在每个TCP报文段中都有一对序号和确认号。TCP报文发送者称自己的字节流的编号为序号,称接收到对方的字节流编号为确认号。TCP报文的接收者为了确保可靠性,在接收到一定数量的连续字节流后才发送确认。这是对TCP的一种扩展,称为选择确认。选择确认使得TCP接收者可以对乱序到达的数据块进行确认。每一个字节传输过后,序号都会递增1。
通过使用序号和确认号,TCP层可以把收到的报文段中的字节按正确的顺序交付给应用层。序号是32位的无符号数,在它增大到4294967295时,便会回绕到0。对于初始化序列号(ISN)的选择是TCP中关键的一个操作,它可以确保强壮性和安全性。
TCP协议使用序号标识每端发出的字节的顺序,从而另一端接收数据时可以重建顺序,无惧传输时的包的乱序交付或丢包。在发送第一个包时(SYN包),选择一个随机数作为序号的初值,以克制TCP序号预测攻击。
发送确认包(Ack),携带了接收到的对方发来的字节流的编号,称为确认号,以告诉对方已经成功接收的数据流的字节位置。Ack并不意味着数据已经交付了上层应用程序。
可靠性通过发送方检测到丢失的传输数据并重传这些数据。包括超时重传与重复累计确认。
超时重传时,发送方使用一个保守估计的时间作为收到数据包的确认的超时上限。如果超过这个上限仍未收到确认包,发送方将重传这个数据包。每当发送方收到确认包后,会重置这个重传定时器。进一步,如果重传定时器被触发,仍然没有收到确认包,定时器的值将被设为前次值的二倍(直到特定阈值)。
结合图1,对于基于重复累计确认的重传,如果一个包(不妨设它的序号是100,即该包始于第100字节)丢失,接收方就不能确认这个包及其以后的包,因为采用了累计Ack。接收方在收到序号为100以后的包时,发出对包含第99字节的包的确认。这种重复确认是包丢失的信号。发送方如果收到3次对同一个包的确认,就重传最后一个未被确认的包。阈值设为3被证实可以减少乱序包导致的无作用的重传现象。
在Linux操作系统中,现有的TCP重传有两种方法:
(1)在TCP协议的报文传输中,首先从系统中申请一个新的报文缓冲区(skb),在其中填写报文的相关内容,调用相应的发送函数,最终由网卡驱动程序进行发送,发送后由驱动程序释放该报文缓冲区;如果需要重传时,则重复以上全过程。
(2)在TCP协议的报文传输中,首先从系统中申请一个新的报文缓冲区(skb),在其中填写报文的相关内容,并在同时复制出一个相同的报文,即克隆报文,将该克隆报文放入重传等待队列,再调用相应的发送函数发送原报文,最终由网卡驱动程序进行发送,发送后由驱动程序释放原报文缓冲区;如果需要重传时,从重传等待队列取出克隆报文,重复发送过程;如果不再需要重传,则释放掉这个克隆报文。
以上两种方法具有以下缺点:
(1)对于全流程重传方案,每次重传都要重新申请报文缓存,并完成整个报文发送流程,执行效率较低,当遇到大量TCP重传时,消耗大量CPU运算力。
(2)对于使用克隆报文和重传队列的方案,每个可能出现重传的报文都需要同时复制出一个克隆报文作为重传时的备份,这样就导致占用更多的报文缓存,消耗内存较多,当遇到大量TCP重传时,会导致大量内存占用。
所以,一种高效的负载均衡设备TCP重传实现方法成为人们亟待解决的问题。
发明内容
本发明要实现的目的是提高TCP重传的执行效率,节省负载均衡设备的CPU和内存等关键资源。
为实现上述目的,本发明提供的技术方案为:一种高效的负载均衡设备TCP重传实现方法,包括以下步骤:
步骤1、预置条件
负载均衡系统中的每一个报文都有相应的报文描述符;
步骤2、在TCP协议的报文传输中,首先从系统中申请一个新的报文缓冲区,在其中填写报文的相关内容形成待发送报文A;
步骤3、如果待发送报文A属于TCP协议中可能会出现重传情况的报文,则设置报文A的描述符上的重传标志位,并将指向报文A的指针加入待重传队列,然后调用网卡驱动的报文发送接口来发送报文A;
步骤4、在网卡驱动的发送处理中,发送了报文A之后,在报文释放函数中对报文A描述符上的重传标志位进行判断,如果发现报文A重传标志置位,则不释放报文A;
步骤5、当出现重传情况时,TCP协议栈可以直接从待重传队列中取出之前加入的指向报文A的指针,并再次调用网卡驱动的报文发送接口来发送报文A,无需申请新报文缓存或复制报文处理;
步骤6、当TCP协议栈收到报文A的描述符回复报文B时,则可在待重传队列中删除并直接释放报文A,而不再进行重新发送。
作为改进,所述步骤1中的描述符在Linux系统中为skb结构。
作为改进,所述步骤3中若待发送报文A不属于TCP协议中可能会出现重传情况的报文,则直接调用网卡驱动的报文发送接口来发送报文A。
作为改进,所述步骤4中在报文释放函数中对报文A描述符上的重传标志位进行判断,如果没有发现报文A重传标志置位,则释放报文A。
本发明与现有技术相比的优点在于:本发明提高了TCP重传的执行效率,节省负载均衡设备的CPU和内存等关键资源。经对比测试,负载均衡设备的TCP流量转发性能平均提高了30%。
附图说明
图1是重复累计确认重传的流程图。
图2是本发明一种高效的负载均衡设备TCP重传实现方法的流程图。
具体实施方式
下面结合附图对本发明一种高效的负载均衡设备TCP重传实现方法做进一步的详细说明。
结合附图1-2,本发明一种高效的负载均衡设备TCP重传实现方法的具体实施过程如下:
一种高效的负载均衡设备TCP重传实现方法,包括以下步骤:
步骤1、预置条件
负载均衡系统中的每一个报文都有相应的报文描述符,描述符在Linux系统中为skb结构;
步骤2、在TCP协议的报文传输中,首先从系统中申请一个新的报文缓冲区,在其中填写报文的相关内容形成待发送报文A;
步骤3、如果待发送报文A属于TCP协议中可能会出现重传情况的报文,则设置报文A的描述符上的重传标志位,并将指向报文A的指针加入待重传队列,然后调用网卡驱动的报文发送接口来发送报文A;若待发送报文A不属于TCP协议中可能会出现重传情况的报文,则直接调用网卡驱动的报文发送接口来发送报文A;
步骤4、在网卡驱动的发送处理中,发送了报文A之后,在报文释放函数中对报文A描述符上的重传标志位进行判断,如果发现报文A重传标志置位,则不释放报文A;如果没有发现报文A重传标志置位,则直接释放报文A;
步骤5、当出现重传情况时,TCP协议栈可以直接从待重传队列中取出之前加入的指向报文A的指针,并再次调用网卡驱动的报文发送接口来发送报文A,无需申请新报文缓存或复制报文处理;
步骤6、当TCP协议栈收到报文A的描述符回复报文B时,则可在待重传队列中删除并直接释放报文A,而不再进行重新发送。
以上对本发明及其实施方式进行了描述,这种描述没有限制性,附图中所示的也只是本发明的实施方式之一,实际的结构并不局限于此。总而言之如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。
Claims (4)
1.一种高效的负载均衡设备TCP重传实现方法,其特征在于:包括以下步骤:
步骤1、预置条件
负载均衡系统中的每一个报文都有相应的报文描述符;
步骤2、在TCP协议的报文传输中,首先从系统中申请一个新的报文缓冲区,在其中填写报文的相关内容形成待发送报文A;
步骤3、如果待发送报文A属于TCP协议中可能会出现重传情况的报文,则设置报文A的描述符上的重传标志位,并将指向报文A的指针加入待重传队列,然后调用网卡驱动的报文发送接口来发送报文A;
步骤4、在网卡驱动的发送处理中,发送了报文A之后,在报文释放函数中对报文A描述符上的重传标志位进行判断,如果发现报文A重传标志置位,则不释放报文A;
步骤5、当出现重传情况时,TCP协议栈可以直接从待重传队列中取出之前加入的指向报文A的指针,并再次调用网卡驱动的报文发送接口来发送报文A,无需申请新报文缓存或复制报文处理;
步骤6、当TCP协议栈收到报文A的描述符回复报文B时,则可在待重传队列中删除并直接释放报文A,而不再进行重新发送。
2.根据权利要求1所述的一种高效的负载均衡设备TCP重传实现方法,其特征在于:所述步骤1中的描述符在Linux系统中为skb结构。
3.根据权利要求1所述的一种高效的负载均衡设备TCP重传实现方法,其特征在于:所述步骤3中若待发送报文A不属于TCP协议中可能会出现重传情况的报文,则直接调用网卡驱动的报文发送接口来发送报文A。
4.根据权利要求1所述的一种高效的负载均衡设备TCP重传实现方法,其特征在于:所述步骤4中在报文释放函数中对报文A描述符上的重传标志位进行判断,如果没有发现报文A重传标志置位,则释放报文A。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111009456.0A CN113791901B (zh) | 2021-08-31 | 2021-08-31 | 一种高效的负载均衡设备tcp重传实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111009456.0A CN113791901B (zh) | 2021-08-31 | 2021-08-31 | 一种高效的负载均衡设备tcp重传实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113791901A CN113791901A (zh) | 2021-12-14 |
CN113791901B true CN113791901B (zh) | 2023-12-26 |
Family
ID=78876740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111009456.0A Active CN113791901B (zh) | 2021-08-31 | 2021-08-31 | 一种高效的负载均衡设备tcp重传实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113791901B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117097815B (zh) * | 2023-10-18 | 2024-02-09 | 苏州元脑智能科技有限公司 | 一种报文传输方法、系统、电子设备及可读存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101018176A (zh) * | 2007-03-09 | 2007-08-15 | 中国科学院软件研究所 | 自组织网络中的短报文可靠传输方法 |
CN101247352A (zh) * | 2008-03-20 | 2008-08-20 | 华为技术有限公司 | 网关设备上缓存及转发数据包的方法及网关设备 |
CN101695067A (zh) * | 2009-10-13 | 2010-04-14 | 深圳市同洲电子股份有限公司 | 基于tcp的数据处理方法、装置、数字电视接收终端和系统 |
CN101707590A (zh) * | 2009-09-25 | 2010-05-12 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的tcp/ip协议报文发送方法和装置 |
CN104780028A (zh) * | 2015-04-02 | 2015-07-15 | 京信通信技术(广州)有限公司 | 一种实现tcp数据报文重传的方法及设备 |
WO2018071064A1 (en) * | 2016-10-14 | 2018-04-19 | Intel Corporation | Systems, methods, and devices for downlink transmission control protocol in cellular networks |
CN110213167A (zh) * | 2018-02-28 | 2019-09-06 | 吴瑞 | 一种传输控制协议在网络拥塞时的处理方法和装置 |
CN110830472A (zh) * | 2019-11-07 | 2020-02-21 | 西北工业大学 | 基于tcp/ip协议的灵活数据传输协议的灵活数据传输方法 |
CN111385068A (zh) * | 2018-12-29 | 2020-07-07 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置、电子设备及通信系统 |
CN111478865A (zh) * | 2020-04-09 | 2020-07-31 | 成都深思科技有限公司 | 一种基于区间管理算法的tcp流重组技术 |
-
2021
- 2021-08-31 CN CN202111009456.0A patent/CN113791901B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101018176A (zh) * | 2007-03-09 | 2007-08-15 | 中国科学院软件研究所 | 自组织网络中的短报文可靠传输方法 |
CN101247352A (zh) * | 2008-03-20 | 2008-08-20 | 华为技术有限公司 | 网关设备上缓存及转发数据包的方法及网关设备 |
CN101707590A (zh) * | 2009-09-25 | 2010-05-12 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的tcp/ip协议报文发送方法和装置 |
CN101695067A (zh) * | 2009-10-13 | 2010-04-14 | 深圳市同洲电子股份有限公司 | 基于tcp的数据处理方法、装置、数字电视接收终端和系统 |
CN104780028A (zh) * | 2015-04-02 | 2015-07-15 | 京信通信技术(广州)有限公司 | 一种实现tcp数据报文重传的方法及设备 |
WO2018071064A1 (en) * | 2016-10-14 | 2018-04-19 | Intel Corporation | Systems, methods, and devices for downlink transmission control protocol in cellular networks |
CN110213167A (zh) * | 2018-02-28 | 2019-09-06 | 吴瑞 | 一种传输控制协议在网络拥塞时的处理方法和装置 |
CN111385068A (zh) * | 2018-12-29 | 2020-07-07 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置、电子设备及通信系统 |
CN110830472A (zh) * | 2019-11-07 | 2020-02-21 | 西北工业大学 | 基于tcp/ip协议的灵活数据传输协议的灵活数据传输方法 |
CN111478865A (zh) * | 2020-04-09 | 2020-07-31 | 成都深思科技有限公司 | 一种基于区间管理算法的tcp流重组技术 |
Non-Patent Citations (4)
Title |
---|
基于FPGA的ORUDP协议栈设计与实现;李涛;韩鹏;侯冠东;詹佳缘;;计算机工程(第06期);全文 * |
基于LwIP的TCP拥塞控制方法的改进;王文良;张学勇;李岩;;长春师范学院学报(自然科学版)(第02期);全文 * |
基于SF0020芯片的嵌入式TCP/IP协议族设计与实现;赵昕, 戚文芽;微计算机信息(第16期);全文 * |
移动网络中重传超时问题的研究;万文凯;汪海涛;姜瑛;陈星;;软件(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113791901A (zh) | 2021-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mathis et al. | RFC2018: TCP selective acknowledgement options | |
CN110661723B (zh) | 一种数据传输方法、计算设备、网络设备及数据传输系统 | |
Mathis et al. | TCP selective acknowledgment options | |
JP6522855B2 (ja) | パケット送信方法およびユーザ機器 | |
KR101130479B1 (ko) | 스퓨리어스 타임아웃에 대한 응답 방법 | |
AU769881B2 (en) | Method and apparatus for discarding packets in a data network having automatic repeat request | |
US7876678B2 (en) | Congestion control for signalling transport protocols | |
US6694471B1 (en) | System and method for periodic retransmission of messages | |
US7035291B2 (en) | TCP transmission acceleration | |
US20020054570A1 (en) | Data communication system, data communication method, and recording medium with data communication program recorded thereon | |
KR100787294B1 (ko) | 이동 통신 기지국의 티씨피 성능 향상 장치 | |
CN102006283B (zh) | 数据传输的方法和装置 | |
CN107204834A (zh) | 一种基于udt协议的高速网络可靠传输的控制方法 | |
KR100547749B1 (ko) | 재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜의혼잡제어 방법과 시스템 | |
WO2009039730A1 (fr) | Procédé pour déclencher un rapport d'état de requête de répétition automatique | |
US20070280107A1 (en) | Data Unit Sender Control Method | |
CN113765626B (zh) | 一种移动通信系统的数据传输方法和装置 | |
CN113791901B (zh) | 一种高效的负载均衡设备tcp重传实现方法 | |
JP7067544B2 (ja) | 通信システム、通信装置、方法およびプログラム | |
CN117544571A (zh) | 大报文安全可靠传输方法及装置 | |
Stevens | Network Working Group M. Allman Request for Comments: 2581 NASA Glenn/Sterling Software Obsoletes: 2001 V. Paxson Category: Standards Track ACIRI/ICSI | |
JP2000022744A (ja) | パケット通信システム、パケット通信装置及びパケット通信方法 | |
JP2001168907A (ja) | 通信装置 | |
Hurtig et al. | SCTP: designed for timely message delivery? | |
KR100913897B1 (ko) | 재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜혼잡제어방법 |
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 |