CN113791901A - 一种高效的负载均衡设备tcp重传实现方法 - Google Patents

一种高效的负载均衡设备tcp重传实现方法 Download PDF

Info

Publication number
CN113791901A
CN113791901A CN202111009456.0A CN202111009456A CN113791901A CN 113791901 A CN113791901 A CN 113791901A CN 202111009456 A CN202111009456 A CN 202111009456A CN 113791901 A CN113791901 A CN 113791901A
Authority
CN
China
Prior art keywords
message
retransmission
descriptor
tcp
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.)
Granted
Application number
CN202111009456.0A
Other languages
English (en)
Other versions
CN113791901B (zh
Inventor
王琳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Hongji Information Technology Co Ltd
Original Assignee
Shanghai Hongji Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Hongji Information Technology Co Ltd filed Critical Shanghai Hongji Information Technology Co Ltd
Priority to CN202111009456.0A priority Critical patent/CN113791901B/zh
Publication of CN113791901A publication Critical patent/CN113791901A/zh
Application granted granted Critical
Publication of CN113791901B publication Critical patent/CN113791901B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-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重传实现方法。
背景技术
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。
CN202111009456.0A 2021-08-31 2021-08-31 一种高效的负载均衡设备tcp重传实现方法 Active CN113791901B (zh)

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 true CN113791901A (zh) 2021-12-14
CN113791901B 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117097815A (zh) * 2023-10-18 2023-11-21 苏州元脑智能科技有限公司 一种报文传输方法、系统、电子设备及可读存储介质

Citations (10)

* Cited by examiner, † Cited by third party
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流重组技术

Patent Citations (10)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
万文凯;汪海涛;姜瑛;陈星;: "移动网络中重传超时问题的研究", 软件, no. 12 *
李涛;韩鹏;侯冠东;詹佳缘;: "基于FPGA的ORUDP协议栈设计与实现", 计算机工程, no. 06 *
王文良;张学勇;李岩;: "基于LwIP的TCP拥塞控制方法的改进", 长春师范学院学报(自然科学版), no. 02 *
赵昕, 戚文芽: "基于SF0020芯片的嵌入式TCP/IP协议族设计与实现", 微计算机信息, no. 16 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117097815A (zh) * 2023-10-18 2023-11-21 苏州元脑智能科技有限公司 一种报文传输方法、系统、电子设备及可读存储介质
CN117097815B (zh) * 2023-10-18 2024-02-09 苏州元脑智能科技有限公司 一种报文传输方法、系统、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN113791901B (zh) 2023-12-26

Similar Documents

Publication Publication Date Title
Mathis et al. RFC2018: TCP selective acknowledgement options
Mathis et al. TCP selective acknowledgment options
JP6522855B2 (ja) パケット送信方法およびユーザ機器
KR100787294B1 (ko) 이동 통신 기지국의 티씨피 성능 향상 장치
CN107204834B (zh) 一种基于udt协议的高速网络可靠传输的控制方法
US20020054570A1 (en) Data communication system, data communication method, and recording medium with data communication program recorded thereon
CN102006283B (zh) 数据传输的方法和装置
AU769881B2 (en) Method and apparatus for discarding packets in a data network having automatic repeat request
JP4546542B2 (ja) 重複受信確認を用いたデータフロー制御
EP1018821A1 (en) Communication device and method
Fox TCP big window and NAK options
US20120102216A1 (en) Method And Device For Message Retransmission
WO2010069206A1 (zh) 无线链路控制层报文状态报告的发送方法及系统
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
WO2016201904A1 (zh) 一种基于tcp的数据传输方法及装置
CN113791901B (zh) 一种高效的负载均衡设备tcp重传实现方法
JP7067544B2 (ja) 通信システム、通信装置、方法およびプログラム
CN117544571A (zh) 大报文安全可靠传输方法及装置
CN111092907B (zh) 基于udp协议的数据流快速传输方法、系统及介质
Stevens Network Working Group M. Allman Request for Comments: 2581 NASA Glenn/Sterling Software Obsoletes: 2001 V. Paxson Category: Standards Track ACIRI/ICSI
JP2001168907A (ja) 通信装置
KR100913897B1 (ko) 재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜혼잡제어방법
CN114268416B (zh) 数据传输方法、装置及电子设备
Onwutalobi Congestion Control and Review TCP Functionality

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