CN110708255B - 一种报文控制方法及节点设备 - Google Patents
一种报文控制方法及节点设备 Download PDFInfo
- Publication number
- CN110708255B CN110708255B CN201810746527.7A CN201810746527A CN110708255B CN 110708255 B CN110708255 B CN 110708255B CN 201810746527 A CN201810746527 A CN 201810746527A CN 110708255 B CN110708255 B CN 110708255B
- Authority
- CN
- China
- Prior art keywords
- queue
- message
- node
- record set
- data stream
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6255—Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6215—Individual queue per QOS, rate or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2458—Modification of priorities while in transit
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
- H04L47/266—Stopping or restarting the source, e.g. X-on or X-off
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/54—Loss aware scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6295—Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/50—Overload detection or protection within a single switching element
- H04L49/505—Corrective measures
- H04L49/506—Backpressure
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/11—Identifying congestion
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种报文控制方法及节点设备,用于提高数据流在传输过程中的可靠性。该方法包括:第一节点在接收到暂停帧后,会根据状态记录集中记录的数据流的发送队列的调整信息,自动将该暂停帧应用于在数据流的发送队列的调整过程中关联的所有队列,从而可以在不调整接收队列的XOFF/XON门限以及不增加网络***中的暂停帧的个数的情况下,避免数据传输过程中的丢包问题,可以提高数据流在传输过程中的可靠性。
Description
技术领域
本申请涉及数据传输领域,尤其涉及一种报文控制方法及节点设备。
背景技术
通信网络是一种使用通信技术,将多个电子设备,例如,交换设备(例如,交换机、路由器)、用户设备及传输设备(例如,光缆)等,互连起来实现通信和信息交换的网络。
随着通信技术的发展以及电子设备的普及,通信网络中传输的数据流越来越多。因此,如何保证数据流在传输过程中的可靠性,避免丢包问题,是目前亟待解决的技术问题。
发明内容
本申请实施例提供一种报文控制方法及节点设备,用于提高数据流在传输过程中的可靠性。
第一方面,本申请实施例提供一种报文控制方法,该方法包括:第一节点通过至少两个队列向第二节点发送数据流的报文,在报文发送过程中,该第一节点从该第二节点接收用于指示暂停该至少两个队列中第一队列上的报文的发送的暂停帧,从而第一节点根据该暂停帧,暂停该第一队列上的报文的发送,以及暂停第二队列上的报文的发送,其中,该第一队列上的部分报文与该第二队列上的部分报文属于同一个数据流。
在上述技术方案中,第一节点在接收到暂停帧后,会根据状态记录集中记录的数据流的发送队列的调整信息,自动将该暂停帧应用于在数据流的发送队列的调整过程中关联的所有队列,从而可以在不调整接收队列的XOFF/XON门限以及不增加网络***中的暂停帧的个数的情况下,避免数据传输过程中的丢包问题,可以提高数据流在传输过程中的可靠性。
在一种可能的设计中,该至少两个队列包括至少两种优先级,该第一队列的优先级为第一优先级,该第二队列的优先级为第二优先级,该第一优先级与该第二优先级不同。
在上述技术方案中,可以为用于第一节点和第二节点进行通信的至少两个队列设置优先级,相应地,暂停帧也可以用于指示暂停某一个优先级的队列上的报文的发送。这样,可以增加暂停帧的指示方式,可以提高报文控制方法的灵活性。
在一种可能的设计中,该第一节点通过查询用于记录该第一队列上的部分报文与该第二队列上的部分报文属于同一个数据流的第一状态记录集,来暂停该第二队列上的报文的发送。
在上述技术方案中,第一节点可以预先记录每个队列上的报文的状态,例如,是否有同一个数据流的报文存放于两个队列中,这样,当接收到暂停帧指示暂停某一个队列上的报文的发送时,可以直接查询该第一状态记录集来确定是否需要暂停第二队列以及该第二队列具体为该至少两个队列中的哪些队列,实现方式简单。
在一种可能的设计中,该第一节点可以包括但不限于如下两种方式确定第一状态记录集:
第一种方式:该第一节点从第二状态记录集中确定与该第一队列对应的第一状态记录集。
在上述技术方案中,该第一节点可以以队列为单位,记录与队列对应的状态,形成第二状态记录集。例如,可以记录每个队列与状态的对应关系,该状态是指该队列上的部分报文是否与其他队列上的部分报文属于同一个数据流。当第一节点需要查询第一节点的状态时,先从该第二状态记录集中找到与该第一队列对应的状态记录子集,也就是第一状态记录集,然后根据第一状态记录集确定第二队列。
第二种方式:
该第一节点从第二状态记录集中确定与该第一队列上的数据流对应的第一状态记录集。
在上述技术方案中,该第一节点可以以数据流为单位,记录与数据流对应的状态,形成第二状态记录集。例如,可以记录每个数据流与状态的对应关系,该状态是指该数据流的报文是否存放在至少两个队列中。当第一节点需要查询第一节点的状态时,先从该第二状态记录集中找到承载在该第一队列上的数据流对应的状态记录子集,也就是第一状态记录集,然后根据第一状态记录集确定第二队列。
这样,该第一节点可以根据第二状态记录集的不同形式,采用多种方式确定该第一状态记录集,可以增加报文控制方法的灵活性。
在一种可能的设计中,该第一状态记录集还用于记录该第一队列上的部分报文与第三队列上的部分报文属于同一个数据流,则该第一节点暂停该第三队列上的报文的发送。
在上述技术方案中,某一个数据流的报文可能存放在不止两个队列中,例如,该数据流的报文可能存放在第一队列、第二队列以及第三队列中,这样,第一节点也可以根据暂停帧,暂停第三队列上的数据流的发送,这样,当多个队列中存放同一个数据流的报文时,可以将该多个队列都进行暂停处理,可以避免该多个队列发送的报文溢出,可以进一步提高报文传输的可靠性。
在一种可能的设计中,该第一节点获取报文后,确定该报文所属的数据流对应于第一队列,但由于某些因素,例如第一队列拥塞或者该数据流的类型发生变化等,确定需要将该报文存放在第二队列,然后,该第一节点确定该第二队列不存在该报文所属的数据流的报文,则该第一节点记录该第一状态记录集;或,该第一节点获取报文后,确定该报文所属的数据流对应于第二队列,但由于某些因素,例如第二队列拥塞或者该数据流的类型发生变化等,确定需要将该报文存储在该第一队列,然后该第一节点确定该第一队列不存在该报文所属的数据流的报文,则该第一节点记录该第一状态记录集。
在上述技术方案中,当该第一节点确定某个数据流存放的队列发生变化时,会记录该状态,并形成第一状态记录集,以便该第一节点在收到暂停帧后,根据该第一状态记录集确定第二队列。
在一种可能的设计中,在该第一节点将该报文存储在该第二队列之后,若该一队列中不存在属于该报文所属的数据流的报文,则该第一节点从该第二状态记录集中删除该第一状态记录集或该第一节点更改该第一状态记录集;或,在该第一节点将该报文存储在该第一队列之后,若该第二队列中不存在属于该报文所属的数据流的报文,则该第一节点从该第二状态记录集中删除该第一状态记录集或该第一节点更改该第一状态记录集。其中,该第一节点更改该第一状态记录集包括:将该第一状态记录集中的第一标记修改为第二标记,该第一标记用于指示该第一队列正在切换,该第二标记用于指示该第一队列未进行切换;或,将该第一状态记录集中的第一标记修改为第二标记,该第一标记用于指示该第一队列上的数据流正在切换,该第二标记用于指示该第一队列上的数据流未进行切换。
在上述技术方案中,第一节点会根据数据流存放的队列是否发生变化,来更改第二状态记录集和第一状态记录集,从而使该第一状态记录集和第二状态记录集中记载的内容与实际情况同步,可以提高第一节点确定第二队列的准确性。
在一种可能的设计中,该第一节点确定暂停该第一队列以及稿第二队列上的报文的发送的时长大于或等于该暂停帧指示的时长,则该第一节点恢复该第一队列以及该第二队列上的报文的发送。
在上述技术方案中,第一节点可以对暂停第一队列及第二队列的时间进行计时,当时长达到暂停帧指示的暂停时长后,第一节点可以控制第一队列和第二队列恢复报文的发送,可以提高报文控制方法的灵活性。
第二方面,本申请实施例提供一种节点设备,该节点设备可以是第一节点,也可以是第一节点中的装置,该节点设备可以包括通信模块和处理模块,这些模块可以执行上述第一方面任一种设计示例中相应的功能,具体的:
该通信模块在该处理模块的控制下通过至少两个队列向第二节点发送数据流的报文;
该通信模块在该处理模块的控制下从所述第二节点接收暂停帧;其中,所述暂停帧用于指示暂停所述至少两个队列中第一队列上的报文的发送;
该处理模块暂停所述第一队列上的报文的发送,以及暂停第二队列上的报文的发送;其中,所述第一队列上的部分报文与所述第二队列上的部分报文属于同一个数据流。
在一种可能的设计中,所述处理模块用于:查询第一状态记录集,所述第一状态记录集用于记录所述第一队列上的部分报文与所述第二队列上的部分报文属于同一个数据流;根据所述第一状态记录集,暂停所述第二队列上的报文的发送。
在一种可能的设计中,所述处理模块用于:从第二状态记录集中确定与所述第一队列对应的第一状态记录集。
在一种可能的设计中,所述处理模块用于:从第二状态记录集中确定与所述第一队列上的数据流对应的第一状态记录集。
在一种可能的设计中,所述第一状态记录集还用于记录所述第一队列上的部分报文与第三队列上的部分报文属于同一个数据流,所述处理模块用于:暂停所述第三队列上的报文的发送。
在一种可能的设计中,所述处理模块用于:在查询状态记录集之前,获取报文,所述报文所属的数据流对应于所述第一队列;若将所述报文存储在所述第二队列且所述第二队列不存在与所述报文所属的数据流的报文,则记录所述第一状态记录集;
或
在查询状态记录集之前,获取报文,所述报文所属的数据流对应于所述第二队列;若将所述报文存储在所述第一队列且所述第一队列不存在与所述报文所属的数据流的报文,则记录所述第一状态记录集。
在一种可能的设计中,所述处理模块用于:在将所述报文存储在所述第二队列之后,若所述第一队列中不存在属于所述报文所属的数据流的报文,则从所述第二状态记录集中删除所述第一状态记录集或更改所述第一状态记录集;
或
在将所述报文存储在所述第一队列之后,若所述第二队列中不存在属于所述报文所属的数据流的报文,则从所述状态记录集中删除所述第一状态记录集或更改所述第一状态记录集;
其中,所述更改所述第一状态记录集包括:
将所述第一状态记录集中的第一标记修改为第二标记,所述第一标记用于指示所述第一队列正在切换,所述第二标记用于指示所述第一队列未进行切换;或
将所述第一状态记录集中的第一标记修改为第二标记,所述第一标记用于指示所述第一队列上的数据流正在切换,所述第二标记用于指示所述第一队列上的数据流未进行切换。
在一种可能的设计中,所述处理模块用于:在暂停所述第一队列上的报文的发送,以及暂停第二队列上的报文的发送之后,确定暂停所述第一队列以及所述第二队列上的报文的发送的时长大于或等于所述暂停帧指示的时长;恢复所述第一队列以及所述第二队列上的报文的发送。
第三方面,本申请实施例提供一种节点设备,该设备包括处理器,用于实现上述第一方面描述的方法。所述设备还可以包括存储器,用于存储程序指令和数据。所述存储器与所述处理器耦合,所述处理器可以调用并执行所述存储器中存储的程序指令,用于实现上述第一方面描述的方法。所述装置还可以包括通信接口,所述通信接口用于该装置与其它设备进行通信。示例性地,该其它设备为第二节点。
在一种可能的设计中,该设备包括:
通信接口,用于在处理器的控制下通过至少两个队列向第二节点发送数据流的报文;以及在该处理器的控制下从所述第二节点接收暂停帧;其中,所述暂停帧用于指示暂停所述至少两个队列中第一队列上的报文的发送;
该处理器,用于暂停所述第一队列上的报文的发送,以及暂停第二队列上的报文的发送;其中,所述第一队列上的部分报文与所述第二队列上的部分报文属于同一个数据流。
在一种可能的设计中,所述处理器用于:查询第一状态记录集,所述第一状态记录集用于记录所述第一队列上的部分报文与所述第二队列上的部分报文属于同一个数据流;根据所述第一状态记录集,暂停所述第二队列上的报文的发送。
在一种可能的设计中,所述处理器用于:从第二状态记录集中确定与所述第一队列对应的第一状态记录集。
在一种可能的设计中,所述处理器用于:从第二状态记录集中确定与所述第一队列上的数据流对应的第一状态记录集。
在一种可能的设计中,所述第一状态记录集还用于记录所述第一队列上的部分报文与第三队列上的部分报文属于同一个数据流,所述处理器用于:暂停所述第三队列上的报文的发送。
在一种可能的设计中,所述处理器用于:在查询状态记录集之前,获取报文,所述报文所属的数据流对应于所述第一队列;若将所述报文存储在所述第二队列且所述第二队列不存在与所述报文所属的数据流的报文,则记录所述第一状态记录集;
或
在查询状态记录集之前,获取报文,所述报文所属的数据流对应于所述第二队列;若将所述报文存储在所述第一队列且所述第一队列不存在与所述报文所属的数据流的报文,则记录所述第一状态记录集。
在一种可能的设计中,所述处理器用于:在将所述报文存储在所述第二队列之后,若所述第一队列中不存在属于所述报文所属的数据流的报文,则从所述第二状态记录集中删除所述第一状态记录集或更改所述第一状态记录集;
或
在将所述报文存储在所述第一队列之后,若所述第二队列中不存在属于所述报文所属的数据流的报文,则从所述状态记录集中删除所述第一状态记录集或更改所述第一状态记录集;
其中,所述更改所述第一状态记录集包括:
将所述第一状态记录集中的第一标记修改为第二标记,所述第一标记用于指示所述第一队列正在切换,所述第二标记用于指示所述第一队列未进行切换;或
将所述第一状态记录集中的第一标记修改为第二标记,所述第一标记用于指示所述第一队列上的数据流正在切换,所述第二标记用于指示所述第一队列上的数据流未进行切换。
在一种可能的设计中,所述处理器用于:在暂停所述第一队列上的报文的发送,以及暂停第二队列上的报文的发送之后,确定暂停所述第一队列以及所述第二队列上的报文的发送的时长大于或等于所述暂停帧指示的时长;恢复所述第一队列以及所述第二队列上的报文的发送。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任意一项所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任意一项所述的方法。
第六方面,本申请提供了一种芯片***,该芯片***包括处理器,还可以包括存储器,用于实现第一方面所述的方法。该芯片***可以由芯片构成,也可以包含芯片和其他分立器件。
上述第二方面至第六方面及其实现方式的有益效果可以参考对第一方面的方法及其实现方式的有益效果的描述。
附图说明
图1A-图1C为本申请实施例中的三种网络***的框架图;
图2为本申请实施例中在为接收队列分配缓存的示意图;
图3为本申请实施例提供的一种报文控制方法的流程图;
图4A为本申请实施例中发送队列与接收队列的第一种对应关系;
图4B为本申请实施例中发送队列与接收队列的第二种对应关系;
图5A为本申请实施例中交换设备A调整数据流所入的队列的第一种调整方式的示意图;
图5B为本申请实施例中交换设备A调整数据流所入的队列的第二种调整方式的示意图;
图6A为本申请实施例中状态记录集的第一种记录方式的第一种示例;
图6B为本申请实施例中状态记录集的第一种记录方式的第二种示例;
图7A为本申请实施例中状态记录集的第一种记录方式的第三种示例;
图7B为本申请实施例中状态记录集的第一种记录方式的第四种示例;
图8A为本申请实施例中状态记录集的第二种记录方式的第一种示例;
图8B为本申请实施例中状态记录集的第二种记录方式的第二种示例;
图9A为本申请实施例中状态记录集的第三种记录方式的第一种示例;
图9B为本申请实施例中状态记录集的第三种记录方式的第二种示例;
图10为本申请实施例中状态记录集的第四种记录方式的一种示例;
图11为本申请实施例中状态记录集的第五种记录方式的一种示例;
图12为本申请实施例中状态记录集的第六种记录方式的一种示例;
图13A为本申请实施例中状态记录集的第七种记录方式的第一种示例;
图13B为本申请实施例中状态记录集的第七种记录方式的第二种示例;
图14为本申请实施例中状态记录集的第八种记录方式的一种示例;
图15A为本申请实施例中对状态记录集进行更改的第一种示意图;
图15B为本申请实施例中对状态记录集进行更改的第二种示意图;
图16为本申请实施例中对状态记录集进行更改的第三种示意图;
图17为本申请实施例中交换设备B向交换设备A发送暂停帧的第一种方式的示意图;
图18为本申请实施例中交换设备B向交换设备A发送暂停帧的第二种方式的示意图;
图19为本申请实施例中交换设备B向交换设备A发送暂停帧的第三种方式的示意图;
图20为本申请实施例中在某个数据流的报文的发送队列发生调整时的丢包情况的示意图;
图21为本申请实施例中提供的一种节点设备的结构示意图;
图22为本申请实施例中提供的另一种节点设备的结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合说明书附图以及具体的实施方式对本申请实施例中的技术方案进行详细的说明。
本文中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
另外,需要理解的是,本申请实施例涉及的“多个”,是指两个或大于两个。“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
本申请实施例提供一种报文控制方法,该方法应用于如图1A-图1C所示的网络***中。如图1A所示,该网络***包括两个交换设备,分别标记为交换设备A和交换设备B。交换设备A和交换设备B之间的通信链路上创建有多条虚拟通道,以通过该多条虚拟通道发送和接收数据流。在图1A中,以通信链路上创建8条虚拟通道为例进行说明。分别在交换设备A和交换设备B的通信端口上设置8个队列,例如,在交换设备A的通信端口上设置有8个发送队列,在交换设备B的通信端口上设置8个接收队列,8个发送队列和8个接收队列一一对应,进而形成了通信链路中的8条虚拟通道。当交换设备A需要向交换设备B发送某一个数据流时,交换设备A则将该数据流的报文依次排放在8个发送队列的其中一个发送队列中,例如,预先为该数据流分配对应的队列标识,例如,队列3,当交换设备A获取该数据流的报文后,会根据该数据流对应的队列标识,确定将该报文放在某一个发送队列,例如,发送队列3。然后,交换设备B则从接收队列3中接收该数据流的报文。
交换设备B也可以向交换设备A发送数据流,在这种情况下,交换设备B采用上述相同的方式,向交换设备A发送数据流,在此不再赘述。
与图1A不同的是,在图1B所示的网络***中,还可以包括大于2个的交换设备,例如,包括交换设备A、交换设备B、交换设备C以及交换设备D。交换设备A及交换设备B,可以分别与交换设备C和交换设备D进行通信。可以理解,进行通信就是指发送和接收数据流。在这种情况下,交换设备A分别与交换设备C和交换设备D建立进行通信的8条虚拟通道,交换设备B分别与交换设备C和交换设备D建立进行通信的8条虚拟通道,如图1B所示。其中,各个交换设备之间的通信方法与图1A中交换设备A和交换设备B之间的通信方法相同,在此不再赘述。
与图1A不同的是,在图1C所示的网络***中,还可以包括用户设备,例如,客户端,客户端与交换设备A连接。客户端可以向交换设备A发送数据流,以及从交换设备A接收数据流。其中,客户端与交换设备A之间的通信方法与图1A中交换设备A和交换设备B之间的通信方法相同,在此不再赘述。
本申请实施例中所涉及的交换设备可以包括集线器、以太网交换机、电话语音交换机、光纤交换机、交换节点或者其他能够实现为接入该交换设备的任意两个节点提供独享的电信号通路的电子设备,在本申请实施例中不作限制。
本申请实施例中所涉及的客户端,可以是用于某一功能的服务器,例如,用于存储数据的服务器,可以是安装了客户端软件的设备,该设备可以是计算机或者移动终端等,也可以是逻辑概念,例如,为软件模块或者虚拟化实现下的一个虚拟机,本申请实施例中不作限制。
需要说明的是,如图1A-图1C所示的网络***可以是数据中心网络,例如,可以是采用CLOS架构、Mesh架构或Torus架构等网络架构的数据中心。也可以是非数据中心网络,例如,可以是其它采用前述架构的非数据中心网络。当然,也可以是任何需要传输数据流的网络,在此不作限制。该网络***中所包含的客户端和交换设备的数量仅仅是一种示例,本申请实施例并不限制于此。例如,网络***中还可以包括多个客户端或者,包括更多的交换设备,交换设备的类型可以相同,也可以不同,例如,可以是TOR交换机和SPINE交换机等多种不同类型的交换机,为简明描述,不在附图中一一描述。此外,在如图1A-图1C所示的网络***中,尽管示出了客户端和多个交换设备,但该网络***中可以并不限于包括客户端和交换设备,例如,还可以包括核心网设备或者用于承载虚拟化网络功能的设备等,这些对于本领域普通技术人员而言是显而易见的,在此不一一举例。
以图1A中交换设备A通过发送队列3向交换设备B发送数据流的报文,交换设备B通过接收队列3接收数据流的报文为例,由于交换设备B会为每个接收队列分配缓存,例如,为每个接收队列分配大小为100KB-200KB的缓存,或者,根据接收队列的使用情况,给每个接收队列分配不同大小的缓存,例如,当8个接收队列中只有4个接收队列被占用,则可以给未使用的接收队列分配较小的缓存,而将大部分缓存分配到被使用的4个接收队列。在图2中,以为每个接收队列分配大小为100KB的缓存为例。这样,若交换设备B的接收队列3中存储的报文的大小超过100KB,则交换设备B将无法再存储由交换设备A发送的报文,从而,当交换设备A继续向交换设备B发送报文时,后续报文将溢出,进而造成丢包。
鉴于此,本申请实施例提供一种报文控制方法,用于解决数据流在传输过程中的丢包问题。
下面结合附图介绍本申请实施例提供的技术方案,在下面的介绍过程中,以本申请提供的技术方案应用在图1A所示的网络***中为例进行说明。
请参考图3,为本申请实施例提供的一种报文控制方法的流程图,该流程图的描述如下:
步骤301、第一节点向第二节点发送数据流的报文,第二节点接收该报文。
在下面的描述中,以第一节点为图1A中的交换设备A、第二节点为图1A中的交换设备B、交换设备A通过图1A中的8个发送队列向交换设备B发送数据流的报文为例进行说明。
在本申请实施例中,交换设备A向交换设备B发送的报文可以是存储在交换设备A中的日志信息的报文或者缓存数据的报文等,当然,也可以是其他数据流的报文,在此不作限制。需要说明的是,在其他场景中,例如在图1C所示的网络***中,该报文也可以是从其他设备接收到的数据流的报文,例如,该报文可以是从客户端接收的数据流的报文等。在下面的描述中,以交换设备A向交换设备B发送数据流1的报文以及数据流2的报文为例。
当交换设备A获取需要发送给交换设备B的报文后,则将该报文放入对应的发送队列中。具体来讲,交换设备A在接收某个数据流的首个报文后,首先会判断该报文所属的数据流,例如,通过报文携带的标识信息确定该报文所属的数据流,然后根据预设的策略,为数据流分配对应的发送队列,从而将该报文放入与该报文所属的数据流对应的发送队列中。
在本申请实施例中,预设的策略可以包括但不限于如下三种情况。
第一种预设的策略:
交换设备A随机为数据流分配发送队列。例如,交换设备A可以从8条发送队列中随机选择2个发送队列发送数据流1和数据流2。例如,随机选择使用发送队列2发送数据流1,以及选择使用发送队列4发送数据流2。
第二种预设的策略:
交换设备A可以优先为每个发送队列设置优先级,根据数据流1和数据流2的重要性或者紧急程度等信息,从8条发送队列中选择合适的发送队列。例如,设置发送队列0-发送队列7的优先级级别依次为优先级0-优先级7,其中,优先级7的优先级级别最高。这样,当交换设备A确定数据流1比数据流2紧急,则交换设备A可以选择使用优先级级别比较高的发送队列发送数据流1,选择使用优先级级别比较低的发送队列发送数据流2。例如,选择使用发送队列7发送数据流1,选择使用发送队列4发送数据流2。
第三种预设的策略:
交换设备A可以预先为每个发送队列设置优先级,以及设置用于确定数据流的优先级级别的判断方法,当有数据流需要发送时,则根据该判断方法确定需要发送的数据流的优先级级别,然后根据预设的数据流的优先级与用于发送该数据流的发送队列的优先级的映射关系,为每个数据流分配发送队列。例如,设置发送队列0-发送队列7的优先级级别依次为优先级0-优先级7,用于确定数据流的优先级级别的判断方法为根据数据流的类型确定优先级,当数据流为视频类的数据流,则确定数据流的优先级为优先级0,当数据流为音频类的数据流,则确定该数据流的优先级为优先级1,当数据流为图像类的数据流,则确定该数据流的优先级为优先级2,并设置数据流的优先级与用于发送该数据流的发送队列的优先级相同。这样,当交换设备A确定数据流1和数据流2的优先级级别后,则根据数据流的优先级级别,确定用于发送数据流的发送队列。例如,若数据流1的优先级级别为优先级1,则确定使用发送队列1发送数据流1,若数据流2的优先级级别为优先级4,则确定使用发送队列4发送数据流2。
需要说明的是,交换设备A还可以设置其他用于确定数据流的优先级级别的判断方法。例如,可以根据数据流的大小确定该数据流的优先级。例如,当数据流的大小小于或等于100MB时,确定该数据流的优先级为2,当数据流的大小大于100MB且小于200MB时,确定该数据流的优先级为1,当数据流的大小大于或等于200MB时,确定该数据流的优先级为0。当然,还可以设置其他判断方法,在此不作限制。
当然,数据流的优先级与用于发送该数据流的发送队列的优先级之间的映射关系也可以是其他形式,例如,该映射关系可以是:数据流的优先级为优先级0对应的发送队列的优先级为优先级2,数据流的优先级为优先级1对应的发送队列的优先级为优先级4,数据流的优先级为优先级2对应的发送队列的优先级为优先级3,数据流的优先级为优先级3对应的发送队列的优先级为优先级0等。这样,当交换设备A确定数据流1和数据流2的优先级级别后,则根据该映射关系,确定与每个数据流对应的发送队列。
需要说明的是,交换设备A也可以设置多个发送队列的优先级级别相同,例如,设置8个发送队列中发送队列0和发送队列1对应的优先级级别为优先级0,发送队列2-发送队列4对应的优先级级别为优先级1,发送队列5-发送队列6对应的优先级级别为2,发送队列7对应的优先级级别为3。在这种情况下,当交换设备A确定与需要发送的数据流对应的发送队列的优先级级别后,可以从多个优先级级别相同的发送队列中随机选择一个发送队列。例如,交换设备A确定与数据流1对应的发送队列的优先级级别为优先级1,则交换设备从发送队列2-发送队列4中随机选择一个发送队列,例如发送队列4,从而确定使用发送队列4发送数据流1。
为方便说明,下面以确定使用发送队列2发送数据流1以及使用发送队列4发送数据流2为例。这样,当交换设备A在接收一个报文后,若判断该报文所属的数据流为数据流1,则将该报文放入发送队列2中,若判断该报文所属的数据流为数据流2,则将该报文放入发送队列4中。交换设备A可以记录每个数据流与发送队列的对应关系,例如,数据流1与发送队列2对应,数据流2与发送队列4对应。这样,当交换设备A再次获取数据流1的报文和数据流2的报文后,则根据记录的对应关系,确定该报文所入的发送队列。
当交换设备A将报文放入对应的发送队列后,则通过调度该发送队列将报文发送给交换设备B,交换设备B则根据对应的接收队列,接收交换设备A发送的数据流的报文。作为一种示例,若交换设备A为每个发送队列设置优先级,则交换设备B也可以为每个接收队列设置优先级,例如,接收队列0-接收队列7的优先级依次为0-7。这样,交换设备B可以采用与发送队列的优先级相同的接收队列,接收报文。例如,交换设备A通过优先级为4的发送队列4发送数据流2的报文,则交换设备B通过优先级为4的接收队列4接收该报文,如图4A所示。当然,发送队列的优先级与接收队列的优先级之间也可以是其他映射关系。例如,交换设备A和交换设备B预先约定:使用优先级为2的接收队列接收优先级为0的发送队列发送的报文,使用优先级为4的接收队列接收优先级为1的发送队列发送的报文,使用优先级为3的接收队列接收优先级为2的发送队列发送的报文,使用优先级为0的接收队列接收优先级为4的发送队列发送的报文等。这样,当交换设备A通过优先级为4的发送队列4发送数据流2的报文,则交换设备B通过优先级为0的接收队列0接收该报文,如图4B所示。为方便说明,在下面的描述中,以交换设备B采用与发送队列的优先级相同的接收队列接收报文为例。
需要说明的是,当交换设备A通过发送队列发送报文时,报文中会携带发送队列的标识信息,例如,报文中可以携带发送队列的优先级信息,从而交换设备B可以通过检测该报文中的标识信息,确定使用哪一条接收队列接收该报文。
步骤302、交换设备A确定改变数据流所入的发送队列。
在本申请实施例中,数据流在传输过程中,存在需要改变数据流所入的发送队列的情况。
作为一种示例,为了方便调度,交换设备A发送数据流的过程中,可以通过监测数据流的大小或者发送队列的拥塞情况,实时调整每个数据流的发送队列。下面,分别对这两种调整方式进行说明。
第一种调整方式:
交换设备A可以将8个发送队列划分为两种,分别为用于传输大数据流的发送队列和用于传输小数据流的发送队列。例如,发送队列0-发送队列3用于传输小数据流,发送队列4-发送队列7用于传输大数据流。当交换设备A传输某一个数据流的报文的大小的总和达到第一阈值时,例如,该第一阈值可以为100KB,则交换设备A确定该数据流为大数据流,从而将该数据流的报文放入用于传输大数据流的发送队列中。
以数据流1为例进行说明。交换设备A通过步骤301中所述的方法确定使用发送队列2发送数据流1,由于在交换设备A刚开始传输数据流1时,传输的报文数量较少,例如,只传输了数据流1的3个报文,且传输数据流1的报文的大小的总和未超过该第一阈值,交换设备A确定该数据流1为小数据流(小流),而发送队列2是用于传输小数据流的发送队列,因此,交换设备A不会调整数据流1的发送队列。随着交换设备A发送的数据流1的报文越来越多,例如,传输了数据流1的100个报文,交换设备A确定传输数据流1的报文的大小的总和超过该第一阈值,则确定数据流1为大数据流(大流),在这种情况下,交换设备A确定使用用于传输大数据流的发送队列发送数据流1,而用于传输大数据流的发送队列为发送队列4-发送队列7,从而交换设备A确定调整数据流1所入的发送队列,即将数据流1的发送队列由发送队列2调整为发送队列4-发送队列7中的其中一个发送队列,例如,调整为发送队列4。这样,数据流1的后续报文将放入发送队列4中。为了便于描述,在图5A中,以在传输数据流的第6个报文时确定该数据流需要切换发送队列为例。
需要说明的是,在这种情况下,可以理解,传输数据流1的报文的大小的总和包括已经发送的报文和存放在发送队列中未发送的报文的大小的总和。
第二种调整方式:
为实现隔离拥塞的数据流,避免拥塞的数据流阻碍非拥塞的数据流的发送,在本申请实施例中,可以在8个发送队列中,设置用于发送拥塞的数据流的发送队列,例如,交换设备A将发送队列0和发送队列1设置为用于发送拥塞的数据流的发送队列,剩余的发送队列则为用于发送非拥塞的数据流的发送队列。当交换设备A确定存放在发送队列中未发送的报文的大小的总和达到第二阈值时,例如,该第二阈值可以为50KB,则交换设备A确定此时入队的报文所属的数据流为拥塞的数据流,从而将该数据流的后续报文放入用于传输拥塞的数据流的发送队列中。
以数据流2为例进行说明。交换设备A通过步骤301中所述的方法确定使用发送队列4发送数据流2,由于在交换设备A刚开始传输数据流2时,网络***中传输的数据流较少,数据流2的报文都能够及时得到调度,在这种情况下,交换设备A确定在发送队列4中未发送的报文的大小的总和未超过该第二阈值,交换设备A确定该数据流2为非拥塞的数据流,而发送队列4是用于传输非拥塞的数据流的发送队列,因此,交换设备A不会调整数据流2的发送队列。随着网络***中发送的数据流的增加,数据流2在发送队列4中的报文存在积压,从而数据流2在发送队列4中未发送的报文越来越多,例如,当数据流2的报文进入发送队列4时,在发送队列4中未发送的报文有50个,且交换设备A确定该50个报文的大小的总和超过该第二阈值,则确定数据流2为拥塞的数据流,在这种情况下,交换设备A确定使用用于传输拥塞的数据流的发送队列发送数据流2,而用于传输拥塞的数据流的发送队列为发送队列0和发送队列1,从而交换设备A确定调整数据流2所入的发送队列,即将数据流2的发送队列由发送队列4调整为发送队列0-发送队列1中的其中一个发送队列,例如,调整为发送队列1。这样,数据流2的后续报文将放入发送队列1中,如图5B所示。
需要说明的是,交换设备A也可以采用其他方式确定调整数据流所入的发送队列,在本申请实施例中仅以上述两种调整方式举例说明,不应理解为对本申请的限制。
在下面的描述中,将以数据流1的发送队列由发送队列2调整为发送队列4、数据流2的发送队列由发送队列4调整为发送队列1为例进行说明。
步骤303、交换设备A生成状态记录集。
当交换设备A确定调整某个数据流的发送队列后,交换设备A则会对该调整内容进行记录。在本申请实施例中,交换设备A通过状态记录集来进行记录。该状态记录集可以是表格,可以是描述文件,当然也可以是其他形式,在此不作限制。
交换设备A在获取某一个数据流的报文后,通过步骤301确定该报文所属的数据流对应于第一队列,然后,交换设备A通过步骤302确定需要将该报文放入与第一队列不同的第二队列中,且第二队列中不存在与该报文所属的数据流的报文,则交换设备A记录该调整内容。需要说明的是,该报文所属的数据流对应于第一队列,可以理解为该报文所属的数据流所入的原始队列为第一队列,即,该数据流的第一个报文入队之前,交换设备A确定该数据流放入第一队列,然后交换设备A记录该数据流的所入的队列的信息,当交换设备获取该数据流的后续报文后,则查询记录的信息,确定该报文对应于第一队列。
需要说明的是,该第一队列可以理解为,交换设备A在首次收到该数据流的报文时,确定的用于发送该数据流的报文的发送队列为第一队列。例如,与数据流1对应的第一队列为发送队列2,与数据流2对应的第一队列为发送队列4。另外,在这种情况下,第一队列以及第二队列为泛指。
另外,若步骤301中,交换设备A采用第三种预设的策略,来为每个数据流分配发送队列,根据第三种预设的策略中数据流的优先级与用于发送该数据流的发送队列的优先级的映射关系的不同,该报文所属的数据流对应于第一队列可以理解为如下两种意思,第一队列的优先级与该报文所属的数据流的优先级相同,或者第一队列的优先级与该报文所属的数据流的优先级满足第三种预设的策略中设置的映射关系,例如,若数据流的优先级为0则第一队列的优先级为2,若数据流的优先级为1则第一队列的优先级为4等,在此不再赘述。
在本申请实施例中,交换设备A记录该调整内容的方式可以包括但不限于如下八种。下面对该八种记录方式进行说明。
第一种记录方式:
交换设备A只记录发送队列的调整内容。
作为一种示例,交换设备A在获取数据流1的第6个报文时,确定将数据流1的发送队列由发送队列2调整为发送队列4,且在发送队列4中不存在数据流1的报文,则交换设备A在状态记录集中记录发生调整的两个发送队列的标识信息以及调整方向。
以发送队列的标识信息为发送队列的编号为例,则状态记录集可以包括如图6A和图6B所示的两种情况。在图6A中,状态记录集以表格的形式呈现,在图6B中,状态记录集以描述文件的形式呈现。
以发送队列的标识信息为发送队列的优先级,发送队列2的优先级为2,发送队列4的优先级为4为例,则状态记录集可以包括如图7A和图7B所示的两种情况。在图7A中,状态记录集以表格的形式呈现,在图7B中,状态记录集以描述文件的形式呈现。
交换设备A采用对数据流1相同的处理方式,将数据流2的调整内容记录在状态记录集中,具体请参照图6A-图7B所示,在此不再赘述。
需要说明的是,为了节省状态记录集所占用的存储空间,若交换设备A调整了多个数据流的发送队列,其中部分数据流的调整内容相同,例如,交换设备A将数据流3的发送队列由发送队列2调整为发送队列4,则在状态记录集中可以只记录一次。
第二种记录方式:
交换设备A记录每个发送队列及对应的调整内容。
作为一种示例,状态记录集中可以包括两列,第一列中记录每个发送队列的信息,例如,可以是发送队列的编号,也可以是发送队列的优先级;第二列中记录与该发送队列对应的调整内容。当某个发送队列不存在对应的调整内容时,则可以在与发送队列对应的调整内容中记录“空”或“无”,或者也可以不作任何记录。如图8A或图8B所示,数据流1的发送队列由发送队列2调整为发送队列4,则在状态记录集中分别记录与发送队列2对应的调整内容,以及与发送队列4对应的调整内容。数据流2的发送队列由发送队列4调整为发送队列1,则在状态记录集中记录与发送队列1对应的调整内容,以及在发送队列4对应的调整内容中增加由发送队列4与发送队列1之间的调整内容。在图8A中,以发送队列的信息为发送队列的编号为例,在图8B中,以发送队列的信息为发送队列的优先级为例。
第三种记录方式:
为了节省状态记录集所占用的存储空间,交换设备A只记录发生调整的发送队列的信息及对应的调整内容。
在这种记录方式下,状态记录集中记录的调整内容与第二种记录方式相同,在此不再赘述。与第二种记录方式不同的,在第二种记录方式中,由于需要记录每一个发送队列对应的调整内容,因此,如图8A或图8B所示的状态记录集固定占用8个存储空间;而在第三种记录方式中,由于交换设备A只记录发生调整的发送队列的信息及对应的调整内容,且数据流的发送队列的调整可能是实时变化的,因此,第三种记录方式中的状态记录集所占用的存储空间的大小也是实时发生变化的。例如,当交换设备A确定数据流1的发送队列由发送队列2调整为发送队列4后,状态记录集只包括与发送队列2和发送队列4对应的调整内容;当交换设备A确定数据流2的发送队列由发送队列4调整为发送队列1后,状态记录集中新增与发送队列1对应的调整内容,如图9A或图9B所示。在图9A中,以发送队列的信息为发送队列的编号为例,在图9B中,以发送队列的信息为发送队列的优先级为例。
第四种记录方式:
交换设备A记录每个数据流及对应的调整内容。
作为一种示例,状态记录集中可以包括两列,第一列中记录每个数据流的信息,例如,可以是数据流的编号,也可以是数据流的优先级;第二列中记录与该数据流对应的调整内容。当某个数据流不存在对应的调整内容时,则可以在与数据流对应的调整内容中记录“空”或“无”,或者也可以不作任何记录。如图10所示,以数据流的信息为数据流的编号为例,数据流1的发送队列由发送队列2调整为发送队列4,则在状态记录集中记录与数据流1对应的调整内容。数据流2的发送队列由发送队列4调整为发送队列1,则在状态记录集中记录与数据流2对应的调整内容。交换设备A中还存在数据流3、数据流4等,当对应的数据流的发送队列发生调整后,则需要在状态记录集中记录与数据流对应的调整内容。
需要说明的是,数据流的信息也可以用数据流的优先级表示,在这种情况下,状态记录集的具体形式与图10相似,在此不再赘述。
第五种记录方式:
为了节省状态记录集所占用的存储空间,交换设备A只记录发生调整的数据流的信息及对应的调整内容。
在这种记录方式下,状态记录集中记录的调整内容与第四种记录方式相同,在此不再赘述。与第四种记录方式不同的,在第四种记录方式中,由于需要记录每一个数据流对应的调整内容,因此,如图10所示的状态记录集固定占用若干个存储空间,也就是说,交换设备A中需要传输多少个数据流,则状态记录集则占用多少个存储空间;而在第五种记录方式中,由于交换设备A只记录发生调整的数据流的信息及对应的调整内容,且数据流的发送队列的调整可能是实时变化的,因此,第五种记录方式中的状态记录集所占用的存储空间的大小也是实时发生变化的。例如,当交换设备A确定数据流1的发送队列由发送队列2调整为发送队列4后,状态记录集只包括数据流1和对应的调整内容;当交换设备A确定数据流2的发送队列由发送队列4调整为发送队列1后,状态记录集中新增与数据流2对应的调整内容,如图11所示。在图11中,以数据流的信息为发送队列的编号为例。若数据流的信息用数据流的优先级表示,则状态记录集的具体形式与图11相似,在此不再赘述。
第六种记录方式:
交换设备A也可以采用多个状态记录子集来记录每个发送队列及对应的调整内容。
作为一种示例,可以使用两个状态记录子集进行记录。其中,第一个状态记录子集用于记录每个发送队列是否中的数据流是否发生调整,如图12所示,该第一个状态记录子集包括两列,第一列中记录每个发送队列的信息,例如,可以是发送队列的编号,也可以是发送队列的优先级;第二列中记录该发送队列中的数据流是否发生调整。该第一个状态记录子集固定占用8个存储空间,可以当某个发送队列中没有数据流发生调整时,则可以在第二列的与该发送队列对应的位置中记录“空”或“无”,或者也可以不作任何记录。如图12所示,数据流1的发送队列由发送队列2调整为发送队列4,则在第一个状态记录子集中分别记录发送队列2发生调整,以及发送队列4发生调整。数据流2的发送队列由发送队列4调整为发送队列1,则在第一个状态记录集中记录发送队列1发生调整。第二个状态记录子集用于记录发生调整的发送队列对应的调整内容。如图12所示,第二个状态记录子集也包括两列,第一列中记录每个发送队列的信息,例如,可以是发送队列的编号,也可以是发送队列的优先级;第二列中记录与该发送队列对应的调整内容。由于数据流1的发送队列由发送队列2调整为发送队列4,以及数据流2的发送队列由发送队列4调整为发送队列1,则在第二个状态记录集中分别记录与发送队列2对应的调整内容,与发送队列4对应的调整内容以及与发送队列1对应的调整内容。
第七种记录方式:
在交换设备A中,若有数据流的报文存放在发送队列中,交换设备A会在存储器中存储与该报文对应的报文描述符。若交换设备A获取数据流1的第6个报文,确定将数据流1的发送队列由发送队列2调整为发送队列4,从而将数据流1的第6个报文及数据流1的后续报文都存放在发送队列4。在这种情况下,交换设备A可以在数据流1的第5个报文的报文描述符和第6个报文的报文描述符中新增切换标记,例如,可以在报文描述符中新增若干个比特或若干个字符串,以表征该报文对应的数据流的发送队列发送调整。然后,交换设备A使用计数器对每个发送队列中的切换标记进行计数。在这种情况下,状态记录集可以包括两列,第一列中记录每个发送队列的信息,例如,可以是发送队列的编号,也可以是发送队列的优先级;第二列中记录与该发送队列对应的计数器的取值。如图13A所示,以发送队列的信息为发送队列的编号为例,数据流1的发送队列由发送队列2调整为发送队列4,则在状态记录集中,与发送队列2和发送队列4对应的计数器的取值为1。数据流2的发送队列由发送队列4调整为发送队列1,则在状态记录集中,记录与发送队列1对应的计数器的取值为1,以及将与发送队列4对应的计数器的取值加1,从而与发送队列4对应的计数器的取值为2。
在这种情况下,在状态记录集中还可以增加第三列,用于记录与每一个切换标记相关联的发送队列的信息,例如,数据流1的发送队列由发送队列2调整为发送队列4,则可以在与发送队列2对应的第三列中,增加发送队列4的信息,例如,可以是发送队列4的编号或者优先级等,如图13B所示。在图13B中,以发送队列4的信息为队列编号为例。
第八种记录方式:
在上述第一种-第三种记录方式以及第六种-第七种记录方式中,还可以在状态记录集中增加发生调整的数据流的信息。例如,可以在状态记录集中增加第三列,用于记录发生调整的数据流的标识信息,该标识信息可以是数据流的编号,也可以是数据流的优先级。以第三种记录方式为例,在状态记录集中增加第三列,该第三列中记录数据流的编号,如图14所示。
需要说明的是,上述八种记录方式仅仅是对状态记录集的几种举例,该状态记录集也可以采用其他形式,在本申请实施例中不作限制。
步骤304、交换设备A更新状态记录集。
随着交换设备A的发送队列中的报文不断地发送给交换设备B,状态记录集中记录的发送队列或者数据流的调整内容可能会发生变化。例如,当发送队列2中存放的数据流1的5个报文全部发送给交换设备B后,数据流1调整发送队列的过程完成,在这种情况下,交换设备A则需要及时更新状态记录集。
交换设备A通过步骤301及步骤302确定将对应于第一队列的数据流的报文,放入与第一队列不同的第二队列中,并通过步骤303在状态记录集中记录该调整内容后,若交换设备A确定第一队列中不存在属于该数据流的报文,则交换设备A从状态记录集中删除该调整内容或更改状态记录集。
需要说明的是,该第一队列的定义与步骤303中相同,在此不再赘述。交换设备A从状态记录集中删除该调整内容包括:更改状态记录集的行数或者在不改变状态记录集的行数的前提下,清空对应的调整内容。以状态记录集如图9A所示,当数据流2不需要调整发送队列时,交换设备A直接删除与发送队列1对应的记录,从而将状态记录集的行数由三行变为两行,如图15A所示;或者,清空与发送队列1对应的记录,但保持状态记录集的额行数不变,如图15B所示。交换设备A更改状态记录集包括:将状态记录集中用于指示所述第一队列正在切换的第一标记修改为用于指示所述第一队列未进行切换的第二标记,或,将状态记录集中用于指示所述第一队列上的数据流正在切换的第一标记修改为用于指示所述第一队列上的数据流未进行切换的第二标记。本申请实施例中的正在切换是指数据流的发送队列由该队列调整到其他队列或者数据流的发送队列由其他队列调整到该队列。未进行切换是指数据流的发送队列未发生调整。例如,以状态记录集如图12所示为例,当数据流1需要调整发送队列时,发送队列2和发送队列4在状态记录集中用于指示是否发生调整的信息为是,当数据流1不需要调整发送队列时,则将发送队列2在状态记录集中用于指示是否发生调整的信息更改为否,如图16所示。
在本申请实施例中,交换设备A可以根据状态记录集中记录的需要调整发送队列的数据流的信息,例如,数据流的编号或者数据流的优先级等,来更新状态记录集。
作为一种示例,以数据流1为例进行说明,请继续参考图5A。当交换设备A确定数据流1需要调整发送队列,则,交换设备A则对数据流1的原始发送队列(即发送队列2)中,属于数据流1的报文的数量进行统计,如图5A所示,在发送队列2中,属于数据流1的报文共有5个,则当交换设备A从发送队列2中发送了5个数据流1的报文后,则确定数据流1不需要再调整发送队列,从而可以采用前述方式,更新状态记录集中与数据流1相关的信息。
作为另一种示例,请继续参考图5A。由于数据流的每个报文都可以携带报文的编号,例如,报文1或者报文2等,这样,当交换设备A将数据流1的第6个报文放入发送队列4中,且该第6个报文为发送队列4中的第一个属于数据流1的报文,因此,交换设备A能够得知,在数据流1的原始发送队列(即发送队列2)中存放有5个报文,从而,当交换设备A通过发送队列2向交换设备B发送了数据流1的第5个报文后,则确定数据流1不需要再调整发送队列,从而可以采用前述方式,更新状态记录集中与数据流1相关的信息。
作为另一种示例,与步骤303中的第七种记录方式相对应。继续以数据流1为例,若交换设备A在数据流1的第5个报文的报文描述符中新增切换标记,该切换标记可以指示该报文所属的数据流由发送队列2调整为发送队列4,则当交换设备A发送该第5个报文时,通过该第5个报文的切换标记可知,该数据流1已经完成切换,则将状态记录集中,与发送队列2和发送队列4对应的计数器的取值减1,并删除关联队列的信息,使得状态记录集中,与发送队列2对应的计数器的取值变为0。其中,当计数器的取值为0时,表征该数据流已完成切换。
需要说明的是,步骤302-步骤304是可选的步骤,即不是必须要执行的。
步骤305、交换设备B向交换设备A发送暂停帧,交换设备A接收暂停帧。
在本申请实施例中,交换设备B向交换设备A发送暂停帧的方式可以包括但不限于如下三种:
第一种发送方式:
由于交换设备B的接收队列能够缓存的报文的数量有限,为了防止缓存溢出,当交换设备B的任意一个接收队列上缓存的报文的数量超过了一定门限,该门限可以是XOFF门限,则交换设备B会向交换设备A发送暂停帧,该暂停帧可以是基于优先级的流量控制(priority-based flow control,PFC)暂停帧。从而通过该暂停帧,暂停交换设备A中相应的发送队列上的报文的发送。如图17所示,当交换设备B的接收队列3上缓存的报文的数量超过了XOFF门限,则交换设备B向交换设备A发送PFC暂停帧,以指示交换设备A暂停发送队列3上的报文的发送,从而可以减少由于接收缓存溢出导致的丢包问题。
在具体实施过程中,当交换设备B向交换设备A发送暂停帧后,暂停帧到达交换设备A会消耗一定时间,交换设备A处理该暂停帧也需要一定时间,所以,在这段时间内,交换设备A的发送队列会继续发送向交换设备B发送数据流的报文,在这种情况下,称这种报文为飞行报文,因此,交换设备B的接收队列中必须给发送队列预留出缓冲区,来存储暂停帧生效前的飞行报文,如图17所示。该XOFF门限值就是根据该预留的缓冲区确定的。
第二种发送方式:
为了进一步减少由于接收缓存队列中的报文的溢出导致的丢包问题,交换设备B中可以降低XOFF门限的取值,如图18所示,这样,可以在交换设备B上预留更多的缓存区,进一步确保交换设备B在发送暂停帧之后,接收到的飞行报文不会造成缓存溢出和丢包。
然而,由于XOFF门限降低,这将造成接收队列中缓存的报文的数量较容易超出XOFF门限而触发暂停帧的发送,从而使数据传输过程中断的次数增加,影响数据流的传输效率。
第三种发送方式:
交换设备B中可以设置多个XOFF门限,如图19所示,交换设备A通过发送队列0和发送队列1向交换设备B发送数据流的报文,交换设备B为发送队列0和队列1分别设置了不同的XOFF门限,其中XOFF门限0对应于发送队列0,XOFF门限1对应于发送队列1,且门限0小于门限1。当交换设备B中的任意一个接收队列中的报文积压超过XOFF门限0时,交换设备B向交换设备A用于暂停发送队列0的暂停帧。由于数据流的报文在传输过程中可能会更改所入的发送队列,若发送队列1中的数据流的发送队列由发送队列1调整为发送队列0,则在这种情况下,发送队列1不受影响,从而交换设备A通过发送队列1继续向交换设备B发送报文。当接收队列中的报文继续积压,并超过XOFF门限1时,则交换设备B再次向交换设备A发送用于暂停发送队列1的暂停帧,从而避免因发送队列1中的剩余数据而引起的缓存溢出和丢包问题。
然而,由于交换设备B需要连续发送不同的暂停帧用于暂停不同的发送队列,所以网络***中的暂停帧个数明显增加,从而会影响网络***的整体性能,例如,网络带宽和硬件处理效率等。另一方面,当交换设备A与交换设备B之间通过更多虚拟通道通信,例如,使用8条虚拟通道进行通信,这种方法的配置过程将更为复杂,且更多的暂停帧也将对网络***的性能产生较严重的影响。
当然,交换设备B也可以采用其他方式,向交换设备A发送暂停帧,在本申请实施例中不作限制。
在本申请实施例中,该暂停帧用于指示交换设备A暂停至少两个队列中第一队列上的报文的发送。需要说明的是,在这种情况下,第一队列为特指,即该第一队列为与缓存的报文的数量超过XOFF门限的接收队列对应的发送队列,例如,请继续参考图4A,交换设备B上的接收队列4上缓存的报文的数量超过XOFF门限,则交换设备B向交换设备A发送用于暂停发送队列4上的报文的发送的暂停帧。
另外,若发送队列和接收队列分别设置有优先级,则暂停帧也可以用于指示交换设备A暂停某一个优先级的发送队列上的报文的发送。当某一个优先级对应有多个发送队列时,该暂停帧则用于暂停与该优先级对应的多个发送队列。
步骤306、交换设备A暂停第一队列上的报文的发送,以及暂停第二队列上的报文的发送。
在本申请实施例中,第一队列上的部分报文与该第二队列上的部分报文属于同一个数据流。
在某个数据流的报文的发送队列发生调整的过程中,如图20所示,该数据流的发送队列由发送队列1调整为发送队列0,若在该数据流完成发送队列的调整之前,交换设备B中的接收队列0由于缓存的报文的数量超过了XOFF门限,则向交换设备A发送的用于暂停发送队列0上的报文的发送的暂停帧,由于该暂停帧指示暂停发送队列0,因此,发送队列1仍然可以发送报文。然而,由于接收队列1中预留的缓存区在存储了暂停帧发送期间的飞行报文后已基本用完,从而,当发送队列1继续向交换设备B的接收队列0发送报文时,会存在缓存溢出,进而造成大量丢包的问题。
因此,在本申请实施例中,当交换设备A接收到由交换设备B发送的暂停帧后,通过解析该暂停帧,从而可以获取该暂停帧指示的需要暂停的第一队列的信息,然后,交换设备A便暂停该暂停帧指示的第一队列上的报文的发送,以及暂停与该第一队列相关的第二队列上的报文的发送。为方便描述,下文中以暂停队列代替暂停队列上的报文的发送。
在本申请实施例中,交换设备A暂停第二队列的方式有多种。例如,交换设备A根据历史使用数据,确定第二队列上的数据流通常需要调整到第一队列上发送,因此,交换设备A在接收到暂停第一队列的暂停帧后,则直接将第一队列和第二队列都暂停。
作为一种示例,本申请实施例提供一种暂停第二队列的方式,具体如下:
交换设备A通过查询第一状态记录集,确定暂停该第二队列,该第一状态记录集用于记录第一队列上的部分报文与第二队列上的部分报文属于同一个数据流。
具体来讲,当交换设备A接收该用于暂停第一队列的暂停帧后,则查询交换设备A中的第一状态记录集,若该第一状态记录集中记录某一个数据流的发送队列由第一队列调整为第二队列,或某一个数据流的发送队列由第二队列调整为第一队列,则表示该第一队列与第二队列上的部分报文属于同一个数据流。
需要说明的是,在本申请实施例中,第一状态记录集为步骤303中的状态记录集中包含有第一队列或第一队列上的数据流的调整内容的部分或全部状态记录集。
具体来讲,由于步骤303中状态记录集的形式不同,交换设备A查询第一状态记录集的方式包括到不限于如下两种。在下面的描述中,以第一队列为发送队列4为例进行说明。
第一种查询方式:
交换设备A从第二状态记录集中确定与第一队列对应的第一状态记录集。
在本申请实施例中,第二状态记录集即为步骤303中的状态记录集,第一状态记录集用于记录优先级为所述第一队列的调整内容,该调整内容用于指示该第一队列上的部分报文与第二队列上的部分报文属于同一个数据流。
若状态记录集如图6A所示,则交换设备A查询该状态记录集中是否包括发送队列4,由于该状态记录集中的两条记录均包括发送队列4,则如图6A所示的状态记录集的全部为该第一状态记录集。而在该第一状态记录集中记录了发送队列4与发送队列2,发送队列4与发送队列1之间的关联关系,因此,交换设备A根据该第一状态记录集,确定第二队列为发送队列2和发送队列1。
若状态记录集如图8A所示,则交换设备A首先通过发送队列4的编号,确定第一状态记录集,该第一状态记录集为图8A的虚框中包含的子集。然后根据该第一状态记录子集中记录的调整内容,确定第二队列为发送队列2和发送队列1。
若状态记录集如图12所示,则交换设备A首先通过发送队列4的编号,确定发送队列4是否发生调整,若为是,则再次通过发送队列4的编号,从图12中右边所示的表中确定出第一状态记录集,该第一状态记录集为图12的虚框中包含的子集。然后根据该第一状态记录子集中记录的调整内容,确定第二队列为发送队列2和发送队列1。
若状态记录集如图13B所示,则交换设备A首先通过发送队列4的编号,确定发送队列4对应的计数器的取值是否大于0,若为是,则再次通过发送队列4的编号,从图13B中确定出第一状态记录集,该第一状态记录集为图13B的虚框中包含的子集。然后根据该第一状态记录子集中记录的调整内容,确定第二队列为发送队列2和发送队列1。
需要说明的是,当状态记录集中以优先级作为发送队列的标识信息,则交换设备A首先确定发送队列4的优先级,然后采用上述相同的方式确定出第一状态记录子集和第二队列,在此不再赘述。
第二种查询方式:
交换设备A从第二状态记录集中确定与第一队列上的数据流对应的第一状态记录集。
在本申请实施例中,第二状态记录集即为步骤303中的状态记录集,第一状态记录集用于记录第一数据流的调整内容,该调整内容用于指示该第一数据流的报文分别存储在该第一队列以及第二队列上。
若状态记录集如图10所示,则交换设备A还需要记录每个发送队列上传输的数据流的信息,例如,交换设备A记录的关系为:发送队列2上传输的数据流为数据流1,发送队列4上传输的数据流为数据流1和数据流2。从而确定发送队列4上传输的数据流为数据流1和数据流2,从而在状态记录集中获取数据流1和数据流2的调整内容,则如图10所示的状态记录集的虚框中包含的子集为该第一状态记录集。而在该第一状态记录集中记录了发送队列4与发送队列2,发送队列4与发送队列1之间的关联关系,因此,交换设备A根据该第一状态记录集,确定第二队列为发送队列2和发送队列1。
当状态记录集如图11所示时,交换设备A确定第一状态记录子集和第二队列的方式与上述方式相同,在此不再赘述。
需要说明的是,在上述描述中,以第二队列为两个发送队列为例,或者,也可以将两个第二队列理解为第二队列和第三队列,交换设备A可以根据暂停帧暂停第一队列、第二队列以及第三队列。当然,第二队列也可以是一个发送队列,或者,第二队列也可以是两个或两个以上的发送队列,在本申请实施例中不对第二队列的个数进行限制。
另外需要说明的是,当交换设备A通过查询第一状态记录集,确定不存在与第二队列,则交换设备A则只暂停第一队列即可。
作为一种示例,暂停帧也可以是指示暂停某一个优先级的发送队列上的报文的发送。为方便说明,以暂停帧指示暂停优先级为第一优先级的发送队列上的报文的发送。在这种情况下,交换设备A在接收该暂停帧后,可以采用如下三种处理方式:
第一种处理方式:
交换设备A可以先确定与该优先级对应的发送队列,然后根据该发送队列的调整内容,确定需要暂停哪些发送队列。
例如,该第一优先级为优先级1,交换设备A在接收到该暂停帧后,先确定优先级为1的发送队列为发送队列1,然后交换设备A采用上述的两种查询方式中的其中一种,确定发送队列2和发送队列1中存放有同一个数据流的报文,则交换设备A确定暂停发送队列1和发送队列2上的报文的发送。
又例如,该第一优先级为优先级1,交换设备A在接收到该暂停帧后,先确定优先级为1的发送队列为发送队列1和发送队列2,然后交换设备A采用上述的两种查询方式中的其中一种,分别确定与发送队列1相关联的发送队列,以及确定与发送队列2相关联的发送队列,例如,确定发送队列1和发送队列3中存放有同一个数据流的报文,确定发送队列2和发送队列4中存放有同一个数据流的报文,则交换设备A确定暂停发送队列1、发送队列2、发送队列3以及发送队列4上的报文的发送。
第二种处理方式:
交换设备A中的第二状态记录集中记录的是与每个优先级对应的调整内容,该第二状态记录集可以是如图7A-图7B、图8B或图9B中所示的状态记录集,这样,当交换设备A接收该暂停帧后,则根据该第二状态记录集中与第一优先级对应的第一状态记录集,确定需要暂停的发送队列的优先级为第一优先级和第二优先级,然后,暂停优先级为第一优先级和第二优先级的所有的发送队列上的报文的发送。例如,该第一优先级为优先级1,交换设备A接收该暂停帧后,采用上述的两种查询方式中的其中一种,确定优先级1的发送队列和优先级4的发送队列中存放有同一个数据流的报文,然后,交换设备A确定优先级为优先级1的发送队列为发送队列1和发送队列2,优先级为优先级4的发送队列为发送队列4和发送队列5,从而交换设备A确定暂停发送队列1、发送队列2、发送队列4和发送队列5上的报文的发送。
本申请实施例中,无论暂停帧指示的是暂停某一个发送队列上的报文的发送,还是指示某一个优先级对应的发送队列上的报文的发送,交换设备A均需要查询状态记录集,以确定是否存在与暂停帧指示的发送队列相关联的其他的发送队列,若有,则需要暂停确定出的其他的发送队列上的报文的发送。具体查询方式与前文中描述的方式相同。可以理解的是,与暂停帧指示的发送队列的其他的发送队列相关联是指,暂停帧指示的发送队列与该其他的发送队列上存放同一个数据流的报文。
步骤307、交换设备A恢复第一队列以及第二队列上的报文的发送。
在本申请实施例中,交换设备B发送的暂停帧中还可以携带暂停时长,例如,暂停时长为1毫秒。则,交换设备A在接收该暂停帧后,对暂停时间进行计时,当确定暂停第一队列以及第二队列上的报文的发送的时长大于或等于该暂停帧指示的时长时,则恢复第一队列和第二队列上的报文的发送。
当然,交换设备B在向交换设备A发送暂停帧之后,当交换设备B的接收队列上缓存的报文的数量低于一定门限,例如,该门限可以是XON门限,则交换设备B可以向交换设备A再次发送暂停帧,并将该暂停帧中的暂停时长设置为0。这样,当交换设备A接收该暂停时长为0的暂停帧后,则恢复第一队列和第二队列上的报文的发送。
需要说明的是,步骤307是可选的步骤,即不是必须要执行的。
在上述技术方案中,第一节点在接收到暂停帧后,会根据状态记录集中记录的数据流的发送队列的调整信息,自动将该暂停帧应用于在数据流的发送队列的调整过程中关联的所有队列,从而可以在不调整接收队列的XOFF/XON门限以及不增加网络***中的暂停帧的个数的情况下,避免数据传输过程中的丢包问题,可以提高数据流在传输过程中的可靠性,且方法简便易于实现,能够适用于数据流在更多队列之间切换的场景。
上述本发明提供的实施例中,分别从第一节点和第二节点之间交互的角度对本申请实施例提供的方法进行了介绍。为了实现上述本申请实施例提供的方法中的各功能,第一节点可以包括硬件结构和/或软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。上述各功能中的某个功能以硬件结构、软件模块、还是硬件结构加软件模块的方式来执行,取决于技术方案的特定应用和设计约束条件。
图21示出了一种节点设备2100的结构示意图。其中,节点设备2100可以是第一节点,能够实现本申请实施例提供的方法中第一节点的功能;节点设备2100也可以是能够支持第一节点实现本申请实施例提供的方法中第一节点的功能的装置。节点设备2100可以是硬件结构、软件模块、或硬件结构加软件模块。节点设备2100可以由芯片***实现。本发明实施例中,芯片***可以由芯片构成,也可以包含芯片和其他分立器件。
节点设备2100可以包括通信模块2101以及处理模块2102。
通信模块2101可以用于执行图3所示的实施例中的步骤301、步骤305以及步骤307,和/或用于支持本文所描述的技术的其它过程。通信模块2101用于节点设备2100和其它模块进行通信,其可以是电路、器件、接口、总线、软件模块、收发器或者其它任意可以实现通信的装置。
处理模块2102可以用于执行图3所示的实施例中的步骤302-步骤304、步骤306以及步骤307,和/或用于支持本文所描述的技术的其它过程。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本发明各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
如图22所示为本申请实施例提供的节点设备2200,其中,节点设备2200可以是图3所示的实施例中的第一节点,能够实现本申请图3实施例提供的方法中第一节点的功能;节点设备2200也可以是能够支持第一节点实现本申请图3所示的实施例提供的方法中第一节点的功能的装置。其中,该节点设备2200可以为芯片***。本发明实施例中,芯片***可以由芯片构成,也可以包含芯片和其他分立器件。
节点设备2200包括至少一个处理器2220,用于实现或用于支持节点设备2200实现本申请图3所示的实施例提供的方法中第一节点的功能。示例性地,处理器2220可以从确定改变数据流所入的发送队列,或者生成状态记录集等,具体参见方法示例中的详细描述,此处不做赘述。
节点设备2200还可以包括至少一个存储器2230,用于存储程序指令和/或数据。存储器2230和处理器2220耦合。本发明实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器2220可能和存储器2230协同操作。处理器2220可能执行存储器2230中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。当处理器2220执行存储器2230中的程序指令时,可以实现图3所示的方法。
节点设备2200还可以包括通信接口2210,用于通过传输介质和其它设备进行通信,从而用于节点设备2200中的装置可以和其它设备进行通信。示例性地,该其它设备可以是第二节点。处理器2220可以利用通信接口2210收发数据。
本申请实施例中不限定上述通信接口2210、处理器2220以及存储器2230之间的具体连接介质。本申请实施例在图22中以存储器2230、处理器2220以及通信接口2210之间通过总线2240连接,总线在图22中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图22中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,处理器2220可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
在本申请实施例中,存储器2230可以是非易失性存储器,比如硬盘(hard diskdrive,HDD)或固态硬盘(solid-state drive,SSD)等,还可以是易失性存储器(volatilememory),例如随机存取存储器(random-access memory,RAM)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
本申请实施例中还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行图3中所示的实施例中第一节点执行的方法。
本申请实施例中还提供一种计算机程序产品,包括指令,当其在计算机上运行时,使得计算机执行图3中所示的实施例中第一节点执行的方法。
本申请实施例提供了一种芯片***,该芯片***包括处理器,还可以包括存储器,用于实现前述方法中第一节点的功能。该芯片***可以由芯片构成,也可以包含芯片和其他分立器件。
本申请实施例提供的方法中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,简称DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,简称DVD))、或者半导体介质(例如,SSD)等。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (19)
1.一种报文控制方法,其特征在于,包括:
第一节点通过至少两个队列向第二节点发送数据流的报文;
所述第一节点从所述第二节点接收暂停帧;其中,所述暂停帧用于指示暂停所述至少两个队列中第一队列上的报文的发送;
所述第一节点根据所述暂停帧暂停所述第一队列上的报文的发送,以及根据所述暂停帧暂停第二队列上的报文的发送;其中,所述第一队列上的部分报文与所述第二队列上的部分报文属于同一个数据流。
2.根据权利要求1所述的方法,其特征在于,所述至少两个队列包括至少两种优先级,所述第一队列的优先级为第一优先级,所述第二队列的优先级为第二优先级,所述第一优先级与所述第二优先级不同。
3.根据权利要求1所述的方法,其特征在于,所述第一节点暂停第二队列上的报文的发送,包括:
所述第一节点查询第一状态记录集,所述第一状态记录集用于记录所述第一队列上的部分报文与所述第二队列上的部分报文属于同一个数据流;
所述第一节点根据所述第一状态记录集,暂停所述第二队列上的报文的发送。
4.根据权利要求3所述的方法,其特征在于,所述第一节点查询第一状态记录集,包括:
所述第一节点从第二状态记录集中确定与所述第一队列对应的第一状态记录集。
5.根据权利要求3所述的方法,其特征在于,所述第一节点查询第一状态记录集,包括:
所述第一节点从第二状态记录集中确定与所述第一队列上的数据流对应的第一状态记录集。
6.根据权利要求3-5中任一项所述的方法,其特征在于,所述第一状态记录集还用于记录所述第一队列上的部分报文与第三队列上的部分报文属于同一个数据流,所述方法还包括:
所述第一节点暂停所述第三队列上的报文的发送。
7.根据权利要求4或5所述的方法,其特征在于,在所述第一节点查询状态记录集之前,所述方法还包括:
所述第一节点获取报文,所述报文所属的数据流对应于所述第一队列;
若所述第一节点将所述报文存储在所述第二队列且所述第二队列不存在所述报文所属的数据流的报文,则所述第一节点记录所述第一状态记录集;
或
所述第一节点获取报文,所述报文所属的数据流对应于所述第二队列;
若所述第一节点将所述报文存储在所述第一队列且所述第一队列不存在所述报文所属的数据流的报文,则所述第一节点记录所述第一状态记录集。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在所述第一节点将所述报文存储在所述第二队列之后,若所述第一队列中不存在属于所述报文所属的数据流的报文,则所述第一节点从所述第二状态记录集中删除所述第一状态记录集或所述第一节点更改所述第一状态记录集;
或
在所述第一节点将所述报文存储在所述第一队列之后,若所述第二队列中不存在属于所述报文所属的数据流的报文,则所述第一节点从所述第二状态记录集中删除所述第一状态记录集或所述第一节点更改所述第一状态记录集;
其中,所述第一节点更改所述第一状态记录集包括:
将所述第一状态记录集中的第一标记修改为第二标记,所述第一标记用于指示所述第一队列正在切换,所述第二标记用于指示所述第一队列未进行切换;或
将所述第一状态记录集中的第一标记修改为第二标记,所述第一标记用于指示所述第一队列上的数据流正在切换,所述第二标记用于指示所述第一队列上的数据流未进行切换。
9.根据权利要求1-5中任一项所述的方法,其特征在于,在所述第一节点暂停所述第一队列上的报文的发送,以及暂停第二队列上的报文的发送之后,所述方法还包括:
所述第一节点确定暂停所述第一队列以及所述第二队列上的报文的发送的时长大于或等于所述暂停帧指示的时长;
所述第一节点恢复所述第一队列以及所述第二队列上的报文的发送。
10.一种节点设备,其特征在于,包括通信模块和处理模块,其中:
所述通信模块在所述处理模块的控制下通过至少两个队列向第二节点发送数据流的报文;
所述通信模块在所述处理模块的控制下从所述第二节点接收暂停帧;其中,所述暂停帧用于指示暂停所述至少两个队列中第一队列上的报文的发送;
所述处理模块根据所述暂停帧暂停所述第一队列上的报文的发送,以及根据所述暂停帧暂停第二队列上的报文的发送;其中,所述第一队列上的部分报文与所述第二队列上的部分报文属于同一个数据流。
11.根据权利要求10所述的设备,其特征在于,所述处理模块用于:
查询第一状态记录集,所述第一状态记录集用于记录所述第一队列上的部分报文与所述第二队列上的部分报文属于同一个数据流;
根据所述第一状态记录集,暂停所述第二队列上的报文的发送。
12.根据权利要求11所述的设备,其特征在于,所述处理模块用于:
从第二状态记录集中确定与所述第一队列对应的第一状态记录集。
13.根据权利要求11所述的设备,其特征在于,所述处理模块用于:
从第二状态记录集中确定与所述第一队列上的数据流对应的第一状态记录集。
14.根据权利要求11-13中任一项所述的设备,其特征在于,所述第一状态记录集还用于记录所述第一队列上的部分报文与第三队列上的部分报文属于同一个数据流,所述处理模块用于:
暂停所述第三队列上的报文的发送。
15.根据权利要求12或13所述的设备,其特征在于,所述处理模块用于:
在查询状态记录集之前,获取报文,所述报文所属的数据流对应于所述第一队列;
若将所述报文存储在所述第二队列且所述第二队列不存在所述报文所属的数据流的报文,则记录所述第一状态记录集;
或
在查询状态记录集之前,获取报文,所述报文所属的数据流对应于所述第二队列;
若将所述报文存储在所述第一队列且所述第一队列不存在所述报文所属的数据流的报文,则记录所述第一状态记录集。
16.根据权利要求15所述的设备,其特征在于,所述处理模块用于:
在将所述报文存储在所述第二队列之后,若所述第一队列中不存在属于所述报文所属的数据流的报文,则从所述第二状态记录集中删除所述第一状态记录集或更改所述第一状态记录集;
或
在将所述报文存储在所述第一队列之后,若所述第二队列中不存在属于所述报文所属的数据流的报文,则从所述状态记录集中删除所述第一状态记录集或更改所述第一状态记录集;
其中,所述更改所述第一状态记录集包括:
将所述第一状态记录集中的第一标记修改为第二标记,所述第一标记用于指示所述第一队列正在切换,所述第二标记用于指示所述第一队列未进行切换;或
将所述第一状态记录集中的第一标记修改为第二标记,所述第一标记用于指示所述第一队列上的数据流正在切换,所述第二标记用于指示所述第一队列上的数据流未进行切换。
17.根据权利要求10-13中任一项所述的设备,其特征在于,所述处理模块用于:
在暂停所述第一队列上的报文的发送,以及暂停第二队列上的报文的发送之后,确定暂停所述第一队列以及所述第二队列上的报文的发送的时长大于或等于所述暂停帧指示的时长;
恢复所述第一队列以及所述第二队列上的报文的发送。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行如权利要求1-9中任意一项所述的方法。
19.一种计算机程序产品,其特征在于,所述计算机程序产品存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行如权利要求1-9中任意一项所述的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810746527.7A CN110708255B (zh) | 2018-07-09 | 2018-07-09 | 一种报文控制方法及节点设备 |
CN202111355997.9A CN114205299A (zh) | 2018-07-09 | 2018-07-09 | 一种报文控制方法及节点设备 |
EP19833884.0A EP3806411A4 (en) | 2018-07-09 | 2019-07-04 | MESSAGE CONTROL PROCEDURES AND NODE DEVICE |
PCT/CN2019/094746 WO2020011102A1 (zh) | 2018-07-09 | 2019-07-04 | 一种报文控制方法及节点设备 |
US17/144,949 US20210136000A1 (en) | 2018-07-09 | 2021-01-08 | Packet control method and node device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810746527.7A CN110708255B (zh) | 2018-07-09 | 2018-07-09 | 一种报文控制方法及节点设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111355997.9A Division CN114205299A (zh) | 2018-07-09 | 2018-07-09 | 一种报文控制方法及节点设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110708255A CN110708255A (zh) | 2020-01-17 |
CN110708255B true CN110708255B (zh) | 2021-11-19 |
Family
ID=69142208
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111355997.9A Pending CN114205299A (zh) | 2018-07-09 | 2018-07-09 | 一种报文控制方法及节点设备 |
CN201810746527.7A Active CN110708255B (zh) | 2018-07-09 | 2018-07-09 | 一种报文控制方法及节点设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111355997.9A Pending CN114205299A (zh) | 2018-07-09 | 2018-07-09 | 一种报文控制方法及节点设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210136000A1 (zh) |
EP (1) | EP3806411A4 (zh) |
CN (2) | CN114205299A (zh) |
WO (1) | WO2020011102A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115883466B (zh) * | 2023-03-03 | 2023-06-16 | 苏州浪潮智能科技有限公司 | 交换机的控制方法及装置、存储介质及电子装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103442391A (zh) * | 2013-09-12 | 2013-12-11 | 华为终端有限公司 | 一种数据传输的方法及用户终端、*** |
CN105337895A (zh) * | 2014-07-14 | 2016-02-17 | 杭州华三通信技术有限公司 | 一种网络设备主机单元、网络设备子卡以及网络设备 |
CN105391647A (zh) * | 2015-11-25 | 2016-03-09 | 中国联合网络通信集团有限公司 | 一种流量控制的方法及*** |
CN106411776A (zh) * | 2016-09-22 | 2017-02-15 | 上海斐讯数据通信技术有限公司 | 数据流调度***以及数据流调度方法 |
CN107733812A (zh) * | 2017-11-02 | 2018-02-23 | 东软集团股份有限公司 | 一种数据包调度方法、装置及设备 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7042842B2 (en) * | 2001-06-13 | 2006-05-09 | Computer Network Technology Corporation | Fiber channel switch |
EP2302847B1 (en) * | 2009-09-25 | 2012-05-16 | Alcatel Lucent | Control of traffic flows with different CoS in a communication network |
CN102065480A (zh) * | 2010-11-22 | 2011-05-18 | 北京邮电大学 | 基于路径优先级的无线传感器网络拥塞避免与控制方法 |
US8989009B2 (en) * | 2011-04-29 | 2015-03-24 | Futurewei Technologies, Inc. | Port and priority based flow control mechanism for lossless ethernet |
US9363181B1 (en) * | 2011-08-29 | 2016-06-07 | Marvell International Ltd. | Alternate tree flow control for STP |
US9253096B2 (en) * | 2013-03-15 | 2016-02-02 | International Business Machines Corporation | Bypassing congestion points in a converged enhanced ethernet fabric |
US10003544B2 (en) * | 2014-12-11 | 2018-06-19 | Futurewei Technologies, Inc. | Method and apparatus for priority flow and congestion control in ethernet network |
CN104811402B (zh) * | 2015-03-24 | 2018-07-20 | 华为技术有限公司 | 授权数值处理方法、装置和网络*** |
EP3278514B1 (en) * | 2015-03-30 | 2019-03-06 | British Telecommunications public limited company | Data transmission |
US10069733B2 (en) * | 2015-08-27 | 2018-09-04 | Arris Enterprises Llc | Managing Ethernet backpressure at a network device |
US9742683B1 (en) * | 2015-11-03 | 2017-08-22 | Cisco Technology, Inc. | Techniques for enabling packet prioritization without starvation in communications networks |
US10250530B2 (en) * | 2016-03-08 | 2019-04-02 | Mellanox Technologies Tlv Ltd. | Flexible buffer allocation in a network switch |
US10038652B2 (en) * | 2016-08-30 | 2018-07-31 | Dell Products L.P. | Self tuning buffer allocation in a shared-memory switch |
CN108243116B (zh) * | 2016-12-23 | 2021-09-14 | 华为技术有限公司 | 一种流量控制方法及交换设备 |
-
2018
- 2018-07-09 CN CN202111355997.9A patent/CN114205299A/zh active Pending
- 2018-07-09 CN CN201810746527.7A patent/CN110708255B/zh active Active
-
2019
- 2019-07-04 EP EP19833884.0A patent/EP3806411A4/en active Pending
- 2019-07-04 WO PCT/CN2019/094746 patent/WO2020011102A1/zh unknown
-
2021
- 2021-01-08 US US17/144,949 patent/US20210136000A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103442391A (zh) * | 2013-09-12 | 2013-12-11 | 华为终端有限公司 | 一种数据传输的方法及用户终端、*** |
CN105337895A (zh) * | 2014-07-14 | 2016-02-17 | 杭州华三通信技术有限公司 | 一种网络设备主机单元、网络设备子卡以及网络设备 |
CN105391647A (zh) * | 2015-11-25 | 2016-03-09 | 中国联合网络通信集团有限公司 | 一种流量控制的方法及*** |
CN106411776A (zh) * | 2016-09-22 | 2017-02-15 | 上海斐讯数据通信技术有限公司 | 数据流调度***以及数据流调度方法 |
CN107733812A (zh) * | 2017-11-02 | 2018-02-23 | 东软集团股份有限公司 | 一种数据包调度方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
US20210136000A1 (en) | 2021-05-06 |
EP3806411A4 (en) | 2021-08-18 |
CN114205299A (zh) | 2022-03-18 |
CN110708255A (zh) | 2020-01-17 |
EP3806411A1 (en) | 2021-04-14 |
WO2020011102A1 (zh) | 2020-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102317523B1 (ko) | 패킷 제어 방법 및 네트워크 기기 | |
KR101468833B1 (ko) | 계층적 프로파일 스케줄링 및 쉐이핑 | |
EP2466824B1 (en) | Service scheduling method and device | |
EP4057579A1 (en) | Data forwarding method, data buffering method, device, and related apparatus | |
US8942094B2 (en) | Credit-based network congestion management | |
CN101299721B (zh) | 交换网报文交换方法和交换装置 | |
WO2006026438A2 (en) | Device and method for managing oversubscription in a network | |
US11165705B2 (en) | Data transmission method, device, and computer storage medium | |
US11916790B2 (en) | Congestion control measures in multi-host network adapter | |
WO2015149460A1 (zh) | 以太网光纤通道的流量控制方法、装置及*** | |
US20130107890A1 (en) | Buffer management of relay device | |
WO2019192318A1 (zh) | 流量平滑方法、服务器及转发设备 | |
US11991088B2 (en) | System and method for congestion management in computer networks | |
US11552905B2 (en) | Managing virtual output queues | |
CN110708255B (zh) | 一种报文控制方法及节点设备 | |
CN116868553A (zh) | 用于管理端点资源和拥塞缓解的数据中心网络上的动态网络接收器驱动的数据调度 | |
CN117793583A (zh) | 报文转发方法、装置、电子设备及计算机可读存储介质 | |
CN112838992A (zh) | 报文调度方法及网络设备 | |
US20210135999A1 (en) | Packet Control Method, Flow Table Update Method, and Node Device | |
JP7255675B2 (ja) | 仮想マシン監視装置、仮想マシン監視方法およびプログラム | |
CN111416776B (zh) | 传输数据的方法和网络设备 | |
CN114070776B (zh) | 一种改进的时间敏感网络数据传输方法、装置及设备 | |
CN109327402B (zh) | 拥塞管理方法及装置 | |
CN113347112A (zh) | 一种基于多级缓存的数据包转发方法及装置 | |
CN117749726A (zh) | Tsn交换机输出端口优先级队列混合调度方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |