CN118631737A - 一种拥塞管理方法、网络设备和数据中心 - Google Patents

一种拥塞管理方法、网络设备和数据中心 Download PDF

Info

Publication number
CN118631737A
CN118631737A CN202310266871.7A CN202310266871A CN118631737A CN 118631737 A CN118631737 A CN 118631737A CN 202310266871 A CN202310266871 A CN 202310266871A CN 118631737 A CN118631737 A CN 118631737A
Authority
CN
China
Prior art keywords
congestion
network device
message
queue
output port
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
Application number
CN202310266871.7A
Other languages
English (en)
Inventor
刘柯鑫
汪清悦
孙文昊
田臣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202310266871.7A priority Critical patent/CN118631737A/zh
Publication of CN118631737A publication Critical patent/CN118631737A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种拥塞管理方法,接收数据报文,基于路径选择信息,选择数据报文从网络设备与目的主机之间进行传输的所有网络设备信息;基于所有网络设备信息,将数据报文分配至拥塞队列集群的第一拥塞队列。本申请中,网络设备构建拥塞队列集群,拥塞队列集群的每个拥塞队列对应一个出现拥塞的网络设备的输出端口。网络设备接收到数据报文后,确定数据报文后续传输路径的网络设备,并将数据报文分配到后续传输路径出现拥塞的网络设备的输出端口对应的拥塞队列,可以避免拥塞流量与非拥塞流量之间竞争,造成网络设备持续拥塞。

Description

