CN110266446A - 一种基于sack模式调整乱序时长的方法和装置 - Google Patents

一种基于sack模式调整乱序时长的方法和装置 Download PDF

Info

Publication number
CN110266446A
CN110266446A CN201910401199.1A CN201910401199A CN110266446A CN 110266446 A CN110266446 A CN 110266446A CN 201910401199 A CN201910401199 A CN 201910401199A CN 110266446 A CN110266446 A CN 110266446A
Authority
CN
China
Prior art keywords
target
data packet
packet
order data
duration
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
CN201910401199.1A
Other languages
English (en)
Other versions
CN110266446B (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.)
Wangsu Science and Technology Co Ltd
Original Assignee
Wangsu Science and 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 Wangsu Science and Technology Co Ltd filed Critical Wangsu Science and Technology Co Ltd
Priority to CN201910401199.1A priority Critical patent/CN110266446B/zh
Publication of CN110266446A publication Critical patent/CN110266446A/zh
Application granted granted Critical
Publication of CN110266446B publication Critical patent/CN110266446B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1854Scheduling and prioritising arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/06Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种基于SACK模式调整乱序时长的方法和装置,涉及数据传输技术领域,所述方法包括:当接收到目标TCP连接的目标ACK/SACK消息时,判断所述目标ACK/SACK消息对应的目标数据包是否属于乱序数据包集合;若所述目标数据包不属于所述乱序数据包集合,则根据所述目标ACK/SACK消息在所述乱序数据包集合中添加乱序数据包;若所述目标数据包属于所述乱序数据包集合,则根据所述目标数据包的目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长。采用本发明不仅可以有效节省网络资源,还可以实现在SACK模式下对TCP连接的乱序时长的有效调整。

Description

