CN115766605A - 网络拥塞控制方法、装置及系统 - Google Patents
网络拥塞控制方法、装置及系统 Download PDFInfo
- Publication number
- CN115766605A CN115766605A CN202111121052.0A CN202111121052A CN115766605A CN 115766605 A CN115766605 A CN 115766605A CN 202111121052 A CN202111121052 A CN 202111121052A CN 115766605 A CN115766605 A CN 115766605A
- Authority
- CN
- China
- Prior art keywords
- port
- network device
- message
- window
- network
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种网络拥塞控制方法、装置及系统,属于网络技术领域。网络设备接收到来自第一设备的第一报文后,将第一报文中第一设备指示的原始窗口缩放因子修改为预先配置的统一窗口缩放因子,得到第二报文。第一网络设备向第二设备发送第二报文。第二报文用于使第二设备根据统一窗口缩放因子调整报文发送速率以控制网络拥塞。当网络设备的端口发生拥塞时,网络设备基于统一窗口缩放因子来修改通过该端口接收到的确认报文中的接收窗口字段携带的窗口值,无需查询发往该端口的TCP流对应的窗口缩放因子,简化了修改确认报文中的接收窗口字段的过程,降低了网络设备处理拥塞的时延。
Description
本申请要求于2021年09月02日提交的申请号为202111024332.X、发明名称为“一种网络拥塞控制方法及相关设备”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及网络技术领域,特别涉及一种网络拥塞控制方法、装置及系统。
背景技术
网络拥塞(congestion)是指网络中传送的报文的数量太多时,由于转发设备的资源有限而造成网络传输性能下降的情况。当网络发生拥塞时,一般会出现数据丢失,时延增加,吞吐量下降,严重时甚至会导致“拥塞崩溃(congestion collapse)”。通常情况下,当网络中负载过度增加致使网络性能下降时,就会发生网络拥塞。
基于网络设备(例如交换机,路由器等)的网络拥塞控制技术可以达到很好的拥塞控制效果。当网络设备的出端口发生拥塞时,网络设备通过修改从该出端口发出的正向数据(data)报文相应的反向确认(acknowledgement,ACK)报文中的接收窗口(receiverwindow,RWND)字段携带的窗口值(代表了所期望的发送端的发送速率)作为拥塞通知消息,来控制发送端的发送速率,从而快速缓解网络拥塞。
在上述方案中,网络设备需要基于发送端和接收端在建立传输控制协议(transmission control protocol,TCP)连接的三次握手协商过程中协商的窗口缩放因子(window scale factor),来修改ACK报文中的RWND字段携带的窗口值。由于不同TCP流对应的窗口缩放因子不一致,因此网络设备需要记录每条TCP流对应的窗口缩放因子,并在修改ACK报文的RWND字段时查询对应的窗口缩放因子来计算窗口值,导致网络设备修改ACK报文中的RWND字段的难度较大,网络设备处理拥塞的时延较高,进而导致网络拥塞控制的效率较低。
发明内容
本申请提供了一种网络拥塞控制方法、装置及系统,可以解决目前网络拥塞控制的效率较低的问题。
第一方面,提供了一种网络拥塞控制方法。第一网络设备接收来自第一设备的第一报文,该第一报文包括第一设备指示的原始窗口缩放因子。第一报文的目的地址为第二设备的互联网协议(Internet Protocol,IP)地址。第一网络设备将第一报文中的原始窗口缩放因子修改为预先配置的统一窗口缩放因子,得到第二报文。第一网络设备向第二设备发送第二报文。第二报文用于使第二设备根据统一窗口缩放因子调整报文发送速率以控制网络拥塞。
可选地,第一报文为同步序列编号(synchronize sequence numbers,SYN)报文,或者,第一报文为SYN确认(SYN acknowledgement,SYN-ACK)报文。
本申请中,通过在网络设备中预先配置统一窗口缩放因子。网络设备将接收到的SYN报文和/或SYN确认报文中的原始窗口缩放因子修改为统一窗口缩放因子,再将修改后的报文发送给目的设备,使得目的设备能够使用统一窗口缩放因子计算源端设备指示的接收窗口的大小,进而调整报文发送速率以控制网络拥塞。这样,当网络设备的某个端口发生拥塞时,网络设备可以直接基于统一窗口缩放因子来修改通过该端口接收到的确认报文中的接收窗口字段携带的窗口值,而无需查询发往该端口的TCP流对应的窗口缩放因子,简化了网络设备修改确认报文中的接收窗口字段的过程,从而提高了转发确认报文的效率,降低了网络设备处理拥塞的时延,进而提高了网络拥塞控制的效率。
第一种实现方式,在第一设备与第二设备建立TCP连接之后,当第一网络设备的第一端口发生拥塞时,第一网络设备基于统一窗口缩放因子修改通过第一端口接收到的第一确认报文中的接收窗口字段携带的窗口值,得到第二确认报文。其中,第一端口为用于转发第二设备向第一设备发送的报文的出端口,第一确认报文来自第一设备、且目的地址为第二设备的IP地址。然后第一网络设备向第二设备发送第二确认报文。
进一步地,第二设备接收到第二确认报文之后,可以采用统一窗口缩放因子还原计算出实际的第一发送速率。
可选地,第一网络设备基于统一窗口缩放因子修改通过第一端口接收到的第一确认报文中的接收窗口字段携带的窗口值的实现过程,包括:第一网络设备根据第一端口的拥塞程度和/或发往第一端口的出端口队列的TCP流的数量,确定第二设备的第一发送速率。第一网络设备根据统一窗口缩放因子以及第一发送速率,确定第一窗口值。第一网络设备将第一确认报文中的接收窗口字段的值修改为第一窗口值。
第二种实现方式,第一网络设备与第二网络设备跨设备链路聚合。第一网络设备可以接收第二网络设备发送的第二网络设备的端口状态信息。第二网络设备的端口状态信息包括对第二网络设备的端口的拥塞状态的指示。和/或,第一网络设备可以向第二网络设备发送第一网络设备的端口状态信息。该第一网络设备的端口状态信息包括对第一网络设备的端口的拥塞状态的指示。
这种实现方式下,跨设备链路聚合的多个网络设备之间交换各自的端口状态信息。网络设备可以根据自身端口的拥塞状态以及跨设备链路聚合的其它网络设备的端口的拥塞状态,确定是否修改接收到的确认报文中的接收窗口字段携带的窗口值。
可选地,在第一设备与第二设备建立TCP连接之后,当第一网络设备的第一端口发生拥塞,并且基于对第二网络设备的端口的拥塞状态的指示确定第二网络设备的第二端口发生拥塞时,第一网络设备基于统一窗口缩放因子修改通过第一端口接收到的第三确认报文中的接收窗口字段携带的窗口值,得到第四确认报文。其中,第一端口与第二端口具有绑定关系,且第一端口和第二端口均为用于转发第二设备向第一设备发送的报文的出端口。第三确认报文来自第一设备、且目的地址为第二设备的IP地址。然后第一网络设备向第二设备发送第四确认报文。
本申请中,只要跨设备链路聚合的多个网络设备上具有绑定关系的多个端口都发生拥塞,那么这些网络设备可以直接修改通过相应端口接收到的确认报文中的接收窗口字段的值,而无需判断确认报文所响应的正向报文经过哪个网络设备,能够有效解决正反向路径不一致导致无法进行拥塞控制的问题。
可选地,第二网络设备的端口状态信息还包括发往第二端口的出端口队列的TCP流的数量。第一网络设备基于统一窗口缩放因子修改通过第一端口接收到的第三确认报文中的接收窗口字段携带的窗口值的实现方式,包括:第一网络设备根据目标流数量,确定第二设备的第二发送速率。目标流数量为发往第一端口的出端口队列的TCP流的数量与发往第二端口的出端口队列的TCP流的数量中的较小值。然后第一网络设备根据统一窗口缩放因子以及第二发送速率,确定第二窗口值,并将第三确认报文中的接收窗口字段的值修改为第二窗口值。
本申请中,网络设备采用分别发往不同网络设备上具有绑定关系的多个端口的出端口队列的TCP流中的最少数量确定设备的发送速率。这样,当分别发往不同网络设备上具有绑定关系的多个端口的出端口队列的TCP流的数量相同或相近,即多个端口负载均衡的效果较好时,能够进行有效地拥塞控制。当分别发往不同网络设备上具有绑定关系的多个端口的出端口队列的TCP流的数量相差较大,即多个端口负载均衡的效果较差时,可以降低网络设备的端口欠吞吐的概率,进而提高网络的整体吞吐量。
第三种实现方式,当第一网络设备的第三端口发生拥塞时,第一网络设备在发往第三端口的出端口队列的第三报文中添加拥塞指示,得到第四报文。第一网络设备通过第三端口发送第四报文。其中,该拥塞指示用于指示发生拥塞。可选地,拥塞指示在第三报文的时间戳选项字段。
本申请中,当网络设备的端口发生拥塞时,网络设备可以在发往该端口的出端口队列的报文中添加拥塞指示。进一步地,接收端在接收到添加有拥塞指示的报文后,在响应该报文的确认报文中也添加拥塞指示。这样接收到该确认报文的网络设备可以直接修改该确认报文中的接收窗口字段的值,而无需判断该确认报文所响应的正向报文经过哪个网络设备,能够有效解决正反向路径不一致导致无法进行拥塞控制的问题。
可选地,当第一网络设备接收到携带有拥塞指示的第五确认报文时,第一网络设备基于统一窗口缩放因子修改第五确认报文中的接收窗口字段携带的窗口值,得到第六确认报文。第一网络设备发送第六确认报文。其中,拥塞指示用于指示发生拥塞。可选地,拥塞指示在第五确认报文的时间戳选项字段。
本申请中,网络设备在接收到携带有拥塞指示的确认报文后,可以直接基于统一窗口缩放因子修改该确认报文中的接收窗口字段的值,而无需判断该确认报文所响应的正向报文经过哪个网络设备,能够有效解决正反向路径不一致导致无法进行拥塞控制的问题。
可选地,拥塞指示还用于指示拥塞程度,第一网络设备基于统一窗口缩放因子修改第五确认报文中的接收窗口字段携带的窗口值的实现方式,包括:第一网络设备根据拥塞程度,确定对第五确认报文的修改概率。第一网络设备根据修改概率,基于统一窗口缩放因子对第五确认报文中的接收窗口字段携带的窗口值进行修改。
第二方面,提供了一种网络设备。所述网络设备包括多个功能模块,所述多个功能模块相互作用,实现上述第一方面及其各实施方式中的方法。所述多个功能模块可以基于软件、硬件或软件和硬件的结合实现,且所述多个功能模块可以基于具体实现进行任意组合或分割。
第三方面,提供了一种网络拥塞控制系统,包括:第一设备、第二设备以及网络设备。
第一设备用于发送第一报文,第一报文包括第一设备指示的原始窗口缩放因子,第一报文的目的地址为第二设备的IP地址。网络设备用于将第一报文中的原始窗口缩放因子修改为预先配置的统一窗口缩放因子,得到第二报文,并向第二设备发送第二报文。第二设备用于将第二报文中的统一窗口缩放因子作为第一设备指示的窗口缩放因子,后续根据统一窗口缩放因子调整报文发送速率以控制网络拥塞。
可选地,网络设备用于执行上述第一方面及其各实施方式中的方法步骤。
第四方面,提供了一种网络设备,包括:处理器和存储器;
所述存储器,用于存储计算机程序,所述计算机程序包括程序指令;
所述处理器,用于调用所述计算机程序,实现上述第一方面及其各实施方式中的方法。
第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令被处理器执行时,实现上述第一方面及其各实施方式中的方法。
第六方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现上述第一方面及其各实施方式中的方法。
第七方面,提供了一种芯片,芯片包括可编程逻辑电路和/或程序指令,当芯片运行时,实现上述第一方面及其各实施方式中的方法。
本申请提供的技术方案带来的有益效果至少包括:
通过在网络设备中预先配置统一窗口缩放因子。网络设备可以将接收到的SYN报文和/或SYN确认报文中的原始窗口缩放因子修改为统一窗口缩放因子,再将修改后的报文发送给目的设备,使得目的设备能够使用统一窗口缩放因子计算源端设备指示的接收窗口的大小,进而调整报文发送速率以控制网络拥塞。这样,当网络设备的某个端口发生拥塞时,网络设备可以直接基于统一窗口缩放因子来修改通过该端口接收到的确认报文中的接收窗口字段携带的窗口值,而无需查询发往该端口的TCP流对应的窗口缩放因子,简化了网络设备修改确认报文中的接收窗口字段的过程,从而提高了转发确认报文的效率,降低了网络设备处理拥塞的时延,进而提高了网络拥塞控制的效率。
针对多个网络设备跨设备链路聚合场景,一种实现方式下,跨设备链路聚合的多个网络设备之间交换各自的端口状态信息。网络设备可以根据自身端口的拥塞状态以及跨设备链路聚合的其它网络设备的端口的拥塞状态,确定是否修改接收到的确认报文中的接收窗口字段携带的窗口值。只要跨设备链路聚合的多个网络设备上具有绑定关系的多个端口都发生拥塞,那么这些网络设备可以直接修改通过相应端口接收到的确认报文中的接收窗口字段的值,而无需判断确认报文所响应的正向报文经过哪个网络设备,能够有效解决正反向路径不一致导致无法进行拥塞控制的问题。另一种实现方式下,当网络设备的端口发生拥塞时,网络设备在发往该端口的出端口队列的报文中添加拥塞指示,接收端在接收到添加有拥塞指示的报文后,在响应该报文的确认报文中也添加拥塞指示,这样接收到该确认报文的网络设备可以直接修改该确认报文中的接收窗口字段的值,而无需判断该确认报文所响应的正向报文经过哪个网络设备,能够有效解决正反向路径不一致导致无法进行拥塞控制的问题。
本申请提供的以上方案未改变现有的TCP机制,可实现性高。
附图说明
图1是本申请实施例提供的一种网络拥塞控制系统的结构示意图;
图2是本申请实施例提供的一种网络拥塞控制方法的流程示意图;
图3是本申请实施例提供的一种建立TCP连接的部分过程示意图;
图4是本申请实施例提供的另一种网络拥塞控制系统的结构示意图;
图5是本申请实施例提供的一种网络设备的结构示意图;
图6是本申请实施例提供的一种网络设备的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请实施例提供了一种网络拥塞控制系统,包括:第一设备、第二设备以及网络设备。
第一设备用于发送第一报文,第一报文包括第一设备指示的原始窗口缩放因子,第一报文的目的地址为第二设备的IP地址。网络设备用于将第一报文中的原始窗口缩放因子修改为预先配置的统一窗口缩放因子,得到第二报文,并向第二设备发送第二报文。第二设备用于将第二报文中的统一窗口缩放因子作为第一设备指示的窗口缩放因子,后续根据统一窗口缩放因子调整报文发送速率以控制网络拥塞。
可选地,第一设备和第二设备分别可以单归接入通信网络中的网络设备,或者也可以多归接入通信网络中的多个网络设备,本申请实施例对此不做限定。图1是上述网络拥塞控制系统的一种结构示意图。如图1所示,该网络拥塞控制系统包括多个设备101A-101B(统称为设备101)以及通信网络中的多个网络设备102A-102F(统称为网络设备102)。设备101可以是终端、服务器或虚拟机(virtual machine,VM)等。网络设备102可以是交换机或路由器等。图1中设备101以及网络设备102的数量仅用作示意,不作为对本申请实施例提供的网络拥塞控制系统的限制。
本申请实施例提供的通信网络可以是数据中心网络(data center network,DCN)、城域网络、广域网络或园区网络等,本申请实施例对通信网络的类型不做限定。可选地,该通信网络可以采用二层网络架构或三层网络架构。在二层网络架构下,通信网络包括汇聚层和接入层,该通信网络也可称为两层网络,汇聚层是通信网络的高速交换主干,接入层用于将工作站接入通信网络。在三层网络架构下,通信网络包括核心层、汇聚层和接入层,该通信网络也可称为三层网络,核心层是通信网络的高速交换主干,汇聚层用于提供汇聚连接(连接接入层和核心层),接入层用于将工作站接入通信网络。工作站可以是图1中的设备101。
本申请实施例以通信网络采用二层网络架构为例进行说明。例如参见图1,通信网络包括汇聚层和接入层。汇聚层包括2个网络设备102A-102B,接入层包括4个网络设备102C-102F。图1示出的通信网络可以是胖树(fat tree or leaf-spine)拓扑网络,则网络设备102A-102B为spine交换机,网络设备102C-102F为leaf交换机。
请继续参见图1,设备101A与网络设备102C连接,设备101B与网络设备102E连接。设备101A与设备101B之间建立有TCP连接。TCP是双工的协议,设备101A为发送端,设备101B为接收端;或者,设备101A为接收端,设备101B为发送端。会话双方都各自维护一个发送窗口(sender window,SWND)、一个接收窗口(RWND)和一个拥塞窗口(congestion window,CWND)。发送窗口用来限制报文发送速率,接收窗口用来限制报文接收速率。其中,设备的接收窗口的大小受设备自身的应用、系统和硬件的限制,设备的报文接收速率通常不能大于设备的报文处理速率,设备的接收窗口的大小可随时间变化。设备的拥塞窗口的大小由设备自身去维护,通常会根据往返时延(round trip time,RTT)采样实现动态变化。设备的发送窗口的大小通常取值为设备自身维护的拥塞窗口的大小与对端的接收窗口的大小中的较小值。
目前的TCP机制中,会话双方在建立TCP连接的三次握手协商过程中,会交换各自的窗口缩放因子。在第一次握手时,发送端向接收端发送SYN报文,该SYN报文包括发送端指示的窗口缩放因子,记为S1;在第二次握手时,接收端向发送端发送SYN确认报文,该SYN确认报文包括接收端指示的窗口缩放因子,记为S2。其中,发送端指示的窗口缩放因子S1取决于建立TCP连接时发送端的可用内存。接收端指示的窗口缩放因子S2取决于建立TCP连接时接收端的可用内存。在建立TCP连接之后,会话双方都各自保存自身的窗口缩放因子以及对端指示的窗口缩放因子。值得说明的是,会话双方只在建立TCP连接的过程中,在SYN报文和SYN确认报文中携带窗口缩放因子,在后续的数据报文中不再携带。
在TCP会话过程中,接收端接收到来自发送端的数据报文后,接收端会向发送端发送确认报文,该确认报文中的接收窗口字段携带有窗口值,该窗口值由接收端根据自身的窗口缩放因子S2以及自身的接收窗口的大小rwnd1计算得到,该窗口值等于rwnd1/S2;发送端接收到来自接收端的确认报文后,根据保存的接收端指示的窗口缩放因子S2以及确认报文中的接收窗口字段携带的窗口值rwnd1/S2,计算得到接收端的接收窗口的大小rwnd1,再根据该接收窗口的大小决定是否调整发送窗口的大小,该接收端的接收窗口的大小rwnd1为发送端的发送窗口的大小的上限。同理,发送端接收到来自接收端的数据报文后,发送端会向接收端发送确认报文,该确认报文中的接收窗口字段携带有窗口值,该窗口值由发送端根据自身的窗口缩放因子S1以及自身的接收窗口的大小rwnd2计算得到,该窗口值等于rwnd2/S1;接收端接收到来自发送端的确认报文后,根据保存的发送端指示的窗口缩放因子S1以及确认报文中的接收窗口字段携带的窗口值rwnd2/S1,计算得到发送端的接收窗口的大小rwnd2,再根据该接收窗口的大小决定是否调整发送窗口的大小,该发送端的接收窗口的大小rwnd2为接收端的发送窗口的大小的上限。
由于会话双方各自指示的窗口缩放因子分别取决于建立TCP连接时各自的可用内存,而无法在设备上固定配置,因此不同TCP流对应的窗口缩放因子不一致。不同TCP流的发送端和/或接收端不同。TCP流对应的窗口缩放因子指的是该TCP流的接收端指示的窗口缩放因子。目前,网络设备需要记录经过该网络设备的每条TCP流对应的窗口缩放因子。当网络设备的出端口发生拥塞时,网络设备需要基于发往该出端口的TCP流对应的窗口缩放因子来修改从该出端口发出的正向数据报文相应的反向确认报文中的接收窗口字段携带的窗口值,进而控制发送端减小对该TCP流的发送速率,从而缓解网络拥塞。但是在目前方案中,一方面,网络设备需要记录经过该网络设备的每条TCP流对应的窗口缩放因子,占用的存储资源较多。另一方面,网络设备在修改确认报文中的接收窗口字段时需要查询对应的窗口缩放因子,导致网络设备修改确认报文中的接收窗口字段的难度较大,网络设备处理拥塞的时延较高,进而导致网络拥塞控制的效率较低。
基于此,本申请实施例提供了一种网络拥塞控制方法,通过在网络设备中预先配置统一窗口缩放因子。网络设备在接收到来自第一设备的第一报文后,将第一报文中的原始窗口缩放因子修改为统一窗口缩放因子,得到第二报文,该第一报文为SYN报文或SYN确认报文。再将第二报文发送给第二设备,使得第二设备接收到来自第一设备的确认报文后,能够使用统一窗口缩放因子计算第一设备指示的接收窗口的大小,进而调整报文发送速率以控制网络拥塞。这样,当网络设备的某个端口发生拥塞时,网络设备可以直接基于统一窗口缩放因子来修改通过该端口接收到的确认报文中的接收窗口字段携带的窗口值,而无需查询发往该端口的TCP流对应的窗口缩放因子,简化了网络设备修改确认报文中的接收窗口字段的过程,从而提高了转发确认报文的效率,降低了网络设备处理拥塞的时延,进而提高了网络拥塞控制的效率。网络设备也无需记录各条TCP流分别对应的原始窗口缩放因子,节约了存储资源。
可选地,网络设备的端口既可以作为入端口,也可以作为出端口。本申请实施例中,网络设备的端口发生拥塞,指的是该端口作为出端口时发生拥塞,具体可以是该端口上的出端口队列的长度超出阈值。
下面对本申请实施例提供的方法流程进行举例说明。
图2是本申请实施例提供的一种网络拥塞控制方法的流程示意图。该方法可以应用于如图1所示的网络拥塞控制系统。如图2所示,该方法包括:
步骤201、第一网络设备接收来自第一设备的第一报文,该第一报文包括第一设备指示的原始窗口缩放因子。
第一报文的目的地址为第二设备的IP地址。第一设备指示的原始窗口缩放因子取决于建立TCP连接时第一设备的可用内存。原始窗口缩放因子在第一报文的TCP选项(TCPoption)字段中。
可选地,第一设备为主动发起TCP连接的设备,第二设备为被动响应TCP连接的设备,则第一报文为SYN报文。或者,第二设备为主动发起TCP连接的设备,第一设备为被动响应TCP连接的设备,则第一报文为SYN确认报文。第一网络设备可以通过识别接收到的报文的TCP头中标志字段的SYN标志位的值,判断该报文是否为SYN报文或SYN确认报文。
步骤202、第一网络设备将第一报文中的原始窗口缩放因子修改为预先配置的统一窗口缩放因子,得到第二报文。
可选地,通信网络中的各个网络设备都预先配置有统一窗口缩放因子,第一网络设备可以是通信网络中的任一网络设备。在进行组网配置时,可以将位于接入层的网络设备配置用来修改来自所接入的设备的SYN报文或SYN确认报文中的窗口缩放因子。例如在如图1所示的网络拥塞控制系统中,可以将网络设备102C-102F配置用来修改来自各自接入的设备的SYN报文和SYN确认报文中的窗口缩放因子。假设第一设备为设备101A,则第一网络设备可以是将设备101A接入通信网络的网络设备102C。
步骤203、第一网络设备向第二设备发送第二报文,该第二报文用于使第二设备根据统一窗口缩放因子调整报文发送速率以控制网络拥塞。
第二设备接收到第二报文后,将第二报文携带的统一窗口缩放因子作为第一设备指示的窗口缩放因子,在后续接收到来自第一设备的确认报文后,根据该统一窗口缩放因子来计算第一设备所指示的接收窗口的大小。
可选地,通信网络中的网络设备可以将接收到的SYN报文和SYN确认报文中的窗口缩放因子都修改为统一窗口缩放因子。例如,图3是本申请实施例提供的一种建立TCP连接的部分过程示意图。如图3所示,在第一次握手时,发送端发送SYN报文,该SYN报文包括窗口缩放因子S1;通信网络中的网络设备将该SYN报文中的窗口缩放因子S1修改为统一窗口缩放因子S,然后将修改后的SYN报文发送给接收端;接收端保存该统一窗口缩放因子S,以便后续用来计算发送端的接收窗口的大小。在第二次握手时,接收端发送SYN确认报文,该SYN确认报文包括窗口缩放因子S2;通信网络中的网络设备将该SYN确认报文中的窗口缩放因子S2修改为统一窗口缩放因子S,然后将修改后的SYN确认报文发送给发送端;发送端保存该统一窗口缩放因子S,以便后续用来计算接收端的接收窗口的大小。其中,修改SYN报文的网络设备与修改SYN确认报文的网络设备可以是同一网络设备,例如可以是与发送端连接的网络设备,或者可以是与接收端连接的网络设备。或者,修改SYN报文的网络设备与修改SYN确认报文的网络设备也可以是不同的网络设备,例如修改SYN报文的网络设备可以是与发送端连接的网络设备,修改SYN确认报文的网络设备可以是与接收端连接的网络设备。
在第一设备与第二设备建立TCP连接的过程中,第一网络设备将第一设备指示的原始窗口缩放因子修改为统一窗口缩放因子之后,进一步地,在第一设备与第二设备建立TCP连接之后,在第一设备与第二设备的TCP会话过程中,第一网络设备可以使用该统一窗口缩放因子调整第二设备向第一设备的报文发送速率。
可选地,当第一网络设备的第一端口发生拥塞时,第一网络设备可以基于统一窗口缩放因子修改通过第一端口接收到的第一确认报文中的接收窗口字段携带的窗口值,得到第二确认报文。然后第一网络设备向第二设备发送第二确认报文。其中,第一端口为用于转发第二设备向第一设备发送的报文的出端口。第二设备向第一设备发送的报文可以是数据报文、控制报文或管理报文等。第一确认报文来自第一设备、且目的地址为第二设备的IP地址。
可选地,第一网络设备基于统一窗口缩放因子修改通过第一端口接收到的第一确认报文中的接收窗口字段携带的窗口值的实现过程,可以包括以下步骤S11至步骤S13。
在步骤S11中,第一网络设备根据第一端口的拥塞程度和/或发往第一端口的出端口队列的TCP流的数量,确定第二设备的第一发送速率。
第一发送速率为第一网络设备允许第二设备采用的向第一设备发送报文的最大速率,即第二设备的最大发送窗口。第一发送速率与第一端口的拥塞程度负相关,即第一端口的拥塞程度越高,第一发送速率越小。和/或,第一发送速率与发往第一端口的出端口队列的TCP流的数量负相关,即发往第一端口的出端口队列的TCP流的数量越多,第一发送速率越小。
在步骤S12中,第一网络设备根据统一窗口缩放因子以及第一发送速率,确定第一窗口值。
可选地,统一窗口缩放因子为S,第一发送速率为RWND1,则第一窗口值为RWND1/S。
在步骤S13中,第一网络设备将第一确认报文中的接收窗口字段的值修改为第一窗口值。
第二设备接收到第二确认报文之后,可以采用保存的统一窗口缩放因子S还原计算出实际的第一发送速率RWND1:RWND1=(RWND1/S)*S。
可选地,统一窗口缩放因子是为通信网络中的各个网络设备统一配置的窗口缩放因子。在第一设备与第二设备建立TCP连接的过程中,第一设备与第二设备之间的报文传输路径上的一个网络设备将第一设备指示的原始窗口缩放因子修改为统一窗口缩放因子之后,在第一设备与第二设备的TCP会话过程中,第一设备与第二设备之间的报文传输路径上的各个网络设备都可以使用该统一窗口缩放因子调整第二设备向第一设备的报文发送速率。
例如参考图1示出的网络拥塞控制系统,假设第一设备为设备101B,第二设备为设备101A,设备101A到设备101B的报文传输路径上依次包括网络设备102C、网络设备102A、网络设备102B、网络设备102E。在设备101B与设备101A建立TCP连接的过程中,网络设备102E将设备101B指示的原始窗口缩放因子修改为统一窗口缩放因子S。在设备101A向设备101B发送数据报文的过程中,当网络设备102E上用于转发设备101A向设备101B发送的报文的端口(指出端口)发生拥塞时,如果网络设备102E想让设备101A按照RWND1的速率发送报文,则网络设备102E可以将通过该端口接收到的设备101B向设备101A发送的确认报文中的接收窗口字段携带的窗口值修改为RWND1/S。设备101A接收到确认报文后,可以采用统一窗口缩放因子S还原计算出实际的发送速率RWND1:RWND1=(RWND1/S)*S。这样可以达到准确控制发送速率的效果。
本申请实施例中,通过在网络设备中预先配置统一窗口缩放因子。网络设备将接收到的SYN报文或SYN确认报文中的原始窗口缩放因子修改为统一窗口缩放因子,再将修改后的报文发送给目的设备,使得目的设备能够使用统一窗口缩放因子计算源端设备指示的接收窗口的大小,进而调整报文发送速率以控制网络拥塞。这样,当网络设备的某个端口发生拥塞时,网络设备可以直接基于统一窗口缩放因子来修改通过该端口接收到的确认报文中的接收窗口字段携带的窗口值,而无需查询发往该端口的TCP流对应的窗口缩放因子,简化了网络设备修改确认报文中的接收窗口字段的过程,从而提高了转发确认报文的效率,降低了网络设备处理拥塞的时延,进而提高了网络拥塞控制的效率。网络设备也无需记录各条TCP流分别对应的原始窗口缩放因子,节约了存储资源。
在一些场景中,当设备(发送端和/或接收端)多归接入两个或两个以上的网络设备时,正向数据报文与相应的反向确认报文的传输路径可能不一致。正向数据报文造成了网络拥塞,本应在网络拥塞点(发生拥塞的网络设备)修改相应的反向确认报文中的接收窗口字段携带的窗口值,但是如果反向确认报文不经过该网络拥塞点,那么会导致网络拥塞点无法修改反向确认报文中的接收窗口字段携带的窗口值,从而无法控制发送端的报文发送速率,即无法对网络进行拥塞控制。
例如,图4是本申请实施例提供的另一种网络拥塞控制系统的结构示意图。如图4所示,该网络拥塞控制系统包括多个设备401A-401B(统称为设备401)以及通信网络中的多个网络设备402A-402F(统称为网络设备402)。其中,网络设备402C与网络设备402D跨设备链路聚合,设备401A双归接入网络设备402C和网络设备402D。网络设备402E与网络设备402F跨设备链路聚合,设备402B双归接入网络设备402E和网络设备402F。两个网络设备跨设备链路聚合,指基于跨设备链路聚合组(multichassis link aggregation group,M-LAG)技术,将两个网络设备组成一个双活系统。双活系统中的网络设备之间通常基于负载均衡原则转发报文。图4中的设备401、网络设备402、通信网络分别与图1中的设备101、网络设备102、通信网络类似,请参照上述对图1中设备101、网络设备102、通信网络的描述,在这里不再重复。
在如图4所示的网络拥塞控制系统中,设备401A到设备401B的报文传输路径上依次包括网络设备402C/网络设备402D、网络设备402A、网络设备402B、网络设备402E/网络设备402F。当设备401A向设备401B发送数据报文,造成网络设备402E的出端口发生拥塞时,设备401B向设备401A发送的确认报文可能会经过网络设备402F,而不经过网络设备402E,导致网络设备402E无法修改设备401B向设备401A发送的确认报文中的接收窗口字段的值。
针对设备多归接入两个或两个以上的网络设备的场景,本申请实施例进一步提出了以下两种实现方式来实现对网络的有效拥塞控制。
在第一种实现方式中,跨设备链路聚合的多个网络设备之间交换各自的端口状态信息。端口状态信息包括对端口的拥塞状态的指示。网络设备根据自身端口的拥塞状态以及跨设备链路聚合的其它网络设备的端口的拥塞状态,确定是否修改接收到的确认报文中的接收窗口字段携带的窗口值。其中,对端口的拥塞状态的指示可以是该端口的出端口队列的长度,其他网络设备可以通过判断出端口队列的长度是否超出阈值来确定该端口是否发生拥塞。或者,对端口的拥塞状态的指示也可以采用预先约定的指示信息来表示,具体可以采用数字、字母或字符等表示。例如,对端口的拥塞状态的指示为“0”时,表示该端口未发生拥塞,对端口的拥塞状态的指示为“1”时,表示该端口发生拥塞。
可选地,上述端口状态信息还可以包括对发往端口的出端口队列的TCP流的数量。
本申请实施例以两个网络设备跨设备链路聚合为例进行说明。当上述第一网络设备与第二网络设备跨设备链路聚合时,第一网络设备可以接收第二网络设备发送的该第二网络设备的端口状态信息。第二网络设备的端口状态信息包括对该第二网络设备的端口的拥塞状态的指示。和/或,第一网络设备可以向第二网络设备发送该第一网络设备的端口状态信息。第一网络设备的端口状态信息包括对该第一网络设备的端口的拥塞状态的指示。
可选地,第一网络设备的第一端口与第二网络设备的第二端口具有绑定关系,则第一网络设备向第二网络设备发送的端口状态信息至少包括对第一端口的拥塞状态的指示,第二网络设备向第一网络设备发送的端口状态信息至少包括对第二端口的拥塞状态的指示。其中,第一网络设备的第一端口与第二网络设备的第二端口具有绑定关系,也即是,第一网络设备的第一端口与第二网络设备的第二端口连接同一设备,且第一端口和第二端口对连接的设备上的流量进行负载分担。
结合参考图2示出的方法,在第一设备与第二设备建立TCP连接之后,当第一网络设备的第一端口发生拥塞,并且基于对第二网络设备的端口的拥塞状态的指示确定第二网络设备的第二端口发生拥塞时,第一网络设备基于统一窗口缩放因子修改通过第一端口接收到的第三确认报文中的接收窗口字段携带的窗口值,得到第四确认报文。然后第一网络设备向第二设备发送第四确认报文。其中,第一端口与第二端口具有绑定关系,且第一端口和第二端口均为用于转发第二设备向第一设备发送的报文的出端口。第三确认报文来自第一设备、且目的地址为第二设备的IP地址。
例如参考图4示出的网络拥塞控制系统,网络设备402E与网络设备402F之间定期交换各自的端口状态信息。假设网络设备402E的端口1与网络设备402F的端口2分别连接设备401B且两个端口具有绑定关系。当设备401A向设备401B发送的TCP流造成网络设备402E的端口1发生拥塞时,网络设备402F能够感知到网络设备402E的该端口1发生拥塞;同样地,当设备401A向设备401B发送的TCP流造成网络设备402F的端口2发生拥塞时,网络设备402E也能够感知到网络设备402F的该端口2发生拥塞。当网络设备402E的端口1以及网络设备402F的端口2同时发生拥塞时,网络设备402E可以基于统一窗口缩放因子修改通过端口1接收到的设备401B向设备401A发送的确认报文中的接收窗口字段的值,同时,网络设备402F可以基于统一窗口缩放因子修改通过端口2接收到的设备401B向设备401A发送的确认报文中的接收窗口字段的值。
这种实现方式下,只要跨设备链路聚合的多个网络设备上具有绑定关系的多个端口都发生拥塞,那么这些网络设备可以直接修改通过相应端口接收到的确认报文中的接收窗口字段的值,而无需判断确认报文所响应的正向报文经过哪个网络设备,能够有效解决正反向路径不一致导致无法进行拥塞控制的问题。
可选地,第二网络设备的端口状态信息还包括发往第二端口的出端口队列的TCP流的数量。第一网络设备基于统一窗口缩放因子修改通过第一端口接收到的第三确认报文中的接收窗口字段携带的窗口值的实现过程,可以包括以下步骤S21至步骤S23。
在步骤S21中,第一网络设备根据目标流数量,确定第二设备的第二发送速率,该目标流数量为发往第一端口的出端口队列的TCP流的数量与发往第二端口的出端口队列的TCP流的数量中的较小值。
第二发送速率为第一网络设备允许第二设备采用的向第一设备发送报文的最大速率,即第二设备的最大发送窗口。第二发送速率与目标流数量负相关,即目标流数量越多,第二发送速率越小。可选地,第二发送速率为RWND2,发往第一端口的出端口队列的TCP流的数量为N1,发往第二端口的出端口队列的TCP流的数量为N2。第二发送速率的计算公式如下:
RWND2=max{αB/min{N1,N2},rwnd_min}。
其中,B为第一网络设备的第一端口的最大可分配缓存,单位为字节(byte)。α为调整因子,取值范围为(0,1]。rwnd_min为预先配置的最小发送速率。max{}表示取大值,min{}表示取小值。
本申请实施例中,网络设备采用分别发往不同网络设备上具有绑定关系的多个端口的出端口队列的TCP流中的最少数量确定设备的发送速率。这样,当分别发往不同网络设备上具有绑定关系的多个端口的出端口队列的TCP流的数量相同或相近,即多个端口负载均衡的效果较好时,能够进行有效地拥塞控制。当分别发往不同网络设备上具有绑定关系的多个端口的出端口队列的TCP流的数量相差较大,即多个端口负载均衡的效果较差时,可以降低网络设备的端口欠吞吐的概率,进而提高网络的整体吞吐量。
在步骤S22中,第一网络设备根据统一窗口缩放因子以及第二发送速率,确定第二窗口值。
可选地,统一窗口缩放因子为S,第二发送速率为RWND2,则第二窗口值为RWND2/S。
在步骤S23中,第一网络设备将第三确认报文中的接收窗口字段的值修改为第二窗口值。
第二设备接收到第四确认报文之后,可以采用保存的统一窗口缩放因子S还原计算出实际的第二发送速率RWND2:RWND2=(RWND2/S)*S。
在第二种实现方式中,当网络设备的端口发生拥塞时,网络设备在发往该端口的出端口队列的报文中添加拥塞指示,接收端在接收到添加有拥塞指示的报文后,在响应该报文的确认报文中也添加拥塞指示,这样接收到该确认报文的网络设备可以直接修改该确认报文中的接收窗口字段的值,而无需判断该确认报文所响应的正向报文经过哪个网络设备,能够有效解决正反向路径不一致导致无法进行拥塞控制的问题。
可选地,拥塞指示在报文的时间戳选项(timestamp option)字段。报文的TCP头中一般会携带时间戳选项字段来测量往返时延,具体机制为:发送端在正向数据报文的TCP头中携带时间戳选项字段,接收端收到后将时间戳选项字段的值携带在反向确认报文的TCP头的时间戳选项字段中发送给发送端。通过将拥塞指示携带在报文的时间戳选项字段,接收端可以利用这种机制,将接收到的正向报文中的拥塞指示携带在反向确认报文中,无需在接收端侧增加额外的操作,实现方式简单。
可选地,时间戳选项字段的长度为32比特(bit),可以使用时间戳选项字段的部分比特来携带拥塞指示。例如可以使用时间戳选项字段的最后1比特来携带拥塞指示,0表示未发生拥塞,1表示发生拥塞。时间戳选项字段的最后1比特的默认值为0,这里,在报文中添加拥塞指示,可以理解为,将报文的时间戳选项字段的最后1比特的值修改为1。
可选地,拥塞指示还可以指示拥塞程度。例如可以使用时间戳选项字段的最后2比特来携带拥塞指示,00表示未发生拥塞,01/10表示发生轻度拥塞,11表示发生重度拥塞。
可选地,当上述第一网络设备的第三端口发生拥塞时,第一网络设备在发往第三端口的出端口队列的第三报文中添加拥塞指示,得到第四报文,该拥塞指示用于指示发生拥塞。第一网络设备通过第三端口发送第四报文。进一步地,接收到第四报文的设备在响应该第四报文的确认报文中添加该拥塞指示。可选地,拥塞指示在第三报文的时间戳选项字段。
可选地,结合参考图2示出的方法,当上述第一网络设备接收到携带有拥塞指示的第五确认报文时,第一网络设备基于统一窗口缩放因子修改第五确认报文中的接收窗口字段携带的窗口值,得到第六确认报文,该拥塞指示用于指示发生拥塞。然后第一网络设备发送第六确认报文。可选地,拥塞指示在第五确认报文的时间戳选项字段。
本申请实施例中,网络设备在接收到携带有拥塞指示的确认报文后,可以直接基于统一窗口缩放因子修改该确认报文中的接收窗口字段的值,而无需判断该确认报文所响应的正向报文经过哪个网络设备,能够有效解决正反向路径不一致导致无法进行拥塞控制的问题。
可选地,拥塞指示还用于指示拥塞程度。第一网络设备基于统一窗口缩放因子修改第五确认报文中的接收窗口字段携带的窗口值的实现过程,可以包括以下步骤S31至步骤S32。
在步骤S31中,第一网络设备根据拥塞程度,确定对第五确认报文的修改概率。
例如,第五确认报文携带的拥塞指示用于指示发生轻度拥塞,则第一网络设备可以确定对第五确认报文的修改概率为50%,也即是,第一网络设备有50%的概率会修改第五确认报文,也有50%的概率不修改第五确认报文。又例如,第五确认报文携带的拥塞指示用于指示发生重度拥塞,则第一网络设备可以确定对第五确认报文的修改概率为100%。
在步骤S32中,第一网络设备根据修改概率,基于统一窗口缩放因子对第五确认报文中的接收窗口字段携带的窗口值进行修改。
本申请实施例提供的网络拥塞控制方法的步骤的先后顺序能够进行适当调整,步骤也能够根据情况进行相应增减。任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内。例如上述针对设备多归接入两个或两个以上的网络设备的场景提出的两种实现方式可以分别结合图2示出的方法,使网络设备基于统一窗口缩放因子来修改确认报文中的接收窗口字段的值,或者,上述针对设备多归接入两个或两个以上的网络设备的场景提出的两种实现方式也可以不结合图2示出的方法独立实现,网络设备可以使用对应设备指示的原始窗口缩放因子来修改确认报文中的接收窗口字段的值。本申请实施例在此不再一一赘述。
用于执行图2所示方法的第一网络设备可以是图5所示的网络设备500。如图5所示,网络设备500包括:
接收模块501,用于接收来自第一设备的第一报文,第一报文包括第一设备指示的原始窗口缩放因子,第一报文的目的地址为第二设备的IP地址。
处理模块502,用于将第一报文中的原始窗口缩放因子修改为预先配置的统一窗口缩放因子,得到第二报文。
发送模块503,用于向第二设备发送第二报文,第二报文用于使第二设备根据统一窗口缩放因子调整报文发送速率以控制网络拥塞。
可选地,第一报文为SYN报文,或者,第一报文为SYN确认报文。
在一种实现方式中,处理模块502,还用于在第一设备与第二设备建立TCP连接之后,当网络设备的第一端口发生拥塞时,基于统一窗口缩放因子修改通过第一端口接收到的第一确认报文中的接收窗口字段携带的窗口值,得到第二确认报文,其中,第一端口为用于转发第二设备向第一设备发送的报文的出端口,第一确认报文来自第一设备、且目的地址为第二设备的IP地址。发送模块503,还用于向第二设备发送第二确认报文。
可选地,处理模块502,用于:根据第一端口的拥塞程度和/或发往第一端口的出端口队列的TCP流的数量,确定第二设备的第一发送速率。根据统一窗口缩放因子以及第一发送速率,确定第一窗口值。将第一确认报文中的接收窗口字段的值修改为第一窗口值。
在另一种实现方式中,网络设备与另一网络设备跨设备链路聚合。接收模块501,还用于接收另一网络设备发送的另一网络设备的端口状态信息,另一网络设备的端口状态信息包括对另一网络设备的端口的拥塞状态的指示。
可选地,处理模块502,还用于在第一设备与第二设备建立TCP连接之后,当网络设备的第一端口发生拥塞,并且基于对另一网络设备的端口的拥塞状态的指示确定另一网络设备的第二端口发生拥塞时,基于统一窗口缩放因子修改通过第一端口接收到的第三确认报文中的接收窗口字段携带的窗口值,得到第四确认报文,其中,第一端口与第二端口具有绑定关系,且第一端口和第二端口均为用于转发第二设备向第一设备发送的报文的出端口,第三确认报文来自第一设备、且目的地址为第二设备的IP地址。发送模块503,还用于向第二设备发送第四确认报文。
可选地,另一网络设备的端口状态信息还包括发往第二端口的出端口队列的TCP流的数量。处理模块502,用于:根据目标流数量,确定第二设备的第二发送速率,目标流数量为发往第一端口的出端口队列的TCP流的数量与发往第二端口的出端口队列的TCP流的数量中的较小值。根据统一窗口缩放因子以及第二发送速率,确定第二窗口值。将第三确认报文中的接收窗口字段的值修改为第二窗口值。
可选地,当网络设备与另一网络设备跨设备链路聚合,发送模块503,还用于向另一网络设备发送网络设备的端口状态信息,网络设备的端口状态信息包括对网络设备的端口的拥塞状态的指示。
在又一种实现方式中,处理模块502,还用于当网络设备的第三端口发生拥塞时,在发往第三端口的出端口队列的第三报文中添加拥塞指示,得到第四报文,拥塞指示用于指示发生拥塞。发送模块503,还用于通过第三端口发送第四报文。
可选地,拥塞指示在第三报文的时间戳选项字段。
可选地,处理模块502,还用于当网络设备接收到携带有拥塞指示的第五确认报文时,基于统一窗口缩放因子修改第五确认报文中的接收窗口字段携带的窗口值,得到第六确认报文,拥塞指示用于指示发生拥塞。发送模块503,还用于发送第六确认报文。
可选地,拥塞指示还用于指示拥塞程度,处理模块502,用于:根据拥塞程度,确定对第五确认报文的修改概率。根据修改概率,基于统一窗口缩放因子对第五确认报文中的接收窗口字段携带的窗口值进行修改。
可选地,拥塞指示在第五确认报文的时间戳选项字段。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
用于执行图2所示方法的第一网络设备可以是图6所示的网络设备600。该网络设备600可以是路由器或交换机等。如图6所示,网络设备600包括:处理器601和存储器602。
存储器602,用于存储计算机程序,所述计算机程序包括程序指令;
处理器601,用于调用所述计算机程序,实现如上述方法实施例中第一网络设备执行的动作。
可选地,网络设备600还包括通信总线603和通信接口604。
其中,处理器601包括一个或者一个以上处理核心,处理器601通过运行计算机程序,执行各种功能应用以及数据处理。
存储器602可用于存储计算机程序。可选地,存储器可存储操作系统和至少一个功能所需的应用程序单元。操作系统可以是实时操作系统(Real Time eXecutive,RTX)、LINUX、UNIX、WINDOWS或OS X之类的操作系统。
通信接口604可以为多个,通信接口604用于与例如终端、服务器、VM等设备或其它网络设备进行通信。例如在本申请实施例中,通信接口604用于收发报文。
存储器602与通信接口604分别通过通信总线603与处理器601连接。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令被处理器执行时,实现上述方法实施例中第一网络设备执行的动作。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现上述方法实施例中第一网络设备执行的动作。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本申请实施例中,术语“第一”、“第二”和“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的构思和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (30)
1.一种网络拥塞控制方法,其特征在于,所述方法包括:
第一网络设备接收来自第一设备的第一报文,所述第一报文包括所述第一设备指示的原始窗口缩放因子,所述第一报文的目的地址为第二设备的互联网协议IP地址;
所述第一网络设备将所述第一报文中的原始窗口缩放因子修改为预先配置的统一窗口缩放因子,得到第二报文;
所述第一网络设备向所述第二设备发送所述第二报文,所述第二报文用于使所述第二设备根据所述统一窗口缩放因子调整报文发送速率以控制网络拥塞。
2.根据权利要求1所述的方法,其特征在于,所述第一报文为同步序列编号SYN报文,或者,所述第一报文为SYN确认报文。
3.根据权利要求1或2所述的方法,其特征在于,在所述第一设备与所述第二设备建立传输控制协议TCP连接之后,所述方法还包括:
当所述第一网络设备的第一端口发生拥塞时,所述第一网络设备基于所述统一窗口缩放因子修改通过所述第一端口接收到的第一确认报文中的接收窗口字段携带的窗口值,得到第二确认报文,其中,所述第一端口为用于转发所述第二设备向所述第一设备发送的报文的出端口,所述第一确认报文来自所述第一设备、且目的地址为所述第二设备的IP地址;
所述第一网络设备向所述第二设备发送所述第二确认报文。
4.根据权利要求3所述的方法,其特征在于,所述第一网络设备基于所述统一窗口缩放因子修改通过所述第一端口接收到的第一确认报文中的接收窗口字段携带的窗口值,包括:
所述第一网络设备根据所述第一端口的拥塞程度和/或发往所述第一端口的出端口队列的TCP流的数量,确定所述第二设备的第一发送速率;
所述第一网络设备根据所述统一窗口缩放因子以及所述第一发送速率,确定第一窗口值;
所述第一网络设备将所述第一确认报文中的接收窗口字段的值修改为所述第一窗口值。
5.根据权利要求1或2所述的方法,其特征在于,所述第一网络设备与第二网络设备跨设备链路聚合,所述方法还包括:
所述第一网络设备接收所述第二网络设备发送的所述第二网络设备的端口状态信息,所述第二网络设备的端口状态信息包括对所述第二网络设备的端口的拥塞状态的指示。
6.根据权利要求5所述的方法,其特征在于,在所述第一设备与所述第二设备建立传输控制协议TCP连接之后,所述方法还包括:
当所述第一网络设备的第一端口发生拥塞,并且基于对所述第二网络设备的端口的拥塞状态的指示确定所述第二网络设备的第二端口发生拥塞时,所述第一网络设备基于所述统一窗口缩放因子修改通过所述第一端口接收到的第三确认报文中的接收窗口字段携带的窗口值,得到第四确认报文,其中,所述第一端口与所述第二端口具有绑定关系,且所述第一端口和所述第二端口均为用于转发所述第二设备向所述第一设备发送的报文的出端口,所述第三确认报文来自所述第一设备、且目的地址为所述第二设备的IP地址;
所述第一网络设备向所述第二设备发送所述第四确认报文。
7.根据权利要求6所述的方法,其特征在于,所述第二网络设备的端口状态信息还包括发往所述第二端口的出端口队列的TCP流的数量;所述第一网络设备基于所述统一窗口缩放因子修改通过所述第一端口接收到的第三确认报文中的接收窗口字段携带的窗口值,包括:
所述第一网络设备根据目标流数量,确定所述第二设备的第二发送速率,所述目标流数量为发往所述第一端口的出端口队列的TCP流的数量与发往所述第二端口的出端口队列的TCP流的数量中的较小值;
所述第一网络设备根据所述统一窗口缩放因子以及所述第二发送速率,确定第二窗口值;
所述第一网络设备将所述第三确认报文中的接收窗口字段的值修改为所述第二窗口值。
8.根据权利要求1或2所述的方法,其特征在于,所述第一网络设备与第二网络设备跨设备链路聚合,所述方法还包括:
所述第一网络设备向所述第二网络设备发送所述第一网络设备的端口状态信息,所述第一网络设备的端口状态信息包括对所述第一网络设备的端口的拥塞状态的指示。
9.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当所述第一网络设备的第三端口发生拥塞时,所述第一网络设备在发往所述第三端口的出端口队列的第三报文中添加拥塞指示,得到第四报文,所述拥塞指示用于指示发生拥塞;
所述第一网络设备通过所述第三端口发送所述第四报文。
10.根据权利要求9所述的方法,其特征在于,所述拥塞指示在所述第三报文的时间戳选项字段。
11.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当所述第一网络设备接收到携带有拥塞指示的第五确认报文时,所述第一网络设备基于所述统一窗口缩放因子修改所述第五确认报文中的接收窗口字段携带的窗口值,得到第六确认报文,所述拥塞指示用于指示发生拥塞;
所述第一网络设备发送所述第六确认报文。
12.根据权利要求11所述的方法,其特征在于,所述拥塞指示还用于指示拥塞程度,所述第一网络设备基于所述统一窗口缩放因子修改所述第五确认报文中的接收窗口字段携带的窗口值,包括:
所述第一网络设备根据所述拥塞程度,确定对所述第五确认报文的修改概率;
所述第一网络设备根据所述修改概率,基于所述统一窗口缩放因子对所述第五确认报文中的接收窗口字段携带的窗口值进行修改。
13.根据权利要求11或12所述的方法,其特征在于,所述拥塞指示在所述第五确认报文的时间戳选项字段。
14.一种网络设备,其特征在于,包括:
接收模块,用于接收来自第一设备的第一报文,所述第一报文包括所述第一设备指示的原始窗口缩放因子,所述第一报文的目的地址为第二设备的互联网协议IP地址;
处理模块,用于将所述第一报文中的原始窗口缩放因子修改为预先配置的统一窗口缩放因子,得到第二报文;
发送模块,用于向所述第二设备发送所述第二报文,所述第二报文用于使所述第二设备根据所述统一窗口缩放因子调整报文发送速率以控制网络拥塞。
15.根据权利要求14所述的网络设备,其特征在于,所述第一报文为同步序列编号SYN报文,或者,所述第一报文为SYN确认报文。
16.根据权利要求14或15所述的网络设备,其特征在于,
所述处理模块,还用于在所述第一设备与所述第二设备建立传输控制协议TCP连接之后,当所述网络设备的第一端口发生拥塞时,基于所述统一窗口缩放因子修改通过所述第一端口接收到的第一确认报文中的接收窗口字段携带的窗口值,得到第二确认报文,其中,所述第一端口为用于转发所述第二设备向所述第一设备发送的报文的出端口,所述第一确认报文来自所述第一设备、且目的地址为所述第二设备的IP地址;
所述发送模块,还用于向所述第二设备发送所述第二确认报文。
17.根据权利要求16所述的网络设备,其特征在于,所述处理模块,用于:
根据所述第一端口的拥塞程度和/或发往所述第一端口的出端口队列的TCP流的数量,确定所述第二设备的第一发送速率;
根据所述统一窗口缩放因子以及所述第一发送速率,确定第一窗口值;
将所述第一确认报文中的接收窗口字段的值修改为所述第一窗口值。
18.根据权利要求14或15所述的网络设备,其特征在于,所述网络设备与另一网络设备跨设备链路聚合;
所述接收模块,还用于接收所述另一网络设备发送的所述另一网络设备的端口状态信息,所述另一网络设备的端口状态信息包括对所述另一网络设备的端口的拥塞状态的指示。
19.根据权利要求18所述的网络设备,其特征在于,
所述处理模块,还用于在所述第一设备与所述第二设备建立TCP连接之后,当所述网络设备的第一端口发生拥塞,并且基于对所述另一网络设备的端口的拥塞状态的指示确定所述另一网络设备的第二端口发生拥塞时,基于所述统一窗口缩放因子修改通过所述第一端口接收到的第三确认报文中的接收窗口字段携带的窗口值,得到第四确认报文,其中,所述第一端口与所述第二端口具有绑定关系,且所述第一端口和所述第二端口均为用于转发所述第二设备向所述第一设备发送的报文的出端口,所述第三确认报文来自所述第一设备、且目的地址为所述第二设备的IP地址;
所述发送模块,还用于向所述第二设备发送所述第四确认报文。
20.根据权利要求19所述的网络设备,其特征在于,所述另一网络设备的端口状态信息还包括发往所述第二端口的出端口队列的TCP流的数量;所述处理模块,用于:
根据目标流数量,确定所述第二设备的第二发送速率,所述目标流数量为发往所述第一端口的出端口队列的TCP流的数量与发往所述第二端口的出端口队列的TCP流的数量中的较小值;
根据所述统一窗口缩放因子以及所述第二发送速率,确定第二窗口值;
将所述第三确认报文中的接收窗口字段的值修改为所述第二窗口值。
21.根据权利要求14或15所述的网络设备,其特征在于,所述网络设备与另一网络设备跨设备链路聚合;
所述发送模块,还用于向所述另一网络设备发送所述网络设备的端口状态信息,所述网络设备的端口状态信息包括对所述网络设备的端口的拥塞状态的指示。
22.根据权利要求14或15所述的网络设备,其特征在于,
所述处理模块,还用于当所述网络设备的第三端口发生拥塞时,在发往所述第三端口的出端口队列的第三报文中添加拥塞指示,得到第四报文,所述拥塞指示用于指示发生拥塞;
所述发送模块,还用于通过所述第三端口发送所述第四报文。
23.根据权利要求22所述的网络设备,其特征在于,所述拥塞指示在所述第三报文的时间戳选项字段。
24.根据权利要求14或15所述的网络设备,其特征在于,
所述处理模块,还用于当所述网络设备接收到携带有拥塞指示的第五确认报文时,基于所述统一窗口缩放因子修改所述第五确认报文中的接收窗口字段携带的窗口值,得到第六确认报文,所述拥塞指示用于指示发生拥塞;
所述发送模块,还用于发送所述第六确认报文。
25.根据权利要求24所述的网络设备,其特征在于,所述拥塞指示还用于指示拥塞程度,所述处理模块,用于:
根据所述拥塞程度,确定对所述第五确认报文的修改概率;
根据所述修改概率,基于所述统一窗口缩放因子对所述第五确认报文中的接收窗口字段携带的窗口值进行修改。
26.根据权利要求24或25所述的网络设备,其特征在于,所述拥塞指示在所述第五确认报文的时间戳选项字段。
27.一种网络拥塞控制系统,其特征在于,包括:第一设备、第二设备以及网络设备;
所述第一设备用于发送第一报文,所述第一报文包括所述第一设备指示的原始窗口缩放因子,所述第一报文的目的地址为第二设备的互联网协议IP地址;
所述网络设备用于将所述第一报文中的原始窗口缩放因子修改为预先配置的统一窗口缩放因子,得到第二报文,并向所述第二设备发送所述第二报文;
所述第二设备用于将所述第二报文中的统一窗口缩放因子作为所述第一设备指示的窗口缩放因子,后续根据所述统一窗口缩放因子调整报文发送速率以控制网络拥塞。
28.一种网络设备,其特征在于,包括:处理器和存储器;
所述存储器,用于存储计算机程序,所述计算机程序包括程序指令;
所述处理器,用于调用所述计算机程序,实现如权利要求1至13任一所述的网络拥塞控制方法。
29.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,当所述指令被处理器执行时,实现如权利要求1至13任一所述的网络拥塞控制方法。
30.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行时,实现如权利要求1至13任一所述的网络拥塞控制方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111024332 | 2021-09-02 | ||
CN202111024332X | 2021-09-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115766605A true CN115766605A (zh) | 2023-03-07 |
Family
ID=85332865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111121052.0A Pending CN115766605A (zh) | 2021-09-02 | 2021-09-24 | 网络拥塞控制方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115766605A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116582496A (zh) * | 2023-07-13 | 2023-08-11 | 广东睿江云计算股份有限公司 | 令牌桶丢包优化方法及系统 |
CN116760779A (zh) * | 2023-08-21 | 2023-09-15 | 珠海星云智联科技有限公司 | 网络拥塞控制方法、系统、存储介质和电子设备 |
-
2021
- 2021-09-24 CN CN202111121052.0A patent/CN115766605A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116582496A (zh) * | 2023-07-13 | 2023-08-11 | 广东睿江云计算股份有限公司 | 令牌桶丢包优化方法及系统 |
CN116582496B (zh) * | 2023-07-13 | 2024-04-19 | 广东睿江云计算股份有限公司 | 令牌桶丢包优化方法及系统 |
CN116760779A (zh) * | 2023-08-21 | 2023-09-15 | 珠海星云智联科技有限公司 | 网络拥塞控制方法、系统、存储介质和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9565126B2 (en) | Virtual machine and application migration over local and wide area networks without timeout using data compression | |
US11477130B2 (en) | Transmission control method and apparatus | |
US7835285B2 (en) | Quality of service, policy enhanced hierarchical disruption tolerant networking system and method | |
EP3694160A1 (en) | Date transmission method, apparatus and device | |
US20040192312A1 (en) | Communication system for voice and data with wireless TCP server | |
US20190149475A1 (en) | Unified streamlining for data traffic | |
EP3533162B1 (en) | Handling of data packet transfer via a proxy | |
US6327626B1 (en) | Method and apparatus for MSS spoofing | |
US20150215224A1 (en) | Positive feedback ethernet link flow control for promoting lossless ethernet | |
EP3739784A1 (en) | Data packet sending method and related device | |
EP2868054B1 (en) | Resilient video encoding control via explicit network indication | |
CN115766605A (zh) | 网络拥塞控制方法、装置及系统 | |
CN111147573A (zh) | 一种数据传输的方法和装置 | |
WO2000072532A9 (en) | System and method for network packet reduction | |
US9413676B2 (en) | System and method for reducing the data packet loss employing adaptive transmit queue length | |
US20160099891A1 (en) | Packet processing method, apparatus and system | |
Goff et al. | Unified transport layer support for data striping and host mobility | |
CN113612698A (zh) | 一种数据包发送方法及装置 | |
Oljira et al. | Mdtcp: Towards a practical multipath transport protocol for telco cloud datacenters | |
US11805071B2 (en) | Congestion control processing method, packet forwarding apparatus, and packet receiving apparatus | |
CN116016025A (zh) | 一种通信方法、设备及存储介质 | |
Nikitinskiy et al. | A stateless transport protocol in software defined networks | |
Hammar | Multipath packet scheduling for 5G systems | |
TWI757887B (zh) | 用以促進一資料流從一發送端透過多路徑傳輸至一接收端的方法、網路控制器以及電腦程式產品 | |
JPH11331257A (ja) | 異ネットワーク間接続方法およびルータ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |