一种提高数据中心tcp响应速度的方法及系统的制作方法

文档序号:10572599阅读:438来源:国知局
一种提高数据中心tcp响应速度的方法及系统的制作方法
【专利摘要】本发明提供一种提高数据中心TCP响应速度的方法及系统,属于计算机之间通讯优化领域。本发明方法包括如下步骤:搜索SRTTold;判断SRTTold是否存在,如果是,根据SRTTold计算建立连接时RTO,如果否,将RTO设为一定值;发送建立连接时的握手信号SYN,收到应答信号SYN?ACK;设置发送数据包时的重传定时器的值RTOdata;发送第一个数据包;判断是否还有数据要发送,如果是,发送数据并动态更新SRTTold记录,直至所有数据发送完成。本发明通过优化RTO初始值的计算和设置,使得数据中心网络中的TCP流能够对网络丢包等情形做出快速响应,大大提高TCP响应速度。
【专利说明】
一种提高数据中心TCP响应速度的方法及系统
技术领域
[0001] 本发明涉及计算机之间通讯优化领域,尤其涉及一种提高数据中心TCP响应速度 的方法及系统。
【背景技术】
[0002] TCP是目前使用最为广泛的传输协议,它提供端到端的可靠传输服务。TCP采用流 量控制机制以避免"拥塞崩溃",Jacobson V针对TCP的流量控制机制导致的"拥塞崩溃"问 题并提出了一系列改进措施。简单的说就是,网络空闲时,TCP增加其数据发送速率,而当网 络变得拥塞时降低其数据发送速率。TCP用包丢失作为网络拥塞的指示器并以此调整其数 据发送速率。由于缺少显示拥塞通知ECN,TCP采用重复确认和重传机制两种方式推断包丢 失和网络拥塞。重传计时器是TCP重传机制的核心。TCP通过确认从对端接收的数据以保证 可靠传输,而数据和确认都有可能丢失。TCP通过设定重传计时器来解决这个问题。重传计 时器在TCP连接发送端发送数据时设定,如果定时器已超时而对端的确认还未到达,TCP将 重传数据,重传定时器的值称为RT0。为了适应不断变化的网络环境,RT0是动态计算的。RT0 的计算取决于TCP为该连接报文段测量的往返时间RTT和该报文段已被重传的次数。TCP每 测量一次RTT即更新一次RT0(重传的包其RTT不用来计算RT0)<JETF(互联网工程任务组)最 新建议标准建议将RT0初始值从3秒减少到1秒。
[0003] 通过重传计时器推断包丢失虽然可以保证TCP的可靠传输,但也带来了 TCP性能的 严重退化。当包丢失而没有触发dupack时TCP发送者除了等待RT0超时重发数据包之外什么 都不能做,因此,RT0值的选取尤为重要。偏大的RT0值会造成过多的等待时间,而偏小的RT0 值则会导致不必要的重传。表1给出了常用操作系统典型的RTT和RTOmin值。
[0004] 表 1 典型的 RTT 和 RTOmin
[0005]
[0006] 然而,随着TCP的广泛应用,TCP重传机制带来的性能退化在一些应用TCP的特定场 景中表现的特别明显,其中的典型例子就是数据中心网络环境。数据中心支持大量的服务 和应用。现代数据中心网络与广义网具有很大的差别,具有高带宽、低时延等特点。大部分 数据中心网络采用TCP协议进行节点间的通信,但TCP重传机制带来的性能退化严重降低了 数据中心网络的性能。数据中心的TCP连接RTT-般小于250微秒(不计排队时间),而在目前 数据中心网络中的大部分TCP实现中,RT0的初始值设为1秒,RTOmin被设置为200毫秒。数据 中心网络中的很多服务和应用是短数据流,考虑如下场景:一个客户端通过lGbit/s的链路 向服务器发送1KB的数据包(也可能是SYN和SYN-ACK包)时,相关文献指出,在某一瓶颈链路 较为拥堵的情况下,该传输有1 %的可能会发生TCP超时重传。若SYN包丢失,客户端至少需 要再等待1秒才能重传 SYN包,仅仅连接建立阶段将花费1秒以上的时间,而整个通信正常情 况下的传输时间仅仅几十毫秒甚至几毫秒;若传输的过程中数据包丢失,该客户端至少需 要再等待200毫秒才能再次发送数据请求包,相对于微秒级的RTT,过多的等待时间严重降 低了数据中心网络应用的通信效率。
[0007] 在广域网中,通过减少RT0的初始值以减少重传机制带来的性能退化有诸多限制 条件。首先,在两个通信实体第一次数据交换之前,TCP发送者没有任何信息可以用来估算 RTT,目前的TCP只能保守的设置一个较大的RT0初始值来避免不必要的重传;其次,广域网 中TCP连接的RTT值波动范围非常大,RT0初始值过小会引起TCP连接建立阶段不必要的重 传。最后,广域网中的通信任务持续时间可达几秒甚至数分钟,其RT0初始值偏大所带来的 空闲等待时间影响并不大,但是在以短流居多且RTT为微妙级的数据中心网络中这些等待 时间带来的影响是巨大的。由于以上限制,在广域网环境下对RT0初始值以及RTOmin进行改 进的相关技术几乎一片空白。
[0008] 在数据中心网络中,由于数据中心网络RTT波动范围相对较小,上述第二条限制可 以取消,这使得减小RT0初始值及RTOmin变得可能。在关于数据中心网络RT0的相关技术研 究中,Vasudevan和Phanishaye等人实现了高精度时钟并用来解决数据中心的TCP incast 问题。
[0009] 以上的现有技术研究工作均没有针对性的提出通过改进RT0初始值及RTOmin的设 置进而提高数据中心网络环境下的TCP响应速度的方法。