一种基于SACK模式调整乱序时长的方法和装置
技术领域
本发明涉及数据传输技术领域,尤其涉及一种基于SACK模式调整乱序时长的方法和装置。
背景技术
发送端通过TCP(Transmission Control Protocol传输控制协议)连接按序将数据包向接收端发送后,接收端可以根据各个数据包的接收情况向发送端发送确认消息。具体的,当接收端按序接收到数据包时,可以向发送端发送数据包对应的ACK(Acknowledgement,确认)消息;当接收端不是按序接收到数据包,即接收到乱序数据包时,可以向发送端发送数据包对应的SACK(Selective ACK,选择确认)消息。
进一步的,发送端可以针对每个TCP连接设置对应的超时时长,该超时时长为发送端最新接收到的乱序数据包的RTT(Round-Trip Time,往返时延)与乱序时长之和。如果发送端发出某个数据包后,在该数据包所属的TCP连接对应的超时时长内未接收到该数据包对应的确认消息,则判定该数据包发生丢包,进而可以向接收端重传该数据包。如果接收端已接收到发送端之前发送的数据包,又接收到重传数据包,则可以向发送端发送数据包对应的D-SACK(Duplicate SACK,重复选择确认)消息。发送端每接收到一个数据包对应的D-SACK消息,可以将该数据包所属TCP连接的乱序时长增加MIN_RTT/4,其中MIN_RTT为最小RTT。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
一方面,当网络中数据包乱序情况较严重时,会使得大量数据包被误判为丢包并被重传,从而会消耗大量网络资源,进一步的,按照MIN_RTT/4的幅度调整乱序时长,可能需要进行多次调整才能使乱序时长符合实际乱序情况,从而导致收敛速度较慢、耗时较长,进而会进一步增加网络资源消耗。另一方面,由于目前有些网络设备不支持D-SACK模式(即网络设备在重复接收到某一数据包后,不会向数据包的发送端反馈D-SACK消息,且无法对其它网络设备反馈的D-SACK消息进行有效解析),故而亟需一种脱离D-SACK模式的基于SACK模式调整TCP连接的乱序时长的方法。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种基于SACK模式调整乱序时长的方法和装置。所述技术方案如下:
第一方面,提供了一种基于SACK模式调整乱序时长的方法,所述方法包括:
当接收到目标TCP连接的目标ACK/SACK消息时,判断所述目标ACK/SACK消息对应的目标数据包是否属于乱序数据包集合;
若所述目标数据包不属于所述乱序数据包集合,则根据所述目标ACK/SACK消息在所述乱序数据包集合中添加乱序数据包;
若所述目标数据包属于所述乱序数据包集合,则根据所述目标数据包的目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长。
可选的,所述根据所述目标ACK/SACK消息在所述乱序数据包集合中添加乱序数据包,包括:
确定所述目标ACK/SACK消息对应的目标数据包的发送顺序号和所述乱序数据包集合中的最高发送顺序号之间的空缺发送顺序号;
将所述空缺发送顺序号对应的数据包确定为乱序数据包,并按序在所述乱序数据包集合中添加所有所述乱序数据包。
可选的,所述根据所述目标ACK/SACK消息在所述乱序数据包集合中添加乱序数据包之后,还包括:
根据所述目标数据包的目标RTT更新所述乱序数据包集合中各乱序数据包对应的的最小RTT。
可选的,所述根据所述目标数据包的目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长,包括:
获取所述目标数据包的发送时刻和所述目标ACK/SACK消息的接收时刻,生成所述目标数据包的目标RTT;
基于所述目标RTT和所述目标数据包对应的最小RTT,调整所述目标TCP连接的乱序时长。
可选的,所述根据所述目标数据包的目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长,包括:
如果所述目标数据包未发生过重传,或者所述目标数据包仅发生过一次重传,且所述目标数据包的重传时刻与所述目标ACK/SACK消息的接收时刻的间隔时长小于预设时长,则根据所述目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长,否则将所述目标数据包从所述乱序数据包集合中移除。
可选的,所述方法还包括:
当监测到所述乱序数据包集合中的第一乱序数据包发生了多次重传,或者所述第一乱序数据包仅发生过一次重传,且所述第一乱序数据包的重传时刻与当前时刻的间隔时长大于预设时长时,将所述第一乱序数据包从所述乱序数据包集合中移除。
可选的,所述方法还包括:
周期性删除所述乱序数据包集合中存储时长大于预设存储时长的乱序数据包;或者,
当所述乱序数据包集合的剩余存储空间小于预设容量时,移除所述乱序数据包集合中存储时长最长的预设数量个乱序数据包。
可选的,所述乱序数据包集合以链表的形式存储所述乱序数据包。
第二方面,提供了一种基于SACK模式调整乱序时长的装置,所述装置包括判断模块、添加模块和调整模块,其中:
所述判断模块,用于当接收到目标TCP连接的目标ACK/SACK消息时,判断所述目标ACK/SACK消息对应的目标数据包是否属于乱序数据包集合;
所述添加模块,用于若所述目标数据包不属于所述乱序数据包集合,则根据所述目标ACK/SACK消息在所述乱序数据包集合中添加乱序数据包;
所述调整模块,用于若所述目标数据包属于所述乱序数据包集合,则根据所述目标数据包的目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长。
可选的,所述添加模块,具体用于:
确定所述目标ACK/SACK消息对应的目标数据包的发送顺序号和所述乱序数据包集合中的最高发送顺序号之间的空缺发送顺序号;
将所述空缺发送顺序号对应的数据包确定为乱序数据包,并按序在所述乱序数据包集合中添加所有所述乱序数据包。
可选的,所述装置还包括更新模块,用于:
根据所述目标数据包的目标RTT更新所述乱序数据包集合中各乱序数据包对应的的最小RTT。
可选的,所述调整模块,具体用于:
获取所述目标数据包的发送时刻和所述目标ACK/SACK消息的接收时刻,生成所述目标数据包的目标RTT;
基于所述目标RTT和所述目标数据包对应的最小RTT,调整所述目标TCP连接的乱序时长。
可选的,所述调整模块,还用于:
如果所述目标数据包未发生过重传,或者所述目标数据包仅发生过一次重传,且所述目标数据包的重传时刻与所述目标ACK/SACK消息的接收时刻的间隔时长小于预设时长,则根据所述目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长,否则将所述目标数据包从所述乱序数据包集合中移除。
可选的,所述装置还包括移除模块,用于:
当监测到所述乱序数据包集合中的第一乱序数据包发生了多次重传,或者所述第一乱序数据包仅发生过一次重传,且所述第一乱序数据包的重传时刻与当前时刻的间隔时长大于预设时长时,将所述第一乱序数据包从所述乱序数据包集合中移除。
可选的,所述移除模块,还用于:
周期性删除所述乱序数据包集合中存储时长大于预设存储时长的乱序数据包;或者,
当所述乱序数据包集合的剩余存储空间小于预设容量时,移除所述乱序数据包集合中存储时长最长的预设数量个乱序数据包。
可选的,所述乱序数据包集合以链表的形式存储所述乱序数据包。
第三方面,提供了一种网络设备,所述网络设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第一方面所述的基于SACK模式调整乱序时长的方法。
第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如第一方面所述的基于SACK模式调整乱序时长的方法。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,当接收到目标TCP连接的目标ACK/SACK消息时,判断所述目标ACK/SACK消息对应的目标数据包是否属于乱序数据包集合;若所述目标数据包不属于所述乱序数据包集合,则根据所述目标ACK/SACK消息在所述乱序数据包集合中添加乱序数据包;若所述目标数据包属于乱序数据包集合,则根据所述目标数据包的目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长。这样,一方面,根据乱序数据包的RTT和乱序数据包对应的最小RTT调整TCP连接的乱序时长,可以更快更准确的使TCP连接的乱序时长符合实际乱序情况,从而减少了被误识别为丢包的数据包数量,减少不必要的重传,进而有效节省网络资源;另一方面,发送端可以根据乱序数据包的ACK/SACK消息调整TCP连接的乱序时长,实现了在SACK模式下对TCP连接的乱序时长的有效调整。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于SACK模式调整乱序时长的方法的场景示意图;
图2是本发明实施例提供的一种基于SACK模式调整乱序时长的方法流程图;
图3是本发明实施例提供的一种基于SACK模式调整乱序时长的装置结构图;
图4是本发明实施例提供的一种网络设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种基于SACK模式调整乱序时长的方法,该方法可以由网络设备实现,该网络设备可以是数据包的发送端。如图1所示,发送端可以与接收端建立TCP连接,通过TCP连接向接收端发送数据包。当接收端接收到数据包时,可以根据数据包的接收情况向发送端发送ACK消息或者SACK消息。当接收到ACK/SACK消息时,发送端可以根据该ACK/SACK消息调整TCP连接的乱序时长。上述网络设备中可以包括处理器、存储器和收发器,处理器可以用于进行下述流程中基于SACK模式调整乱序时长的方法,存储器可以用于存储下述处理过程中需要的数据及产生的数据,收发器可以用于接收和发送下述处理过程中的相关数据。
下面将结合具体实施方式,对如图2所示的一种基于SACK模式调整乱序时长的方法的处理流程进行详细的说明,内容可以如下:
步骤201:当接收到目标TCP连接的目标ACK/SACK消息时,判断目标ACK/SACK消息对应的目标数据包是否属于乱序数据包集合。
在实施中,如果发送端支持SACK机制(即网络设备在接收到乱序数据包后,可以向乱序数据包的发送端反馈SACK消息,且可以对其它网络设备反馈的SACK消息进行有效解析),且发送端在与接收端建立TCP连接的过程中,确定了接收端也支持SACK机制,发送端则可以创建一个用于存储乱序数据包的乱序数据包集合,其中,乱序数据包集合可以以链表形式存储乱序数据包。发送端向接收端发送数据包时,可以按照数据包的发送顺序为每个数据包分配一个发送顺序号,同时,发送端还可以生成数据包重传队列,并将所有发送的数据包添加到该重传队列中。发送端可以根据网络情况为上述TCP连接预设一个超时时长,当发送端向接收端发送某个数据包后,如果在超时时长内没有接收到该数据包的确认消息,可以将重传队列中的该数据包向接收端进行重传。当接收端先接收到发送顺序号较大的数据包,即发送端较晚发送的数据包时,可以向发送端发送SACK消息,发送端接收到该SACK消息后,可以确定SACK消息对应的数据包和发生乱序的数据包,并将发生乱序的数据包添加到上述乱序数据包集合中。当接收端按照发送顺序号的大小接收到数据包,或者在接收到SACK消息对应的数据包的发送顺序号之前的所有数据包时,可以向接收端发送ACK消息。以发送端向接收端发送的数据包按发送顺序依次为包1、包2、包3、包4为例,假设接收端先接收到包2,则可以向发送端发送包2对应的SACK消息,此时发送端可以确定包1为乱序数据包,将包1添加进乱序数据包集合;假设接收端之后又接收到包4,则可以向发送端发送包4和包2对应的SACK消息,该SACK消息中可以包括包4对应的SACK字段和包2对应的SACK字段,此时,发送端可以确定包3为乱序数据包,将包3添加进乱序数据包集合;假设之后接收端又接收到包1,则可以向发送端发送包1和包4对应的SACK消息,该SACK消息中可以包括包1对应的ACK字段和包4对应的SACK字段,此时,发送端可以确定接收端已经成功接收到包1、包2及包4,且没有出现新的乱序数据包;假设之后接收端又接收到包3,则可以向发送端发送包3对应的ACK消息,此时,发送端可以确定接收端已经成功接收到包1、包2、包3、包4。
当发送端接收到ACK/SACK消息(可称为目标ACK/SACK消息)时,可以确定该目标ACK/SACK消息对应的数据包(可称为目标数据包),并判断该目标数据包是否属于上述乱序数据包集合。可以理解,为节省存储资源,上述乱序数据包集合中可以仅记录每个乱序数据包的发送顺序号、第一次发送时刻等乱序数据包的标识信息,以及每个乱序数据包对应的最小RTT等信息,相应的,发送端判断目标数据包是否属于乱序数据包集合时,可以根据目标数据包携带的发送顺序号进行判断。
步骤202:若目标数据包不属于乱序数据包集合,则根据目标ACK/SACK消息在乱序数据包集合中添加乱序数据包。
在实施中,当发送端判断目标数据包不属于乱序数据包集合,即乱序数据包集合中未记录有目标数据包对应的发送顺序号时,发送端可以根据目标ACK/SACK消息确定乱序数据包,并将乱序数据包添加至上述乱序数据包集合。以发送端向接收端发送的数据包按发送顺序依次为包1、包2、包3为例,假设发送端接收到SACK消息且SACK消息对应的数据包为包3,此时,发送端可以确定包1、包2发生乱序,将包1、包2添加至乱序数据包集合中;假设发送端接收到了ACK消息,则可以确定未出现新的乱序数据包,不向乱序数据包集合中添加任何数据包。
可选的,发送端可以根据目标数据包的发送顺序号和乱序数据包集合中的最高发送顺序号确定需要添加的乱序数据包,相应的,上述步骤202的处理可以如下:确定目标ACK/SACK消息对应的目标数据包的发送顺序号和乱序数据包集合中的最高发送顺序号之间的空缺发送顺序号;将空缺发送顺序号对应的数据包确定为乱序数据包,并按序在乱序数据包集合中添加所有乱序数据包。
在实施中,当发送端判断目标数据包不属于乱序数据包集合时,发送端可以确定目标ACK/SACK消息对应的目标数据包,并获取目标数据包的发送顺序号和乱序数据包集合中所有乱序数据包对应的发送顺序号中的最高发送顺序号。然后,发送端可以确定目标数据包的发送顺序号和乱序数据包集合中的最高发送顺序号之间的空缺发送顺序号,根据空缺发送顺序号确定乱序数据包,并将空缺发送顺序号对应的所有乱序数据包添加到上述乱序数据包集合中。以乱序数据包集合中的最高发送顺序号为4为例,假设发送端接收到目标SACK消息,且目标SACK消息对应的目标数据包的发送顺序号为7,发送端可以确定目标数据包的发送顺序号和乱序数据包集合中的最高发送顺序号之间的空缺发送顺序号为5和6。然后,发送端可以查找发送顺序号为5和6对应的数据包,即包5和包6,将包5和包6确定为乱序数据包,并将包5和包6添加到上述乱序数据包集合中;假设发送端接收到目标ACK消息,且目标ACK消息对应的目标数据包为包1,且包1不在乱序数据包集合中,发送端则可以确定当前无乱序数据包,不进行乱序数据包的添加处理。
可选的,发送端可以在每次接收到非乱序数据包的ACK/SACK消息时更新目标TCP连接的最小RTT,相应的,上述步骤202之后还可以进行如下处理:根据目标数据包的目标RTT更新乱序数据包集合中各乱序数据包对应的的最小RTT。
在实施中,当发送端判断目标数据包不属于乱序数据包集合时,无论目标数据包的发送顺序号和乱序数据包集合中的最高发送顺序号之间是否有空缺发送顺序号,发送端都可以更新乱序数据包集合中各乱序数据包对应的最小RTT,该最小RTT为乱序数据包添加进乱序数据包之前接收到的最新的确认消息对应的数据包的RTT,及乱序数据包被添加进乱序数据包集合中之后发送端接收到的确认消息对应的数据包的RTT中的最小RTT。具体的,当目标数据包的发送顺序号和乱序数据包集合中的最高发送顺序号之间无空缺发送顺序号时,发送端可以基于目标RTT更新乱序数据包集合中的各乱序数据包对应的最小RTT,如发送端可以将目标数据包对应的目标RTT和乱序数据包集合中的各乱序数据包对应的最小RTT进行比较,当目标RTT小于最小RTT时,发送端可以将目标数据包对应的目标RTT更新为乱序数据包对应的最小RTT。当目标RTT大于最小RTT时,发送端则不进行更新处理。当目标数据包的发送顺序号和乱序数据包集合中的最高发送顺序号之间有空缺发送顺序号时,发送端在向乱序数据包集合中添加乱序数据包后,可以将目标数据包的目标RTT记录为新添加至乱序数据包集合中的乱序数据包对应的最小RTT,并基于目标RTT更新乱序数据包集合中的各乱序数据包对应的最小RTT。以发送端发送的数据包为包1、包2、包3、包4、包5为例,假设发送端先接收到包2对应的确认消息,且包2对应的RTT为30ms,发送端则可以将包1添加进乱序数据包集合并将包1对应的最小RTT记录为30ms;如果之后发送端接收到包4对应的确认消息,且包4对应的RTT为40ms,发送端则可以将包3添加进乱序数据包集合,并将包3对应的最小RTT记录为40ms,因为包1对应的最小RTT小于包4对应的RTT故包1对应的最小RTT仍为30ms;如果之后发送端接收到包5对应的确认消息,且包5对应的RTT为28ms,则可以将包1和包3对应的最小RTT均更新为28ms。
可以理解,发送端可以单独记录上述最小RTT,也可以将上述最小RTT记录在乱序数据包集合中对应的乱序数据包中。
步骤203:若目标数据包属于乱序数据包集合,则根据目标数据包的目标RTT和目标数据包对应的最小RTT调整目标TCP连接的乱序时长。
在实施中,当发送端判断目标数据包属于乱序数据包集合,即乱序数据包集合中记录有目标数据包对应的发送顺序号时,发送端可以根据目标数据包的RTT和上述目标数据包对应的最小RTT对目标TCP连接的乱序时长进行调整。具体的,可以将目标数据包的目标RTT和目标数据包对应的最小RTT的差值调整为目标TCP连接的乱序时长。这样,可以更快更准确的调整目标TCP连接的乱序时长,使乱序时长更快更准确的符合当前网络的数据包乱序情况,从而有效降低误将乱序数据包判断为丢包的概率,减少不必要的重传,进而有效节省系统资源。
可选的,发送端可以根据目标数据包对应的目标RTT和最小RTT调整目标TCP连接的乱序时长,相应的,上述步骤203的处理可以如下:获取目标数据包的发送时刻和目标ACK/SACK消息的接收时刻,生成目标数据包的目标RTT;基于目标RTT和目标数据包对应的最小RTT,调整目标TCP连接的乱序时长。
在实施中,当发送端判断目标数据包属于乱序数据包集合时,发送端可以获取目标数据包的发送时刻和目标ACK/SACK消息的接收时刻,并根据目标数据包的发送时刻和目标ACK/SACK消息的接收时刻生成目标数据包的目标RTT。然后,发送端可以获取目标数据包对应的最小RTT,并基于上述目标数据包的目标RTT和上述目标数据包对应的最小RTT,对目标TCP连接的乱序时长进行调整。以目标数据包的发送时刻为10:00:00,目标数据包对应的最小RTT为8秒为例,假设目标SACK消息对应的目标数据包属于乱序数据包集合,且目标SACK消息的接收时刻为10:00:10,发送端可以得到目标数据包的目标RTT为10秒,进而还可以得到目标TCP连接当前的实际乱序时长为2秒,并将目标TCP连接的乱序时长调整为2秒;仍以目标数据包的发送时刻为10:00:00,目标数据包对应的最小RTT为8秒为例,假设发送端按发送顺序号发送的数据包为包1、包2,接收端先接收到包2并向发送端发送了包2对应的目标SACK消息,之后,接收端又接收到包1并向发送端发送了包1对应的目标ACK消息,此时发送端则可以确定目标ACK消息对应的目标数据包为包1,如果目标ACK消息的接收时刻为10:00:15,发送端可以得到目标TCP连接当前的实际乱序时长为7秒,并将目标TCP连接的乱序时长调整为7秒。
可选的,发送端可以在目标数据包未发生过重传,或仅发生过一次重传时确定是否调整目标TCP连接对应的乱序时长,相应的,上述步骤203的处理可以如下:如果目标数据包未发生过重传,或者目标数据包仅发生过一次重传,且目标数据包的重传时刻与目标ACK/SACK消息的接收时刻的间隔时长小于预设时长,则根据目标RTT和目标数据包对应的最小RTT调整目标TCP连接的乱序时长,否则将目标数据包从乱序数据包集合中移除。
在实施中,发送端发送某个数据包时,可以记录该数据包的发送时刻,当发送端重传某个数据包时,也可以记录每次该数据包的重传时刻。故而,发送端确定目标ACK/SACK消息对应的目标数据包之后,可以根据记录的目标数据包的重传时刻的数量,确定目标数据包是否发生过重传或发生过几次重传。当目标数据包未发生过重传时,发送端可以基于目标数据包的目标RTT和目标数据包对应的最小RTT,调整目标TCP连接的乱序时长。
考虑到当目标数据包发生了多次重传,或者第一次重传目标数据包后到接收到目标数据包的目标ACK/SACK消息的间隔时长较长时,发送端无法确定该目标ACK/SACK消息对应的是初始发送的目标数据包还是重传的目标数据包,故而,发送端可以设置一个最大等待时长(可称为预设时长),如可以设置为MIN_RTT/2。这样,当目标数据包仅发生过一次重传时,发送端可以计算出目标数据包第一次发生重传的重传时刻和目标ACK/SACK消息的接收时刻的间隔时长,并判断该间隔时长是否小于上述预设时长,如果是,发送端则判断该目标ACK/SACK消息对应的是初始发送的目标数据包,然后发送端可以根据目标数据包的初始发送时刻和目标ACK/SACK消息的接收时刻生成目标数据包的目标RTT,并根据该目标RTT和目标数据包对应的最小RTT,调整目标TCP连接的乱序时长。当目标数据包发生了多次重传,或者目标数据包第一发生重传的重传时刻和目标ACK/SACK消息的接收时刻的间隔时长大于预设时长时,发送端可以将目标数据包从上述乱序数据包集合中移除。
可选的,由于基于SACK消息调整乱序时长的方法相对于基于D-SACK消息调整乱序时长的方法,可能需要占用更多的设备负载资源,故而在发送端和接收端均支持D-SACK机制的前提下,发送端在调整乱序时长时,可以先根据自身负载状况,判断是否通过上述步骤201至203来调整目标TCP连接的乱序时长,如技术人员可以在发送端设置最大负载量,当发送端的实际负载量小于上述最大负载量时,发送端则通过上述步骤201至203来调整目标TCP连接的乱序时长,反之,发送端则通过基于D-SACK机制的现有方法来调整目标TCP连接的乱序时长。
可选的,发送端还可以在接收到虚假确认消息时,将乱序数据包集合中的所有乱序数据包移除。以发送端向接收端发送的数据包按发送顺序依次为包1和包2为例,假设发送端先接收到SACK消息且该SACK消息对应的数据包是包2,然后又接收到ACK消息且该ACK消息对应的是包1,此时发送端可以判定先接收的SACK消息为虚假确认消息,且接收端只成功接收到了包1,之后发送端可以移除乱序数据包集合中的所有乱序数据包。
可选的,当有乱序数据包被多次重传或者第一次重传时刻与当前时刻的间隔时长大于预设时长时,发送端可以将该乱序数据包从乱序数据包集合中移除,相应的处理可以如下:当监测到乱序数据包集合中的第一乱序数据包发生了多次重传,或者第一乱序数据包仅发生过一次重传,且第一乱序数据包的重传时刻与当前时刻的间隔时长大于预设时长时,将第一乱序数据包从乱序数据包集合中移除。
在实施中,发送端可以实时或者周期性的对乱序数据包集合中的乱序数据包进行监测。当监测到乱序数据包集合中有乱序数据包(可称为第一乱序数据包)发生了多次重传,或者第一乱序数据包只发生过一次重传,而且第一乱序数据包的第一次重传时刻与当前时刻的间隔时长大于上述预设时长时,发送端可以将第一乱序数据包从乱序数据包集合中移除。以第一乱序数据包只发生了一次重传且重传时刻为12:00:00,当前时刻为12:00:20为例,假设预设时长为10秒,发送端则可以确定第一乱序数据包的第一次重传时刻与当前时刻的间隔时长为20秒且大于预设时长,然后发送端可以将第一乱序数据包从乱序数据包集合中移除。
可选的,发送端可以在如下两种情况下移除乱序数据包集合中的乱序数据包,其一,周期性删除乱序数据包集合中存储时长大于预设存储时长的乱序数据包;其二,当乱序数据包集合的剩余存储空间小于预设容量时,移除乱序数据包集合中存储时长最长的预设数量个乱序数据包。
在实施中,考虑到乱序数据包集合中存储的乱序数据包较多时,会占用较多的系统资源,且在乱序数据包集合中存储时长越长发生丢包重传的概率越大,故而,发送端可以为乱序数据包集合中存储的乱序数据包设置最大存储时长(可称为预设存储时长),还可以为乱序数据包集合的剩余存储空间设置最小值(可称为预设容量),以及当乱序数据包集合的剩余存储空间到达预设容量时删除的乱序数据包的数量(可称为预设数量)。然后,发送端可以周期性的移除乱序数据包集合中存储时长大于预设存储时长的乱序数据包。或者,发送端可以实时监测乱序数据包集合的存储空间使用情况,当监测到乱序数据包集合的剩余存储空间小于预设容量时,发送端可以移除乱序数据包集合中存储时长最长的预设数量个乱序数据包。
本发明实施例中,当接收到目标TCP连接的目标ACK/SACK消息时,判断目标ACK/SACK消息对应的目标数据包是否属于乱序数据包集合;若目标数据包不属于乱序数据包集合,则根据目标ACK/SACK消息在乱序数据包集合中添加乱序数据包;若目标数据包属于乱序数据包集合,则根据目标数据包的目标RTT和目标数据包对应的最小RTT调整目标TCP连接的乱序时长。这样,一方面,根据乱序数据包的RTT和乱序数据包对应的最小RTT调整TCP连接的乱序时长,可以更快更准确的使TCP连接的乱序时长符合实际乱序情况,从而减少了被误识别为丢包的数据包数量,减少不必要的重传,进而有效节省网络资源;另一方面,发送端可以根据乱序数据包的ACK/SACK消息调整TCP连接的乱序时长,实现了在SACK模式下对TCP连接的乱序时长的有效调整。
基于相同的技术构思,本发明实施例还提供了一种基于SACK模式调整乱序时长的装置,如图3所示,所述装置包括判断模块301、添加模块302和调整模块303,其中:
所述判断模块301,用于当接收到目标TCP连接的目标ACK/SACK消息时,判断所述目标ACK/SACK消息对应的目标数据包是否属于乱序数据包集合;
所述添加模块302,用于若所述目标数据包不属于所述乱序数据包集合,则根据所述目标ACK/SACK消息在所述乱序数据包集合中添加乱序数据包;
所述调整模块303,用于若所述目标数据包属于所述乱序数据包集合,则根据所述目标数据包的目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长。
可选的,所述添加模块302,具体用于:
确定所述目标ACK/SACK消息对应的目标数据包的发送顺序号和所述乱序数据包集合中的最高发送顺序号之间的空缺发送顺序号;
将所述空缺发送顺序号对应的数据包确定为乱序数据包,并按序在所述乱序数据包集合中添加所有所述乱序数据包。
可选的,所述装置还包括更新模块,用于:
根据所述目标数据包的目标RTT更新所述乱序数据包集合中各乱序数据包对应的最小RTT。
可选的,所述调整模块303,具体用于:
获取所述目标数据包的发送时刻和所述目标ACK/SACK消息的接收时刻,生成所述目标数据包的目标RTT;
基于所述目标RTT和所述目标数据包对应的最小RTT,调整所述目标TCP连接的乱序时长。
可选的,所述调整模块303,还用于:
如果所述目标数据包未发生过重传,或者所述目标数据包仅发生过一次重传,且所述目标数据包的重传时刻与所述目标ACK/SACK消息的接收时刻的间隔时长小于预设时长,则根据所述目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长,否则将所述目标数据包从所述乱序数据包集合中移除。
可选的,所述装置还包括移除模块,用于:
当监测到所述乱序数据包集合中的第一乱序数据包发生了多次重传,或者所述第一乱序数据包仅发生过一次重传,且所述第一乱序数据包的重传时刻与当前时刻的间隔时长大于预设时长时,将所述第一乱序数据包从所述乱序数据包集合中移除。
可选的,所述移除模块,还用于:
周期性删除所述乱序数据包集合中存储时长大于预设存储时长的乱序数据包;或者,
当所述乱序数据包集合的剩余存储空间小于预设容量时,移除所述乱序数据包集合中存储时长最长的预设数量个乱序数据包。
可选的,所述乱序数据包集合以链表的形式存储所述乱序数据包。
本发明实施例中,当接收到目标TCP连接的目标ACK/SACK消息时,判断目标ACK/SACK消息对应的目标数据包是否属于乱序数据包集合;若目标数据包不属于乱序数据包集合,则根据目标ACK/SACK消息在乱序数据包集合中添加乱序数据包;若目标数据包属于乱序数据包集合,则根据目标数据包的目标RTT和目标数据包对应的最小RTT调整目标TCP连接的乱序时长。这样,一方面,根据乱序数据包的RTT和乱序数据包对应的最小RTT调整TCP连接的乱序时长,可以更快更准确的使TCP连接的乱序时长符合实际乱序情况,从而减少了被误识别为丢包的数据包数量,减少不必要的重传,进而有效节省网络资源;另一方面,发送端可以根据乱序数据包的ACK/SACK消息调整TCP连接的乱序时长,实现了在SACK模式下对TCP连接的乱序时长的有效调整。
需要说明的是:上述实施例提供的基于SACK模式调整乱序时长的装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于SACK模式调整乱序时长的装置与基于SACK模式调整乱序时长的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图4是本发明实施例提供的网络设备的结构示意图。该网络设备400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器422(例如,一个或一个以上处理器)和存储器432,一个或一个以上存储应用程序442或数据444的存储介质430(例如一个或一个以上海量存储设备)。其中,存储器432和存储介质430可以是短暂存储或持久存储。存储在存储介质430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对网络设备400中的一系列指令操作。更进一步地,中央处理器422可以设置为与存储介质430通信,在网络设备400上执行存储介质430中的一系列指令操作。
网络设备400还可以包括一个或一个以上电源426,一个或一个以上有线或无线网络接口450,一个或一个以上输入输出接口458,一个或一个以上键盘456,和/或,一个或一个以上操作系统441,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD等等。
网络设备400可以包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行上述基于SACK模式调整乱序时长的指令。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (18)

