CN115473851A - 数据流的处理方法、网络节点和系统 - Google Patents

数据流的处理方法、网络节点和系统 Download PDF

Info

Publication number
CN115473851A
CN115473851A CN202110572357.7A CN202110572357A CN115473851A CN 115473851 A CN115473851 A CN 115473851A CN 202110572357 A CN202110572357 A CN 202110572357A CN 115473851 A CN115473851 A CN 115473851A
Authority
CN
China
Prior art keywords
port
network node
port queue
queue
pfc
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
CN202110572357.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 CN202110572357.7A priority Critical patent/CN115473851A/zh
Priority to PCT/CN2021/140389 priority patent/WO2022247257A1/zh
Priority to EP21942820.8A priority patent/EP4325802A1/en
Publication of CN115473851A publication Critical patent/CN115473851A/zh
Priority to US18/510,315 priority patent/US20240089213A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1515Non-blocking multistage, e.g. Clos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/122Avoiding congestion; Recovering from congestion by diverting traffic away from congested entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/29Flow control; Congestion control using a combination of thresholds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling
    • H04L47/564Attaching a deadline to packets, e.g. earliest due date first
    • H04L47/566Deadline varies as a function of time spent in the queue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1553Interconnection of ATM switching modules, e.g. ATM switching fabrics
    • H04L49/1569Clos switching fabrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3018Input queuing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供了一种数据流的处理方法、网络节点和系统。该方法包括:第一网络节点对第一端口的第一端口队列进行基于优先级的流量控制PFC检测,确定满足第一预设条件,其中,该满足第一预设条件包括:连续N个第一时间段进行检测,且在每个第一时间段进行检测时都存在该第一端口队列向第二网络节点发送第一PFC帧的数量大于第一阈值,以及该第一端口队列接收来自该第二网络节点的一个或多个数据包的个数小于第二阈值,该第一PFC帧用于指示该第二网络节点暂停发送该第一端口队列中的所有数据流,N为正整数;该第一网络节点暂停该第一端口队列向该第二网络节点发送该第一PFC帧。该方法有利于更好地满足源节点发送的数据流的业务需求。

Description