【发明内容】

[0010] 为解决现有技术中的问题,本发明提供一种提高数据中心TCP响应速度的方法,还 提供了 一种实现上述方法的系统。
[0011] 本发明的方法包括如下步骤:
[0012] S1:开始,搜索通讯双方上次通讯的SRTToid值,其中,SRTT为平滑后的RTT值;
[0013] S2:判断SRTToid值是否存在,如果是,根据SRTToid值计算建立连接时重传定时器的 值RT0,如果否,将重传定时器的值RT0设定为一定值;
[0014] S3:发送建立连接时的握手信号SYN,收到应答信号SYN-ACK;
[0015] S4:设置发送数据包时的重传定时器的值RT0data;
[0016] S5:发送第一个数据包;
[0017] S6:判断是否还有数据要发送,如果是,发送数据并动态更新SRTTcad记录,直至所 有数据发送完成,结束。
[0018] 本发明做如下改进,所述步骤S4包括如下步骤:判断握手信号SYN是否重传,如果 是,将发送数据包时的重传定时器的值RT0 data设为3秒,如果否,根据RTTsyn的值计算RT0data, 其中,RTT syn为握手信号SYN没有重传情况下的RTT值。
[0019] 或者,本发明做如下改进:所述步骤S4包括如下步骤:
[0020] S41:判断是否存在历史连接记录,如果否,执行步骤S43,如果是,执行步骤S42; [0021] S42:根据实际建立连接的时间计算发送数据包时的重传定时器的值RT0data;然后 执行步骤S5;
[0022] S43:判断握手信号SYN是否重传,如果是,将发送数据包时的重传定时器的值 RT0data设为3秒,如果否,根据RTTsyJ^值计算RT0data,其中,RTT syn为握手信号SYN没有重传情 况下的RTT值,然后执行步骤S5。
[0023]本发明作进一步改进,所述步骤S42中,如果握手信号SYN重传,实际建立连接的时 间RTTsyA收到应答信号SYN-ACK的时间Tsyn_ack与发送握手信号的时间Tf irst_syn的差值,然 后根据RTTsyn值计算发送数据包时的重传定时器的值RT0 data。
[0024] 本发明还可以做如下改进,在步骤S6执行之前,还包括记录DIFsyn步骤B,所述 DIFsyn为最近一次通讯双方通讯时,若SYN未发生重传时,RTTsyn与第一个数据包往返时延 RTTdata_first之间的差值。
[0025] 本发明作进一步改进,所述记录DIFSyn步骤B包括如下:
[0026] B1:记录收到第一个有效数据包的RTT值;
[0027] B2:判断SYN是否重传,如果是,执行步骤S6,如果否,根据步骤B1中记录的RTT值计 算DIFsyn值,并更新SRTToid值,然后执行步骤S6,其中,DIFsyn = RTT-RTTsyn。
[0028]本发明作进一步改进,在步骤S1中,除了搜索通讯双方上次通讯的SRTToid值之外, 还搜索DIFsyn值。
[0029]本发明作进一步改进,所述步骤S4包括如下步骤:
[0030] S41:判断是否存在历史连接记录,如果否,执行步骤S43,如果是,执行步骤S42;
[0031] S42:判断SYN是否重传,如果是,根据实际建立连接的时间计算发送数据包时的重 传定时器的值RT0data,然后执行步骤S5,如果否,利用修正后的建立连接时间RTIV+syn计算 发送数据包时的重传定时器的值RT0data,其中,RTTopt+syf RTTsyn+DIFsyn,然后执行步骤S5; [0032] S43:判断握手信号SYN是否重传,如果是,将发送数据包时的重传定时器的值 RT0data设为3秒,如果否,根据RTTsyJ^值计算RT0data,其中,RTT syn为握手信号SYN没有重传情 况下的RTT值,然后执行步骤S5。
[0033]本发明作进一步改进,在步骤S42中,实际建立连接的时间RTTsynS收到应答信号 SYN-ACK的时间Tsyn_ack与发送握手信号的时间Tfirst_ syn的差值,然后根据RTTsyn值计算发送 数据包时的重传定时器的值RT0data。
[0034]本发明还提供了一种实现上述提高数据中心TCP响应速度的方法的系统,包括:搜 索模块:用于搜索通讯双方上次通讯的SRTToid值,其中,SRTT为平滑后的RTT值;
[0035]第一判断模块:用于判断SRTToid值是否存在,如果是,根据SRTToid值计算建立连接 时重传定时器的值RT0,如果否,将重传定时器的值RT0设定为一定值;
[0036]建立连接模块:用于发送建立连接时的握手信号SYN,收到应答信号SYN-ACK;
[0037]设置模块:用于设置发送数据包时的重传定时器的值RT0data;
[0038] 发送模块:用于发送第一个数据包;
[0039] 第二判断模块:用于判断是否还有数据要发送,如果是,发送数据并动态更新 SRTTcad记录,直至所有数据发送完成。
[0040] 与现有技术相比,本发明的有益效果是:本发明利用数据中心网络环境流量及拓 扑相对稳定的特性,利用节点间最近通信的SRTT记录在保证安全性的前提下,通过优化RT0 初始值的计算和设置使得数据中心网络中的TCP流能够对网络丢包等情形做出快速响应, 大大提高数据中心网络环境下的TCP响应速度,尤其对于短数据流本发明取得的有益效果 更为突出;利用修正后的RTIV_syn建立连接时间计算得出的RTOdata既不会太大又能减小因 第一个数据包伪到重传导致第二个数据包RTO太大的问题;解决了当SYN重传时第一个数据 包重传等待时间过长的问题,大大缩短了数据包传输响应时间。
【附图说明】
[0041 ]图1为本发明实施例一方法流程图;
[0042]图2为本发明实施例二方法流程图;
[0043]图3为本发明实施例三方法流程图;
[0044] 图4为TCP/IP协议栈模块间数据流图。
【具体实施方式】
[0045] 下面结合附图和实施例对本发明做进一步详细说明。
[0046] 如图1所示,为了适应通信时延不断减小的现代网络,RFC 6298(IETF(互联网工程 任务组)订立的关于TCP网络协议标准)提出,在TCP连接建立时,将RT0的初始值由的3秒降 低至1秒。如果在三次握手阶段没有发生重传则在数据包开始传输时RT0等于1秒,否则,将 RT0的值重新置为较为保守的3秒。但是,1秒的初始值相对于数据中心网络仅几百微秒的时 延还是太大。如果三次握手阶段发生SYN超时重传,整个传输过程将会超过1秒,这是不能接 受的。在数据中心网络中,网络拓扑和路由相对稳定,节点间通信时延变化较小,因此利用 现有技术在数据中心网络环境下所实现的高精度时钟,我们就具备了在数据中心网络中减 小RT0初始值的条件,就可以解决SYN包超时重传等待时间过长的问题。
[0047]作为本发明的第一个实施例,两个主机第一次通讯时,包括如下步骤:
[0048] S1:开始,搜索通讯双方上次通讯的SRTToid值,其中,SRTT为平滑后的RTT值;
[0049] S2:判断SRTToid值是否存在,因双方是第一次通讯,因此SRTToid值不存在,那么将 重传定时器的值RT0设定为1秒;
[0050] S3:发送建立连接时的握手信号SYN,收到应答信号SYN-ACK;
[0051] S4:判断握手信号SYN是否重传,如果是,将发送数据包时的重传定时器的值 RT0data设为3秒,如果否,根据RTTsyn的值计算RT0data,本例的计算公式为:RT0 data = RTTsyn+ max(G,4*(RTTsyn/2)),其中,RTTsyn代表SYN包没有重传情况下的RTT,G代表时钟粒度,这里 为1微秒;
[0052] S5:发送第一个数据包;
[0053] S6:判断是否还有数据要发送,如果是,发送数据并动态更新SRTTcad记录,直至所 有数据发送完成,结束。
[0054]当两个主机第二次及以上进行通讯时,具体步骤如下:
[0055] S1:开始,搜索通讯双方上次通讯的SRTTcad值;
[0056] S2:判断SRTToid值是否存在,因双方是第二次或更多次通讯,因此SRTTold值存在, 那么就根据SRTTold值计算建立连接时重传定时器的值RT0,本例的计算公式为:RT0 = SRTT〇id+max(G,4*(SRTT〇id/2)),RT0min=G;
[0057] S3:发送建立连接时的握手信号SYN,收到应答信号SYN-ACK;
[0058] S4:判断握手信号SYN是否重传,如果是,将发送数据包时的重传定时器的值 RT0data设为3秒,如果否,根据RTTsyn的值计算RT0data,本例的计算公式为:RT0 data = RTTsyn+ max(G,4*(RTTsyn/2)),其中,RTTsyn代表SYN包没有重传情况下的RTT,G代表时钟粒度,这里 为1微秒;
[0059] S5:发送第一个数据包;
[0060] S6:判断是否还有数据要发送,如果是,发送数据并动态更新SRTTcad记录,直至所 有数据发送完成,结束。
[0061 ]本实施例重点解决建立连接时,SYN包超时重传等待时间过长的问题,以下举例具 体说明。
[0062] 假设主机A向主机B发送大小为2KB的数据(比如,一个网页),包大小为1KB,链路带 宽为lGbit/s,链路时延为30微秒。理想情况下,该传输会在200微秒内结束。但是,如果连接 建立阶段发生SYN包或者SYN-ACK包丢失,按照RFC 6298的建议,则整个传输过程需要耗费 Is以上。因此,为了减少SYN超时重传等待的时间,本发明做出如下技术改进:
[0063] 主机A会在步骤S6中记录过去一段时间内与其通信的主机之间通信时的SRTT(也 就是平滑后的RTT值)。假如主机A记录了上一次与B通信时的SRTToid值,在这次连接建立时, 也就是步骤S2中,SRTToid值存在,本发明将所记录的SRTToid值作为本次通信的RTT的一个样 本。RFC 6298中得到第一个数据包传输的RTT样本R之后计算RT0的方法如下:
[0064] SRTT = R
[0065] RTTVAR = R/2
[0066] RTO = SRTT+max(G,K*RTTVAR)
[0067] 其中:K = 4,G代表时钟粒度,Linux 3.13内核中的值为200毫秒。
[0068] 参照上述做法,我们将SRTToid作为一个RTT样本值来计算TCP连接建立时的RT0初 始值。
[0069] RTO = SRTToid+max (G,4* (SRTToid/2))
[0070] RT0min=G
[0071] 由于部署了高精度时钟,G为1微秒而不是200毫秒,因此,RTOmin的值从200毫秒降 至1微秒。值得注意的是,这里并没有初始化本次传输的SRTT以及RTTVAR的值,只是用 SRTToid计算RT0的初始值。因为SRTToid只是对本次通信RTT的一个估计,并不能完全代表这 次通信的某一 RTT样本值。这样做的好处是既合理地缩小了 RT0的初始值,又不影响本次通 信SRTT及RTTVAR计算的准确性,并且,随着通讯次数的增多,SRTToid的值也更加精准。
[0072]如图2所示,作为本发明的第二个实施例,主要是为了优化SYN重传时第一个数据 包的RT0设置,大大缩短了数据包的重传等待时间。
[0073] RFC6298中,当SYN发生重传时,第一个数据包重传时的RT0值此时会被重新设置为 3秒。这样做的依据在于,连接建立阶段的丢包可以被视为网络拥塞的标志,因此当连接建 立的握手阶段发生SYN包重传时应当把第一个数据包发送之前的RT0值设置德更加保守。但 是,由于数据中心网络的高带宽和低时延特性,其丢包更可能是由于瞬时的流量激增而造 成的,一般不会持续太长时间,显然3秒的等待时间还是太长了。
[0074]因此,为了解决当SYN包重传时第一个数据包重传等待时间过长的问题,本发明对 实施例一中的步骤S4做了如下改进,所述步骤S4包括如下步骤:
[0075] S41:判断是否存在历史连接记录,如果否,执行步骤S43,如果是,执行步骤S42; [0076] S42:根据实际建立连接的时间计算发送数据包时的重传定时器的值RT0data;然后 执行步骤S5;
[0077] S43:判断握手信号SYN是否重传,如果是,将发送数据包时的重传定时器的值 RT0data设为3秒,如果否,根据RTTsyJ^值计算RT0data,其中,RTT syn为握手信号SYN没有重传情 况下的RTT值,然后执行步骤S5。
[0078] 本实施例还沿用第一个实施例的例子进一步说明:
[0079] 如果主机A和主机B为第一次通讯,在步骤S3执行后,先执行判断步骤S41,判定不 会有历史连接记录,那么就还是按照第一个实施例的顺序执行,也就是执行本实施例的步 骤S43:判断握手信号SYN是否重传,如果是,将发送数据包时的重传定时器的值RT0 data设为 3秒,如果否,根据RTTsyJ^值计算RT0data,其中,RTT syn为握手信号SYN没有重传情况下的RTT 值,然后执行步骤S5。
[0080] 当主机A和主机B为第二次以上通讯时,在步骤S3执行完后,执行判断步骤S41,判 断是否存在历史连接记录,本次存在历史连接记录,那么接下来执行步骤S42;
[0081] S42:根据实际建立连接的时间计算发送数据包时的重传定时器的值RT0data;然后 执行步骤S5。
[0082]在所述步骤S42中,如果握手信号SYN重传,实际建立连接的时间RTTsyn为收到应答 信号SYN-ACK的时间Tsyn_ac;k与发送握手信号的时间Tf irst_syn的差值,然后根据RTTsyn值计算 发送数据包时的重传定时器的值RT0 data。
[0083]因此,本例的计算公式如下:
[0084] RTTsyn=Tsyn_ack-Tfirst_ syn,其中,Tsyn_ack 代表连接建立请求方收到 SYN-ACK 的时间, Tfirst_syn代表连接建立请求方发送第一个SYN包的时间。也就是说,当SYN没有发生重传时, 这里计算出的訂了^与实际的SYN包的RTT相同;当SYN发生重传时,这里计算的RTT syn则大于 实际的SYN包的RTT值。
[0085]然后第一个数据包的 RT0 按如下方式计算:RT0data = RTTsyn+max(G,4*(RTTsyn/2)), [0086] 其中,RTTsyn代表SYN包没有重传情况下的RTT,G代表时钟粒度,这里为1微秒。
[0087]利用修改后的技术方案得到的RTTsyd^SYN发生重传时第一个数据包的RT0进行计 算,当SYN发生重传时利用此时偏大的RTTsyn计算得出的RT0已经相对保守,但是相对于3秒 的设置显然还是大大缩短了重传等待时间。
[0088]如图3所示,作为本发明的第三个实施例,主要是为了解决SYN包RTT偏小导致的伪 到重传问题。
[0089]依据RFC 6298的建议,当TCP连接建立阶段没有发生重传时,第一个数据包的RT0 按如下方式计算:
[0090] RTOdata = RTTsyn+max ( G , 4* ( RTTsyn/2 ))
[0091] 其中,RTTsyn代表SYN包没有重传情况下的RTT,G代表时钟粒度,这里为1微秒。此 外,当SYN发生重传时,RT0的值此时会被重新设置为3秒。
[0092]由于SYN包比正常的数据包要小,因此RTTsyn要比正常的数据包RTT要小,甚至 RTTsynf到正常数据包RTT的一半。显然,采用这种方式估算出的第一个数据包的RT0偏小。 若主机A发送的第一个数据包由于RT0估值过小而发生超时重传(伪到重传),则此时RT0计 算中使用的退避指数由1变为2,若此时第二个数据包也经历超时,由于此时此次传输还没 有获得有效的RTT样本,退避指数不会重置,则第二个数据包的RT0 = 2*initialRT0 = 2s,显 然,这样造成的等待时间是巨大的。
[0093]为了减小这种情况发生的概率,本发明做出如下技术改进:
[0094] 在步骤S6执行之前,还包括记录DIFsyn步骤B,所述DIFsyn为最近一次通讯双方通讯 时,若SYN未发生重传时,RTTsyn与第一个数据包往返时延RTTdata_first之间的差值。
[0095] 本例所述记录DIFsyn步骤B包括如下:
[0096] B1:记录收到第一个有效数据包的RTT值;
[0097] B2:判断SYN是否重传,如果是,执行步骤S6,如果否,根据步骤B1中记录的RTT值计 算DIFsyn值,并更新SRTToid值,然后执行步骤S6,其中,DIFsyn = RTT-RTTsyn。
[0098] 本例还沿用实施例一的例子说明:主机A除了记录过去一段时间内与其通信的主 机之间通信时的SRTT之外,还记录下最近一次双方通信时若SYN未发生重传1^_与第一个 数据包的往返时延RTT data_first之间的差值DIFsyn,DIFsyn=RTT-RTT syn。
[0099] 在本次通信时,在步骤S1中,除了搜索通讯双方上次通讯的SRTToid值之外,还搜索 DIFsyn值;此外,在步骤S3执行完毕,还先执行判断步骤S41:
[0100] S41:判断是否存在历史连接记录,如果否,执行步骤S43,如果是,执行步骤S42; [0101] S42:判断SYN是否重传,如果是,根据实际建立连接的时间计算发送数据包时的重 传定时器的值RT0data,然后执行步骤S5,如果否,利用修正后的建立连接时间RTIV+syn计算 发送数据包时的重传定时器的值RT0 data,其中,RTTopt+syf RTTsyn+DIFsyn,然后执行步骤S5;
[0102] S43:判断握手信号SYN是否重传,如果是,将发送数据包时的重传定时器的值 RT0data设为3秒,如果否,根据RTTsyJ^值计算RT0data,其中,RTT syn为握手信号SYN没有重传情 况下的RTT值,然后执行步骤S5。
[0103] 如果主机A和主机B为第一次通讯,那么就不会有历史连接记录,那么接下来就还 是按照实施例一的顺序执行,也就是执行S43,然后,执行完步骤S5,在步骤S6执行前,执行 记录DIFsyn步骤B,计算DIF syn值,并更新SRTToid值。
[0104] 当主机A和主机B为第二次以上通讯时,在步骤S1中,搜索通讯双方上次通讯的 SRTToid值和01?^"值,在步骤S3执行完后,执行判断步骤S41:判断是否存在历史连接记录, 本次存在历史连接记录,那么接下来执行步骤S42;
[0105] S42:判断SYN是否重传,如果是,根据实际建立连接的时间计算发送数据包时的重 传定时器的值RT0data,然后执行步骤S5,如果否,利用修正后的建立连接时间RTIV+syn计算 发送数据包时的重传定时器的值RT0 data,其中,RTTopt+syf RTTsyn+DIFsyn,然后执行步骤S5。
[0106] 所述步骤S42中,如果握手信号SYN重传,实际建立连接的时间RTTsyn为收到应答信 号SYN-ACK的时间T syn_ack与发送握手信号的时间Tf irst_syn的差值,然后根据RTTsyr^计算发 送数据包时的重传定时器的值RT0 data。计算公式为:RTTsyn = Tsyn_ack-Tfirst_syn,RT0d ata = RTTSyn+max (G,4* (RTTSyn/2)) 〇
[0107] 其中,Tsyn_ack代表连接建立请求方收到SYN-ACK的时间,Tfirst_ synR表连接建立请 求方发送第一个SYN包的时间。也就是说,当SYN没有发生重传时,这里计算出的RTTsyn与实 际的SYN包的RTT相同;当SYN发生重传时,这里计算的RTT syn则大于实际的SYN包的RTT值。利 用修改后的技术方案得到的RTTsydiSYN发生重传时第一个数据包的RT0进行计算,当SYN发 生重传时利用此时偏大的RTTsyn计算得出的RTO已经相对保守,但是相对于3秒的设置显然 还是大大缩短了重传等待时间。
[0108] 在所述步骤S42中,如果握手信号SYN没有重传,那么对RTTsyn进行如下修正:
[0109] RTT op t_syn = RTT syn+D I Fsyn
[01 10] RTOdata = RTT op t_syn+max ( G , 4* ( RTTopt_syn/2 ))
[0111] 利用修正后的RTTQpt_syn计算计算得出的RT0data既不会太大又能减小因第一个数据 包伪到重传导致第二个数据包RT0太大的问题。
[0112] 本发明所采用的技术方案在实施过程中只要求节点在本地存储历史传输记录,且 在没有改变现行网络中TCP协议的传输行为的前提下,对TCP初始参数的设置进行了优化, 因此具有很强的可实施性。节点保存历史传输信息所使用的基本数据结构如表2所示。
[0113] '[0114]表2历史传输信息数据结构
' '
[0115]在对TCP/IP协议栈的具体修改实现中,协议栈相关的主要模块间的数据流如图4 中的箭头所示,其中,各模块的主要功能如下:
[0116]历史信息存储模块:主要负责利用表2中的数据结构对节点间历史传输信息的存 储;
[0117] 查询接口:主要负责在连接建立时对历史信息进行查询并返回结果;
[0118] 更新接口 :主要负责在数据传输过程中动态更新历史传输信息;
[0119] 算法处理:主要负责对TCP/IP协议栈的初始化部分进行修改。
[0120] 本发明利用数据中心网络环境流量及拓扑相对稳定的特性,利用节点间最近通信 的SRTT记录在保证安全性的前提下,通过优化RT0初始值的计算和设置使得数据中心网络 中的TCP流能够对网络丢包等情形做出快速响应,大大提高数据中心网络环境下的TCP响应 速度,尤其对于短数据流本发明取得的有益效果更为突出。
[0121] 此外,本发明还提供了一种实现上述方法的系统,包括搜索模块:用于搜索通讯双 方上次通讯的SRTToid值,其中,SRTT为平滑后的RTT值;
[0122] 第一判断模块:用于判断SRTToid值是否存在,如果是,根据SRTToid值计算建立连接 时重传定时器的值RT0,如果否,将重传定时器的值RT0设定为一定值;
[0123] 建立连接模块:用于发送建立连接时的握手信号SYN,收到应答信号SYN-ACK;
[0124] 设置模块:用于设置发送数据包时的重传定时器的值RT0data;
[0125] 发送模块:用于发送第一个数据包;
[0126] 第二判断模块:用于判断是否还有数据要发送,如果是,发送数据并动态更新 SRTTcad记录,直至所有数据发送完成。
[0127] 为了解决在数据包传输时,RT0data既不会太大又能减小因第一个数据包伪到重传 导致第二个数据包RT0太大的问题,本发明还包括记录DIF syn模块:设置在发送模块和第二 判断模块之间,用于记录〇1?^"值,所述DIFsyn为最近一次通讯双方通讯时,若SYN未发生重 传时,RTTsyn与第一个数据包往返时延RTTdata_first之间的差值。当通讯双方建立连接后,发 送第一个数据包之前,如果握手信号SYN没有重传,则利用DIFsyn值修正RTTsyn值。
[0128]以上所述之【具体实施方式】为本发明的较佳实施方式,并非以此限定本发明的具体 实施范围,本发明的范围包括并不限于本【具体实施方式】,凡依照本发明所作的等效变化均 在本发明的保护范围内。
【主权项】
1. 一种提高数据中心TCP响应速度的方法,其特征在于包括如下步骤: Sl:开始,搜索通讯双方上次通讯的SRTTc1Id值,其中,SRTT为平滑后的RTT值; S2:判断SRTToid值是否存在,如果是,根据SRTToid值计算建立连接时重传定时器的值 RTO,如果否,将重传定时器的值RTO设定为一定值; S3:发送建立连接时的握手信号SYN,收到应答信号SYN-ACK; S4:设置发送数据包时的重传定时器的值RTOdata; S5:发送第一个数据包; S6:判断是否还有数据要发送,如果是,发送数据并动态更新SRTTcild记录,直至所有数 据发送完成,结束。2. 根据权利要求1所述的提高数据中心TCP响应速度的方法,其特征在于:所述步骤S4 包括如下步骤:判断握手信号SYN是否重传,如果是,将发送数据包时的重传定时器的值 RTOdata设为3秒,如果否,根据RTTsyJ^值计算RTOdata,其中,RTT syn为握手信号SYN没有重传情 况下的RTT值。3. 根据权利要求1所述的提高数据中心TCP响应速度的方法,其特征在于:所述步骤S4 包括如下步骤: S41:判断是否存在历史连接记录,如果否,执行步骤S43,如果是,执行步骤S42; S42:根据实际建立连接的时间计算发送数据包时的重传定时器的值RTOdata;S后执行 步骤S5; S43:判断握手信号SYN是否重传,如果是,将发送数据包时的重传定时器的值RTOdata设 为3秒,如果否,根据RTTsyJ^值计算RTOdata,其中,RTTsyn为握手信号SYN没有重传情况下的 RTT值,然后执行步骤S5。4. 根据权利要求3所述的提高数据中心TCP响应速度的方法,其特征在于:所述步骤S42 中,如果握手信号SYN重传,实际建立连接的时间RTT syn为收到应答信号SYN-ACK的时间 了^+^与发送握手信号的时间Tfirst_ syn的差值,然后根据RTTsyn值计算发送数据包时的重传 定时器的值RTOdata。5. 根据权利要求1所述的提高数据中心TCP响应速度的方法,其特征在于:在步骤S6执 行之前,还包括记录DIFsyn步骤B,所述DIF syn为最近一次通讯双方通讯时,若SYN未发生重传 时,RTTsyn与第一个数据包往返时延RTT data_first之间的差值。6. 根据权利要求5所述的提高数据中心TCP响应速度的方法,其特征在于:所述记录 DIFsyn步骤B包括如下: Bl:记录收到第一个有效数据包的RTT值; B2:判断握手信号SYN是否重传,如果是,执行步骤S6,如果否,根据步骤Bl中记录的RTT 值计算DIFsyn值,并更新SRTToid值,然后执行步骤S6,其中,DIFsyn = RTT-RTTsyn。7. 根据权利要求6所述的提高数据中心TCP响应速度的方法,其特征在于:在步骤SI中, 除了搜索通讯双方上次通讯的SRTToid值之外,还搜索DIF syn值。8. 根据权利要求7所述的提高数据中心TCP响应速度的方法,其特征在于:所述步骤S4 包括如下步骤: S41:判断是否存在历史连接记录,如果否,执行步骤S43,如果是,执行步骤S42; S42:判断SYN是否重传,如果是,根据实际建立连接的时间计算发送数据包时的重传定 时器的值RTOdata,然后执行步骤S5,如果否,利用修正后的建立连接时间RTTc^ syn计算发送 数据包时的重传定时器的值RTOdata,其中,RTTc^syn = RTTsyn+DIFsyn,然后执行步骤S5; S43:判断握手信号SYN是否重传,如果是,将发送数据包时的重传定时器的值RTOdata设 为3秒,如果否,根据RTTsyJ^值计算RTOdata,其中,RTTsyn为握手信号SYN没有重传情况下的 RTT值,然后执行步骤S5。9. 根据权利要求8所述的提高数据中心TCP响应速度的方法,其特征在于:在步骤S42 中,实际建立连接的时间RTTsyA收到应答信号SYN-ACK的时间T syn_ack与发送握手信号的时 间Tfirst_syn的差值,然后根据RTT syn值计算发送数据包时的重传定时器的值RT0data。10. -种实现权利要求1-9任一项所述提高数据中心TCP响应速度的方法的系统,其特 征在于包括: 搜索模块:用于搜索通讯双方上次通讯的SRTToid值,其中,SRTT为平滑后的RTT值; 第一判断模块:用于判断SRTTciId值是否存在,如果是,根据SRTToid值计算建立连接时重 传定时器的值RTO,如果否,将重传定时器的值RTO设定为一定值; 建立连接模块:用于发送建立连接时的握手信号SYN,收到应答信号SYN-ACK; 设置模块:用于设置发送数据包时的重传定时器的值RTOdata; 发送模块:用于发送第一个数据包; 第二判断模块:用于判断是否还有数据要发送,如果是,发送数据并动态更新SRTTcildE 录,直至所有数据发送完成。
【文档编号】H04L12/801GK105933242SQ201610225780
【公开日】2016年9月7日
【申请日】2016年4月12日
【发明人】李大刚, 王家祥, 李树, 李树一
【申请人】北京大学深圳研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1