一种拥塞管理方法、网络设备和数据中心
技术领域
本发明涉及数据传输技术领域,尤其涉及一种拥塞管理方法、网络设备和数据中心。
背景技术
数据中心网络(data center network,DCN)是指连接数据中心内部的大量网络设备、连接分布式数据中心、以及连接数据中心与终端用户之间的网络。DCN一般要求高吞吐率、流量完成时间低延迟、低中央处理器(central processing unit,CPU)负载。传统的传输控制协议(transmission control protocol,TCP)/网际互连协议(internet protocol,IP)协议栈是无法满足DCN的要求。然而,远程直接内存访问(remote direct memoryaccess,RDMA)技术是一种直接内存访问技术,让网络设备能够对另一个网络设备的内存进行直接访问。RDMA技术可以绕过操作系统内核,并不需要引入双方的CPU,从而降低了双方的CPU的消耗和负荷。以太网上远程直接内存访问第二版(RDMAover commodity ethernetversion 2,RoCEv2)协议栈支持RDMA技术,并且可以部署在传统的以太网DCN,以提高以太网DCN的高可靠性、低延时等特性。相比较TCP/IP网络,RDMA网络更能满足DCN应用要求。
DCN一般混合有多种类型的云服务流量。由于DCN的流量不平衡(incast)或路由不平衡(hash collision),DCN的流量的到达率大于链路带宽时,DCN会发生拥塞,导致DCN的吞吐量下降、流量完成时间会延迟、以及交换机缓冲区溢出造成丢包等问题。
发明内容
为了解决上述的问题,本申请的实施例中提供了一种拥塞管理方法,通过创建拥塞队列,将拥塞网络设备发送数据报文分配到不同的拥塞队列,非拥塞网络设备直接分配到输出队列,避免网络设备持续拥塞,并提升非拥塞流的性能,并不会影响网络的吞吐率和拥塞流的性能。另外,本申请还提供了与该拥塞管理方法对应的网络设备和数据中心。
为此,本申请的实施例中采用如下技术方案:
第一方面,本申请提供一种拥塞管理方法,所述方法由网络设备执行,所述方法包括:接收数据报文,所述数据报文携带有路径选择信息,所述路径选择信息用于指示所述网络设备选择所述数据报文从所述网络设备与目的主机之间进行传输的网络设备信息;基于所述网络设备信息,将所述数据报文分配至拥塞队列集群的第一拥塞队列,所述拥塞队列集群包括多个拥塞队列,所述多个拥塞队列分别对应所述网络设备所属的数据中心的出现拥塞的网络设备的输出端口信息,所述第一拥塞队列为所述网络设备与所述目的主机之间出现拥塞的网络设备的输出端口对应的拥塞队列。
在该实施方式中,网络设备构建拥塞队列集群,拥塞队列集群的每个拥塞队列对应一个出现拥塞的网络设备的输出端口。网络设备接收到数据报文后,确定数据报文后续传输路径的网络设备,并将数据报文分配到后续传输路径出现拥塞的网络设备的输出端口对应的拥塞队列,可以避免拥塞流量与非拥塞流量之间竞争,造成网络设备持续拥塞。
在一种实施方式中,所述方法还包括:响应于所述第一拥塞队列不处于暂停状态,将所述数据报文转发至所述网络设备的输出队列,所述暂停状态用于指示拥塞队列停止向下一级拥塞队列或所述输出队列转发报文。
在该实施方式中,第一拥塞队列对应的网络设备的输出端口不处于暂停状态时,网络设备可以认为第一拥塞队列不处于暂停状态。网络设备在确定数据报文后续传输的网络设备没有处于拥塞状态,可以将数据报文转发到输出端口,实现对拥塞流量进行转发。
在一种实施方式中,所述方法还包括:响应于所述网络设备的输出队列的长度处于设定长度范围,转发所述数据报文。
在该实施方式中,网络设备的输出端口转发数据报文的压力减小时,网络设备可以将拥塞的网络设备的数据报文输入到输出端口的输出队列,实现对拥塞流量进行转发。
在一种实施方式中,在所述接收数据报文之后,所述方法还包括:获取所述网络设备的输入端口的字节数量,并检测所述字节数量是否处于设定范围;响应于所述字节数量大于所述设定范围的上限阈值,向上游网络设备发送PAUSE报文,所述PAUSE报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列处于暂停状态;或者,响应于所述字节数量小于所述设定范围的下限阈值,向所述上游网络设备发送RESUME报文,所述RESUME报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列解除暂停状态。
在该实施方式中,网络设备的输入端口设置有字节计数器,统计输入端口的字节数量。输入端口的字节数量大于设定范围的上限阈值时,向上游网络设备发送PAUSE报文,让上游网络设备暂停发送数据包,避免输入端口处于拥塞状态。输入端口的字节数量小于设定范围的下限阈值时,向上游网络设备发送RESUME报文,让上游网络设备恢复发送数据包,保证拥塞流量的吞吐量。
在一种实施方式中,所述基于所述网络设备信息,将所述数据报文分配至拥塞队列集群的第一拥塞队列,包括:检测所述拥塞队列集群是否有所述第一拥塞队列;响应于所述拥塞队列集群没有所述第一拥塞队列,在所述拥塞队列集群创建所述第一拥塞队列,并将所述数据报文分配至所述第一拥塞队列。
在该实施方式中,网络设备确定拥塞队列集群没有发送数据报文的网络设备对应的拥塞队列,可以在拥塞队列集群构建拥塞队列,让数据报文在新建立的拥塞队列上排队,避免数据报文直接进入输出队列,造成网络设备持续拥塞。
在一种实施方式中,所述方法还包括:响应于所述网络设备的输出端口的输出队列的长度大于所述设定长度范围的上限阈值,向上游网络设备发送PAUSE报文,所述PAUSE报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列处于暂停状态。
在该实施方式中,网络设备的输出端口的输出队列的长度大于设定长度的上限阈值时,网络设备的输出端口出现拥塞,可以向上游网络设备发送PAUSE报文,让上游网络设备暂停向网络设备发送报文,避免网络设备加重拥塞。
在一种实施方式中,所述方法还包括:响应于所述网络设备的输出端口的输出队列的长度小于所述设定长度范围的下限阈值,向所述上游网络设备发送RESUME报文,所述RESUME报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列解除暂停状态。
在该实施方式中,网络设备的输出端口的输出队列的长度小于设定长度的下限阈值时,网络设备的输出端口出现拥塞,可以向上游网络设备发送RESUME报文,让上游网络设备恢复向网络设备发送报文,避免网络设备无法向下游网络设备发送数据报文。
在一种实施方式中,在所述接收数据报文之前,所述方法包括:接收数据包,所述数据包的报头携带有特定字段;响应于所述特定字段与访问控制列表的信号报文字段相同,确定所述数据包为信号报文。
在该实施方式中,网络设备接收的数据包可能为数据报文,也有可能为信号报文。网络设备基于数据包的报头携带的特定字段与访问控制列表进行比对,识别出报文的种类,并将不同类型的报文转发至内部不同的模块处理,以提高网络设备的工作效率。
在一种实施方式中,所述信号报文为RESUME报文,所述方法还包括:响应于所述RESUME报文,恢复所述网络设备的拥塞队列发送数据报文。
在该实施方式中,网络设备接收的信号报文为RESUME报文时,网络设备恢复向下游网络设备发送的数据包的速度,保证上游网络设备的拥塞流量的吞吐量。
在一种实施方式中,所述信号报文为PAUSE报文,所述方法还包括:响应于所述PAUSE报文,暂停所述网络设备的拥塞队列输出数据报文。
在该实施方式中,网络设备接收的信号报文为PAUSE报文时,网络设备暂停转发上游网络设备的数据报文,可以有效地缓解拥塞流对其它流量的阻塞。
在一种实施方式中,所述PAUSE报文携带有拥塞点信息,所述拥塞点信息表示出现拥塞的网络设备的输出端口信息,所述方法还包括:响应于所述拥塞点信息,在所述拥塞队列集群创建所述出现拥塞的网络设备的输出端口对应的拥塞队列。
在该实施方式中,PAUSE报文携带有拥塞点的信息。网络设备可以为拥塞点信息的网络设备的输出端口分配拥塞队列,让数据报文在新建立的拥塞队列上排队,避免数据报文直接进入输出队列,造成网络设备持续拥塞。
在一种实施方式中,所述信号报文为MERGE报文,所述方法还包括:响应于所述MERGE报文,将拥塞点信息记录的出现拥塞的网络设备的输出端口信息更改为下游网络设备的输出端口信息。
在该实施方式中,网络设备接收的信号报文为MERGE报文时,可以根据MERGE报文将指定的拥塞点的信息更新为下游网络设备的信息,以识别出真正造成拥塞的拥塞点,减少资源开销,并提升流量调度效率。
在一种实施方式中,所述方法还包括:接收到下游网络设备发送的PAUSE报文,向上游网络设备发送MERGE报文,所述MERGE报文指示所述上游网络设备将所述拥塞点信息记录的出现拥塞的网络设备的输出端口信息更改为所述网络设备的输出端口信息。
在该实施方式中,网络设备在接收到下游网络设备发送的PAUSE报文后,可以生成MERGE报文,并将MERGE报文发送给上游网络设备。上游网络设备接收到MERGE报文后,上游网络设备可以将特定拥塞点的信息更新为下游网络设备指定拥塞点的信息,以识别并记录整个数据传输链路中真正造成拥塞的拥塞点。
在一种实施方式中,所述信号报文为DEALLOC报文,所述方法还包括:响应于所述DEALLOC报文,将所述拥塞队列集群的部分拥塞队列删除。
在该实施方式中,网络设备接收的信号报文为DEALLOC报文时,可以根据DEALLOC报文指示其下游网络设备回收特定拥塞点的拥塞队列,可以降低下游网络设备的资源开销。
在一种实施方式中,所述方法还包括:检测所述第一拥塞队列的状态;响应于所述第一拥塞队列的状态没有处于拥塞状态,让所述第一拥塞队列的部分数据报文出队,并转发到第二拥塞队列或所述输出队列,所述第二拥塞队列为所述网络设备与所述目的主机之间出现拥塞的网络设备的输出端口对应的拥塞队列、且为所述第一拥塞队列对应的网络设备的输出端口转发所述数据报文的下游网络设备的输出端口对应的拥塞队列,所述拥塞队列包括所述第二拥塞队列。
在该实施方式中,网络设备确定拥塞队列的状态不拥塞时,可以按照顺序让拥塞队列的处于队列前部的数据报文出队,并让数据报文转发到拥塞队列对应的网络设备的下一层网络设备对应的拥塞队列,等待下一层网络设备对应的拥塞队列转发。以此类推,知道数据报文转发到输出队列,实现输出拥塞的网络设备的数据报文。
在一种实施方式中,所述方法还包括:检测所述第一拥塞队列对应的网络设备是否为拥塞树的叶网络设备、且所述第一拥塞队列是否有数据报文在排队;所述拥塞树是指所述网络设备所属数据中心的出现拥塞的网络设备构成的树状结构,所述叶网络设备是指除根网络设备以外的网络设备,所述根网络设备为所述拥塞树中导致其它网络设备不能传输数据报文的一个网络设备;响应于所述第一拥塞队列对应的网络设备为所述叶网络设备、且所述第一拥塞队列没有数据报文在排队,删除所述拥塞队列集群的所述第一拥塞队列,并向上游网络设备发送DEALLOC报文。
在该实施方式中,网络设备确定CQ对应的网络设备为拥塞树的叶网络设备,检测CQ的数据报文是否转发完成。网络设备检测CQ的数据报文转发完成后,可以将CQ集群中的对应CQ删除,降低HCQ选择器2202的资源开销。
在一种实施方式中,所述信号报文为PAUSE报文,所述PAUSE报文携带有跳数信息,所述跳数是指所述网络设备与所述根网络设备之间的距离,所述方法还包括:基于所述跳数信息,将所述数据报文分配到所述网络设备与所述目的主机之间出现拥塞的网络设备的且距离所述网络设备最远的输出端口对应的拥塞队列。
在该实施方式中,PAUSE报文一般会携带跳数信息。跳数是指网络设备与根网络设备之间的距离。网络设备可以基于跳数信息,将数据报文传输到距离网络设备最远的网络设备的输出端口对应的拥塞队列。数据报文可以从一层的CQ转发到下一层的CQ,直至传输到输出端口的OQ,保证数据报文在后续所有网络设备都可以正常传输。
第二方面,本申请实施例提供了一种网络设备,包括收发器和处理器,所述收发器,用于接收数据报文,所述数据报文携带有路径选择信息,所述路径选择信息用于指示所述网络设备选择所述数据报文从所述网络设备与目的主机之间进行传输的网络设备信息;基于所述网络设备信息,将所述数据报文分配至拥塞队列集群的第一拥塞队列,所述拥塞队列集群包括多个拥塞队列,所述多个拥塞队列分别对应所述网络设备所属的数据中心的出现拥塞的网络设备的输出端口信息,所述第一拥塞队列为所述网络设备与所述目的主机之间出现拥塞的网络设备的输出端口对应的拥塞队列。
在一种实施方式中,所述处理器,还用于响应于所述第一拥塞队列不处于暂停状态,将所述数据报文转发至所述网络设备的输出队列,所述暂停状态用于指示拥塞队列停止向下一级拥塞队列或所述输出队列转发报文。
在一种实施方式中,所述处理器,还用于响应于所述网络设备的输出队列的长度处于设定长度范围,转发所述数据报文。
在一种实施方式中,所述处理器,还用于获取所述网络设备的输入端口的字节数量,并检测所述字节数量是否处于设定范围;响应于所述字节数量大于所述设定范围的上限阈值,向上游网络设备发送PAUSE报文,所述PAUSE报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列处于暂停状态;或者,响应于所述字节数量小于所述设定范围的下限阈值,向所述上游网络设备发送RESUME报文,所述RESUME报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列解除暂停状态。
在一种实施方式中,所述处理器,具体用于检测所述拥塞队列集群是否有所述第一拥塞队列;响应于所述拥塞队列集群没有所述第一拥塞队列,在所述拥塞队列集群创建所述第一拥塞队列,并将所述数据报文分配至所述第一拥塞队列。
在一种实施方式中,所述处理器,还用于响应于所述网络设备的输出端口的输出队列的长度大于所述设定长度范围的上限阈值,向上游网络设备发送PAUSE报文,所述PAUSE报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列处于暂停状态。
在一种实施方式中,所述处理器,还用于响应于所述网络设备的输出端口的输出队列的长度小于所述设定长度范围的下限阈值,向所述上游网络设备发送RESUME报文,所述RESUME报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列解除暂停状态。
在一种实施方式中,所述收发器,还用于接收数据包,所述数据包的报头携带有特定字段;所述处理器,还用于响应于所述特定字段与访问控制列表的信号报文字段相同,确定所述数据包为信号报文。
在一种实施方式中,所述信号报文为RESUME报文,所述处理器,还用于响应于所述RESUME报文,恢复所述网络设备的拥塞队列发送数据报文。
在一种实施方式中,所述信号报文为PAUSE报文,所述处理器,还用于响应于所述PAUSE报文,暂停所述网络设备的拥塞队列输出数据报文。
在一种实施方式中,所述PAUSE报文携带有拥塞点信息,所述拥塞点信息表示出现拥塞的网络设备的输出端口信息,
所述处理器,还用于响应于所述拥塞点信息,在所述拥塞队列集群创建所述出现拥塞的网络设备的输出端口对应的拥塞队列。
在一种实施方式中,所述信号报文为MERGE报文,所述处理器,还用于响应于所述MERGE报文,将拥塞点信息记录的出现拥塞的网络设备的输出端口信息更改为下游网络设备的输出端口信息。
在一种实施方式中,所述处理器,还用于接收到下游网络设备发送的PAUSE报文,向上游网络设备发送MERGE报文,所述MERGE报文指示所述上游网络设备将所述拥塞点信息记录的出现拥塞的网络设备的输出端口信息更改为所述网络设备的输出端口信息。
在一种实施方式中,所述信号报文为DEALLOC报文,所述处理器,还用于响应于所述DEALLOC报文,将所述拥塞队列集群的部分拥塞队列删除。
在一种实施方式中,所述处理器,还用于检测所述第一拥塞队列的状态;响应于所述第一拥塞队列的状态没有处于拥塞状态,让所述第一拥塞队列的部分数据报文出队,并转发到第二拥塞队列或所述输出队列,所述第二拥塞队列为所述网络设备与所述目的主机之间出现拥塞的网络设备的输出端口对应的拥塞队列、且为所述第一拥塞队列对应的网络设备的输出端口转发所述数据报文的下游网络设备的输出端口对应的拥塞队列,所述拥塞队列包括所述第二拥塞队列。
在一种实施方式中,所述处理器,还用于检测所述第一拥塞队列对应的网络设备是否为拥塞树的叶网络设备、且所述第一拥塞队列是否有数据报文在排队;所述拥塞树是指所述网络设备所属数据中心的出现拥塞的网络设备构成的树状结构,所述叶网络设备是指除根网络设备以外的网络设备,所述根网络设备为所述拥塞树中导致其它网络设备不能传输数据报文的一个网络设备;响应于所述第一拥塞队列对应的网络设备为所述叶网络设备、且所述第一拥塞队列没有数据报文在排队,删除所述拥塞队列集群的所述第一拥塞队列,并向上游网络设备发送DEALLOC报文。
在一种实施方式中,所述信号报文为PAUSE报文,所述PAUSE报文携带有跳数信息,所述跳数是指所述网络设备与所述根网络设备之间的距离,所述处理器,还用于基于所述跳数信息,将所述数据报文分配到所述网络设备与所述目的主机之间出现拥塞的网络设备的且距离所述网络设备最远的输出端口对应的拥塞队列。
第三方面,本申请提供一种数据中心,包括:网络总线,多个如第二方面各个可能实现的网络设备,所述多个网络设备通过网络总线建立通达信连接。
第四方面,本申请提供一种终端设备,包括:至少一个存储器,至少一个处理器,所述至少一个处理器用于执行所述至少一个存储器中存储的指令,以使得所述处理器执行如第一方面各个可能实现的方法。
第五方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行如第一方面各个可能实现的方法。
第六方面,本申请提供一种计算机程序产品,其特征在于,所述计算机程序产品存储有指令,所述指令在由计算机执行时,使得所述计算机实施如第一方面各个可能实现的方法。
附图说明
下面对实施例或现有技术描述中所需使用的附图作简单地介绍。
图1为本申请实施例中提供的一种数据中心的架构示意图;
图2为本申请实施例中提供的一种网络设备的架构示意图;
图3为本申请实施例中提供的HCQ选择器选择数据报文是否进入CQ的流程示意图;
图4为本申请实施例中提供的信号报文处理单元的基于不同类型的信号报文执行过程的流程示意图;
图5为本申请实施例中提供的调度器的执行过程流程示意图;
图6为本申请实施例中提供的信号报文的帧格式示意图;
图7(a)为本申请实施例中提供的在incast mix场景下Memcached的工作负载的平均和99分位FCT;
图7(b)为本申请实施例中提供的在incast mix场景下Web Server的工作负载的平均和99分位FCT;
图7(c)为本申请实施例中提供的在incast mix场景下Web Search的工作负载的平均和99分位FCT;
图8(a)为本申请实施例中提供的为Memcached流量下受害流的FCT分布;
图8(b)为本申请实施例中提供的为Memcached流量下其它未拥塞的流量的FCT分布;
图8(c)为本申请实施例中提供的为Web Server流量下受害流的FCT分布;
图8(d)为本申请实施例中提供的为Web Server流量下其它未拥塞的流量的FCT分布;
图9(a)为本申请实施例中提供的Memcached流量场景下,流量在不同hop的交换机上的最大缓冲区占用;
图9(b)为本申请实施例中提供的Web Server流量场景下,流量在不同hop的交换机上的最大缓冲区占用;
图10(a)为本申请实施例中提供的Memcached流量下拥塞流的在网络设备上的排队时间;
图10(b)为本申请实施例中提供的Memcached流量下受害流的在网络设备上的排队时间;
图10(c)为本申请实施例中提供的Web Server流量下拥塞流的在网络设备上的排队时间;
图10(d)为本申请实施例中提供的Web Server流量下受害流的在网络设备上的排队时间;
图11为本申请实施例中提供的两种数据报文传输过程示意图;
图12为本申请实施例中提供的一种拥塞管理方法实现流程示意图;
图13为本申请实施例中提供的一种网络设备的结构示意图;
图14为本申请实施例中提供的一种数据中心的架构示意图;
图15为本申请实施例中提供的另一种数据中心的架构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本文中术语“和/或”,是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本文中符号“/”表示关联对象是或者的关系,例如A/B表示A或者B。
本文中的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一响应消息和第二响应消息等是用于区别不同的响应消息,而不是用于描述响应消息的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或者两个以上,例如,多个处理单元是指两个或者两个以上的处理单元等;多个元件是指两个或者两个以上的元件等。
数据中心一般是由多个网络设备组成。网络设备与网络设备之间通过网络实现通信连接,实现数据的传输。网络设备与网络设备之间可以直接传输数据,可以间接传输数据。例如,网络设备A需要向网络设备B发送数据时,网络设备A可以直接向网络设备B发送数据,也可以通过网络设备C、网络设备D等中间设备,再发送到网络设备B。此时,网络设备A和网络设备B形成一个数据传输链路。网络设备A、网络设备C、网络设备D、……、网络设备B形成一个数据传输链路。
网络设备发送数据时,该网络设备可以定义为发送端。网络设备接收数据时,该网络设备可以定义为接收端。发送端和接收端是相对于流量的发送方向,可以相互转换。
流量控制(flow control,FC)机制是一种防止发送端的数据过快地发送到接收端的机制。在数据中心中,接收端的处理数据的能力可能小于发送端发送数据的速率,会导致接收端的缓存区堆积大量数据,甚至数据溢出,导致接收端出现丢包、吞吐率下降、流量完成时间延迟等问题。因此,接收端在确定处理数据的能力小于发送端发送数据的速率时,接收端可以利用FC机制要求发送端暂时停止发送数据。发送端停止发送数据后,只有在接收到发送端发送的许可消息时才能再次发送数据。
拥塞管理(congestion management,CM)机制是指DCN出现拥塞时,对DCN进行管理和控制,防止发送端的数据过快地发送到接收端的机制。在DCN中,每个发送端向同一个接收端发送数据的过程是相互独立地。当多个发送端同时向同一个接收端发送数据时,接收端会出现网络拥塞,导致接收端的缓存区堆积大量数据,甚至数据溢出。
CM机制可以分为端到端的CM机制和队列CM机制。端到端的CM机制是通过调整发送端的总发送速率,让发送端的总发送速率与DCN的瓶颈带宽相匹配,从而降低接收端出现缓冲区堆积大量数据的概率。队列CM机制是指将所有要从一个发送端的一个输出端口发送的报文进入多个队列,并按照各个队列的优先级进行转发。
现有的DCN中,基于RDMA技术的DCN可以利用FC机制、端到端的CM机制、队列CM机制等方式,实现DCN的高吞吐率、低时延的要求。具体实现过程如下:
FC机制:基于RoCEv2的DCN可以通过启用基于优先级的流量控制(priority-basedflow control,PFC)方式实现DCN的无损网络。当接收端的缓冲区占用率大于上限设定阈值时,可以向发送端发送暂停帧,让发送端停止发送数据,可以避免接收端的缓冲区堆积大量数据。当接收端的缓冲区占用率小于下限设定阈值时,可以向发送端发送恢复帧,让发送端继续发送数据。
端到端的CM机制:端到端的CM机制可以根据端到端的拥塞控制(congestioncontrol,CC)协议,可以分为被动型协议的端到端的CM和主动型协议的端到端的CM。
被动型协议可以分为数据中心TCP(data center TCP,DCTCP)、数据中心量化拥塞通知(data center quantized congestion notification,DCQCN)、timely、swift、高性能计算与通信(high performance computing communication,HPCC)、on-ramp等协议。实现过程为:发送端可以通过带宽线速发送一部分数据报文,如带宽延时积(bandwidth-delayproduction,BDP)大小。然后,发送端通过网络设备检测拥塞(如显式拥塞通知(explicitcongestion notification,ECN)打标,携带有带内网络监控(in-band networktelemetry,INT)头部等)或发送端检测拥塞(如统计数据报文的往返时延(round-triptime,RTT))。发送端在检测到网络拥塞后,可以通过调整发送速度或发送窗口来减少网络拥塞的程度。
主动型协议可以分为expresspass、homa、新数据中心传输协议(new datacenterprotocol,NDP)、aeolus、phost等协议。实现过程为:发送端与接收端在数据传输前,接收端将带宽分配包(如令牌)传输到发送端。发送端接收到带宽分配包后,可以传输相应的数据报文。
队列CM机制:DCN可以采用队列技术在一定程度上缓解DCN的拥塞。发送端向接收端发送报文时,报文可以按照设定的策略缓存在接收端的队列中。接收端可以按照设定的调度策略将报文从队列中调出,并在输出端口上发送出去。不同的队列调度策略算法可以解决不同的问题,并产生不同的效果。常见的队列调度策略算法分为:
先入先出(first in first out,FIFO)。FIFO可以按照报文到达端口的先后的顺序进入队列。FIFO可以按照报文进入队列的顺序出队。也即,先进入队列的报文先出队。后进入队列的报文后出队。
优先级队列(priority queue,PQ)。PQ队列之间采用严格优先级(strictpriority,SP)调度算法,优先从高优先级的队列中调度报文。
加权公平队列(weighted fair queue,WFQ)。WFQ是按照权重进行调度。调度算法可以为WFQ、加权循环调度(weighted round robin,WRR)、加权差分循环调度(weighteddeficit round robin,WDRR)等算法。可以按权重对剩余带宽进行分配。
但是,现有的基于PFC机制的FC机制中,接收端暂停发送端的流量是基于队列粒度的。当发送端经过不同拥塞点的流量进入到同一队列时,同一队列的所有流量可能被拥塞流量引发的暂停帧触发暂停发送。这一现象可以称为PFC机制的线头阻塞(head-of-lineblocking,HOL blocking)。被HOL blocking的非拥塞流量称为受害流量。HOL blocking是流量性能下降的直接原因。拥塞点是指拥塞的网络设备的输出端口。
PFC机制具有拥塞扩散的特点,如发送端收到暂停帧后,可以产生暂停帧并发送至发送端的上游。这种现象可以称为PFC风暴。PFC机制还存在潜在的死锁(deadlock)风险。
现有的端到端的CM机制中,发送端最开始发送的一部分数据报文是无法控制的。随着DCN的带宽增长,越来越多的流量可以在第一个RTT内完成。同时,数据中心的硬件规模的增大,网络设备的相对缓存容量下降。也即,不受控制的流量越来越多,网络设备难以处理瞬时拥塞,端到端的CM机制所起的作用越来越弱。
现有的队列CM机制中,队列CM机制不能将拥塞流和非拥塞流推入不同的队列,难以完全解除拥塞和HOL blocking的影响。
结合队列CM机制和FC机制的方式可以是背压流量控制(backpressure flowcontrol,BFC)机制。BFC机制根据流量的身份标识号(identifier,ID)和哈希函数,将流量推送到有限数量的队列中,实现隔离不同的流量。但是,BFC机制无法从未拥塞流量中识别出拥塞流量,导致未拥塞流量和拥塞流量会被推送到同一个队列,不能消除HOL blocking的影响。
随着数据中心的网络设备的数量不断地增大,DCN发生大规模incast的可能性也不断地增大。incast流量本来会导致接收端的缓冲区溢出、丢包、触发PFC等问题。当incast流量和non-incast流量在DCN中共存时,incast流量可以能对non-incast流量造成HOLblocking。其中,Incast是指来自多个源网络设备的流量流向一个目标网络设备。Incast流量是指造成DCN拥塞的流量。Non-incast流量是指不具备incast流量的特征的流量,通常不会主动造成DNC拥塞。当两种流量同时出现时,incast流量造成的拥塞可能会对non-incast流量造成阻塞,这种现象也称为“HOL blocking”。
为了解决DCN利用FC机制、端到端的CM机制、队列CM机制、BFC机制等方式无法快速地反映incast流量,以及incast流量对non-incast流量造成HOL blocking的问题,本申请实施例提供了一种数据中心、网络设备、拥塞管理方法和装置。网络设备通过快速地检测出瞬时拥塞,并在本地对incast流量进行隔离,可以消除HOL blocking的影响。另外,网络设备可以将incast流量推回到终端主机,并让终端主机控制incast流量输入到接收端,可以避免网络设备持续拥塞,从而提升non-incast流量的性能,并不会影响网络的吞吐率和incast流量的性能。
图1为本申请实施例中提供的一种数据中心的架构示意图。如图1所示,数据中心100包括网络总线110、多个网络设备120和多个主机130。多个网络设备120之间、多个主机130通过网络总线110建立通信连接。
网络总线110用于让网络设备120之间建立通信连接,实现网络设备120之间进行数据传输。网络总线110可以是有线通信硬件,如金线、引脚、印刷电路板(printed circuitboard,PCB)或其它类型的硬件。网络总线110可以是无线通信硬件,如蓝牙模块、2G/3G/4G/5G/6G通信模块、近场通信(near field communication,NFC)模块、无线保真(wirelessfidelity,WI-FI)模块或其它类型的硬件。
网络设备120可以为交换机、服务器、云服务器等,也可以为交换芯片、CPU、系统级芯片(system of chip,SOC)、片上网络(network of chip,NOC)等。网络设备120可以对流量进行控制、存储、转发等操作。本申请中,发送端是指发送数据的网络设备120。接收端是指接收数据的网络设备120。网络设备120不仅可以发送数据,也可以接收数据。因此,同一个网络设备120可以为发送端,也可以为接收端。下面以交换机为例作为网络设备120来讲述本申请保护的技术方案。可以想到的是,本申请不作限定。
主机130可以为智能手机、计算机、台式电脑、便携式电脑等等。主机130可以对流量进行发送、接收等操作。本申请中,发送端是指发送数据的主机130。接收端是指接收数据的主机130。主机130不仅可以发送数据,也可以接收数据。因此,同一个网络设备120可以为发送端,也可以为接收端。
网络设备120可以根据与主机130之间的节点数量,可以划分出不同层级(level),分别为level 1、level 2、level 3以及其它level(图中仅示出三个层级)。Level 1的网络设备120是与主机130之间连接。Level 2的网络设备120与主机130之间存在一个网络设备120。Level 3的网络设备120与主机130之间存在两个网络设备120。以此类推。每一层的网络设备120可以向上一层的一个或多个网络设备120发送报文,也可以向下一层的一个或多个网络设备120发送报文。同一层的网络设备120之间不能相互传输报文。
如图1所示,主机A向主机B发送数据报文时,主机A的数据报文依次通过Level 1的网络设备C11、Level 2的网络设备C22、Level 3的网络设备C33、Level 2的网络设备C2n和Level 1的网络设备C1n后,传输至主机B。
图2为本申请实施例中提供的一种网络设备的架构示意图。如图2所示,网络设备200包括控制面2100、数据面2200和通信总线2300。网络设备200可以为图1中任意层的任意一个网络设备。控制面2100与数据面2200通过通信总线2300建立通信连接,让控制面2100与数据面2200进行数据传输。
本申请中,网络设备200可以通过检测输出端口的队列长度,以识别出拥塞点,并控制发送流量。网络设备200可以利用实体或逻辑的分层拥塞队列(hierarchicalcongestion queue,HCQ)/输出队列(output queue,OQ),对发送的流量进行隔离和调度。网络设备200维护拥塞状态信息,并通过信号报文交互的方式更新队列状态。信号报文携带有拥塞点信息、当前节点距离拥塞点的跳数、以及信号报文类型(例如,PAUSE、RESUME、MERGE、或DEALLOC)。
网络设备200识别出拥塞点,可以动态调整经过或不经过拥塞点的流量发送速率,解决拥塞造成的头阻问题、提升网络吞吐率、降低非拥塞流量的平均完成时间和尾部时延、保持拥塞流的性能基本不受影响等。信号报文携带的跳数(距离拥塞点)信息可以确定CQ在HCQ中的层级。分层记录网络中的拥塞点,可以有效地处理流量经过多个拥塞点的复杂情况。
控制面2100可以为网络设备200的处理器的部分功能,用于对网络设备200的处理器的各个功能单元进行管理、控制等操作。控制面2100可以根据执行功能划分为端口管理单元2101、参数配置单元2102和转发单元2103。
端口管理单元2101,用于负责管理网络设备200的各个端口的属性,如端口速度、拥塞状态等。参数配置单元2102,用于配置端口出现拥塞时暂停接收数据的暂停门限、端口恢复接收数据的恢复门限等参数。
转发单元2103,用于提供数据面2200转发所需的网络信息、转发表项等参数。
数据面2200可以为网络设备的处理器的部分功能,用于处理和转发网络设备200的各个不同端口的各个类型的数据,如数据报文、信号报文等。数据面2200可以根据执行功能划分为输入端口2201、HCQ选择器2202、信号报文处理单元2203、网络拥塞状态单元2204、拥塞队列(congestion queue,CQ)/OQ单元2205、CQ状态单元2206、调度器2207、转发单元2208、拥塞/拥塞恢复检测单元2209、信号生成单元2210、输出端口2211和输出端口2211。其中,各个单元均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来以HCQ选择器2202为例,介绍HCQ选择器2202的实现方式。类似的,信号报文处理单元2203、网络拥塞状态单元2204、CQ/OQ单元2205、CQ状态单元2206、调度器2207、转发单元2208、拥塞/拥塞恢复检测单元2209、信号生成单元2210的实现方式可以参考HCQ选择器2202的实现方式。
单元作为软件功能单元的一种举例,HCQ选择器2202可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,HCQ选择器2202可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
单元作为硬件功能单元的一种举例,HCQ选择器2202可以包括至少一个计算设备,如服务器等。或者,HCQ选择器2202也可以是利用专用集成电路(application-specificintegrated circuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
HCQ选择器2202包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。HCQ选择器2202包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,HCQ选择器2202包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
需要说明的是,在其他实施例中,HCQ选择器2202可以用于执行拥塞管理方法中的任意步骤,信号报文处理单元2203可以用于执行拥塞管理方法中的任意步骤,网络拥塞状态单元2204可以用于执行拥塞管理方法中的任意步骤,CQ/OQ单元2205可以用于执行拥塞管理方法中的任意步骤,CQ状态单元2206可以用于执行拥塞管理方法中的任意步骤,调度器2207可以用于执行拥塞管理方法中的任意步骤,转发单元2208可以用于执行拥塞管理方法中的任意步骤,拥塞/拥塞恢复检测单元2209可以用于执行拥塞管理方法中的任意步骤,信号生成单元2210可以用于执行拥塞管理方法中的任意步骤。HCQ选择器2202、信号报文处理单元2203、网络拥塞状态单元2204、CQ/OQ单元2205、CQ状态单元2206、调度器2207、转发单元2208、拥塞/拥塞恢复检测单元2209、信号生成单元2210负责实现的步骤可根据需要指定,通过HCQ选择器2202、信号报文处理单元2203、网络拥塞状态单元2204、CQ/OQ单元2205、CQ状态单元2206、调度器2207、转发单元2208、拥塞/拥塞恢复检测单元2209、信号生成单元2210分别实现拥塞管理方法中不同的步骤来实现网络设备200的全部功能。
输入端口2201可以通过DCN与上游网络设备的输出端口连接,用于接收上游网络设备发送的数据包。本申请中,网络设备200有多个输入端口和多个输出端口。每一个输入端口与一个或多个网络设备的一个输出端口连接。每一个输出端口与一个网络设备的一个输入端口连接。上游网络设备是指与输入端口2201和输出端口2212连接的网络设备。同理,下游网络设备是指与输入端口2201和输出端口2211连接的网络设备。
数据包可以为数据报文和信号报文。报文是指网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含有将要发送的完整的数据信息。数据报文是指携带有正常业务的数据的报文。信号报文是指将信号打包成报文的形式,并以报文的形式进行传输的报文。
本申请中,输入端口2201可以配置有预处理单元。预处理单元在接收到数据包后,调取网络设备200存储的访问控制列表(access control list,ACL)。预处理单元解析数据包,获取数据包的报头的特定字段,让特定字段与ACL进行匹配。在一个实施例中,特定字段与ACL的标定信号报文的列表相匹配时,预处理单元确定数据包为信号报文,并发送给信号报文处理单元2203。其它情况下,预处理单元可以认为数据包为数据报文。
HCQ选择器2202与输入端口2201之间通过通信总线2301连接,将数据报文传输到HCQ选择器2202。HCQ选择器2202接收到数据报文后,根据数据报文携带的网络的拥塞状态信息,判断数据报文是否需要进入CQ。本申请中,HCQ选择器2202执行逻辑如图3所示,具体实现过程如下:
步骤S301,接收输入端口2201发送的数据报文。
输入端口2201设置有字节计数器,用于统计输入端口2201接收的字节数量,并将统计的字节数量发送HCQ选择器2202。HCQ选择器2202接收到字节计数器统计的字节数量,并基于字节的数量判断输入端口2201是否拥塞。在一个实施例中,HCQ选择器2202确定出字节计数器统计的数量为0,网络设备200的输入端口2201已经暂停接收数据包。在一个实施例中,HCQ选择器2202确定出字节计数器统计的数量不为0,网络设备200的输入端口2201恢复接收数据包,或者,没有停止接收数据报文。
步骤S302,获取输入端口2201的字节数量,并判断输入端口2201的字节数量是否处于设定范围。当输入端口2201的字节数量不处于设定范围时,执行步骤S303。当输入端口2201的字节数量处于设定范围时,执行步骤S307。
步骤S303,判断输入端口2201的字节数量是否大于设定范围的上限阈值。当输入端口2201的字节数量大于设定范围的上限阈值时,执行步骤S304。当输入端口2201的字节数量不大于设定范围的上限阈值(也即输入端口2201的字节数量小于设定范围的下限阈值)时,执行步骤S305。
步骤S304,生成PAUSE报文。
步骤S305,生成RESUME报文。
HCQ选择器2202接收到字节计数器统计的字节数量,并判断字节计数器统计的字节数量是处于设定范围。在一个实施例中,HCQ选择器2202确定字节计数器统计的字节数量处于设定范围,HCQ选择器2202可以直接将数据报文转发至输出端口2211。此时,HCQ选择器2202不需要向上游网络设备发送信号报文,以及不需要控制上游网络设备发送数据报文。
在一个实施例中,HCQ选择器2202确定字节计数器统计的字节数量大于设定阈值的上限阈值,输入端口2201处于拥塞状态。此时,网络设备200的输入端口2201排队接收的数据报文的数量比较多。为了缓解输入端口2201的拥塞情况,HCQ选择器2202可以生成暂停帧,并以信号报文的形式发送给上游网络设备,让上游网络设备对应的输出端口暂停发送数据报文,避免输入端口2201持续处于拥塞状态。
暂停帧可以为PAUSE报文。PAUSE报文可以指示上游网络设备对应的输出端口暂停向网络设备200的输入端口2201发送数据报文。本申请中,上游网络设备可以根据PAUSE报文,暂停向网络设备200的输入端口2201发送数据报文,可以有效地缓解网络设备200的输入端口2201对上游网络设备发送的数据出现阻塞,以及对其它上游网络设备的流量和网络设备200的其它输入端口的流量进行阻塞。
在一个实施例中,HCQ选择器2202确定字节计数器统计的字节数量小于设定范围的下限阈值,输入端口2201不处于暂停状态。此时,网络设备200的输入端口2201接收数据报文的数量比较少。HCQ选择器2202可以生成恢复帧,并以信号报文的形式发送给上游网络设备,让上游网络设备恢复发送数据报文,避免网络设备200不能为上游网络设备传输数据报文。
恢复帧可以为RESUME报文。RESUME报文可以指示上游网络设备恢复向网络设备200的输入端口2201发送数据报文。本申请中,上游网络设备可以根据RESUME报文,恢复向网络设备200的输入端口2201发送数据报文的输出端口发送数据报文,保证拥塞流量的吞吐量。
步骤S306,通过输出端口2212向上游网络设备发送信号报文。其中,信号报文可以为PAUSE报文或RESUME报文。
步骤S307,检测是否存在发送数据报文的网络设备对应的CQ。当存在发送数据报文的网络设备对应的CQ时,执行步骤S308。当不存在发送数据报文的网络设备对应的CQ时,执行步骤S309。
步骤S308,控制数据报文进入对应的CQ。
数据报文的报头中一般携带有路径选择信息。路径选择信息用于指示数据报文的传输路径。网络设备200接收到数据报文后,基于路径选择信息,数据报文从网络设备200传输到接收主机之间的唯一的传输路径的网络设备信息,如数据报文下一跳的网络设备的输出端口、下下一跳的网络设备的输出端口,以及其它跳的网络设备的输出端口。
在一个实施例中,路径选择信息可以为数据报文的目的地址。网络设备200可以基于数据报文的目的地址、自身的连接关系等因素,确定出数据报文从网络设备200传输到接收主机之间的唯一的传输路径的所有网络设备。基于数据报文确定后续路径的方法有三种,分别为:
第一种,根据确定性路由算法,即,网络设备200针对特定网络拓扑(如Torus),可以按照一定规则给出确定性路由算法(如维度顺序路由,二维Torus时也叫x-y路由),此时根据数据报文的目的地址,可以快速得出后续路径信息。
第二种,根据源路由信息,即,源主机发出数据报文时,已经在数据报文特定字段指示数据报文将要经过的网络节点,网络设备200读取数据报文将要经过的网络设备的信息,得到后续路径信息。
第三种,根据拓扑信息和路由规则,如,网络设备200根据Fat-tree拓扑信息,以及各节点采用的等价多路径(equal cost multi path,ECMP)规则,可以通过计算得到后续路径。
HCQ选择器2202可以虚拟出CQ集群。CQ集群的每一个CQ可以对应一个网络设备的一个输出端口信息。输出端口信息可以是输出端口的地址、输出端口的优先级队列等信息。后续便于描述,将“CQ对应的输出端口信息”写成“CQ对应的输出端口”。CQ集群的各个CQ为网络设备200所属的数据中心的出现拥塞的网络设备的输出端口对应的CQ。
CQ集群可以根据网络设备200与其它出现拥塞的网络设备之间的距离,将CQ划分成多层,分别为一层CQ、二层CQ、三层CQ以及其它层CQ。一层CQ是指网络设备200的下一跳出现拥塞的网络设备的输出端口对应的CQ。二层CQ是指网络设备200的下下一跳出现拥塞的网络设备的输出端口对应的CQ。依次类推。本申请中,高层次CQ排队的数据报文可以转发到低层次CQ排队。一层CQ排队的数据报文可以直接转发到输出端口的OQ排队。高层次CQ排队的数据报文可以直接转发到输出端口的OQ排队。
HCQ选择器2202得到数据报文的下一跳的网络设备的输出端口、下下一跳的网络设备的输出端口、以及其它跳的网络设备的输出端口后,检测CQ集群是否存在数据报文后续传输的输出端口对应的CQ。HCQ选择器2202确定CQ集群存在数据报文后续传输的输出端口对应的CQ时,将数据报文传输至CQ进行排队。
CQ集群的高层次CQ和低层次CQ都包含有数据报文后续传输的输出端口对应的CQ时,数据报文优选传输至高层次CQ。在一个实施例中,PAUSE报文一般会携带跳数信息。如图1所示,网络设备200为网络设备C11。网络设备C22为处于拥塞的网络设备。网络设备C33为处于拥塞的网络设备。网络设备C33检测到OQ拥塞的位置,会向上游的网络设备C22发送PAUSE报文,PAUSE报文携带的跳数为1。网络设备C22会在CQ集群的第一层建立CQ。网络设备C22检测到新建的CQ处于拥塞状态时,会向上游的网络设备C11发送PAUSE报文,PAUSE报文携带的跳数为2。网络设备C22会在CQ集群的第二层建立CQ。以此类推。
步骤S309,判断数据报文是否经过拥塞点。当数据报文经过拥塞点时,执行步骤S310。当数据报文没有经过拥塞点时,执行步骤S311。
步骤S310,为数据报文分配CQ。
步骤S311,控制数据报文进入OQ,并等待转发。
HCQ选择器2202检测CQ集群不存在数据报文后续传输的输出端口对应的CQ时,可以向后续传输数据报文的网络设备发送检测指令。后续传输数据报文的网络设备接收到检测指令后,检测传输数据报文的输出端口是否处于拥塞状态。在一个实施例中,后续传输数据报文的网络设备检测传输数据报文的输出端口处于拥塞状态时,向网络设备200发送反馈信息,指示输出端口处于拥塞状态。HCQ选择器2202基于反馈信息,在CQ集群创建新的CQ。新的CQ为后续传输数据报文的网络设备出现拥塞的输出端口。HCQ选择器2202创建完新的CQ后,并将数据报文传输至新的CQ进行排队。
在一个实施例中,后续传输数据报文的网络设备检测传输数据报文的输出端口没有处于拥塞状态时,向网络设备200发送反馈信息,指示输出端口没有处于拥塞状态。HCQ选择器2202基于反馈信息,将数据报文传输到输出端口2211的OQ进行排队,等在输出端口2211转发到下游网络设备。
步骤S312,检测输出端口2211的队列长度,并判断输出端口2211的队列长度是否处于设定长度范围。当输出端口2211的队列长度处于设定长度范围时,网络设备200直接转发数据报文。当输出端口2211的队列长度不处于设定长度范围时,执行步骤S313。
步骤S313,判断输出端口2211的队列长度是否大于设定长度范围的上限阈值。当输出端口2211的队列长度大于设定长度范围的上限阈值时,执行步骤S314。当输出端口2211的队列长度不大于设定长度范围的上限阈值(也即输出端口2211的队列长度小于设定长度范围的下限阈值)时,执行步骤S315。
步骤S314,生成PAUSE报文,并通过输出端口2212向上游网络设备发送生成PAUSE报文。
步骤S315,生成RESUME报文,并通过输出端口2212向上游网络设备发送RESUME报文。
HCQ选择器2202向下游网络设备发送数据报文之前,需要检测输出端口2211的状态。HCQ选择器2202检测输出端口的状态的方式可以为检测输出端口2211的OQ的长度。在一个实施例中,输出端口2211的OQ的长度处于设定长度范围时,HCQ选择器2202可以确定输出端口2211不处于拥塞状态。HCQ选择器2202可以将数据报文转发到输出端口2211的OQ,等待输出端口2211转发到下游网络设备。
在一个实施例中,输出端口2211的OQ的长度大于设定长度范围的上限阈值时,HCQ选择器2202可以确定输出端口2211处于拥塞状态。此时,HCQ选择器2202可以生成PAUSE报文,并向上游网络设备发送PAUSE报文。上游网络设备接收到PAUSE报文后,可以暂停向网络设备200的输入端口2201发送数据报文,避免输出端口2211持续处于拥塞状态。
在一个实施例中,输出端口2211的队列长度小于设定长度范围的下限阈值时,HCQ选择器2202确定输出端口2211不处于暂停状态。HCQ选择器2202可以生成RESUME报文,并向上游网络设备发送RESUME报文。上游网络设备接收到RESUME报文后,可以恢复向网络设备200的输入端口2201发送数据报文,避免网络设备200无法继续向下游网络设备发送数据报文。
信号报文处理单元2203与输入端口2201之间通过通信总线2302连接,将信号报文传输到信号报文处理单元2203。信号报文处理单元2203接收到信号报文后,可以根据信号报文让网络设备200与上游网络设备和下游网络设备进行信息交互。信号报文的交互可以发生在控制网络设备的主机与网络设备之间,可以发生在网络设备与网络设备之间。信号报文可以通过逐跳控制的方式,实现快速地处理网络设备的拥塞和头阻问题。本申请中,信号报文处理单元2203执行逻辑如图4所示,具体实现过程如下:
步骤S401,接收输入端口2201发送的信号报文。
步骤S402,根据信号报文,判断信号报文的类型。信号报文可以分为PAUSE报文、RESUME报文、MERGE报文和DEALLOC报文四个类型。当信号报文为PAUSE报文时,执行步骤S403。当信号报文为RESUME报文时,执行步骤S406。当信号报文为MERGE报文时,执行步骤S407。当信号报文为DEALLOC报文时,执行步骤S408。
PAUSE报文用于指示网络设备记录指定拥塞点,并按照需求为指定拥塞点分配CQ,以及指示网络设备暂停通过指定拥塞点发送数据报文。指定拥塞点可以为网络设备200的发送数据报文的下游网络设备的输出端口,可以为网络设备200的发送数据报文的下下游网络设备的输出端口,以及其它网络设备的输出端口。例如,网络设备200的输出端口2211出现拥塞,可以向网络设备200的上游网络设备发送PAUSE报文。上游网络设备可以基于PAUSE报文,确定网络设备200的输出端口2211为拥塞点,且在自身的CQ集群创建网络设备200的输出端口2211对应的CQ。
网络设备200产生PAUSE报文的条件为:网络设备200的输出端口2211的队列长度大于设定长度范围的上限阈值,或者,网络设备200的输入端口2201的字节计数器统计的字节数量大于设定范围的上限阈值。
RESUME报文用于指示网络设备恢复通过指定拥塞点发送数据报文。网络设备200产生PAUSE报文的条件为:网络设备200的输出端口2211的队列长度小于设定长度范围的下限阈值,或者,网络设备200的输入端口2201的字节计数器统计的字节数量小于设定范围的下限阈值。
MERGE报文用于指示拥塞点信息的特定拥塞点更新为下游网络设备的输出端口,让网络设备识别并记录整个数据传输链路中真正造成拥塞的拥塞点。例如,网络设备200的输入端口2201出现拥塞,可以向上游网络设备发送PAUSE报文,让上游网络设备暂停发送数据报文。此时,上游网络设备的输出端口也出现拥塞,会向上游网络设备的上游网络设备发送PAUSE报文,让上游网络设备的上游网络设备暂停发送数据报文。但是,上游网络设备的输出端口出现的拥塞是由网络设备200的输入端口2201造成。上游网络设备向上游网络设备的上游网络设备发送PAUSE报文时,PAUSE报文携带的拥塞点信息不是上游网络设备的输出端口,而是网络设备200的输入端口2201。MERGE报文可以让上游网络设备将PAUSE报文携带的拥塞点信息更新为网络设备200的输入端口2201。
网络设备200产生MERGE报文的条件为:网络设备200已经记录拥塞点,并接收到下游网络设备发送的PAUSE报文。
DEALLOC报文用于删除拥塞点的CQ,以降低网络设备的HCQ选择器2202的资源开销。例如,网络设备200的下游网络设备的输出端口出现拥塞时,网络设备200会在CQ集群中创建下游网络设备的输出端口对应的CQ。下游网络设备的输出端口由处于拥塞状态转换成不处于拥塞状态时,下游网络设备会向网络设备200发送DEALLOC报文。网络设备200基于DEALLOC报文,回收CQ集群中下游网络设备的输出端口对应的CQ。
拥塞树是指网络设备200所属数据中心的出现拥塞的网络设备构成的树状结构。拥塞树的根网络设备指示拥塞树中导致其它网络设备不能传输数据报文的一个网络设备。拥塞树的叶网络设备是指拥塞树中除根网络设备以外的网络设备。
叶网络设备接收到DEALLOC报文,可以指示其下游网络设备回收特定拥塞点的CQ,降低叶网络设备的下游网络设备的HCQ选择器2202的资源开销。网络设备200产生DEALLOC报文的条件为:拥塞树的叶网络设备的特定拥塞点的CQ满足设定条件,如设定时间内没有接收到报文。
步骤S403,接收到PAUSE报文,让输出端口2211停止向发送信号报文的网络设备的报文。
下游网络设备的输出端口出现拥塞时,会向网络设备200发送信号报文。网络设备200的信号报文处理单元2203确定信号报文为PAUSE报文时,可以让输出端口2211暂停向下游网络设备的报文。PAUSE报文一般携带有拥塞点信息。拥塞点信息可以为网络设备的ID。拥塞点信息可以为下游网络设备的输出端口,可以为下下游网络设备的输出端口,以及可以为真正出现拥塞的网络设备的输出端口。
网络设备200的信号报文处理单元2203得到拥塞点信息后,可以在CQ/OQ单元2205的CQ集群中创建出现拥塞的网络设备对应的CQ,以更新数据中心的DCN的拥塞状态。本申请中,网络设备200可以根据PAUSE报文,暂停向上游网络设备发送数据报文,可以有效地缓解拥塞流对其它流量的阻塞。
步骤S404,基于拥塞点信息,判断是否合并拥塞树的根网络设备。当信号报文处理单元2203合并拥塞树的根网络设备时,执行步骤S405。当信号报文处理单元2203不合并拥塞树的根网络设备时,执行步骤S409。
步骤S405,生成MERGE报文,并向上游网络设备发送MERGE报文。
网络设备20的下游网络设备的输出端口出现拥塞时,下游网络设备会向网络设备200发送PAUSE报文。此时,PAUSE报文携带的拥塞点信息为下游网络设备的输出端口。网络设备200可以认为该拥塞树的根网络设备为下游网络设备的输出端口。
网络设备20的下下游网络设备的输出端口出现拥塞时,下游网络设备会向网络设备200发送PAUSE报文。此时,PAUSE报文携带的拥塞点信息为下下游网络设备的输出端口。网络设备200可以认为该拥塞树的根网络设备为下下游网络设备的输出端口。
如果网络设备200传输的数据报文需要通过下游网络设备的输出端口和下下游网络设备的输出端口时,网络设备200需要将下游网络设备的输出端口出现拥塞对应的根网络设备和下下游网络设备的输出端口出现拥塞对应的根网络设备合并在一起。网络设备200可以将PAUSE报文携带的拥塞点信息更新为下下游网络设备的输出端口。与此同时,网络设备200可以生成MERGE报文,并发送至上游网络设备。上游网络设备基于MERGE报文,将PAUSE报文携带的拥塞点信息更新为下下游网络设备的输出端口,让上游网络设备识别并记录整个数据传输链路中真正造成拥塞的拥塞点。本申请中,网络设备200可以根据MERGE报文,更新真正的拥塞点信息,减少资源开销,并提升流量调度效率。
步骤S406,接收到RESUME报文,恢复向发送信号报文的网络设备发送报文。
信号报文处理单元2203确定信号报文为RESUME报文时,可以根据RESUME报文指示输出端口2211恢复向下游网络设备发送数据报文的速度。本申请中,RESUME报文可以指示网络设备200恢复向下游网络设备发送数据报文的速度,保证上游网络设备的拥塞流量的吞吐量。
步骤S407,接收到MERGE报文,将特定拥塞点信息更新为真正出现拥塞的网络设备的输出端口。
信号报文处理单元2203确定信号报文为MERGE报文时,可以根据MERGE报文将拥塞点信息的指定拥塞点更新为真正出现拥塞的网络设备的输出端口,以识别出真正造成拥塞的拥塞点。然后,信号报文处理单元2203可以生成MERGE报文,并发送至上游网络设备。上游网络设备基于MERGE报文,将PAUSE报文携带的拥塞点信息更新为下下游网络设备的输出端口,让上游网络设备识别并记录整个数据传输链路中真正造成拥塞的拥塞点。本申请中,网络设备200可以根据MERGE报文,更新真正的拥塞点信息,减少资源开销,并提升流量调度效率。
步骤S408,接收到DEALLOC报文,删除CQ集群中下游网络设备的输出端口对应的CQ。
信号报文处理单元2203确定信号报文为DEALLOC报文时,可以根据DEALLOC报文回收CQ集群中下游网络设备的输出端口对应的CQ,可以降低下游网络设备的HCQ选择器2202的资源开销。本申请中,网络设备200可以根据DEALLOC报文,及时回收CQ,以降低HCQ选择器2202的资源开销。
信号报文处理单元2203与信号生成单元2210之间通过通信总线2303连接。通信总线2303将信号报文传输到信号生成单元2210。本申请中,信号生成单元2210接收到的信号报文为MERGE报文时,信号生成单元2210需要生成新的MERGE报文,并通过输出端口2212将新的MERGE报文发送给上游网络设备。
网络拥塞状态单元2204与信号报文处理单元2203之间通过通信总线2304连接。通信总线2304将信号报文处理单元2203的信号报文传输到网络拥塞状态单元2204。网络拥塞状态单元2204接收到信号报文后,更新网络的拥塞状态。
网络拥塞状态单元2204与HCQ选择器2202之间通过通信总线2305连接。通信总线2305用于传输网络拥塞状态。本申请中,HCQ选择器2202获取网络拥塞状态单元2204的网络拥塞状态,选择对数据报文进行控制。
CQ/OQ单元2205与HCQ选择器2202之间通过通信总线2306连接。通信总线2306用于传输数据。HCQ选择器2202将需要进入CQ/OQ的数据传输到CQ/OQ单元2205。CQ/OQ单元2205可以让经过拥塞点的流量进入拥塞点对应的CQ。
本申请中,CQ/OQ单元2205可以设置CQ集群和一个OQ。CQ集群包括多个CQ。一个CQ可以代表数据中心的一个网络设备。网络设备200接收到数据报文后,可以将数据报文分配到CQ集群中的CQ进行排队。或者,网络设备200接收到数据报文后,将数据报文直接分配到CQ进行排队。
在一个实施例中,下游网络设备的输出端口处于拥塞状态时,数据报文在下游网络设备的输出端口对应的CQ进行排队。下游网络设备的输出端口不处于拥塞状态时,数据报文从下游网络设备的输出端口转发到下下游网络设备的输出端口对应的CQ进行排队。以此类推,一直转发到网络设备200的输出端口对应的OQ进行排队。数据报文后续传输的网络设备的输出端口都不处于拥塞状态时,网络设备200可以将数据报文直接转发到OQ进行排队,等待输出端口2211转发到下游网络设备。
CQ状态单元2206与HCQ选择器2202之间通过通信总线2307连接。通信总线2307用于传输数据。本申请中,CQ状态单元2206可以维护CQ集群的CQ的bitmap。HCQ选择器2202访问CQ状态单元2206,以获取CQ的bitmap。
通常情况下,网络设备200存储有CQ集群的列表。列表的每一列可以与一个CQ绑定关系。列表的一列的bitmap设置为0,表示该列与CQ解除分配。列表的一列的bitmap设置为1,表示该列与CQ绑定关系。在一个实施例中,HCQ选择器2202接收到数据报文后,可以基于数据报文确定数据报文后续传输的网络设备。HCQ选择器2202基于数据报文后续传输的网络设备对应的CQ,访问列表的CQ的bitmap。HCQ选择器2202访问的CQ的bitmap为0时,CQ对应的网络设备不处于拥塞状态,可以将数据报文直接发送至OQ。HCQ选择器2202访问的CQ的bitmap为1时,CQ对应的网络设备处于拥塞状态,将数据报文分配到CQ上排队。
调度器2207与CQ/OQ单元2205之间通过通信总线2308连接。调度器2207可以访问CQ/OQ单元2205的CQ,让满足条件的数据报文出队。调度器2207与CQ状态单元2206之间通过通信总线2309连接。调度器2207可以调取CQ状态单元2206的CQ的bitmap,调度器2207确定数据报文对应的网络设备为拥塞树的叶网络设备,且数据报文对应的网络设备对应的CQ的bitmap为0,可以更新数据报文对应的网络设备对应的CQ的bitmap。调度器2207根据循环调度(round robin,RR)的策略,调度满足出队的CQ的数据报文出队。本申请中,调度器2207执行逻辑如图5所示,具体实现过程如下:
步骤S501,根据RR的调度逻辑访问CQ集群的各个CQ。
步骤S502,判断CQ是否为拥塞状态。当CQ没有处于拥塞状态时,执行步骤S503。当CQ处于拥塞状态时,执行步骤S501。
步骤S503,让CQ的处于队列前部的数据报文出队,并转发到下一层的CQ或OQ。
CQ有数据报文在排队时,说明CQ处于暂停状态。网络设备200检测到CQ接触暂停状态时,说明网络设备200接收到RESUME报文,将CQ的状态由拥塞状态转换成不处于拥塞状态,解除CQ的暂停状态。或者,网络设备200接收到MERGE报文,将CQ的状态由拥塞状态转换成不处于拥塞状态,解除CQ的暂停状态。暂停状态用于指示CQ停止向下一级拥塞队列或输出队列转发报文。
调度器2207确定CQ没有处于拥塞状态时,可以按照顺序让CQ的处于队列前部的数据报文出队,并让数据报文转发到CQ下一层CQ进行排队,等待下一层CQ转发。如果CQ下一层为网络设备200的输出端口2211的OQ时,CQ的数据报文直接转发网络设备200的输出端口2211的OQ进行排队,等待输出端口2211转发到下游网络设备。
步骤S504,判断CQ对应的网络设备是否为拥塞树的叶网络设备、且CQ的数据报文是否转发完成。当CQ对应的网络设备为拥塞树的叶网络设备、且CQ的数据报文转发完成时,执行步骤S505。当CQ对应的网络设备不是拥塞树的叶网络设备和/或CQ的数据报文没有转发完成时,执行步骤S501。
步骤S505,删除CQ,将CQ的bitmap设置为0,并生成DEALLOC报文,发送给上游网络设备。
调度器2207将CQ的数据报文转发到其它CQ或OQ后,检测CQ对应的网络设备是否为拥塞树的叶网络设备。调度器2207确定CQ对应的网络设备为拥塞树的叶网络设备,检测CQ的数据报文是否转发完成。调度器2207检测CQ的数据报文转发完成后,可以将CQ集群中的对应CQ删除,降低HCQ选择器2202的资源开销。调度器2207将CQ的bitmap设置为0。网络设备200生成DEALLOC报文,并发送给上游网络设备。
调度器2207检测CQ的数据报文没有转发完成后,可以等待CQ的数据报文转发完成,再将CQ集群中的对应CQ删除。调度器2207确定CQ对应的网络设备不是拥塞树的叶网络设备,CQ对应的网络设备可能为根网络设备。此时,调度器2207不需要将CQ集群中的对应CQ删除。
转发单元2208与调度器2207之间通过通信总线2310连接。通信总线2310用于传输数据。本申请中,转发单元2208可以接收调度器2207发送的出队的数据报文。
转发单元2208与调度器2207之间通过通信总线2311连接。通信总线2311用于传输数据。本申请中,转发单元2208转发数据报文,并将数据报文发送给输出端口2211。
拥塞/拥塞恢复检测单元2209与转发单元2208之间通过通信总线2312连接。通信总线2312用于传输数据。本申请中,拥塞/拥塞恢复检测单元2209可以接收转发单元2208转发的数据报文,根据输出端口的队列长度,对数据报文进行拥塞/拥塞恢复检测。
信号生成单元2210与拥塞/拥塞恢复检测单元2209之间通过通信总线2313连接。通信总线2312用于传输拥塞/拥塞恢复的检测结果。本申请中,信号生成单元2210可以根据检测结果生成相应的信号报文。
信号生成单元2210可以调用可编程的网络设备生产信号报文。信号报文携带有拥塞点对应的网络设备的ID、输出端口的ID、PAUSE报文、RESUME报文、MERGE报文和DEALLOC报文。信号报文携带有拥塞点信息,如网络设备的ID、输出端口的ID等,可以在HCQ中标识出CQ,并且维护网络设备的拥塞点信息,以便判断流量是否经过拥塞点。网络设备200通过记录拥塞点信息,识别经过相同拥塞点的流量(拥塞流),并进行有效管理。
在一个实施例中,信号生成单元2210构建的信号报文的帧格式如图6所示,Type字段(16bits)标识报文类型为信号类型。Length字段(16bits)标识头部大小有多少字节(通常为20Bytes)。Sequence number字段(28bits)为信号帧的序列号。Hop字段(4bits)标识距离拥塞点的跳数。Congestion-spot字段(64bits)为拥塞点所对应的网络设备的ID(如switch-id)和输出端口的ID(如port-id)。
信号生成单元2210与输出端口2212之间通过通信总线2314连接。通信总线2314用于传输信号。本申请中,信号生成单元2210生成控制信号后,通过输出端口2212发送控制信号。
本申请实施例中,网络设备200可以记录输入端口的字节计数器的流量、或检测输出端口的队列长度的方式识别出拥塞点,并通过使用信号报文在下游网络设备和上游网络设备之间传播拥塞点。下游网络设备检测到拥塞时,将拥塞点信息以信号报文的形式发送给上游网络设备。上游网络设备可以创建CQ,通过分层拥塞处理来隔离被控制发送的incast流量。没有拥塞的流量可以直接通过OQ转发。拥塞流量与未拥塞流量隔离,直到拥塞根消失。也即,网络设备在本地小处理线头阻塞,以处理瞬时拥塞。网络设备将拥塞流量推回主机,以处理持久拥塞,在保证拥塞流量的性能的前提下,提高未拥塞流量的性能。
下面通过一个仿真实验来验证本申请保护的技术方案。
数据中心100包括10个ToR交换机和4个core交换机。每个ToR交换机与16个主机相连。主机与ToR交换机之间以100Gbps的带宽连接。ToR交换机与core交换机之间以400Gbps的带宽连接。
Incast mix流量场景存在两种流量,分别为incast流量和non-incast流量。incast流量(多打一)的大小为30MTU-40MTU,工作负载为0.5。non-incast流量的工作负载为0.8。non-incast流量以一定的流量分布(如Memcached、Web Server、Web Search等)按照Poisson到达的方式生成。
参数设置:两个参数分别为暂停阈值(Kpause=2)和恢复阈值(Kresume=1),且以最大CQ的数量设置为100。DCQCN、HPCC、TIMELY采用推荐的参数配置。动态PFC的α值设为2,交换机buffer设为20MB。BFC选取的队列数量为32和128。
测试指标:最大buffer占用、incast流量和non-incast流量的平均时延和99分位的尾时延、触发PFC的数量。
对比算法可以为Pyrrha、DCQCN、HPCC、TIMELY、ExpressPass、ExpressPass+Aeolus、BFC、BFC-128Q等。其中,Pyrrha是本申请实现的对比算法。
图7(a)-图7(c)所示,在incast mix场景(泊松到达流量和incast流量混合场景)中,不同工作负载的平均和99分位FCT。由于本申请的技术方案消除了线头阻塞,未拥塞的流量(possion arrival flow)的性能得到显著改善。
如图7(a)所示,对于Memcached来说,Memcached为小流量。相比较于端到端的拥塞控制机制,本申请的技术方案能够对网络拥塞快速响应,性能改进尤为明显。第3组条形图(incast)可以看出,在incast mix场景中,本申请的技术方案不会影响拥塞流量(incastflow)的性能。
如图7(b)-7(c)所示,对于Web Server和Web Search为大小流为混合流量,相比较Memcached场景,对流量性能的提升比较弱。
本申请的技术方案能够准确地识别拥塞流,并将其隔离到专用队列,而现有的BFC机制可能存在拥塞流和未拥塞流被推到同一队列中,只能缓解线头阻塞。
图8(a)-图8(d)为Memcached和Web Server流量下的FCT分布。如图8(a)和图8(c)所示,对于受害流,本申请的技术方案的性能是明显优于端到端的拥塞控制协议。同时,在Memcached下,本申请的技术方案实现了所有流的极低FCT。在Web Server流量下,本申请的技术方案相较于现有的BFC,显著地减少了FCT。而且,现有的BFC仅在部分小流量上性能较佳。
如图8(b)和图8(d)所示,对于其它未拥塞的流量,在Memcached的流量下除了现有的BFC机制外,本申请的技术方案取得了与拥塞控制协议相似的性能。在Web Server流量下,端到端的拥塞控制协议损害了流的性能,而本申请的技术方案实现了较低的FCT。
图9为Memcached和Web Server流量场景下,流量在不同hop的交换机上的最大缓冲区占用。图9的实验场景与图7的实验场景相同。SrcToR表示ToR交换机上行端口的缓冲区占用,DstToR表示ToR交换机下行端口的缓冲区占用。与端到端拥塞控制协议相比,本申请的技术方案使用了相对较小的设定阈值检测拥塞,并迅速将拥塞信号推回上游实体。
如图9(a)所示,在Memcached流量场景下,由于PFC暂停帧风暴发生,使用端到端拥塞控制协议占用了大量的缓冲区,而本申请的技术方案显著地减少了缓冲区的占用。
如图9(b)所示,相比较Memcached流量场景,在Web Server流量场景下,本申请的技术方案显著地减少了缓冲区的占用。
图10为流量在交换机上排队时间。流的排队时间与图9中一样被划分成了三部分。图10的实验场景与图7的实验场景相同。如图10(a)-10(c)所示,在Memcached场景下的incast流量、受害流和其他泊松到达流量的排队时间。如图10(d)所示,在Web Server场景下的其他泊松到达流量的排队时间。ToR-Up表示连接到其下游交换机的ToR端口,即数据报文的第一跳。同样,ToR-Down表示连接到服务器的ToR端口,即数据报文的最后一跳。
对于Incast流量,端到端拥塞控制协议在DstTor和Core交换机上排队,而本申请的技术方案在DstTor上对拥塞快速反应,并通知上游实体。本申请的技术方案的排队时间主要在SrcTor和Core交换机。
如图10(b)所示为受害流的排队时间。在端到端拥塞控制下,受害流由于线头阻塞经历较长的排队时间,而本申请的技术方案完全消除了排队时间。
如图10(d)所示为其它Possion流在Web Serve上的排队时间。拥塞控制协议由于触发PFC暂停帧风暴,导致排队时间较高,而本申请的技术方案获得了一个很小的排队时间。
现有技术中,端到端拥塞控制协议需要等到拥塞发生后,再由端上调节流量的发送速率。PFC机制需要等到交换机的缓冲区达到设定阈值后,再通过反压的方式来暂停上游的交换机或者主机发送。BFC机制将流推送到有限数量的队列,以隔离不同的流,能够缓解HOL阻塞,但拥塞流和未拥塞流可能会被推入同一队列。现有技术都无法很好的解决突发的incast流量给网络带来的问题。
相比较现有技术,本申请的技术方案逐跳的进行流量控制,在本地交换机解除线头阻塞缓解瞬时拥塞,再将其推回主机解决持久拥塞,能够有效的解决大规模拥塞场景下拥塞流对未拥塞流带来的性能下降问题。
在一个实施例中,交换机可以基于数据中心或高性能计算网络拓扑的特征,采用确定性路由(dimension-ordered routing,DOR)算法,并利用网络拓扑的确定性维度顺序路由,分组在任意节点对之间总是提供相同的路径,而与网络状态无关,该算法简单且路径唯一。
在一个实施例中,交换机采用了源路由的方式进行路由选择。源路由选项是IP数据报选项的其中之一。源路由的用户可以指定其它主机发送的数据报文沿途经过的部分或者全部路由器。源路由可以分为严格源路由选项和松散源路由选项。严格源路由选项规定了IP数据报要经过路径上的每一个路由器。相邻路由器之间不得有中间路由器,并且所经过的路由器的顺序不可更改。
在一个实施例中,交换机在单层队列模拟两层HCQ的情况下,令第一层队列A_1,…,A_n,令第二层队列B_1,…,B_m(对应的拥塞点用小写字母表示)。对于单层队列,交换机需要为其分配队列A_1,…,A_n,以及B_1,…,B_m,A_1·B_1,…,A_n·B_m。总共需要的队列数量是n+m+nm。相应的队列选择过程举例如下:
交换机收到PAUSE信号时,检查所携带的是否为新的拥塞点。PAUSE信号携带的拥塞点为新的拥塞点时,交换机更新所维护的拥塞根列表,并为此拥塞点及关联拥塞点组合分配拥塞队列。例如,接收到的拥塞根为a_{p+1},且在此前已经收到拥塞根为a_1,…,a_p,b_1,…,b_q。则交换机为拥塞点分配A_{p+1},A_{p+1}B_1,A_{p+1}B_2,…,A_{p+1}B_q共计(q+1)个队列,并分配临时队列B_1’,…,B_q’。
后续经过拥塞点b_1,…,b_q的流量分别进入对应的B_1’,…,B_q’队列。
在队列B_1,…,B_q排空之前,B_1’,…,B_q’和A_{p+1}B_1,A_{p+1}B_2,…,A_{p+1}B_q队列处于pause状态。
等到队列B_1,…,B_q排空之后,将其回收。B_1’,…,B_q’和A_{p+1}B_1,A_{p+1}B_2,…,A_{p+1}B_q队列状态设置为resume(将B_1’,…,B_q’赋值给B_1,…,B_q)。
交换机收到收到RESUME信号时,与多层队列逻辑相同,将对应的队列状态设置为resume。注意当且仅当a_p和b_q拥塞点都为resume状态时,队列A_p和B_q才为resume状态。
图11为本申请实施例中提供的两种数据报文传输过程示意图。如图11所示,网络设备200下游的网络设备为网络设备A。网络设备A下游的网络设备为网络设备B。网络设备200接收到数据报文a后,需要通过网络设备A和网络设备B进行传输。网络设备200接收到数据报文b后,需要通过网络设备A和网络设备B进行传输。
对于数据报文a,网络设备A的输出端口处于拥塞状态,网络设备B的输出端口2处于拥塞状态。网络设备A接收到PAUSE报文后,创建网络设备B的输出端口2对应的CQ。
数据报文a传输过程中,网络设备200接收到PAUSE报文后,创建网络设备A的输出端口3对应的CQ j和网络设备B的输出端口2对应的CQ k。网络设备200接收到数据报文a后,将数据报文a分配到网络设备B的输出端口2对应的CQ k。网络设备B的输出端口2对应的CQk不处于暂停状态时,网络设备B的输出端口2对应的CQ k的数据报文a传输到网络设备A的输出端口对应的CQ j。网络设备A的输出端口对应的CQ不处于暂停状态时,网络设备A的输出端口对应的CQ j的数据报文a传输到网络设备200的输出端口4对应的OQ 4。
网络设备200的输出端口4对应的OQ 4将数据报文a传输到网络设备A后,网络设备A将数据报文a分配到网络设备B的输出端口2对应的CQ i。网络设备B的输出端口2对应的CQ不处于暂停状态时,网络设备B的输出端口2对应的CQ i的数据报文a传输到网络设备A的输出端口3对应的OQ 3。网络设备A的输出端口3对应的OQ 3将数据报文a传输到网络设备B后,网络设备B将数据报文a分配到网络设备B的输出端口2对应的OQ 2。网络设备B的输出端口2对应的OQ 2将数据报文a输出到其它网络设备或主机。
对于数据报文b,网络设备A的输出端口处于拥塞状态。网络设备200接收到PAUSE报文后,创建网络设备A的输出端口4对应的CQ 4。
数据报文b传输过程中,网络设备200接收到数据报文b后,将数据报文b分配到网络设备A的输出端口3对应的CQ j。网络设备A的输出端口3对应的CQ j不处于暂停状态时,网络设备A的输出端口3对应的CQ j的数据报文b传输到网络设备200的输出端口4对应的OQ4。
网络设备200的输出端口4对应的OQ 4将数据报文a传输到网络设备A后,网络设备A将数据报文b传输到网络设备A的输出端口3对应的OQ 3。网络设备A的输出端口3对应的OQ3将数据报文b传输到网络设备B后,网络设备B将数据报文b分配到网络设备B的输出端口1对应的OQ 1。网络设备B的输出端口1对应的OQ 1将数据报文b输出到其它网络设备或主机。
图12为本申请实施例中提供的一种拥塞管理方法实现流程示意图。如图12所示,该方法是由网络设备200的处理器执行,具体为:
步骤S1201,接收数据报文。
网络设备200接收上游的数据包可以为数据报文,可以为信号报文。在一个实施例中,网络设备200在接收到数据包后,调取存储的ACL。网络设备200解析数据包,获取数据包的报头的特定字段,让特定字段与ACL进行匹配。特定字段与ACL的标定信号报文的列表相匹配时,预处理单元确定数据包为信号报文。其它情况下,数据包为数据报文。
网络设备200在输入端口设置有字节计数器。字节计数器用于统计输入端口接收的字节数量。网络设备200接收到字节计数器统计的字节数量,并基于字节的数量判断输入端口是否拥塞。在一个实施例中,网络设备200确定字节计数器统计的字节数量处于设定范围,网络设备200可以直接将数据报文转发至输出端口。此时,网络设备200不需要向上游网络设备发送信号报文,以及不需要控制上游网络设备发送数据报文。
在一个实施例中,网络设备200确定字节计数器统计的字节数量大于设定阈值的上限阈值,输入端口处于拥塞状态。此时,网络设备200的输入端口排队接收的数据报文的数量比较多。为了缓解输入端口的拥塞情况,网络设备200可以生成PAUSE报文,发送给上游网络设备,让上游网络设备对应的输出端口暂停发送数据报文,避免输入端口持续处于拥塞状态。上游网络设备可以根据PAUSE报文,暂停向网络设备200的输入端口2201发送数据报文,可以有效地缓解网络设备200的输入端口2201对上游网络设备发送的数据出现阻塞,以及对其它上游网络设备的流量和网络设备200的其它输入端口的流量进行阻塞。
在一个实施例中,网络设备200确定字节计数器统计的字节数量小于设定范围的下限阈值,输入端口不处于暂停状态。此时,网络设备200的输入端口接收数据报文的数量比较少。网络设备200可以生成RESUME报文,发送给上游网络设备,让上游网络设备恢复发送数据报文,避免网络设备200不能为上游网络设备传输数据报文。RESUME报文可以指示上游网络设备恢复向网络设备200的输入端口发送数据报文。上游网络设备可以根据RESUME报文,恢复向网络设备200的输入端口发送数据报文的输出端口发送数据报文,保证拥塞流量的吞吐量。
数据报文的报头中一般携带有路径选择信息。路径选择信息用于指示数据报文的传输路径。网络设备200接收到数据报文后,基于路径选择信息,数据报文从网络设备200传输到接收主机之间的唯一的传输路径的网络设备信息,如数据报文下一跳的网络设备的输出端口、下下一跳的网络设备的输出端口,以及其它跳的网络设备的输出端口。在一个实施例中,路径选择信息可以为数据报文的目的地址。网络设备200可以基于数据报文的目的地址、自身的连接关系等因素,确定出数据报文从网络设备200传输到接收主机之间的唯一的传输路径的所有网络设备。基于数据报文确定后续路径的方法有三种,分别为:
第一种,根据确定性路由算法,即,网络设备200针对特定网络拓扑(如Torus),可以按照一定规则给出确定性路由算法(如维度顺序路由,二维Torus时也叫x-y路由),此时根据数据报文的目的地址,可以快速得出后续路径信息。
第二种,根据源路由信息,即,源主机发出数据报文时,已经在数据报文特定字段指示数据报文将要经过的网络节点,网络设备200读取数据报文将要经过的网络设备的信息,得到后续路径信息。
第三种,根据拓扑信息和路由规则,如,网络设备200根据Fat-tree拓扑信息,以及各节点采用的ECMP规则,可以通过计算得到后续路径。
步骤S1203,基于网络设备信息,将数据报文分配至拥塞队列集群的第一拥塞队列。
网络设备200可以虚拟出CQ集群。CQ集群的每一个CQ可以对应一个网络设备的一个输出端口信息。输出端口信息可以是输出端口的地址、输出端口的优先级队列等信息。CQ集群的各个CQ为网络设备200所属的数据中心的出现拥塞的网络设备的输出端口对应的CQ。
CQ集群可以根据网络设备200与其它出现拥塞的网络设备之间的距离,将CQ划分成多层,分别为一层CQ、二层CQ、三层CQ以及其它层CQ。一层CQ是指网络设备200的下一跳出现拥塞的网络设备的输出端口对应的CQ。二层CQ是指网络设备200的下下一跳出现拥塞的网络设备的输出端口对应的CQ。依次类推。本申请中,高层次CQ排队的数据报文可以转发到低层次CQ排队。一层CQ排队的数据报文可以直接转发到输出端口的OQ排队。高层次CQ排队的数据报文可以直接转发到输出端口的OQ排队。网络设备200得到数据报文的下一跳的网络设备的输出端口、下下一跳的网络设备的输出端口、以及其它跳的网络设备的输出端口后,检测CQ集群是否存在数据报文后续传输的输出端口对应的CQ。网络设备200确定CQ集群存在数据报文后续传输的输出端口对应的CQ时,将数据报文传输至CQ进行排队。
网络设备200检测CQ集群不存在数据报文后续传输的输出端口对应的CQ时,可以向后续传输数据报文的网络设备发送检测指令。后续传输数据报文的网络设备接收到检测指令后,检测传输数据报文的输出端口是否处于拥塞状态。
在一个实施例中,后续传输数据报文的网络设备检测传输数据报文的输出端口处于拥塞状态时,向网络设备200发送反馈信息,指示输出端口处于拥塞状态。网络设备200基于反馈信息,在CQ集群创建新的CQ。新的CQ为后续传输数据报文的网络设备出现拥塞的输出端口。网络设备200创建完新的CQ后,并将数据报文传输至新的CQ进行排队。
在一个实施例中,后续传输数据报文的网络设备检测传输数据报文的输出端口没有处于拥塞状态时,向网络设备200发送反馈信息,指示输出端口没有处于拥塞状态。网络设备200基于反馈信息,将数据报文传输到输出端口的OQ进行排队,等在输出端口转发到下游网络设备。
网络设备200向下游网络设备发送数据报文之前,需要检测输出端口的状态。网络设备200检测输出端口的状态的方式可以为检测输出端口的OQ的长度。在一个实施例中,输出端口的OQ的长度处于设定长度范围时,网络设备200可以确定输出端口不处于拥塞状态。网络设备200可以将数据报文转发到输出端口的OQ,等待输出端口转发到下游网络设备。
在一个实施例中,输出端口的OQ的长度大于设定长度范围的上限阈值时,网络设备200可以确定输出端口处于拥塞状态。此时,网络设备200可以生成PAUSE报文,并向上游网络设备发送PAUSE报文。上游网络设备接收到PAUSE报文后,可以暂停向网络设备200的输入端口发送数据报文,避免输出端口持续处于拥塞状态。
在一个实施例中,输出端口的队列长度小于设定长度范围的下限阈值时,网络设备200确定输出端口不处于暂停状态。网络设备200可以生成RESUME报文,并向上游网络设备发送RESUME报文。上游网络设备接收到RESUME报文后,可以恢复向网络设备200的输入端口发送数据报文,避免网络设备200无法继续向下游网络设备发送数据报文。
本申请中实施例中,下游网络设备的输出端口出现拥塞时,会向网络设备200发送信号报文。网络设备200确定信号报文为PAUSE报文时,可以让输出端口暂停向下游网络设备的报文。PAUSE报文一般携带有拥塞点信息。拥塞点信息可以为网络设备的ID。拥塞点信息可以为下游网络设备的输出端口,可以为下下游网络设备的输出端口,以及可以为真正出现拥塞的网络设备的输出端口。
网络设备200得到拥塞点信息后,可以在CQ集群中创建出现拥塞的网络设备对应的CQ,以更新数据中心的DCN的拥塞状态。网络设备200可以根据PAUSE报文,暂停向上游网络设备发送数据报文,可以有效地缓解拥塞流对其它流量的阻塞。
网络设备200的下游网络设备的输出端口出现拥塞时,下游网络设备会向网络设备200发送PAUSE报文。此时,PAUSE报文携带的拥塞点信息为下游网络设备的输出端口。网络设备200可以认为该拥塞树的根网络设备为下游网络设备的输出端口。网络设备200的下下游网络设备的输出端口出现拥塞时,下游网络设备会向网络设备200发送PAUSE报文。此时,PAUSE报文携带的拥塞点信息为下下游网络设备的输出端口。网络设备200可以认为该拥塞树的根网络设备为下下游网络设备的输出端口。
如果网络设备200传输的数据报文需要通过下游网络设备的输出端口和下下游网络设备的输出端口时,网络设备200需要将下游网络设备的输出端口出现拥塞对应的根网络设备和下下游网络设备的输出端口出现拥塞对应的根网络设备合并在一起。网络设备200可以将PAUSE报文携带的拥塞点信息更新为下下游网络设备的输出端口。与此同时,网络设备200可以生成MERGE报文,并发送至上游网络设备。上游网络设备基于MERGE报文,将PAUSE报文携带的拥塞点信息更新为下下游网络设备的输出端口,让上游网络设备识别并记录整个数据传输链路中真正造成拥塞的拥塞点。网络设备200可以根据MERGE报文,更新真正的拥塞点信息,减少资源开销,并提升流量调度效率。
本申请中实施例中,网络设备200确定信号报文为RESUME报文时,可以根据RESUME报文指示输出端口恢复向下游网络设备发送数据报文的速度。RESUME报文可以指示网络设备200恢复向下游网络设备发送数据报文的速度,保证上游网络设备的拥塞流量的吞吐量。
本申请中实施例中,网络设备200确定信号报文为MERGE报文时,可以根据MERGE报文将拥塞点信息的指定拥塞点更新为真正出现拥塞的网络设备的输出端口,以识别出真正造成拥塞的拥塞点。然后,网络设备200可以生成MERGE报文,并发送至上游网络设备。上游网络设备基于MERGE报文,将PAUSE报文携带的拥塞点信息更新为下下游网络设备的输出端口,让上游网络设备识别并记录整个数据传输链路中真正造成拥塞的拥塞点。网络设备200可以根据MERGE报文,更新真正的拥塞点信息,减少资源开销,并提升流量调度效率。
如果网络设备200传输的数据报文需要通过下游网络设备的输出端口和下下游网络设备的输出端口时,网络设备200需要将下游网络设备的输出端口出现拥塞对应的根网络设备和下下游网络设备的输出端口出现拥塞对应的根网络设备合并在一起。网络设备200可以将PAUSE报文携带的拥塞点信息更新为下下游网络设备的输出端口。与此同时,网络设备200可以生成MERGE报文,并发送至上游网络设备。上游网络设备基于MERGE报文,将PAUSE报文携带的拥塞点信息更新为下下游网络设备的输出端口,让上游网络设备识别并记录整个数据传输链路中真正造成拥塞的拥塞点。网络设备200可以根据MERGE报文,更新真正的拥塞点信息,减少资源开销,并提升流量调度效率。
本申请中实施例中,网络设备200确定信号报文为DEALLOC报文时,可以根据DEALLOC报文回收CQ集群中下游网络设备的输出端口对应的CQ,可以降低下游网络设备的网络设备200的资源开销。网络设备200可以根据DEALLOC报文,及时回收CQ,以降低网络设备200的资源开销。
本申请中,网络设备200存储有CQ集群的列表。列表的每一列可以与一个CQ绑定关系。列表的一列的bitmap设置为0,表示该列与CQ解除分配。列表的一列的bitmap设置为1,表示该列与CQ绑定关系。在一个实施例中,网络设备200接收到数据报文后,可以基于数据报文确定数据报文后续传输的网络设备。网络设备200基于数据报文后续传输的网络设备对应的CQ,访问列表的CQ的bitmap。网络设备200访问的CQ的bitmap为0时,CQ对应的网络设备不处于拥塞状态,可以将数据报文直接发送至OQ。网络设备200访问的CQ的bitmap为1时,CQ对应的网络设备处于拥塞状态,将数据报文分配到CQ上排队。
网络设备200确定CQ有数据报文在排队时,说明CQ处于暂停状态。网络设备200检测到CQ接触暂停状态时,说明网络设备200接收到RESUME报文,将CQ的状态由处于拥塞状态转换成不处于拥塞状态,解除CQ的暂停状态。或者,网络设备200接收到MERGE报文,将CQ的状态由处于拥塞状态转换成不处于拥塞状态,解除CQ的暂停状态。
网络设备200确定CQ没有处于拥塞状态时,可以按照顺序让CQ的处于队列前部的数据报文出队,并让数据报文转发到CQ下一层CQ进行排队,等待下一层CQ转发。如果CQ下一层为网络设备200的输出端口2211的OQ时,CQ的数据报文直接转发网络设备200的输出端口的OQ进行排队,等待输出端口转发到下游网络设备。
网络设备200将CQ的数据报文转发到其它CQ或OQ后,检测CQ对应的网络设备是否为拥塞树的叶网络设备。网络设备200确定CQ对应的网络设备为拥塞树的叶网络设备,检测CQ的数据报文是否转发完成。网络设备200检测CQ的数据报文转发完成后,可以将CQ集群中的对应CQ删除,降低网络设备200的资源开销。网络设备200将CQ的bitmap设置为0。网络设备200生成DEALLOC报文,并发送给上游网络设备。
网络设备200检测CQ的数据报文没有转发完成后,可以等待CQ的数据报文转发完成,再将CQ集群中的对应CQ删除。网络设备200确定CQ对应的网络设备不是拥塞树的叶网络设备,CQ对应的网络设备可能为根网络设备。此时,网络设备200不需要将CQ集群中的对应CQ删除。
本申请实施例中,网络设备构建拥塞队列集群,拥塞队列集群的每个拥塞队列对应一个出现拥塞的网络设备的输出端口。网络设备接收到数据报文后,确定数据报文后续传输路径的网络设备,并将数据报文分配到后续传输路径出现拥塞的网络设备的输出端口对应的拥塞队列,可以避免拥塞流量与非拥塞流量之间竞争,造成网络设备持续拥塞。
本申请实施例提供了一种网络设备,该网络设备包括收发器和处理器。网络设备具体执行过程如下:
收发器,用于接收数据报文,数据报文携带有路径选择信息,路径选择信息用于指示网络设备选择数据报文从网络设备与目的主机之间进行传输的网络设备信息;基于网络设备信息,将数据报文分配至拥塞队列集群的第一拥塞队列,拥塞队列集群包括多个拥塞队列,多个拥塞队列分别对应网络设备所属的数据中心的出现拥塞的网络设备的输出端口信息,第一拥塞队列为网络设备与目的主机之间出现拥塞的网络设备的输出端口对应的拥塞队列。
在一种实施方式中,处理器,还用于响应于第一拥塞队列不处于暂停状态,将数据报文转发至网络设备的输出队列,暂停状态用于指示拥塞队列停止向下一级拥塞队列或输出队列转发报文。
在一种实施方式中,处理器,还用于响应于网络设备的输出队列的长度处于设定长度范围,转发数据报文。
在一种实施方式中,处理器,还用于获取网络设备的输入端口的字节数量,并检测字节数量是否处于设定范围;响应于字节数量大于设定范围的上限阈值,向上游网络设备发送PAUSE报文,PAUSE报文指示上游网络设备的向网络设备发送报文输出端口对应的拥塞队列处于暂停状态;或者,响应于字节数量小于设定范围的下限阈值,向上游网络设备发送RESUME报文,RESUME报文指示上游网络设备的向网络设备发送报文输出端口对应的拥塞队列解除暂停状态。
在一种实施方式中,处理器,具体用于检测拥塞队列集群是否有第一拥塞队列;响应于拥塞队列集群没有第一拥塞队列,在拥塞队列集群创建第一拥塞队列,并将数据报文分配至第一拥塞队列。
在一种实施方式中,处理器,还用于响应于网络设备的输出端口的输出队列的长度大于设定长度范围的上限阈值,向上游网络设备发送PAUSE报文,PAUSE报文指示上游网络设备的向网络设备发送报文输出端口对应的拥塞队列处于暂停状态。
在一种实施方式中,处理器,还用于响应于网络设备的输出端口的输出队列的长度小于设定长度范围的下限阈值,向上游网络设备发送RESUME报文,RESUME报文指示上游网络设备的向网络设备发送报文输出端口对应的拥塞队列解除暂停状态。
在一种实施方式中,收发器,还用于接收数据包,数据包的报头携带有特定字段;处理器,还用于响应于特定字段与访问控制列表的信号报文字段相同,确定数据包为信号报文。
在一种实施方式中,信号报文为RESUME报文,处理器,还用于响应于RESUME报文,恢复网络设备的拥塞队列发送数据报文。
在一种实施方式中,信号报文为PAUSE报文,处理器,还用于响应于PAUSE报文,暂停网络设备的拥塞队列输出数据报文。
在一种实施方式中,PAUSE报文携带有拥塞点信息,拥塞点信息表示出现拥塞的网络设备的输出端口信息,
处理器,还用于响应于拥塞点信息,在拥塞队列集群创建出现拥塞的网络设备的输出端口对应的拥塞队列。
在一种实施方式中,信号报文为MERGE报文,处理器,还用于响应于MERGE报文,将拥塞点信息记录的出现拥塞的网络设备的输出端口信息更改为下游网络设备的输出端口信息。
在一种实施方式中,处理器,还用于接收到下游网络设备发送的PAUSE报文,向上游网络设备发送MERGE报文,MERGE报文指示上游网络设备将拥塞点信息记录的出现拥塞的网络设备的输出端口信息更改为网络设备的输出端口信息。
在一种实施方式中,信号报文为DEALLOC报文,处理器,还用于响应于DEALLOC报文,将拥塞队列集群的部分拥塞队列删除。
在一种实施方式中,处理器,还用于检测第一拥塞队列的状态;响应于第一拥塞队列的状态没有处于拥塞状态,让第一拥塞队列的部分数据报文出队,并转发到第二拥塞队列或输出队列,第二拥塞队列为网络设备与目的主机之间出现拥塞的网络设备的输出端口对应的拥塞队列、且为第一拥塞队列对应的网络设备的输出端口转发数据报文的下游网络设备的输出端口对应的拥塞队列,拥塞队列包括第二拥塞队列。
在一种实施方式中,处理器,还用于检测第一拥塞队列对应的网络设备是否为拥塞树的叶网络设备、且第一拥塞队列是否有数据报文在排队;拥塞树是指网络设备所属数据中心的出现拥塞的网络设备构成的树状结构,叶网络设备是指除根网络设备以外的网络设备,根网络设备为拥塞树中导致其它网络设备不能传输数据报文的一个网络设备;响应于第一拥塞队列对应的网络设备为叶网络设备、且第一拥塞队列没有数据报文在排队,删除拥塞队列集群的第一拥塞队列,并向上游网络设备发送DEALLOC报文。
在一种实施方式中,信号报文为PAUSE报文,PAUSE报文携带有跳数信息,跳数是指网络设备与根网络设备之间的距离,处理器,还用于基于跳数信息,将数据报文分配到所述网络设备与所述目的主机之间出现拥塞的网络设备的且距离所述网络设备最远的输出端口对应的拥塞队列。
图13为本申请实施例中提供的一种网络设备的结构示意图。如图13所示,网络设备1300包括:总线1310、处理器1320、存储器1330和通信接口1340。处理器1320、存储器1330和通信接口1340之间通过总线1310通信。网络设备1300可以是服务器或终端设备。应理解,本申请不限定网络设备1300中的处理器、存储器的个数。
总线1310可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线1310可以分为地址总线、数据总线、控制总线等。为便于表示,图13中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线1310可包括在网络设备1300各个部件(例如,处理器1320、存储器1330和通信接口1340)之间传送信息的通路。
处理器1320可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器1330可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。处理器1320还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。
存储器1330中存储有可执行的程序代码,处理器1320执行该可执行的程序代码以分别实现前述HCQ选择器2202、信号报文处理单元2203、网络拥塞状态单元2204、拥塞队列CQ/OQ单元2205、CQ状态单元2206、调度器2207、转发单元2208、拥塞/拥塞恢复检测单元2209和信号生成单元2210的功能,从而实现拥塞管理方法。也即,存储器1330上存有用于执行拥塞管理方法的指令。
或者,存储器1330中存储有可执行的代码,处理器1320执行该可执行的代码以分别实现前述网络设备的功能,从而实现拥塞管理方法。也即,存储器1330上存有用于执行拥塞管理方法的指令。
通信接口1340使用例如但不限于网络接口卡、收发器一类的收发模块,来实现网络设备1300与其他设备或通信网络之间的通信。
本申请实施例还提供了一种数据中心。该数据中心包括至少一台网络设备。该网络设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,网络设备也可以是台式机、笔记本电脑或者智能手机、交换机等终端设备。
如图14所示,所述数据中心包括至少一个网络设备1300。数据中心中的一个或多个网络设备1300中的存储器1330中可以存有相同的用于执行拥塞管理方法的指令。
在一些可能的实现方式中,该数据中心中的一个或多个网络设备1300的存储器1330中也可以分别存有用于执行拥塞管理方法的部分指令。换言之,一个或多个网络设备1300的组合可以共同执行用于执行拥塞管理方法的指令。
需要说明的是,数据中心中的不同的网络设备1300中的存储器1330可以存储不同的指令,分别用于执行网络设备的部分功能。也即,不同的网络设备1300中的存储器1330存储的指令可以实现HCQ选择器2202、信号报文处理单元2203、网络拥塞状态单元2204、拥塞队列CQ/OQ单元2205、CQ状态单元2206、调度器2207、转发单元2208、拥塞/拥塞恢复检测单元2209和信号生成单元2210中的一个或多个模块的功能。
在一些可能的实现方式中,数据中心的一个或多个网络设备1300可以通过网络连接。其中,所述网络可以是广域网或局域网等等。图15示出了一种可能的实现方式。如图15所示,网络设备1300A和网络设备1300B之间通过网络进行连接。具体地,通过各个网络设备中的通信接口与所述网络进行连接。在这一类可能的实现方式中,网络设备1300A中的存储器1330中存有执行HCQ选择器2202的功能的指令。同时,网络1100B中的存储器1330中存有执行信号报文处理单元2203、网络拥塞状态单元2204、拥塞队列CQ/OQ单元2205、CQ状态单元2206、调度器2207、转发单元2208、拥塞/拥塞恢复检测单元2209和信号生成单元2210的功能的指令。
图15所示的数据中心之间的连接方式可以是考虑到本申请提供的拥塞管理方法需要的大量地存储数据,因此考虑将信号报文处理单元2203、网络拥塞状态单元2204、拥塞队列CQ/OQ单元2205、CQ状态单元2206、调度器2207、转发单元2208、拥塞/拥塞恢复检测单元2209和信号生成单元2210实现的功能交由网络设备1300B执行。
应理解,图15中示出的网络设备1300A的功能也可以由多个网络设备1300完成。同样,网络设备1300B的功能也可以由多个网络设备1300完成。
本申请实施例还提供了另一种数据中心。该数据中心中各网络设备之间的连接关系可以类似的参考图14和图15所述数据中心的连接方式。不同的是,该数据中心中的一个或多个网络设备1300中的存储器1330中可以存有相同的用于执行拥塞管理方法的指令。
在一些可能的实现方式中,该数据中心中的一个或多个网络设备1300的存储器1330中也可以分别存有用于执行拥塞管理方法的部分指令。换言之,一个或多个网络设备1300的组合可以共同执行用于执行拥塞管理方法的指令。
需要说明的是,数据中心中的不同的网络设备1300中的存储器1330可以存储不同的指令,用于执行数据中心的部分功能。也即,不同的网络设备1300中的存储器1330存储的指令可以实现网络设备中的一个或多个装置的功能。
本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在网络设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个网络设备上运行时,使得至少一个网络设备执行拥塞管理方法。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是网络设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示网络设备执行拥塞管理方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

Claims (35)

1.一种拥塞管理方法,其特征在于,所述方法由网络设备执行,所述方法包括:
接收数据报文,所述数据报文携带有路径选择信息,所述路径选择信息用于指示所述网络设备选择所述数据报文从所述网络设备与目的主机之间进行传输的网络设备信息;
基于所述网络设备信息,将所述数据报文分配至拥塞队列集群的第一拥塞队列,所述拥塞队列集群包括多个拥塞队列,所述多个拥塞队列分别对应所述网络设备所属的数据中心的出现拥塞的网络设备的输出端口信息,所述第一拥塞队列为所述网络设备与所述目的主机之间出现拥塞的网络设备的输出端口对应的拥塞队列。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于所述第一拥塞队列不处于暂停状态,将所述数据报文转发至所述网络设备的输出队列,所述暂停状态用于指示拥塞队列停止向下一级拥塞队列或所述输出队列转发报文。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
响应于所述网络设备的输出队列的长度处于设定长度范围,转发所述数据报文。
4.根据权利要求1-3任意一项所述的方法,其特征在于,在所述接收数据报文之后,所述方法还包括:
获取所述网络设备的输入端口的字节数量,并检测所述字节数量是否处于设定范围;
响应于所述字节数量大于所述设定范围的上限阈值,向上游网络设备发送PAUSE报文,所述PAUSE报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列处于暂停状态;或者,
响应于所述字节数量小于所述设定范围的下限阈值,向所述上游网络设备发送RESUME报文,所述RESUME报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列解除暂停状态。
5.根据权利要求1-4任意一项所述的方法,其特征在于,所述基于所述网络设备信息,将所述数据报文分配至拥塞队列集群的第一拥塞队列,包括:
检测所述拥塞队列集群是否有所述第一拥塞队列;
响应于所述拥塞队列集群没有所述第一拥塞队列,在所述拥塞队列集群创建所述第一拥塞队列,并将所述数据报文分配至所述第一拥塞队列。
6.根据权利要求1-5任意一项所述的方法,其特征在于,所述方法还包括:
响应于所述网络设备的输出端口的输出队列的长度大于所述设定长度范围的上限阈值,向上游网络设备发送PAUSE报文,所述PAUSE报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列处于暂停状态。
7.根据权利要求1-5任意一项所述的方法,其特征在于,所述方法还包括:
响应于所述网络设备的输出端口的输出队列的长度小于所述设定长度范围的下限阈值,向所述上游网络设备发送RESUME报文,所述RESUME报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列解除暂停状态。
8.根据权利要求1-7任意一项所述的方法,其特征在于,在所述接收数据报文之前,所述方法包括:
接收数据包,所述数据包的报头携带有特定字段;
响应于所述特定字段与访问控制列表的信号报文字段相同,确定所述数据包为信号报文。
9.根据权利要求8所述的方法,其特征在于,所述信号报文为RESUME报文,所述方法还包括:
响应于所述RESUME报文,恢复所述网络设备的拥塞队列发送数据报文。
10.根据权利要求8所述的方法,其特征在于,所述信号报文为PAUSE报文,所述方法还包括:
响应于所述PAUSE报文,暂停所述网络设备的拥塞队列输出数据报文。
11.根据权利要求10所述的方法,其特征在于,所述PAUSE报文携带有拥塞点信息,所述拥塞点信息表示出现拥塞的网络设备的输出端口信息,所述方法还包括:
响应于所述拥塞点信息,在所述拥塞队列集群创建所述出现拥塞的网络设备的输出端口对应的拥塞队列。
12.根据权利要求10或11所述的方法,其特征在于,所述信号报文为MERGE报文,所述方法还包括:
响应于所述MERGE报文,将拥塞点信息记录的出现拥塞的网络设备的输出端口信息更改为下游网络设备的输出端口信息。
13.根据权利要求11或12所述的方法,其特征在于,所述方法还包括:
接收到下游网络设备发送的PAUSE报文,向上游网络设备发送MERGE报文,所述MERGE报文指示所述上游网络设备将所述拥塞点信息记录的出现拥塞的网络设备的输出端口信息更改为所述网络设备的输出端口信息。
14.根据权利要求8所述的方法,其特征在于,所述信号报文为DEALLOC报文,
所述方法还包括:
响应于所述DEALLOC报文,将所述拥塞队列集群的部分拥塞队列删除。
15.根据权利要求1-14任意一项所述的方法,其特征在于,所述方法还包括:
检测所述第一拥塞队列的状态;
响应于所述第一拥塞队列的状态没有处于拥塞状态,让所述第一拥塞队列的部分数据报文出队,并转发到第二拥塞队列或所述输出队列,所述第二拥塞队列为所述网络设备与所述目的主机之间出现拥塞的网络设备的输出端口对应的拥塞队列、且为所述第一拥塞队列对应的网络设备的输出端口转发所述数据报文的下游网络设备的输出端口对应的拥塞队列,所述拥塞队列包括所述第二拥塞队列。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:
检测所述第一拥塞队列对应的网络设备是否为拥塞树的叶网络设备、且所述第一拥塞队列是否有数据报文在排队;所述拥塞树是指所述网络设备所属数据中心的出现拥塞的网络设备构成的树状结构,所述叶网络设备是指除根网络设备以外的网络设备,所述根网络设备为所述拥塞树中导致其它网络设备不能传输数据报文的一个网络设备;
响应于所述第一拥塞队列对应的网络设备为所述叶网络设备、且所述第一拥塞队列没有数据报文在排队,删除所述拥塞队列集群的所述第一拥塞队列,并向上游网络设备发送DEALLOC报文。
17.根据权利要求8-16任意一项所述的方法,其特征在于,所述信号报文为PAUSE报文,所述PAUSE报文携带有跳数信息,所述跳数是指所述网络设备与所述根网络设备之间的距离,所述方法还包括:
基于所述跳数信息,将所述数据报文分配到所述网络设备与所述目的主机之间出现拥塞的且距离所述网络设备最远的网络设备的输出端口对应的拥塞队列。
18.一种网络设备,其特征在于,包括收发器和处理器,
所述收发器,用于接收数据报文,所述数据报文携带有路径选择信息,所述路径选择信息用于指示所述网络设备选择所述数据报文从所述网络设备与目的主机之间进行传输的网络设备信息;
基于所述网络设备信息,将所述数据报文分配至拥塞队列集群的第一拥塞队列,所述拥塞队列集群包括多个拥塞队列,所述多个拥塞队列分别对应所述网络设备所属的数据中心的出现拥塞的网络设备的输出端口信息,所述第一拥塞队列为所述网络设备与所述目的主机之间出现拥塞的网络设备的输出端口对应的拥塞队列。
19.根据权利要求18所述的网络设备,其特征在于,所述处理器,还用于响应于所述第一拥塞队列不处于暂停状态,将所述数据报文转发至所述网络设备的输出队列,所述暂停状态用于指示拥塞队列停止向下一级拥塞队列或所述输出队列转发报文。
20.根据权利要求18或19所述的网络设备,其特征在于,所述处理器,还用于响应于所述网络设备的输出队列的长度处于设定长度范围,转发所述数据报文。
21.根据权利要求18-20任意一项所述的网络设备,其特征在于,所述处理器,还用于获取所述网络设备的输入端口的字节数量,并检测所述字节数量是否处于设定范围;
响应于所述字节数量大于所述设定范围的上限阈值,向上游网络设备发送PAUSE报文,所述PAUSE报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列处于暂停状态;或者,
响应于所述字节数量小于所述设定范围的下限阈值,向所述上游网络设备发送RESUME报文,所述RESUME报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列解除暂停状态。
22.根据权利要求18-21任意一项所述的网络设备,其特征在于,所述处理器,具体用于检测所述拥塞队列集群是否有所述第一拥塞队列;
响应于所述拥塞队列集群没有所述第一拥塞队列,在所述拥塞队列集群创建所述第一拥塞队列,并将所述数据报文分配至所述第一拥塞队列。
23.根据权利要求18-22任意一项所述的网络设备,其特征在于,所述处理器,还用于响应于所述网络设备的输出端口的输出队列的长度大于所述设定长度范围的上限阈值,向上游网络设备发送PAUSE报文,所述PAUSE报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列处于暂停状态。
24.根据权利要求18-22任意一项所述的网络设备,其特征在于,所述处理器,还用于响应于所述网络设备的输出端口的输出队列的长度小于所述设定长度范围的下限阈值,向所述上游网络设备发送RESUME报文,所述RESUME报文指示所述上游网络设备的向所述网络设备发送报文输出端口对应的拥塞队列解除暂停状态。
25.根据权利要求18-24任意一项所述的网络设备,其特征在于,所述收发器,还用于接收数据包,所述数据包的报头携带有特定字段;
所述处理器,还用于响应于所述特定字段与访问控制列表的信号报文字段相同,确定所述数据包为信号报文。
26.根据权利要求25所述的网络设备,其特征在于,所述信号报文为RESUME报文,所述处理器,还用于响应于所述RESUME报文,恢复所述网络设备的拥塞队列发送数据报文。
27.根据权利要求25所述的网络设备,其特征在于,所述信号报文为PAUSE报文,所述处理器,还用于响应于所述PAUSE报文,暂停所述网络设备的拥塞队列输出数据报文。
28.根据权利要求27所述的网络设备,其特征在于,所述PAUSE报文携带有拥塞点信息,所述拥塞点信息表示出现拥塞的网络设备的输出端口信息,
所述处理器,还用于响应于所述拥塞点信息,在所述拥塞队列集群创建所述出现拥塞的网络设备的输出端口对应的拥塞队列。
29.根据权利要求27或28所述的网络设备,其特征在于,所述信号报文为MERGE报文,
所述处理器,还用于响应于所述MERGE报文,将拥塞点信息记录的出现拥塞的网络设备的输出端口信息更改为下游网络设备的输出端口信息。
30.根据权利要求28或29所述的网络设备,其特征在于,所述处理器,还用于接收到下游网络设备发送的PAUSE报文,向上游网络设备发送MERGE报文,所述MERGE报文指示所述上游网络设备将所述拥塞点信息记录的出现拥塞的网络设备的输出端口信息更改为所述网络设备的输出端口信息。
31.根据权利要求25所述的网络设备,其特征在于,所述信号报文为DEALLOC报文,
所述处理器,还用于响应于所述DEALLOC报文,将所述拥塞队列集群的部分拥塞队列删除。
32.根据权利要求18-31任意一项所述的网络设备,其特征在于,所述处理器,还用于检测所述第一拥塞队列的状态;
响应于所述第一拥塞队列的状态没有处于拥塞状态,让所述第一拥塞队列的部分数据报文出队,并转发到第二拥塞队列或所述输出队列,所述第二拥塞队列为所述网络设备与所述目的主机之间出现拥塞的网络设备的输出端口对应的拥塞队列、且为所述第一拥塞队列对应的网络设备的输出端口转发所述数据报文的下游网络设备的输出端口对应的拥塞队列,所述拥塞队列包括所述第二拥塞队列。
33.根据权利要求32所述的网络设备,其特征在于,所述处理器,还用于检测所述第一拥塞队列对应的网络设备是否为拥塞树的叶网络设备、且所述第一拥塞队列是否有数据报文在排队;所述拥塞树是指所述网络设备所属数据中心的出现拥塞的网络设备构成的树状结构,所述叶网络设备是指除根网络设备以外的网络设备,所述根网络设备为所述拥塞树中导致其它网络设备不能传输数据报文的一个网络设备;
响应于所述第一拥塞队列对应的网络设备为所述叶网络设备、且所述第一拥塞队列没有数据报文在排队,删除所述拥塞队列集群的所述第一拥塞队列,并向上游网络设备发送DEALLOC报文。
34.根据权利要求25-33任意一项所述的网络设备,其特征在于,所述信号报文为PAUSE报文,所述PAUSE报文携带有跳数信息,所述跳数是指所述网络设备与所述根网络设备之间的距离,
所述处理器,还用于基于所述跳数信息,将所述数据报文分配到所述网络设备与所述目的主机之间出现拥塞的且距离所述网络设备最远的网络设备的输出端口对应的拥塞队列。
35.一种数据中心,其特征在于,包括:
网络总线,
多个如权利要求17-34任意一项所述的网络设备,所述多个网络设备通过网络总线建立通达信连接。
CN202310266871.7A 2023-03-10 2023-03-10 一种拥塞管理方法、网络设备和数据中心 Pending CN118631737A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310266871.7A CN118631737A (zh) 2023-03-10 2023-03-10 一种拥塞管理方法、网络设备和数据中心

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310266871.7A CN118631737A (zh) 2023-03-10 2023-03-10 一种拥塞管理方法、网络设备和数据中心

Publications (1)

Publication Number Publication Date
CN118631737A true CN118631737A (zh) 2024-09-10

Family

ID=92598853

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310266871.7A Pending CN118631737A (zh) 2023-03-10 2023-03-10 一种拥塞管理方法、网络设备和数据中心

Country Status (1)

Country Link
CN (1) CN118631737A (zh)

Similar Documents

Publication Publication Date Title
US11818037B2 (en) Switch device for facilitating switching in data-driven intelligent network
CN111201757B (zh) 在底层网络上动态配置的网络接入节点虚拟结构
CN109412964B (zh) 报文控制方法及网络装置
US9705827B2 (en) Methods and apparatus for virtual channel flow control associated with a switch fabric
US8248930B2 (en) Method and apparatus for a network queuing engine and congestion management gateway
US8520522B1 (en) Transmit-buffer management for priority-based flow control
US7596627B2 (en) Methods and apparatus for network congestion control
CN115152193A (zh) 针对ip路由数据中心网络使用自适应路由和基于拥塞提示的节流改进端到端拥塞反应
US20150215226A1 (en) Device and Method for Packet Processing with Memories Having Different Latencies
CN111669336B (zh) 用于无损以太网的低成本拥塞隔离
US20080298397A1 (en) Communication fabric bandwidth management
US10728156B2 (en) Scalable, low latency, deep buffered switch architecture
CN109995608B (zh) 网络速率计算方法和装置
WO2019232760A1 (zh) 一种数据交换方法、数据交换节点及数据中心网络
US9154455B1 (en) Method and system for determining drop eligibility of network information
CN114531399B (zh) 一种内存阻塞平衡方法、装置、电子设备和存储介质
CN118631737A (zh) 一种拥塞管理方法、网络设备和数据中心
CN114208131B (zh) 流量均衡方法、网络设备及电子设备
CN114095431A (zh) 队列管理的方法和网络设备
US20240056385A1 (en) Switch device for facilitating switching in data-driven intelligent network
US20230254259A1 (en) System And Method For Using Dynamic Thresholds With Route Isolation For Heterogeneous Traffic In Shared Memory Packet Buffers
CN118740752A (zh) 流量控制方法和装置
WO2020143509A1 (zh) 传输数据的方法和网络设备
CN116170377A (zh) 一种数据处理方法以及相关设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication