CN109818879A - 流量控制方法及装置 - Google Patents
流量控制方法及装置 Download PDFInfo
- Publication number
- CN109818879A CN109818879A CN201711174008.XA CN201711174008A CN109818879A CN 109818879 A CN109818879 A CN 109818879A CN 201711174008 A CN201711174008 A CN 201711174008A CN 109818879 A CN109818879 A CN 109818879A
- Authority
- CN
- China
- Prior art keywords
- subqueue
- forwarding device
- data packet
- priority
- priority query
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供了一种流量控制方法及装置,属于网络技术领域。该方法应用于第一转发设备中,第一转发设备包括多个优先级队列和多个子队列,多个子队列用于缓存第一转发设备待发送的数据包,多个优先级队列中的一个优先级队列对应多个子队列,一个优先级队列用于缓存从多个子队列出列的数据包,该方法包括:第一转发设备接收第二转发设备发送的流量控制帧,流量控制帧包括用于指示一个优先级队列的优先级信息和用于指示多个子队列中的一个子队列的子队列信息;第一转发设备根据优先级信息和子队列信息,暂停从一个子队列出列数据包。本公开能够减少发生拥塞时优先级队列的数据包整体的流完成时间。
Description
技术领域
本公开涉及网络技术领域,特别涉及一种流量控制方法及装置。
背景技术
互联网中数据包的转发过程是基于大量交换机实现的,每个交换机具有转发功能,上游交换机会将接收到的数据包转发给下游交换机,由下游交换机继续转发,直至数据包到达目的地址。为了保证交换机正常转发数据包,需要控制交换机的流量,以免交换机负荷过大。
在电气和电子工程师协会(Institute of Electrical and ElectronicsEngineers,IEEE)802.3系列标准中,提出了基于优先级的流量控制(Priority-based FlowControl,PFC)机制,在PFC机制中,上游交换机在获知下游交换机的某个优先级队列发生拥塞时,会暂停从一个优先级队列出列数据包。例如,假设下游交换机接收到优先级1对应的数据包,将该数据包入列至优先级1对应的优先级队列中,从而通过该优先级队列缓存该数据包,若该数据包入列后该优先级队列发生拥塞,下游交换机会根据该数据包生成流量控制帧,向上游交换机发送流量控制帧,该流量控制帧用于指示暂停从优先级1对应的优先级队列出列数据包,上游交换机接收到流量控制帧以后,会基于该流量控制帧,暂停从优先级1对应的优先级队列出列数据包。
在实现本公开的过程中,发明人发现相关技术至少存在以下问题:
一旦下游交换机的某优先级对应的优先级队列发生拥塞,则上游交换机中该优先级对应的优先级队列的数据包均无法出列,影响上游交换机中该优先级对应的优先级队列的数据包整体的流完成时间(Flow Comp letion Time,FCT)。
发明内容
本公开实施例提供了一种流量控制方法及装置,能够解决相关技术中一旦下游交换机的某优先级对应的优先级队列发生拥塞,则上游交换机中该优先级对应的优先级队列的数据包均无法出列的技术问题。所述技术方案如下:
第一方面,提供了一种流量控制方法,应用于第一转发设备中,所述第一转发设备包括多个优先级队列和多个子队列,所述多个子队列用于缓存所述第一转发设备待发送的数据包,所述多个优先级队列中的一个优先级队列对应多个子队列,所述一个优先级队列用于缓存从所述多个子队列出列的数据包,所述方法包括:
所述第一转发设备接收第二转发设备发送的流量控制帧,所述流量控制帧包括用于指示所述一个优先级队列的优先级信息和用于指示所述多个子队列中的一个子队列的子队列信息;
所述第一转发设备根据所述优先级信息和所述子队列信息,暂停从所述一个子队列出列数据包。
本实施例提供的方法,当第一转发设备获知第二转发设备的一个优先级队列发生拥塞时,仅会暂停从对应优先级队列的一个子队列出列数据包,仍可从对应优先级队列出列数据包,同时仍可从对应优先级队列的其他子队列出列数据包,因此对于第一转发设备待发送的每个数据包来说,目的地址对应于其他子队列的数据包仍可正常从其他子队列出列,进而进入优先级队列,再从第一转发设备转发出去,从而减少了该优先级队列的整体的FCT。进一步地,第一转发设备不会阻塞对应优先级队首的数据包,保证缓存在优先级队列的每个数据包能够从优先级队列出列进而从第一转发设备中转发出去,缓解排头阻塞问题。
在一种可能的设计中,所述子队列信息是目的地址,所述根据所述优先级信息和所述子队列信息,暂停从所述一个子队列出列数据包,包括:
所述第一转发设备计算所述目的地址的哈希值;
所述第一转发设备根据所述一个优先级队列对应的子队列的数量,对所述哈希值进行取模得到子队列标识,根据所述优先级信息和所述子队列标识暂停从所述一个子队列出列数据包。
使用目的地址做为子队列信息,可以将上游转发设备暂停的子队列与下游转发设备中与拥塞相关的子队列相对应,有助于在一大数据流造成下游转发设备的优先级队列阻塞时,单独暂停上游转发设备上该大数据流所在的子队列,从而缓解排头阻塞问题,降低FCT。
在一种可能的设计中,所述待发送的数据包包括优先级标识和目的地址,所述方法还包括:
所述第一转发设备计算所述待发送的数据包的目的地址的哈希值;
所述第一转发设备根据所述优先级标识指示的优先级队列对应的子队列的数量,对所述哈希值进行取模得到子队列标识;
根据所述优先级标识和所述子队列标识将所述待发送的数据包入列到所述子队列标识指示的子队列。
基于该设计,为每个优先级队列提供了缓存数据包的多个子队列,保证在拥塞时能够缓解排头阻塞问题,降低FCT。
在一种可能的设计中,所述方法还包括:
所述第一转发设备接收控制器发送的哈希函数信息,所述哈希函数信息用于计算所述待发送的数据包的目的地址的哈希值。
基于该设计,便于配置人员维护和测试第一转发设备的子队列与第二转发设备的子队列之间的对应关系。
第二方面,提供了一种流量控制方法,应用于第二转发设备中,所述第二转发设备包括多个优先级队列和多个子队列,所述多个子队列用于缓存所述第二转发设备待发送的数据包,所述多个优先级队列中的一个优先级队列对应多个子队列,所述一个优先级队列用于缓存从所述多个子队列出列的数据包,所述方法包括:
所述第二转发设备将从所述多个子队列中一个子队列出列的一个数据包缓存到所述一个优先级队列;
当所述一个优先级队列的深度超过阈值时,所述第二转发设备根据所述一个数据包生成流量控制帧,所述流量控制帧包括用于指示所述第一转发设备中一个优先级队列的优先级信息和用于指示所述第一转发设备中多个子队列中的一个子队列的子队列信息,所述流量控制帧用于指示所述第一转发设备根据所述优先级信息和所述子队列信息暂停从所述第一转发设备中多个子队列中的一个子队列出列数据包;
所述第二转发设备向所述第一转发设备发送所述流量控制帧。
本实施例提供的方法,当第二转发设备的优先级队列发生拥塞时,会指示第一转发设备仅暂停从一个子队列出列数据包,不会影响从优先级队列出列数据包,也不会影响从一个子队列以外的其他子队列出列数据包,能够减少优先级队列的数据包整体的FCT。
在一种可能的设计中,所述待发送的数据包包括优先级标识和目的地址,所述方法还包括:
所述第二转发设备计算所述待发送的数据包的目的地址的哈希值;
所述第二转发设备根据所述优先级标识指示的优先级队列对应的子队列的数量,对所述哈希值进行取模得到子队列标识,根据所述优先级标识和所述子队列标识将所述待发送的数据包入列到所述子队列标识指示的子队列。
在一种可能的设计中,所述子队列信息是所述一个数据包的目的地址。
在一种可能的设计中,所述方法还包括:
所述第二转发设备接收控制器发送的哈希函数信息,所述哈希函数信息用于计算所述待发送的数据包的目的地址的哈希值。
基于该设计,便于配置人员维护和测试第一转发设备的子队列与第二转发设备的子队列之间的对应关系。
第三方面,提供了一种流量控制装置,应用于第一转发设备中,所述装置包括多个功能模块,以实现上述第一方面以及第一方面的任一种可能设计中的流量控制方法。
第四方面,提供了一种流量控制装置,应用于第二转发设备中,所述装置包括多个功能模块,以实现上述第二方面以及第二方面的任一种可能设计中的流量控制方法。
第五方面,提供了一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现上述第一方面以及第一方面的任一种可能设计中的流量控制方法。
第六方面,提供了一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现上述第二方面以及第二方面的任一种可能设计中的流量控制方法。
第七方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现上述第一方面以及第一方面的任一种可能设计中的流量控制方法。
第八方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现上述第二方面以及第二方面的任一种可能设计中的流量控制方法。
第九方面,提供了一种通信系统,所述通信系统包括第一转发设备和第二转发设备,所述第一转发设备用于执行上述第一方面以及第一方面的任一种可能设计中的流量控制方法,所述第二转发设备用于执行上述第二方面以及第二方面的任一种可能设计中的流量控制方法。
附图说明
图1是本公开实施例提供的一种子队列和优先级队列的示意图;
图2是本公开实施例提供的一种实施环境的示意图;
图3是本公开实施例提供的一种数据包在网络中传输的示意图;
图4是本公开实施例提供的一种实施环境的示意图;
图5是本公开实施例提供的一种电子设备500的结构示意图;
图6是本公开实施例示出的一种流量控制方法的流程图;
图7是本公开实施例示出的一种流量控制帧的示意图;
图8是本公开实施例示出的一种流量控制帧的示意图;
图9是相关技术示出的一种暂停从优先级队列出列数据包的示意图;
图10是本公开实施例示出的一种暂停将子队列出列的数据包入列至对应优先级队列的示意图;
图11是本公开实施例示出的一种流量控制装置的结构示意图;
图12是本公开实施例示出的一种流量控制装置的结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
为了方便理解,下面先对本公开实施例中涉及的名词进行解释:
FCT:是指从发送端设备发出指定数据量的数据流到接收端设备接收到该指定数据量的数据流的转发时延。
排头阻塞(Head-of-line blocking,HOL blocking):由于先入先出(First InputFirst Output,FIFO)的队列机制,队列中队首的数据包阻塞时,队首的数据包之后的每个数据包也会阻塞,无法从队列中出列,也就无法转发出去。
入列(enqueue):在先入先出队列中,指将数据包插入到队列的队尾。
出列(dequeue):在先入先出队列中,指获得队首的数据包,并将该队首的数据包从队列中删除,从一个队列中出列的数据包指该获得的队首的数据包。
子队列(Sub Queue):参见图1,每个子队列为转发设备的一段缓存空间,子队列的数量多于优先级队列的数量,多个子队列对应于一个优先级队列,每个子队列用于缓存对应优先级队列的数据包,例如假设每个转发设备包括8个优先级队列,分别是优先级队列0至优先级队列7。优先级队列0至优先级队列7分别对应优先级0至优先级7。假设每个优先级队列对应于8个子队列,优先级队列0对应子队列00、子队列01……子队列07(即优先级队列0用于缓存从子队列00至子队列07出列的数据包),优先级队列1对应子队列10、子队列11……子队列17(即优先级队列1用于缓存从子队列10、子队列11至子队列17出列的数据包,以此类推。任一转发设备的处理器会将待发送的每个数据包先入列至一个子队列,之后处理器将从子队列出列的数据包入列至子队列对应的优先级队列。
优先级队列(Priority Queue):参见图1,每个优先级队列为转发设备的一段缓存空间,每个优先级队列对应多个子队列,用于缓存对应优先级的数据包,例如优先级队列0用于缓存优先级为0的数据包,优先级队列1用于缓存优先级为1的数据包等。任一转发设备的处理器会将从子队列出列的数据包入列至子队列对应的优先级队列,之后处理器将从优先级队列出列的数据包通过端口转发出去。
图2是本公开实施例提供的一种实施环境的示意图,该实施环境包括上游的第一转发设备201和下游的第二转发设备202。第一转发设备201通过网络和第二转发设备202连接,第一转发设备201可以为交换机、路由器或者其他具有转发功能的设备,第二转发设备202也可以为交换机、路由器或者其他具有转发功能的设备。
参见图3,其示出了一种数据包在网络中传输的示意图,网络中包括发送端设备203和接收端设备204,当数据包从发送端设备203转发至第一转发设备201时,第一转发设备201会将数据包入列至一个子队列中,再将从该子队列出列的数据包入列至一个优先级队列中,再将从该优先级队列出列的数据包转发至第二转发设备202,第二转发设备202也会将数据包入列至一个子队列中,再将从该子队列出列的数据包入列至一个优先级队列中,再将从该优先级队列出列的数据包转发至下一个转发设备,直至数据包转发至接收端设备204为止。而当第二转发设备202将某一个子队列出列的某一个数据包入列至某一个优先级队列后,当该优先级队列的深度超过阈值时,第二转发设备202会根据这一个数据包生成流量控制帧,该流量控制帧包括指示一个优先级队列的优先级信息和一个子队列的子队列信息,向第一转发设备201发送流量控制帧,第一转发设备201接收流量控制帧时,会根据优先级信息和子队列信息,暂停从一个子队列出列数据包,而不会暂停从优先级队列出列数据包,也不会暂停从这一个子队列以外的其他子队列出列数据包,从而减少优先级队列的FCT。
在一种可能设计中,参见图4,该实施环境还可以包括控制器203,控制器203用于向第一转发设备201和第二转发设备202发送哈希函数信息,哈希函数信息指示计算哈希值所使用的哈希函数,第一转发设备201和第二转发设备202可以接收控制器203的哈希函数信息,以便根据哈希函数信息计算每个数据包的目的地址的哈希值,进而将每个数据包入列至对应的子队列中。
图5是本公开实施例提供的一种电子设备500的结构示意图。参见图5,该电子设备包括:收发器501、存储器502和处理器503,该收发器501、该存储器502分别与该处理器503连接。
收发器501:收发器501用于接收数据包和发送数据包。在一种可能的设计中,收发器501可以包括接收部件和发射部件,接收部件和发射部件为两个相对独立的部件,收发器501通过接收部件接收数据包,通过发送部件发送数据包。在另一种可能的设计中,收发器501可以实现接收部件和发送部件一体化,即收发器501集成了接收功能和发送功能,自身可以在接收数据包的同时发送数据包。以上收发器501接收和发送的数据包还可以是流量控制帧,或是哈希函数信息。
存储器502:存储器502可以是与处理器503分开的部件,也可以集成在处理器503中。存储器502存储有程序代码,可以为随机存取存储器(random-access memory,RAM),只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)。
处理器503:处理器503用于调用存储器502存储的程序代码,实现下述实施例中的流量控制方法中第一转发设备或者第二转发设备的功能,处理器503可以为网络处理器(Network Processor,NP)或中央处理器(Central Processing Unit,CPU)。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由电子设备中的处理器执行以完成下述实施例中的流量控制方法。例如,所述计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图6是本公开实施例示出的一种流量控制方法的流程图,如图6所示,该方法可以应用于上述实施环境中,交互主体包括第一转发设备和第二转发设备,包括以下步骤:
601、第一转发设备配置哈希函数。
本实施例中,当第一转发设备转发每个数据包时,会根据每个数据包的目的地址的哈希值确定每个数据包对应的子队列,从而将每个数据包缓存至对应的子队列中。为此,为第一转发设备可以预先配置哈希函数,以便后续采用哈希函数计算目的地址的哈希值。其中,哈希函数用于计算每个数据包的目的地址的哈希值,可以为信息-摘要算法5(Message-Digest Algorithm 5,MD5)、信息-摘要算法4(Message-Digest Algorithm 4,MD4)、信息-摘要算法2(Message-Digest Algorithm2,MD2)、安全散列算法(Secure HashAlgorithm,SHA)等。
在一种可能的设计中,配置哈希函数的具体过程可以包括以下步骤一至步骤三:
步骤一、控制器向第一转发设备发送哈希函数信息。
(1)控制器:控制器具有控制第一转发设备的功能。控制器可以与第一转发设备建立网络连接,通过网络连接向第一转发设备发送哈希函数信息,以便通过哈希函数信息控制第一转发设备配置哈希函数。示例性地,控制器可以为软件定义网络(Software DefinedNetwork,SDN)的网络架构中的SDN控制器,可以基于OpenFlow协议或者其他通信协议向第一转发设备发送哈希函数信息。可选地,控制器可以采用软件的方式实现,即控制器可以为一种应用程序。
(2)哈希函数信息:哈希函数信息用于唯一确定对应的哈希函数,可以为哈希函数的名称、编号等。
需要说明的第一点是,针对控制器发送哈希函数信息的时机,控制器可以在网络初始化阶段向第一转发设备发送哈希函数信息,即可以在与第一转发设备建立连接的过程中向第一转发设备发送哈希函数信息。
需要说明的第二点是,针对控制器发送哈希函数信息的方式,控制器可以将哈希函数信息作为单独的数据包发送给第一转发设备,也可以将哈希函数信息添加在其他数据消息或信令中,将携带了哈希函数信息的其他数据或信令发送给第一转发设备。示例性地,控制器可以在向第一转发设备发送同步(synchronous,SYN)包时,向SYN包中添加哈希函数信息。
步骤二、第一转发设备接收控制器发送的哈希函数信息。
步骤三、第一转发设备获取哈希函数信息对应的哈希函数。
第一转发设备可以预先存储多种哈希函数,并存储了哈希函数信息和哈希函数之间的对应关系,当第一转发设备接收到哈希函数信息时,可以以哈希函数信息为索引查询该对应关系,从而获取该哈希函数信息对应的哈希函数,后续在数据包转发过程中,即会采用该哈希函数计算每个待发送的数据包的目的地址的哈希值。
602、第二转发设备配置哈希函数。
本步骤与上述步骤601类似,在此不做赘述。
在一种可能的设计中,第一转发设备和第二转发设备可以配置一致的哈希函数。例如,第一转发设备所存储的哈希函数信息和哈希函数之间的对应关系、第二转发设备所存储的哈希函数信息和哈希函数之间的对应关系可以相同,控制器向第一转发设备发送的哈希函数信息、向第二转发设备的哈希函数信息发送的哈希函数信息也可以相同,则第一转发设备和第二转发设备基于相同的哈希函数信息和相同的对应关系,会配置一致的哈希函数。
第一转发设备和第二转发设备通过配置一致的哈希函数,可以达到以下技术效果:
便于配置人员维护和测试第一转发设备的子队列与第二转发设备的子队列之间的对应关系:由于第一转发设备和第二转发设备所配置的哈希函数一致,第一转发设备和第二转发设备根据相同的目的地址所计算的哈希值会相同,而哈希值又对应着子队列标识,则对于目的地址固定的数据包来说,第一转发设备确定的子队列标识和第二转发设备确定的子队列标识之间的对应关系是固定的。那么,配置人员可以基于这种对应关系对第一转发设备和第二转发设备进行测试,如果某目的地址的数据包在第一转发设备中入列的子队列的子队列标识以及在第二转发设备中入列的子队列的子队列标识符合该对应关系,则可以确定第一转发设备和第二转发设备运行正常。
在一个示例性场景中,假设第一转发设备和第二转发设备均配置了8个优先级队列,每个优先级队列配置了8个对应的子队列,某个优先级1、目的地址A对应的数据包在网络中传输,基于数字8对目的地址A的哈希值取模后得到的数值为1,则当第一转发设备要发送该数据包时,会将该数据包入列至第一转发设备的优先级队列1对应的子队列11中,即采用子队列11缓存数据包,第二转发设备接收到该数据包时,会将该数据包入列至第二转发设备的优先级队列1对应的子队列11中,即也采用子队列11缓存数据包,也即是,数据包在流经第一转发设备和第二转发设备的过程中,缓存该数据包的子队列的子队列标识保持一致,便于对第一转发设备和第二转发设备进行维护和管理。
进一步地,上述仅是以两个转发设备配置一致的哈希函数为例,实际应用中可以采用类似的方式保证全网的转发设备均配置一致的哈希函数。例如,可以由控制器向全网的每个转发设备发送相同的哈希函数信息,则全网的转发设备均会配置一致的哈希函数,那么数据包从发送端设备向接收端设备逐级转发的过程中,缓存该数据包的子队列的子队列标识始终保持一致,有利于对全网交换设备进行集中化控制。
603、第一转发设备使用多个优先级队列和多个子队列,向下游的第二转发设备转发数据包。
转发数据包的过程具体可以包括以下步骤一至步骤三:
步骤一、第一转发设备将待发送的数据包入列到对应的子队列。
其中,将待发送的数据包入列到对应的子队列的具体过程可以包括以下(1)-(3)。
(1)计算数据包的目的地址的哈希值。
每个数据包会携带目的地址,第一转发设备获取待发送的数据包的目的地址,采用预先配置的哈希函数对该目的地址进行计算,得到哈希值。
(2)根据数据包中的优先级标识指示的优先级队列对应的子队列数量,对哈希值进行取模,得到子队列标识。
每个数据包会携带优先级标识,第一转发设备获取待发送的数据包的优先级标识,确定该优先级标识指示的优先级队列的子队列数量,基于该子队列数量对得到的哈希值进行取模,从而得到子队列标识。优先级标识例如是虚拟局域网(Virtual Local AreaNetwork,VLAN)标签中的优先权代码点(Priority Code Point,PCP),其以3个比特指示从0到7的8个优先级。示例性地,假设某个数据包的优先级为1,哈希值为801,第一转发设备中优先级为1对应的优先级队列1的子队列数量为8,则第一转发设备会基于8对801进行取模,得到1,1即为子队列标识,该子队列标识可以指示一个子队列,可以对应该优先级队列1中的子队列11。
可选地,在实施中,第一转发设备可以包括多个出端口,每个出端口可以包括多个优先级队列,例如,出端口1包括优先级队列0、优先级队列1……优先级队列7,出端口2包括优先级队列0、优先级队列1……优先级队列7,而不同出端口的同一优先级的优先级队列的子队列数量可以相同也可以不同,例如出端口1的优先级队列0和出端口2的优先级队列0的子队列数量可以不同。相应地,为了区分不同出端口对应的优先级队列,第一转发设备可以预先存储目的地址和端口号之间的对应关系、端口号和优先级队列之间的对应关系,在确定优先级队列对应的子队列数量时,可以先根据目的地址确定端口号,再确定该端口号对应的优先级队列,再确定该优先级队列的子队列数量。当第一转发设备仅包括一个出端口时,可以直接根据优先级标识确定对应的优先级队列。
可选地,数据包的优先级可以用于表示数据包对应的数据流的流量大小,某数据包的优先级高表示该数据包对应的数据流为小流,数据包的优先级低表示该数据包对应的数据流为大流,其中数据流是指同一源地址向同一目的地址一次发送的大量数据包。举例来说,数据包的发送端设备可以当某数据流的数据量大于数据量阈值时,确定该数据流为大流,则向数据流的每个数据包添加低优先级。当某数据流的数据量小于数据量阈值时,确定该数据流为小流,则向数据流的每个数据包添加高优先级。举例来说,不同数据类型的数据包(例如音频类型、视频类型和文件类型的数据包)可以具有不同的优先级。
(3)将待发送的数据包入列到子队列标识指示的子队列。
第一转发设备将待发送的数据包入列到子队列时,由于每个子队列被配置为先入先出机制,数据包会在子队列中位于队尾。
步骤二、第一转发设备将子队列的数据包出列,将出列的数据包入列到子队列对应的优先级队列。
当子队列处于正常缓存状态,即未发生拥塞、堆积等异常情况时,随着时间的推移,子队列中的每个数据包会从队尾移动至队首,第一转发设备将子队列队首的数据包出列,将出列的数据包入列到子队列对应的优先级队列。由于每个优先级队列被配置为先入先出机制,新入列的数据包会在优先级队列中排在队尾。
可选地,当将多个子队列队首的数据包入列到对应的优先级队列时,第一转发设备可以采用轮转的方式,按照每个子队列的顺序,依次将每个子队列队首的数据包入列至优先级队列中:可以将第一个子队列的队首的数据包出列,将出列的数据包入列至优先级队列中,再将第二个子队列的队首的数据包出列,将出列的数据包入列至优先级队列中,直至将最后一个子队列的队首的数据包出列,将出列的数据包入列至优先级队列。之后,继续将第一个子队列的队首的数据包出列进而入列至优先级队列中,以此类推。通过采用轮转的方式将每个子队列队首的数据包出列进而入列至优先级队列,可以有序地将每个子队列的数据包入列至对应的优先级队列,保证不同子队列队首的数据包在入列至优先级队列时不会产生冲突。
步骤三、第一转发设备将优先级队列的数据包出列,向第二转发设备转发数据包。
当优先级队列处于正常缓存状态,即未发生拥塞、堆积等异常情况时,随着时间的推移,优先级队列的数据包会从队尾移动至队首,第一转发设备将优先级队列队首的数据包出列,将出列的数据包转发给第二转发设备,也即是将该数据包通过该优先级队列对应的出端口转发给第二转发设备。其中,第一转发设备的各个出端口与第二转发设备的各个入端口之间可以采用点对点的全双工链路进行直连,即,第一转发设备的任一出端口会固定与第二转发设备对应的入端口连接,当某个数据包经过某个优先级队列从第一转发设备的某个出端口转发出去时,即会到达该出端口对应的第二转发设备的入端口。
需要说明的是,第一转发设备会预先配置该多个优先级队列,并为每个优先级队列预先配置多个子队列,以便在本步骤603中使用已配置的多个优先级队列和多个子队列转发数据包。针对配置优先级队列的过程,第一转发设备可以获取优先级队列的数量和每个优先级队列的深度,按照优先级队列的数量和每个优先级队列的深度配置多个优先级队列。针对配置子队列的过程,第一转发设备可以获取每个优先级队列所对应的子队列的数量以及每个子队列的深度,按照子队列的数量和每个子队列的深度配置多个子队列。其中,优先级队列的数量、每个优先级队列的深度、子队列的数量、每个子队列的深度可以由配置人员在第一转发设备中人工配置,可以根据实际需求确定,例如在不超过第一转发设备的存储空间的前提下,为每个优先级队列配置尽量多的子队列,以保证在拥塞时能够尽量减少FCT。另外,不同优先级队列对应的子队列数量可以相同也可以不同,不同优先级队列所对应的子队列深度可以相同也可以不同,本实施例对此不做限定。
604、第二转发设备接收到第一转发设备发送的数据包,使用第二转发设备中的多个子队列和多个优先级队列向下游设备发送数据包。
本步骤与上述步骤603类似,在此不再赘述。
605、当任一优先级队列的深度超过阈值时,第二转发设备生成流量控制帧,向第一转发设备发送流量控制帧。
由于每个优先级队列缓存能力有限,在第二转发设备使用多个优先级队列转发数据包的过程中,当任一优先级队列当前已占用的缓存空间过多时,可以确定该优先级队列发生了拥塞。其中,针对确定优先级队列发生拥塞的过程,第二转发设备可以预先为每个优先级队列设置阈值,在向任一优先级队列入列数据包的过程中,第二转发设备可以统计该优先级队列当前已占用的缓存空间,计算已占用的缓存空间与预先为该优先级队列分配的缓存空间之间的比例(即该优先级队列的深度),判断该比例是否已经超过阈值,当该比例已经超过阈值时,确定该优先级队列发生拥塞。其中,该阈值也可以称为PFC水线,为优先级队列未发生拥塞时已缓存的数据包所占用的缓存空间与预先分配的缓存空间之间的最大比例,阈值可以根据实际需求确定,例如为80%、60%等
本实施例中,当第二转发设备通过某个优先级队列缓存某个数据包之后,查询该优先级队列是否发生拥塞(即优先级队列的深度是否超过阈值),当发生拥塞时,会根据这一个数据包生成流量控制帧,流量控制帧包括用于指示第一转发设备中一个优先级队列的优先级信息和用于指示第一转发设备中多个子队列中的一个子队列的子队列信息,流量控制帧用于指示第一转发设备根据优先级信息和子队列信息暂停从第一转发设备中多个子队列中的一个子队列出列数据包,例如假设上述步骤603中,第一转发设备先在优先级队列1对应的子队列11缓存了一个数据包,再在优先级队列1缓存了这一个数据包,进而将这一个数据包转发给第二转发设备,则流量控制帧包括指示优先级队列1的优先级信息和指示子队列11的子队列信息,流量控制帧用于指示第一转发设备暂停从子队列11出列数据包。
该流量控制帧可以是对PFC报文进行扩展的PFC扩展报文,流量控制帧包括优先级信息和子队列信息。优先级信息用于指示第一转发设备中一个优先级队列,子队列信息用于指示第一转发设备中多个子队列中的一个子队列,还可以包括数据部分、报文类型、媒体访问控制(Media Access Control,MAC)控制操作码、目的MAC地址、源MAC地址、帧校验序列(Frame Check Sequence,FCS),详见以下(1)-(8)。
(1)子队列信息可以是一个数据包的目的地址:第二转发设备可以获取一个数据包的目的地址,向流量控制帧添加目的地址,以便第一转发设备可以通过流量控制帧中的目的地址确定要暂停的子队列。其中,目的地址可以指示一个子队列,可以为一个数据包的网络互连协议(Internet Protocol,IP)地址。
在一种可能的设计中,可以在流量控制帧中设置目的地址字段,第二转发设备可以在目的地址字段中添加目的地址。可选地,参见图7,现有的PFC报文包括1500字节的数据段,其中包括20字节的预留字段,可以对这种PFC报文进行扩展,在预留字段之后插入4字节的字段,作为目的地址字段,这种插入了目的地址字段的PFC报文即可作为本实施例提供的流量控制帧。
(2)优先级信息例如可以是一个字节即8个比特。该8个比特从前向后按序排列,其中一个比特的值为1,该值为1的比特所在的位置指示优先级,由此优先级信息可以指示8个优先级。
(3)数据部分:为PFC报文的协议数据单元(Protocol Data Unit,PDU),即PFCPDU,可以为1500字节。示例性地,参见图8,数据部分包括MAC控制操作码、优先级使能向量字段和暂停时长字段。
(3.1)MAC控制操作码可以为2个字节,例如为十六进制数0x0101。
(3.2)优先级使能向量(priority_enable_vector)字段:可以为2字节,高字节置0,低字节的每个位代表相应的暂停时长字段(time[n])是否有效,priority_enable_vector[n]代表优先级n,当priority_enable_vector[n]为1时,表示time[n]有效;当priority_enable_vector[n]为0,表示time[n]无效。
(3.3)暂停时长字段(time[n]):每个暂停时长字段可以为2字节,流量控制帧中的暂停时长字段可以有8个,例如为time(0)-time(7)。当priority_enable_vector[n]为0时,time[n]没有意义。当priority_enable_vector[n]为1时,time[n]代表暂停从优先级n对应的一个子队列出列数据包的暂停时长。
(4)报文类型:可以为两个字节,例如为十六进制数0x8808。
(6)源MAC地址:可以为6个字节。
(7)目的MAC地址:可以为固定的组播MAC地址,可以为6个字节,例如为0180c2000001。
(8)帧校验序列:可以为4个字节。
需要说明的第一点是,通过上述暂停时长字段,流量控制帧可以携带暂停时长:第二转发设备可以向流量控制帧添加暂停时长,该暂停时长用于指示第一转发设备在暂停时长内暂停从子队列出列数据包。暂停时长的具体数值可以根据实际需求确定,暂停时长可以与优先级对应,例如优先级高的数据包对应的暂停时长较短,优先级低的数据包对应的暂停时长较长。在实施中,可以由配置人员预先在第二转发设备中配置优先级和暂停时长的对应关系,第二转发设备可以基于一个数据包的优先级,查询该对应关系,得到该优先级对应的暂停时长,向流量控制帧添加该暂停时长。
需要说明的第二点是,在一种可能的设计中,可以扩展现有的PFC报文中字段的含义,将PFC报文中对应于优先级队列的暂停时长字段映射为对应于子队列的暂停时长字段。示例性地,参见图8,现有的PFC报文包括优先级使能向量字段(2字节)以及time(0)-time(7)这8个暂停时长字段。8个暂停时长字段中每个字段的数值指示对应优先级队列的暂停时长。例如,time(1)指示的暂停时长为5s,指示第一转发设备在5s内不从优先级队列1出列数据包。本实施例中,优先级使能向量字段的第2个字节,共8个比特,可以用于记录前述优先级信息。可以将time(0)-time(7)这8个字段映射为子队列的暂停时长。举例来说,优先级使能向量字段的第2个字节的8个比特值为“01000000”(即指示优先级为1),time(1)指示的暂停时长为5s,即流量控制帧指示第一转发设备在5s内不从优先级队列1(优先级为1)对应的某个子队列出列数据包至优先级队列1,而具体指示优先级队列1的哪个子队列由目的地址指示。
通过这种设计,可以保证基于现有的PFC报文即可指示子队列的暂停时长,第二转发设备直接向PFC报文的暂停时长字段添加暂停时长即可,无需额外在PFC报文中插入多个子队列的暂停时长字段来指示子队列的暂停时长,避免了流量控制帧的数据量过大、流量控制帧过于复杂的情况,步骤较为简单。
需要说明的第三点是,本步骤605以第二转发设备为触发优先级队列的深度超过阈值的一个数据包生成一次流量控制帧为例进行说明,在实施中,不仅可以为触发拥塞的一个数据包生成一次流量控制帧,还可以为该数据包之后入列至该优先级队列的每个数据包分别生成对应的流量控制帧:由于这一个优先级队列已经拥塞,每当第二转发设备将某一个从子队列出列的数据包入列至该优先级队列时,均可以为这一个数据包生成流量控制帧,从而将这一个流量控制帧返回给第一转发设备,进一步地,假设从这一个优先级队列触发拥塞开始,到这一个优先级队列解除拥塞的时间段内,共计有N个数据包入列至该优先级队列中,则第二转发设备可以生成N个流量控制帧。
需要说明的第四点是,针对第二转发设备发送流量控制帧的方式,由于流量控制帧是针对触发拥塞的一个数据包或拥塞后入列的一个数据包的反馈,而每个数据包是从第一转发设备的某个出端口转发至第二转发设备对应的入端口的,则为某一个数据包发送流量控制帧时,可以采用与这一个数据包的转发方向相反的方向,确定接收这一个数据包的入端口,将流量控制帧从该入端口返回至第一转发设备的对应的出端口。示例性地,假设某个数据包从第一转发设备的出端口A转发至第二转发设备的入端口B,在进入第二转发设备的优先级队列时触发了拥塞,则为这一个数据包生成的流量控制帧会从第二转发设备的入端口B发送至第一转发设备的出端口A。
606、当接收到第二转发设备的流量控制帧时,第一转发设备根据优先级信息和子队列信息暂停从一个子队列出列数据包。
当第一转发设备接收到流量控制帧时,可以获知第二转发设备的优先级队列发生拥塞,则会暂停从一个子队列出列数据包,以便缓解第二转发设备的拥塞情况。
暂停从一个子队列出列数据包的过程具体包括以下步骤一至步骤四:
步骤一、解析流量控制帧,得到流量控制帧携带的一个数据包的目的地址。
当第一转发设备解析流量控制帧时,可以从目的地址字段得到一个数据包的目的地址。另外,还可以从暂停时长字段得到暂停时长。
步骤二、计算目的地址的哈希值。
第一转发设备可以采用预先配置的哈希函数对该目的地址进行计算,得到哈希值。
步骤三、根据一个优先级队列对应的子队列数量,对哈希值进行取模得到子队列标识。
当第一转发设备解析流量控制帧时,可以根据流量控制帧中的优先级信息,例如前述8个比特,确定优先级。例如,8个比特中第1个比特值为1,其余7个比特值为0时,可以确定优先级为0,当第2个比特值为1,其余7个比特值为0时,可以确定优先级为1。
之后,第一转发设备可以获取第一转发设备该优先级对应的优先级队列的子队列数量,基于该子队列数量对哈希值进行取模,得到子队列标识。该对哈希值取模的过程类似于步骤603中对哈希值进行取模获得子队列标识的过程,在此不再赘述。
需要说明的是,考虑到第一转发设备可以采用多个出端口向第二转发设备转发数据包,为了确定流量控制帧对应哪个出端口对应的子队列,当第一转发设备通过流量控制帧得到数据包的目的地址时,可以采用目的地址为索引,查询目的地址和端口号之间的对应关系,得到该目的地址对应的端口号,确定该出端口号对应的出端口。之后,根据流量控制帧中的优先级信息,从该出端口的所有优先级队列中确定该优先级信息对应的一个优先级队列,获取这一个优先级队列的子队列数量,以便根据该子队列数量取模得到子队列标识。通过结合目的地址和端口号之间的对应关系确定子队列标识,可以达到以下技术效果:
第一转发设备之前向第二转发设备发送这一个数据包时,即根据数据包的目的地址以及目的地址和端口号之间的对应关系,确定该数据包入列的子队列,而在接收到流量控制帧时,仍根据数据包的目的地址以及目的地址和端口号之间的对应关系,确定该数据包入列的子队列,可以保证暂停出列的子队列就是之前缓存数据包的子队列,从而保证暂停的子队列的准确性较高,不会出现误暂停的情况。进一步地,由于能够精确地将上游转发设备暂停的子队列与下游转发设备中与拥塞相关的子队列相对应,有助于在一大数据流造成下游转发设备的优先级队列阻塞时,单独暂停上游转发设备上该大数据流所在的子队列,从而缓解排头阻塞问题,降低FCT。
步骤四、暂停从子队列标识指示的子队列出列数据包。
第一转发设备可以确定子队列标识对应的子队列(子队列标识对应的子队列即为子队列标识指示的子队列),暂停从该子队列出列数据包,从而在暂停期间,该子队列不会出列数据包至对应的优先级队列。
上述流量控制方法,可以达到以下技术效果:
第一,缓解第二转发设备的拥塞情况:对于第一转发设备来说,从流量控制帧得到的数据包的目的地址与之前缓存该数据包时从该数据包得到的目的地址相同,则第一转发设备基于流量控制帧计算的哈希值和基于数据包计算的哈希值相同,则第一转发设备基于流量控制帧获取到的子队列标识和基于数据包获取到的子队列标识相同,则暂停出列的子队列就是之前缓存数据包的子队列。换句话说,如果第一转发设备基于某个子队列进行缓存的数据包触发下游的第二转发设备拥塞,第一转发设备就会暂停从该子队列出列数据包至对应的优先级队列,也就不会将该子队列出列的数据包转发给第二转发设备。由此进入第二转发设备发生拥塞的优先级队列的数据包的数量减少,能够缓解该优先级队列的拥塞情况。
第二,减少第一转发设备对应优先级队列的FCT:相关技术中,上游交换机在获知下游交换机的某个优先级队列发生拥塞时,会暂停从对应的优先级队列出列数据包,由于该优先级队列的数据包均无法转发,导致该优先级队列的数据包整体的FCT极大。而本实施例中,第一转发设备待发送的数据包在进入优先级队列前,先进入起到缓存作用的多个子队列,在获知下游交换机的某一个优先级队列发生拥塞时,暂停对应优先级队列的多个子队列中的一个子队列的出列,但仍可以从对应该优先级队列的其他子队列出列数据包,入列至该优先级队列。那么,对于第一转发设备待发送的每个数据包来说,目的地址对应于其他子队列的数据包仍可正常从其他子队列出列,进而进入优先级队列,再从第一转发设备转发出去,从而减少了该优先级队列的整体的FCT。
第三,缓解第一转发设备对应优先级队列的HOL问题:参见图9,相关技术中,第一转发设备暂停对应的优先级队列转发数据包,即阻塞优先级队列队首的数据包时,基于先入先出机制,该优先级队列的队首之后的每个数据包都会阻塞,无法从第一转发设备中转发出去。而参见图10,本实施例中,第一转发设备仅会暂停从流量控制帧指示的子队列出列数据包,而不会阻塞优先级队列本身,即优先级队列中的每个数据包仍会正常地从第一转发设备转发出去,从而缓解HOL问题。
需要说明的是,本实施例中,第二转发设备可以重复执行上述步骤605-606。
607、当优先级队列解除拥塞时,第二转发设备再次生成流量控制帧,再次向第一转发设备发送流量控制帧。
对于第二转发设备中发生拥塞的优先级队列来说,第一转发设备向该优先级队列转发的数据包的数量会减少,即进入该优先级队列的数据包会减少,同时随着时间的推移,该优先级队列中的数据包会逐渐从第二转发设备中转发出去,则优先级队列中已占用的缓存空间会减少,最终会解除拥塞。此时,第二转发设备可以确定优先级队列解除拥塞,再次生成流量控制帧,流量控制帧用于指示恢复从前述已暂停出列的子队列出列数据包,以便第一转发设备继续将出列的数据包入列至对应优先级队列进而转发至第二转发设备。
针对确定优先级队列解除拥塞的过程,第二转发设备可以统计拥塞的优先级队列当前已占用的缓存空间,计算已占用的缓存空间与预先为该优先级队列分配的缓存空间之间的比例,即该优先级队列的深度,判断该比例是否已经超过阈值,当该比例不超过阈值时,确定该优先级队列解除了拥塞。
与上述步骤605类似,再次生成的流量控制帧同样包括用于指示第一转发设备中一个优先级队列的优先级信息和用于指示第一转发设备中多个子队列中的一个子队列的子队列信息,子队列信息同样可以为一个数据包的目的地址。相区别的是,再次生成的流量控制帧携带的暂停时长可以为0。
608、当接收到第二转发设备再次发送的流量控制帧时,第一转发设备恢复从已暂停出列的子队列出列数据包。
当第一转发设备接收到第二转发设备再次发送的流量控制帧时,会解析该流量控制帧,得到优先级信息和目的地址,计算该目的地址的哈希值,根据一个优先级队列对应的子队列数量,对哈希值进行取模,得到子队列标识,根据优先级信息和子队列标识恢复从子队列标识指示的子队列出列数据包。
需要说明的第一点是,上述步骤607-608根据再次发送的流量控制帧的指示恢复从子队列出列数据包仅为一种示例,在实施中,第一转发设备也可以当到达暂停时长时,恢复从已暂停出列的子队列出列数据包。
需要说明的第二点是,上述过程中第一转发设备的各个步骤可以由第一转发设备的处理器执行,第一转发设备的处理器可以为网络处理器(Network Processor,NP)或中央处理器(Central Processing Unit,CPU),第二转发设备的各个步骤可以由第二转发设备的处理器执行,第二转发设备的处理器也可以为NP或CPU。
需要说明的第三点是,本实施例仅是以两个转发设备进行交互为例进行说明,在实施中,当第一转发设备的某个优先级队列发生拥塞时,可以向该第一转发设备的上游的转发设备发送流量控制帧,指示第三转发设备暂停从某个子队列出列数据包,依次类推,网络中各个转发设备均可以采用本实施例提供的方法向对应的上游转发设备进行反馈,直至反馈至数据包的发送端设备。
图11是根据一示例性实施例示出的一种流量控制装置的结构示意图,应用于第一转发设备中,如图11所示,该装置包括:接收模块1101和暂停模块1102。
接收模块1101,用于接收流量控制帧;
暂停模块1102,用于执行上述步骤606。
在一种可能的设计中,暂停模块1102,包括:
计算子模块,用于执行上述步骤606中的步骤二;
取模子模块,用于执行上述步骤606中的步骤三;
暂停子模块,用于执行上述步骤606中的步骤四。
在一种可能的设计中,该装置还包括:
计算模块,用于执行上述步骤603中的(1);
取模模块,用于执行上述步骤603中的(2);
入列模块,用于执行上述步骤606中的(3);
在一种可能的设计中,接收模块1101,还用于接收哈希函数信息。
图12是根据一示例性实施例示出的一种流量控制装置的结构示意图,应用于第二转发设备中,如图12所示,该装置包括:缓存模块1201、生成模块1202和发送模块1203。
缓存模块1201,用于执行上述步骤604;
生成模块1202,用于生成流量控制帧;
发送模块1203,用于发送流量控制帧。
在一种可能的设计中,该装置还包括:
计算模块,用于计算待发送的数据包的目的地址的哈希值;
取模模块,用于对哈希值进行取模得到子队列标识;
入列模块,用于将待发送的数据包入列到子队列标识指示的子队列。
在一种可能的设计中,该装置还包括:
接收模块,用于接收控制器发送的哈希函数信息。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的流量控制装置在控制流量时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将第一转发设备和第二转发设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的流量控制装置与流量控制方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,DVD)、或者半导体介质(例如固态硬盘)等。
以上所述仅为本公开的可选实施例,并不用以限制本公开,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (19)
1.一种流量控制方法,其特征在于,应用于第一转发设备中,所述第一转发设备包括多个优先级队列和多个子队列,所述多个子队列用于缓存所述第一转发设备待发送的数据包,所述多个优先级队列中的一个优先级队列对应多个子队列,所述一个优先级队列用于缓存从所述多个子队列出列的数据包,所述方法包括:
所述第一转发设备接收第二转发设备发送的流量控制帧,所述流量控制帧包括用于指示所述一个优先级队列的优先级信息和用于指示所述多个子队列中的一个子队列的子队列信息;
所述第一转发设备根据所述优先级信息和所述子队列信息,暂停从所述一个子队列出列数据包。
2.根据权利要求1所述的方法,其特征在于,所述子队列信息是目的地址,所述根据所述优先级信息和所述子队列信息,暂停从所述一个子队列出列数据包,包括:
所述第一转发设备计算所述目的地址的哈希值;
所述第一转发设备根据所述一个优先级队列对应的子队列的数量,对所述哈希值进行取模得到子队列标识,根据所述优先级信息和所述子队列标识暂停从所述一个子队列出列数据包。
3.根据权利要求1或2所述的方法,其特征在于,所述待发送的数据包包括优先级标识和目的地址,所述方法还包括:
所述第一转发设备计算所述待发送的数据包的目的地址的哈希值;
所述第一转发设备根据所述优先级标识指示的优先级队列对应的子队列的数量,对所述哈希值进行取模得到子队列标识;
所述第一转发设备根据所述优先级标识和所述子队列标识将所述待发送的数据包入列到所述子队列标识指示的子队列。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:
所述第一转发设备接收控制器发送的哈希函数信息,所述哈希函数信息用于计算所述待发送的数据包的目的地址的哈希值。
5.一种流量控制方法,其特征在于,应用于第二转发设备中,所述第二转发设备包括多个优先级队列和多个子队列,所述多个子队列用于缓存所述第二转发设备待发送的数据包,所述多个优先级队列中的一个优先级队列对应多个子队列,所述一个优先级队列用于缓存从所述多个子队列出列的数据包,所述方法包括:
所述第二转发设备将从所述多个子队列中一个子队列出列的一个数据包缓存到所述一个优先级队列;
当所述一个优先级队列的深度超过阈值时,所述第二转发设备根据所述一个数据包生成流量控制帧,所述流量控制帧包括用于指示所述第一转发设备中一个优先级队列的优先级信息和用于指示所述第一转发设备中多个子队列中的一个子队列的子队列信息,所述流量控制帧用于指示所述第一转发设备根据所述优先级信息和所述子队列信息暂停从所述第一转发设备中多个子队列中的一个子队列出列数据包;
所述第二转发设备向所述第一转发设备发送所述流量控制帧。
6.根据权利要求5所述的方法,其特征在于,所述待发送的数据包包括优先级标识和目的地址,所述方法还包括:
所述第二转发设备计算所述待发送的数据包的目的地址的哈希值;
所述第二转发设备根据所述优先级标识指示的优先级队列对应的子队列的数量,对所述哈希值进行取模得到子队列标识,根据所述优先级标识和所述子队列标识将所述待发送的数据包入列到所述子队列标识指示的子队列。
7.根据权利要求5或6所述的方法,其特征在于,所述子队列信息是所述一个数据包的目的地址。
8.根据权利要求5至7任一项所述的方法,其特征在于,所述方法还包括:
所述第二转发设备接收控制器发送的哈希函数信息,所述哈希函数信息用于计算所述待发送的数据包的目的地址的哈希值。
9.一种流量控制装置,其特征在于,应用于第一转发设备中,所述第一转发设备包括多个优先级队列和多个子队列,所述多个子队列用于缓存所述第一转发设备待发送的数据包,所述多个优先级队列中的一个优先级队列对应多个子队列,所述一个优先级队列用于缓存从所述多个子队列出列的数据包,所述装置包括:
接收模块,用于接收第二转发设备发送的流量控制帧,所述流量控制帧包括用于指示所述一个优先级队列的优先级信息和用于指示所述多个子队列中的一个子队列的子队列信息;
暂停模块,用于根据所述优先级信息和所述子队列信息,暂停从所述一个子队列出列数据包。
10.根据权利要求9所述的装置,其特征在于,所述子队列信息是目的地址,所述暂停模块,包括:
计算子模块,用于所述第一转发设备计算所述目的地址的哈希值;
取模子模块,用于根据所述一个优先级队列对应的子队列的数量,对所述哈希值进行取模得到子队列标识;
暂停子模块,用于根据所述优先级信息和所述子队列标识暂停从所述一个子队列出列数据包。
11.根据权利要求9或10所述的装置,其特征在于,所述待发送的数据包包括优先级标识和目的地址,所述装置还包括:
计算模块,用于计算所述待发送的数据包的目的地址的哈希值;
取模模块,用于根据所述优先级标识指示的优先级队列对应的子队列的数量,对所述哈希值进行取模得到子队列标识;
入列模块,用于根据所述优先级标识和所述子队列标识将所述待发送的数据包入列到所述子队列标识指示的子队列。
12.根据权利要求9至11任一项所述的装置,其特征在于,所述接收模块,还用于接收控制器发送的哈希函数信息,所述哈希函数信息用于计算所述待发送的数据包的目的地址的哈希值。
13.一种流量控制装置,其特征在于,应用于第二转发设备中,所述第二转发设备包括多个优先级队列和多个子队列,所述多个子队列用于缓存所述第二转发设备待发送的数据包,所述多个优先级队列中的一个优先级队列对应多个子队列,所述一个优先级队列用于缓存从所述多个子队列出列的数据包,所述装置包括:
缓存模块,用于将从所述多个子队列中一个子队列出列的一个数据包缓存到所述一个优先级队列;
生成模块,用于当所述一个优先级队列的深度超过阈值时,根据所述一个数据包生成流量控制帧,所述流量控制帧包括用于指示所述第一转发设备中一个优先级队列的优先级信息和用于指示所述第一转发设备中多个子队列中的一个子队列的子队列信息,所述流量控制帧用于指示所述第一转发设备根据所述优先级信息和所述子队列信息暂停从所述第一转发设备中多个子队列中的一个子队列出列数据包;
发送模块,用于向所述第一转发设备发送所述流量控制帧。
14.根据权利要求13所述的装置,其特征在于,所述待发送的数据包包括优先级标识和目的地址,所述装置还包括:
计算模块,用于计算所述待发送的数据包的目的地址的哈希值;
取模模块,用于根据所述优先级标识指示的优先级队列对应的子队列的数量,对所述哈希值进行取模得到子队列标识;
入列模块,用于根据所述优先级标识和所述子队列标识将所述待发送的数据包入列到所述子队列标识指示的子队列。
15.根据权利要求13或14所述的装置,其特征在于,所述子队列信息是所述一个数据包的目的地址。
16.根据权利要求13至15任一项所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收控制器发送的哈希函数信息,所述哈希函数信息用于计算所述待发送的数据包的目的地址的哈希值。
17.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至权利要求4中任一项所述的流量控制方法中所执行的操作,或实现如权利要求5至权利要求8中任一项所述的流量控制方法中所执行的操作。
18.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求4中任一项所述的流量控制方法中执行的操作,或如权利要求5至权利要求8中任一项所述的流量控制方法中执行的操作。
19.一种通信系统,其特征在于,所述通信系统包括第一转发设备和第二转发设备;所述第一转发设备包括多个优先级队列和多个子队列,所述第一转发设备中的多个子队列用于缓存所述第一转发设备待发送的数据包,所述第一转发设备中的多个优先级队列中的一个优先级队列对应多个子队列,所述第一转发设备中的一个优先级队列用于缓存从所述第一转发设备中的多个子队列出列的数据包;所述第二转发设备包括多个优先级队列和多个子队列,所述第二转发设备中的多个子队列用于缓存所述第二转发设备待发送的数据包,所述第二转发设备中的多个优先级队列中的一个优先级队列对应多个子队列,所述第二转发设备中的一个优先级队列用于缓存从所述第二转发设备中的多个子队列出列的数据包;
所述第二转发设备,用于将从所述第二转发设备中的多个子队列中一个子队列出列的一个数据包缓存到所述第二转发设备中的一个优先级队列;所述第二转发设备,还用于当所述第二转发设备中的一个优先级队列的深度超过阈值时,根据所述一个数据包生成流量控制帧,所述流量控制帧包括用于指示所述第一转发设备中一个优先级队列的优先级信息和用于指示所述第一转发设备中多个子队列中的一个子队列的子队列信息,所述流量控制帧用于指示所述第一转发设备根据所述优先级信息和所述子队列信息暂停从所述第一转发设备中多个子队列中的一个子队列出列数据包;
所述第二转发设备,还用于向所述第一转发设备发送所述流量控制帧;
所述第一转发设备,用于接收所述第二转发设备发送的所述流量控制帧;
所述第一转发设备,还用于根据所述优先级信息和所述子队列信息,暂停从所述第一转发设备中的一个子队列出列数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711174008.XA CN109818879A (zh) | 2017-11-22 | 2017-11-22 | 流量控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711174008.XA CN109818879A (zh) | 2017-11-22 | 2017-11-22 | 流量控制方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109818879A true CN109818879A (zh) | 2019-05-28 |
Family
ID=66601345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711174008.XA Pending CN109818879A (zh) | 2017-11-22 | 2017-11-22 | 流量控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109818879A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111756650A (zh) * | 2020-06-11 | 2020-10-09 | 广东浪潮大数据研究有限公司 | 一种数据处理方法、装置、运算芯片及存储介质 |
CN111866148A (zh) * | 2020-07-23 | 2020-10-30 | 浪潮云信息技术股份公司 | 一种消息队列流量控制系统 |
CN113709056A (zh) * | 2021-08-26 | 2021-11-26 | 无锡沐创集成电路设计有限公司 | 内存流量控制方法、装置、存储介质及电子设备 |
WO2022242170A1 (zh) * | 2021-05-21 | 2022-11-24 | 华为技术有限公司 | 一种数据处理方法以及相关设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102143053A (zh) * | 2010-11-12 | 2011-08-03 | 华为技术有限公司 | 传输数据的方法、装置和系统 |
CN102611620A (zh) * | 2012-02-23 | 2012-07-25 | 福建星网锐捷网络有限公司 | 拥塞控制方法和报文处理设备 |
CN103534997A (zh) * | 2011-04-29 | 2014-01-22 | 华为技术有限公司 | 用于无损耗以太网的基于端口和优先级的流控制机制 |
CN103905932A (zh) * | 2014-04-23 | 2014-07-02 | 河北工程大学 | 一种基于NC和QoS感知的服务互通以太网无源光网络系统 |
CN106027416A (zh) * | 2016-05-23 | 2016-10-12 | 北京邮电大学 | 一种基于时空结合的数据中心网络流量调度方法及系统 |
CN106789739A (zh) * | 2017-02-24 | 2017-05-31 | 上海斐讯数据通信技术有限公司 | 一种多级多列可配置调度管理方法及系统 |
-
2017
- 2017-11-22 CN CN201711174008.XA patent/CN109818879A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102143053A (zh) * | 2010-11-12 | 2011-08-03 | 华为技术有限公司 | 传输数据的方法、装置和系统 |
CN103534997A (zh) * | 2011-04-29 | 2014-01-22 | 华为技术有限公司 | 用于无损耗以太网的基于端口和优先级的流控制机制 |
CN102611620A (zh) * | 2012-02-23 | 2012-07-25 | 福建星网锐捷网络有限公司 | 拥塞控制方法和报文处理设备 |
CN103905932A (zh) * | 2014-04-23 | 2014-07-02 | 河北工程大学 | 一种基于NC和QoS感知的服务互通以太网无源光网络系统 |
CN106027416A (zh) * | 2016-05-23 | 2016-10-12 | 北京邮电大学 | 一种基于时空结合的数据中心网络流量调度方法及系统 |
CN106789739A (zh) * | 2017-02-24 | 2017-05-31 | 上海斐讯数据通信技术有限公司 | 一种多级多列可配置调度管理方法及系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111756650A (zh) * | 2020-06-11 | 2020-10-09 | 广东浪潮大数据研究有限公司 | 一种数据处理方法、装置、运算芯片及存储介质 |
CN111866148A (zh) * | 2020-07-23 | 2020-10-30 | 浪潮云信息技术股份公司 | 一种消息队列流量控制系统 |
WO2022242170A1 (zh) * | 2021-05-21 | 2022-11-24 | 华为技术有限公司 | 一种数据处理方法以及相关设备 |
CN113709056A (zh) * | 2021-08-26 | 2021-11-26 | 无锡沐创集成电路设计有限公司 | 内存流量控制方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11711319B2 (en) | Methods and apparatus for flow control associated with a switch fabric | |
JP6938766B2 (ja) | パケット制御方法およびネットワーク装置 | |
US9705827B2 (en) | Methods and apparatus for virtual channel flow control associated with a switch fabric | |
CN109818879A (zh) | 流量控制方法及装置 | |
CN112585914B (zh) | 报文转发方法、装置以及电子设备 | |
JP7231749B2 (ja) | パケットスケジューリング方法、スケジューラ、ネットワーク装置及びネットワークシステム | |
US20140269288A1 (en) | Software defined network-based load balancing for physical and virtual networks | |
WO2023283902A1 (zh) | 一种报文传输方法及装置 | |
JP5749732B2 (ja) | キューの充填レベルの更新を制御することにより帯域幅を節約しながらデータを受信し記憶するアセンブリおよび方法 | |
JP2007201965A (ja) | 送信制御機能を備えるパケット中継装置 | |
EP3468115B1 (en) | Method to improve availabilty of real-time computer networks | |
CN108777646A (zh) | 流量监控方法及装置 | |
CN104852855B (zh) | 拥塞控制方法、装置及设备 | |
KR20220058576A (ko) | 데이터 송신을 제어하기 위한 방법 및 장치, 및 저장 매체 | |
CN111147381B (zh) | 流量均衡方法和装置 | |
Kotani et al. | Packet-in message control for reducing cpu load and control traffic in openflow switches | |
EP3275139B1 (en) | Technologies for network packet pacing during segmentation operations | |
CN109995608B (zh) | 网络速率计算方法和装置 | |
Baldi et al. | Time-driven priority router implementation: Analysis and experiments | |
WO2019200568A1 (zh) | 一种数据通信方法及装置 | |
WO2022052800A1 (zh) | 一种通信系统、数据处理方法以及相关设备 | |
CN111917624B (zh) | 一种在vxlan传输中控制信息的传送方法及系统 | |
WO2021026740A1 (zh) | 流量均衡方法、网络设备及电子设备 | |
Wang et al. | Mpcr: Multi-path credit reservation protocol | |
CN118138533A (zh) | 一种数据传输方法和节点 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190528 |
|
WD01 | Invention patent application deemed withdrawn after publication |