1.一种基于SACK模式调整乱序时长的方法,其特征在于,所述方法包括:
当接收到目标TCP连接的目标ACK/SACK消息时,判断所述目标ACK/SACK消息对应的目标数据包是否属于乱序数据包集合;
若所述目标数据包不属于所述乱序数据包集合,则根据所述目标ACK/SACK消息在所述乱序数据包集合中添加乱序数据包;
若所述目标数据包属于所述乱序数据包集合,则根据所述目标数据包的目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标ACK/SACK消息在所述乱序数据包集合中添加乱序数据包,包括:
确定所述目标ACK/SACK消息对应的目标数据包的发送顺序号和所述乱序数据包集合中的最高发送顺序号之间的空缺发送顺序号;
将所述空缺发送顺序号对应的数据包确定为乱序数据包,并按序在所述乱序数据包集合中添加所有所述乱序数据包。
3.根据权利要求1所述的方法,其特征在于,所述根据所述目标ACK/SACK消息在所述乱序数据包集合中添加乱序数据包之后,还包括:
根据所述目标数据包的目标RTT更新所述乱序数据包集合中各乱序数据包对应的最小RTT。
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标数据包的目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长,包括:
获取所述目标数据包的发送时刻和所述目标ACK/SACK消息的接收时刻,生成所述目标数据包的目标RTT;
基于所述目标RTT和所述目标数据包对应的最小RTT,调整所述目标TCP连接的乱序时长。
5.根据权利要求1所述的方法,其特征在于,所述根据所述目标数据包的目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长,包括:
如果所述目标数据包未发生过重传,或者所述目标数据包仅发生过一次重传,且所述目标数据包的重传时刻与所述目标ACK/SACK消息的接收时刻的间隔时长小于预设时长,则根据所述目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长,否则将所述目标数据包从所述乱序数据包集合中移除。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当监测到所述乱序数据包集合中的第一乱序数据包发生了多次重传,或者所述第一乱序数据包仅发生过一次重传,且所述第一乱序数据包的重传时刻与当前时刻的间隔时长大于预设时长时,将所述第一乱序数据包从所述乱序数据包集合中移除。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
周期性删除所述乱序数据包集合中存储时长大于预设存储时长的乱序数据包;或者,
当所述乱序数据包集合的剩余存储空间小于预设容量时,移除所述乱序数据包集合中存储时长最长的预设数量个乱序数据包。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述乱序数据包集合以链表的形式存储所述乱序数据包。
9.一种基于SACK模式调整乱序时长的装置,其特征在于,所述装置包括判断模块、添加模块和调整模块,其中:
所述判断模块,用于当接收到目标TCP连接的目标ACK/SACK消息时,判断所述目标ACK/SACK消息对应的目标数据包是否属于乱序数据包集合;
所述添加模块,用于若所述目标数据包不属于所述乱序数据包集合,则根据所述目标ACK/SACK消息在所述乱序数据包集合中添加乱序数据包;
所述调整模块,用于若所述目标数据包属于所述乱序数据包集合,则根据所述目标数据包的目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长。
10.根据权利要求9所述的装置,其特征在于,所述添加模块,具体用于:
确定所述目标ACK/SACK消息对应的目标数据包的发送顺序号和所述乱序数据包集合中的最高发送顺序号之间的空缺发送顺序号;
将所述空缺发送顺序号对应的数据包确定为乱序数据包,并按序在所述乱序数据包集合中添加所有所述乱序数据包。
11.根据权利要求9所述的装置,其特征在于,所述装置还包括更新模块,用于:
根据所述目标数据包的目标RTT更新所述乱序数据包集合中各乱序数据包对应的的最小RTT。
12.根据权利要求11所述的装置,其特征在于,所述调整模块,具体用于:
获取所述目标数据包的发送时刻和所述目标ACK/SACK消息的接收时刻,生成所述目标数据包的目标RTT;
基于所述目标RTT和所述目标数据包对应的最小RTT,调整所述目标TCP连接的乱序时长。
13.根据权利要求9所述的装置,其特征在于,所述调整模块,还用于:
如果所述目标数据包未发生过重传,或者所述目标数据包仅发生过一次重传,且所述目标数据包的重传时刻与所述目标ACK/SACK消息的接收时刻的间隔时长小于预设时长,则根据所述目标RTT和所述目标数据包对应的最小RTT调整所述目标TCP连接的乱序时长,否则将所述目标数据包从所述乱序数据包集合中移除。
14.根据权利要求9所述的装置,其特征在于,所述装置还包括移除模块,用于:
当监测到所述乱序数据包集合中的第一乱序数据包发生了多次重传,或者所述第一乱序数据包仅发生过一次重传,且所述第一乱序数据包的重传时刻与当前时刻的间隔时长大于预设时长时,将所述第一乱序数据包从所述乱序数据包集合中移除。
15.根据权利要求9所述的装置,其特征在于,所述移除模块,还用于:
周期性删除所述乱序数据包集合中存储时长大于预设存储时长的乱序数据包;或者,
当所述乱序数据包集合的剩余存储空间小于预设容量时,移除所述乱序数据包集合中存储时长最长的预设数量个乱序数据包。
16.根据权利要求9-15任一项所述的装置,其特征在于,所述乱序数据包集合以链表的形式存储所述乱序数据包。
17.一种网络设备,其特征在于,所述网络设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1-8任一项所述的基于SACK模式调整乱序时长的方法。
18.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1-8任一项所述的基于SACK模式调整乱序时长的方法。
CN201910401199.1A 2019-05-15 2019-05-15 一种基于sack模式调整乱序时长的方法和装置 Expired - Fee Related CN110266446B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910401199.1A CN110266446B (zh) 2019-05-15 2019-05-15 一种基于sack模式调整乱序时长的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910401199.1A CN110266446B (zh) 2019-05-15 2019-05-15 一种基于sack模式调整乱序时长的方法和装置

