CN113890860A - 用于支持时延受限的数据交换的方法、设备及介质 - Google Patents
用于支持时延受限的数据交换的方法、设备及介质 Download PDFInfo
- Publication number
- CN113890860A CN113890860A CN202111370549.6A CN202111370549A CN113890860A CN 113890860 A CN113890860 A CN 113890860A CN 202111370549 A CN202111370549 A CN 202111370549A CN 113890860 A CN113890860 A CN 113890860A
- Authority
- CN
- China
- Prior art keywords
- queue
- data packet
- priority
- target
- queues
- 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.)
- Granted
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/50—Queue 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/56—Queue scheduling implementing delay-aware scheduling
- H04L47/564—Attaching a deadline to packets, e.g. earliest due date 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/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
- H04Q—SELECTING
- H04Q11/00—Selecting arrangements for multiplex systems
- H04Q11/0001—Selecting arrangements for multiplex systems using optical switching
- H04Q11/0005—Switch and router aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q11/00—Selecting arrangements for multiplex systems
- H04Q11/0001—Selecting arrangements for multiplex systems using optical switching
- H04Q11/0062—Network aspects
- H04Q2011/0073—Provisions for forwarding or routing, e.g. lookup tables
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开描述了一种用于支持时延受限的数据交换的方法,是应用于包括输入端口和输出端口的联网设备,方法包括从输入端口接收待插入数据包并基于待插入数据包的时延限制要求确定优先级;基于待插入数据包的优先级将待插入数据包插入与对应的虚拟输出队列的优先级队列中;基于多个优先级队列的优先级和优先级队列中的数据包的生存时间从各个虚拟输出队列中选择存在最小的生存时间的数据包且优先级最高的优先级队列作为各个虚拟输出队列的用于调度的待调度队列,其中,生存时间由时延限制要求确定;基于待调度队列进行匹配和数据交换以使待调度队列中的数据包被从对应的输出端口输出。由此,能够提高实时吞吐量和降低延迟。
Description
技术领域
本公开涉及数据交换领域,具体涉及一种用于支持时延受限的数据交换的方法、设备及介质。
背景技术
随着互联网的高速发展,越来越多的应用领域对数据包的传输具有严格的时延要求。典型的应用场景例如可以包括多媒体通信系统、远程医疗、触觉互联网(TactileInternet)、工业互联网、工厂自动化和机器人协同等。这些实时的应用场景一般需要进行数据交换以高质量地完成服务。具体地,可以通过搭建以联网设备(例如交换机)为网络核心的实时交换网络以实现数据交换。
目前一些联网设备一般基于Qos(Quality of Service,服务质量)设置虚拟输入队列(Virtual Output Queue,VOQ)中的队列的优先级。例如,应用较为广泛的交换机常常采用虚拟输出队列的输入队列结构,每一个输入端口会设置有N个VOQ队列(N为输出端口的数目),每一个VOQ又分为若干个(例如8个)基于QoS设置优先级的先进先出队列,然后基于iSLIP调度算法从N个端口(输入端和输出端)获得无冲突匹配,交换机根据匹配项交换无冲突匹配对应的端口的数据包。然而,基于QoS设置优先级的方式并不适用于时延受限的场景。
发明内容
本公开是有鉴于上述现有技术的状况而提出的,其目的在于提供一种能够提高实时吞吐量和降低延迟的用于支持时延受限的数据交换的方法、设备及介质。
为此,本公开第一方面提供一种用于支持时延受限的数据交换的方法,应用于包括输入端口和输出端口的联网设备,所述输入端口设置有分别对应于多个所述输出端口的多个虚拟输出队列,所述多个虚拟输出队列中的各个虚拟输出队列包括多个优先级队列,所述多个优先级队列包括用于存储时延受限的数据包的多个第一队列且具有与时延限制要求的范围对应的优先级,所述方法包括:从所述输入端口接收待插入数据包并基于所述待插入数据包的时延限制要求确定所述待插入数据包的优先级;基于所述待插入数据包的优先级将所述待插入数据包插入与所述待插入数据包的输出端口对应的所述多个虚拟输出队列中的虚拟输出队列中的优先级队列中,其中,若所述待插入数据包为所述时延受限的数据包,则将所述待插入数据包插入所述第一队列,所述第一队列存储所述待插入数据包的条件为队列未满且所述待插入数据包的时延限制要求大于目标数量,所述目标数量为所述第一队列中的生存时间不大于所述待插入数据包的时延限制要求且所述生存时间不等于0的数据包的数量,所述数据包的生存时间由所述数据包的时延限制要求初始化;获取所述多个虚拟输出队列中的各个虚拟输出队列的待调度队列,其中,所述待调度队列为所述多个优先级队列中存在最小的生存时间的数据包且优先级最高的优先级队列,所述待调度队列用于调度;并且基于所述待调度队列进行匹配和数据交换以使所述待调度队列中的数据包被从对应的所述输出端口输出。在这种情况下,充分利用数据包的时延限制要求,基于时延限制要求的范围确定的优先级和时延限制要求将数据包插入优先级队列,且筛选出每个虚拟输出队列中的最紧急且优先级最高的优先级队列进行调度竞争,使得更紧急的数据包在同一个优先级队列内优先获得调度机会,尽可能减少数据包在优先级队列内死亡的情况发生,从而提高实时吞吐量和降低延迟。另外,不满足第一队列的存储条件的数据包不会插入第一队列中,以尽可能使在调度之前死亡的数据包不参与第一队列的调度,能够进一步提高实时吞吐量和降低延迟。
另外,在本公开的第一方面所涉及的方法中,可选地,所述多个优先级队列还包括用于存储非时延受限的数据包的至少一个第二队列,若所述待插入数据包为所述非时延受限的数据包,则将所述待插入数据包插入所述第二队列,所述第二队列存储所述待插入数据包的条件为队列未满,所述第二队列的优先级低于所述第一队列。在这种情况下,能够通用地处理时延受限场景下时延受限和非时延受限的数据包,两种类型的数据包分开处理更合理地利用时延信息去提高吞吐量。
另外,在本公开的第一方面所涉及的方法中,可选地,基于所述待调度队列进行匹配和数据交换包括:基于所述待调度队列进行匹配以获取无冲突匹配,其中,所述无冲突匹配为所述输入端口与所述输出端口匹配对的集合;并且基于所述待调度队列和所述无冲突匹配进行数据交换以使所述待调度队列中的数据包被从对应的所述输出端口输出。在这种情况下,基于无冲突匹配进行数据交换,能够避免将多个输入端口的数据包转发给一个输出端口,或将一个输入端口的数据包转发给多个输出端口。
另外,在本公开的第一方面所涉及的方法中,可选地,在每个时隙,将所述多个第一队列中的所述生存时间大于0的数据包的所述生存时间减1;并且每次将所述待插入数据包插入所述第一队列之前,将所述生存时间为0的数据包删除。由此,能够使数据包的生存时间逐渐减小。另外,能够及时清理第一队列中已死亡的数据包,调度时不会因为调度已死亡的数据包而浪费交换资源,提高了调度效率,从而能够提高实时吞吐量和降低延迟。
另外,在本公开的第一方面所涉及的方法中,可选地,所述第一队列中的数据包基于所述生存时间进行排序,将所述待插入数据包插入所述第一队列包括:设置所述待插入数据包的生存时间为所述待插入数据包的时延限制要求,比较所述待插入数据包的生存时间和所述第一队列的队头或队尾的数据包的生存时间以确定是否将插入位置设置为队头或队尾;响应于不将所述插入位置设置为队头或队尾而基于二分法确定所述插入位置;确定所述待插入数据包的时延限制要求是否大于所述目标数量,其中,若队头的数据包的生存时间不大于队尾的数据包的生存时间,则所述目标数量为所述插入位置,若队头的数据包的生存时间不小于队尾的数据包的生存时间,则所述目标数量为所述第一队列中的数据包的数量减去所述插入位置;并且响应于所述待插入数据包的时延限制要求大于所述目标数量而将所述待插入数据包插入所述第一队列的所述插入位置。由此,能够基于待插入数据包的生存时间将待插入数据包插入第一队列中。
另外,在本公开的第一方面所涉及的方法中,可选地,响应于所述多个第一队列存在非空的队列而将所述多个第一队列中的数据包的最小的生存时间对应的队列中优先级最高的队列作为所述待调度队列;响应于所述多个第一队列不存在非空的队列而将所述至少一个第二队列中的一个非空的队列作为所述待调度队列。在这种情况下,能够使具有时延限制要求的数据包被优先调度,减少了数据包在排队中死亡的情况。由此,能够提高实时吞吐量。
另外,在本公开的第一方面所涉及的方法中,可选地,获取所述多个虚拟输出队列中的各个虚拟输出队列的待调度队列包括:响应于所述多个第一队列存在非空的队列而将所述多个第一队列中的数据包的最小的生存时间对应的队列中优先级最高的队列作为所述待调度队列;响应于所述多个第一队列不存在非空的队列而将所述至少一个第二队列中的一个非空的队列作为所述待调度队列。另外,在本公开的第一方面所涉及的方法中,可选地,所述多个虚拟输出队列中的各个优先级队列的队头的数据包的生存时间不大于队尾的数据包的生存时间,获取所述多个虚拟输出队列中的各个虚拟输出队列的待调度队列,包括:设置第一变量和第二变量,将所述第一变量初始化为非空的优先级最高的优先级队列的队头的数据包的生存时间,所述第二变量初始化为所述非空的优先级最高的优先级队列的优先级;将所述非空的优先级最高的优先级队列作为目标队列,确定所述目标队列是否满足判断条件,响应于满足所述判断条件而选择所述目标队列作为所述待调度队列,其中,所述判断条件为所述目标队列的队头的数据包的生存时间为1、所述目标队列为所述第二队列或所述多个优先级队列中仅存在一个非空的优先级队列;响应于不满足所述判断条件而将所述目标队列更新为优先级仅比所述目标队列低的优先级队列;确定所述目标队列是否为所述第二队列,响应于所述目标队列为所述第二队列而选择所述第二变量对应优先级的优先级队列作为所述待调度队列;响应于所述目标队列不为所述第二队列而确定所述目标队列是否为空;响应于所述目标队列非空而确定所述目标队列的队头的数据包的生存时间是否等于1;响应于所述目标队列的队头的数据包的生存时间等于1而选择所述目标队列作为所述待调度队列;响应于所述目标队列的队头的数据包的生存时间不等于1而确定所述目标队列的队头的数据包的生存时间是否小于所述第一变量;响应于所述目标队列的队头的数据包的生存时间小于所述第一变量而更新所述第一变量为所述目标队列的队头的数据包的生存时间,更新所述第二变量为所述目标队列的优先级,将所述目标队列更新为优先级仅比所述目标队列低的优先级队列;并且响应于所述目标队列为空或所述目标队列的队头的数据包的生存时间不小于所述第一变量而将所述目标队列更新为优先级仅比所述目标队列低的优先级队列。由此,能够选择存在最紧急的数据包且优先级最高的优先级队列进行调度。
另外,在本公开的第一方面所涉及的方法中,可选地,所述联网设备是交换机,所述交换机包括交叉开关结构。由此,能够并行转发多个数据包。
本公开第二方面提供了一种联网设备,所述联网设备包括处理器和存储器,所述处理器执行所述存储器存储的计算机程序以实现上述的方法的步骤。
本公开第三方面提供了一种计非暂态算机可读存储介质,所述非暂态计算机可读存储介质存储有至少一个指令,所述至少一个指令被处理器执行时实现上述的方法的步骤。
根据本公开,提供一种能够提高实时吞吐量和降低延迟的用于支持时延受限的数据交换的方法、设备及介质。
附图说明
现在将仅通过参考附图的例子进一步详细地解释本公开,其中:
图1是示出了本公开示例所涉及的支持时延受限的数据交换的交换机的示意图。
图2是示出了本公开示例所涉及的入口缓存单元和调度单元的另一种示例的示意图。
图3是示出了本公开示例所涉及的用于支持时延受限的数据交换的方法的流程图。
图4是示出了本公开示例所涉及的将待插入数据包插入第一队列的流程图。
图5是示出了本公开示例所涉及的基于二分法确定插入位置的流程图。
图6是示出了本公开示例所涉及的获取各个虚拟输出队列的待调度队列的流程图。
图7是示出了本公开示例所涉及的两种方案的实时吞吐量随流量压力的变化的对比图。
图8是示出了本公开示例所涉及的两种方案的平均延迟随流量压力的变化的对比图。
具体实施方式
以下,参考附图,详细地说明本公开的优选实施方式。在下面的说明中,对于相同的部件赋予相同的符号,省略重复的说明。另外,附图只是示意性的图,部件相互之间的尺寸的比例或者部件的形状等可以与实际的不同。需要说明的是,本公开中的术语“包括”和“具有”以及它们的任何变形,例如所包括或所具有的一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可以包括或具有没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。本公开所描述的所有方法可以以任何合适的顺序执行,除非在此另有指示或者与上下文明显矛盾。
在实际应用中,为了支持QoS(Quality of Service,服务质量)服务,对于基于由QoS等级设置优先级的FIFO队列组成的虚拟输出队列和iSLIP算法的方案应用于时延受限场景常常存在明显的缺陷。
首先,基于QoS等级设置的数据包的优先级,对于同一数据流来说,一般为同一优先级。然而,数据包因路由路径不同或在交换机内的延迟不同而导致到达交换机的时延却并不相同,从而不同数据包在到达交换机时的时延限制要求也会有所不同。例如,一个数据包刚生成时,时延限制要求为80,QoS等级为3,经过一系列交换机后,时延限制要求为20,QoS等级仍为3。在这种情况下,继续基于QoS等级设置优先级就无法更好地利用时延信息来提高交换机的实时吞吐量,不适用于时延受限场景。
另外,虚拟输出队列虽然由拥有不同优先级的FIFO队列组成,但这种设计是为了支持QoS服务,而并未考虑到时延受限的场景。由于FIFO队列是先入先出结构,意味着率先进入队列的数据包无论时延限制要求是否大于后来的数据包都将被先调度。并且数据包是否被丢弃只能在进入队列前决定,而不能在调度时丢弃。因此,这种FIFO结构虽然结构简单,但应用在时延受限场景就无法充分利用时延信息,从而无法让更紧急的数据包率先调度。
另外,iSLIP调度算法虽然能够保证端口的公平性,使得各输入端口不会被“饿死”,且实现简单,但应用严格的优先级来选择调度哪个FIFO队列,对于时延受限网络同样无法充分利用时延信息,使得实时吞吐量无法达到更加理想的状态。
本公开涉及的用于支持时延受限的数据交换的方法、设备及介质,其能够提高实时吞吐量和降低延迟。本公开涉及的用于支持时延受限的数据交换的方法还可以称为数据交换方法、调度方法或通信方法等。本公开涉及的方法可以适用于具有时延限制要求的应用场景。
以下本公开的描述使用交换机作为联网设备的示例。针对交换机的描述可以同样适用于联网设备,需要说明的是,并不表示对本公开的限制,对于本领域技术人员而言,可以使用其它类型的联网设备而没有限制。
图1是示出了本公开示例所涉及的支持时延受限的数据交换的交换机200的示意图。联网设备可以包括输入端口和输出端口。在一些示例中,输入端口的数量可以与输出端口的数量一致。在一些示例中,本公开涉及的交换机200之类的联网设备可以基于交叉开关(Crossbar)结构。由此,能够并行转发多个数据包。
另外,交换机200可以满足时延受限的需求。例如,交换机200可以基于与数据包的时延限制要求(delay-constraint,dc)相关联的优先级将数据包进行存储和调度。
以10×10的交换机200之类的联网设备为例(也即,交换机200可以拥有10个输入端口和10个输出端口)。那么交换机200可以如图1所示,可以包括输入单元201、入口缓存单元202、调度单元203、交换单元204和输出单元205。交换机200可以将从输入单元201的输入端口1至输入端口10接收的数据包(也即待插入数据包)从输出单元205的输出端口1至输出端口10输出。
在一些示例中,输入单元201可以包括多个输入端口。例如,输入端口的数量可以为6、8、10、12、14、16或20等。作为示例,如图1所示,输入单元201可以包括输入端口1至输入端口10。另外,各个输入端口可以设置多个虚拟输出队列(Virtual Output Queue,VOQ)。多个虚拟输出队列可以作为入口缓存单元202,用于缓存待调度的数据包。
在一些示例中,多个虚拟输出队列可以分别对应于多个输出端口。也即,各个输入端口对应的多个虚拟输出队列与多个输出端口具有一一对应的关系。例如,输入端口1对应的多个虚拟输出队列可以为VOQ1至VOQ10,其中,VOQ1可以对应输出端口1,VOQ10可以对应输出端口10。在这种情况下,各个输入端口接收的数据包能够根据数据包的输出端口被存储至相应的虚拟输出队列。由此,能够方便后续获取无冲突匹配。
在一些示例中,各个虚拟输出队列可以包括多个优先级队列。作为示例,如图1所示,各个虚拟输出队列的优先级队列的数量可以为8,虚拟输出队列VOQ1对应的优先级队列可以为Q0至Q7。另外,优先级队列可以具有相应的优先级。例如,对于具有8个优先级队列的虚拟输出队列,优先级可以为0至7,其中,0可以表示最低的优先级,7可以表示最高的优先级,优先级队列Q0的优先级可以为0,优先级队列Q7的优先级可以为7。
在一些示例中,优先级队列的优先级可以基于时延限制要求的范围进行设置。具体地,优先级队列的优先级可以与时延限制要求的范围对应。在这种情况下,能够基于时延限制要求的范围设置优先级队列的优先级。由此,能够在后续利用基于时延限制要求的优先级存储数据包并对优先级队列进行调度以使更紧急的数据包能够被优先调度。
为了更新清楚地描述,时延限制要求的范围与优先级的对应关系。表1示出了一种基于时延限制要求的范围设置优先级的示例性的示意表。如表1所示,优先级为0至7,其中,优先级为0可以表示无时延限制要求的数据包的优先级。在每次待插入数据包入优先级队列前,可以根据时延限制要求确定待插入数据包的优先级以将待插入数据包插入对应优先级的优先级队列。
基于时延限制要求的优先级 | 时延限制要求的范围 |
7 | 1~5 |
6 | 6~10 |
5 | 11~20 |
4 | 21~40 |
3 | 41~60 |
2 | 61~80 |
1 | 81~100 |
0 | 大于10000 |
表1
图2是示出了本公开示例所涉及的入口缓存单元202和调度单元203的另一种示例的示意图。
在一些示例中,各个虚拟输出队列对应的多个优先级队列可以包括多个第一队列。在一些示例中,各个虚拟输出队列对应的多个优先级队列还可以包括至少一个第二队列。优选地,第一队列的数量可以为7,第二队列的数量可以为1。也即,多个优先级队列可以包括7个第一队列和1个第二队列。作为示例,如图2所示,优先级队列Q0可以为第二队列,优先级队列Q1至Q7可以为第一队列。在这种情况下,能够通用地处理时延受限场景下时延受限和非时延受限的数据包,两种类型的数据包分开处理更合理地利用时延信息去提高吞吐量。
在一些示例中,第一队列可以用于存储时延受限的数据包(时延受限的数据包也可以称为时延受限数据包)。也即,时延受限数据包可以具有时延限制要求。在一些示例中,时延受限数据包从数据包进入交换机200的输入端口开始计时,若不能在给定的时延限制要求内到达交换机200的输出端口,则该时延受限数据包可以被丢弃。
在一些示例中,第二队列可以用于存储非时延受限的数据包(非时延受限的数据包也可以称为非时延受限数据包)。非时延受限数据包可以没有时延限制要求。在一些示例中,非时延受限数据包可以不会因为超过一定时间而被丢弃。
另外,至少一个第二队列的优先级可以低于多个第一队列。在一些示例中,第二队列的优先级可以最小。例如,对于优先级为0至7,第二队列的优先级可以为0,第一队列的优先级可以为1至7。在这种情况下,能够使第二队列中的数据包被优先调度且支持非时延受限的数据包的交换。在一些示例中,各个虚拟输出队列对应的多个优先级队列可以被选择以获取待调度队列,具体内容参见选择单元213(稍后描述)的相关描述。
在一些示例中,第一队列中的数据包可以是有序的(也即,第一队列可以为抢占式队列)。在一些示例中,第一队列中的数据包可以基于生存时间进行排序。另外,生存时间可以指离数据包死亡剩余的时间。生存时间的单位可以为slot(时隙)。slot可以表示联网设备(例如,交换机200)完成一次交换的时间。在一些示例中,数据包的生存时间可以由数据包的时延限制要求初始化。具体地,可以初始化数据包的生存时间为时延限制要求。生存时间可以在数据交换过程逐渐减少。例如,可以将数据包的生存时间初始化为时延限制要求,在每个时隙(slot),将各个第一队列中的生存时间不为0的数据包的生存时间减1。另外,每个时隙可以为联网设备接收到数据包前或输出数据包后。
如上所述,第一队列中的数据包可以基于生存时间进行排序。在一些示例中,第一队列的队头的数据包的生存时间可以不大于队尾的数据包的生存时间。但本公开的示例不限于此,在另一些示例中,第一队列的队头的数据包的生存时间可以不小于队尾的数据包的生存时间。以下描述以队头的数据包的生存时间不大于队尾的数据包的生存时间为例进行描述,并不表示对本公开的限制,本领域人员基于本公开的描述可以很容易的实现其他排序对应的方案。
在一些示例中,第一队列可以为链表结构并具有固定数量的节点,未存储数据包时,节点可以为空,每次插入数据包后,可以删除队尾节点,每次删除队头节点后,可以在队尾插入空的节点。在一些示例中,第一队列中的数据包的生存时间可以使用另一个链表进行记录,并与第一队列同步。也即,第一队列中的数据包删除时,同时删除该链表对应位置的生存时间,将数据包插入某一位置时,同时向该链接对应位置插入数据包的生存时间。
在一些示例中,对于有序的第一队列,在插入数据包时,可以基于数据包的生存时间获取数据包的插入位置并确认是否符合第一队列存储数据包(也即待插入数据包)的条件。
在一些示例中,第二队列可以为FIFO(First In First Out,先入先出)队列。FIFO队列中的数据包可以遵循先入先出规则,数据包可以从队尾进入FIFO队列,排队于队尾,然后从队头离开FIFO队列。
如上所述,在一些示例中,交换机200可以包括调度单元203(参见图1)。调度单元203可以用于对各个虚拟输出队列对应的多个优先级队列进行调度。
如图1和图2所示,在一些示例中,调度单元203可以包括选择单元213和匹配单元223。
在一些示例中,选择单元213可以用于获取各个虚拟输出队列的待调度队列。另外,待调度队列可以用于调度。在一些示例中,待调度队列可以为存在最小的生存时间(urgency)的数据包且优先级最高的优先级队列。也即,可以从各个虚拟输出队列的多个优先级队列中选择存在最小的生存时间(urgency)的数据包且优先级最高的优先级队列作为待调度队列。在一些示例中,各个虚拟输出队列最多可以对应一个待调度队列。如图2所示,输入端口1的虚拟输出队列VOQ1可以对于待调度队列WQ1,输入端口1的虚拟输出队列VOQ10可以对于待调度队列WQ10。也即,待调度队列的数量可以为多个输入端口对应的全部非空的虚拟输出队列的数量。
在一些示例中,匹配单元223可以用于基于待调度队列进行匹配以获取无冲突匹配。具体地,匹配单元223可以对多个输入端口对应的全部非空的虚拟输出队列对应的待调度队列进行匹配以获取无冲突匹配。如图2所示,假设输入端口1和输入端口2对应的虚拟输出队列均非空,则匹配单元223可以接收包括输入端口1对应的待调度队列WQ1至WQ10和输入端口10对应的待调度队列WQ1至WQ10并进行匹配以获取无冲突匹配。另外,无冲突匹配可以为输入端口与输出端口匹配对的集合。也即,无冲突匹配可以表示输入端口与输出端口一一对应的关系。在这种情况下,后续基于无冲突匹配进行数据交换,能够避免将多个输入端口的数据包转发给一个输出端口,或将一个输入端口的数据包转发给多个输出端口。
在一些示例中,匹配单元223可以基于待调度队列并利用iSLIP算法进行匹配以获取无冲突匹配。由此,能够使实现简单且易于硬件实现。在一些示例中,iSLIP算法可以分为三个步骤:请求(Request)、响应(Grant)和接受(Accept)。在一些示例中,iSLIP算法执行后可以从端口(例如,输入端口和输出端口)得到至少一个无冲突匹配。其中,至少一个无冲突匹配的数量可以不大于输出端口的数量。在这种情况下,后续交换单元204能够根据无冲突匹配平行交换至少一个无冲突匹配对应的端口的数据包。
如上所述,在一些示例中,交换机200可以包括交换单元204(参见图1)。交换单元204可以用于数据包的交换。在一些示例中,交换单元204可以基于待调度队列和无冲突匹配进行数据交换以使待调度队列中的数据包被从对应的输出端口输出。在一些示例中,对于第一队列,从输出端口输出的数据包可以为待调度队列中的生存时间最小的数据包。在一些示例中,对于队头的数据包的生存时间不大于队尾的数据包的生存时间的第一队列,从输出端口输出的数据包可以为队头的数据包。在一些示例中,对于第二队列,从输出端口输出的数据包可以为最先进入待调度队列的数据包(也即待调度队列的队头的数据包)。在一些示例中,交换单元204可以具有交换电路。在一些示例中,交换单元204可以为基于交叉开关(Crossbar)结构。
如上所述,在一些示例中,交换机200可以包括输出单元205(参见图1)。在一些示例中,输出单元205可以包括多个输出端口。例如,输出端口的数量可以为6、8、10、12、14、16或20等。作为示例,如图1所示,输出单元205可以包括输出端口1至输出端口10。
在一些示例中,交换机200还可以包括解析单元(未图示)。解析单元可以用于解析数据包(也即待插入数据包)的报头信息以获取数据包的输出端口和时延限制要求。如上所述,多个虚拟输出队列可以分别对应于多个输出端口。在一些示例中,解析单元可以根据数据包的输出端口获取对应的虚拟输出队列。在一些示例中,解析单元可以根据数据包的时延限制要求确定数据包的优先级。也即,每次联网设备可以根据数据包的时延限制要求调整数据包的优先级。在这种情况下,能够使数据包在不同的联网设备中的优先级根据时延限制要求来调整。由此,能够更好地利用时延信息来提高实时吞吐量。以数据包的优先级可以为0至7为例。最高优先级为7,最低优先级为0,最低优先级可以作为非时延受限数据包的优先级。每一个优先级可以对应一个时延限制要求的范围(参见表1),处于该范围内的时延限制要求的数据包才能设置成该优先级。在一些示例中,每一个优先级对应一个时延限制要求的范围可以根据具体情况进行调整。
在一些示例中,解析单元可以根据数据包的输出端口和时延限制要求进行查表以获取对应的虚拟输出队列和优先级,然后根据优先级将数据包插入对应的虚拟输出队列中的优先级队列中。
在一些示例中,交换机200还可以包括逆解析单元(未图示)。逆解析单元(Deparser)可以用于重组数据包。也即,可以将处理过的数据包头部和原始的数据包载荷重新组装成新的数据包。在这种情况下,能够使经由解析(Parse)和处理的数据包在转发时被重组。在一些示例中,逆解析单元可以设置交换单元204之后且在输出单元205之前。
以下结合图3描述本公开涉及的用于支持时延受限的数据交换的方法(以下简称方法)。用于支持时延受限的数据交换的方法可以应用于联网设备(例如交换机200)。图3是示出了本公开示例所涉及的用于支持时延受限的数据交换的方法的流程图。
如图3所示,在一些示例中,方法可以包括从输入端口接收待插入数据包并基于待插入数据包的时延限制要求确定待插入数据包的优先级(步骤S102)。
在一些示例中,从输入端口接收数据包可以包括时延受限数据包和/或非时延受限数据包。在一些示例中,当一个数据包(也即待插入数据包)进入交换机200后,可以解析该数据包的报头信息以获取数据包的输出端口和时延限制要求。在一些示例中,可以根据待插入数据包的输出端口获取对应的虚拟输出队列,根据待插入数据包的时延限制要求确定待插入数据包的优先级。由此,后续能够根据优先级将待插入数据包插入对应的虚拟输出队列中的优先级队列中。具体内容参见解析单元的相关描述。
如图3所示,在一些示例中,方法可以包括基于待插入数据包的优先级将待插入数据包插入与待插入数据包的输出端口对应的虚拟输出队列中的优先级队列中(步骤S104)。在一些示例中,在步骤S104中,可以根据由步骤S102获取的待插入数据包的输出端口确定存储该待插入数据包的虚拟输出队列,然后根据待插入数据包的优先级,将该待插入数据包插入相应的优先级队列。
如上所述,在一些示例中,各个虚拟输出队列对应的多个优先级队列可以包括多个第一队列。在一些示例中,各个虚拟输出队列对应的多个优先级队列还可以包括至少一个第二队列。也即,各个虚拟输出队列对应的多个优先级队列可以多个第一队列(例如,7个第一队列)和至少一个第二队列(例如,1个第一队列)。
在一些示例中,可以根据待插入数据包的优先级选择将待插入数据包插入多个优先级队列中的第一队列或第二队列。具体地,对于非时延受限数据包,优先级最低,可以插入第二队列中,对于时延受限数据包可以根据优先级和时延限制要求插入第一队列中。在一些示例中,若优先级队列(例如,第一队列或第二队列)为空,则可以直接将待插入数据包插入优先级队列中。
在一些示例中,第一队列存储待插入数据包的条件可以为队列未满且待插入数据包的时延限制要求大于目标数量。其中,目标数量可以为第一队列中的生存时间不大于待插入数据包的时延限制要求且生存时间不等于0的数据包的数量。在这种情况下,不满足条件的待插入数据包在进入第一队列之前就被丢弃,且进入第一队列中的待插入数据包能够尽可能的得到调度。由此,能够提高实时吞吐量和降低延迟。
在一些示例中,每个虚拟输出队列都有一个数组用于记录该虚拟输出队列中的各个优先级队列的长度,可以比较该优先级队列对应的长度是否等于最长长度以判断队列是否未满。在一些示例中,优先级队列的长度可以表示在优先级队列中的数据包的个数(可以不含生存时间为0的数据包)。在一些示例中,在每次插入待插入数据包时可以更新优先级队列的长度。
如上所述,在一些示例中,第一队列中的数据包可以基于生存时间进行排序。在一些示例中,若队头的数据包的生存时间不大于队尾的数据包的生存时间,则目标数量可以为插入位置。也即,第一队列存储数据包的条件可以为队列未满且数据包的时延限制要求大于插入位置。在一些示例中,若队头的数据包的生存时间不小于队尾的数据包的生存时间,则目标数量可以为第一队列中的数据包的数量减去插入位置。也即,第一队列存储数据包的条件可以为队列未满且数据包的时延限制要求大于第一队列中的数据包的数量减去插入位置。
在一些示例中,在每个时隙,可以更新多个第一队列(也即,所有的第一队列)中的数据包的生存时间。在一些示例中,更新多个第一队列中的数据包的生存时间可以为将多个第一队列中的生存时间大于0的数据包的生存时间减1。由此,能够使数据包的生存时间逐渐减小(也即,越紧急)。
在一些示例中,每次将待插入数据包插入第一队列之前,可以删除生存时间为0的数据包。在一些示例中,可以将第一队列中的生存时间为0的数据包删除。在这种情况下,能够及时清理第一队列中已死亡的数据包,调度时不会因为调度已死亡的数据包而浪费交换资源,提高了调度效率,从而能够提高实时吞吐量和降低延迟。在一些示例中,对于有序的第一队列,可以将队头或队尾的生存时间为0的数据包删除(也即,清理队头或队尾已死亡的数据包)。
在一些示例中,可以确定第一队列是否未满,响应于第一队列未满而进行将待插入数据包插入第一队列的操作,响应于第一队列已满而丢弃待插入数据包。例如,若待插入数据包为时延受限数据包,每次将待插入数据包插入第一队列之前,可以删除第一队列中的生存时间为0的数据包,然后判断第一队列是否未满,响应于第一队列未满而进行将待插入数据包插入第一队列的操作,响应于第一队列已满而丢弃待插入数据包。
如上所述,第一队列中的数据包可以基于生存时间排序。在一些示例中,可以基于待插入数据包的生存时间(也可以为时延限制要求)将待插入数据包插入第一队列中。图4是示出了本公开示例所涉及的将待插入数据包插入第一队列的流程图。
在一些示例中,如图4所示,将待插入数据包插入第一队列可以包括确定是否将插入位置设置为队头或队尾(步骤S202)。如上所述,数据包的生存时间可以由数据包的时延限制要求初始化。在一些示例中,可以初始化待插入数据包的生存时间为时延限制要求。
在一些示例中,在步骤S202中,可以比较待插入数据包的生存时间和第一队列的队头或队尾的数据包的生存时间以确定是否将插入位置设置为队头或队尾。在一些示例中,待插入数据包的生存时间不小于队头或队尾的数据包的生存时间中的最大值或不大于队头或队尾的数据包的生存时间中的最小值,则可以确定将插入位置设置为队头或队尾。在一些示例中,响应于不将插入位置设置为队头或队尾而可以进入步骤S204。在一些示例中,响应于将插入位置设置为队头或队尾而可以进入步骤S206。
以第一队列的队头的数据包的生存时间不大于队尾的数据包的生存时间为例,若待插入数据包的生存时间不大于队头的数据包的生存时间,则插入位置设置可以为队头,并进入步骤S206,否则若待插入数据包的生存时间不小于队尾的数据包的生存时间,则插入位置可以设置为队尾,并进入步骤S206,否则可以进入步骤S204。
在一些示例中,如图4所示,将待插入数据包插入第一队列可以包括基于二分法确定插入位置(步骤S204)。
图5是示出了本公开示例所涉及的基于二分法确定插入位置的流程图。以下以第一队列的队头的数据包的生存时间不大于队尾的数据包的生存时间为例,描述基于二分法确定插入位置的一种示例。
如图5所示,在一些示例中,基于二分法确定插入位置可以包括初始化第一位置、第二位置和第三位置(步骤S301)。在一些示例中,可以设置第一位置为第一队列的队头的位置,第二位置为第一队列的队尾的位置,第三位置为0。
如图5所示,在一些示例中,基于二分法确定插入位置可以包括判断第一位置是否不大于第二位置(步骤S302)。在一些示例,响应于第一位置不大于第二位置而可以进入步骤S303。在一些示例,响应于第一位置大于第二位置而可以进入步骤S309。
如图5所示,在一些示例中,基于二分法确定插入位置可以包括更新第三位置(步骤S303)。在一些示例中,可以将第三位置更新为第一位置和第二位置之和的一半并向下取整。在一些示例中,在步骤S303后,可以进入步骤S304。
如图5所示,在一些示例中,基于二分法确定插入位置可以包括确认第三位置对应的数据包的生存时间是否等于待插入数据包的生存时间(步骤S304)。在一些示例中,响应于第三位置对应的数据包的生存时间等于待插入数据包的生存时间而可以进入步骤S305。在一些示例中,响应于第三位置对应的数据包的生存时间不等于待插入数据包的生存时间而可以进入步骤S306。
如图5所示,在一些示例中,基于二分法确定插入位置可以包括设置插入位置为第三位置加1(步骤S305)。
如图5所示,在一些示例中,基于二分法确定插入位置可以包括确认第三位置对应的数据包的生存时间是否小于待插入数据包的生存时间(步骤S306)。在一些示例中,响应于第三位置对应的数据包的生存时间小于待插入数据包的生存时间而可以进入步骤S307。在一些示例中,响应于第三位置对应的数据包的生存时间不小于待插入数据包的生存时间而可以进入步骤S308。
如图5所示,在一些示例中,基于二分法确定插入位置可以包括更新第一位置为第三位置加1(步骤S307)。在一些示例中,在步骤S308后,可以进入步骤S302。
如图5所示,在一些示例中,基于二分法确定插入位置可以包括更新第二位置为第三位置减1(步骤S308)。在一些示例中,在步骤S308后,可以进入步骤S302。
如图5所示,在一些示例中,基于二分法确定插入位置可以包括设置插入位置为第一位置(步骤S309)。
在一些示例中,如图4所示,将待插入数据包插入第一队列可以包括确定待插入数据包的时延限制要求是否大于目标数量(步骤S206)。如上所述,目标数量可以为第一队列中的生存时间不大于待插入数据包的时延限制要求的数据包的数量。关于目标数量的描述参见步骤S104中的相关描述。
在一些示例中,响应于待插入数据包的时延限制要求大于目标数量而可以进入步骤S208。在一些示例中,响应于待插入数据包的时延限制要求不大于目标数量而可以丢弃该待插入数据包。
具体地,第一队列中的数据包可以基于生存时间进行排序,对于队头的数据包的生存时间不大于队尾的数据包的生存时间(也即,队头到队尾,数据包的生存时间从小到大或相等),若待插入数据包的时延限制要求大于插入位置,则可以进入步骤S208,否则可以丢弃该待插入数据包;对于队头的数据包的生存时间不小于队尾的数据包的生存时间(也即,从队头到队尾,数据包的生存时间从大到小或相等),若待插入数据包的时延限制要求大于第一队列中的数据包的数量减去插入位置,则可以进入步骤S208,否则可以丢弃该待插入数据包。
在一些示例中,如图4所示,将数据包插入第一队列可以包括将待插入数据包插入第一队列的插入位置(步骤S208)。
在一些示例中,第二队列存储数据包的条件可以为队列未满。在一些示例中,可以将待插入数据包插入在第二队列的队尾。例如,若待插入数据包为非时延受限数据包,则可以插入至第二队列,在插入第二队列时,可以判断第二队列是否未满,响应于第二队列未满而将待插入数据包插入第二队列,响应于第二队列已满而将待插入数据包丢弃。
如图3所示,在一些示例中,方法可以包括获取各个虚拟输出队列的待调度队列(步骤S106)。在一些示例中,待调度队列可以为多个优先级队列(也即,各个虚拟输出队列中的多个优先级队列)中存在最小的生存时间的数据包且优先级最高的优先级队列。具体地,可以基于多个优先级队列的优先级和优先级队列中的数据包的生存时间从多个优先级队列中选择存在最小的生存时间的数据包且优先级最高的优先级队列作为各个虚拟输出队列的待调度队列。在一些示例中,可以并行地在获取各个虚拟输出队列的待调度队列。如上所述,待调度队列可以用于调度。在一些示例中,各个虚拟输出队列最多可以存在一个待调度队列。具体内容参见选择单元213的相关描述。
如上所述,在一些示例中,多个优先级队列可以包括多个第一队列和/或至少一个第二队列,第二队列的优先级可以低于第一队列。
在一些示例中,获取各个虚拟输出队列的待调度队列可以包括响应于多个第一队列存在非空的队列而将多个第一队列中的数据包的最小的生存时间对应的队列中优先级最高的队列作为待调度队列。在这种情况下,能够使第一队列中最紧急且优先级最高的数据包对应的队列被优先调度,减少了数据包在排队中死亡的情况。由此,能够提高实时吞吐量。在一些示例中,获取各个虚拟输出队列的待调度队列还可以包括响应于多个第一队列不存在非空的队列而将至少一个第二队列中的一个非空的队列作为待调度队列。也即,在第一队列均为空时,可以将第二队列作为待调度队列。在这种情况下,能够使具有时延限制要求的数据包被优先调度,减少了数据包在排队中死亡的情况。由此,能够提高实时吞吐量。
例如,若多个第一队列中仅存在一个非空的优先级队列或多个优先级队列中仅存在一个非空的优先级队列,则可以将该非空的优先级队列作为待调度队列,否则可以从多个第一队列中选择存在数据包的生存时间为最小且优先级最高的优先级队列作为待调度队列;若未获得待调度队列,则可以将非空的第二队列作为待调度队列。
以下以第一队列的队头的数据包的生存时间不大于队尾的数据包的生存时间为例,描述获取各个虚拟输出队列的待调度队列的一种示例。由此,能够选择存在最紧急的数据包且优先级最高的优先级队列进行调度。图6是示出了本公开示例所涉及的获取各个虚拟输出队列的待调度队列的流程图。
如图6所示,在一些示例中,获取各个虚拟输出队列的待调度队列可以包括设置第一变量和第二变量(步骤S401)。在一些示例中,在步骤S401中,可以将第一变量初始化为非空的优先级最高的优先级队列的队头的数据包的生存时间,第二变量初始化为非空的优先级最高的优先级队列的优先级。在一些示例中,对于第二队列,第一变量的值可以忽略。
如图6所示,在一些示例中,获取各个虚拟输出队列的待调度队列可以包括将非空的优先级最高的优先级队列作为目标队列(步骤S402)。
如图6所示,在一些示例中,获取各个虚拟输出队列的待调度队列可以包括确定目标队列是否满足判断条件(步骤S403)。在一些示例中,判断条件可以为目标队列的队头的数据包的生存时间为1、目标队列为第二队列或多个优先级队列中仅存在一个非空的优先级队列。在一些示例中,响应于满足判断条件而可以进入步骤S404。在一些示例中,响应于不满足判断条件而可以进入步骤S405。
如图6所示,在一些示例中,获取各个虚拟输出队列的待调度队列可以包括选择目标队列作为待调度队列(步骤S404)。
如图6所示,在一些示例中,获取各个虚拟输出队列的待调度队列可以包括将目标队列更新为优先级仅比该目标队列低的优先级队列(步骤S405)。也即,继续查找比目标队列低一优先级的优先级队列。在一些示例中,步骤S405后,可以进入步骤S406。
如图6所示,在一些示例中,获取各个虚拟输出队列的待调度队列可以包括确定目标队列是否为第二队列(步骤S406)。在一些示例中,响应于目标队列为第二队列而可以进入步骤S407。在一些示例中,响应于目标队列不为第二队列而可以进入步骤S408。
如图6所示,在一些示例中,获取各个虚拟输出队列的待调度队列可以包括选择第二变量对应优先级的优先级队列作为待调度队列(步骤S407)。
如图6所示,在一些示例中,获取各个虚拟输出队列的待调度队列可以包括确定目标队列是否为空(步骤S408)。在一些示例中,响应于目标队列为空而可以进入步骤S405。也即,可以继续查找比目标队列低一优先级的优先级队列。在一些示例中,响应于目标队列非空而可以进入步骤S409。
如图6所示,在一些示例中,获取各个虚拟输出队列的待调度队列可以包括确定目标队列的队头的数据包的生存时间是否等于1(步骤S409)。在一些示例中,响应于目标队列的队头的数据包的生存时间等于1而可以进入步骤S404。由此,能够降低时间复杂度。在一些示例中,响应于目标队列的队头的数据包的生存时间不等于1而可以进入步骤S410。
如图6所示,在一些示例中,获取各个虚拟输出队列的待调度队列可以包括确定目标队列的队头的数据包的生存时间是否小于第一变量(步骤S410)。在一些示例中,响应于目标队列的队头的数据包的生存时间小于第一变量而可以进入步骤S411。在一些示例中目标队列的队头的数据包的生存时间不小于第一变量而可以进入步骤S405。也即,可以继续查找比目标队列低一优先级的优先级队列。
如图6所示,在一些示例中,获取各个虚拟输出队列的待调度队列可以包括更新第一变量和第二变量(步骤S411)。在一些示例中,在步骤S411中,可以更新第一变量的值为目标队列的队头的数据包的生存时间,更新第二变量的值为目标队列的优先级。在一些示例中,在步骤S411后,可以进入步骤S405。也即,可以继续查找比目标队列低一优先级的优先级队列。
如图3所示,在一些示例中,方法可以包括基于待调度队列进行匹配和数据交换以使待调度队列中的数据包被从对应的输出端口输出(步骤S108)。
在一些示例中,在步骤S108中,基于待调度队列进行匹配可以为基于待调度队列进行匹配以获取无冲突匹配。如上所述,无冲突匹配可以为输入端口与输出端口匹配对的集合。具体内容参见匹配单元223的相关描述。在一些示例中,在步骤S108中,基于待调度队列进行数据交换可以为基于待调度队列和无冲突匹配进行数据交换以使待调度队列中的数据包被从对应的输出端口输出。具体内容参见交换单元204的相关描述。
本公开还涉一种联网设备,可以包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述应用于联网设备的方法。
本公开还涉及一种非暂态计算机可读存储介质,非暂态计算机可读存储介质可以存储有至少一个指令,至少一个指令可以被处理器执行时实现上述应用于联网设备的方法。本领域普通技术人员可以理解上述示例中的应用于联网设备的方法中的全部或部分步骤是可以通过程序(指令)来指令相关的硬件来完成,该程序(指令)可以存储于计算机可读存储器(存储介质)中,存储器可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁盘或光盘等。
图7是示出了本公开示例所涉及的两种方案的实时吞吐量随流量压力的变化的对比图。图8是示出了本公开示例所涉及的两种方案的平均延迟随流量压力的变化的对比图。
另外,实时吞吐量可以为交换机在时间趋于无穷大时,所有输出端口收到的未死亡数据包的总数量与所有输入端口接收到的数据包的总数量的比值。另外,平均延迟(averagelatency)可以为所有未死亡数据包通过交换机所花的平均时间。具体地,平均延迟可以等于所有通过交换机的未死亡数据包的延迟之和除以所有通过交换机的未死亡数据包的总数量,其中,延迟可以为未死亡数据包通过交换机到达输出端口所花的时间。
另外,为了验证用于支持时延受限的数据交换的方法的有效性,与基于QoS等级设置优先级的方案(可以简称为QoS方案)进行比较。本次仿真的交换机,基于交叉开关结构,拥有16个输入端口和16个输出端口,每个输入端口拥有16个虚拟输出队列,每个虚拟输出队列拥有8个队列,每个优先级队列最大长度为20。另外,对应仿真QoS方案,8个队列为8个FIFO队列。对于仿真本公开的方案,8个队列包括7个抢占式队列(也即第一队列)和1个FIFO队列(也即第二队列)。
数据包流量是以Bernoulli流量模型产生的。也即各输入端口都以相同概率p模拟生成数据包,通过调整各输入端口的产生概率p来调节流量压力。举例来说,当p=100%时,即代表在每个时隙内,每个输入端口都会收到一个数据包。也即,满载状态。当p=50%时,即代表在每个时隙内,每个输入端口都有50%的概率收到一个数据包。每次实验会持续10000个时隙。将在10%~100%的10种流量压力下测试交换机实时吞吐量及平均延迟,并进行3次仿真求实时吞吐量及平均延迟的平均数作为仿真结果。
仿真生成数据包时将给数据包设置生成时刻的时间戳并且随机生成QoS等级、时延限制要求和输出端口。时延限制要求的生成与QoS等级有关。具体地,可以先随机生成QoS等级,再根据QoS等级所划定的时延限制要求的范围中随机生成时延限制要求(如表2所示)。其中,QoS等级分为8个等级,其中7优先级最高,0优先级最低(无时延受限的优先级)。将时延限制要求超过10000的数据包视为无时延限制。
QoS等级 | 时延限制要求的范围 |
7 | 1~5 |
6 | 10以下 |
5 | 20以下 |
4 | 40以下 |
3 | 60以下 |
2 | 80以下 |
1 | 100以下 |
0 | 大于10000 |
表2
对于本公开的方案,根据上述表1来确定每次输入端口接收到的数据包的优先级,该优先级每次可以根据时延限制要求的变化进行调整。对于QoS方案,根据表3来确定刚生成的数据包的优先级,该优先级在数据包生成时确定后并不会变化。
基于QoS等级的优先级 | 时延限制要求的范围 |
7 | 1~5 |
6 | 10以下 |
5 | 20以下 |
4 | 40以下 |
3 | 60以下 |
2 | 80以下 |
1 | 100以下 |
0 | 大于10000 |
表3
当仿真QoS方案时,使用iSLIP算法从16个端口选择出m个端口进行并行交换。而当仿真本公开的方案时,先选择待调度队列(参见步骤S106)再基于待调度队列利用iSLIP算法从16个端口选择出m个端口进行并行交换。
在仿真时,输出端口接收到交换后的数据包,比较现在时刻与数据包的时间戳的差值和数据包的时延限制要求,如果数据包的时延限制要求大于等于差值,则可以说明被成功交换,否则,数据包将被丢弃,被丢弃的数据包将不会计算入实时吞吐量中。
从图7所示可以看出,随着流量压力的增强,实时吞吐量随之下降。在低流量压力下,两种方案的系统实时吞吐量差别不大。随着流量压力的增强,两种方案的差距逐渐明显。本公开的方案从流量压力为50%开始和QoS方案出现了明显的差距,当流量压力为100%时,本公开的方案实时吞吐量比起QoS方案提升了(67.48%-41.24%)/(41.24%)=63.63%。
从图8所示可以看出,随着流量压力的增强,平均延迟随之上升。在低流量压力下,两种方案的平均延迟差别不大。随着流量压力的增强,两种方案的差距逐渐明显。本公开的方案从流量压力为70%开始和QoS方案出现了明显的差距,当流量压力为100%时,本公开的方案平均延迟是QoS方案的23.71%/277.56%=8.54%。
本公开的用于支持时延受限的数据交换的方法,输入端口对应的虚拟输出队列包括具有优先级的多个优先级队列,多个优先级队列包括用于存储时延受限的数据包的多个第一队列,在第一队列未满且待插入数据包的时延限制要求大于目标数量时,每次基于时延限制要求确定数据包的优先级并根据优先级将数据包插入优先级队列中,基于多个优先级队列的优先级和优先级队列中的数据包的生存时间从各个虚拟输出队列中选择存在最小的生存时间的数据包且优先级最高的优先级队列进行匹配和数据交换。在这种情况下,充分利用数据包的时延限制要求,基于时延限制要求的范围确定的优先级和时延限制要求将数据包插入优先级队列,且筛选出每个虚拟输出队列中的最紧急且优先级最高的优先级队列进行调度竞争(也即,选择优先级队列时不再是严格的高优先级优先),使得更紧急的数据包在同一个优先级队列内优先获得调度机会,尽可能减少数据包在优先级队列内死亡的情况发生,从而提高实时吞吐量和降低延迟。另外,不满足第一队列的存储条件的数据包不会插入第一队列中,以尽可能使在调度之前死亡的数据包不参与第一队列的调度,能够进一步提高实时吞吐量和降低延迟。另外,多个优先级队列还包括用于存储非时延受限数据包的第二队列。在这种情况下,能够通用地处理时延受限场景下时延受限和非时延受限的数据包,两种类型的数据包分开处理更合理地利用时延信息去提高吞吐量。
虽然以上结合附图和示例对本公开进行了具体说明,但是可以理解,上述说明不以任何形式限制本公开。本领域技术人员在不偏离本公开的实质精神和范围的情况下可以根据需要对本公开进行变形和变化,这些变形和变化均落入本公开的范围内。
Claims (10)
1.一种用于支持时延受限的数据交换的方法,应用于包括输入端口和输出端口的联网设备,所述输入端口设置有分别对应于多个所述输出端口的多个虚拟输出队列,其特征在于,所述多个虚拟输出队列中的各个虚拟输出队列包括多个优先级队列,所述多个优先级队列包括用于存储时延受限的数据包的多个第一队列且具有与时延限制要求的范围对应的优先级,所述方法包括:
从所述输入端口接收待插入数据包并基于所述待插入数据包的时延限制要求确定所述待插入数据包的优先级;
基于所述待插入数据包的优先级将所述待插入数据包插入与所述待插入数据包的输出端口对应的所述多个虚拟输出队列中的虚拟输出队列中的优先级队列中,其中,若所述待插入数据包为所述时延受限的数据包,则将所述待插入数据包插入所述第一队列,所述第一队列存储所述待插入数据包的条件为队列未满且所述待插入数据包的时延限制要求大于目标数量,所述目标数量为所述第一队列中的生存时间不大于所述待插入数据包的时延限制要求且所述生存时间不等于0的数据包的数量,所述数据包的生存时间由所述数据包的时延限制要求初始化;
获取所述多个虚拟输出队列中的各个虚拟输出队列的待调度队列,其中,所述待调度队列为所述多个优先级队列中存在最小的生存时间的数据包且优先级最高的优先级队列,所述待调度队列用于调度;并且
基于所述待调度队列进行匹配和数据交换以使所述待调度队列中的数据包被从对应的所述输出端口输出。
2.根据权利要求1所述的方法,其特征在于:
所述多个优先级队列还包括用于存储非时延受限的数据包的至少一个第二队列,若所述待插入数据包为所述非时延受限的数据包,则将所述待插入数据包插入所述第二队列,所述第二队列存储所述待插入数据包的条件为队列未满,所述第二队列的优先级低于所述第一队列。
3.根据权利要求2所述的方法,其特征在于,基于所述待调度队列进行匹配和数据交换包括:
基于所述待调度队列进行匹配以获取无冲突匹配,其中,所述无冲突匹配为所述输入端口与所述输出端口匹配对的集合;并且
基于所述待调度队列和所述无冲突匹配进行数据交换以使所述待调度队列中的数据包被从对应的所述输出端口输出。
4.根据权利要求1所述的方法,其特征在于:
在每个时隙,将所述多个第一队列中的所述生存时间大于0的数据包的所述生存时间减1;并且
每次将所述待插入数据包插入所述第一队列之前,将所述生存时间为0的数据包删除。
5.根据权利要求4所述的方法,其特征在于,所述第一队列中的数据包基于所述生存时间进行排序,将所述待插入数据包插入所述第一队列包括:
设置所述待插入数据包的生存时间为所述待插入数据包的时延限制要求,比较所述待插入数据包的生存时间和所述第一队列的队头或队尾的数据包的生存时间以确定是否将插入位置设置为队头或队尾;
响应于不将所述插入位置设置为队头或队尾而基于二分法确定所述插入位置;
确定所述待插入数据包的时延限制要求是否大于所述目标数量,其中,若队头的数据包的生存时间不大于队尾的数据包的生存时间,则所述目标数量为所述插入位置,若队头的数据包的生存时间不小于队尾的数据包的生存时间,则所述目标数量为所述第一队列中的数据包的数量减去所述插入位置;并且
响应于所述待插入数据包的时延限制要求大于所述目标数量而将所述待插入数据包插入所述第一队列的所述插入位置。
6.根据权利要求2所述的方法,其特征在于,获取所述多个虚拟输出队列中的各个虚拟输出队列的待调度队列包括:
响应于所述多个第一队列存在非空的队列而将所述多个第一队列中的数据包的最小的生存时间对应的队列中优先级最高的队列作为所述待调度队列;响应于所述多个第一队列不存在非空的队列而将所述至少一个第二队列中的一个非空的队列作为所述待调度队列。
7.根据权利要求2所述的方法,其特征在于,所述多个虚拟输出队列中的各个优先级队列的队头的数据包的生存时间不大于队尾的数据包的生存时间,获取所述多个虚拟输出队列中的各个虚拟输出队列的待调度队列,包括:
设置第一变量和第二变量,将所述第一变量初始化为非空的优先级最高的优先级队列的队头的数据包的生存时间,所述第二变量初始化为所述非空的优先级最高的优先级队列的优先级;
将所述非空的优先级最高的优先级队列作为目标队列,确定所述目标队列是否满足判断条件,响应于满足所述判断条件而选择所述目标队列作为所述待调度队列,其中,所述判断条件为所述目标队列的队头的数据包的生存时间为1、所述目标队列为所述第二队列或所述多个优先级队列中仅存在一个非空的优先级队列;
响应于不满足所述判断条件而将所述目标队列更新为优先级仅比所述目标队列低的优先级队列;
确定所述目标队列是否为所述第二队列,响应于所述目标队列为所述第二队列而选择所述第二变量对应优先级的优先级队列作为所述待调度队列;
响应于所述目标队列不为所述第二队列而确定所述目标队列是否为空;
响应于所述目标队列非空而确定所述目标队列的队头的数据包的生存时间是否等于1;
响应于所述目标队列的队头的数据包的生存时间等于1而选择所述目标队列作为所述待调度队列;
响应于所述目标队列的队头的数据包的生存时间不等于1而确定所述目标队列的队头的数据包的生存时间是否小于所述第一变量;
响应于所述目标队列的队头的数据包的生存时间小于所述第一变量而更新所述第一变量为所述目标队列的队头的数据包的生存时间,更新所述第二变量为所述目标队列的优先级,将所述目标队列更新为优先级仅比所述目标队列低的优先级队列;并且
响应于所述目标队列为空或所述目标队列的队头的数据包的生存时间不小于所述第一变量而将所述目标队列更新为优先级仅比所述目标队列低的优先级队列。
8.根据权利要求2所述的方法,其特征在于:
所述联网设备是交换机,所述交换机包括交叉开关结构。
9.一种联网设备,其特征在于,所述联网设备包括处理器和存储器,所述处理器执行所述存储器存储的计算机程序以实现如权利要求1-8中任一项所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储有至少一个指令,所述至少一个指令被处理器执行时实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111370549.6A CN113890860B (zh) | 2021-11-18 | 2021-11-18 | 用于支持时延受限的数据交换的方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111370549.6A CN113890860B (zh) | 2021-11-18 | 2021-11-18 | 用于支持时延受限的数据交换的方法、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113890860A true CN113890860A (zh) | 2022-01-04 |
CN113890860B CN113890860B (zh) | 2022-07-15 |
Family
ID=79015395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111370549.6A Active CN113890860B (zh) | 2021-11-18 | 2021-11-18 | 用于支持时延受限的数据交换的方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113890860B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114567679A (zh) * | 2022-03-25 | 2022-05-31 | 阿里巴巴(中国)有限公司 | 数据传输方法及装置 |
CN114885360A (zh) * | 2022-06-09 | 2022-08-09 | 中国联合网络通信集团有限公司 | 时延可靠性确定方法、接入网设备及存储介质 |
CN115242726A (zh) * | 2022-07-27 | 2022-10-25 | 阿里巴巴(中国)有限公司 | 队列的调度方法和装置及电子设备 |
CN116028398A (zh) * | 2022-11-01 | 2023-04-28 | 中科计算技术西部研究院 | 一种互连网络仲裁系统、装置、方法及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102014052A (zh) * | 2010-11-05 | 2011-04-13 | 中国科学院声学研究所 | 一种虚拟动态优先级分组调度方法 |
US20130135996A1 (en) * | 2011-11-29 | 2013-05-30 | Hughes Networks Systems, Llc | Method and system for traffic management and resource allocation on a shared access network |
CN104333516A (zh) * | 2014-10-20 | 2015-02-04 | 东南大学成贤学院 | 用于组合输入交叉点缓存交换结构的旋转轮训调度方法 |
US20160065484A1 (en) * | 2014-08-29 | 2016-03-03 | Cisco Technology, Inc. | Flexible recirculation bandwidth management |
CN110011934A (zh) * | 2019-03-15 | 2019-07-12 | 浙江大学 | 一种用于输入队列交换机的混合队列架构与混合调度方法 |
US10412018B1 (en) * | 2017-03-21 | 2019-09-10 | Barefoot Networks, Inc. | Hierarchical queue scheduler |
US20200304431A1 (en) * | 2019-03-20 | 2020-09-24 | Fujitsu Limited | Communication device, communication system, and communication method |
-
2021
- 2021-11-18 CN CN202111370549.6A patent/CN113890860B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102014052A (zh) * | 2010-11-05 | 2011-04-13 | 中国科学院声学研究所 | 一种虚拟动态优先级分组调度方法 |
US20130135996A1 (en) * | 2011-11-29 | 2013-05-30 | Hughes Networks Systems, Llc | Method and system for traffic management and resource allocation on a shared access network |
US20160065484A1 (en) * | 2014-08-29 | 2016-03-03 | Cisco Technology, Inc. | Flexible recirculation bandwidth management |
CN104333516A (zh) * | 2014-10-20 | 2015-02-04 | 东南大学成贤学院 | 用于组合输入交叉点缓存交换结构的旋转轮训调度方法 |
US10412018B1 (en) * | 2017-03-21 | 2019-09-10 | Barefoot Networks, Inc. | Hierarchical queue scheduler |
CN110011934A (zh) * | 2019-03-15 | 2019-07-12 | 浙江大学 | 一种用于输入队列交换机的混合队列架构与混合调度方法 |
US20200304431A1 (en) * | 2019-03-20 | 2020-09-24 | Fujitsu Limited | Communication device, communication system, and communication method |
Non-Patent Citations (4)
Title |
---|
A. ALNOMAN等: "A Dynamic Priority Service Provision Scheme for Delay-Sensitive Applications in Fog Computing", 《2018 29TH BIENNIAL SYMPOSIUM ON COMMUNICATIONS》 * |
周德新等: "AFDX端系统中数据流实时调度问题研究", 《计算机仿真》 * |
孟国栋: "视频监控智能检测系统检测队列调度算法的研究", 《中国海洋大学硕士学位论文》 * |
赵卫星等: "基于优先级输入排队的调度算法的研究", 《中国科技信息》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114567679A (zh) * | 2022-03-25 | 2022-05-31 | 阿里巴巴(中国)有限公司 | 数据传输方法及装置 |
CN114567679B (zh) * | 2022-03-25 | 2024-04-02 | 阿里巴巴(中国)有限公司 | 数据传输方法及装置 |
CN114885360A (zh) * | 2022-06-09 | 2022-08-09 | 中国联合网络通信集团有限公司 | 时延可靠性确定方法、接入网设备及存储介质 |
CN115242726A (zh) * | 2022-07-27 | 2022-10-25 | 阿里巴巴(中国)有限公司 | 队列的调度方法和装置及电子设备 |
CN115242726B (zh) * | 2022-07-27 | 2024-03-01 | 阿里巴巴(中国)有限公司 | 队列的调度方法和装置及电子设备 |
CN116028398A (zh) * | 2022-11-01 | 2023-04-28 | 中科计算技术西部研究院 | 一种互连网络仲裁系统、装置、方法及存储介质 |
CN116028398B (zh) * | 2022-11-01 | 2023-10-31 | 中科计算技术西部研究院 | 一种互连网络仲裁系统、装置、方法及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113890860B (zh) | 2022-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113890860B (zh) | 用于支持时延受限的数据交换的方法、设备及介质 | |
US10182021B2 (en) | Crossbar switch and recursive scheduling | |
US8937964B2 (en) | Apparatus and method to switch packets using a switch fabric with memory | |
KR100620835B1 (ko) | 최적화된 가변 네트워크 스위치 | |
EP1741229B1 (en) | Weighted random scheduling | |
Nong et al. | Analysis of nonblocking ATM switches with multiple input queues | |
EP3008868B1 (en) | Multicast flow reordering scheme | |
WO2014173315A1 (en) | Packet output controller and method for dequeuing multiple packets from one scheduled output queue and/or using over- scheduling to schedule output queues | |
US8588239B2 (en) | Relaying apparatus and packet relaying apparatus | |
US7289443B1 (en) | Slow-start packet scheduling particularly applicable to systems including a non-blocking switching fabric and homogeneous or heterogeneous line card interfaces | |
CN105700940B (zh) | 一种调度器及调度器的动态复用方法 | |
Lin et al. | The concurrent matching switch architecture | |
EP1638273A2 (en) | Scheduling using quantum and deficit values | |
EP2111001B1 (en) | Relay apparatus and packet relaying method | |
US10581759B1 (en) | Sharing packet processing resources | |
CN109379304B (zh) | 一种用于降低低优先级包延迟的公平调度方法 | |
US20060077973A1 (en) | Output scheduling method of crosspoint buffered switch | |
US10742558B1 (en) | Traffic manager resource sharing | |
CN114726804B (zh) | 周期性数据包的数据调度方法、设备及介质 | |
KR100636272B1 (ko) | 포트 스케쥴링 장치 및 그 방법 | |
EP4102791B1 (en) | Data validity based network buffer management system | |
US10554572B1 (en) | Scalable ingress arbitration for merging control and payload | |
US20220377026A1 (en) | Quasi-Output Queue Behavior of a Packet Switching Device Achieved Using Virtual Output Queue Ordering Independently Determined for each Output Queue | |
Zheng et al. | An efficient round-robin algorithm for combined input-crosspoint-queued switches | |
Liu et al. | A sliding‐window parallel packet switch for high‐speed networks |
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 |