CN116233002A - 一种数据包发送方法、接收方法、报文发送方法和产品 - Google Patents
一种数据包发送方法、接收方法、报文发送方法和产品 Download PDFInfo
- Publication number
- CN116233002A CN116233002A CN202211733327.0A CN202211733327A CN116233002A CN 116233002 A CN116233002 A CN 116233002A CN 202211733327 A CN202211733327 A CN 202211733327A CN 116233002 A CN116233002 A CN 116233002A
- Authority
- CN
- China
- Prior art keywords
- window value
- ack message
- receiving
- sending
- terminal
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements 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/1607—Details of the supervisory signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种数据包发送方法、接收方法、报文发送方法和产品,该数据包发送方法,应用于发送终端,包括:发送请求报文至接收终端;请求报文中携带有初始窗口值;接收接收终端通过交换机返回的第一ACK报文,第一ACK报文包括:接收终端窗口值,交换机可用窗口值,以及接收终端的时戳信息;根据第一ACK报文,计算得到第一窗口值;根据第一窗口值,按照接收第一ACK报文的路径的相反方向,向接收终端发送数据包。本发明通过主动发送请求报文,从而根据接收终端返回的ACK报文中的接收终端窗口值,交换机可用窗口值以及时戳信息确定出适合的第一窗口值,从而按照第一窗口值发送数据包,避免了数据拥塞问题,提高数据交互成功率。
Description
技术领域
本发明涉及数据交互技术领域,特别是一种数据包发送方法、接收方法、报文发送方法和产品。
背景技术
随着信息技术的快速发展,数据中心网络的流量呈爆炸式的增长,如今大规模数据中心需要运行上万甚至数十万台服务器,承载各种各样的业务类型,流量类型和性能需求复杂,而各节点之间频繁的数据交互产生的网络拥塞将导致数据中心整体性能的急剧下降,因而流量拥塞控制策略已成为保证数据中心高效运行的关键。
然而,目前已经提出的很多被动式拥塞控制策略,存在着对拥塞反应慢、速率控制不准确、可部署性较差等的缺点,并且难以适应不同应用场景的差异化需求。因此,亟需一种数据包发送方法、接收方法、报文发送方法和产品,以实现高效的拥塞控制算法,提高数据交互成功率。
发明内容
鉴于上述问题,本发明实施例提供了一种数据包发送方法、接收方法、报文发送方法和产品,以便克服上述问题或者至少部分地解决上述问题。
本发明实施例的第一方面提供了一种数据包发送方法,应用于发送终端,所述方法包括:
发送请求报文至接收终端;所述请求报文中携带有初始窗口值;
接收所述接收终端通过交换机返回的第一ACK报文,所述第一ACK报文包括:接收终端窗口值,交换机可用窗口值,以及所述接收终端的时戳信息;
根据所述第一ACK报文,计算得到第一窗口值;
根据所述第一窗口值,按照接收所述第一ACK报文的路径的相反方向,向所述接收终端发送数据包。
可选地,所述第一ACK报文是通过如下步骤确定的:
所述接收终端根据所述初始窗口值、本地接收能力和所述发送终端的优先级,确定所述接收终端窗口值;
利用所述接收终端窗口值和时戳信息,生成候选ACK报文,发送至交换机;
所述交换机将Switch I D和队列可用窗口值,写入所述候选ACK报文,得到第一ACK报文;
所述交换机将所述第一ACK报文发送至所述发送终端。
可选地,根据所述第一ACK报文,计算得到第一窗口值,包括:
将所述接收终端窗口值和所述队列可用窗口值中的最小值,确定为候选窗口值;
根据所述时戳信息,计算得到时延系数;
根据所述时延系数和所述候选窗口值,确定所述第一窗口值。
可选地,根据所述时戳信息,计算得到时延系数,包括:
确定接收所述第一ACK报文的时刻信息,与所述时戳信息之间的时间差;
获取延迟时长,所述延迟时长是根据交换机跳数和发送端预先为每个流量设置的目标时延确定的;
在所述时间差大于等于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1-(E2E_de l ay-Target_de l ay)/Target_de l ay
其中,E2E_de l ay为所述时间差,Target_de l ay为所述延迟时长;
在所述时间差小于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1+(Target_de l ay-E2E_de l ay)/Target_de l ay。
可选地,所述方法还包括:
接收所述接收终端通过所述交换机返回的第二ACK报文;
根据所述第二ACK报文,计算得到第二窗口值;
根据所述第二窗口值,向所述接收终端发送数据包;
重复上述步骤直至所述数据包发送完毕。
可选地,所述第二ACK报文是通过如下步骤得到的:
所述接收终端每接收到N个数据包,将当前时刻可用的接收终端窗口值和当前时刻的时戳信息写入第二候选ACK报文;
将所述第二候选ACK报文发送至所述交换机;
所述交换机将所述Switch I D和当前时刻的队列可用窗口值写入所述第二候选ACK报文,得到所述第二ACK报文;
所述交换机将所述第二ACK报文发送至所述发送终端。
可选地,根据所述第二ACK报文,计算得到第二窗口值,包括:
将所述第二ACK报文中的接收终端窗口值和所述队列可用窗口值中的最小值,确定为第二候选窗口值;
确定接收所述第二ACK报文的时刻信息,与所述第二ACK报文中的时戳信息之间的时间差;
获取延迟时长,所述延迟时长是根据交换机跳数和发送端预先为每个流量设置的目标时延确定的;
在所述时间差大于等于所述延迟时长的情况下,根据以下公式确定时延系数:
α=1-(E2E_de l ay-Target_de l ay)/N*Target_de l ay
其中,E2E_de l ay为所述时间差,Target_de l ay为所述延迟时长;
在所述时间差小于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1+(Target_de l ay-E2E_de l ay)/N*Target_de l ay
根据所述时延系数和所述第二候选窗口值,确定所述第二窗口值。
可选地,所述方法还包括:
实时检测所述交换机的队列可用窗口值;
在所述交换机的队列可用窗口值小于预设阈值的情况下,接收所述交换机发送的拥塞通知报文;
根据接收到的所述拥塞通知报文,调节发送数据包所用窗口值。
可选地,所述方法还包括:
在预设时长内未接收到所述第一ACK报文的情况下,重新发送所述请求报文,并将携带的所述初始窗口值按照预设比例缩小;
在所述预设时长内未接收到所述第二ACK报文的情况下,重新发送所述请求报文,并将所述请求报文携带的初始窗口值,按照上一次发送时的窗口值的预设比例进行缩小。
本实施例第二方面提供了一种数据包接收方法,应用于接收终端,所述方法包括:
接收发送终端发送的请求报文,所述请求报文中携带有初始窗口值;
根据所述请求报文、本地接收能力和所述发送终端的优先级,确定所述接收终端窗口值;
根据所述接受终端窗口值和时戳信息,生成候选ACK报文;
将所述候选ACK报文通过交换机发送至所述发送终端;
接收所述发送终端按照所述候选ACK报文的发送路径相反方向,发送的数据包。
本实施例第三方面提供了一种报文发送方法,应用于交换机,所述方法包括:
接收接收终端发送的候选ACK报文;
将Switch I D和自身的队列可用窗口值,写入所述候选ACK报文,得到第一ACK报文;
将所述第一ACK报文发送至发送终端;
接收所述发送终端发送的数据包,将所述数据包发送至所述接收终端。
可选地,所述方法还包括:
实时检测所述交换机的队列可用窗口值;
在所述交换机的队列可用窗口值小于预设阈值的情况下,向所述发送终端发送拥塞通知报文。
本实施例第四方面提供了一种发送终端,所述发送终端包括:
发送模块,用于发送请求报文至接收终端;所述请求报文中携带有初始窗口值和Fl owI D;
第一ACK报文接收模块,用于接收所述接收终端通过交换机返回的第一ACK报文,所述第一ACK报文包括:接收终端窗口值,交换机可用窗口值,以及所述接收终端的时戳信息;
第一窗口值计算模块,用于根据所述第一ACK报文,计算得到第一窗口值;
第一发送模块,用于根据所述第一窗口值,按照接收所述第一ACK报文的路径的相反方向,向所述接收终端发送数据包。
可选地,所述发送终端包括第一ACK报文确定模块:
接收终端窗口值确定子模块,用于根据所述初始窗口值、本地接收能力和所述发送终端的优先级,确定所述接收终端窗口值;
候选ACK报文生成子模块,用于利用所述接收终端窗口值和时戳信息,生成候选ACK报文,发送至交换机;
第一ACK报文生成子模块,用于将Switch I D和队列可用窗口值,写入所述候选ACK报文,得到第一ACK报文;
第一ACK报文发送子模块,用于将所述第一ACK报文发送至所述发送终端。
可选地,所述第一窗口值计算模块,包括:
候选窗口值计算子模块,用于将所述接收终端窗口值和所述队列可用窗口值中的最小值,确定为候选窗口值;
时延系数计算子模块,用于根据所述时戳信息,计算得到时延系数;
第一计算子模块,用于根据所述时延系数和所述候选窗口值,确定所述第一窗口值。
可选地,时延系数计算子模块,,包括:
时间差计算单元,用于确定接收所述第一ACK报文的时刻信息,与所述时戳信息之间的时间差;
延迟时长获取单元,用于获取延迟时长,所述延迟时长是根据交换机预先为每个流量设置的目标时延确定的;
第一计算单元,用于在所述时间差大于等于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1-(E2E_de l ay-Target_de l ay)/Target_de l ay
其中,E2E_de l ay为所述时间差,Target_de l ay为所述延迟时长;
第二计算单元,用于在所述时间差小于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1+(Target_de l ay-E2E_de l ay)/Target_de l ay。
可选地,所述发送终端还包括:
第二ACK报文接收模块,用于接收所述接收终端通过所述交换机返回的第二ACK报文;
第二窗口值计算模块,用于根据所述第二ACK报文,计算得到第二窗口值;
第二发送模块,用于根据所述第二窗口值,向所述接收终端发送数据包;
重复模块,用于重复上述步骤直至所述数据包发送完毕。
可选地,所述发送终端包括第二ACK报文获取模块,包括:
第二候选ACK报文生成子模块,用于每接收到N个数据包,将当前时刻可用的接收终端窗口值和当前时刻的时戳信息写入第二候选ACK报文;
第二候选ACK报文发送子模块,用于将所述第二候选ACK报文发送至所述交换机;
第二ACK报文生成子模块,用于所述交换机将所述Switch I D和当前时刻的队列可用窗口值写入所述第二候选ACK报文,得到所述第二ACK报文;
第二ACK报文发送子模块,用于所述交换机将所述第二ACK报文发送至所述发送终端。
可选地,所述第二窗口值计算模块,包括:
第二候选窗口值计算子模块,用于将所述第二ACK报文中的接收终端窗口值和所述队列可用窗口值中的最小值,确定为第二候选窗口值;
第二时间差计算子模块,用于确定接收所述第二ACK报文的时刻信息,与所述第二ACK报文中的时戳信息之间的时间差;
第二延迟时长获取子模块,用于获取延迟时长,所述延迟时长是根据交换机跳数和发送端预先为每个流量设置的目标时延确定的;
第三计算子模块,用于在所述时间差大于等于所述延迟时长的情况下,根据以下公式确定时延系数:
α=1-(E2E_de l ay-Target_de l ay)/N*Target_de l ay
其中,E2E_de l ay为所述时间差,Target_de l ay为所述延迟时长;
第四计算子模块,用于在所述时间差小于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1+(Target_de l ay-E2E_de l ay)/N*Target_de l ay
第二窗口值确定子模块,用于根据所述时延系数和所述第二候选窗口值,确定所述第二窗口值。
可选地,所述发送终端还包括:
检测模块,用于实时检测所述交换机的队列可用窗口值;
拥塞通知报文接收模块,用于在所述交换机的队列可用窗口值小于预设阈值的情况下,接收所述交换机发送的拥塞通知报文;
窗口值调节模块,用于根据接收到的所述拥塞通知报文,调节发送数据包所用窗口值。
可选地,所述发送终端还包括:
第一缩小模块,用于在预设时长内未接收到所述第一ACK报文的情况下,重新发送所述请求报文,并将携带的所述初始窗口值按照预设比例缩小;
第二缩小模块,用于在所述预设时长内未接收到所述第二ACK报文的情况下,重新发送所述请求报文,并将所述请求报文携带的初始窗口值,按照上一次发送时的窗口值的预设比例进行缩小。
本实施例第五方面还提供了一种接收终端,所述接收终端包括:
请求报文接收模块,用于接收发送终端发送的请求报文,所述请求报文中携带有初始窗口值和F l owI D;
接收终端窗口值确定模块,用于根据所述请求报文、本地接收能力和所述发送终端的优先级,确定所述接收终端窗口值;
候选ACK报文生成模块,用于根据所述接受终端窗口值和时戳信息,生成候选ACK报文;
候选ACK报文发送模块,用于将所述候选ACK报文通过交换机发送至所述发送终端;
接收模块,用于接收所述发送终端按照所述候选ACK报文的发送路径相反方向,发送的数据包。
本实施例第六方面还提供了一种交换机,所述交换机包括:
候选ACK报文接收模块,用于接收接收终端发送的候选ACK报文;
第一ACK报文生成模块,用于将Switch I D和自身的队列可用窗口值,写入所述候选ACK报文,得到第一ACK报文;
第一ACK报文发送模块,用于将所述第一ACK报文发送至发送终端;
数据包接收模块用于接收所述发送终端发送的数据包;
数据包发送模块,用于将所述数据包发送至所述接收终端。
本发明实施例第七方面还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序以实现本发明实施例第一方面所述的一种数据包发送方法中的步骤,或第二方面所述的一种数据包接收方法中的步骤,或第三方面所述的一种报文发送方法中的步骤。
本发明实施例第八方面还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现本发明实施例第一方面所述的一种数据包发送方法中的步骤,或第二方面所述的一种数据包接收方法中的步骤,或第三方面所述的一种报文发送方法中的步骤。
本发明实施例提供了一种数据包发送方法、接收方法、报文发送方法和产品,该数据包发送方法,应用于发送终端,包括:发送请求报文至接收终端;请求报文中携带有初始窗口值;接收接收终端通过交换机返回的第一ACK报文,第一ACK报文包括:接收终端窗口值,交换机可用窗口值,以及接收终端的时戳信息;根据第一ACK报文,计算得到第一窗口值;根据第一窗口值,按照接收第一ACK报文的路径的相反方向,向接收终端发送数据包。本发明通过主动发送请求报文,从而根据接收终端返回的ACK报文中的接收终端窗口值,交换机可用窗口值以及时戳信息确定出适合的第一窗口值,从而按照第一窗口值发送数据,避免了数据拥塞问题,提高数据交互成功率。
1)避免了数据拥塞问题。本发明实施例通过发送终端在发送数据包之前,主动地向接收终端发送请求报文,从而根据接收终端返回的ACK报文中的接收终端窗口值,交换机可用窗口值以及时戳信息确定出适合的第一窗口值,由此,按照计算得到的第一窗口值发送数据包,使发送端在发送数据包之前适配设备接收能力,避免了直接发送的数据包过大,造成数据拥塞问题。
2)应用广泛。本发明实施例所提出的数据包发送方法不需要额外的硬件设备进行支撑,由发送终端、接收终端以及所涉及的交换机进行信息交互即可实现本发明实施例所提出的数据包发送方法,所以该方法能够广泛应用于各种网络架构中,适用性强。
3)提高带宽利用率,提高短流性能。本发明实施例根据获取到的接收终端窗口值,交换机可用窗口值,结合时戳信息,计算得到下一时刻可用的准确的窗口值,由此,通过控制窗口值大小实现对流量的精确控制,快速收敛,有效的避免丢包和流量突发,提高了带宽利用率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据包发送方法的步骤流程图;
图2是本发明实施例提供的一种数据中心的网络结构示意图;
图3是本发明实施例提供的一种拥塞通知报文的发送原理示意图;
图4是本发明实施例提供的一种数据包接收方法的步骤流程图;
图5是本发明实施例提供的一种报文发送方法的步骤流程图;
图6是本发明实施例提供的一种发送终端的的结构示意图;
图7是本发明实施例提供的一种接收终端的结构示意图;
图8是本发明实施例提供的一种交换机的结构示意图;
图9是本发明实施例提供的一种电子设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
首先对本发明实施例涉及的相关技术名词进行简要解释。
以下为本发明实施例具体内容。
本发明实施例提供了一种数据包发送方法,应用于发送终端,参照图1,图1示出了一种数据包发送方法的步骤流程图,如图1所示,所述方法包括:
步骤S101,发送请求报文至接收终端;所述请求报文中携带有初始窗口值。
在本实施例中,在发送终端向接收终端发送数据包之前,即存在一条新的流量需要发送时,需要先向接收终端发送一个请求报文,该请求报文中携带有初始窗口值。窗口值,表示允许数据发送的数据量大小。这是因为接受方的数据缓存空间是有限的,亦是动态变化的,因此当发送的数据量超出了接收方的数据缓存能力时,容易发生丢包、卡顿等问题。所以需要通过设置窗口值,使得发送终端所发出的数据量不超出窗口值,从而对传输的数据量进行限制,保证接收终端对接收到的数据的有效处理。
该初始窗口值是发送终端根据所需发送的数据包的大小确定出来的,表示发送终端启动数据发送所需的窗口大小,并且,初始窗口需要设置的较大,以提高流的快速启动能力。在本实施例中,初始窗口值可以表示为字节数量,具体的,初始窗口值可以根据所需的带宽计算得到,或根据流的QoS需求设置。
步骤S102,接收所述接收终端通过交换机返回的第一ACK报文,所述第一ACK报文包括:接收终端窗口值,交换机可用窗口值,以及所述接收终端的时戳信息。
在本实施例中,接收终端在接收到所述请求报文后,会通过交换机向所述发送终端返回第一ACK报文,具体的,接收终端根据请求报文,确定出接收终端窗口值,然后将接收终端窗口值写入该第一ACK报文,并且,将时戳信息写入该报文。然后将该报文发送至交换机,由交换机在该报文中写入交换机可用窗口值,将该第一ACK报文发送至发送终端。其中,所述接收终端窗口值表示接收终端能够缓存发送终端发送的数据的能力,所述交换机窗口值表示交换机的缓存队列能够接收处理的数据量,所述时戳信息,表示接收终端向发送终端发送报文的时刻信息。
步骤S103,根据所述第一ACK报文,计算得到第一窗口值。
在本实施例中,发送终端根据第一ACK报文中的接收终端窗口值,交换机可用窗口值,以及所述接收终端的时戳信息,计算得到第一窗口值,该第一窗口值表示能够快速启动的窗口值,也是发送终端发送给数据包给接收终端的窗口值。具体的,发送终端根据第一ACK报文中的交换机可用窗口值,感知沿途交换机的接收能力,在发送终端与接收终端的传输路径中,需要经过多个交换机的情况下,该交换机可用窗口值也对应的存在多个;通过报文中的接收终端窗口值适配接收终端的设备接收能力,并且利用时戳信息,通过接收终端发送报文的时间信息,分析得到该第一ACK报文从接收终端发出,至发送终端接收到所花费的时间,通过时间长短分析网络流畅程度,进而利用该信息辅助计算第一窗口值,以,实现对流量的精确控制,快速收敛,有效的避免丢包和流量突发,提高带宽利用率。
步骤S104,根据所述第一窗口值,按照接收所述第一ACK报文的路径的相反方向,向所述接收终端发送数据包。
在计算得到第一窗口值后,按照该窗口值的大小,向接收终端发送数据包。具体的,发送终端所发送的数据包大小不能超出第一窗口值,并且,发送终端发送数据包的路径需要按照第一ACK报文的接收路径的相反方向进行发送。一般来说发送终端与接收终端之间需要通过一个或多个交换机传递数据。示例性的,接收终端将第一ACK报文发送至交换机3,然后由交换机3将第一ACK报文发送至交换机2,再由交换机2将第一ACK报文发送至交换机1,最后由交换机1将第一ACK报文发送至发送终端。对应的,发送终端按照第一窗口值,向接收终端发送数据包时,需要按照该路径的相反方向发送,即发送终端需要先将数据包发送至交换机1,由交换机1将数据包发送至交换机2,再由交换机2将数据包发送至交换机3,最后由交换机3将数据包发送至接收终端。即,发送流量和ACK报文的五元组信息(若该流量为RoCEv2流量则是四元组)是相同的,可以通过ECMP技术保证。
本实施例所提出的数据包发送方法,可以应用于基于RoCEv2的数据中心网络中。参照图2,图2示出了一种数据中心的网络结构示意图,入图2所示,最底层为终端,其中包括发送终端和接收终端,第二层为l eaf交换机层,最顶层为sp i ne交换机层,由此,在基于RoCEv2协议的数据中心网络中,发送端与接收端通过l eaf交换机和sp i ne交换机实现数据交互,图2中的虚线表示示例出的一种发送端和接收端的交互路径。
由此,本实施例通过发送请求报文至接收终端;请求报文中携带有初始窗口值;接收接收终端通过交换机返回的第一ACK报文,第一ACK报文包括:接收终端窗口值,交换机可用窗口值,以及接收终端的时戳信息;根据第一ACK报文,计算得到第一窗口值;根据第一窗口值,按照接收第一ACK报文的路径的相反方向,向接收终端发送数据包。本发明通过主动发送请求报文,从而根据接收终端返回的ACK报文中的接收终端窗口值,交换机可用窗口值以及时戳信息确定出适合的第一窗口值,从而按照第一窗口值发送数据,避免了数据拥塞问题,提高了数据交互成功率。
在一种实施例中,所述第一ACK报文是通过如下步骤确定的:
所述接收终端根据所述初始窗口值、本地接收能力和所述发送终端的优先级,确定所述接收终端窗口值;
利用所述接收终端窗口值和时戳信息,生成候选ACK报文,发送至交换机;
所述交换机将Switch I D和队列可用窗口值,写入所述候选ACK报文,得到第一ACK报文;
所述交换机将所述第一ACK报文发送至所述发送终端。
在本实施例中,接收终端在接收到请求报文之后,根据其中携带的初始窗口值,以及自身的本地接收能力和发送终端的优先级,确定所述接收终端窗口值。具体的,接收终端先确定自身的本地接收能力,该本地接收能力表示该接收终端能够接收处理的数据量的大小,或当前时刻的缓存能力大小。由于接收终端会同时接收多个终端的数据,所以不能直接将左右的本地接收能力全部分配给该发送终端,此时需要考虑发送终端的优先级,即该发送终端在接收终端中的优先级,接收终端优先将较大的部分本地接收能力分配给优先级靠前的终端。所以,若发送终端的优先级靠前时,接收终端根据初始窗口值和本地接收能力,给请求的发送终端分配较多的cred it值,作为接收终端窗口值;若发送终端的优先级靠后时,接收终端根据初始窗口值和本地接收能力,给请求的发送终端分配较少的cred i t值,作为接收终端窗口值。接收终端窗口值表示分配给该发送终端的,能够接收并处理的数据量的大小。
接收终端在确定了接收终端窗口值后,还需要生成时戳信息,该时戳信息用于表示当前具体的时刻信息,然后将接收终端窗口值和时戳信息一并写入应答ACK报文中,得到候选ACK报文。然后将该报文发送值交换机,由交换机将其发送至发送终端。
在本实施例中,由交换机将报文发送至发送终端的过程中,每经过一跳交换机,该交换机则将自身的Switch I D(可以是I P地址后12b it)、队列可用窗口值写入该候选ACK报文中。其中该队列可用窗口值,表示的是该交换机的缓存数据并传输数据的能力。同时该报文中有个nHop值,用于标识该ACK报文转发的跳数,每经过一跳交换机就加一,按交换机转发顺序写入上述ACK报文中,从而得到第一ACK报文。由此,发送终端在接收到该第一ACK报文后,就可以根据记录的每个交换机的Switch I D和nHop值,以及交换机转发顺序,确定出该第一ACK报文的传输路径,便于后续发送数据包时能够按照该路径发送至接收终端。
在一种实施例中,根据所述第一ACK报文,计算得到第一窗口值,包括:
将所述接收终端窗口值和所述队列可用窗口值中的最小值,确定为候选窗口值;
根据所述时戳信息,计算得到时延系数;
根据所述时延系数和所述候选窗口值,确定所述第一窗口值。
在本实施例中,根据第一ACK报文中的接收终端窗口值和各个交换机的队列可用窗口值,以及时戳信息,计算得到第一窗口值。首先,从接收终端窗口值和队列可用窗口值中确定出最小值,在存在多个交换机时,同样是从每个交换机对应的队列可用窗口值和接收终端窗口值中选择出最小值来。该最小值作为候选窗口值,是该条传输链路的瓶颈点。表示数据包若需要通过该条链路传输至接收终端,则不能超出该候选窗口值的大小。然后,本实施例根据时戳信息,判断得到当前网络链路的顺畅程度,计算端到端时延,预估下一周期的排队时延,从而生成时延系数,利用时延系数动态调整窗口的大小,得到第一窗口值。具体的,可以直接用候选窗口值乘以时延系数,以得到第一窗口值。由此,本实施例根据第一ACK报文获取到的接收终端窗口值和各个交换机的队列可用窗口值,以及时戳信息,动态地对窗口值进行调整,基于信用请求预取机制,在流量发送之前,申请接收终端分配对应地窗口值,并感知沿途交换机的接收能力,依据时戳信息,设置发送数据包所用的窗口值的大小,以提高流量的快速启动能力,在保证不丢包的同时提高带宽利用率,降低短流完成时间保证短流性能。
在一种实施例中,根据所述时戳信息,计算得到时延系数,包括:
确定接收所述第一ACK报文的时刻信息,与所述时戳信息之间的时间差;
获取延迟时长,所述延迟时长是根据交换机跳数和发送端预先为每个流量设置的目标时延确定的;
在所述时间差大于等于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1-(E2E_de l ay-Target_de l ay)/Target_de l ay
其中,α表示所述时延系数,E2E_de l ay为所述时间差,Target_de l ay为所述延迟时长;
在所述时间差小于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1+(Target_de l ay-E2E_de l ay)/Target_de l ay。
在本实施例中,首先需要计算第一ACK报文从接收终端至发送终端的时间差,根据端到端的报文传输时间,可以分析得到当前时刻的数据传输效率。具体的,设发送终端接收到该第一ACK报文的时戳为TS2,该第一ACK报文中的接收终端的时戳信息为TS1,则利用TS2-TS1,则得到了时间差E2E_de l ay,通过该值获取ACK报文的排队时延和链路时延。然后,获取延迟时长,所述延迟时长是根据交换机跳数和发送端预先为每个流量设置的目标时延确定的。由于,在接收终端向发送终端发送ACK报文需要经过一个或多个交换机,每经过一个交换机,该交换机就会在该ACK报文中写入对应的I D信息和队列可用窗口值等信息,上述操作均会延长该ACK报文送达发送终端的时间,所以发送端会预先为每条流量设置目标时延。具体的,为每条流量设置了固定的目标时延,通过第一ACK报文中的nHop值,确定交换机跳数,从而根据交换机跳数和目标时延,确定延迟时长。示例性的,设发送终端为该流量设置的目标时延时长为2s,根据第一ACK报文中的nHop值为3,可以知道发送终端与接收终端之间经过了3个交换机,所以利用跳数与目标时延的乘积,得到延迟时长为6s。最后根据对应的公式计算得到时延系数α。由此,本实施例可以依据时戳信息,确定出接收终端与发送终端之间的时延信息,预估下一周期的排队时延,得到时延系数,从而依据该时延系数动态调节发送窗口口大小,实现了根据网络规模、排队时延弹性伸缩,适应网络规模和流量的动态变化,提高带宽利用率。
在一种实施例中,所述方法还包括:
接收所述接收终端通过所述交换机返回的第二ACK报文;
根据所述第二ACK报文,计算得到第二窗口值;
根据所述第二窗口值,向所述接收终端发送数据包;
重复上述步骤直至所述数据包发送完毕。
在本实施例中,在该流量所需发送的数据包较多,且第一窗口值较小,导致无法一次发送完毕的情况下,需要重新计算下一次发送数据包的窗口值,以便于根据重新计算得到的第二窗口值,继续发送数据包。接收端可以每收到1个数据包就返回一个ACK报文,也可以合并确认收到n个数据包回复一个ACK报文。该方式可以通过发送端在数据包中设置。具体的,接收终端在接收到数据包后,主动向发送终端返回ACK报文,将其为该流量分配的可用的Cred it值(接收终端窗口值)和时戳信息携带在返回的ACK报文中,由发送终端根据该报文,再次计算下一周期所需要的窗口值,即第二窗口值,再按照该窗口值继续向接收终端发送数据包。若此次仍未发送完毕,则重复上述操作,由接收终端继续返回ACK报文,发送终端计算下一周期所需窗口值,从而根据该窗口值发送数据包,直至该流量的数据包发送完毕。
在一种实施例中,所述第二ACK报文是通过如下步骤得到的:
所述接收终端每接收到N个数据包,将当前时刻可用的接收终端窗口值和当前时刻的时戳信息写入第二候选ACK报文;
将所述第二候选ACK报文发送至所述交换机;
所述交换机将所述Switch I D和当前时刻的队列可用窗口值写入所述第二候选ACK报文,得到所述第二ACK报文;
所述交换机将所述第二ACK报文发送至所述发送终端。
在本实施例中,可以通过预先设置,接收终端每接收一个数据包,则向发送终端返回一个ACK报文,或设置接收终端每接收N个数据包,则向发送终端返回一个ACK报文。接收终端在返回ACK报文时,需要确定第二候选窗口值,表示下一周期能够分配给发送终端的cred i t值,即当前时刻可用的接收终端窗口值。和第一ACK报文的发送方法类似,接收终端将接收终端窗口值和时戳信息写入第二候选ACK报文,将其发送至交换机,每一跳交换机在该ACK报文中写入该交换机对应的Switch I D和队列可用窗口值,该队列可用窗口值表示当前时刻该交换机能够缓存并处理的数据量,可以用cred i t值表示。交换机将生成的第二ACK报文发送至发送终端。由此,本实施例基于接收端的分配的接收终端窗口值和沿途交换机可用信用的感知,设置发送窗口,使得发送端在发送数据包之前适配设备(接收终端和交换机)的接收能力,实现对流量的精确控制,快速收敛,有效的避免丢包和流量突发,提高带宽利用率;同时通过前一周期的ACK报文携带下一周期可用窗口值,可有效降低传输代价。
在一种实施例中,根据所述第二ACK报文,计算得到第二窗口值,包括:
将所述第二ACK报文中的接收终端窗口值和所述队列可用窗口值中的最小值,确定为第二候选窗口值;
确定接收所述第二ACK报文的时刻信息,与所述第二ACK报文中的时戳信息之间的时间差;
获取延迟时长,所述延迟时长是根据交换机跳数和发送端预先为每个流量设置的目标时延确定的;
在所述时间差大于等于所述延迟时长的情况下,根据以下公式确定时延系数:
α=1-(E2E_de l ay-Target_de l ay)/N*Target_de l ay
其中,E2E_de l ay为所述时间差,Target_de l ay为所述延迟时长;N表示每接收到N个数据包,返回一次ACK报文。
在所述时间差小于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1+(Target_de l ay-E2E_de l ay)/N*Target_de l ay
根据所述时延系数和所述第二候选窗口值,确定所述第二窗口值。
在本实施例中,根据第二ACK报文中的时戳信息,计算时延系数的过程中,时间差的计算方法不变,仍然是计算该ACK报文从接收端至发送端的时间,在计算延迟时长时,仍然是通过第二ACK报文中的nHop值,确定交换机跳数,从而根据交换机跳数和目标时延,确定延迟时长。在根据公式计算时延系数时,需要注意时延系数的计算与ACK回复的频率有关。由此,本实施例通过第二ACK报文中的时戳信息,计算端到端的时延信息,预估下一周期的排队时延,得到时延系数,从而依据该时延系数动态调节发送窗口口大小,实现了根据网络规模、排队时延弹性伸缩,适应网络规模和流量的动态变化,提高带宽利用率。
在一种实施例中,所述方法还包括:
实时检测所述交换机的队列可用窗口值;
在所述交换机的队列可用窗口值小于预设阈值的情况下,接收所述交换机发送的拥塞通知报文;
根据接收到的所述拥塞通知报文,调节发送数据包所用窗口值。
在本实施例中,为预防交换机内I ncast流量或者突发流量,提出了一种交换机主动拥塞通知机制(Congest i on Not i f i cat i on Packet,CNP),具体的,实时检测交换机的队列可用窗口值,即检测交换机的可用Cred it,该队列可用窗口值表示该交换机在当前时刻能够缓存或处理数据的能力。参照图3,图3示出了一种拥塞通知报文的发送原理示意图,如图3所示,当该值小于预设的阈值时,交换机可以主动向所有经过该节点的流量的发送端发送拥塞通知报文,在图3中CNP表示交换机发送的拥塞通知报文,虚线表示该拥塞通知报文的发送方向,箭头表示该拥塞通知报文的发送目的终端。在该拥塞通知报文中携带该交换机的Swi tch I D、队列可用窗口值等信息。发送终端在收到拥塞通知报文之后,根据该报文中携带的队列可用窗口值立刻调节发送窗口,实现紧急降速。此外,交换机内需构造和维护流表,维护每个流的状态信息。并且,将交换机发送的拥塞通知报文设置较高的优先级,使得发送终端在收到该报文后,依据优先级先处理该报文,从而根据该报文中的队列可用窗口值立刻降速。本实施例根据上述交换机主动拥塞通知机制,可以有效地应对流量突发场景,在出现流量拥塞之前,通知发送端及时降速,避免流量溢出造成丢包。
在一种实施例中,所述方法还包括:
在预设时长内未接收到所述第一ACK报文的情况下,重新发送所述请求报文,并将携带的所述初始窗口值按照预设比例缩小;
在所述预设时长内未接收到所述第二ACK报文的情况下,重新发送所述请求报文,并将所述请求报文携带的初始窗口值,按照上一次发送时的窗口值的预设比例进行缩小。
在本实施例中,为了解决ACK报文丢失导致数据发送阻塞的问题,本实施例还提出了一种基于定时器的丢包检测策略,通过在发送终端设置定时器,利用该定时器检测在数据包发送后的预设时长内,是否收到了对应的ACK报文。具体的,在请求报文发送后,检测在预设时长内是否收到了第一ACK报文,若第一ACK报文超时丢失,则将初始窗口值按照预设比例缩小,例如降低一半,重新发送请求报文。若是在数据包发送过程中,在数据包发送后,,检测在预设时长内未收到第二ACK报文,则重新发送Cred it请求报文,并且请求报文中的初始窗口值按照上一次发送时的窗口值的预设比例进行缩小,示例性的,携带前一周期计算得到的窗口值的一半。所述预设比例可以根据实际应用情况进行调整,在本实施例中,不对该预设比例进行限制,由此,本实施例通过计时器检测ACK报文是否超时丢失,重新发送请求报文,及时调整窗口大小,解决了因ACK报文丢失导致的数据拥塞问题。
本实施例提供了一种数据包接收方法,应用于接收终端,参照图4,图4示出了一种数据包接收方法的步骤流程图,如图4所示,所述方法包括:
步骤S201,接收发送终端发送的请求报文,所述请求报文中携带有初始窗口值;
步骤S202,根据所述请求报文、本地接收能力和所述发送终端的优先级,确定所述接收终端窗口值;
步骤S203,根据所述接受终端窗口值和时戳信息,生成候选ACK报文;
步骤S204,将所述候选ACK报文通过交换机发送至所述发送终端;
步骤S205,接收所述发送终端按照所述候选ACK报文的发送路径相反方向,发送的数据包。
本实施例提供了一种报文发送方法,应用于交换机,参照图5,图5示出了一种报文发送方法的步骤流程图,如图5所示,所述方法包括:
步骤S301,接收接收终端发送的候选ACK报文;
步骤S302,将Switch I D和自身的队列可用窗口值,写入所述候选ACK报文,得到第一ACK报文;
步骤S303,将所述第一ACK报文发送至发送终端;
步骤S304,接收所述发送终端发送的数据包,将所述数据包发送至所述接收终端。
在一种实施例中,所述方法还包括:
实时检测所述交换机的队列可用窗口值;
在所述交换机的队列可用窗口值小于预设阈值的情况下,向所述发送终端发送拥塞通知报文。
本实施例提供了一种发送终端,参照图6,图6示出了一种发送终端的结构示意图,如图6所示,所述发送终端包括:
发送模块,用于发送请求报文至接收终端;所述请求报文中携带有初始窗口值和Fl owI D;
第一ACK报文接收模块,用于接收所述接收终端通过交换机返回的第一ACK报文,所述第一ACK报文包括:接收终端窗口值,交换机可用窗口值,以及所述接收终端的时戳信息;
第一窗口值计算模块,用于根据所述第一ACK报文,计算得到第一窗口值;
第一发送模块,用于根据所述第一窗口值,按照接收所述第一ACK报文的路径的相反方向,向所述接收终端发送数据包。
在一种实施例中,所述发送终端包括第一ACK报文确定模块:
接收终端窗口值确定子模块,用于根据所述初始窗口值、本地接收能力和所述发送终端的优先级,确定所述接收终端窗口值;
候选ACK报文生成子模块,用于利用所述接收终端窗口值和时戳信息,生成候选ACK报文,发送至交换机;
第一ACK报文生成子模块,用于将Switch I D和队列可用窗口值,写入所述候选ACK报文,得到第一ACK报文;
第一ACK报文发送子模块,用于将所述第一ACK报文发送至所述发送终端。
在一种实施例中,所述第一窗口值计算模块,包括:
候选窗口值计算子模块,用于将所述接收终端窗口值和所述队列可用窗口值中的最小值,确定为候选窗口值;
时延系数计算子模块,用于根据所述时戳信息,计算得到时延系数;
第一计算子模块,用于根据所述时延系数和所述候选窗口值,确定所述第一窗口值。
在一种实施例中,时延系数计算子模块,,包括:
时间差计算单元,用于确定接收所述第一ACK报文的时刻信息,与所述时戳信息之间的时间差;
延迟时长获取单元,用于获取延迟时长,所述延迟时长是根据交换机跳数和发送端预先为每个流量设置的目标时延确定的;
第一计算单元,用于在所述时间差大于等于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1-(E2E_de l ay-Target_de l ay)/Target_de l ay
其中,E2E_de l ay为所述时间差,Target_de l ay为所述延迟时长;
第二计算单元,用于在所述时间差小于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1+(Target_de l ay-E2E_de l ay)/Target_de l ay。
在一种实施例中,所述发送终端还包括:
第二ACK报文接收模块,用于接收所述接收终端通过所述交换机返回的第二ACK报文;
第二窗口值计算模块,用于根据所述第二ACK报文,计算得到第二窗口值;
第二发送模块,用于根据所述第二窗口值,向所述接收终端发送数据包;
重复模块,用于重复上述步骤直至所述数据包发送完毕。
在一种实施例中,所述发送终端包括第二ACK报文获取模块,包括:
第二候选ACK报文生成子模块,用于每接收到N个数据包,将当前时刻可用的接收终端窗口值和当前时刻的时戳信息写入第二候选ACK报文;
第二候选ACK报文发送子模块,用于将所述第二候选ACK报文发送至所述交换机;
第二ACK报文生成子模块,用于所述交换机将所述Switch I D和当前时刻的队列可用窗口值写入所述第二候选ACK报文,得到所述第二ACK报文;
第二ACK报文发送子模块,用于所述交换机将所述第二ACK报文发送至所述发送终端。
在一种实施例中,所述第二窗口值计算模块,包括:
第二候选窗口值计算子模块,用于将所述第二ACK报文中的接收终端窗口值和所述队列可用窗口值中的最小值,确定为第二候选窗口值;
第二时间差计算子模块,用于确定接收所述第二ACK报文的时刻信息,与所述第二ACK报文中的时戳信息之间的时间差;
第二延迟时长获取子模块,用于获取延迟时长,所述延迟时长是根据交换机跳数和发送端预先为每个流量设置的目标时延确定的;
第三计算子模块,用于在所述时间差大于等于所述延迟时长的情况下,根据以下公式确定时延系数:
α=1-(E2E_de l ay-Target_de l ay)/N*Target_de l ay
其中,E2E_de l ay为所述时间差,Target_de l ay为所述延迟时长;
第四计算子模块,用于在所述时间差小于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1+(Target_de l ay-E2E_de l ay)/N*Target_de l ay
第二窗口值确定子模块,用于根据所述时延系数和所述第二候选窗口值,确定所述第二窗口值。
在一种实施例中,所述发送终端还包括:
检测模块,用于实时检测所述交换机的队列可用窗口值;
拥塞通知报文接收模块,用于在所述交换机的队列可用窗口值小于预设阈值的情况下,接收所述交换机发送的拥塞通知报文;
窗口值调节模块,用于根据接收到的所述拥塞通知报文,调节发送数据包所用窗口值。
在一种实施例中,所述发送终端还包括:
第一缩小模块,用于在预设时长内未接收到所述第一ACK报文的情况下,重新发送所述请求报文,并将携带的所述初始窗口值按照预设比例缩小;
第二缩小模块,用于在所述预设时长内未接收到所述第二ACK报文的情况下,重新发送所述请求报文,并将所述请求报文携带的初始窗口值,按照上一次发送时的窗口值的预设比例进行缩小。
本实施例还提供了一种接收终端,参照图7,图7示出了一种接收终端的结构示意图,如图7所示,所述接收终端包括:
请求报文接收模块,用于接收发送终端发送的请求报文,所述请求报文中携带有初始窗口值和F l owI D;
接收终端窗口值确定模块,用于根据所述请求报文、本地接收能力和所述发送终端的优先级,确定所述接收终端窗口值;
候选ACK报文生成模块,用于根据所述接受终端窗口值和时戳信息,生成候选ACK报文;
候选ACK报文发送模块,用于将所述候选ACK报文通过交换机发送至所述发送终端;
接收模块,用于接收所述发送终端按照所述候选ACK报文的发送路径相反方向,发送的数据包。
本实施例还提供了一种交换机,参照图8,图8示出了一种交换机的结构示意图,如图8所示,所述交换机包括:
候选ACK报文接收模块,用于接收接收终端发送的候选ACK报文;
第一ACK报文生成模块,用于将Switch I D和自身的队列可用窗口值,写入所述候选ACK报文,得到第一ACK报文;
第一ACK报文发送模块,用于将所述第一ACK报文发送至发送终端;
数据包接收模块,用于接收所述发送终端发送的数据包;
数据包发送模块,用于将所述数据包发送至所述接收终端。
在一种实施例中,所述交换机还包括:
第二候选ACK报文接收模块,用于接收接收终端发送的第二候选ACK报文;
第二ACK报文生成模块,用于Switch I D和当前时刻的队列可用窗口值写入所述第二候选ACK报文,得到所述第二ACK报文;
第二ACK报文发送模块,用于将所述第二ACK报文发送至发送终端。
本发明实施例还提供了一种电子设备,参照图9,图9示出了本申请实施例提出的一种电子设备的示意图。如图9所示,电子设备100包括:存储器110和处理器120,存储器110与处理器120之间通过总线通信连接,存储器110中存储有计算机程序,该计算机程序可在处理器120上运行,进而实现本发明实施例公开的一种数据包发送方法中的步骤,或一种数据包接收方法中的步骤,或一种报文发送方法中的步骤中的步骤。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现如本发明实施例公开的一种数据包发送方法中的步骤,或一种数据包接收方法中的步骤,或一种报文发送方法中的步骤中的步骤。
本发明实施例还提供了一种计算机程序产品,所述计算机程序产品在电子设备上运行时,使处理器执行时实现本发明实施例公开的一种数据包发送方法中的步骤,或一种数据包接收方法中的步骤,或一种报文发送方法中的步骤中的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本发明实施例是参照根据本发明实施例的方法、装置、电子设备和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种数据包发送方法、接收方法、报文发送方法和产品,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (15)
1.一种数据包发送方法,其特征在于,应用于发送终端,所述方法包括:
发送请求报文至接收终端;所述请求报文中携带有初始窗口值;
接收所述接收终端通过交换机返回的第一ACK报文,所述第一ACK报文包括:接收终端窗口值,交换机可用窗口值,以及所述接收终端的时戳信息;
根据所述第一ACK报文,计算得到第一窗口值;
根据所述第一窗口值,按照接收所述第一ACK报文的路径的相反方向,向所述接收终端发送数据包。
2.根据权利要求1所述的数据包发送方法,其特征在于,所述第一ACK报文是通过如下步骤确定的:
所述接收终端根据所述初始窗口值、本地接收能力和所述发送终端的优先级,确定所述接收终端窗口值;
利用所述接收终端窗口值和时戳信息,生成候选ACK报文,发送至交换机;
所述交换机将SwitchID和队列可用窗口值,写入所述候选ACK报文,得到第一ACK报文;
所述交换机将所述第一ACK报文发送至所述发送终端。
3.根据权利要求2所述的数据包发送方法,其特征在于,根据所述第一ACK报文,计算得到第一窗口值,包括:
将所述接收终端窗口值和所述队列可用窗口值中的最小值,确定为候选窗口值;
根据所述时戳信息,计算得到时延系数;
根据所述时延系数和所述候选窗口值,确定所述第一窗口值。
4.根据权利要求3所述的数据包发送方法,其特征在于,根据所述时戳信息,计算得到时延系数,包括:
确定接收所述第一ACK报文的时刻信息,与所述时戳信息之间的时间差;
获取延迟时长,所述延迟时长是根据交换机跳数和发送端预先为每个流量设置的目标时延确定的;
在所述时间差大于等于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1-(E2E_delay-Target_delay)/Target_delay
其中,E2E_delay为所述时间差,Target_delay为所述延迟时长;
在所述时间差小于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1+(Target_delay-E2E_delay)/Target_delay。
5.根据权利要求1所述的数据包发送方法,其特征在于,所述方法还包括:
接收所述接收终端通过所述交换机返回的第二ACK报文;
根据所述第二ACK报文,计算得到第二窗口值;
根据所述第二窗口值,向所述接收终端发送数据包;
重复上述步骤直至所述数据包发送完毕。
6.根据权利要求5所述的数据包发送方法,其特征在于,所述第二ACK报文是通过如下步骤得到的:
所述接收终端每接收到N个数据包,将当前时刻可用的接收终端窗口值和当前时刻的时戳信息写入第二候选ACK报文;
将所述第二候选ACK报文发送至所述交换机;
所述交换机将所述SwitchID和当前时刻的队列可用窗口值写入所述第二候选ACK报文,得到所述第二ACK报文;
所述交换机将所述第二ACK报文发送至所述发送终端。
7.根据权利要求6所述的数据包发送方法,其特征在于,根据所述第二ACK报文,计算得到第二窗口值,包括:
将所述第二ACK报文中的接收终端窗口值和所述队列可用窗口值中的最小值,确定为第二候选窗口值;
确定接收所述第二ACK报文的时刻信息,与所述第二ACK报文中的时戳信息之间的时间差;
获取延迟时长,所述延迟时长是根据交换机跳数和发送端预先为每个流量设置的目标时延确定的;
在所述时间差大于等于所述延迟时长的情况下,根据以下公式确定时延系数:
α=1-(E2E_delay-Target_delay)/N*Target_delay
其中,E2E_delay为所述时间差,Target_delay为所述延迟时长;
在所述时间差小于所述延迟时长的情况下,根据以下公式确定所述时延系数:
α=1+(Target_delay-E2E_delay)/N*Target_delay
根据所述时延系数和所述第二候选窗口值,确定所述第二窗口值。
8.根据权利要求1所述的数据包发送方法,其特征在于,所述方法还包括:
实时检测所述交换机的队列可用窗口值;
在所述交换机的队列可用窗口值小于预设阈值的情况下,接收所述交换机发送的拥塞通知报文;
根据接收到的所述拥塞通知报文,调节发送数据包所用窗口值。
9.根据权利要求1所述的数据包发送方法,其特征在于,所述方法还包括:
在预设时长内未接收到所述第一ACK报文的情况下,重新发送所述请求报文,并将携带的所述初始窗口值按照预设比例缩小;
在所述预设时长内未接收到所述第二ACK报文的情况下,重新发送所述请求报文,并将所述请求报文携带的初始窗口值,按照上一次发送时的窗口值的预设比例进行缩小。
10.一种数据包接收方法,其特征在于,应用于接收终端,所述方法包括:
接收发送终端发送的请求报文,所述请求报文中携带有初始窗口值;
根据所述请求报文、本地接收能力和所述发送终端的优先级,确定所述接收终端窗口值;
根据所述接受终端窗口值和时戳信息,生成候选ACK报文;
将所述候选ACK报文通过交换机发送至所述发送终端;
接收所述发送终端按照所述候选ACK报文的发送路径相反方向,发送的数据包。
11.一种报文发送方法,其特征在于,应用于交换机,所述方法包括:
接收接收终端发送的候选ACK报文;
将SwitchID和自身的队列可用窗口值,写入所述候选ACK报文,得到第一ACK报文;
将所述第一ACK报文发送至发送终端;
接收所述发送终端发送的数据包,将所述数据包发送至所述接收终端。
12.根据权利要求11所述的报文发送方法,其特征在于,所述方法还包括:
实时检测所述交换机的队列可用窗口值;
在所述交换机的队列可用窗口值小于预设阈值的情况下,向所述发送终端发送拥塞通知报文。
13.一种发送终端,其特征在于,所述发送终端包括:
发送模块,用于发送请求报文至接收终端;所述请求报文中携带有初始窗口值和FlowID;
第一ACK报文接收模块,用于接收所述接收终端通过交换机返回的第一ACK报文,所述第一ACK报文包括:接收终端窗口值,交换机可用窗口值,以及所述接收终端的时戳信息;
第一窗口值计算模块,用于根据所述第一ACK报文,计算得到第一窗口值;
第一发送模块,用于根据所述第一窗口值,按照接收所述第一ACK报文的路径的相反方向,向所述接收终端发送数据包。
14.一种接收终端,其特征在于,所述接收终端包括:
请求报文接收模块,用于接收发送终端发送的请求报文,所述请求报文中携带有初始窗口值和FlowID;
接收终端窗口值确定模块,用于根据所述请求报文、本地接收能力和所述发送终端的优先级,确定所述接收终端窗口值;
候选ACK报文生成模块,用于根据所述接受终端窗口值和时戳信息,生成候选ACK报文;
候选ACK报文发送模块,用于将所述候选ACK报文通过交换机发送至所述发送终端;
接收模块,用于接收所述发送终端按照所述候选ACK报文的发送路径相反方向,发送的数据包。
15.一种交换机,其特征在于,所述交换机包括:
候选ACK报文接收模块,用于接收接收终端发送的候选ACK报文;
第一ACK报文生成模块,用于将SwitchID和自身的队列可用窗口值,写入所述候选ACK报文,得到第一ACK报文;
第一ACK报文发送模块,用于将所述第一ACK报文发送至发送终端;
数据包接收模块用于接收所述发送终端发送的数据包;
数据包发送模块,用于将所述数据包发送至所述接收终端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211733327.0A CN116233002A (zh) | 2022-12-30 | 2022-12-30 | 一种数据包发送方法、接收方法、报文发送方法和产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211733327.0A CN116233002A (zh) | 2022-12-30 | 2022-12-30 | 一种数据包发送方法、接收方法、报文发送方法和产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116233002A true CN116233002A (zh) | 2023-06-06 |
Family
ID=86585083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211733327.0A Pending CN116233002A (zh) | 2022-12-30 | 2022-12-30 | 一种数据包发送方法、接收方法、报文发送方法和产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116233002A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116582496A (zh) * | 2023-07-13 | 2023-08-11 | 广东睿江云计算股份有限公司 | 令牌桶丢包优化方法及系统 |
-
2022
- 2022-12-30 CN CN202211733327.0A patent/CN116233002A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116582496A (zh) * | 2023-07-13 | 2023-08-11 | 广东睿江云计算股份有限公司 | 令牌桶丢包优化方法及系统 |
CN116582496B (zh) * | 2023-07-13 | 2024-04-19 | 广东睿江云计算股份有限公司 | 令牌桶丢包优化方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4738594B2 (ja) | データフロー制御方法および装置 | |
US9699092B2 (en) | Systems and methods for dynamically adjusting QoS parameters | |
JP5238036B2 (ja) | Hsdpaフロー制御におけるrlcウインドウサイズの制限 | |
KR20080079335A (ko) | 통신 방법, 통신 시스템, 노드 및 프로그램 | |
CN103269260A (zh) | 数据传输方法、数据接收端、数据发送端和数据传输系统 | |
JP2006060674A (ja) | 通信装置、データ通信方法およびプログラム | |
JP2008518552A (ja) | 粗細試験期間を使用したネットワーク・パケットの経験的スケジューリング法 | |
WO2016045332A1 (zh) | 编码参数的调整、反馈信息的处理方法及装置 | |
JP2001308947A (ja) | 通信装置、中継装置および通信制御方法 | |
KR20080075308A (ko) | Ip 네트워크 시스템에서의 패킷 버퍼 관리 장치 및 방법 | |
JP2007506364A (ja) | ネットワーク・パケットの経験的スケジュール設定方法 | |
CN116233002A (zh) | 一种数据包发送方法、接收方法、报文发送方法和产品 | |
JP2007267082A (ja) | データ送受信装置及びデータ送受信方法 | |
CN112737940A (zh) | 一种数据传输的方法和装置 | |
EP1730903A2 (en) | Expedited data transmission in packet based network | |
CN110808917B (zh) | 多链路聚合数据重传方法及发送设备 | |
JPH114225A (ja) | データ伝送装置およびデータ伝送方法 | |
US8155074B1 (en) | Methods and systems for improving performance of applications using a radio access network | |
JP2006109325A (ja) | 通信システム、通信装置、およびプログラム | |
JP2007006068A (ja) | 高速ネットワークにおけるパケットの同期送受信方法、送受信システム、送受信装置および同期送受信プログラム | |
JP2009105662A (ja) | マルチホップ通信システム、マルチホップ通信方法、端末装置および中継装置 | |
KR20140130605A (ko) | 패킷 전송 스케줄링 장치 및 방법 | |
JP4025659B2 (ja) | 無線基地局、移動局、無線通信システム、及び無線通信方法 | |
JP2007306623A (ja) | 無線基地局、移動局、無線通信システム、及び無線通信方法 | |
KR100772192B1 (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing Applicant after: Tianyiyun Technology Co.,Ltd. Address before: 100093 Floor 4, Block E, Xishan Yingfu Business Center, Haidian District, Beijing Applicant before: Tianyiyun Technology Co.,Ltd. |