Publications (2)

Publication Number Publication Date
CN110266446A true CN110266446A (zh) 2019-09-20
CN110266446B CN110266446B (zh) 2022-05-20

Family

ID=67913156

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910401199.1A Expired - Fee Related CN110266446B (zh) 2019-05-15 2019-05-15 一种基于sack模式调整乱序时长的方法和装置

Country Status (1)

Country Link
CN (1) CN110266446B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113141239A (zh) * 2021-04-26 2021-07-20 广州市百果园网络科技有限公司 一种数据重传的方法、装置、设备和存储介质
CN115002005A (zh) * 2022-05-18 2022-09-02 百果园技术(新加坡)有限公司 一种丢包率计算方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050198350A1 (en) * 2004-01-15 2005-09-08 Microsoft Corporation Spurios timeout detection in TCP based networks
CN1671094A (zh) * 2004-03-15 2005-09-21 微软公司 对假超时的响应
CN101697631A (zh) * 2009-10-28 2010-04-21 中兴通讯股份有限公司 一种可序数据包的乱序调整方法及装置
CN108270682A (zh) * 2016-12-30 2018-07-10 华为技术有限公司 一种报文传输方法、终端、网络设备及通信系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050198350A1 (en) * 2004-01-15 2005-09-08 Microsoft Corporation Spurios timeout detection in TCP based networks
CN1671094A (zh) * 2004-03-15 2005-09-21 微软公司 对假超时的响应
CN101697631A (zh) * 2009-10-28 2010-04-21 中兴通讯股份有限公司 一种可序数据包的乱序调整方法及装置
CN108270682A (zh) * 2016-12-30 2018-07-10 华为技术有限公司 一种报文传输方法、终端、网络设备及通信系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
赵丽莉 等: "TCP协议乱序数据包处理算法综述", 《软件工程师》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113141239A (zh) * 2021-04-26 2021-07-20 广州市百果园网络科技有限公司 一种数据重传的方法、装置、设备和存储介质
CN113141239B (zh) * 2021-04-26 2022-02-22 广州市百果园网络科技有限公司 一种数据重传的方法、装置、设备和存储介质
CN115002005A (zh) * 2022-05-18 2022-09-02 百果园技术(新加坡)有限公司 一种丢包率计算方法、装置、设备及存储介质
CN115002005B (zh) * 2022-05-18 2023-12-12 百果园技术(新加坡)有限公司 一种丢包率计算方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN110266446B (zh) 2022-05-20

