CN113726671B - 一种网络拥塞控制方法及相关产品 - Google Patents
一种网络拥塞控制方法及相关产品 Download PDFInfo
- Publication number
- CN113726671B CN113726671B CN202010456725.7A CN202010456725A CN113726671B CN 113726671 B CN113726671 B CN 113726671B CN 202010456725 A CN202010456725 A CN 202010456725A CN 113726671 B CN113726671 B CN 113726671B
- Authority
- CN
- China
- Prior art keywords
- tcp
- congestion
- forwarding device
- forwarding
- message
- 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.)
- Active
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
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/003—Arrangements for allocating sub-channels of the transmission path
- H04L5/0053—Allocation of signaling, i.e. of overhead other than pilot signals
- H04L5/0055—Physical resource allocation for ACK/NACK
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种网络拥塞控制方法及相关产品,方法包括:第一转发设备接收拥塞通告,其中,拥塞通告指示从第一终端设备到第二终端设备的传输控制协议TCP流预拥塞;第一转发设备接收来自第二终端设备的TCP流中的报文的确认ACK报文,ACK报文与TCP流反向;第一转发设备根据拥塞通告减小ACK报文中的接收窗口RWND字段的值;第一转发设备向第一终端设备发送修改后的ACK报文,从而使得第一终端设备能够根据修改后的ACK报文减小上述TCP流的发送速率,缓解网络拥塞现象。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种网络拥塞控制方法及相关产品。
背景技术
园区网是指为企业或组织建立的办公局域网,以实现数字化办公、生产及运营,例如,校园网、社区网、企事业单位网等等。随着园区业务的逐渐丰富,园区网承载了更多的流量,从而频繁地出现网络拥塞现象,不仅降低了园区网的吞吐量,还增加了时延和下行丢包率,严重影响了园区业务的正常运作。
发明内容
本申请公开了一种网络拥塞控制方法及相关产品,能够缓解网络拥塞现象。
第一方面,本申请提供了一种网络拥塞控制方法,该方法包括:
第一转发设备接收拥塞通告,其中,拥塞通告指示从第一终端设备到第二终端设备的传输控制协议(transmission control protocol,TCP)流预拥塞;
所述第一转发设备接收来自第二终端设备的所述TCP流中的报文的确认(acknowledge,ACK)报文,所述ACK报文与所述TCP流反向;
所述第一转发设备根据所述拥塞通告减小所述ACK报文中的接收窗口(receivewindow,RWND)字段的值;
所述第一转发设备向所述第一终端设备发送修改后的所述ACK报文。
实施第一方面描述的方法,第一转发设备在接收到指示所述TCP流预拥塞的拥塞通告之后,通过减小所述TCP流中的报文的ACK报文的RWND字段的值来减小第一终端设备发送所述TCP流的速率,从而缓解所述TCP流的预拥塞程度,减少传输过程中的丢包问题,提高所述TCP流传输过程中报文的连续性和完成性。
在一些可能的设计中,所述第一转发设备根据所述拥塞通告减小所述ACK报文中的RWND字段的值,包括:所述第一转发设备根据预设时间段内接收到的拥塞通告的数量与所述TCP流中的报文的数量的比值,减小所述RWND字段的值。
在一些可能的设计中,所述拥塞通告为第二转发设备发送的,或所述拥塞通告为网络控制器发送的。
在一些可能的设计中,所述拥塞通告在所述TCP流中的报文中,在所述第一转发设备接收拥塞通告之后,所述方法还包括:所述第一转发设备在转发所述TCP流中的报文前删除所述报文中的所述拥塞通告。
可以看出,若第一转发设备接收到的所述TCP流中的报文中携带了拥塞通告,则第一转发设备在将该报文转发给其他设备之前,还需删除该报文中的拥塞通告,以使得第二终端设备接收到的所述TCP流中的报文为不携带拥塞通告的报文。
第二方面,本申请提供了另一种网络拥塞控制方法,所述方法包括:
第一转发设备接收终端设备发送的TCP流;
当所述第一转发设备在所述TCP流的转发方向上出现预拥塞时,所述第一转发设备发布第一拥塞通告,以使得第二转发设备根据第二拥塞通告减小所述TCP流中的报文的ACK报文中的接收窗口RWND字段的值,其中,第二拥塞通告为所述第一拥塞通告,或者,所述第二拥塞通告是根据所述第一拥塞通告生成的,所述ACK报文与所述TCP流反向。
实施第二方面描述的方法,当第一转发设备在所述TCP流的转发方向上出现预拥塞(即所述TCP流在转发过程中出现预拥塞)时,第一转发设备发布第一拥塞通告,使得第二转发设备通过减小所述TCP流中的报文的ACK报文中的RWND字段的值,以控制终端设备发送所述TCP流的速率,从而缓解第一转发设备的缓存压力,降低丢包问题,提高所述TCP流传输过程中报文的连续性和完成性,进一步缓解了网络拥塞。
在一些可能的设计中,所述方法还包括:所述第一转发设备根据目标队列的缓存状态,确定所述第一转发设备在所述TCP流的转发方向上出现预拥塞,其中,所述目标队列中缓存了所述TCP流中的报文。
可以看出,第一转发设备可以根据缓存所述TCP流中的报文的目标队列的缓存状态,快速直接地判断第一转发设备是否在所述TCP流的转发方向上出现预拥塞。
在一些可能的设计中,所述第一转发设备根据目标队列的缓存状态,确定所述第一转发设备在所述TCP流的转发方向上出现预拥塞,包括:当所述目标队列中报文的数量大于第一阈值时,所述第一转发设备在所述TCP流的转发方向上出现预拥塞;或,当所述目标队列中报文的数据量大于第二阈值时,所述第一转发设备在所述TCP流的转发方向上出现预拥塞。
可以看出,第一转发设备具体可以根据目标队列中报文的数量或者报文的数据量来判断第一转发设备是否在所述TCP流的转发方向上出现预拥塞。
在一些可能的设计中,所述第一转发设备发布第一拥塞通告包括:所述第一转发设备在属于所述TCP流的TCP报文中添加所述第一拥塞通告,并转发属于所述TCP流的TCP报文。
在一些可能的设计中,所述第一转发设备发布第一拥塞通告,包括:所述第一转发设备向网络控制器发送所述第一拥塞通告,以促使所述网络控制器将根据所述第一拥塞通告生成的所述第二拥塞通告发送给所述第二转发设备。
可以看出,第一转发设备并不限制第一拥塞通告的具体形式,第一拥塞通告可以是添加在TCP报文中的,也可以是不添加在TCP报文中的。而且,第一转发设备告知第二转发设备所述TCP流在转发过程中出现预拥塞的方式可以是第一拥塞通告,也可以是网络控制发送的第二拥塞通告。因此,第一转发设备可以通过多种形式告知第二转发设备所述TCP流在转发过程中出现预拥塞。
在一些可能的设计中,所述转发方向包括上行方向和下行方向。
可以看出,第二方面提供的网络拥塞控制方法对上行方向的转发和下行方向的转发场景均适用。
第三方面,本申请提供了一种转发设备,所述设备包括接收单元、修改单元和发送单元,
所述接收单元用于接收拥塞通告,其中,所述拥塞通告指示从第一终端设备到第二终端设备的TCP流预拥塞;
所述接收单元还用于接收来自第二终端设备的所述TCP流中的报文的ACK报文,所述ACK报文与所述TCP流反向;
所述修改单元用于根据所述拥塞通告减小所述ACK报文中的接收窗口RWND字段的值;
所述发送单元用于向所述第一终端设备发送修改后的所述ACK报文。
在一些可能的设计中,所述修改单元具体用于根据接收到的拥塞通告的数量与所述TCP流中的报文的数量的比值,减小所述RWND字段的值。
在一些可能的设计中,所述拥塞通告为另一转发设备发送的,或所述拥塞通告为网络控制器发送的。
在一些可能的设计中,所述拥塞通告在所述TCP流中的报文中,在所述接收单元接收拥塞通告之后,所述发送单元还用于在转发所述TCP流中的报文前删除所述报文中的所述拥塞通告。
实施第三方面描述的转发设备,转发设备在接收到指示所述TCP流预拥塞的拥塞通告之后,通过减小所述TCP流中的报文的ACK报文的RWND字段的值来减小第一终端设备发送所述TCP流的速率,从而缓解所述TCP流的预拥塞程度,减少传输过程中的丢包问题,提高所述TCP流传输过程中报文的连续性和完成性。
第四方面,本申请提供了一种转发设备,所述设备包括接收单元和发布单元,
所述接收单元用于接收终端设备发送的传输控制协议TCP流;
当所述转发设备在所述TCP流的转发方向上出现预拥塞时,所述发布单元用于发布第一拥塞通告,以使得另一转发设备根据第二拥塞通告减小所述TCP流中的报文的ACK报文中的RWND字段的值,其中,第二拥塞通告为所述第一拥塞通告,或者,所述第二拥塞通告是根据所述第一拥塞通告生成的,所述ACK报文与所述TCP流反向。
在一些可能的设计中,所述设备还包括预拥塞确定单元,所述预拥塞确定单元用于根据目标队列的缓存状态,确定所述转发设备在所述TCP流的转发方向上出现预拥塞,其中,所述目标队列中缓存了所述TCP流中的报文。
在一些可能的设计中,所述预拥塞确定单元具体用于:当所述目标队列中报文的数量大于第一阈值时,所述预拥塞确定单元确定所述转发设备在所述TCP流的转发方向上出现预拥塞;或,当所述目标队列中报文的数据量大于第二阈值时,所述预拥塞确定单元确定所述转发设备在所述TCP流的转发方向上出现预拥塞。
在一些可能的设计中,所述发布单元具体用于在属于所述TCP流的TCP报文中添加所述第一拥塞通告,并转发属于所述TCP流的TCP报文。
在一些可能的设计中,所述发布单元具体用于向网络控制器发送所述第一拥塞通告,以促使所述网络控制器将根据所述第一拥塞通告生成的所述第二拥塞通告发送给所述另一转发设备。
在一些可能的设计中,所述转发方向包括上行方向和下行方向。
实施第四方面描述的转发设备,当转发设备在所述TCP流的转发方向上出现预拥塞(即所述TCP流在转发过程中出现预拥塞)时,转发设备发布第一拥塞通告,使得另一转发设备通过减小所述TCP流中的报文的ACK报文中的RWND字段的值,以控制终端设备发送所述TCP流的速率,从而缓解转发设备的缓存压力,降低丢包问题,提高所述TCP流传输过程中报文的连续性和完成性,进一步缓解了网络拥塞。
第五方面,本申请提供了一种转发设备,所述转发设备包括处理器和存储器,所述处理器执行所述存储器中的代码以实现如第一方面和第二方面所描述的部分方法或全部方法。
第六方面,本申请提供了一种网络***,包括第一转发设备和第二转发设备,所述第一转发设备用于执行如第一方面中第一转发设备所描述的方法,所述第二转发设备用于执行如第二方面中第一转发设备所描述的方法。
第七方面,本申请提供了一种计算机存储介质,存储有计算机指令,所述计算机指令用于实现如第一方面所描述的方法。
第八方面,本申请提供了一种计算机存储介质,存储有计算机指令,所述计算机指令用于实现如第二方面所描述的方法。
附图说明
图1示出了本申请提供的一种园区网的架构示意图;
图2示出了本申请提供的一种网络拥塞控制的交互示意图;
图3示出了本申请提供的一种HQoS调度的示意图;
图4示出了本申请提供的一种转发设备A的结构示意图;
图5示出了本申请提供的一种转发设备B的结构示意图;
图6示出了本申请提供的另一种转发设备A的结构示意图;
图7示出了本申请提供的另一种转发设备B的结构示意图;
具体实施方式
为了便于理解本申请实施例,首先对本申请涉及的相关概念进行解析。
发送窗口:是指TCP流的发送方向网络中一次连续写入的数据量。
RWND:是指TCP流的接收方能接收的数据量。TCP流的接收方将RWND值发送给TCP流的发送方,使得TCP流的发送方能够确定发送窗口的值。
ACK报文:在TCP/网际互联协议(internet protocol,IP)中,TCP流的发送方向TCP流的接收方发送TCP报文之后,若TCP流的接收方成功接收到TCP报文,则TCP流的接收方会向TCP流的发送方回复ACK报文,以向TCP流的发送方确认TCP流的接收方已接收到相应的TCP报文。
显示拥塞通知(explicit congestion notification,ECN):是国际互联网工程任务组(the internet engineering task force,IETF)定义的一种拥塞控制机制。TCP流的发送方与TCP流的接收方在开始TCP流的传输之前需要先进行ECN协商,使得TCP流的发送方与TCP流的接收方都支持ECN机制,那么TCP流的发送方在向TCP流的接收方发送TCP报文之前会使能TCP报文的ECN标识位,此时ECN标识位的值为01或10。当网络拥塞时,网络设备会为TCP报文打上ECN标记(即,将TCP报文的ECN标识位的值修改为11),以告知接收方网络拥塞。
分层服务质量(hierarchical quality of service,HQoS):是一种基于多级队列的层次化调度技术,可以实现对不同用户的多个业务提供不同的调度方式,从而保证高优先级用户的高优先级业务体验。HQoS具体可以提供流队列、用户队列、端口队列以及目标端口的层次化多级队列调度。其中,流队列用于实现对不同业务的区分,1个流队列对应1个业务优先级。用户队列用于实现对不同用户的区分,1个用户队列对应1个用户,这里的用户指的是一个虚拟局域网(virtual local area network,VLAN)或者一个虚拟私人网络(virtual private network,VPN)等等。端口队列也用于实现对不同业务的区分,1个端口队列对应1种业务类型。目标端口是指网络设备的物理接口,也就是网络设备发送报文的端口。网络设备上配置HQoS之后,网络设备将先按照用户队列的优先级调度流队列,再按照端口队列的优先级调度用户队列,从而将流队列中的报文从目标端口发往其他网络设备。
下面将结合附图对本申请实施例中的技术方案进行描述。
如图1所示,图1示出了一种园区网的架构示意图。园区网包括出口路由器110、服务器120、核心层交换机130、汇聚层交换机140、接入层交换机150、无线接入点(accesspoint,AP)160、客户端170以及网络控制器180。
出口路由器110用于实现园区网内部与园区网外部之间的通信,使得客户端170可以通过出口路由器110获得公有云等园区网外部的服务器发送的TCP流。服务器120包括园区内部的服务器群,例如,园区网中自建的数据中心(data center,DC)、机房或者私有云。服务器120用于为客户端170提供远程服务(例如,计算服务、存储服务以及网络服务)。核心层交换机130相当于园区网的流量汇总节点,园区网中的所有流量(例如,服务器120发送给客户端170的流量)都需要经过核心层交换机130进行转发。以图1为例,核心层交换机130可以包括图1示出的核心层交换机。汇聚层交换机140相当于园区网的流量中转节点,不仅能够将核心层交换机130发送的流量转发给接入层交换机150,还能够将接入层交换机150发送的流量进行汇聚,并转发给核心层交换机130。以图1为例,汇聚层交换机140可以包括图1示出汇聚层交换机1和汇聚层交换机2。接入层交换机150直接面向客户端170。以图1为例,接入层交换机150可以包括图1示出的接入层交换机1至接入层交换机4。无线AP 160是移动计算机用户进入有线网络的接入点,相当于无线网络中的无线交换机。以图1为例,无线AP160可以包括图1示出的无线AP1和无线AP2。客户端170是指通过接入层交换机150或无线AP160接入园区网的客户端,以图1为例,客户端170可以包括客户端1至客户端4。网络控制器180用于统一管理园区网中的网络设备,例如,图1中的核心层交换机、汇聚层交换机1等等。
本申请中核心层交换机130的下行端口发送TCP流的速率大于汇聚层交换机140的下行端口发送TCP流的速率,汇聚层交换机140的下行端口发送TCP流的速率大于接入层交换机150的下行端口发送TCP流的速率。因此,在服务器120向客户端170发送下行TCP流的过程中可能出现大速率打小速率的现象,也就是TCP流以大速率进入网络设备,以小速率从该网络设备进行转发,从而造成网络拥塞。例如,服务器120发送的TCP流以大速率从核心层交换机、汇聚层交换机1进入接入层交换机1,而接入层交换机1以小速率将TCP流转发给客户端2。此时,接入层交换机1中将存在大量未及时转发给客户端2的TCP流中的报文,这些报文会被放入接入层交换机1的下行端口的缓存区进行排队,等待下行端口空闲时再进行转发。由于接入层交换机1的缓存能力较小,因此当下行端口缓存区中报文数量过多时,还可能出现报文溢出下行端口缓存区的情况,此时接入层交换机1将会丢弃这些溢出的报文。而且丢包还伴随着超时重传,不仅造成链路带宽资源的浪费,还会影响网络服务的完成效率。
另外,核心层交换机130、汇聚层交换机140以及接入层交换机150下行端口发送TCP流的速率的不匹配,还可能导致客户端170向服务器120发送上行TCP流的过程中出现多打一的现象,也就是多条TCP流同时涌入网络设备,而引发的网络拥塞。例如,客户端1向服务器120发送的TCP流和客户端2向服务器120发送的TCP流同时经过汇聚层交换机1。此时,汇聚层交换机1中可能存在大量未及时转发给核心层交换机的TCP报文,这些报文会被放入汇聚层交换机1的下行端口缓存区进行排队。当汇聚层交换机1的下行端口缓存区中报文数量过多时,可能出现丢包现象,从而引发网络拥塞等问题。
为了解决上述网络拥塞及网络拥塞引发的各种损失,往往需要TCP流的发送方(例如,服务器120和客户端170)、转发TCP流的网络设备(例如,核心层交换机、汇聚层交换机1和接入层交换机1)以及TCP流的接收方(例如,服务器120和客户端170)进行协同作用。下面将介绍两种典型的网络拥塞控制算法,即TCP经典拥塞控制算法和数据中心传输控制协议(data center transmission control protocol,DCTCP)算法。其中,
TCP经典拥塞控制算法将丢包作为网络拥塞的依据,通过不断调整TCP流的发送方的发送窗口长度以控制TCP流的传输速率。当网络设备的下行端口未丢包时,TCP流的发送方通过快速扩大发送窗口以增加TCP流的传输速率;当网络设备的下行端口丢包时,TCP流的发送方确定网络处于拥塞状态,此时网络设备将减小发送窗口的长度,从而降低TCP流的传输速率以缓解网络拥塞。但是,由于TCP流的发送方在网络设备的下行端口未丢包时会快速地扩大发送窗口,因此网络设备下行端口的缓存区被迅速耗尽,不仅增加了TCP流的时延,还大大降低了网络设备处理突发流量的能力。
DCTCP算法将ECN标识(参见前述内容中的相关概念的介绍)作为网络拥塞信号来调节TCP流的发送方的发送TCP流的速率。当网络设备下行端口缓存的报文数量超过预设阈值时,网络设备对超过预设阈值的报文打上ECN标记(即将报文的IP头部的ECN标识位的值修改为11),以告知TCP流的接收方这些报文经历了网络拥塞。TCP流的接收方获得打上ECN标记的TCP报文时,将返回给TCP流的发送方对应的打上ECE标记(即,将ACK报文的ECE标识位的值修改为1)的ACK报文。TCP流的发送方通过统计每个往返时间(round trip time,RTT)内获得的打上ECE标记的ACK报文的数量来相应地调节发送窗口,从而避免网络拥塞。但是,DCTCP算法在TCP流的传输之前需要TCP流的发送方与TCP流的接收方进行ECN协商,使得双方都支持ECN机制,而园区网中TCP流的发送方、转发TCP流的网络设备以及TCP流的发送方基本都不产自同一厂商,因此DCTCP算法无法有效地解决园区网中的网络拥塞。
针对上述问题,本申请提供了一种网络拥塞控制方法,能够有效解决园区网在传输TCP流时引发的网络拥塞问题。下面以图1中服务器120通过核心层交换机、汇聚层交换机1、接入层交换机1以及无线AP1向客户端1发送一条基于业务的TCP流(例如,视频业务、语音业务、数据业务等等)为例,详细介绍本申请提供的网络拥塞控制方法,具体请参见图2示出的网络拥塞控制的交互示意图。
S101、服务器120向核心层交换机发送TCP流。
具体实现中,当服务器120向客户端1提供业务时,服务器会针对该业务建立一条TCP流。TCP流包括一个或者多个TCP报文。
S102、核心层交换机接收TCP流,并将TCP流中的TCP报文(以下简称为TCP报文)缓存到目标队列。
在本申请具体的实施例中,核心层交换机包括一个或者多个下行端口,所述下行端口包括目标下行端口。目标下行端口配置了一个或者多个队列以缓存待发往其他网络设备(例如,汇聚层交换机1、汇聚层交换机2)的报文,所述队列包括目标队列,目标队列中缓存了一个或者多个待发往汇聚层交换机1的报文(例如,上述TCP报文)。
S103、核心层交换机根据确定目标队列的缓存状态,确定核心层交换机在TCP流的转发方向上出现预拥塞。
本申请中“预拥塞”是指接近拥塞的状态。其中,拥塞是指:在目标队列中剩余的存储空间小于阈值的情况下(例如,目标队列被占满),目标队列将丢弃一部分报文,以缓解目标队列的缓存压力。目标队列丢弃的报文可能是已缓存的报文,也可能是新流入的报文。因此,目标队列中剩余的存储空间越小,目标队列丢包的可能性越大。
在本申请具体的实施例中,目标队列的缓存状态取决于以下一个或者多个:目标队列中报文的数量、目标队列中报文的数据量。需要说明的,目标队列中可能不仅缓存有TCP报文,还缓存有用户数据报协议(user datagram protocol,UDP)报文或者基于其他网络协议的报文(例如,网络组管理协议(internet group management protocol,IGMP)报文、网络控制信息协议(internet control message protocol,ICMP)报文、开放式最短路径优先(open shortest path first,OSPF)报文或者边界网关协议(border gatewayprotocol,BGP)报文等等)。因此,目标队列中报文的数量不仅包括TCP报文的数量,还包括其他类型报文的数量;目标队列中报文的数据量不仅包括TCP报文的数据量,还包括其他类型报文的数据量。
在一个示例中,当目标队列中报文的数量大于第一阈值时,核心层交换机在TCP流的转发方向上出现预拥塞。
在另一个示例中,当目标队列中报文的数据量大于第二阈值时,核心层交换机在TCP流的转发方向上出现预拥塞。
本申请中核心层交换机设置第一阈值的目的是:令目标队列中报文的数量“适中”,保证核心层交换机在TCP流的转发方向上不会出现拥塞。其中,第一阈值可以是人工设置的,例如,第一阈值为100。第一阈值也可以是核心层交换机根据当前目标下行端口的吞吐量和当前目标队列中报文的数量计算得到的动态基线值等等,此处不作具体限定。第一阈值可以是这样得到的:核心层交换机获取当前目标下行端口的吞吐量,并将当前目标下行端口的吞吐量和预设吞吐量进行比较。其中,预设吞吐量可以是核心层交换机根据TCP流对应的业务设置的,例如,核心层交换机分配给重要业务的预设吞吐量应大于普通业务的预设吞吐量。在当前目标下行端口的吞吐量大于预设吞吐量的情况下,核心层交换机确定上一个第一阈值偏高,那么核心层交换机将根据当前目标队列中报文的数量调低上一个第一阈值。在当前目标下行端口的吞吐量小于预设吞吐量,且核心层交换机尚未完成所述TCP流的传输的情况下,核心层交换机确定上一个第一阈值偏低,那么核心层交换机将根据当前目标队列中报文的数量调高上一个第一阈值。应理解,核心层交换机在计算第一阈值的过程中,可能需要多次调整才能得到一个较为准确的数值来保证目标下行端口的吞吐量尽可能地接近预设吞吐量,从而保证在不引起网络拥塞的前提下最大化目标下行端口的利用率。类似的,核心层交换机设置第二阈值的目的是:令目标队列中报文的数据量适中,从而保证核心层交换机在TCP流的转发方向上不会出现拥塞。其中,第二阈值可以是人工设置的,例如,第二阈值为100千字节(kbytes,KB),或者将第二阈值设置为目标队列能够缓存的最大数据量的90%。第二阈值也可以是核心层交换机根据当前目标下行端口的吞吐量和当前目标队列中报文的数据量计算得到的动态基线值,具体可参考第一阈值的获取方式,等等,此处不作具体限定。
S104、核心层交换机发布第一拥塞通告,以告知无线AP1转发上述TCP流的网络设备(此处为核心层交换机)出现预拥塞,也就是TCP流在转发时出现预拥塞。
在一个示例中,核心层交换机将目标队里中属于TCP流的TCP报文中添加第一拥塞通告,并将添加了第一拥塞通告的TCP报文经由汇聚层交换机1、接入层交换机1发送给无线AP1。当无线AP1接收到携带第一拥塞通告的TCP报文时,无线AP1通过读取第一拥塞通告得知转发TCP流的网络设备出现预拥塞。
在本申请具体的实施例中,第一拥塞通告具体可以是ECN标记,也就是说,核心层交换机将TCP流中的TCP报文中的ECN标识位的值修改为11。当核心层交换机将TCP流中的TCP报文中的ECN标识位的值修改为11之后,核心层交换机将其经由汇聚层交换机1、接入层交换机1转发给无线AP1。无线AP1接收该TCP报文之后,通过读取该TCP报文的ECN标识位,从而确定转发TCP流的网络设备出现预拥塞。
在本申请具体的实施例中,核心层交换机将TCP报文中的ECN标识位修改为11之前,核心层交换机需要使能该TCP报文的ECN标识位,也就是将TCP报文的IP头部中的服务类型(type of service,TOS)字段中的第7位和第8位定义为ECN标识位,并将ECN标识位的值修改为10或01,从而使得TCP报文支持ECN标记。这是因为:ECN要求TCP流的发送方与TCP流的接收方之间在开始TCP报文传输之前首先进行ECN协商,只有双方都支持ECN机制,TCP流的发送方才能够利用ECN标记将TCP报文标记为拥塞报文。而本申请中服务器120、客户端1在TCP报文传输之前不会进行ECN协商,因此服务器120发送的TCP报文不支持ECN标记,那么核心层交换机在将TCP报文中的ECN标识位修改之前,应先使能TCP报文的ECN标识位。
应理解,第一拥塞通告可以是ECN标记,也可以是其他字符或标记,还可以将TCP报文的其他字段的值进行修改等等,此处不作具体限定。例如,核心层交换机在TCP报文中添加拥塞指示字段,拥塞指示字段为数字或者字符。
在另一个示例中,第一拥塞通告为核心层交换机根据目标队列的缓存状态生成的拥塞指示信息。拥塞指示信息包括头部、用户ID、TCP流ID以及拥塞指示字段。其中,头部用于标识拥塞指示信息,使得接收到拥塞指示信息的网络设备能够根据头部确定接收到的信息为拥塞指示信息。用户ID用于标识客户端。TCP流ID用于标识上述TCP流,核心层交换机可以利用TCP报文的五元组(即源IP地址、源端口、目标IP地址、目的端口以及传输层协议)作为TCP流ID,也可以利用预设标识符(例如,字母或数字)作为TCP流ID等等,此处不作具体限定。拥塞指示字段用于表示核心层交换机在TCP流的转发方向上出现预拥塞,拥塞指示字段的值可以是目标队列中报文的数量,也可以是目标队列中报文的数据量,还可以将拥塞字段的值设置为1以标识核心层交换机在TCP流的转发方向上出现预拥塞等等,此处不作具体限定。
在一个示例中,核心层交换机将拥塞指示信息经由汇聚层交换机1、接入层交换机1发送给无线AP1,无线AP1根据接收到的拥塞指示信息确定转发TCP流的网络设备出现拥塞。
在另一个示例中,核心层交换机将拥塞指示信息发送给网络控制器180。网络控制器180根据拥塞指示信息确定目标队列拥塞,并生成相应的拥塞通知信息。网络控制器180将拥塞通知信息直接发送给无线AP1,无线AP1根据接收到的拥塞通知消息确定转发TCP流的网络设备出现拥塞。其中,拥塞通知信息用于通告目标队列拥塞,拥塞通知信息的具体格式可以与拥塞指示信息相同,也可以不同,此处不作具体限定。
在本申请具体的实施例中,在网络控制器180将拥塞通知信息发送给无线AP1之前,网络控制器获得配置,该配置指示网络控制器180向无线AP1发布拥塞通知信息。
S105、无线AP1根据第二拥塞通告,对来自客户端1的ACK报文进行修改。
其中,第二拥塞通告为第一拥塞通告或根据第一拥塞通告生成的拥塞通知信息。ACK报文为上述TCP流中的报文的ACK报文,也就是说,ACK报文表示客户端1已接收到一个或者多个TCP流中的报文。实际应用中,当客户端1接收到一定数据量的TCP流中的报文时,客户端1便会生成相应的ACK报文,并发送给服务器120,使得服务器120确定客户端1已接收到这些报文。ACK报文包括RWND字段,RWND字段的值指示客户端1下一次期望接收到的数据量。
在本申请具体的实施例中,无线AP1接收到ACK报文之后,先将ACK报文的报文头部进行修改,将表示无线网络报文的协议标识修改为表示有线网络报文的协议标识。之后,无线AP1确定修改了协议标识后的ACK报文(以下简称为ACK′报文)为所述TCP流中的报文的ACK报文。那么,在预设时间段内,无线AP1统计接收到的TCP流中的TCP报文的数量、第二拥塞通告的数量,从而对ACK′报文的RWND字段的值进行调整。
在一个示例中,无线AP1利用以下公式调整ACK′报文的RWND字段的值,从而得到修改后的ACK报文。
α=(1-g)×α′+g×F
这里,g为可调参数,用于评估拥塞概率。α′表示上一个时间段内的TCP流的预拥塞程度,α表示预设时间段内的TCP流的预拥塞程度,α越大说明预设时间段内的TCP流拥塞的可能性越高。F为预设时间段内接收到的第二拥塞通告的数量与TCP流中的TCP报文的数量的比值。RWND′为当前ACK′报文的RWND字段的值。
在本申请具体的实施例中,在无线AP1根据第二拥塞通告,对来自客户端1的ACK报文进行修改之前,核心层交换机将TCP流中的TCP报文经由汇聚层交换机1、接入层交换机1发送给无线AP1。无线AP1接收到TCP报文之后,先确定TCP报文中是否包括第一拥塞通告。若无线AP1接收到的TCP报文包括第一拥塞通告,则无线AP1先删除TCP报文中的第一拥塞通告,再将删除第一拥塞通告后的TCP报文发送给客户端1;若无线AP1接收到TCP报文不包括第一拥塞通告,则无线AP1将该TCP报文发送给客户端1。客户端1接收到一定数据量的TCP报文时,生成上述ACK报文。
在一个示例中,无线AP1接收到的TCP报文中包括第一拥塞通告,以第一拥塞通告为ECN标记为例,介绍无线AP1将TCP报文发送至客户端1的过程:无线AP1将接收到的TCP报文中的ECN标识位的值修改为00(或01,或10),然后将修改后的TCP报文发送给客户端1。
在本申请具体的实施例中,无线AP1接收到的TCP报文为有线网络报文。因此,在无线AP1将不携带第一拥塞通告的TCP报文发送给客户端1之前,无线AP1还需将TCP报文的报文头部进行修改,将表示有线网络报文的协议标识修改为表示无线网络报文的协议标识之后,再发送给客户端1。其中,有线网络报文是指通过有线传输媒介(例如,核心层交换机、汇聚层交换机1和接入层交换机1)传输的报文,无线网络报文是指无线网络设备(例如,无线AP1和客户端1)之间通过无线空口进行传输的报文。
S106、无线AP1将修改后的ACK报文发送给服务器120。
具体实现中,无线AP1将修改后的ACK报文经过接入层交换机1、汇聚层交换机1和核心层交换机转发给服务器120。或者,无线AP1将修改后的ACK报文经过接入层交换机1、汇聚层交换机2和核心层交换机转发给服务器120。
S107、服务器120接收修改后的ACK报文,并根据修改后的ACK报文相应地减小服务器120发送TCP流的速率。
在一个示例中,服务器120将发送窗口的值修改为ACK报文中的RWND字段的值。
在另一个示例中,服务器120根据ACK报文中的RWND字段的值,延迟向客户端1发送TCP流的时间。
在另一个示例中,服务器120根据ACK报文中的RWND字段的值,暂停向客户端1发送TCP流,直至接收到恢复TCP流的发送窗口的指示信息。
需要说明的,ACK报文中的RWND字段的值为TCP流的接收方期望TCP流的发送方下一次发送的数据量。因此,当服务器120将发送窗口的值修改为ACK报文中的RWND字段的值时,服务器120接下来发送的数据量为客户端1期望接收到的数据量,也就是能够缓解核心层交换机预拥塞的数据量,从而避免网络拥塞。
为了简便陈述,上述实施例仅以服务器120向客户端1发送TCP流为例,详细介绍了当核心层交换机在转发TCP流的方向上出现预拥塞时,核心层交换机通过发布第一拥塞通告,促使无线AP1减小TCP流中的报文的ACK报文的RWND字段的值来降低服务器120发送TCP流的速率,从而缓解网络拥塞。类似的,在实际应用中,当转发设备A在转发TCP流的方向上出现预拥塞时,转发设备A也可以通过发布第一拥塞通告,促使转发设备B减小TCP流中的报文的ACK报文的RWND字段的值来降低发送该TCP流的终端设备A发送TCP流的速率,从而缓解网络拥塞。
需要说明的,以图1为例,发送TCP流的终端设备A可以是服务器120,也可以是客户端170,还可以是园区网外部的公有云等等,此处不作具体限定。转发设备A可以是本申请实施例中的核心层交换机,也可以是汇聚层交换机140(例如,汇聚层交换机1、汇聚层交换机2),还可以是接入层交换机150(例如,接入层交换机1、接入层交换机2、接入层交换机3、接入层交换机4),还可以是无线AP 160(例如,无线AP1、无线AP2)等等,此处不作具体限定。转发设备B可以是本申请实施例中的无线AP2,也可以是汇聚层交换机140(例如,汇聚层交换机1、汇聚层交换机2)、也可以是接入层交换机150(例如,接入层交换机1、接入层交换机2、接入层交换机3、接入层交换机4),还可以是核心层交换机130(例如,核心层交换机)等等,此处不作具体限定。当转发设备B(例如,交换机)不是与无线AP类似的网络设备时,转发设备B无需将接收或发送的报文进行格式转换(有线网络报文与无线网络报文之间的格式转换)。
还需要说明的,TCP流的转发方向包括上行方向和下行方向,而TCP流中的报文的ACK报文与TCP流反向。那么,当TCP流的转发方向为上行方向时,本申请中的ACK报文为下行ACK报文;当TCP流的转发方向为下行方向时,本申请中的ACK报文为上行ACK报文。举例说明,当TCP流的转发方向为上行方向时,以图1为例,TCP流的转发方向可以是客户端3到服务器120的方向,ACK报文的传输路径为服务器120到客户端3的方向。具体的,TCP流的转发方向可以是客户端3→接入层交换机3→汇聚层交换机2→核心层交换机→服务器120。ACK报文的传输路径可以是服务器120→核心层交换机→汇聚层交换机1→接入层交换机3→客户端3。当TCP流的转发方向为下行方向时,以图1为例,TCP流的转发方向可以是服务器120到客户端1的方向,ACK报文的传输路径为客户端1到服务器120的方向。具体的,下行方向可以是服务器120→核心层交换机→汇聚层交换机1→接入层交换机1→无线AP1→客户端1,ACK报文的传输路径可以是客户端1→无线AP1→接入层交换机1→汇聚层交换机1→核心层交换机1→服务器120。
上述网络拥塞控制方法中,当转发设备A(例如,核心层交换机)在TCP流的转发方向上出现预拥塞时,转发设备A通告发布第一拥塞通告,促使转发设备B(例如,无线AP1)修改TCP流中的报文的ACK报文中的RWND字段的值。之后,转发设备B又将修改后的ACK报文发送给发送该TCP流的终端设备(例如,服务器120),使得发送该TCP流的终端设备能够根据转发设备A的预拥塞程度调整TCP流的发送速率,从而缓解网络拥塞。
以图1为例,根据前述内容中介绍的网络拥塞控制方法,服务器120可以同时向客户端1提供多个业务,也可以同时向多个客户端提供一个业务,还可以同时向多个客户端提供多个业务,此处不作具体限定。在TCP流的转发链路上(例如,核心层交换机→汇聚层交换机1→接入层交换机1→无线AP1)承载的数据量过多的情况下,为了区分不同的业务,核心层交换机可以针对不同的业务进行不同的调度。例如,核心层交换机先将优先级高的业务发送给汇聚层交换机1,再将优先级低的业务发送给汇聚层交换机1。
在一个示例中,核心层交换机的目标下行端口配置的队列支持优先级队列(priority queuing,PQ)调度,也就是说,核心层交换机按照队列优先级的高低顺序来调度目标下行端口中的队列。其中,核心层交换机针对每一个业务类型建立一个队列,队列的优先级取决于业务类型。例如,语音业务的优先级高于视频业务的优先级,队列1中缓存语音业务对应的数据报文,队列2中缓存视频业务对应的数据报文,那么队列1的优先级高于队列2的优先级。
结合S102中核心层交换机接收TCP报文的过程,以及S104中核心层交换机发送TCP报文的过程,详解说明核心层交换机调度目标队列发送TCP报文的过程。
具体实现中,当核心层交换机接收TCP报文之后,核心层交换机根据TCP报文的报文头部(例如,五元组)确定与TCP报文对应的目标下行端口,再根据TCP报文对应的业务类型,将TCP报文缓存到目标下行端口的目标队列。在调度过程中,第一网络设备首先将优先级高于目标队列的队列中缓存的报文从目标下行端口输出,再将目标队列中缓存的报文从目标下行端口输出。
在另一个示例中,核心层交换机的目标下行端口配置的队列支持HQoS调度(参见前述内容中的相关概念介绍),HQoS调度提供了分层调度策略,可以针对不同业务和不同用户进行分层调度。分层调度策略可以具体如下:核心层交换机首先按照端口级别调度端口队列,其次按照用户级别调度用户队列,最后按照业务级别调度流队列。这里的流队列相当于核心层交换机在目标下行端口配置的队列,每个流队列具有缓存空间;端口队列和用户队列相当于一种调度方式,相较于流队列来说,端口队列和用户队列为虚拟队列,不具备缓存空间。其中,业务级别取决于业务类型的优先级,业务类型的优先级越高,业务级别越高,越可以得到优先调度。用户级别取决于客户端的优先级,客户端的优先级越高,用户级别越高,越可以得到优先调度。端口级别也取决于业务类型的优先级,业务类型的优先级越高,端口级别越高,越可以得到优先调度。
结合S102中核心层交换机接收TCP报文的过程,以及S104中核心层交换机发送TCP报文的过程,详解说明核心层交换机调度目标队列发送TCP报文的过程。
具体实现中,当核心层交换机接收TCP报文之后,核心层交换机根据TCP报文的报文头部(例如,五元组)确定与TCP报文对应的目标下行端口,再根据TCP报文对应的业务类型,将TCP报文缓存到目标下行端口的目标队列。之后,核心层交换机根据TCP报文对应的客户端1,将目标队列中的TCP报文映射到目标用户队列,再根据TCP报文对应的业务类型,将TCP报文进一步映射到目标端口队列。在调度过程中,核心层交换机按照端口级别调度目标端口队列,再按照用户级别调度目标用户队列,最后按照业务级别调度目标队列向汇聚层交换机1发送TCP报文。
为了更加清晰地解释核心层交换机通过分层调度来区分不同客户端和不同业务,通过举例进行说明。如图3所示,假设视频业务的优先级低于语音业务的优先级,客户端1的优先级低于客户端2的优先级。核心层交换机接收到TCP报文1、TCP报文2和TCP报文3,其中,TCP报文1携带了服务器120发送给客户端1的视频业务信息,TCP报文2携带了服务器120发送给客户端2的语音业务信息,TCP报文3携带了服务器120发送给客户端1的语音业务信息。那么核心层交换机接收到TCP报文1、TCP报文2和TCP报文3之后,根据TCP报文1对应的业务类型将TCP报文1缓存到流队列1,根据TCP报文2对应的业务类型将TCP报文2缓存到流队列2,根据TCP报文3对应的业务类型将报文缓存到流队列2。然后,由于TCP报文1和TCP报文3对应的用户为客户端1,TCP报文2对应的用户为客户端2,因此核心层交换机将TCP报文1和TCP报文3映射到用户队列1,将TCP报文2映射到用户队列2。之后,又由于TCP报文1对应的业务类型为视频业务,TCP报文2和TCP报文3对应的业务类型为语音业务,因此核心层交换机将TCP报文1映射到端口队列1,将TCP报文2和TCP报文3映射到端口队列2。接下来,核心层交换机根据业务优先级优先调度端口队列2,由于端口队列2中映射了TCP报文2和TCP报文3,因此核心层交换机又根据客户端的优先级优先调度用户队列1,由于用户队列1中映射了TCP报文3,因此核心层交换机优先将TCP报文3从目标下行端口输出。同理,核心层交换机又先后输出了TCP报文2和TCP报文1。
需要说明的,核心层交换机的目标下行端口配置的队列还可以支持其他调度方式,例如,加权公平队列(weighted fair queuing,WFQ)等等,此处不作具体限定。在核心层交换机的目标下行端口配置的队列支持HQoS调度的情况下,业务级别也可以根据业务类型的优先级进行设置,也可以根据不同业务类型之间的加权系数进行设置等等,此处不作具体限定。类似的,用户级别和端口级别的设置方式也可以多种设置方式,此处不作具体限定。
结合上述方法实施例,下面介绍本申请实施例涉及的相关网络装置。如图4所示,图4是本申请提供的一种转发设备A的结构示意图。转发设备A包括:接收单元210和发布单元220。
接收单元210用于接收终端设备A发送的TCP流。
当转发设备A在上述TCP流的转发方向上出现预拥塞时,发布单元220用于发布第一拥塞通告,以使得转发设备B根据第二拥塞通告减小上述TCP流中的报文的ACK报文中的RWND字段的值。其中,第二拥塞通告为第一拥塞通告,或者,第二拥塞通告是根据第一拥塞通告生成的,ACK报文与上述TCP流反向。
在本申请具体的实施例中,转发设备A还包括预拥塞确定单元230。预拥塞确定单元230用于根据目标队列的缓存状态,确定转发设备A在上述TCP流的转发方向上出现预拥塞。其中,目标队列中缓存了上述TCP流中的报文。
在本申请具体的实施例中,预拥塞确定单元230具体用于:当目标队列中报文的数量大于第一阈值时,预拥塞确定单元230确定转发设备A在上述TCP流的转发方向上出现预拥塞;或,当目标队列中报文的数据量大于第二阈值时,预拥塞确定单元230确定转发设备A在上述TCP流的转发方向上出现预拥塞。
在本申请具体的实施例中,发布单元220具体用于在属于上述TCP流的TCP报文中添加第一拥塞通告,并转发属于上述TCP流的TCP报文。
在本申请具体的实施例中,发布单元220具体用于向网络控制器发送第一拥塞通告,以促使网络控制器将根据第一拥塞通告生成的第二拥塞通告发送给转发设备B。
在本申请具体的实施例中,上述TCP流的转发方向包括上行方向和下行方向。
应理解,本申请实施例中的转发设备A可以是前述方法实施例中的核心层交换机,转发设备B可以是前述方法实施例中的无线AP1,终端设备A可以是前述方法实施例中的服务器120。为了简便陈述,本申请实施例并没有对预拥塞、第一拥塞通告、第二拥塞通告、第一阈值以及第二阈值进行详细说明,具体请参见S103-S105中的相关内容叙述,此处不再进行赘述。上述实施例也没有对转发设备A中的发布单元220发布第一拥塞通告的过程,预拥塞确定单元230确定转发设备A在上述TCP流的转发方向上出现预拥塞的过程进行详细说明,具体请参见S103-S104的相关叙述,此处不再展开赘述。
本申请实施例的转发设备A仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将转发设备A的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的转发设备A与上述方法实施例中的核心层交换机属于同一构思,其具体实现过程详见上述方法实施例,这里不再赘述。
上述方案中,当转发设备A在TCP流的转发方向上出现预拥塞时,转发设备A将发布第一拥塞通告,以使得转发设备B减小TCP流中的报文的ACK报文中的RWND字段的值。当转发设备B将修改后的ACK报文发送给终端设备A时,终端设备A将根据ACK报文中的RWND字段的值减小TCP流的发送速率,从而缓解转发设备A的缓存压力,降低丢包问题,提高TCP流传输过程中报文的连续性和完成性,并且避免网络拥塞。
如图5所示,图5示出了本申请提供的一种转发设备B的结构示意图。转发设备B包括:接收单元310、修改单元320和发送单元330。
接收单元310用于接收拥塞通告。其中,拥塞通告指示从终端设备A到终端设备B的TCP流预拥塞;
接收单元310还用于接收来自终端设备B的上述TCP流中的报文的ACK报文。其中,ACK报文与TCP流反向;
修改单元320用于根据拥塞通告减小ACK报文中的RWND字段的值。
发送单元330用于向终端设备A发送修改后的ACK报文。
在本申请具体的实施例中,修改单元320具体用于根据接收到的拥塞通告的数量与上述TCP流中的报文的数量的比值,减小ACK报文中的RWND字段的值。
在本申请具体的实施例中,拥塞通告为转发设备A发送的,或拥塞通告为网络控制器发送的。
在本申请具体的实施例中,若拥塞通告在上述TCP流中的报文中,那么在接收单元310接收拥塞通告之后,发送单元330还用于在转发上述TCP流中的报文前删除该报文中的拥塞通告。
应理解,本申请实施例中的转发设备B为图5对应的实施例中的转发设备B,转发设备A为图5对应的实施例中的转发设备A,终端设备A为图5对应的实施例中的终端设备A。本申请实施例中的转发设备B还可以是前述方法实施例中的无线AP1,转发设备A还可以是前述方法实施例中的核心层交换机,终端设备A还可以是前述方法实施例中的服务器120,终端设备B还可以是前述方法实施例中的客户端1。为了简便陈述,上述实施例并没有对预拥塞、拥塞通告以及转发设备B减小ACK报文中的RWND字段的值的过程进行详细说明,具体请参见S105中的相关内容叙述,此处不再进行赘述。
本申请实施例的转发设备B仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将转发设备B的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的转发设备B与上述方法实施例中的无线AP1属于同一构思,其具体实现过程详见上述方法实施例,这里不再赘述。当转发设备B(例如,交换机)不是与无线AP类似的网络设备时,转发设备B无需将接收或发送的报文进行格式转换(有线网络报文与无线网络报文之间的格式转换)。
上述方案中,当转发设备B接收到拥塞通告时,转发设备B根据拥塞通告确定出现预拥塞的TCP流,从而减小该TCP流对应的ACK报文中的RWND字段的值,以促使接收到ACK报文的终端设备A减小TCP流的发送速率,从而缓解转发设备的缓存压力,降低丢包问题,提高TCP流传输过程中报文的连续性和完成性,并且避免网络拥塞。
如图6所示,图6是本申请提供的另一种转发设备A的结构示意图,转发设备A包括处理器410、通信接口420和存储器430。其中,处理器410、通信接口420以及存储器430通过总线440进行耦合。
处理器410可以是中央处理器(central processing unit,CPU),通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件(programmable logic device,PLD)、晶体管逻辑器件、硬件部件或者其任意组合。处理器410可以实现或执行结合本申请公开内容所描述的各种示例性的方法。具体的,处理器410读取存储器430中存储的程序代码,并与通信接口420配合执行S102-S104的部分或者全部步骤。
通信接口420可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、控制器局域网络接口、局域互联网络(local interconnectnetwork,LIN)以及FlexRay接口,无线接口可以是蜂窝网络接口或使用无线局域网接口等。具体的,通信接口420可以与网络设备450连接,网络设备450可以包括交换机、路由器、服务器、客户端等等。
存储器430可以包括易失性存储器,例如随机存取存储器(random accessmemory,RAM);存储器430也可以包括非易失性存储器,例如只读存储器(read onlymemory,ROM)、快闪存储器、硬盘(hard disk drive,HDD)或固态硬盘(solid state drive,SSD),存储器430还可以包括上述种类的存储器的组合。存储器430可以存储有程序代码以及程序数据。其中,程序代码由图4示出的转发设备A中的部分或者全部单元的代码组成,例如,接收单元210的代码、发布单元220的代码以及预拥塞确定单元230中的代码。程序数据由图4示出的转发设备A在运行程序的过程中产生的数据,例如,第一拥塞通告、第一阈值以及第二阈值等。
总线440可以是控制器局域网络(controller area network,CAN)或其他实现内部总线。总线440可以分为地址总线、数据总线、控制总线等。为了便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例中的转发设备A用于执行上述方法实施例中的核心层交换机执行的方法,与上述方法实施例属于同一构思,其具体实现过程详见上述方法实施例,这里不再赘述。
如图7所示,图7是本申请提供的另一种转发设备B的结构示意图,转发设备B包括处理器510、通信接口520和存储器530。其中,处理器510、通信接口520以及存储器530通过总线540进行耦合。
处理器510可以是CPU、DSP、ASIC、FPGA、通用处理器或者其他PLD、晶体管逻辑器件、硬件部件或者其任意组合。处理器510可以实现或执行结合本申请公开内容所描述的各种示例性的方法。具体的,处理器510读取存储器530中存储的程序代码,并与通信接口520配合执行S105-S106的部分或者全部步骤。
通信接口520可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、控制器局域网络接口、LIN以及FlexRay接口,无线接口可以是蜂窝网络接口或使用无线局域网接口等。具体的,通信接口520可以与网络设备550连接,网络设备550可以包括交换机、路由器、服务器、客户端等等。
存储器530可以包括易失性存储器,例如,RAM;存储器530也可以包括非易失性存储器,例如,ROM、HDD、SSD或快闪存储器,存储器530还可以包括上述种类的存储器的组合。存储器530可以存储有程序代码以及程序数据。其中,程序代码由图5示出的转发设备B中的部分或者全部单元的代码组成,例如,接收单元310的代码、修改单元320的代码以及发送单元330的代码。程序数据由图5示出的转发设备B在运行程序的过程中产生的数据,例如,拥塞通告、RWND值等等。
总线540可以是CAN或其他实现内部总线。总线540可以分为地址总线、数据总线、控制总线等。为了便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例中的转发设备B用于执行上述方法实施例中的无线AP1执行的方法,与上述方法实施例属于同一构思,其具体实现过程详见上述方法实施例,这里不再赘述。当转发设备B(例如,交换机)不是与无线AP类似的网络设备时,转发设备B无需将接收或发送的报文进行格式转换(有线网络报文与无线网络报文之间的格式转换)。
本申请还提供了一种计算机存储介质,计算机存储介质存储有计算机程序,计算机程序被硬件(例如处理器等)执行以实现图4或图6中的转发设备A执行的部分或全部步骤。
本申请还提供了另一种计算机存储介质,计算机存储介质存储有计算机程序,计算机程序被硬件(例如处理器等)执行以实现图5或图7中的转发设备B执行的部分或全部步骤。
本申请还提供了一种网络***,网络***包括转发设备A和转发设备B,转发设备A可以是图4、图6中的转发设备A,转发设备A用于执行S102-S104的部分或全部步骤,转发设备B可以是图5、图7示出的转发设备B,转发设备B用于执行S105-S106的部分或全部步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。上述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行上述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。上述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。上述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,上述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(如,同轴电缆、光纤、数字用户线)或无线(如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。上述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。上述可用介质可以是磁性介质,(如,软盘、存储盘、磁带)、光介质(如,DVD)、或者半导体介质(如,SSD)等。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,也可以通过其它的方式实现。例如以上所描述的装置实施例仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可结合或者可以集成到另一个***,或一些特征可以忽略或不执行。另一点,所显示或讨论的相互之间的间接耦合或者直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例的方案的目的。
另外,在本申请各实施例中的各功能单元可集成在一个处理单元中,也可以是各单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质例如可包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或光盘等各种可存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (20)
1.一种网络拥塞控制方法,其特征在于,所述方法包括:
第一转发设备接收第二转发设备或网络控制器发送的拥塞通告,其中,所述拥塞通告指示从第一终端设备到第二终端设备的传输控制协议TCP流预拥塞;
所述第一转发设备接收来自第二终端设备的所述TCP流中的报文的确认ACK报文,所述ACK报文与所述TCP流反向;
所述第一转发设备根据所述拥塞通告减小所述ACK报文中的接收窗口RWND字段的值;
所述第一转发设备向所述第一终端设备发送修改后的所述ACK报文。
2.根据权利要求1所述的方法,其特征在于,所述第一转发设备根据所述拥塞通告减小所述ACK报文中的RWND字段的值,包括:
所述第一转发设备根据预设时间段内接收到的拥塞通告的数量与所述TCP流中的报文的数量的比值,减小所述RWND字段的值。
3.根据权利要求1或2任一项所述的方法,其特征在于,所述拥塞通告在所述TCP流中的报文中,在所述第一转发设备接收拥塞通告之后,所述方法还包括:
所述第一转发设备在转发所述TCP流中的报文前删除所述报文中的所述拥塞通告。
4.一种网络拥塞控制方法,其特征在于,所述方法包括:
第一转发设备接收终端设备发送的传输控制协议TCP流;
当所述第一转发设备在所述TCP流的转发方向上出现预拥塞时,所述第一转发设备发布第一拥塞通告,以使得第二转发设备根据所述第一转发设备或网络控制器发布的第二拥塞通告减小所述TCP流中的报文的确认ACK报文中的接收窗口RWND字段的值,其中,第二拥塞通告为所述第一拥塞通告,或者,所述第二拥塞通告是根据所述第一拥塞通告生成的,所述ACK报文与所述TCP流反向。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述第一转发设备根据目标队列的缓存状态,确定所述第一转发设备在所述TCP流的转发方向上出现预拥塞,其中,所述目标队列中缓存了所述TCP流中的报文。
6.根据权利要求5所述的方法,其特征在于,所述第一转发设备根据目标队列的缓存状态,确定所述第一转发设备在所述TCP流的转发方向上出现预拥塞,包括:
当所述目标队列中报文的数量大于第一阈值时,所述第一转发设备在所述TCP流的转发方向上出现预拥塞;或,
当所述目标队列中报文的数据量大于第二阈值时,所述第一转发设备在所述TCP流的转发方向上出现预拥塞。
7.根据权利要求4-6任一项所述的方法,其特征在于,所述第一转发设备发布第一拥塞通告包括:
所述第一转发设备在属于所述TCP流的TCP报文中添加所述第一拥塞通告,并转发属于所述TCP流的TCP报文。
8.根据权利要求4-6任一项所述的方法,其特征在于,所述第一转发设备发布第一拥塞通告,包括:
所述第一转发设备向网络控制器发送所述第一拥塞通告,以促使所述网络控制器将根据所述第一拥塞通告生成的所述第二拥塞通告发送给所述第二转发设备。
9.根据权利要求4所述的方法,其特征在于,所述转发方向包括上行方向和下行方向。
10.一种转发设备,其特征在于,所述设备包括接收单元、修改单元和发送单元,
所述接收单元用于接收另一转发设备或网络控制器发送的拥塞通告,其中,所述拥塞通告指示从第一终端设备到第二终端设备的传输控制协议TCP流预拥塞;
所述接收单元还用于接收来自第二终端设备的所述TCP流中的报文的确认ACK报文,所述ACK报文与所述TCP流反向;
所述修改单元用于根据所述拥塞通告减小所述ACK报文中的接收窗口RWND字段的值;
所述发送单元用于向所述第一终端设备发送修改后的所述ACK报文。
11.根据权利要求10所述的设备,其特征在于,
所述修改单元具体用于根据接收到的拥塞通告的数量与所述TCP流中的报文的数量的比值,减小所述RWND字段的值。
12.根据权利要求10或11所述的设备,其特征在于,所述拥塞通告在所述TCP流中的报文中,在所述接收单元接收拥塞通告之后,
所述发送单元还用于在转发所述TCP流中的报文前删除所述报文中的所述拥塞通告。
13.一种转发设备,其特征在于,所述设备包括接收单元和发布单元,
所述接收单元用于接收终端设备发送的传输控制协议TCP流;
当所述转发设备在所述TCP流的转发方向上出现预拥塞时,所述发布单元用于发布第一拥塞通告,以使得另一转发设备根据所述转发设备或网络控制器发布的第二拥塞通告减小所述TCP流中的报文的确认ACK报文中的接收窗口RWND字段的值,其中,第二拥塞通告为所述第一拥塞通告,或者,所述第二拥塞通告是根据所述第一拥塞通告生成的,所述ACK报文与所述TCP流反向。
14.根据权利要求13所述的设备,其特征在于,所述设备还包括预拥塞确定单元,
所述预拥塞确定单元用于根据目标队列的缓存状态,确定所述转发设备在所述TCP流的转发方向上出现预拥塞,其中,所述目标队列中缓存了所述TCP流中的报文。
15.根据权利要求14所述的设备,其特征在于,所述预拥塞确定单元具体用于:
当所述目标队列中报文的数量大于第一阈值时,所述预拥塞确定单元用于确定所述转发设备在所述TCP流的转发方向上出现预拥塞;或,
当所述目标队列中报文的数据量大于第二阈值时,所述预拥塞确定单元用于确定所述转发设备在所述TCP流的转发方向上出现预拥塞。
16.根据权利要求13-15任一项所述的设备,其特征在于,
所述发布单元具体用于在属于所述TCP流的TCP报文中添加所述第一拥塞通告,并转发属于所述TCP流的TCP报文。
17.根据权利要求13-15任一项所述的设备,其特征在于,
所述发布单元具体用于向网络控制器发送所述第一拥塞通告,以促使所述网络控制器将根据所述第一拥塞通告生成的所述第二拥塞通告发送给所述另一转发设备。
18.根据权利要求13所述的设备,其特征在于,所述转发方向包括上行方向和下行方向。
19.一种转发设备,其特征在于,所述转发设备包括处理器和存储器,所述处理器执行所述存储器中的代码以实现权利要求1至9任一项所述的方法。
20.一种网络***,其特征在于,包括第一转发设备和第二转发设备,所述第一转发设备用于执行权利要求1至3任一项所述第一转发设备执行的方法,所述第二转发设备用于执行权利要求4至9任一项所述第一转发设备执行的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010456725.7A CN113726671B (zh) | 2020-05-26 | 2020-05-26 | 一种网络拥塞控制方法及相关产品 |
PCT/CN2020/121457 WO2021238025A1 (zh) | 2020-05-26 | 2020-10-16 | 一种网络拥塞控制方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010456725.7A CN113726671B (zh) | 2020-05-26 | 2020-05-26 | 一种网络拥塞控制方法及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113726671A CN113726671A (zh) | 2021-11-30 |
CN113726671B true CN113726671B (zh) | 2023-06-30 |
Family
ID=78672025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010456725.7A Active CN113726671B (zh) | 2020-05-26 | 2020-05-26 | 一种网络拥塞控制方法及相关产品 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113726671B (zh) |
WO (1) | WO2021238025A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114866477A (zh) * | 2022-04-21 | 2022-08-05 | 浪潮思科网络科技有限公司 | 一种网络设备拥塞控制机制的测试方法、***及设备 |
CN115484210B (zh) * | 2022-08-16 | 2023-07-25 | 北京百度网讯科技有限公司 | 拥塞窗口的确定方法、装置与*** |
CN115396372B (zh) * | 2022-10-26 | 2023-02-28 | 阿里云计算有限公司 | 数据流的速率控制方法、智能网卡、云端设备及存储介质 |
CN116192777B (zh) * | 2022-12-30 | 2024-06-04 | 中国联合网络通信集团有限公司 | 路径学习方法、装置及存储介质 |
CN116233002A (zh) * | 2022-12-30 | 2023-06-06 | 天翼云科技有限公司 | 一种数据包发送方法、接收方法、报文发送方法和产品 |
CN116366553B (zh) * | 2023-03-08 | 2023-11-10 | 杭州流形新网络科技有限公司 | 一种自适应网络拥塞控制方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016134740A1 (en) * | 2015-02-23 | 2016-09-01 | Telefonaktiebolaget Lm Ericsson (Publ) | Supporting delivery of data packets using transmission control protocol in a wireless communication network |
CN109412958A (zh) * | 2017-08-18 | 2019-03-01 | 华为技术有限公司 | 数据中心的拥塞控制方法和装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102143078B (zh) * | 2011-03-29 | 2013-10-02 | 华为技术有限公司 | 一种报文处理方法、转发设备及*** |
CN102421142B (zh) * | 2011-12-01 | 2015-09-09 | 重庆邮电大学 | 一种车载通信网中基于跨层设计的tcp拥塞控制方法 |
CN102624723B (zh) * | 2012-03-06 | 2015-05-27 | 杭州华三通信技术有限公司 | 一种实现显式拥塞通告的方法及设备 |
CN104243090B (zh) * | 2013-06-19 | 2017-11-03 | ***通信集团公司 | 一种基于无线信道反馈的发送速率调整方法和设备 |
CN104426788A (zh) * | 2013-08-21 | 2015-03-18 | ***通信集团公司 | 一种网络拥塞控制方法和装置 |
US9559972B2 (en) * | 2013-12-30 | 2017-01-31 | Comcast Cable Communications, Llc | Systems and methods for managing congestion |
CN106027412B (zh) * | 2016-05-30 | 2019-07-12 | 南京理工大学 | 一种基于拥塞队列长度的tcp拥塞控制方法 |
US10397124B2 (en) * | 2017-01-17 | 2019-08-27 | Argela Yazilim ve Bilisim Teknolojileri San. ve Tic. A.S. | System and method to prevent persistent full switch queues in software defined networks |
US10091118B2 (en) * | 2017-01-27 | 2018-10-02 | Verizon Patent And Licensing Inc. | Maximizing throughput over a TCP link by boosting packet transmission |
CN108667739B (zh) * | 2017-03-27 | 2020-12-08 | 华为技术有限公司 | 拥塞控制方法、装置及*** |
CN109412964B (zh) * | 2017-08-18 | 2022-04-29 | 华为技术有限公司 | 报文控制方法及网络装置 |
CN114157603A (zh) * | 2018-05-04 | 2022-03-08 | 华为技术有限公司 | 拥塞控制方法、装置、设备及存储介质 |
-
2020
- 2020-05-26 CN CN202010456725.7A patent/CN113726671B/zh active Active
- 2020-10-16 WO PCT/CN2020/121457 patent/WO2021238025A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016134740A1 (en) * | 2015-02-23 | 2016-09-01 | Telefonaktiebolaget Lm Ericsson (Publ) | Supporting delivery of data packets using transmission control protocol in a wireless communication network |
CN109412958A (zh) * | 2017-08-18 | 2019-03-01 | 华为技术有限公司 | 数据中心的拥塞控制方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2021238025A1 (zh) | 2021-12-02 |
CN113726671A (zh) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113726671B (zh) | 一种网络拥塞控制方法及相关产品 | |
US10432556B1 (en) | Enhanced audio video bridging (AVB) methods and apparatus | |
US8665892B2 (en) | Method and system for adaptive queue and buffer control based on monitoring in a packet network switch | |
US8125904B2 (en) | Method and system for adaptive queue and buffer control based on monitoring and active congestion avoidance in a packet network switch | |
TWI700912B (zh) | 運算裝置中預測封包壽命之佇列系統 | |
US20090196170A1 (en) | Quality of service, policy enhanced hierarchical disruption tolerant networking system and method | |
US20100188974A1 (en) | Implementation of internet protocol header compression with traffic management quality of service | |
JP2006506845A (ja) | ルータにおけるパケットに対し論理リンクを選択する方法 | |
US11223568B2 (en) | Packet processing method and apparatus | |
CN113141314B (zh) | 一种拥塞控制方法及设备 | |
WO2021238803A1 (zh) | 一种网络拥塞控制方法及网络设备 | |
CN108667746B (zh) | 一种在深空延时容忍网络中实现业务优先级的方法 | |
WO2016202224A1 (zh) | 一种传输层参数调整方法和装置 | |
CN113783785A (zh) | Ecn水线值的配置方法、装置及网络设备 | |
US20230142425A1 (en) | Virtual dual queue core stateless active queue management (agm) for communication networks | |
WO2011113264A1 (zh) | 交换网中流量管理的方法和装置 | |
CN114979011B (zh) | 一种应用于园区网络的拥塞控制方法 | |
WO2022068617A1 (zh) | 流量整形方法及装置 | |
US11805071B2 (en) | Congestion control processing method, packet forwarding apparatus, and packet receiving apparatus | |
WO2010070660A1 (en) | A centralized wireless manager (wim) for performance management of ieee 802.11 and a method thereof | |
Irawan et al. | Performance evaluation of queue algorithms for video-on-demand application | |
CN112714072B (zh) | 一种调整发送速率的方法及装置 | |
Szilágyi et al. | Efficient LTE PDCP buffer management | |
Ito et al. | A bandwidth allocation scheme to improve fairness and link utilization in data center networks | |
JP2008193310A (ja) | ルータのバッファ管理方法並びにその管理方法を用いたルータ |
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 |