数据流的处理方法、网络节点和系统
技术领域
本申请涉及网络通信技术领域,并且更具体地,涉及一种数据流的处理方法、网络节点和系统。
背景技术
以太网(ethernet)是目前应用最广泛的计算机局域网组网技术。为了解决以太网中出现拥塞时可能导致的丢包现象,目前网络中通常采用优先级流量控制(priority flowcontrol,PFC)机制实现无损网络。
利用PFC机制对网络中的拥塞进行控制时,当网络中的一个节点(例如,转发节点)接收的数据流过多导致该一个节点发生拥塞时,该一个节点会持续向接收数据流的方向发送PFC帧,以使该数据流的源节点在该一个节点发生拥塞至拥塞消失前这段时间内暂停发送该数据流,从而缓解该拥塞情况。但在该过程中,当数据流的源节点接收到大量PFC帧后容易导致该源节点中断发送该数据流,难以更好地满足源节点发送的数据流的业务需求。
发明内容
本申请提供一种数据流的处理方法、网络节点和系统,该方法有利于更好地满足源节点发送的数据流的业务需求。
第一方面,提供了一种数据流的处理方法,该方法包括:
第一网络节点对第一端口的第一端口队列进行基于优先级的流量控制PFC检测,确定满足第一预设条件,其中,该满足第一预设条件包括:连续N个第一时间段进行检测,且在每个第一时间段进行检测时都存在该第一端口队列向第二网络节点发送第一PFC帧的数量大于第一阈值,以及该第一端口队列接收来自该第二网络节点的一个或多个数据包的个数小于第二阈值,该第一PFC帧用于指示该第二网络节点暂停发送该第一端口队列中的所有数据流,N为正整数;
该第一网络节点暂停该第一端口队列向该第二网络节点发送该第一PFC帧。
可选的,上述满足第一预设条件中的,该第一端口队列接收来自该第二网络节点的一个或多个数据包的个数小于第二阈值,还可以替换为,该第一端口队列接收来自该第二网络节点的一个或多个数据流的流量小于第二阈值。
其中,满足第一预设条件可以理解为,在连续N个第一时间段内都存在:第一网络节点的第一端口的第一端口队列向第二网络节点发送了大量的第一PFC帧,导致该第一端口队列发生拥塞,从而使得第一网络节点通过该第一端口队列接收来自第二网络节点的一个或多个数据包的个数小于第二阈值(例如,第二阈值可以等于0或2兆比特每秒(MB/s))。在本申请实施例中,当第一端口队列向第二网络节点发送第一PFC帧的数量大于第一阈值时,可以认为该第一端口队列发生PFC风暴现象。基于此,上述第一网络节点对第一端口的第一端口队列进行PFC检测,确定满足第一预设条件,此时,第一网络节点可以确定第一端口队列发生PFC风暴现象。其中,第一PFC帧用于指示第二网络节点暂停发送第一端口队列中的所有数据流,可以理解的是,第一端口队列转发的所有数据流中的至少一个数据流导致第一端口队列发生拥塞而产生第一PFC帧,且该至少一个数据流的源节点为第二网络节点。例如,第一端口队列转发的所有数据流包括数据流#1和数据流#2,数据流#1的源节点是第二网络节点,由于数据流#1的大量堆积导致第一端口队列发生拥塞而产生第一PFC帧。其中,第二网络节点可以是第一端口队列转发的所有数据流的源节点,第二网络节点也可以是第一端口队列转发的所有数据流中的部分数据流的源节点,第二网络节点还可以不是第一端口队列转发的所有数据流的源节点。
上述技术方案中,第一网络节点在连续N个第一时间段对第一端口的第一端口队列进行PFC检测,确定满足第一预设条件后(即,确定第一端口队列发生PFC风暴现象后),第一网络节点暂停该第一端口队列向第二网络节点发送第一PFC帧,该第一PFC帧用于指示第二网络节点暂停发送该第一端口队列转发的所有数据流,使得第二网络节点可以继续发送该第一端口队列转发的所有数据流,有利于更好地满足源节点发送的数据流的业务需求。
结合第一方面,在第一方面的某些实现方式中,该第二网络节点是该第一端口队列中的第一数据流的源节点,且该第一数据流与该第一PFC帧对应,该第一网络节点暂停该第一端口队列向该第二网络节点发送该第一PFC帧的时间为第二时间段,其中,该第二时间段与该连续N个第一时间段连续,且该第二时间段是该连续N个第一时间段之后的时间段,且满足如下关系:
(N×T1+T2)<(Tx_timeout)
其中,N×T1表示该连续N个第一时间段,T1表示该N个第一时间段中的任意一个第一时间段,T2表示该第二时间段,Tx_timeout表示该第二网络节点发送数据流(即,第一数据流)的最大超时时间。可以理解的是,当第二网络节点发送一个数据流的超时时间大于Tx_timeout时,该第二网络节点会中断发送该一个数据流。换句话说,当第二网络节点发送一个数据流的超时时间小于等于Tx_timeout时,该第二网络节点不会中断发送该一个数据流。(N×T1+T2)可以理解为,第一网络节点对发生PFC风暴的第一端口的第一端口队列进行修复的时间。对上述Tx_timeout的具体取值不作具体限定。例如,Tx_timeout的值可以根据第二网络设备中的网络适配器(又称为网卡)的类型确定。或者,Tx_timeout的值可以是根据人工经验确定的。
其中,第一PFC帧与第一数据流对应,可以理解为,第一网络节点的第一端口的第一端口队列接收来自第二网络节点发送的大量第一数据流,导致该第一端口队列发生拥塞产生了第一PFC帧,或者,第一网络节点的第一端口的第一端口队列接收来自第二网络节点发送的大量第一数据流,导致该第一端口队列缓存超过预设阈值产生了第一PFC帧。
上述技术方案中,第二网络节点是第一端口队列中的第一数据流的源节点,第一网络节点通过控制对第一端口队列发生PFC风暴进行修复的时间(即,(N×T1+T2))不大于Tx_timeout,可以避免第一数据流的源节点(即,第二网络节点)发送第一数据流(即,第一数据流)时发生业务中断,可以更好地满足源节点发送的数据流的业务需求。
结合第一方面,在第一方面的某些实现方式中,在该第一网络节点暂停该第一端口队列向该第二网络节点发送该第一PFC帧之后,该方法还包括:
该第一网络节点的该第一端口队列继续向该第二网络节点发送该第一PFC帧;
该第一网络节点确定满足该第一预设条件,该第一网络节点关闭该第一端口队列的PFC功能。
上述技术方案中,第一网络节点对第一端口队列发生的PFC风暴现象进行修复后,在一段时间内再次确定第一端口队列发生PFC风暴现象,第一网络节点可以关闭第一端口队列PFC功能,避免第一端口队列向第二网络节点发送大量第一PFC帧导致源节点发送数据流时发生业务中断,有利于更好地满足源节点发送的数据流的业务需求。
结合第一方面,在第一方面的某些实现方式中,该第一网络节点还包括第二端口和第三端口,该第二端口与该第三端口不是同一个端口,该第二端口是与该第二网络节点连接的端口,且该第二网络节点是第二数据流的目的节点,
该方法还包括:
响应于满足第二预设条件,该第一网络节点将从该第三端口的第二端口队列流入,且从该第二端口的第二端口队列流出的该第二数据流的优先级由第一优先级调整为第二优先级,以使调整后的该第二数据流从该第三端口的第三端口队列流入,且从该第二端口的第三端口队列流出,其中,该第三端口队列为具有第二优先级的第二数据流对应的端口队列,该第三端口的第三端口队列在第四时间段内发送的PFC帧的数目小于第四阈值,该第二端口的第三端口队列在第三时间段内接收的PFC帧的数目小于第三阈值。
其中,第三端口的第三端口队列在第四时间段内发送的PFC帧的数目小于第四阈值,可以认为第三端口的第三端口队列在第四时间段内未发生PFC风暴现象。同样的,该第二端口的第三端口队列在第三时间段内接收的PFC帧的数目小于第三阈值,可以认为第二端口的第三端口队列在第三时间段内未发生PFC风暴现象。对第三阈值,第四阈值与第一阈值的取值可以相同,也可以不相同。
上述技术方案中,第一网络节点可以通过调整第二数据流的优先级,以将第二数据流调整至未发生PFC风暴现象的端口队列中,有利于更好地满足第二数据流的业务需求,同时还能够避免调整前的第二数据流对应的第二PFC帧在网络中扩散,有利于提高网络的整体性能。当调整前转发第二数据流的端口队列同时还用于转发其它数据流时,该方法还可以避免调整前转发第二数据流的端口队列中的其它数据流受到该第二数据流的迫害,进一步满足其它数据流的业务需求。
结合第一方面,在第一方面的某些实现方式中,
该满足第二预设条件包括:该第二端口的第二端口队列在该第三时间段内接收到该第二网络节点发送的第二PFC帧的数量大于该第三阈值,以及该第三端口的第二端口队列在该第四时间段内向第三网络节点发送的该第二PFC帧的数量大于该第四阈值,其中,该第二PFC帧用于指示该第三网络节点暂停发送该第三端口的第二端口队列中的所有数据流,该第一网络节点是该第三网络节点和该第二网络节点之间的中间节点。
其中,满足第二预设条件可以理解为,第二端口的第二端口队列在第三时间段内接收到大量第二PFC帧,导致第二端口的第二端口队列拥塞后,又通过第三端口的第二端口队列在第四时间段内向第三网络节点发送大量第二PFC。也就是说,由于第二端口的第二端口队列发生PFC风暴,进一步导致第三端口的第二端口队列也发生PFC风暴。
结合第一方面,在第一方面的某些实现方式中,
在该第一网络节点将从该第三端口的第二端口队列流入,且从该第二端口的第二端口队列流出的该第二数据流的优先级由第一优先级调整为第二优先级之前,该方法还包括:
该第一网络节点对以下端口的端口队列进行PFC检测:该第三端口的第二端口队列,该第二端口的第二端口队列,该第三端口的第三端口队列,以及该第二端口的第三端口队列。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:
该第一网络节点向该第二网络节点发送第一通知报文,其中,该第二通知报文用于通知该第二网络节点开启接收具有该第二优先级的该第二数据流的端口队列的PFC功能。
上述技术方案中,第一网络节点对第二数据流所在的端口队列进行调整后,第一网络节点能够主动通知第二网络节点开启接收具有该第二优先级的该第二数据流的端口队列的PFC功能,以使第二网络节点能够继续无损传输第二数据流,有利于更好地满足第二数据流的业务需求。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:
响应于满足第三预设条件,该第一网络节点将从该第三端口的第三端口队列流入且,从该第二端口的第三端口队列流出的第二数据流的优先级由该第二优先级调整为该第一优先级,以使调整后的该第二数据流从该第三端口的第二端口队列流入,且从该第二端口的第二端口队列流出,其中,该满足第三预设条件包括:在第五时间段内连续M次检测,且每次检测都存在该第二端口的第二端口队列接收到的PFC帧小于该第三阈值,M为正整数;
该第一网络节点向该第二网络节点发送第二通知报文,该第二通知报文用于通知该第二网络节点关闭接收具有该第二优先级的该第二数据流的端口队列的PFC功能。
其中,满足第三预设条件可以理解为,在第五时间段内连续M次检测,且每次检测都存在该第二端口的第二端口队列的PFC风暴消失,以及第三端口的第二端口队列的PFC风暴也消失。换句话说,满足第三预设条件还可以理解为,调整端口队列前的第二数据流所在的端口队列的PFC风暴消失。
上述技术方案中,当调整端口队列前的第二数据流所在的端口队列的PFC风暴消失时,第一网络节点可以将第二数据流从当前的端口队列切换至调整端口队列前第二数据流所在的端口队列,避免调整后的端口队列(即,当前的端口队列)中的其它数据流和第二数据流之间的相互影响,有利于更好地满足第二数据流和其它数据流的业务需求。
可选的,如果不满足该第三预设条件,该第一网络节点还可以向该第二网络节点发送第三通知报文,其中,第三通知报文用于通知第二网络节点重新启动第二网络节点的网络适配器(又称为网卡)。
其中,上述第一通知报文中用于通知第二网络节点开启端口队列的PFC功能的字段,第二通知报文中用于通知第二网络节点关闭端口队列的PFC功能的字段,以及第三通知报文中用于通知第二网络节点重新启动第二网络节点的网络适配器的字段,可以是现有标准、协议、规范中已有报文格式中的保留字段或允许自定义的字段,也可以是实现相同功能的其他自定义格式。
结合第一方面,在第一方面的某些实现方式中,该第一网络节点为交换机或路由器,该第二网络节点为服务器。
第二方面,提供了一种数据流的处理方法,该方法包括:
响应于满足第二预设条件,第一网络节点将从第三端口的第二端口队列流入,且从第二端口的第二端口队列流出的第二数据流的优先级由第一优先级调整为第二优先级,以使调整后的该第二数据流从该第三端口的第三端口队列流入,且从该第二端口的第三端口队列流出,其中,该第二数据流的目的节点为第二网络节点,该第二端口是与该第二网络节点连接的端口,该第三端口队列为具有第二优先级的第二数据流对应的端口队列,该第二端口与该第三端口不是同一个端口,该第三端口的第三端口队列在第四时间段内发送的PFC帧的数目小于第四阈值,该第二端口的第三端口队列在第三时间段内接收的PFC帧的数目小于第三阈值。
其中,第三端口的第三端口队列在第四时间段内发送的PFC帧的数目小于第四阈值,可以认为第三端口的第三端口队列在第四时间段内未发生PFC风暴现象。同样的,该第二端口的第三端口队列在第三时间段内接收的PFC帧的数目小于第三阈值,可以认为第二端口的第三端口队列在第三时间段内未发生PFC风暴现象。第三阈值,第四阈值与第一阈值的取值可以相同,也可以不相同。
上述技术方案中,第一网络节点可以通过调整第二数据流的优先级,以将第二数据流调整至未发生PFC风暴现象的端口队列中,有利于更好地满足第二数据流的业务需求,同时还能够避免调整前的第二数据流对应的第二PFC帧在网络中扩散,有利于提高网络的整体性能。当调整前转发第二数据流的端口队列同时还用于转发其它数据流时,该方法还可以避免调整前转发第二数据流的端口队列中的其它数据流受到该第二数据流的迫害,进一步满足其它数据流的业务需求。
结合第二方面,在第二方面的某些实现方式中,
该满足第二预设条件包括:该第二端口的第二端口队列在该第三时间段内接收到该第二网络节点发送的第二PFC帧的数量大于该第三阈值,且该第三端口的第二端口队列在该第四时间段内向第三网络节点发送的该第二PFC帧的数量大于该第四阈值,其中,该第二PFC帧用于指示该第三网络节点暂停发送该第三端口的第二端口队列中的所有数据流,该第一网络节点是该第三网络节点和该第二网络节点之间的中间节点。
其中,满足第二预设条件可以理解为,第二端口的第二端口队列在第三时间段内接收到大量第二PFC帧,导致第二端口的第二端口队列拥塞后,又通过第三端口的第二端口队列在第四时间段内向第三网络节点发送大量第二PFC。也就是说,由于第二端口的第二端口队列发生PFC风暴,进一步导致第三端口的第二端口队列也发生PFC风暴。
结合第二方面,在第二方面的某些实现方式中,
在该第一网络节点将从该第三端口的第二端口队列流入,且从该第二端口的第二端口队列流出的该第二数据流的优先级由第一优先级调整为第二优先级之前,该方法还包括:
该第一网络节点对以下端口的端口队列进行PFC检测:该第三端口的第二端口队列,该第二端口的第二端口队列,该第三端口的第三端口队列,以及该第二端口的第三端口队列。
结合第二方面,在第二方面的某些实现方式中,该方法还包括:
该第一网络节点向该第二网络节点发送第一通知报文,其中,该第一通知报文用于通知该第二网络节点开启接收具有该第二优先级的该第二数据流的端口队列的PFC功能。
上述技术方案中,第一网络节点对第二数据流所在的端口队列进行调整后,第一网络节点能够主动通知第二网络节点开启接收具有该第二优先级的该第二数据流的端口队列的PFC功能,以使第二网络节点能够继续无损传输第二数据流,有利于更好地满足第二数据流的业务需求。
结合第二方面,在第二方面的某些实现方式中,该方法还包括:
响应于满足第三预设条件,该第一网络节点将从该第三端口的第三端口队列流入且,从该第二端口的第三端口队列流出的第二数据流的优先级由该第二优先级调整为该第一优先级,以使调整后的该第二数据流从该第三端口的第二端口队列流入,且从该第二端口的第二端口队列流出,其中,该满足第三预设条件包括:在第五时间段内连续M次检测,且每次检测都存在该第二端口的第二端口队列接收到的PFC帧小于该第三阈值,M为正整数;
该第一网络节点向该第二网络节点发送第二通知报文,该第二通知报文用于通知该第二网络节点关闭接收具有该第二优先级的该第二数据流的端口队列的PFC功能。
其中,满足第三预设条件可以理解为,在第五时间段内连续M次检测,且每次检测都存在该第二端口的第二端口队列的PFC风暴消失,以及第三端口的第二端口队列的PFC风暴也消失。换句话说,满足第三预设条件还可以理解为,调整端口队列前的第二数据流所在的端口队列的PFC风暴消失。
上述技术方案中,当调整端口队列前的第二数据流所在的端口队列的PFC风暴消失时,第一网络节点可以将第二数据流从调整后的端口队列切换至调整前第二数据流所在的端口队列,避免调整后的端口队列(即,当前的端口队列)中的其它数据流和第二数据流之间的相互影响,有利于更好地满足第二数据流和其它数据流的业务需求。
可选的,如果不满足该第三预设条件,该第一网络节点还可以向该第二网络节点发送第三通知报文,其中,第三通知报文用于通知第二网络节点重新启动第二网络节点的网络适配器(又称为网卡)。
其中,上述第一通知报文中用于通知第二网络节点开启端口队列的PFC功能的字段,第二通知报文中用于通知第二网络节点关闭端口队列的PFC功能的字段,以及第三通知报文中用于通知第二网络节点重新启动第二网络节点的网络适配器的字段,可以是现有标准、协议、规范中已有报文格式中的保留字段或允许自定义的字段,也可以是实现相同功能的其他自定义格式。
结合第二方面,在第二方面的某些实现方式中,该第一网络节点为交换机或路由器,该第二网络节点为服务器。
第三方面,提供了一种第一网络节点,其特征在于,该第一网络节点包括处理单元和收发单元,
该处理单元,用于对第一端口的第一端口队列进行基于优先级的流量控制PFC检测,确定满足第一预设条件,其中,该满足第一预设条件包括:连续N个第一时间段进行检测,且在每个第一时间段进行检测时都存在该第一端口队列向第二网络节点发送第一PFC帧的数量大于第一阈值,以及该第一端口队列接收来自该第二网络节点的一个或多个数据包的个数小于第二阈值,该第一PFC帧用于指示该第二网络节点暂停发送该第一端口队列中的所有数据流,N为正整数;
该收发单元,用于暂停该第一端口队列向该第二网络节点发送该第一PFC帧。
结合第三方面,在第三方面的某些实现方式中,该第二网络节点是该第一端口队列中的第一数据流的源节点,且该第一数据流与该第一PFC帧对应,该暂停该第一端口队列向该第二网络节点发送该第一PFC帧的时间为第二时间段,其中,该第二时间段与该连续N个第一时间段连续,且该第二时间段是该连续N个第一时间段之后的时间段,且满足如下关系:
(N×T1+T2)<(Tx_timeout)
其中,N×T1表示该连续N个第一时间段,T1表示该N个第一时间段中的任意一个第一时间段,T2表示该第二时间段,Tx_timeout表示该第二网络节点发送数据流的最大超时时间。可以理解的是,当第二网络节点发送一个数据流的超时时间大于Tx_timeout时,该第二网络节点会中断发送该一个数据流。换句话说,当第二网络节点发送一个数据流的超时时间小于等于Tx_timeout时,该第二网络节点不会中断发送该一个数据流。(N×T1+T2)可以理解为,第一网络节点对发生PFC风暴的第一端口的第一端口队列进行修复的时间。对上述Tx_timeout的具体取值不作具体限定。例如,Tx_timeout的值可以根据第二网络设备中的网络适配器(又称为网卡)的类型确定。或者,Tx_timeout的值可以是根据人工经验确定的。
其中,第一PFC帧与第一数据流对应,可以理解为,第一网络节点的第一端口的第一端口队列接收来自第二网络节点发送的大量第一数据流,导致该第一端口队列发生拥塞产生了第一PFC帧,或者,第一网络节点的第一端口的第一端口队列接收来自第二网络节点发送的大量第一数据流,导致该第一端口队列缓存超过预设阈值产生了第一PFC帧。
结合第三方面,在第三方面的某些实现方式中,
该收发单元,还用于通过第一端口队列继续向该第二网络节点发送该第一PFC帧;
该处理单元,还用于确定满足该第一预设条件,关闭该第一端口队列的PFC功能。
结合第三方面,在第三方面的某些实现方式中,该第一网络节点还包括第二端口和第三端口,该第二端口与该第三端口不是同一个端口,该第二端口是与该第二网络节点连接的端口,且该第二网络节点是第二数据流的目的节点,
该处理单元还用于:
响应于满足第二预设条件,将从该第三端口的第二端口队列流入,且从该第二端口的第二端口队列流出的该第二数据流的优先级由第一优先级调整为第二优先级,以使调整后的该第二数据流从该第三端口的第三端口队列流入,且从该第二端口的第三端口队列流出,其中,该第三端口队列为具有第二优先级的第二数据流对应的端口队列,该第三端口的第三端口队列在第四时间段内发送的PFC帧的数目小于第四阈值,该第二端口的第三端口队列在第三时间段内接收的PFC帧的数目小于第三阈值。
结合第三方面,在第三方面的某些实现方式中,
该满足第二预设条件包括:该第二端口的第二端口队列在该第三时间段内接收到该第二网络节点发送的第二PFC帧的数量大于该第三阈值,以及该第三端口的第二端口队列在该第四时间段内向第三网络节点发送的该第二PFC帧的数量大于该第四阈值,其中,该第二PFC帧用于指示该第三网络节点暂停发送该第三端口的第二端口队列中的所有数据流,该第一网络节点是该第三网络节点和该第二网络节点之间的中间节点。
结合第三方面,在第三方面的某些实现方式中,
该处理单元还用于对以下端口的端口队列进行PFC检测:该第三端口的第二端口队列,该第二端口的第二端口队列,该第三端口的第三端口队列,以及该第二端口的第三端口队列。
结合第三方面,在第三方面的某些实现方式中,
该收发单元还用于向该第二网络节点发送第一通知报文,其中,该第二通知报文用于通知该第二网络节点开启接收具有该第二优先级的该第二数据流的端口队列的PFC功能。
结合第三方面,在第三方面的某些实现方式中,
该处理单元还用于:响应于满足第三预设条件,将从该第三端口的第三端口队列流入且,从该第二端口的第三端口队列流出的第二数据流的优先级由该第二优先级调整为该第一优先级,以使调整后的该第二数据流从该第三端口的第二端口队列流入,且从该第二端口的第二端口队列流出,其中,该满足第三预设条件包括:在第五时间段内连续M次检测,且每次检测都存在该第二端口的第二端口队列接收到的PFC帧小于该第三阈值,M为正整数;
该收发单元还用于向该第二网络节点发送第二通知报文,该第二通知报文用于通知该第二网络节点关闭接收具有该第二优先级的该第二数据流的端口队列的PFC功能。
可选的,如果不满足该第三预设条件,该处理单元还用于向该第二网络节点发送第三通知报文,其中,第三通知报文用于通知第二网络节点重新启动第二网络节点的网络适配器(又称为网卡)。
结合第三方面,在第三方面的某些实现方式中,该第一网络节点为具有转发功能的网络设备,如交换机或路由器,该第二网络节点为服务器。
应理解的是,关于第三方面或第三方面的各种实现方式所带来的技术效果,可以参考对于第一方面或第一方面的各种实现方式的技术效果的介绍,此处不再详细赘述。
第四方面,提供了一种第一网络节点,其特征在于,该第一网络节点包括处理单元,
该处理单元用于:响应于满足第二预设条件,将从第三端口的第二端口队列流入,且从第二端口的第二端口队列流出的第二数据流的优先级由第一优先级调整为第二优先级,以使调整后的该第二数据流从该第三端口的第三端口队列流入,且从该第二端口的第三端口队列流出,其中,该第二数据流的目的节点为第二网络节点,该第二端口是与该第二网络节点连接的端口,该第三端口队列为具有第二优先级的第二数据流对应的端口队列,该第二端口与该第三端口不是同一个端口,该第三端口的第三端口队列在第四时间段内发送的PFC帧的数目小于第四阈值,该第二端口的第三端口队列在第三时间段内接收的PFC帧的数目小于第三阈值。
结合第四方面,在第四方面的某些实现方式中,
该满足第二预设条件包括:该第二端口的第二端口队列在该第三时间段内接收到该第二网络节点发送的第二PFC帧的数量大于该第三阈值,且该第三端口的第二端口队列在该第四时间段内向第三网络节点发送的该第二PFC帧的数量大于该第四阈值,其中,该第二PFC帧用于指示该第三网络节点暂停发送该第三端口的第二端口队列中的所有数据流,该第一网络节点是该第三网络节点和该第二网络节点之间的中间节点。
结合第四方面,在第四方面的某些实现方式中,
该处理单元还用于对以下端口的端口队列进行PFC检测:该第三端口的第二端口队列,该第二端口的第二端口队列,该第三端口的第三端口队列,以及该第二端口的第三端口队列。
结合第四方面,在第四方面的某些实现方式中,该第一网络节点还包括收发单元,
该收发单元用于向该第二网络节点发送第一通知报文,其中,该第一通知报文用于通知该第二网络节点开启接收具有该第二优先级的该第二数据流的端口队列的PFC功能。
结合第四方面,在第四方面的某些实现方式中,
该处理单元还用于:响应于满足第三预设条件,将从该第三端口的第三端口队列流入且,从该第二端口的第三端口队列流出的第二数据流的优先级由该第二优先级调整为该第一优先级,以使调整后的该第二数据流从该第三端口的第二端口队列流入,且从该第二端口的第二端口队列流出,其中,该满足第三预设条件包括:在第五时间段内连续M次检测,且每次检测都存在该第二端口的第二端口队列接收到的PFC帧小于该第三阈值,M为正整数。
结合第四方面,在第四方面的某些实现方式中,
该收发单元还用于向该第二网络节点发送第二通知报文,该第二通知报文用于通知该第二网络节点关闭接收具有该第二优先级的该第二数据流的端口队列的PFC功能。
结合第四方面,在第四方面的某些实现方式中,该第一网络节点为交换机或路由器,该第二网络节点为服务器。
应理解的是,关于第四方面或第四方面的各种实现方式所带来的技术效果,可以参考对于第二方面或第二方面的各种实现方式的技术效果的介绍,此处不再详细赘述。
第五方面,本申请提供了一种第一网络节点,第一网络节点具有实现第一方面或第二方面,以及第一方面或第二方面中任一种可能的实现方式中的方法的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的单元。
第六方面,本申请提供一种第一网络节点或者其他可实现上述第一网络节点功能的组合器件、部件等,包括至少一个处理器和通信接口。该至少一个处理器,用于执行计算机程序或指令,以使得该第一网络节点可以实现上述第一方面或第二方面,以及第一方面或第二方面中任一种可能实现方式中的通信方法。
可选地,该第一网络节点还包括至少一个存储器,该至少一个存储器与该至少一个处理器耦合,该计算机程序或指令存储在该至少一个存储器中。其中,该存储器可以与该处理器集成在一起,或者该存储器与处理器分离设置。
在一种实现方式中,该第一网络节点为第一网络节点。当该第一网络节点为第一网络节点时,通信接口可以是收发器,或,输入/输出接口。
在另一种实现方式中,该第一网络节点为芯片或芯片系统。当该第一网络节点为芯片或芯片系统时,通信接口可以是该芯片或芯片系统上的输入/输出接口、接口电路、输出电路、输入电路、管脚或相关电路等。处理器也可以体现为处理电路或逻辑电路。
在另一种实现方式中,该第一网络节点为配置于第一网络节点中的芯片或芯片系统。
可选地,收发器可以为收发电路。可选地,输入/输出接口可以为输入/输出电路。
第七方面,提供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序包括用于执行上述第一方面或第二方面,以及上述第一方面或第二方面的任意可能的实现方式中的方法的指令。
第八方面,提供了一种芯片系统,包括至少一个处理器和接口;所述至少一个所述处理器,用于调用并运行计算机程序,以使所述芯片系统执行上述第一方面或第二方面,以及上述第一方面或第二方面的任意可能的实现方式中的方法的指令。
上述芯片系统可以是片上系统(system on chip,SOC),也可以是基带芯片等,其中基带芯片可以包括处理器、信道编码器、数字信号处理器、调制解调器和接口模块等。
第九方面,提供了一种系统,所述系统包括前述的第一网络节点。
附图说明
图1是适用于本申请实施例的一种网络架构100的示意图。
图2是适用于本申请实施例的一种网络架构200的示意图。
图3是基于图1所示的网络架构100描述网络中发生PFC风暴现象的示意图。
图4是本申请实施例提供的一种数据流的处理方法400的示意性流程图。
图5是适用于本申请实施例的第一PFC帧的结构的示意图。
图6是本申请实施例的一个应用场景的示意图。
图7是本申请实施例提供的一种数据流的处理方法700的示意性流程图。
图8是本申请实施例提供的另一种数据流的处理方法800的示意性流程图。
图9是适用于本申请实施例的一种通知报文的格式示意图。
图10是适用于本申请实施例的另一种通知报文的格式示意图。
图11是适用于本申请实施例的又一种通知报文的格式示意图。
图12是本申请实施例的一个应用场景的示意图。
图13是本申请实施例提供的一种数据流的处理方法1300的示意性流程图。
图14是本申请实施例提供的一种数据流的处理方法1400的示意性流程图。
图15是本申请实施例提供的一种第一网络节点1400的结构示意图。
图16是本申请实施例提供的一种第一网络节点1500的硬件结构示意图。
图17是本申请实施例提供的一种系统1600的结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。应理解,本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。
在本申请实施例中,拥塞和不拥塞是相对而言的,拥塞的情况和不拥塞的情况可以由用户根据实际需要进行设置,不同的网络结构拥塞的标准也可以不相同,具体可以根据实际情况进行设置。本文中的关于拥塞和不拥塞的判断阂值或标准仅为举例,并不用于限定本发明。可以根据拥塞次数、以及发送速率、队列缓存大小,等确定是否拥塞。拥塞可以理解为,队列已满或即将满。在本申请实施例中,服务器(Server)可以简记为Svr。例如,服务器1可以简记为Svr1,服务器2可以简记为Svr2,服务器3可以简记为Svr3等。
为便于更好地理解本申请实施例提供的数据流的处理方法,首先,结合图1和图2介绍适用于本申请实施例的网络架构。
图1是适用于本申请实施例的一种网络架构100的示意图。
如图1所示,该网络架构100又可称为叶脊(leaf-spine)网络系统。该网络架构100中包括脊节点、与该一个脊节点通信的至少两个叶节点。可选地,该网络架构100中还包括支持与每个叶节点通信的至少一个源节点。其中,对脊节点的数量不作具体限定,图1中以包括2个脊节点101为例示出,但并不构成限定。与每个脊节点101通信的叶节点的数量也不作具体限定,图1中以与每个脊节点101通信的叶节点为2个叶节点102为例示出。且每个叶节点与一个或多个源节点通信,图1中以与每个叶节点102通信的源节点为3个源节点103为例示出。
如图1所示,该网络架构100采用两层网络拓扑框架:接入层—核心层。其中,核心层中部署2个脊节点101,接入层中部署与脊节点通信的2个叶节点102,与叶节点通信的源节点部署103在接入层之下。源节点103也可称为主机节点。网络架构100中的脊节点101和叶节点102均用于转发数据流量,一个源节点通过与该源节点通信的叶节点和脊节点与另一个叶节点下的源节点通信。
在实际应用中,脊节点101和叶节点102均可部署为具备数据转发功能的网络设备,例如交换机、路由器等设备。源节点103可部署为终端设备,其包括但不限于手机、平板电脑(table personal computer)、个人数字助理(personal digital assistant,PDA)、移动上网装置(mobile internet device,MID)、可穿戴式设备(wearable device)、车载设备以及其他支持和网络通信的设备。
图2是适用于本申请实施例另一种网络结构200的示意图。
如图2所示,该网络架构200又可称为叶脊(leaf-spine)网络系统。该网络架构200中包括脊节点、与该一个脊节点通信的至少两个叶节点。可选地,该网络架构200中还包括支持与每个叶节点通信的至少一个源节点。其中,对脊节点的数量不作具体限定,图2中以包括2个脊节点301为例示出,但并不构成限定。与每个脊节点通信的叶节点的数量也不作具体限定,图2中以与每个脊节点201通信的叶节点为4个叶节点202为例示出。且每个叶节点203与一个或多个源节点通信,图2中以与每个叶节点203通信的源节点为1个源节点204为例示出。
如图2所示,该网络架构200采用两层网络拓扑框架:接入层—汇聚层—核心层。其中,核心层中部署2个脊节点301,汇聚层中部署与脊节点通信的4个叶节点202,接入层中部署与汇聚层中的叶节点通信的4个叶节点203,与接入层的叶节点203通信的源节点部署在接入层之下。每个源节点204也可称为主机节点。网络架构200中的每个脊节点和接入层的每个叶节点均用于转发数据流量,汇聚层中的每个叶节点用来连接核心层和接入层,处于中间位置。汇聚层中的每个叶节点能够处理来自接入层中的每个叶节点的所有通信量,并提供到核心层的上行链路。
在实际应用中,脊节点201,叶节点202和叶节点203均可部署为具备数据转发功能的网络设备,例如交换机、路由器等设备。源节点204可部署为终端设备,其包括但不限于手机、平板电脑(table personal computer)、个人数字助理(personal digital assistant,PDA)、移动上网装置(mobile internet device,MID)、可穿戴式设备(wearable device)、车载设备以及其他支持和网络通信的设备。
应理解,上述图1和图2仅为示意,并不对本申请实施例适用的网络架构构成任何限定。可选的,适用于本申请实施例的网络架构还可以是其它类型的数据中心网络(datacenter network,DCN)、城域网络(metropolitan area network,MAN)、广域网络或园区网络等。可选的,以图1所示的网络架构100为例,该网络架构100还可以包括更多数目的脊节点101,叶节点102和源节点103。可选的,以图2所示的网络架构200为例,该网络架构200还可以包括更多数目的脊节点201,叶节点202,叶节点203和源节点204。
当前,网络(如图1或图2所示的网络架构)中的发送端和接收端之间通过网络设备转发数据包实现通信的过程中,通信网络中的硬件设备(包括网络设备或接收端)故障、传输链路故障和/或路由表异常,均可能会导致数据包丢失,且任一数据包的丢失都会造成大量数据包的重传,严重影响数据传输性能。因此,在上述通信过程中,通常开启PFC机制以保证不丢包。但在采用PFC机制的网络中,在一段时间内如果网络中的某个设备的端口连续发送PFC帧的数量超过预设阈值,那么会导致该某个设备的端口发生PFC风暴。进一步,如果该某个设备的端口的PFC风暴在整个网络中继续传播,则会导致整个网络形成PFC风暴(又称为“拥塞树”),从而对通信网络中的业务产生极大影响。
下面,以图3所示的通信网络,介绍上述本申请实施例中的PFC风暴的概念。
示例性的,图3是基于图1所示的网络架构100描述网络中发生PFC风暴现象的示意图。如图3所示通信网络中包括:网络设备A,网络设备B,网络设备C和网络设备D。其中,网络设备A和网络设备B为上层网络设备,网络设备C和网络设备D为下层网络设备。例如,在二层网络中(例如图1所示的网络),网络设备A和网络设备B为汇聚层网络设备,网络设备C和网络设备D为接入层网络设备。又例如,在三层网络设备中(例如图2所示的网络),网络设备A和网络设备B为核心网络设备,网络设备C和网络设备D为汇聚层网络设备;或者,网络设备A和网络设备B为汇聚层网络设备,网络设备C和网络设备D为接入层网络设备。下面,以图3中的网络设备A和网络设备B为汇聚层网络设备,网络设备C和网络设备D为接入层网络设备为例进行说明。参见图3,网络设备C与服务器M连接,网络设备D与服务器N连接。假设服务器N向服务器M发送的数据流#1的正常传输路径为:服务器N→网络设备D→网络设备A→网络设备C→服务器M。当服务器M发生故障时,网络设备C无法将该数据流#1传输至服务器M,此时为了防止丢包,网络设备C会向网络设备B传输该数据流#1,网络设备B再向网络设备D传输该数据流#1,最后由网络设备D将该数据流#1传回服务器N。若网络设备A、网络设备B、网络设备C和网络设备D中用于缓存数据流#1的出端口队列同时发生拥塞,此后,网络设备D向网络设备B发送的PFC帧超过预设阈值,网络设备B向网络设备C发送的PFC帧超过预设阈值,网络设备C向网络设备A发送的PFC帧超过预设阈值,网络设备A向网络设备D发送的PFC帧超过预设阈值,即可以认为通信网络中的各个网络设备中用于缓存该数据流#1的出端口队列都发生PFC风暴,此时,该通信网络中发生了PFC风暴现象。
本申请提供了一种数据流的处理方法,该方法可以避免源节点发送数据流时发生业务中断,有利于满足源节点发送的数据流的业务需求。
下面,结合图4至图14,详细介绍本申请提供的数据流的处理方法。
图4是本申请实施例提供的一种数据流的处理方法400的示意性流程图。
如图4所示,该方法400包括步骤410和步骤420。该方法400可以但不限于应用于上述图2和上述图3所示的网络架构中。当方法400应用于网络架构100中时,方法400中的第一网络节点可以是脊节点101或叶节点102,第二网络节点可以是源节点103。当方法400应用于网络架构200中时,方法400中的第一网络节点可以是脊节点201,叶节点202或叶节点203,第二网络节点可以是源节点204。下面,详细介绍步骤410和步骤420。
步骤410,第一网络节点对第一端口的第一端口队列进行基于优先级的流量控制PFC检测,确定满足第一预设条件,其中,满足第一预设条件包括:连续N个第一时间段进行检测,且在每个第一时间段进行检测时都存在第一端口队列向第二网络节点发送第一PFC帧的数量大于第一阈值,以及第一端口队列接收来自第二网络节点的一个或多个数据包的个数小于第二阈值,第一PFC帧用于指示第二网络节点暂停发送第一端口队列中的所有数据流,N为正整数。
对上述第一网络节点和上述第二网络节点的之间的结构不作具体限定。在一个示例中,第一网络节点和第二网络节点是直接相连的两个网络节点。例如,第一网络节点可以为网络架构100中的叶节点102,第二网络节点可以为源节点103。在另一个示例中,第一网络节点和第二网络节点不是直接相连的两个网络节点,此时第一网络节点和第二网络节之间还存在其它网络节点。例如,第一网络节点为网络架构200中的叶节点202,第二网络节点为源节点204,叶节点203为叶节点202和源节点204之间的中间节点。对第一网络节点的第一端口的第一端口队列转发的数据流的类型和数目不作限定。例如,该第一端口的第一端口队列可以仅用于转发一种类型的数据流。例如,该第一端口的第一端口队列也可以用于转发多种类型的数据流。
在本申请实施例中,当第一端口队列向第二网络节点发送第一PFC帧的数量大于第一阈值时,可以认为该第一端口队列发生PFC风暴现象。基于此,上述第一网络节点对第一端口的第一端口队列进行PFC检测,确定满足第一预设条件,此时,第一网络节点可以确定第一端口队列发生PFC风暴现象。
其中,满足第一预设条件可以理解为,在连续N个第一时间段内都存在:第一网络节点的第一端口的第一端口队列向第二网络节点发送了大量的第一PFC帧,导致该第一端口队列发生拥塞,从而使得第一网络节点通过该第一端口队列接收来自第二网络节点的一个或多个数据包的个数小于第二阈值(例如,第二阈值可以等于0或2兆比特每秒(MB/s))。基于此,第一网络节点的第一端口的第一端口队列会持续向第二网络节点发送大量第一PFC帧,直到该第一端口队列的拥塞消失后,该第一端口队列会停止向第二网络节点发送第一PFC帧。相应地,第二网络节点接收到一个第一PFC帧后,会对该一个第一PFC帧进行解析并执行相应操作。其中,对第一时间段,以及第一网络节点的第一端口队列发生拥塞至拥塞消失的这段时间的关系不作具体限定。例如,上述第一时间段可以是第一网络节点的第一端口队列发生拥塞至拥塞消失的这段时间。例如,第一时间段也可以是该第一端口队列发生拥塞至拥塞消失的这段时间内的一段时间。
在一种实现方式中,第一PFC帧用于指示第二网络节点暂停发送第一端口队列中的所有数据流,第二网络节点可以是第一端口队列中的所有数据流的源节点,且第一端口队列转发的所有数据流中的至少一个数据流导致第一端口队列发生拥塞或第一端口队列缓存超过预设阈值,从而产生第一PFC帧。例如,第一端口队列转发的所有数据流包括数据流#1和数据流#2,数据流#1和数据流#2的源节点是第二网络节点,由于数据流#1的大量堆积导致第一端口队列发生拥塞而产生第一PFC帧。
在另一种实现方式中,第一PFC帧用于指示第二网络节点暂停发送第一端口队列中的所有数据流,第二网络节点可以是第一端口队列中的部分数据流的源节点,且该部分数据流中的至少一个数据流导致第一端口队列发生拥塞,从而产生第一PFC帧。例如,第一端口队列转发的所有数据流包括数据流#1,数据流#2和数据流#3,第二网络节点是数据流#1和数据流#2的源节点,由于数据流#1的大量堆积导致第一端口队列发生拥塞而产生第一PFC帧。
上述步骤410中,第一网络节点对第一端口的第一端口队列进行PFC检测,确定在第一时间段内满足第一预设条件,即第一网络节点确定第一端口的第一端口队列发生了PFC风暴现象。一个端口队列发生PFC风暴现象,可以理解为,该一个端口队列在预设时间内连续一次或多次检测存在该一个端口队列发送的PFC帧的数量超过预设阈值,以及该一个端口接收到的数据包的个数小于预设阈值。其中,对第一网络节点的第一端口的第一端口队列转发的数据流的类型和数目不作限定。例如,该第一端口的第一端口队列可以仅用于转发一种类型的数据流。例如,该第一端口的第一端口队列也可以用于转发多种类型的数据流。
上述步骤410中,第一PFC帧用于指示第二网络节点暂停发送第一端口队列中的所有数据流,可以理解的是第一PFC帧中包括第一端口的第一端口队列中的所有数据流的标识,以及第二网络节点暂停发送该第一端口队列中的所有数据流的时间。例如,第一端口的第一端口队列仅用于转发数据流#1,那么第一PFC帧中包括数据流#1的标识,以及第二网络节点暂停发送该数据流#1的时间。示例性的,适用于本申请实施例的第一PFC帧的结构如图5所示。图5所示的PFC帧包括如下字段:
目的地址(destination address,DA):6字节,用于表示数据帧的目的MAC地址。
源地址(source address,SA):6字节,用于表示数据帧的源MAC地址。
以太网帧类型(ethetype):2字节,用于表示帧的类型。
控制码(control opcode):2字节,用于表示控制码。
反压使能向量(prioirty enable vector,PEV):2字节,表示为反压使能向量,其中第1个字节直接设置为0;第2个字节E(N)的8位分别与PFC机制中定义的8个优先级队列对应,表示指示是否需要暂停发送优先级队列N上的数据;当E(N)=1时表示需要暂停发送优先级队列N上的数据,暂停的时间为接下来的time(N);当E(N)=0时表示不需要暂停发送优先级队列N上的数据,N为0至7的整数。
暂停定时器(time(0)-time(7)):各2字节,为暂停定时器,指示暂停相应优先级队列的数据发送的时长,其单位可以是以当前物理芯片的传输速率传输512位数据所用的时间;比如PEV中的E(3)=1且time(3)=8,该PFC帧指示的是暂停优先级队列3上的数据发送,暂停时长是以当前物理芯片的传输速率发送8×512=4096位的数据所需的时间。
预留字段(pad):26字节。
循环冗余校验(cyclic redundancy check,CRC):4字节。
在本申请实施例中,第一网络节点可以为具有转发功能的网络设备,如交换机或路由器,第二网络节点可以为服务器。
步骤420,第一网络节点暂停第一端口队列向第二网络节点发送第一PFC帧。
其中,第一网络节点暂停第一端口队列向第二网络节点发送第一PFC帧。相应地,第二网络节点接收到第一PFC帧后,第二网络节点会暂停发送所述第一端口队列中的所有数据流。
在一些实现方式中,第二网络节点是第一端口队列中的第一数据流的源节点,且第一数据流与第一PFC帧对应,第一网络节点暂停第一端口队列向第二网络节点发送第一PFC帧的时间为第二时间段,其中,第二时间段与连续N个第一时间段连续,且第二时间段是连续N个第一时间段之后的时间段,且满足如下关系:
(N×T1+T2)<(Tx_timeout)
其中,N×T1表示连续N个第一时间段,T1表示N个第一时间段中的任意一个第一时间段,T2表示第二时间段,Tx_timeout表示第二网络节点发送数据流的最大超时时间。可以理解的是,当第二网络节点发送的一个数据流的超时时间大于Tx_timeout时,该第二网络节点会中断发送该一个数据流。换句话说,第二网络节点发送的一个数据流的超时时间小于等于Tx_timeout时,该第二网络节点不会中断发送该一个数据流。(N×T1+T2)可以理解为,第一网络节点对发生PFC风暴的第一端口的第一端口队列进行修复的时间。对上述Tx_timeout的具体取值不作具体限定。例如,Tx_timeout的值可以根据第二网络设备中的网络适配器(又称为网卡)的类型确定。或者,Tx_timeout的值可以是根据人工经验确定的。可以理解的是,当第二网络节点发送一个数据流超时的一段时间大于Tx_timeout时,第二网络节点会中断发送该一个数据流,从而导致该一个数据流对应的业务发生中断。
其中,第一PFC帧与第一数据流对应,可以理解为,第一网络节点的第一端口的第一端口队列接收来自第二网络节点发送的大量第一数据流,导致该第一端口队列发生拥塞产生了第一PFC帧,或者,第一网络节点的第一端口的第一端口队列接收来自第二网络节点发送的大量第一数据流,导致该第一端口队列缓存超过预设阈值产生了第一PFC帧。
可选的,在上述步骤420之后第一网络节点还可以执行如下步骤:
第一网络节点的第一端口队列继续向第二网络节点发送第一PFC帧;
第一网络节点确定满足第一预设条件,第一网络节点关闭第一端口队列的PFC功能。上述方法400中以每个网络节点的端口队列转发数据流为例进行介绍,上述数据流还可以替换为数据包括,报文或数据帧等描述。
在本申请实施例中,第一网络节点在第一时间段内对第一端口的第一端口队列进行检测,确定第一端口队列发生PFC风暴现象后,第一网络节点在第二时间段内暂停第一端口队列向第二网络节点发送第一PFC帧,该第一PFC帧用于指示第二网络节点暂停发送第一网络节点的第一端口的第一端口队列转发的所有数据流,使得第二网络节点可以继续发送第一端口队列转发的所有数据流,有利于更好地满足源节点发送的数据流的业务需求。具体的,当第二网络节点是第一端口队列中的第一数据流的源节点,第一网络节点通过控制对第一端口队列发生PFC风暴进行修复的时间(即,(N×T1+T2))不大于Tx_timeout,可以避免第一数据流的源节点(即,第二网络节点)发送第一数据流(即,第一数据流)时发生业务中断,可以更好地满足源节点发送的数据流的业务需求。
下面结合图6和图7的具体例子,更加详细地描述本申请图4所描述的实施例。应注意,这些例子仅仅是为了帮助本领域技术人员更好地理解本申请实施例,而非要将申请实施例限制于所示例的具体数值或具体场景。本领域技术人员根据下面所给出的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。
图6是本申请实施例的一个应用场景的示意图。
如图6所示,源端服务器(即,数据流#1的源节点)Svr1向目的服务器Svr2(即,数据流#1的目的节点)发送数据流#1的正常传输路径为:节点S21,节点S11,节点S22,Svr2。其中,转发数据流#1的每个节点(例如,节点S21)可以是交换机或路由器。在图6中,S21的端口#1的端口队列#1发生拥塞(队列已满或即将满),为缓解拥塞S21会向Svr1发送大量PFC帧#1,该PFC帧#1用于指示Svr1暂停发送S21的端口#1的端口队列#1中的所有数据流。当S21的端口#1的端口#1的拥塞消失时,S21不会继续向Svr1发送PFC帧#1。
应注意,上述图6所示的连接方式仅只是示意,节点S21和服务器Svr1之间不必直接相连,也可以通过一层或多层交换机或路由器间接相连(如图2所示的网络架构)。另外,节点S22和服务器Svr2之间不必直接相连,也可以通过一层或多层交换机或路由器间接相连(如图2所示的网络架构)。
下面以图6所示的应用场景为例,结合图7,介绍本申请实施例提供的数据流的处理方法400的一个具体的实施例。
图7是本申请实施例提供的一种数据流的处理方法700的示意性流程图。如图7所示,该方法700包括步骤710至步骤760,下面详细介绍步骤710至步骤760。
可以理解的是,图7中的Svr1为上述方法400中的第二网络节点的一例,S21为上述方法400中的第一网络节点的一例,数据流#1为上述方法400中的第一端口的第一端口队列转发的数据流的一例,端口#1为上述方法400中的第一端口的一例,端口队列#1为上述方法400中的第一端口队列的一例,PFC帧#1为上述方法400中的第一PFC帧的一例,预设条件#1为上述方法400中的第一预设条件的一例,时间段#1为上述方法400中的第一时间段的一例,时间段#2为上述方法400中的第二时间段的一例。
步骤710,Svr1发送的数据流#1通过S21,S11和S22转发,以使Svr2接收到数据流#1。
其中,转发流程包括:源端服务器(即,数据流#1的源节点)Svr1向目的服务器Svr2(即,数据流#1的目的节点)发送数据流#1的正常传输路径为:节点S21,节点S11,节点S12,节点S22,Svr2。具体的,S21的端口#1的端口队列#1接收来自Svr1的数据流#1。
步骤720,S21确定接收数据流#1的端口#1的端口队列#1发生拥塞。
其中,S21包括但不限于根据端口#1的端口队列#1的拥塞次数、发送速率、或队列缓存大小等方式,确定该端口队列#1发生拥塞。在本申请实施例中,一个端口队列发生拥塞可以理解为,该一个端口队列已满或即将满。
在本申请实施中,对端口#1的端口队列#1转发的数据流的优先级的类型不作具体限定。在一个示例中,该端口队列#1仅用于转发一种优先级的数据流。例如,端口队列#1仅用于转发优先级为0的数据流,此时数据流#1的优先级为0。在另一个示例中,端口队列#1可以用于转发多种优先级的数据流。例如,端口队列#1可以用于转发优先级为0至优先级为7的数据流,此时,数据流#1的优先级为优先级0至优先级7中的任意一个优先级。
可以理解的是,在S21确定端口队列#1的拥塞未消失之前S21会持续向Svr1发送PFC帧#1。相应地,Svr1每接收到一个PFC帧#1后会执行相应操作。为便于描述,将端口队列#1发生拥塞至端口队列#1拥塞消失这段时间记为时间段#3。即,在时间段#3内会执行步骤730,该步骤730具体可以包括步骤731,步骤732,步骤733,步骤734,……。也就是说,步骤730中可以包括:S21通过端口#1的端口队列#1发送PFC帧#1的步骤(如步骤731和步骤733等),以及Svr1暂停发送端口#1的端口队列#1转发的所有数据流一段时间的步骤(如步骤732和步骤734等)。示例性的,图7中以S21每发送一个PFC帧#1,Svr1接收到该一个PFC帧#1后执行相应操作为例示出,下面具体介绍步骤731和步骤732。应理解的是,图7中还可以包括更多的步骤731或步骤733。相应地,图7中还可以包括更多的步骤733或步骤734。
步骤731,S21通过端口#1的端口队列#1向Svr1发送PFC帧#1。
其中,PFC帧#1用于指示Svr1暂停发送端口#1的端口队列#1中的所有数据流。PFC帧#1中还携带有端口#1的端口队列#1转发的所有数据流的标识和暂停时间。该PFC帧#1的具体结构可以为上文中图5所示的PFC帧结构。
可以理解的是,该PFC帧#1只针对S21的端口#1的端口队列#1转发的数据流反压,而不针对整个端口#1反压。也就是说,端口#1中的除去端口队列#1之外的其它端口队列不受PFC帧#1反压的影响。
步骤732,Svr1暂停向S21发送端口#1的端口队列#1转发的所有数据流。
其中,S21的端口#1的端口队列#1转发的所有数据流包括数据流#1。Svr1对接收来自S21的PFC帧#1进行识别得到端口#1的端口队列#1的标识和暂停时间,Svr1在这个暂停时间内暂停向S21发送端口队列#1转发的所有数据流。
可以理解的是,Svr1暂停向S21发送端口#1的端口队列#1转发的所有数据流后,由于该端口队列#1发生拥塞,在该端口队列#1的拥塞消失之前S21会持续向Svr1发送PFC帧#1。
步骤740,S21确定满足预设条件#1。
其中,满足预设条件#1包括:连续N个时间段#1进行检测,且在每个时间段#1进行检测时都存在端口队列#1向Svr1发送第一PFC帧的数量大于第一阈值,以及端口队列#1接收来自Svr1的一个或多个数据包的个数小于第二阈值,PFC帧#1用于指示Svr1暂停发送端口队列#1中的所有数据流,N为正整数。对第一阈值和第二阈值的大小不作具体限定。
其中,连续N个时间段#1是包括S21的端口#1的端口队列#1发生拥塞至拥塞消失这段时间的一段时间。
步骤750,S21在时间段#2内暂停向Svr1发送PFC帧#1。
其中,时间段#2与连续N个时间段#1连续,时间段#2是连续N个时间段#1之后的时间段,且可以满足如下关系:
(N×T1+T2)<(Tx_timeout)
其中,N×T1表示连续N个时间段#1,T1表示时间段#1,T2表示时间段#2,Tx_timeout表示Svr1发送数据流的最大超时时间。可以理解的是,当Svr1发送一个数据流的超时时间大于Tx_timeout时,该Svr1会中断发送该一个数据流。换句话说,当Svr1发送一个数据流的超时时间小于等于Tx_timeout时,该Svr1不会中断发送该一个数据流。对上述Tx_timeout的具体取值不作具体限定。例如,Tx_timeout的值可以根据Svr1中的网络适配器(又称为网卡)的类型确定。或者,Tx_timeout的值可以是根据人工经验确定的。可以理解的是,当Svr1发送一个数据流超时的时间大于Tx_timeout时,Svr1会中断发送该一个数据流。
步骤760,Svr1在时间段#2后向S21发送端口#1的端口队列#1转发的所有数据流。
可选的,在上述步骤710至上述步骤760之后,S21还可以执行如下步骤:
S21的端口#1的端口队列#1继续向Svr1发送第一PFC帧;
S21确定满足预设条件#1,S21关闭端口#1的端口队列#1的PFC功能。
本申请实施例中,S21在转发数据流#1的端口#1的端口队列#1发生PFC风暴的情况下,可以对该端口队列#1发生的PFC风暴进行检测、修复和控制,能够避免Svr1接收到S21发送的大量PFC帧#1而导致Svr1发生业务中断,有利于更好地满足Svr1发送的数据流#1的业务需求。
上面结合图4至图7详细介绍了本申请实施例提供的一种数据流的处理方法。下面结合图8至图13,详细介绍本申请实施例提供的另一种数据流的处理方法。
图8是本申请实施例提供的另一种数据流的处理方法800的示意性流程图。
如图8所示,该方法800包括步骤810。可选的,该方法800还可以包括步骤820。下面,详细介绍步骤810和步骤820。
步骤810,响应于满足第二预设条件,第一网络节点将从第三端口的第二端口队列流入,且从第二端口的第二端口队列流出的第二数据流的优先级由第一优先级调整为第二优先级,以使调整后的第二数据流从第三端口的第三端口队列流入,且从第二端口的第三端口队列流出,其中,第二数据流的目的节点为第二网络节点,第二端口是与第二网络节点连接的端口,第三端口队列为具有第二优先级的第二数据流对应的端口队列,第二端口与第三端口不是同一个端口,第三端口的第三端口队列在第四时间段内发送的PFC帧的数目小于第四阈值,第二端口的第三端口队列在第三时间段内接收的PFC帧的数目小于第三阈值。
上述步骤810中,第一网络节点是接入层的转发设备,如第一网络节点可以是上述图1所示的网络架构100中的叶节点102,此时,第二网络节点可以是源节点103。如第一网络节点也可以是上述图2所示的网络架构200中的叶节点203,此时,第二网络节点可以是源节点204。其中,第一网络节点的第三端口可以是与服务器直接连接的端口,第三端口也可以是与转发设备(如,交换机或路由器)直接连接的端口。上述步骤810中的第二网络节点是第二数据流的目的节点,具体的该第二网络节点可以是服务器,该服务器记为服务器#1。在此情况下,当第一网络节点的第三端口是与服务器连接的端口时,该服务器记为服务器#2,其中,服务器#1与服务器#2不是同一个服务器。
在一些实现方式中,上述满足第二预设条件包括:第二端口的第二端口队列在第三时间段内接收到第二网络节点发送的第二PFC帧的数量大于第三阈值,以及第三端口的第二端口队列在第四时间段内向第三网络节点发送的第二PFC帧的数量大于第四阈值,其中,第二PFC帧用于指示第三网络节点暂停发送第三端口的第二端口队列中的所有数据流,第一网络节点是第三网络节点和第二网络节点之间的中间节点。
其中,第二端口的第二端口队列在第三时间段内接收到第二网络节点发送的第二PFC帧的数量大于第三阈值,可以认为该第二端口的第二端口队列在第三时间段内发生PFC风暴现象。同样的,第三端口的第二端口队列在第四时间段内向第三网络节点发送的第二PFC帧的数量大于第四阈值,可以认为该第三端口的第二端口队列在第四时间段内发生PFC风暴现象。第三阈值的取值与第四阈值的取值可以相同,也可以不相同。满足第二预设条件可以理解为,第二端口的第二端口队列在第三时间段内接收到大量第二PFC帧,导致第二端口的第二端口队列拥塞后,又通过第三端口的第二端口队列在第四时间段内向第三网络节点发送大量第二PFC。也就是说,由于第二端口的第二端口队列发生PFC风暴,进一步导致第三端口的第二端口队列也发生PFC风暴。
上述步骤810中,第三端口的第三端口队列在第四时间段内发送的PFC帧的数目小于第四阈值,可以认为第三端口的第三端口队列在第四时间段内未发生PFC风暴现象。同样的,上述第二端口的第三端口队列在第三时间段内接收的PFC帧的数目小于第三阈值,可以认为第二端口的第三端口队列在第三时间段内未发生PFC风暴现象。其中,第三阈值的取值与第四阈值的取值可以相同,也可以不相同。
上述步骤810中,调整优先级前,具有第一优先级的第二数据流通过第一网络节点的第三端口的第二端口队列流入,且从第二端口的第二端口队列流出。调整优先级后,具有第二优先级的第二数据流通过第一网络节点的第三端口的第三端口队列流入,且从第二端口的第三端口队列流出。也就是说,具有第一优先级的第二数据流对应的端口队列是第二端口队列,具有第二优先级的第二数据流对应的端口队列是第三端口队列。其中,第一优先级和第二优先级不相同,对第一优先级和第二优先级的具体大小关系不作限定,即仅需保证这两个优先级对应的同一个端口中的不同的端口队列即可。例如,第一优先级可以大于第二优先级,或者第一优先级也可以小于第二优先级。举例来说,第一网络节点的第三端口的第二端口队列对应的优先级为0-7,第三端口的第三端口队列对应的优先级为8-15,第一网络节点对第二数据流的优先级进行调整前,该第二数据流的优先级为6,即调整优先级前该第二数据流所在的端口队列为第三端口的第二端口队列。此后,第一网络节点将第二数据流的优先级由6调整为9,即调整优先级后该第二数据流所在的端口队列为第三端口的第三端口队列。
可选的,从第一网络节点的第三端口的第二端口队列流入且从第二端口的第二端口队列流出的数据流还可以包括除第二数据流之外的其它数据流。基于此,第一网络节点对第二数据流的端口队列进行调整后,能够避免调整前第二数据流所在的端口队列中的其它数据流受到该第二数据流的迫害,同时能够避免调整前的第二PFC帧在整个网络中扩散,有利于提高网络整体性能。
举例来说,调整前,第一网络节点接收来自第三网络节点发送的数据流#1和数据流#2,且这两个数据流都从第一网络节点的第三端口的第二端口队列流入且从第二端口的第二端口队列流出,以使目的节点第二网络节点接收到数据流#1和数据流#2。该第二端口的第二端口队列接收到第二网络节点发送的PFC帧#2的数量大于预设阈值,且第三端口的第二端口队列向第三网络节点发送的PFC帧#2的数量大于预设阈值,其中,PFC帧#2用于指示第三网络节点暂停转发所在的第三端口的第二端口队列中的所有数据流,且PFC帧#2是由于从第一网络节点的第三端口的第二端口队列流入的数据流#1发生拥塞产生的。相应地,第三网络节点接收到PFC帧#2后,会暂停转发第三端口的第二端口队列中的所有数据流(即,数据流#1和数据流#2),此时,数据流#2受到数据流#1的迫害。调整后,数据流#1从第一网络节点的第三端口的第三端口队列流入且从第二端口的第三端口队列流出,数据流#2从第一网络节点的第三端口的第二端口队列流入且从第二端口的第二端口队列流出,调整后的第三端口的第三端口队列和第二端口的第三端口队列未发生PFC风暴。也就是说,调整后数据流#1与该数据流#2对应第一网络节点的同一个端口的不同端口队列,能够避免数据流#2受到数据流#1的迫害。此外,调整后的数据流#1所在的端口队列未发生PFC风暴,还能避免调整前的PFC帧#1在网络中扩散,有利于提高网络整体性能。
在本申请实施例中,对第一网络节点包括第二端口的数目和第三端口的数目不作具体限定。当第二数据流的目的节点仅有1个时,第一网络节点可以仅包括一个第二端口,当第二数据流的目的节点有多个时,第一网络节点可以包括多个第二端口,且每个第二端口的第二端口队列在第三时间段内接收到第二网络节点发送的第二PFC帧的数量大于第三阈值。当第一网络节点转发数据流#2的端口仅有一个时,第一网络节点可以包括一个第三端口,当第一网络节点转发数据流#2的端口有多个时,第一网络节点可以包括多个第三端口,且第三端口的第二端口队列在第四时间段内向第三网络节点发送的第二PFC帧的数量大于第四阈值。为便于描述,将第二端口记为A1,A2,……,AL,AL表示第L个第二端口,即第一网络节点包括L个第二端口,L为正整数。将第三端口记为A1,A2,……,AM,AM表示第M个第三端口,即第一网络节点包括M个第三端口,M为正整数。以第一网络节点包括1个第二端口(即,A端口),第一网络节点包括多个第三端口(即,BM端口,M为大于等于2的正整数)为例,第一网络节点将AB端口两两组合得到:B1A,B2A,……,BMA,BMA表示从第一网络节点的第三端口流入且从第二端口流出的数据流#2。
可选的,在上述步骤810之后,第一网络节点还可以执行如下操作:
响应于满足第三预设条件,第一网络节点将从第三端口的第三端口队列流入且,从第二端口的第三端口队列流出的第二数据流的优先级由第二优先级调整为第一优先级,以使调整后的第二数据流从第三端口的第二端口队列流入,且从第二端口的第二端口队列流出,其中,满足第三预设条件包括:在第五时间段内连续M次检测,且每次检测都存在第二端口的第二端口队列接收到的PFC帧小于第三阈值,M为正整数;以及
第一网络节点向第二网络节点发送第二通知报文,第二通知报文用于通知第二网络节点关闭接收具有第二优先级的第二数据流的端口队列的PFC功能。
上述技术方案中,当第一网络节点确定调整优先级前第二数据流所在的端口队列的PFC风暴消失后,第一网络节点还可以将调整优先级后的第二数据流对应的端口队列切换至调整优先级前第二数据流所在的端口队列。
在上述步骤810之后,第一网络节点还可以执行如下操作:
如果不满足第三预设条件,第一网络节点还可以向第二网络节点发送第三通知报文,其中,第三通知报文用于通知第二网络节点重新启动第二网络节点的网络适配器。其中,网络适配器又称为网卡。
可以理解的是,在上述步骤810中,第一网络节点是与发送第二数据流的源节点直接相连的节点,即第一网络节点又称为转发第二数据流的中间节点。第一网络节点确定响应于满足第二预设条件,第一网络节点将从第三端口的第二端口队列流入,且从第二端口的第二端口队列流出的第二数据流的优先级由第一优先级调整为第二优先级。也就是说,在本申请实施例中,是由第一网络节点(转发第二数据流的中间节点)确定是否需要调整第一网络节点转发的第二数据流的优先级的,以及是由第一网络节点执行将第二数据流的优先级由第一优先级调整为第二优先级的。换句话说,在第二数据流的源节点处并不执行如下操作:确定是否需要调整发送的第二数据流的优先级,以及将发送的第二数据流的优先级由第一优先级调整为第二优先级。再换句话说,第一网络节点接收来自源节点的第二数据流的优先级为第一优先级,此后,第一网络节点执行步骤810后,在第一网络节点中将第二数据流的优先级由第一优先级修改为第二优先级。
步骤820,第一网络节点向第二网络节点发送第一通知报文,其中,第一通知报文用于通知第二网络节点开启接收具有第二优先级的第二数据流的端口队列的PFC功能。
其中,第一通知报文用于通知第二网络节点开启接收具有第二优先级的第二数据流的端口队列的PFC功能。相应地,第二网络节点开启接收具有第二优先级的第二数据流的端口队列的PFC功能后,第二网络节点可以对接收具有第二优先级的第二数据流的端口队列进行PFC检测。
在本申请实施例中,第一通知报文中用于通知第二网络节点开启接收具有第二优先级的第二数据流的端口队列的PFC功能的字段,第二通知报文中用于通知第二网络节点关闭接收具有第二优先级的第二数据流的端口队列的PFC功能的字段,以及第三通知报文中用于通知第二网络节点重新启动第二网络节点的网络适配器的字段,可以是现有标准、协议、规范中已有报文格式中的保留字段或允许自定义的字段,也可以是实现相同功能的其他自定义格式。
在一个示例中,该字段可以是聚合以太网的远程直接数据存储协议(remotedirect memory access over converged ethenet,RoCEv2)规范中定义的拥塞通知包(congestion notification packet,CNP)报文,如图9所示保留字段6(reserved-6,Resv6)和保留字段7(reserved-7,Resv7)均可用作通知第二网络节点开启和关闭接收具有第二优先级的第二数据流的端口队列的PFC功能的字段。
在另一个示例中,链路层发现协议(link layer discovery protocol,LLDP),如(IEEE Std.802.1AB)中定义了LLDP数据单元(lldp data unit,LLDPDU)的格式,其中保留的类型长度值(type-length-value,TLV)以及允许自定义的127号TLV,也可以用于携带通知第二网络节点开启和关闭接收具有第二优先级的第二数据流的端口队列的PFC功能的信息,具体如图10所示。其中,若使用127号自定义TLV,则应采用IEEE Std.802.1AB中定义的自定义格式,该自定义格式如图11所示。
在本申请实施例中,上述步骤810所描述的方法仅在第一网络节点处(即,转发第二数据流的中间节点)执行。在本申请实施例中,对调整后的第二数据流对应第二优先级对应的端口队列转发的数据流的数目不作限定。在一个示例中,调整后的第二数据流对应第二优先级对应的端口队列仅用于转发调整后的第二数据流。在另一个示例中,调整后的第二数据流对应第二优先级对应的端口队列可以用于:转发调整后的第二数据流和除该第二数据流之外的其它数据流。在本申请实施例中,以每个节点转发数据流为例进行介绍,上述数据流还可以替换为数据包,报文或数据帧等描述。
应理解的是,图8所描述的方法800仅为示意,并不对本申请实施例提供的数据流的处理方法构成任何限定。在一个示例中,该方法800可以仅包括上述步骤810。可选的,该方法800还可以包括步骤820。
在本申请实施例中,第一网络节点可以通过调整第二数据流的优先级,以将第二数据流调整至未发生PFC风暴现象的端口队列中,能够避免调整前的第二数据流对应的第二PFC帧在网络中扩散,该有利于更好地满足第二数据流的业务需求,以及提高网络的整体性能。当调整前转发第二数据流的端口队列同时还用于转发其它数据流时,基于本申请实施例提供的数据流的处理方法,能够避免调整前转发第二数据流的端口队列中的其它数据流受到该第二数据流的迫害,进一步满足其它数据流的业务需求。
下面,结合图12和图13描述本申请图8所描述的步骤810的一个具体的实施例。应注意,这些例子仅仅是为了帮助本领域技术人员更好地理解本申请实施例,而非要将申请实施例限制于所示例的具体数值或具体场景。本领域技术人员根据下面所给出的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。
图12是本申请实施例的一个应用场景的示意图。如图12所示,源端服务器Svr1向目的服务器Svr2发送数据流#1的正常传输路径为:Svr1发送数据流#1,交换机#1的端口3的端口队列#1接收数据流#1,且通过该交换机#1的端口7的端口队列#1发送数据流#1,Svr2接收数据流#1。源端服务器Svr1通过交换机#1发送数据流#2的正常传输路径为:Svr1发送数据流#2,交换机#1的端口3的端口队列#1接收数据流#2,且通过该交换机#1的端口3的端口队列#1发送数据流#2。
在一段时间内,Svr2的业务软件异常导致处理数据流#1的队列的处理能力不够,Svr2会向交换机#1的端口7发送的PFC帧#1的数目超过预设阈值,PFC帧#1用于指示Svr1暂停发送交换机#1的端口3的端口队列#1中的所有数据流(即,数据流#1和数据流#2),且PFC帧#1是由于从交换机#1的端口3的端口队列#1流入的数据流#1发生拥塞产生的。相应地,在该一段时间内,交换机#1的端口7的端口队列#1接收到大量PFC帧#1导致端口7的端口队列#1发生拥塞后,进一步导致交换机#1的端口3的端口队列#1的缓存逐渐堆积达到水线。此后,交换机#1通过端口3的端口队列#1向Svr1发送的PFC帧#1的数目超过预设阈值。由于交换机#1接收数据流#2的端口3的端口队列与该交换机#1接收数据流#1的端口3的端口队列是同一个端口队列,故交换机#1向Svr1发送PFC帧#1后,Svr1对接收到PFC帧#1进行识别后会确定暂停发送数据流#1和数据流#2,导致数据流#2受数据流#1的迫害,从而严重影响数据流#2的业务需求。可以理解的是,当端口3和端口7中用于转发数据流#1的端口队列的缓存都达到水线时,且Svr2还在继续发送PFC帧#1,此时,会通过交换机#1的端口4的端口队列1将PFC帧#1发送给交换机#2,使得PFC帧#1在网络中扩散,影响整个网络的性能。
下面以图12所示的应用场景为例,结合图13,介绍本申请实施例提供的数据流的处理方法800中的步骤810的一个具体的实施例。
图13是本申请实施例提供的一种数据流的处理方法1300的示意性流程图。如图13所示,该方法包括步骤1310至步骤1380,下面对步骤1310至步骤1380进行详细描述。
可以理解的是,图13中的交换机#1为上述方法800中的第一网络节点的一例,Svr2为上述方法800中的第二网络节点的一例,Svr1是数据流#1和数据流#2的源节点,且Svr1为上述方法800中的第三网络节点的一例,交换机#2为上述方法800中的第三网络节点的一例,端口3的端口队列#1为上述方法800中的第三端口的第二端口队列的一例,端口3的端口队列#2为上述方法800中的第三端口的第三端口队列的一例,端口7的端口队列#1为上述方法800中的第二端口的第二端口队列的一例,端口7的端口队列#2为上述方法800中的第二端口的第三端口队列的一例,数据流#1为上述方法800中的第二数据流的一例,PFC帧#1为上述方法800中的第二PFC帧的一例,预设条件#2为上述方法800中的第二预设条件的一例,通知报文#1为上述方法800中的第一通知报文的一例,通知报文#2为上述方法800中的第二通知报文的一例。
步骤1310,Svr1发送的数据流#1通过交换机#1的端口3的端口转发以使Svr2接收到数据流#1,以及数据流#2通过交换机#1的端口3的端口队列#1流入且从端口4的端口队列#1流出,其中,数据流#1从端口3的端口队列#1流入且从端口7的端口队列#1流出。
步骤1321,Svr2向交换机#1发送PFC帧#1。
其中,PFC帧#1用于指示Svr1暂停发送交换机#1的端口3的端口队列#1中的所有数据流,该PFC帧#1中携带交换机#1的端口3的端口队列#1的标识和暂停时间,或者,该PFC帧#1中携带交换机#1的端口3的端口队列#1中所有数据流的标识和暂停时间。
在一个示例中,Svr2在确定接收数据流#1的端口队列发生拥塞,如接收数据流#1的端口队列的长度超过预设长度,Svr2可以向交换机#1发送PFC帧#1。
上述步骤1321中,Svr2向交换机#1发送PFC帧#1。相应地,交换机#1接收来自Svr2的PFC帧#1,并对PFC帧#1进行识别执行相应操作(图中未示出)。
步骤1322,交换机#1向交换机#2发送PFC帧#1。
可以理解的是,当交换机#1的端口3的端口队列#1和端口7的端口队列#1都发生拥塞时,交换机#1会通过端口4的端口队列#1向交换机#2发送PFC帧#1。相应地,交换机#2接收来自交换机#1的PFC帧#1后,会对PFC帧#1进行识别并执行相应操作(图中未示出)。
步骤1323,交换机#1向Svr1发送PFC帧#1。
相应地,Svr1接收来自交换机#1的PFC帧#1后,会对PFC帧#1进行识别执行相应操作(图中未示出)。可以理解的是,Svr2在确定接收数据流#1的端口队列的拥塞未消失之前,Svr2会持续发送PFC帧#1。相应地,Svr2接收到PFC帧#1后,Svr2会向交换机#2和Svr1转发PFC帧#1。
步骤1330,交换机#1确定满足预设条件#2,调整数据流#1的优先级,调整优先级后的数据流#1对应交换机#1的端口3的端口队列#2,端口队列#2与端口队列#1不是同一个端口队列,端口队列#2未发生PFC风暴。
其中,交换机#1对数据流#1的优先级进行调整后,数据流#1对应的端口3的端口队列#2和数据流#2对应交换机#1的端口3的不同的端口队列。此后,交换机#1中转发数据流#2的端口3的端口队列#2发生拥塞,交换机#1向Svr1发生PFC帧#2,PFC帧#2用于指示Svr1暂停发送调整优先级后的数据流#2的端口3的端口队列#2中的所有数据流。在此情况下,数据流#2不会受数据流#1的PFC帧#2的影响,即Svr1接收到PFC帧#2后,仍会继续发生数据流#2,交换机#1可以通过端口3的端口队列#1接收该数据流#2。
交换机#1调整数据流#1的优先级后,交换机#1的端口3的端口队列#1的PFC风暴也会消失,能够避免该端口3的端口队列#1的PFC风暴在网络中扩散。另外,调整优先级后的数据流#1对应端口3的端口队列#2,调整优先级后的数据流#1对应的端口3的端口队列#2是未发生PFC风暴的端口队列,有利于满足数据流#1的业务需求,以及提高网络的整体性能。
上述步骤1330中,调整优先级后的数据流#1对应端口3的端口队列#2可以仅用于转发调整优先级后的数据流#1。调整前数据流#1的优先级可以大于调整后数据流#1的优先级,或者,调整前数据流#1的优先级也可以小于调整后数据流#1的优先级,仅需确保调整优先级前后数据流#1对应同一个端口的不同端口队列即可。
步骤1340,交换机#1向Svr2发送通知报文#1。相应地,Svr2接收来自交换#1的通知报文#1。
其中,通知报文#1用于通知Svr2开启接收调整优先级后的数据流#1的端口队列的PFC功能。Svr2对接收到的通知报文#1进行识别,并开启接收调整优先级后的数据流#1的端口队列的PFC功能。
步骤1350,交换机#1通过端口3的端口队列#2向Svr2发送调整优先级后的数据流#1。
步骤1360,交换机#1确定端口3的端口队列#1的PFC风暴消息,再次调整数据流#1的优先级,调整后的数据流#1对应端口3的端口队列#1。
步骤1370,交换机#1向Svr2发送通知报文#2。相应地,Svr2接收来自交换#1的通知报文#2。
其中,通知报文#2用于通知Svr2关闭转发调整优先级后的数据流#1的端口队列的PFC功能。Svr2对接收到的通知报文#2进行识别,并关闭转发调整优先级后的数据流#1的端口队列的PFC功能。
步骤1380,交换机#1通过端口3的端口队列#1向Svr2发送再次调整优先级后的数据流#1。
在本申请实施例中,交换机#1可以通过调整数据流#1的优先级,以将数据流#1调整至未发生PFC风暴现象的端口队列中,能够避免调整前的数据流#1对应的PFC帧#1在网络中扩散,以及避免数据流#2受到数据流#1的迫害,该有利于更好地满足数据流#1和数据流#2的业务需求,以及提高网络的整体性能。
上面,结合图4和图8介绍了本申请实施例提供的两种数据流的处理方法,可以理解的是,在现网中也可以将这两种数据流的处理方法结合起来一起使用。
图14是本申请实施例提供的又一种数据流的处理方法1400的示意性流程图。
如图14所示,该方法1400包括步骤1410。该方法1400可以但不限于应用于上述图2和上述图3所示的网络架构中。当方法1400应用于网络架构100中时,方法1400中的第一网络节点可以是叶节点102,第二网络节点可以是源节点103。当方法1400应用于网络架构200中时,方法1400中的第一网络节点可以是叶节点203,第二网络节点可以是源节点204。下面,介绍步骤1410至步骤1440。
步骤1410,第一网络节点对第一端口的第一端口队列进行基于优先级的流量控制PFC检测,确定满足第一预设条件,其中,满足第一预设条件包括:连续N个第一时间段进行检测,且在每个第一时间段进行检测时都存在第一端口队列向第二网络节点发送第一PFC帧的数量大于第一阈值,以及第一端口队列接收来自第二网络节点的一个或多个数据包的个数小于第二阈值,第一PFC帧用于指示第二网络节点暂停发送第一端口队列中的所有数据流,N为正整数。
其中,第一端口队列接收来自第二网络节点的一个或多个数据包的个数小于第二阈值,还可以替换为,第一端口队列接收来自第二网络节点的一个或多个数据流的流量小于预设阈值。
在本申请实施例中,第一网络节点和第二网络节点是直接相连的两个网络节点。第二网络节点可以是服务器,第一网络节点可以是与该服务器直连的转发设备(如路由器或交换机等)。
上述步骤1410的具体方法与上述步骤410所描述的方法相同,此处未详细赘述的内容具体可以参见上述步骤410中的内容。
步骤1420,第一网络节点暂停第一端口队列向第二网络节点发送第一PFC帧。
上述步骤1420的具体方法与上述步骤420所描述的方法相同,此处未详细赘述的内容具体可以参见上述步骤420中的内容。
步骤1430,响应于满足第二预设条件,第一网络节点将从第三端口的第二端口队列流入,且从第二端口的第二端口队列流出的第二数据流的优先级由第一优先级调整为第二优先级,以使调整后的第二数据流从第三端口的第三端口队列流入,且从第二端口的第三端口队列流出,其中,第二数据流的目的节点为第二网络节点,第二端口是与第二网络节点连接的端口,第三端口队列为具有第二优先级的第二数据流对应的端口队列,第二端口与第三端口不是同一个端口,第三端口的第三端口队列在第四时间段内发送的PFC帧的数目小于第四阈值,第二端口的第三端口队列在第三时间段内接收的PFC帧的数目小于第三阈值。
其中,对第三端口的第二端口队列与第一端口的第一端口队列的关系不作限定。在一些实现方式中,第三端口的第二端口队列与第一端口的第一端口队列,可以是第一网络节点的同一个端口对应的同一个端口队列。在另一些实现方式中,第三端口的第二端口队列与第一端口的第一端口队列,可以是第一网络节点的同一个端口对应的不同端口队列。
其中,对第一阈值,第二阈值,第三阈值和第四阈值的关系不作具体限定。
上述步骤1430的具体方法与上述步骤810所描述的方法相同,此处未详细赘述的内容具体可以参见上述步骤810中的内容。
步骤1440,第一网络节点向第二网络节点发送第一通知报文,其中,第一通知报文用于通知第二网络节点开启接收具有第二优先级的第二数据流的端口队列的PFC功能。
上述步骤1440的具体方法与上述步骤820所描述的方法相同,此处未详细赘述的内容具体可以参见上述步骤820中的内容。
在本申请实施例中,一方面,第一网络节点在第一时间段内对第一端口的第一端口队列进行检测,确定第一端口队列发生PFC风暴现象后,第一网络节点在第二时间段内暂停第一端口队列向第二网络节点发送第一PFC帧,该第一PFC帧用于指示暂停接收第一端口队列转发的所有数据流(包括第一数据流),使得发送第一数据流的第二网络节点(第一数据流的源节点)可以继续发送第一数据流,可以避免该第二网络节点发送第一数据流时发生业务中断,有利于更好地满足第一数据流的业务需求。另一方面,第一网络节点可以通过调整第二数据流的优先级,以将第二数据流调整至未发生PFC风暴现象的端口队列中,能够避免调整前的第二数据流对应的第二PFC帧在网络中扩散,该有利于更好地满足第二数据流的业务需求,以及提高网络的整体性能。当调整前转发第二数据流的端口队列同时还用于转发其它数据流时,基于本申请实施例提供的数据流的处理方法,能够避免调整前转发第二数据流的端口队列中的其它数据流受到该第二数据流的迫害,进一步满足其它数据流的业务需求。
上面结合图1至图14,详细描述了适用于本申请的网络架构,以及本申请提供的数据流的处理方法。下面,结合图15至图17详细介绍本申请提供的第一网络节点和系统。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图15是本申请提供的一种第一网络节点1400的结构示意图,第一网络节点1400具有上述方法400,方法800或方法1400中的第一网络节点的任意功能,上述方法700中S21的任意功能,或上述方法1300中交换机#1的任意功能。如图15所示,第一网络节点1400包括:处理单元1402,用于执行上述步骤410、步骤810、步骤720、步骤740、步骤750、步骤1330、步骤1410或步骤1430等;可选的,该第一网络节点1400还包括:收发单元1401,用于执行接收步骤420、步骤820、步骤731、步骤733、步骤1322、步骤1323、步骤1340、步骤1350、步骤1370、步骤1380、步骤1420或步骤1440等。
第一网络节点1400对应于上述方法实施例中的第一网络节点,如:第一网络节点1400中的各模块和上述其他操作和/或功能分别为了实现上述方法400,上述方法800或上述方法1400实施例中的第一网络节点所实施的各种步骤和方法,具体细节可参见上述方法400,上述方法800或上述方法1400。如:第一网络节点1400中的各模块和上述其他操作和/或功能分别为了实现上述方法700方法实施例中的S21所实施的各种步骤和方法,具体细节可参见上述方法700。如:第一网络节点1400中的各模块和上述其他操作和/或功能分别为了实现上述方法1300方法实施例中的交换机#1所实施的各种步骤和方法,具体细节可参见上述方法1300。为了简洁,在此不再赘述。
第一网络节点1400在进行拥塞控制时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将第一网络节点1400的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
图16是本申请实施例提供的一种第一网络节点1500的硬件结构示意图。
其中,第一网络节点1500对应于上述方法实施例中的第一网络节点,第一网络节点1500的各硬件、模块和上述其他操作和/或功能分别为了实现方法实施例中的第一网络节点所实施的各种步骤和方法,关于第一网络节点1500如何进行拥塞控制的详细流程,具体细节可参见上述方法实施例,为了简洁,在此不再赘述。其中,上文方法400,方法800或方法1400的各步骤通过第一网络节点1500处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
如图16所示,该第一网络节点1500包括至少一个处理器1501、通信总线1502、存储器1503以及至少一个通信接口1504。该第一网络节点1500可以由一般性的总线体系结构来实现。
其中,处理器1501可以是一个通用CPU、NP、微处理器、或者可以是一个或多个用于实现本申请方案的集成电路,例如,专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
通信总线1502用于在上述组件之间传送信息。通信总线1502可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器1503可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,也可以是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only Memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器1503可以是独立存在,并通过通信总线1502与处理器1501相连接。存储器1503也可以和处理器1501集成在一起。
通信接口1504使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口1504包括有线通信接口,还可以包括无线通信接口。其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合等。
在具体实现中,作为一种实施例,处理器1501可以包括一个或多个CPU,如图16中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,第一网络节点1500可以包括多个处理器,如图16中所示的处理器1501和处理器1505。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,第一网络节点1500还可以包括输出设备1506和输入设备1507。输出设备1506和处理器1501通信,可以以多种方式来显示信息。例如,输出设备1506可以是液晶显示器(liquid crystal display,LCD)、发光二级管(lightemitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备1507和处理器1501通信,可以以多种方式接收用户的输入。例如,输入设备1507可以是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器1503用于存储执行本申请方案的程序代码1510,处理器1501可以执行存储器1503中存储的程序代码1510。也即是,第一网络节点1500可以通过处理器1501以及存储器1503中的程序代码1510,来实现方法实施例提供的方法400、方法700、方法800、方法1300或方法1400。
本申请实施例的第一网络节点1500可对应于上述各个方法实施例中的第一网络节点,并且,该第一网络节点1500中的处理器1501、通信接口1504等可以实现上述各个方法实施例中的第一网络节点所具有的功能和/或所实施的各种步骤和方法。为了简洁,在此不再赘述。
可以理解的是,第一网络节点1400中的收发单元1410可以相当于第一网络节点1500中的通信接口1504;第一网络节点1400中的处理单元1420可以相当于第一网络节点1500中的处理器1501。
图17是本申请实施例提供的一种系统1600的结构示意图。
如图17所示,该系统1600包括:第一网络节点1400。可选的,第一网络节点1400的硬件结构可以为上述图16所示的硬件结构。
本申请实施例提供了一种计算机程序产品,当该计算机程序产品在网络设备上运行时,使得网络设备执行上述方法实施例中的方法。
本申请实施例提供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序包括用于执行上述方法实施例中的方法。
本申请实施例提供了一种芯片系统,包括至少一个处理器和接口;所述至少一个所述处理器,用于调用并运行计算机程序,以使所述芯片系统执行上述方法实施例中的方法。
上述各种产品形态的装置,分别具有上述方法实施例中网络设备的任意功能,此处不再赘述。
本申请中术语“第一”“第二”“第三”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”和“第三”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请将围绕可包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
另外,在本申请实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (23)

1.一种数据流的处理方法,其特征在于,所述方法包括:
第一网络节点对第一端口的第一端口队列进行基于优先级的流量控制PFC检测,确定满足第一预设条件,其中,所述满足第一预设条件包括:连续N个第一时间段进行检测,且在每个第一时间段进行检测时都存在所述第一端口队列向第二网络节点发送第一PFC帧的数量大于第一阈值,以及所述第一端口队列接收来自所述第二网络节点的一个或多个数据包的个数小于第二阈值,所述第一PFC帧用于指示所述第二网络节点暂停发送所述第一端口队列中的所有数据流,N为正整数;
所述第一网络节点暂停所述第一端口队列向所述第二网络节点发送所述第一PFC帧。
2.根据权利要求1所述的方法,其特征在于,所述第二网络节点是所述第一端口队列中的第一数据流的源节点,且所述第一数据流与所述第一PFC帧对应,所述第一网络节点暂停所述第一端口队列向所述第二网络节点发送所述第一PFC帧的时间为第二时间段,其中,所述第二时间段与所述连续N个第一时间段连续,且所述第二时间段是所述连续N个第一时间段之后的时间段,且满足如下关系:
(N×T1+T2)<(Tx_timeout)
其中,N×T1表示所述连续N个第一时间段,T1表示所述N个第一时间段中的任意一个第一时间段,T2表示所述第二时间段,Tx_timeout表示所述第二网络节点发送数据流的最大超时时间。
3.根据权利要求1或2所述的方法,其特征在于,
在所述第一网络节点暂停所述第一端口队列向所述第二网络节点发送所述第一PFC帧之后,所述方法还包括:
所述第一网络节点的所述第一端口队列继续向所述第二网络节点发送所述第一PFC帧;
所述第一网络节点确定满足所述第一预设条件,所述第一网络节点关闭所述第一端口队列的PFC功能。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述第一网络节点还包括第二端口和第三端口,所述第二端口与所述第三端口不是同一个端口,所述第二端口是与所述第二网络节点连接的端口,且所述第二网络节点是第二数据流的目的节点,
所述方法还包括:
响应于满足第二预设条件,所述第一网络节点将从所述第三端口的第二端口队列流入,且从所述第二端口的第二端口队列流出的所述第二数据流的优先级由第一优先级调整为第二优先级,以使调整后的所述第二数据流从所述第三端口的第三端口队列流入,且从所述第二端口的第三端口队列流出,其中,所述第三端口队列为具有第二优先级的第二数据流对应的端口队列,所述第三端口的第三端口队列在第四时间段内发送的PFC帧的数目小于第四阈值,所述第二端口的第三端口队列在第三时间段内接收的PFC帧的数目小于第三阈值。
5.根据权利要求4所述的方法,其特征在于,
所述满足第二预设条件包括:所述第二端口的第二端口队列在所述第三时间段内接收到所述第二网络节点发送的第二PFC帧的数量大于所述第三阈值,以及所述第三端口的第二端口队列在所述第四时间段内向第三网络节点发送的所述第二PFC帧的数量大于所述第四阈值,其中,所述第二PFC帧用于指示所述第三网络节点暂停发送所述第三端口的第二端口队列中的所有数据流,所述第一网络节点是所述第三网络节点和所述第二网络节点之间的中间节点。
6.根据权利要求4或5所述的方法,其特征在于,
在所述第一网络节点将从所述第三端口的第二端口队列流入,且从所述第二端口的第二端口队列流出的所述第二数据流的优先级由第一优先级调整为第二优先级之前,所述方法还包括:
所述第一网络节点对以下端口的端口队列进行PFC检测:所述第三端口的第二端口队列,所述第二端口的第二端口队列,所述第三端口的第三端口队列,以及所述第二端口的第三端口队列。
7.根据权利要求4至6任一项所述的方法,其特征在于,所述方法还包括:
所述第一网络节点向所述第二网络节点发送第一通知报文,其中,所述第一通知报文用于通知所述第二网络节点开启接收具有所述第二优先级的所述第二数据流的端口队列的PFC功能。
8.根据权利要求4至7任一项所述的方法,其特征在于,所述方法还包括:
响应于满足第三预设条件,所述第一网络节点将从所述第三端口的第三端口队列流入且,从所述第二端口的第三端口队列流出的第二数据流的优先级由所述第二优先级调整为所述第一优先级,以使调整后的所述第二数据流从所述第三端口的第二端口队列流入,且从所述第二端口的第二端口队列流出,其中,所述满足第三预设条件包括:在第五时间段内连续M次检测,且每次检测都存在所述第二端口的第二端口队列接收到的PFC帧小于所述第三阈值,M为正整数;
所述第一网络节点向所述第二网络节点发送第二通知报文,所述第二通知报文用于通知所述第二网络节点关闭接收具有所述第二优先级的所述第二数据流的端口队列的PFC功能。
9.根据权利要求1至8任一项所述的方法,其特征在于,
所述第一网络节点为交换机或路由器,所述第二网络节点为服务器。
10.一种第一网络节点,其特征在于,所述第一网络节点包括:处理单元和收发单元,
所述处理单元,用于对第一端口的第一端口队列进行基于优先级的流量控制PFC检测,确定满足第一预设条件,其中,所述满足第一预设条件包括:连续N个第一时间段进行检测,且在每个第一时间段进行检测时都存在所述第一端口队列向第二网络节点发送第一PFC帧的数量大于第一阈值,以及所述第一端口队列接收来自所述第二网络节点的一个或多个数据包的个数小于第二阈值,所述第一PFC帧用于指示所述第二网络节点暂停发送所述第一端口队列中的所有数据流,N为正整数;
所述收发单元,用于暂停所述第一端口队列向所述第二网络节点发送所述第一PFC帧。
11.根据权利要求10所述的第一网络节点,其特征在于,所述第二网络节点是所述第一端口队列中的第一数据流的源节点,且所述第一数据流与所述第一PFC帧对应,所述第一网络节点暂停所述第一端口队列向所述第二网络节点发送所述第一PFC帧的时间为第二时间段,其中,所述第二时间段与所述连续N个第一时间段连续,且所述第二时间段是所述连续N个第一时间段之后的时间段,且满足如下关系:
(N×T1+T2)<(Tx_timeout)
其中,N×T1表示所述连续N个第一时间段,T1表示所述N个第一时间段中的任意一个第一时间段,T2表示所述第二时间段,Tx_timeout表示所述第二网络节点发送数据流的最大超时时间。
12.根据权利要求10或11所述的第一网络节点,其特征在于,
所述收发单元,还用于通过所述第一端口队列继续向所述第二网络节点发送所述第一PFC帧;
所述处理单元,还用于确定满足所述第一预设条件,关闭所述第一端口队列的PFC功能。
13.根据权利要求10至12所述的第一网络节点,其特征在于,所述第一网络节点还包括第二端口和第三端口,所述第二端口与所述第三端口不是同一个端口,所述第二端口是与所述第二网络节点连接的端口,且所述第二网络节点是第二数据流的目的节点,
所述处理单元还用于:
响应于满足第二预设条件,将从所述第三端口的第二端口队列流入,且从所述第二端口的第二端口队列流出的所述第二数据流的优先级由第一优先级调整为第二优先级,以使调整后的所述第二数据流从所述第三端口的第三端口队列流入,且从所述第二端口的第三端口队列流出,其中,所述第三端口队列为具有第二优先级的第二数据流对应的端口队列,所述第三端口的第三端口队列在第四时间段内发送的PFC帧的数目小于第四阈值,所述第二端口的第三端口队列在第三时间段内接收的PFC帧的数目小于第三阈值。
14.根据权利要求13所述的第一网络节点,其特征在于,
所述满足第二预设条件包括:所述第二端口的第二端口队列在所述第三时间段内接收到所述第二网络节点发送的第二PFC帧的数量大于所述第三阈值,以及所述第三端口的第二端口队列在所述第四时间段内向第三网络节点发送的所述第二PFC帧的数量大于所述第四阈值,其中,所述第二PFC帧用于指示所述第三网络节点暂停发送所述第三端口的第二端口队列中的所有数据流,所述第一网络节点是所述第三网络节点和所述第二网络节点之间的中间节点。
15.根据权利要求13或14所述的第一网络节点,其特征在于,
所述处理单元,还用于对以下端口的端口队列进行PFC检测:所述第三端口的第二端口队列,所述第二端口的第二端口队列,所述第三端口的第三端口队列,以及所述第二端口的第三端口队列。
16.根据权利要求13至15任一项所述的第一网络节点,其特征在于,
所述收发单元还用于:
向所述第二网络节点发送第一通知报文,其中,所述第一通知报文用于通知所述第二网络节点开启接收具有所述第二优先级的所述第二数据流的端口队列的PFC功能。
17.根据权利要求13至16任一项所述的第一网络节点,其特征在于,
所述处理单元还用于:
响应于满足第三预设条件,将从所述第三端口的第三端口队列流入且,从所述第二端口的第三端口队列流出的第二数据流的优先级由所述第二优先级调整为所述第一优先级,以使调整后的所述第二数据流从所述第三端口的第二端口队列流入,且从所述第二端口的第二端口队列流出,其中,所述满足第三预设条件包括:在第五时间段内连续M次检测,且每次检测都存在所述第二端口的第二端口队列接收到的PFC帧小于所述第三阈值,M为正整数;
所述收发单元还用于:向所述第二网络节点发送第二通知报文,所述第二通知报文用于通知所述第二网络节点关闭接收具有所述第二优先级的所述第二数据流的端口队列的PFC功能。
18.根据权利要求10至17任一项所述的第一网络节点,其特征在于,
所述第一网络节点为交换机或路由器,所述第二网络节点为服务器。
19.一种第一网络节点,其特征在于,包括至少一个处理器和通信接口,所述至少一个处理器,用于执行计算机程序或指令,以使得所述第一网络节点执行如权利要求1至9中任一项所述的方法。
20.根据权利要求19所述的第一网络节点,其特征在于,所述第一网络节点还包括至少一个存储器,所述至少一个存储器与所述至少一个处理器耦合,所述计算机程序或指令存储在所述至少一个存储器中。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在一个或多个处理器上运行时,使得所述计算机执行如权利要求1至9中任一项所述的方法。
22.一种芯片系统,其特征在于,包括至少一个处理器和接口,所述至少一个所述处理器,用于调用并运行计算机程序,以使所述芯片系统执行如权利要求1至9中任一项所述的方法。
23.一种系统,其特征在于,包括如权利要求19或20中任一项所述的第一网络节点。
CN202110572357.7A 2021-05-25 2021-05-25 数据流的处理方法、网络节点和系统 Pending CN115473851A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202110572357.7A CN115473851A (zh) 2021-05-25 2021-05-25 数据流的处理方法、网络节点和系统
PCT/CN2021/140389 WO2022247257A1 (zh) 2021-05-25 2021-12-22 一种pfc风暴的检测和处理方法
EP21942820.8A EP4325802A1 (en) 2021-05-25 2021-12-22 Pfc storm detection and processing method
US18/510,315 US20240089213A1 (en) 2021-05-25 2023-11-15 Pfc storm detection and processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110572357.7A CN115473851A (zh) 2021-05-25 2021-05-25 数据流的处理方法、网络节点和系统

Publications (1)

Publication Number Publication Date
CN115473851A true CN115473851A (zh) 2022-12-13

Family

ID=84229481

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110572357.7A Pending CN115473851A (zh) 2021-05-25 2021-05-25 数据流的处理方法、网络节点和系统

Country Status (4)

Country Link
US (1) US20240089213A1 (zh)
EP (1) EP4325802A1 (zh)
CN (1) CN115473851A (zh)
WO (1) WO2022247257A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115883466A (zh) * 2023-03-03 2023-03-31 苏州浪潮智能科技有限公司 交换机的控制方法及装置、存储介质及电子装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109412964B (zh) * 2017-08-18 2022-04-29 华为技术有限公司 报文控制方法及网络装置
CN111835652B (zh) * 2019-04-17 2024-04-16 华为技术有限公司 一种数据流的虚拟通道的设置方法及装置
CN112968811A (zh) * 2021-02-20 2021-06-15 中国工商银行股份有限公司 一种rdma网络的pfc异常处理方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115883466A (zh) * 2023-03-03 2023-03-31 苏州浪潮智能科技有限公司 交换机的控制方法及装置、存储介质及电子装置

Also Published As

Publication number Publication date
WO2022247257A1 (zh) 2022-12-01
EP4325802A1 (en) 2024-02-21
US20240089213A1 (en) 2024-03-14

Similar Documents

Publication Publication Date Title
CN108243116B (zh) 一种流量控制方法及交换设备
EP4325803A2 (en) Packet control method and network apparatus
JP5233504B2 (ja) 経路制御装置およびパケット廃棄方法
US20090207736A1 (en) Constrained dynamic path selection among multiple communication interfaces
US9167477B2 (en) Transmission device, transmission method and computer program
WO2018218957A1 (zh) 一种流量控制方法、设备及系统
CN104041109B (zh) 控制流量的方法、终端网关、终端设备和系统
WO2016202092A1 (zh) 基于多层队列流控反压的传送方法及装置
WO2020134553A1 (zh) 基于pfc帧的拥塞控制方法、装置、系统及存储介质
US20190014044A1 (en) Method and corresponding device for improved bandwidth utilization
CN111431811A (zh) 一种报文传输控制方法、装置和网络设备
US11799794B2 (en) Selective compression of packet payload data in a 5G network
US20240089213A1 (en) Pfc storm detection and processing method
KR100987258B1 (ko) 통신 시스템에서 데이터 흐름 제어 장치 및 방법
CN113726681B (zh) 一种网络拥塞控制方法及网络设备
CN113992588A (zh) 数据传输方法、装置、电子设备及可读存储介质
JP4022017B2 (ja) Lan中継装置
JP2008118281A (ja) 通信装置
CN114095448A (zh) 一种拥塞流的处理方法及设备
CN111131061B (zh) 一种数据传输方法及网络设备
CN115462050A (zh) 一种拥塞控制方法、网络设备及系统
CN109600320B (zh) 拥塞处理方法及设备、数据中心网络
CN113114578A (zh) 一种流量拥塞隔离方法、装置和系统
JP4500589B2 (ja) ネットワーク装置
EP4397073A1 (en) Selective compression of packet payload data in a 5g network

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