Similar Documents

Publication Publication Date Title
CN102045362B (zh) 一种基于udp协议的数据传输方法和系统
JP5767706B2 (ja) データの送信方法、送信機、受信機、並びにプログラム
CN101369877B (zh) 无线传输控制协议处理方法和设备
CN110418376A (zh) 数据传输方法及装置
CN105791154B (zh) 一种基于udp的数据传输方法及装置
CN104158760B (zh) 一种广域网tcp单边加速的方法及系统
KR102046792B1 (ko) 송신 노드로부터 목적지 노드로의 데이터 전송 방법
CN110233881A (zh) 业务请求处理方法、装置、设备及存储介质
CN103546917B (zh) 数据传输方法和装置
CN102857354A (zh) 告警信息上报方法、装置及系统
CN104093170A (zh) 基于tcp的数据传输方法和tcp代理装置
CN101682916B (zh) 在移动通信系统中发送rlc pdu和分配无线资源的方法以及移动通信的rlc实体
CN104780028A (zh) 一种实现tcp数据报文重传的方法及设备
CN102655447A (zh) 一种上行数据的传输方法及装置
CN110266446A (zh) 一种基于sack模式调整乱序时长的方法和装置
CN108322401A (zh) 网络传输拥塞的控制方法及装置
CN102148662A (zh) 一种数据发送速率的调整方法及装置
CN107612664A (zh) 一种无线链路控制层rlc数据重传方法、装置及存储介质
CN109560897B (zh) 一种tcp重传方法和装置
CN109428684B (zh) 一种数据传输方法、rlc实体及pdcp实体
GB2417390A (en) Adjusting packet transmission rate in response to retransmit information
US7609639B2 (en) Negative acknowledgment (NAK) suppression
CN102238206A (zh) 映像文件的补包方法
CN102082646B (zh) 一种控制关于缓存状态报告的定时器的方法及装置
CN110808917A (zh) 多链路聚合数据重传方法及发送设备

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20220520

CF01 Termination of patent right due to non-payment of annual fee