CN110650099A - 预测计算设备中的包寿命的排队系统 - Google Patents
预测计算设备中的包寿命的排队系统 Download PDFInfo
- Publication number
- CN110650099A CN110650099A CN201910533086.7A CN201910533086A CN110650099A CN 110650099 A CN110650099 A CN 110650099A CN 201910533086 A CN201910533086 A CN 201910533086A CN 110650099 A CN110650099 A CN 110650099A
- Authority
- CN
- China
- Prior art keywords
- queue
- dequeue rate
- memory
- threshold
- state
- 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
- 230000015654 memory Effects 0.000 claims abstract description 332
- 238000012545 processing Methods 0.000 claims abstract description 97
- 238000000034 method Methods 0.000 claims abstract description 79
- 230000004044 response Effects 0.000 claims abstract description 24
- 238000010586 diagram Methods 0.000 description 23
- 230000007704 transition Effects 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 235000008694 Humulus lupulus Nutrition 0.000 description 6
- 239000004744 fabric Substances 0.000 description 6
- 230000007423 decrease Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- 239000003550 marker Substances 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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
- H04L47/52—Queue scheduling by attributing bandwidth to queues
- H04L47/522—Dynamic queue service slot or variable bandwidth allocation
-
- 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/562—Attaching a time tag to queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- 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
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/02—Capturing of monitoring data
- H04L43/022—Capturing of monitoring data by sampling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0894—Packet rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
-
- 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/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- 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/28—Flow control; Congestion control in relation to timing considerations
- H04L47/283—Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
-
- 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/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- 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
-
- 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/70—Admission control; Resource allocation
- H04L47/83—Admission control; Resource allocation based on usage prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9078—Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及预测计算设备中的包寿命的排队系统。公开了用于网络设备的排队系统的技术。在一个示例中,网络设备包括多个存储器与连接至多个存储器的处理电路。多个存储器包括处理电路的本地存储器和到处理电路的外部存储器。处理电路被配置为接收待处理的传入网络包,其中,在处理之前,网络包保存在队列中,并且基于队列的出列速率确定网络包的预测寿命。处理电路被进一步配置为基于预测寿命从多个存储器中选择第一存储器并且响应从多个存储器中选择第一存储器而将网络包存储在第一存储器中。
Description
优先权
本申请要求保护于2018年6月27日提交的美国专利申请号16/020,842的权益,通过引用将其全部内容结合在此。
技术领域
本公开整体涉及计算设备,并且具体地,涉及网络设备中的排队。
背景技术
计算机网络是能够交换数据并且共享资源的互连网络设备的统称。示例性网络设备包括路由器、交换机、以及其他的在开放系统互连(OSI)参考模型的第二层(即,数据链接层)内操作的第二层(L2)网络设备、以及在OSI参考模型的第三层(即,网络层)内操作的第三层(L3)网络设备。计算机网络内的网络设备通常包括为网络设备提供控制平面功能的控制单元和用于路由或切换数据单元的转发组件。
计算机网络的网络交换机可以使用队列来帮助提供发送器与接收器之间的带宽匹配。更具体地,网络交换机以相对快的速率接收来自发送器的包。网络交换机以相对慢的速率将从发送器接收的包的一部分发送至接收器并且将接收包的其余部分存储在队列中。在发送接收包的一部分之后,网络交换机以相对慢的速率将存储在队列中的包发送至接收器。
发明内容
总体上,本公开描述了用于改善网络设备中的排队系统的技术。在包转发引擎之间进行内部切换之前,或在通过网络发送包之前,诸如路由器或交换机的网络设备可以在一个或多个队列中对包进行重新排队。可以将队列的包存储在延迟带宽缓冲器中,延迟带宽缓冲器可以实现为包括本地存储器(例如,片上存储器)和外部存储器(例如,高带宽存储器(HBM))的“混合存储器”。
相应地,本公开的技术描述了一种预测包“寿命”(本文中也被称为“预测寿命”)的用于网络设备的排队系统,以在本地存储器与外部存储器之间进行选择。寿命是预期包停留在延迟带宽缓冲器中的时间的预测。根据所描述的技术,网络设备将具有“短”寿命的包(例如,及时快速地写和读的包)存储在本地存储器中并且将具有“长”寿命的包(例如,相较于具有短寿命的包,及时地写、但读要晚许多的包)存储在外部存储器中。
本公开的技术通过预期包的延迟带宽缓冲器需求并且将包放入包的预测寿命的“最佳”缓冲器中以使用寿命来优化混合存储器性能。例如,网络设备可以将进入并且退出延迟带宽缓冲器的包快速地存储在本地存储器中,并且将“逗留”的包存储在外部存储器中。本文中描述的技术可以通过测量队列长度(本文中也被称为“Qlength”)和出列速率(本文中也被称为队列的“DQrate”(例如,发送速率))来预测队列延迟。延迟测量是预期包停留在队列中的时间。此外,技术可以确定队列拥堵并且在等待队列长度和延迟增长之前将经历拥堵的队列移至外部存储器,这可以有助于避免本地存储器的使用过于珍贵。
在一个示例中,本公开描述了一种方法,包括:通过网络设备的处理电路接收待处理的传入网络包,其中,在处理之前,网络包保存在队列中;由处理电路基于队列的出列速率确定网络包的预测寿命;由处理电路基于预测寿命从网络包的多个存储器中选择第一存储器,其中,多个存储器包括处理电路的本地存储器和到处理电路的外部存储器;并且响应于从多个存储器中选择第一存储器,由处理电路将网络包存储在第一存储器中。
在另一示例中,本公开描述了一种网络设备,包括:多个存储器,包括处理电路的本地存储器和到处理电路的外部存储器;和处理电路,连接至多个存储器。处理电路被配置为:接收待处理的传入网络包,其中,在处理之前,网络包保存在队列中;基于队列的出列速率确定网络包的预测寿命;基于预测寿命从多个存储器中选择第一存储器;并且响应于从多个存储器中选择第一存储器,将网络包存储在第一存储器中。
在另一示例中,本公开描述了一种包括指令的非易失性计算机可读介质,当执行指令时,指令致使网络设备的处理电路:接收待处理的传入网络包,其中,在处理之前,网络包保存在队列中;基于队列的出列速率确定网络包的预测寿命;基于预测寿命从网络包的多个存储器中选择第一存储器,其中,多个存储器包括处理电路的本地存储器和处理电路的外部存储器;并且响应于从多个存储器中选择第一存储器,将网络包存储在第一存储器中。
所附附图及以下描述阐述了本公开的技术的一个或多个示例的细节。从描述及附图以及权利要求中,技术的其他特征、对象、以及优点将变得显而易见。
附图说明
图1是示出根据本公开的技术的示例性网络的框图。
图2是示出根据本公开的技术的图1的网络内的示例性路由器的框图。
图3是示出根据本公开的技术的图2的路由器内的示例性成形器积分更新引擎的框图。
图4是示出根据本公开的技术的图2的路由器内的示例性存储器的框图。
图5是示出根据本公开的技术的延迟的概念图。
图6是示出根据本公开的技术的队列状态的状态图。
图7是示出根据本公开的技术的图2的路由器内的示例性队列延迟管理器的框图。
图8A是示出根据本公开的技术的第一移动阈的概念图。
图8B是示出根据本公开的技术的第二移动阈的概念图。
图9是示出根据本公开的技术的图2的路由器内的第一示例性移动阈管理器的框图。
图10是示出根据本公开的技术的图2的路由器内的第二示例性移动阈管理器的框图。
图11是示出根据本公开的技术的示例性操作的流程图。
贯穿图和描述,类似参考字符指类似元件。
具体实施方式
图1是示出其中网络104包括路由器106A-106B(统称路由器106)的示例性系统102的框图。设备110A–110N(统称设备110)经由路由器106连接至网络104,以访问由网络104提供的资源。每个设备110都可以是终端用户计算设备,诸如,个人电脑、膝上型电脑、移动电话、网络电话、电视机顶盒、视频游戏系统、销售点设备、个人数字助理、中间网络设备、网络家电、巨型计算机、大型计算机、工业机器人、或能够与网络104对接并且通过网络104通信的另一类型的设备。
网络104可以包括便于设备110访问内容的多个网络设备。多个网络设备中的每个可以包括路由器、交换机、服务器、数据库服务器、集线器、防火墙、入侵检测/防御(IDP)设备、和/或便于将数据传递至设备110并且便于从设备110传递数据的任意其他类型的网络装备或设备中的一种。网络104包括使用诸如边界网关协议和互联网控制消息协议的各种协议通信的路由器106,以便交换路由、网络配置信息、以及其他信息。网络可以是诸如令牌环或以太网网络的局域网(“LAN”)、虚拟局域网(“VLAN”)、或另一类型的网络。网络可以包括一个或多个有线或无线链接。例如,网络104可以是包括一条或多条以太网电缆的以太网网络。在另一示例中,网络可以是使用无线电传输通信信息的无线保真(“Wi-Fi”)网络。在另一示例中,网络104可以是移动网络。尽管在图1中示出了单一网络104,然而,网络104可以包括公共或私有的任意数目的互连网络,其中,各个网络互连,以形成一个或多个虚拟网络。
网络104提供设备110可以访问的各种资源。在图1的示例中,网络104包括存储内容或通过其他方式寻求内容来源的内容服务器112,如本文中使用的术语,内容指共同传输和/或存储在网络内的任意数据,诸如,基于网页的应用、图像、文档、网页、视频数据、诸如语音的音频数据、基于网页的游戏、脚本、或基于网络的任意其他类型的内容。网络104可以支持多点传播技术,以提高通过网络传输数据的交付效率。通常,网络104还将连接至各种其他类型的设备(例如,文件服务器、打印机、电话、以及电子邮件和其他应用服务器)。还示出了经由路由器106B耦接至公共网络114(例如,互联网)的网络104。例如,公共网络114可以包括一个或多个客户端计算设备。公共网络114可以提供到网页服务器、应用服务器、公共数据库、媒体服务器、终端用户设备、以及许多其他类型的网络资源设备和内容的访问。
网络104可以使用诸如互联网协议(IP)/传输控制协议(TCP)的一个或多个基于包的协议通过路由器106A将内容发送至设备110。在这方面,网络104可以经由离散数据单元(通常被称为“包”)支持数据的传输。因此,网络104可以被称为“基于包”或“包交换”网络。尽管在本公开中被描述成发送、传递、或通过其他方式支持包,然而,网络104可以根据由任意其他协议限定的任意其他离散数据单元发送数据,诸如,由异步传输模式(ATM)协议限定的信元、或由用户数据报协议(UDP)限定的数据报。
根据多个类别可以对通过网络104交付的网络通信量进行分类。例如,内容服务器112可以通过路由器106A将直播视频流化至设备110中的一个设备。可以将发送该视频的包分类成流式多媒体包。内容服务器112还可以使用HTTP包将网页发送至设备110中的一个。作为另一示例,可以将通过路由器106交换的信息分类成网络管理通信量。对于其他特征,除按照应用进行分类之外,可以按照来源或目的地、用户、协议、以及端口(TCP和UDP)对网络通信量进行分类。
网络通信量的各个类别可能要求一定等级的网络性能。例如,流式多媒体可能要求提供可接受的用户体验的保证带宽。作为另一示例,网络管理通信量应经历低延迟,以保持网络的效率。此外,互联网服务供应商(ISP)可以基于服务供应商协议给予特定用户高于其他用户的通信量优先级。为了满足这些要求,网络104包括根据多个预定义的QoS等级支撑服务质量(QoS)保证的机制。
路由器106接收、分析、并且对包进行分类,以将合适的优先等级分配给包。除对包进行分类之外,路由器106根据其优先等级对已接收和分类的包进行处理。以这种方式,路由器106实现了由网络104提供的QoS保证的各方面。此外,基于从系统102中的其他设备接收的信息,路由器106通过系统确定各个已接收包的适当路由并且相应地转发包。
路由器106可以调节发送包的速度,以防止网络泛洪。例如,路由器106可以包括消耗“令牌”的令牌桶成形器,以使得对应量的字节从队列中出列并且通过网络发送对应量的字节,并且如果令牌桶成形器没有足够的令牌来消耗,路由器106则不可以发送包。换言之,每个令牌可以与令牌桶成形器允许从队列中出列并且通过网络发送的字节的数目对应。因此,令牌桶成形器用于调节从队列中移除包并且通过网络发送包的速度。
路由器106可以使用延迟带宽缓冲器(DBB)作为包的主存储器。用于网络设备的延迟带宽缓冲器可以包括例如本地存储器(诸如,例如片上存储器(OCM)),并且可以使用外部存储器(诸如,例如高带宽存储器(HBM))进一步增加用于网络设备的延迟带宽缓冲器。延迟带宽缓冲器为较快发送器与较慢接收器之间的带宽匹配提供缓冲,诸如,使用传输控制协议(TCP)的这些设备。然而,在所有情况下,当端口速度增加时,外部存储器带宽不再支持全包速率,例如,其仅可以提供行速率带宽的一半。作为补偿,可以包括较快、但小许多的片上存储器作为延迟带宽缓冲器的一部分,例如,也被称为“混合存储器”。当包利用片上存储器时,混合存储器能够具有行速率性能,但是,当利用外部存储器时,仅能够具有行速率的小部分。当足够数量的包利用片上存储器时,例如,在具有行速率性能的一半的外部存储器的情况下,为50%以上的包,并且当其余包配合在可用的外部存储器带宽内时,行速率性能是可能的。如果过多的包利用带宽受限制的外部存储器,以使得其变得带宽订购过多,性能则下降,可能下降至外部存储器带宽极限的水平。
一些网络设备(例如,路由器)可以仅使用队列的长度(本文中也被称为队列长度或简称“Qlength”)在本地存储器与外部存储器之间进行选择。然而,尽管浅队列(例如,小的Qlength)通常具有比深队列更短的寿命(例如,包存储在队列中的期限),然而,队列长度自身并不总是寿命的良好预测因子。例如,存储在具有相对快的出列速率的深队列中的第一包可以具有比存储在具有相对慢的出列速率的浅队列中的第二包更短的寿命。因此,该网络设备可以将具有相对短寿命的第一包存储在外部存储器中并且将具有相对长寿命的第二包存储在本地存储器中,这可能导致网络设备的行速率性能不应有的下降。
相应地,并非仅依赖于队列长度,本公开中的技术描述了一种用于路由器106的可以使用预测寿命在本地存储器与外部存储器之间选择的排队系统。预测寿命可以指预期包停留在延迟带宽缓冲器中的时间。路由器106可以将具有“短”预测寿命的包(例如,及时快速地写并且读的包)存储在本地存储器中并且将具有“长”预测寿命的包(例如,与具有短寿命的包相比较,及时地写、但读要晚许多的包)存储在外部存储器中。例如,用于路由器106A的排队系统可以通过测量队列长度和出列速率(本文中也被称为队列的“DQrate”(例如,发送速率))来预测队列延迟。延迟测量可以指预期包停留在队列中的时间。
与仅使用队列长度的排队系统相比较,路由器106各自可以包括被配置为使用预测寿命在本地存储器与外部存储器之间选择的排队系统,以有助于避免不必要地浪费否则可能更适合于使用本地存储器的包(例如,具有短寿命的包)的外部存储器带宽。在一些示例中,与仅使用队列长度的排队系统相比较,路由器106各自可以包括被配置为使用预测寿命在本地存储器与外部存储器之间选择的排队系统,以有助于避免不必要地浪费可能更适合于外部存储器的包的本地存储器容量。在一些示例中,路由器106各自可以包括被配置为使用预测寿命在本地存储器与外部存储器之间选择的排队系统,以有助于通过遵从队列优先级而保持服务的质量和/或独立管理移动阈。
更具体地,例如,路由器106A使用出列速率确定各个传入网络包的预测寿命。在本示例中,路由器106A基于相应网络包的预测寿命将网络包存储在本地存储器或外部存储器中。路由器106A将具有相对长的预测寿命的网络包存储在外部存储器中并且将具有相对短的预测寿命的网络包存储在本地存储器中。因此,与具有“长”寿命的包相比较(例如,与具有短寿命的包相比较,及时地写、但读要晚许多的包),路由器106可能将具有“短”寿命的包(例如,及时快速地写并且读的包)存储在本地存储器中。
尽管参考路由器106对本文中描述的原理进行了讨论,然而,诸如,例如但不限于异步传输模式(ATM)交换机、局域网(LAN)交换机、接口卡、网关、防火墙、或系统102的另一设备的其他网络设备可以确定预测寿命。
图2是示出根据本公开的技术的图1的网络内的示例性路由器的框图。通常,路由器206可以操作为与图1的路由器106大致相似。在本示例中,路由器206包括经由传入链路232A–232N(“传入链路232”)接收包并且经由传出链路234A–234N(“传出链路234”)传送包的接口卡230A–230N(“IFC 230”)。IFC 230通常经由多个接口端口耦接至链路232、234。路由器206还包括确定已接收的包的路由并且经由IFC 230相应地转发包的控制单元222和与控制单元222通信的混合存储器228。
控制单元222包括路由引擎224和包转发引擎226。路由引擎224操作为路由器206的控制平面并且包括提供用于执行多个并发过程的多任务操作环境的操作系统(未示出)。例如,路由引擎224执行软件指令,以实现一个或多个控制平面网络协议246。例如,协议246可以包括一个或多个路由协议,诸如,BGP 252,以与其他路由设备交换路由信息并且更新路由信息库(RIB)242。协议246可以进一步包括诸如多协议标签交换(MPLS)协议250的传输协议和诸如互联网组管理协议(IGMP)256的多点传播管理协议。在其他示例中,协议246可以包括其他路由、传输、管理、或通信协议。
在一些示例中,路由引擎224包括命令行界面(CLI)240,以允许管理员配置和/或管理路由器206。例如,管理员可以经由CLI 240访问队列延迟管理器264,以配置队列266A–266N(“队列266”)的一个或多个参数。在另一示例中,路由引擎224包括图形用户界面(GUI)代替CLI。在又一示例中,路由引擎允许简单的网络管理协议(SMNP)254,以允许管理器从远程终端配置和/或控制路由器206。
路由协议守护进程(RPD)244可以执行BGP 252或其他路由协议以对RIB 242进行更新。RIB 242描述了其中路由器206寄存的计算机网络的拓扑并且还包括通过计算机网络的路由。RIB 242描述了计算机网络内的各个路由及各个路由的适当下一跳,即,沿着各个路由的相邻路由设备。RPD 244分析了存储在RIB 242中的信息并且生成用于包转发引擎226的转发信息,包转发引擎226将转发信息存储在转发信息库(FIB)260中。
混合存储器228用作路由器206的存储器。如所示,混合存储器228可以包括本地存储器(例如,片上存储器)和外部存储器(例如,高带宽存储器-HBM)。根据本公开的技术,混合存储器228可以存储用于路由器206的队列266。在一些示例中,混合存储器228包括随机访问存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存存储器、包括用于致使一个或多个处理器执行其所归属的动作的可执行指令。
混合存储器228中的每个队列266可以是用于组织和临时存储数据的先进先出(FIFO)数据结构。在图2的示例中,队列266存储用于路由器206的一个或多个包。在其中路由器206包括一个以上包转发引擎的一个示例中,在包转发引擎之间进行内部切换之前,路由器206将一个或多个包存储在一个或多个队列266中。在另一示例中,在通过网络发送包之前,路由器206将一个或多个包存储在一个或多个队列266中。
包转发引擎226操作为路由器206的数据平面并且包括FIB 260、成形器积分更新引擎262、移动阈管理器263、以及队列延迟管理器264。例如,包转发引擎226经由IFC 230对通过路由器206转发并且接收的包进行处理。例如,包转发引擎226可以对传出包应用滤波器和路由策略并且将包转发至网络中的下一跳。在一些示例中,控制单元222包括多个包转发引擎,其中每个包转发引擎被配置为与包转发引擎226操作相似,以为网络通信量的不同流量提供包转发功能。
例如,FIB 260可以将网络流量的网络目的地与具体的下一跳和对应的IFC 230及输出链路234的物理输出端口相关联。FIB 260可以是被编程为专用的转发芯片、一系列表、复杂的数据库、链接列表、基数树、数据库、平面文件、或各种其他数据结构的基数树。在一些示例中,FIB 260包括查询结构。给定诸如地址的密钥,查询结构可以提供一个或多个值。在一些示例中,一个或多个值可以是一个或多个下一跳。下一跳可以实现为微码,当执行微码时,微码执行一个或多个操作。一个或多个下一跳可以被“链锁”,以使得一组被链锁的下一跳在被执行时对相应不同的下一跳执行一组操作。该操作的示例可以包括对包应用一种或多种服务、丢弃包、和/或使用由一个或多个下一跳识别的一个接口和/或多个接口转发包。
包转发引擎226的队列延迟管理器264可以与成形器积分更新引擎262协作并且移动阈管理器263,以根据本公开的技术对队列266执行管理功能。例如,成形器积分更新引擎262可以实现令牌桶成形器数据结构,以确定队列266的出列速率。在本示例中,队列延迟管理器264从队列266中的相应一个队列调节包的流量,例如,使用由成形器积分更新引擎262指定的出列速率的队列266A。参考图3对成形器积分更新引擎262进行了进一步的描述。
在所有情况下,当端口速度增加时,外部存储器带宽不再支持全包速率,例如,其仅可以提供行速率带宽的一半。作为补偿,可以包括混合存储器228的较快、但小许多的本地存储器作为延迟带宽缓冲器的一部分,例如,也被称为混合存储器。当包利用本地存储器时,混合存储器228能够具有行速率性能,但是,当利用外部存储器时,仅能够具有行速率的小部分。当足够数量的包利用本地存储器时,例如,在具有行速率性能的一半的外部存储器的情况下,为50%以上,并且当其余包配合在可用的外部存储器带宽内时,行速率性能是可能的。如果过多的包利用带宽受限制的外部存储器,以使得外部存储器变得带宽订购过多,混合存储器228的性能则下降,可能下降至外部存储器带宽极限的水平。
为了有助于防止外部存储器的订购过多,队列延迟管理器264可以包括寿命模块265。寿命模块265可以使用例如出列速率、目标速率、延迟、优先级、所经历的拥堵、和其他信息中的一个或多个预测包寿命。参考图7对寿命模块265进行了进一步的描述。
例如,队列延迟管理器264初始可以将包存储在混合存储器228的本地存储器中。寿命模块265可以预测包寿命。在本示例中,移动阈管理器263可以确定混合存储器228的移动阈。如进一步参考图8和图9描述的,移动阈管理器263可以确定移动阈。队列延迟管理器264可以使用移动阈和预测寿命来选择将包存储在哪一存储器中(例如,本地存储器或外部存储器)。例如,响应于确定包的预测寿命小于移动阈,队列延迟管理器264可以将包存储在混合存储器228的本地存储器中。在本示例中,响应于确定包的预测寿命大于移动阈,队列延迟管理器264可以将包存储在混合存储器228的外部存储器中。
图3是示出根据本公开的技术的图2的示例性成形器积分更新引擎262的框图。在一个示例性实现方式中,成形器积分更新引擎262包括速率轮370和调度器372。再次,网络设备可以包括调节发送包的速度的成形器积分更新引擎262,以防止网络泛洪。而且,寿命模块265可以基于通过成形器积分更新引擎262输出的出列速率确定包的寿命。
速率轮379为调度器372提供积分更新。调度器372可以使用积分确定何时允许队列/节点数据结构388发送通过队列/节点数据结构388进行重新排队的一个或多个字节。在图3的示例中,速率轮370包括速率指示374和更新速率376。速率指示374将关于“保证(Guaranteed)”(G)和“最大(Maximum)”(M)积分字段378的速率更新提供至调度器372的积分加法器382。除非网络的G速率被过多订购,可以使用G积分将保证带宽的量分配给队列/节点数据结构388。可以使用M积分作为防止队列/节点数据结构388超过指定的平均发送速率的速率极限。
此外,更新速率376代表通过速率轮370更新积分时的速率。更新速率376向队列/节点数据结构388提供正常的出列速率。在图3的示例中,更新速率376是速率轮370的速率更新周期的逆。在一些示例中,调度器372以出列速率对平滑的瞬时变化应用低通滤波器。
调度器372包括积分加法器382、积分更新器392、速率更新器386、以及队列/节点数据结构388。调度器372的积分加法器382基于来自clip380的输入使用MUX 384为速率更新器392提供额外的积分,这转而向队列/节点数据结构388提供该额外的G/M积分390。根据当前积分和clip380的值,速率更新器392可以将积分中的一些、全部添加至队列/节点数据结构388的G/M积分390、或不向队列/节点数据结构388的G/M积分390添加任何积分。调度器372使用G/M积分390来确定何时允许队列/节点数据结构388进行发送。在一个示例中,当队列/节点数据结构388的G/M积分390是非负时,调度器372可以使包从队列/节点数据结构388中出列或从队列/节点数据结构388发送包。一旦使包从队列/节点数据结构388中出列并且从队列/节点数据结构388发送包,积分更新器386则从队列/节点数据结构388的G/M积分390中除去对应的积分数。一旦队列/节点数据结构388的G/M积分390是负数,队列/节点数据结构388则变得不合格于使后续的包出列或发送后续的包。在累积G/M积分390的非负值时,队列/节点数据结构388再次变得允许使包出列或发送包。
图4是示出根据本公开的技术的图2的路由器内的示例性混合存储器228的框图。如所示,混合存储器228可以包括全带宽的本地存储器429。而且,混合存储器228,本文中也被称为“延迟带宽缓冲器”或简称“DBB”,可以进一步包括允许大的延迟带宽缓冲需求的外部存储器427,诸如,例如延迟大至100毫秒。例如,本地存储器429可以被包含在片上存储器中,也被称为“片上包存储器”或简称“OCPmem”。在本示例中,本地存储器429为全带宽,即,本地存储器429将按照行速率重新排队和出列。队列延迟管理器264可以使用小于全带宽的外部存储器427。然而,因为本地存储器429相较于外部存储器427相对较小,所以对于最短“寿命”的包,队列延迟管理器264仅可以使用本地存储器429。与本地存储器429相比较,外部存储器427相对较大。因此,对于较长“寿命”的包,队列延迟管理器264可以使用外部存储器427。例如,本地存储器429可以为约外部存储器427的1/100th或小于外部存储器427的大小。延迟带宽缓冲器是存储器大小和发送速率的函数,并且发送速率越低,具有的延迟带宽缓冲器越大。
图4示出了用于延迟带宽缓冲器的本地存储器429和外部存储器427的组织。外部存储器427的延迟带宽缓冲器部分具有全域或与包存储器使用仪表404共享,也被简称为“共享Pmem使用仪表”404,即,指示被使用的外部存储器427的量。如本文中使用的,共享存储器可以指其中由多个排队系统使用存储器的实例,本文中被简称为“Qsys”。“共享Pmem使用仪表”404存储器可以包括被示出为“共享结构使用仪表”406的多结构Qsys,“共享结构使用仪表”406可以代表被示出为“WAN Pmem使用仪表”402(其可以代表广域网(WAN)队列系统利用)的“结构利用”和多个WAN Qsys。可以使用WAN Qsys调用端口(例如,100GE)的包。
类似地,图4示出了WAN 408的“共享”使用仪表和结构412的共享使用仪表、以及本地存储器429的总组合使用仪表410。共享WAN OCPmem使用仪表408可以进一步包括多个本地或单独的OCPmem使用仪表,每个WAN Qsys一个OCPmem使用仪表。根据本文中描述的技术,具有较短寿命(例如,延迟)的队列的包可以利用本地存储器429并且具有较长寿命的队列的包可以利用外部存储器427。
图5是示出根据本公开的技术的延迟的概念图。队列长度504,本文中也被称为“Qlength”,指示队列中的包的数目。出列速率506,本文中也被称为“DQrate”,指示包通过队列行进的速率。当在做出移动决策时将“时间值”或“寿命”分配给包时,寿命模块265可以使用出列速率506(及其他因素)预测寿命。在不能计算延迟或延迟尚不可靠的情况下,例如,空队列,寿命模块265可以使用诸如先前的出列速率、目标速率、优先级、以及经历的拥堵(例如,不以配置速率进行发送)的预测因子分配预测寿命。
图5示出了代表存储在图4的本地存储器429中的包的类型的共享区域502。如所示,图5示出了沿着横坐标轴(例如,水平轴)的出列速率和沿着纵坐标轴(例如,竖直轴)的队列长度,且出列速率从右至左增加,并且队列长度从下至上增加。
具有“短”寿命的包可以利用本地存储器429并且具有增加寿命的包移至外部存储器427。图5示出了具有高出列速率(例如,出列速率512)的深队列(例如,队列长度510)可以产生短的寿命以及具有低出列速率(例如,出列速率522)的浅队列(例如,队列长度520)。尽管本地存储器429中存在空间(例如,不接近满的使用仪表),然而,本文中描述的预测寿命技术允许具有短寿命的包保留在本地存储器429中。这保留了用于其他较长寿命包的外部存储器427带宽并且避免外部存储器427的带宽被订购过多。
图6是示出根据本公开的技术的队列状态的状态图。对于各个队列状态,寿命模块265可以使用单独的寿命查询表(LUT)。在本示例中,预测寿命LUT包括基于队列长度(例如,Qlength)、出列速率(例如,DQrate)、以及队列间歇性选择的(4)个单独LUT。
在间歇性或空的队列状态602(例如,无出列速率并且无队列长度)下,队列可以为空或具有少量的字节,且无出列速率或出列速率较小。例如,当队列的采样出列速率不超过阈出列速率时并且当队列的队列长度不超过阈队列长度时,寿命模块265可以从队列的多个队列状态中选择间歇性队列状态602。间歇性队列状态602可以表示队列为空并且自最新队列速率更新(QRU)始第一次接收字节。寿命模块265可以设置阈,以滤出短的瞬态。间歇性队列状态602可以被配置为具有趋于更短延迟的偏置,以将包保持在本地存储器429中。例如,与状态604-608相比较,间歇性队列状态602的预测寿命LUT可以对因素进行加权,以输出更短的寿命。使用目标速率能够生成寿命值,以区分所配置的高速队列与低速队列,因此,高速队列接收比低速队列相对更短的寿命(例如,延迟)。
在脉冲qlength队列状态604下,在之前的队列速率更新周期内,出列速率为0或较小,表明队列可以是从空至非空的脉冲或被拥堵并且不能进行发送。例如,当队列的采样出列速率不超过阈出列速率时并且当队列的队列长度超过阈队列长度时,寿命模块265可以从队列的多个队列状态中选择脉冲队列状态。在一些示例中,当qlength超过qlength阈时,队列可以从间歇性队列状态602移至脉冲队列状态604。在脉冲队列状态604下,当队列长度增长超过一定点时,例如,两个或三个最大传输单位(MTU),寿命模块265可以将延迟设置为相对较大的值,以将包移至外部存储器427中。将包移至外部存储器427中可以有助于处理拥堵的队列情况,但是,在转变成激活队列状态608之前,允许一定量的脉冲。在脉冲队列状态604下,如果替代地,队列不拥堵,则其将可能在下一QRU周期内转变成激活队列状态608并且具有出列速率。可以使用目标延迟(Qlength/目标速率)对寿命分配值。在一些示例中,假定传输速率,可以使用Qlength生成寿命值。
在波动队列状态606下,本文中也被称为“瞬时队列状态”,队列目标为空、或近似空,但是,在最后QRU周期期间以出列速率发送一些字节(例如,寿命模块265可以通过获知QRU周期而预测字节的数目)。例如,当队列的采样出列速率超过阈出列速率时并且当队列的队列长度不超过阈队列长度时,寿命模块265可以从队列的多个队列状态中选择波动队列状态606。在波动队列状态606下,队列可以间歇性地接收包。在波动队列状态606下,寿命模块265可以使用在先前QRU周期内传送的字节的量确定延迟(例如,DQrate*QRU周期)。在波动队列状态606下,寿命模块265可以保留在本地存储器429中,直至转变成激活队列状态608或队列长度区域。在一些示例中,可以使用DQrate分配寿命值,在其他示例中,当设置Q间歇性时,指示从空至非空的队列,队列可以转变成间歇性队列状态602或脉冲队列状态604。
在激活队列状态608(例如,出列速率和队列长度)下,队列具有使用出列速率和队列长度的可计算延迟。例如,当队列的采样出列速率超过阈出列速率时并且当队列的队列长度超过阈队列长度时,寿命模块265可以从队列的多个队列状态中选择激活队列状态608。在一些示例中,当队列长度为空时,寿命模块265可以转变成脉冲队列状态604。
图6中的状态图示出了当包到达和离开并且队列再次变为非空和空时的四种状态之间的转变。间歇性队列状态602与之前的空队列相关联。通常,波动队列状态606可以与转变为空和从空转变的队列相关联。通常,脉冲队列状态604可以与从空转变为非空的队列相关联。通常,激活队列状态608可以与具有适度队列长度并且由于具有出列速率而发送的队列相关联。
空队列通常进入间歇性队列状态602。根据发生出列(产生出列速率)的时间,寿命模块265可以转变成激活队列状态608或脉冲队列状态604。当为空时(例如,发送全部字节的出列),寿命模块265可以从激活队列状态608转变成波动队列状态606。一旦发生出列并且产生出列速率,寿命模块265则可以从脉冲队列状态604转变成激活队列状态608。
表1中示出了示例性阈和寿命选择LUT阈。
表1
在表1中,“Hi-Pri”值‘1’代表高优先级包并且Hi-Pri值‘0’代表低或正常优先级包,并且“Q-int”值‘1’代表已经发生队列间歇性状态并且Q-int值‘0’代表未发生队列间歇性状态。在表1中,对于高的优先级包并且当已经发生队列间歇性状态时,寿命模块265选择高的Qlength阈(对于增加脉冲)和低的DQrate阈。此外,在表1中,对于高的优先级包并且当未发生队列间歇性状态时,寿命模块265选择高的Qlength阈(对于增加脉冲)和低的Dqrate阈。此外,在表1中,对于低的优先级包并且当已经发生队列间歇性状态时,寿命模块265选择低的Qlength阈和高的DQrate阈。例如,对于低的优先级包并且当已经发生队列间歇性状态时,寿命模块265迫使选择空的间歇性区域(例如,区域00)和脉冲区域(例如,区域10)。此外,在表1中,对于低的优先级包并且当未发生队列间歇性状态时,寿命模块265选择低的Qlength阈和低的DQrate阈。
表2中示出了示例性的寿命LUT输入和寿命LUT输出。
表2
在表2中,ACTIVE与激活队列状态608对应,QLENGTH与脉冲队列状态604对应,DQRATE与波动队列状态606对应,并且EMPTY与间歇性队列状态602对应。在表2中,激活队列状态608下的LUT输入是“Dqrate延迟”并且寿命模块265根据DQrate和Qlength计算延迟。此外,在表2中,脉冲队列状态604下的LUT输入是目标延迟并且寿命模块265根据目标速率和Qlength计算延迟或LUT输入是Queue长度并且延迟LUT使用Qlength作为索引和软件(SW)定义的最大速率。此外,在表2中,波动队列状态606下的LUT输入是DQrate并且寿命模块265使用DQrate作为索引和软件定义的最小Qlength计算延迟。此外,在表2中,间歇性队列状态602下的LUT输入是目标速率并且寿命模块265使用目标速率作为索引和软件定义的阈Qlength计算延迟。
寿命模块265可以结合选择四种队列状态LUT中的一种而配置有单独的队列长度和出列速率阈。阈可以滤出队列长度和出列速率中的较小的值,并且可以基于队列优先级进行缩放(例如,高优先级可以具有较高的阈并且低的优先级具有较低的阈,以使得当队列为空或低于Qlength阈时,高的优先级能够具有更大的“脉冲容差”)。例如,当队列为空并且包到达并且开始以脉冲形式填充队列时,寿命模块265可以使用高至Qlength阈(被设置成较大的值,例如但不限于10千字节(kB))的固定寿命,并且然后,使用目标延迟从EMPTY转变成QLENGTH区域,或当DQrate可用时,使用DQrate延迟从EMPTY转变成ACTIVE区域。固定寿命值来自于通过高优先级选择的寿命LUT中的单独区域。这允许高的优先级使用本地存储器接收脉冲,但是,如果高的优先级被订购过多,例如,端口上的通信量过多,并且如果高优先级队列开始构建并且高优先级队列可能超过Qlength阈,寿命模块265则可以随着Qlength的增长而开始将优先队列的高通信量转移至外部存储器,在脉冲队列状态604或激活队列状态608下,这可能发生一次转移。
图7是示出根据本公开的技术的图2的路由器的队列延迟管理器264内的示例性寿命模块265的框图。寿命模块265被配置为确定通过路由器接收的包的预测寿命,以用于确定是将包存储在本地存储器中还是存储在外部存储器中。如所示,寿命模块265可以接收目标速率702、采样出列速率704、队列长度706。目标速率702可以是预定的目标速率。采样出列速率704可以是当前采样出列速率。当采样出列速率704不稳定时(例如,小于阈),可以使用目标速率702代替采样出列速率704。如所示,速率差模块714可以接收目标速率702和采样出列速率704的指示并且输出指示是否经历了队列拥堵的队列拥堵经历位712。速率差模块714可以将目标速率702与采样出列速率704相比较,并且当检测到足够大的差时,速率差模块714可以设置队列拥堵经历位712。当采样出列速率704小于目标速率702时,可以设置队列拥堵经历位712。寿命模块265可以使用在脉冲队列状态下接收的包的队列长度706。
初始,LUT模块718可以被配置为基于是否经历队列拥堵而选择阈出列速率。拥堵区域用于经历拥堵的队列,即,设置拥堵经历位712。由于外部存储器带宽拥堵或这些队列增长过大并且处于基于Qlength的丢弃阈,例如,尾坠或加权随机早期检测(WRED),这些队列丢弃包,并且因此应被偏置而移至外部存储器。这些队列应具有可缩放的较长寿命,因此,其在其他相似、但不拥堵的队列之前移至外部存储器。例如,当将队列拥堵经历位712设置成逻辑高值‘1’时,LUT模块718可以被配置为使用拥堵LUT选择阈队列长度‘n1’。在本示例中,当将队列拥堵经历位712设置成逻辑低值‘0’时,LUT模块718可以被配置为使用非拥堵的LUT选择阈队列长度‘n2’。类似地,当将队列拥堵经历位712设置成逻辑高值‘1’时,LUT模块718可以被配置为使用拥堵LUT选择阈出列速率‘m1’。在本示例中,当将队列拥堵经历位712设置成逻辑低值‘0’时,LUT模块718可以被配置为使用非拥堵的LUT选择阈出列速率‘m2’。
在一些示例中,LUT模块718可以被配置为基于队列长度706是否为空而选择阈出列速率。换言之,在一些示例中,LUT模块718可以迫使阈出列速率‘m’为最大,以基于队列间歇性710选择队列区域00(例如,间歇性队列状态)和10(例如,脉冲队列状态)。例如,当将Q_went_empty708设置成逻辑高值‘1’时,LUT模块718可以被配置为使用第一LUT以选择阈队列长度‘n1’。在本示例中,当将Q_went_empty708设置成逻辑低值‘0’时,LUT模块718可以被配置为使用第二LUT以选择阈队列长度‘n2’。类似地,当将Q_went_empty 708设置成逻辑高值‘1’时,LUT模块718可以被配置为使用第一LUT以选择出列速率‘m1’。在本示例中,当将Q_went_empty 708设置成逻辑低值‘0’时,LUT模块718可以被配置为使用第二LUT以选择阈出列速率‘m2’。
在一些示例中,LUT模块718可以被配置为基于优先级选择阈出列速率。换言之,例如,LUT模块718可以基于严格的高优先级而加大阈队列长度‘n’,以增加脉冲容差。例如,LUT模块718可以被配置为使用第一LUT来选择第一优先级的阈队列长度‘n1’。在本示例中,LUT模块718可以被配置为使用第二LUT来选择第一优先级的阈队列长度‘n2’。类似地,LUT模块718可以被配置为使用第一LUT来选择第一优先级的阈出列速率‘m1’。在本示例中,LUT模块718可以被配置为使用第二LUT来选择第二优先级的阈出列速率‘m2’。
寿命模块265可以确定队列状态。如所示,比较模块724将队列长度706与阈队列长度‘n’相比较。在本示例中,当队列长度706超过阈队列长度‘n’时,比较模块724输出逻辑高值‘1’。类似地,比较模块726将采样出列速率704与阈出列速率‘m’相比较。
在本示例中,当采样出列速率704超过阈出列速率‘m’时,比较模块726输出逻辑高值‘1’。因此,寿命模块265可以使用比较模块724和比较模块726的输出确定队列状态。例如,当比较模块724输出逻辑高值‘1’时并且当比较模块726输出逻辑高值‘1’时,寿命模块265可以确定队列状态为激活队列状态608。
在一些示例中,当比较模块724输出逻辑高值‘1’时并且当比较模块726输出逻辑低值‘0’时,寿命模块265可以确定队列状态为脉冲队列状态604。在一些示例中,当比较模块724输出逻辑低值‘0’时并且当比较模块726输出逻辑高值‘1’时,寿命模块265可以确定队列状态为波动队列状态606。在一些示例中,当比较模块724输出逻辑低值‘0’时并且当比较模块726输出逻辑低值‘0’时,寿命模块265可以确定队列状态为间歇性队列状态602。
目标速率种子733可以基于比较模块724的输出和比较模块726的输出生成控制多路复用器720的目标速率选择值。例如,当采样出列速率704不稳定时(例如,在间歇性队列状态期间),目标速率种子733可以生成逻辑高值‘1’。
寿命模块265可以基于队列状态选择LUT模块732所使用的输入。LUT模块732可以被配置为将浮动点输入格式映射至寿命、将clip和缩放输入范围映射至寿命、和/或根据需要提供非线性寿命。寿命模块265可以输出具有从0至本地存储器的最大容量(maximumsize)的范围的寿命(例如,从0至255)值。例如,当选择间歇性队列状态602和波动队列状态606时,多路复用器730可以被配置为传递多路复用器730的输出作为LUT模块732的输入。延迟模块728可以被配置为在脉冲队列状态和/或空队列下输出队列的包所使用的目标延迟。如所示,当选择激活队列状态608时,多路复用器730可以被配置为传递延迟模块728的输出作为LUT模块732的输入。在一些示例中,当选择脉冲队列状态604时,多路复用器730可以被配置为传递多路复用器731的输出作为LUT模块732的输入。例如,对于高的优先级包,即,通常不具有与包相关联的目标速率,多路复用器730可以被配置为传递多路复用器731的输出作为LUT模块732的输入。以这种方式,当队列的订购过多时,寿命模块265可以有助于将甚至高的优先级包移至外部存储器。
LUT模块732可以被配置为从LUT模块718接收优先级选择信息735。在一些示例中,优先级选择信息735可以指示:‘11’为高优先级包,‘10’为队列间歇性,‘01’为正常或低优先级包,或‘00’为队列带宽拥堵。LUT模块732可以被配置为从LUT模块718接收队列阈区域信息737。在一些示例中,队列阈区域信息737可以指示:‘11’为激活稳定区域(例如,Qlength,DQrate),‘10’为脉冲区域(例如,Qlength,无DQrate),‘01’为DQrate–空区域(例如,无Qlength,DQrate),或‘00’为空间歇性区域(例如,无Qlength,无DQrate)。LUT模块732可以基于优先级选择信息735生成寿命。
寿命模块265可以基于通过多路复用器720输出的出列速率确定预测寿命。例如,对于激活队列状态608,多路复用器720被配置为输出采样出列速率704作为出列速率。在本示例中,延迟模块728基于通过多路复用器720输出的采样出列速率704与队列长度706确定延迟。对于激活队列状态608,LUT模块732可以针对由延迟模块728输出的延迟通过从LUT中选择寿命的值而确定预测寿命。
对于脉冲队列状态604,多路复用器720被配置为输出目标速率702作为出列速率。在本示例中,延迟模块728基于通过多路复用器720输出的目标速率702与队列长度706确定延迟。对于脉冲队列状态604,LUT模块732可以针对由延迟模块728输出的延迟通过从LUT中选择寿命的值而确定预测寿命。
在一些示例中,对于脉冲队列状态604,当LUT模块718在队列长度Bypass中输出逻辑高值‘1’时,寿命模块265可以指示队列长度小于队列长度旁路(例如,队列长度旁路是选择用于输入至LUT模块732的qlength、而非Latency的控制信号)值。例如,当LUT模块718在队列长度旁路中输出逻辑高值‘1’时,多路复用器731将队列长度706输出至LUT模块732,对于脉冲队列状态604,这可以通过从LUT中选择队列长度706的寿命的值而确定预测寿命。然而,当LUT模块718在队列长度Bypass中输出逻辑低值‘0’时,多路复用器731将延迟输出至LUT模块732,对于脉冲队列状态604,这可以针对由延迟模块728输出的延迟通过从LUT中选择寿命的值而确定预测寿命。可以按照高的优先级将Qlength Bypass设置为LUT模块718的输入(例如,静态优先级类别中的一种)。这允许寿命模块265使用Qlength作为LUT模块732的输入并且在LUT模块732的输出处使用寿命的测量。例如,假设固定的传输速率,例如,400Gbps,当创建按照队列长度索引的LUT时,寿命模块265能够计算寿命值。因为高优先级如此而已,所以寿命模块265可以以Qsys的最大速率提供高优先级包,在本示例中,为400Gbps。因为速率固定(例如,Qlength/Rate=Lifetime),所以当qlength的大小增加时,寿命也增加。
对于波动队列状态606,多路复用器720被配置为将采样出列速率704作为出列速率。在本示例中,对于波动队列状态606,LUT模块732可以针对由多路复用器720输出的采样出列速率704通过从LUT中选择寿命的值而确定预测寿命。对于间歇性队列状态602,多路复用器720被配置为输出目标速率702作为出列速率。在本示例中,对于间歇性队列状态602,LUT模块732可以针对由多路复用器720输出的输出目标速率702通过从LUT中选择寿命的值而确定预测寿命。
图8A是示出根据本公开的技术的第一移动阈802的概念图。路由器可以结合通过路由器接收的包的预测寿命而使用移动阈802来确定是否将包存储在本地存储器中或外部存储器中。在图8A和图8B的示例中,寿命区域804各自可以与值的范围相关联。例如,寿命区域804A可以指定将小于1微秒(μs)的寿命存储在本地存储器429中并且将不小于1微秒(μs)的寿命存储在外部存储器427中。
在一些示例中,移动阈管理器263可以调节移动阈802,以使得寿命区域804的附加或较少的区域与本地存储器429对应。例如,当使用仪表表示本地存储器429被大量地使用时,移动阈管理器263可以减小移动阈802,以使得较少的寿命区域804与本地存储器429对应。然而,响应于表示本地存储器429被少量地使用的使用仪表,移动阈管理器263可以增加移动阈802,以使得附加的寿命区域804与本地存储器429对应。以这种方式,移动阈管理器263可以有助于最大化本地存储器429的利用率。
图8B是示出根据本公开的技术的第二移动阈812的概念图。在图8B的示例中,第二移动阈812代表包括寿命区域804A和寿命区域804B的移动滞后。当本地存储器使用仪表增加时,移动阈管理器263可以将第二移动阈812缩放地更低,因此,逐渐增加的较小延迟需要停留在本地存储器429中。在一些示例中,当本地存储器使用仪表减少时,移动阈管理器263可以将第二移动阈812缩放地更高,以使得当本地存储器429中的空间可用时,较大延迟的包停留在本地存储器429中。在一些示例中,当发生队列带宽拥堵时,移动阈管理器263可以将第二移动阈812缩放地更低,以使得拥堵队列更可能移至外部存储器427。在一些示例中,移动阈管理器263可以利用增加的优先级将第二移动阈812缩放地更高,以有助于较高优先级的包保持在本地存储器429中。
图9是示出根据本公开的技术的图2的路由器内的第一示例性移动阈管理器263的框图。移动阈管理器263可以结合预测寿命确定所使用的移动阈(例如,移动阈802、第二移动阈812等),以确定是否将包存储在本地存储器中或外部存储器中。如所示,移动阈管理器263可以接收队列权重902、队列优先权904、激活GE区域906、本地存储器429的本地块指针队列权重(CPQW)908、本地存储器429的共享使用仪表910、本地存储器429的共享WAN使用仪表912、以及队列拥堵经历位914。
队列权重902可以是由管理员设置的权重值。队列权重902可以表示为过多的优先队列提供伪优先级的加权循环法(WRR)权重。队列优先级904可以表示网络包的优先等级。队列优先级904可以表示由识别单一与双重优先级队列的软件分配的静态优先级类别。在图9的示例中,队列权重902和队列优先级904可以构成静态配置。激活GE区域906可以表示指示当双重优先级队列位于保证或过高优先级区域中时的激活队列优先级。每次队列速率更新时,可以对激活GE区域906进行更新,并且在重新排队(NQ)时读取激活GE区域906。
通过查看每个块指针(CP)并且查看包块地址是否在片上包存储器(*OCPmem)或包存储器(Pmem)中,本地块指针队列WAN可以提供本地CPQW 908。块指针队列(CPQW)可以是保存存储在DBB中的包块(例如,256字节)的指针的排队系统(Qsys)的一部分。CPQW将把所有块链接在一起的每个队列的指针列表保存在Queue(FIFO)中。将包划分成固定大小的块、存储至DBB、本地存储器、或外部存储器,并且由CPQW保存这些块的指针。
本地存储器429的共享使用仪表910可以是本地存储器429的总组合使用仪表410的示例。通过保持跟踪所有的WAN Qsys使用本地存储器的容量的存储器分配(MALLOC)块可以提供共享使用仪表910。本地存储器429的共享WAN使用仪表912可以是WAN 408的共享使用仪表的示例。通过保持跟踪所有的WAN和结构Qsys使用本地存储器的容量的存储器分配块可以提供共享WAN使用仪表912。队列拥堵经历位914可以是速率差模块714的输出。队列拥堵经历位914可以表示当DQrate低于目标速率时经历队列带宽拥堵。在一些示例中,队列拥堵经历位914将移动阈调得更低,以使得拥堵队列更可能移至外部存储器。
LUT模块916可以基于队列权重902、队列优先级904、激活GE区域906输出优先级。类似地,LUT模块918可以基于本地存储器429的本地CPQW 908、本地存储器429的共享使用仪表910、以及本地存储器429的共享WAN使用仪表912输出WAN移动使用仪表。LUT 920可以基于预测寿命(例如,通过LUT模块732输出)、通过LUT模块916输出的优先级、通过LUT模块918输出的WAN移动使用仪表、以及队列拥堵经历位914而输出移动上方标记922。LUT模块916可以使用寿命、OCPmem使用仪表、以及优先级作为其索引实现比较功能。在本示例中,当寿命大小超过在LUT模块918中实现的逻辑阈时,将移动上方标记922设置为表示寿命大小超过在LUT模块918中实现的逻辑阈。
类似地,LUT 920可以基于预测寿命(例如,通过LUT模块732输出)、通过LUT模块916输出的优先级、通过LUT模块918输出的WAN移动使用仪表、以及队列拥堵经历位914输出移动下方标记924。LUT模块916可以使用寿命、OCPmem使用仪表、以及优先级作为其索引实现比较功能。在本示例中,当寿命大小小于在LUT模块918中实现的逻辑阈时,将移动下方标记924设置为表示寿命大小小于在LUT模块918中实现的逻辑阈。
移动逻辑926可以基于移动上方标记922和移动下方标记924调整(例如,减少或增加)移动阈802。例如,当设置移动上方标记922并且不设置移动下方标记924时,移动逻辑926可以增加移动阈802。在一些示例中,当不设置移动上方标记922并且设置移动下方标记924时,移动逻辑926可以减少移动阈802和/或移动阈812。在图9的示例中,移动逻辑926可以使用“M”为移动位925提供可选的滞后,以使得寿命中的小的变化不会导致包在转变期间被移动和不移动。当不需要滞后时,可以将阈设置成相同的值。可以由下列伪代码定义移动位925。
在一些示例中,例如,但不限于,外部存储器管理器可以使用移动逻辑926的输出确定是否丢弃网络包。图9中的LUT模块920具有2个输出:移动上方标记922和移动下方标记924。移动上方标记922是包寿命已经超过由移动LUT输入确定的值并且包将移至外部存储器427的指示。该移动下方标记924是包寿命低于阈并且将停留在本地存储器429中的指示。移动上方标记922为移动位设置被称为M位的位,以表示包将存储至外部存储器429。移动上方标记922设置M位并且移动下方标记924清除M位。
图10是示出根据本公开的技术的图2的路由器内的第二示例行移动阈管理器263的框图。移动阈管理器263可以结合预测寿命确定移动阈(例如,阈802和/或移动阈812),以确定是否将包存储在本地存储器429中或外部存储器427中。在图10的示例中,LUT模块1016可以接收队列权重1002、队列优先级1004、以及激活GE区域1006。在本示例中,LUT模块1018可以接收本地存储器429的本地块指针队列权重(CPQW)1008、本地存储器429的共享使用仪表1010、以及本地存储器429的共享WAN使用仪表1012。在本示例中,LUT模块1020可以接收队列拥堵经历位1014。输入1002-1014可以与图9中的输入902-914大致相似。然而,在图10的示例中,移动逻辑1026接收寿命1021。
在图10的示例中,LUT模块1020产生移动上方阈1022。在本示例中,移动逻辑1026将移动上方阈1022与每个包的寿命1021相比较。移动阈模块1020为OCPmem使用仪表和优先级指标的每个组合产生移动上方阈1022。当较多的本地存储器429可用时,阈值的大小通常增加,例如,允许更多的包使用本地存储器429,并且当较少的本地存储器429可用时,值通常减少,由此有助于迫使更多的包使用外部存储器427。当寿命1021超过移动上方阈1022时,队列延迟管理器264将包移至外部存储器427。
类似地,LUT模块1020产生移动下方阈1024。在本示例中,移动逻辑1026将移动下方阈1024与每个包的寿命1021相比较。移动阈模块1020为OCPmem使用仪表和优先级指标的每个组合产生移动下方阈1024。当较多的本地存储器429可用时,阈值的大小通常增加,例如,允许更多的包使用本地存储器429,并且当较少的本地存储器429可用时,值通常减少,由此有助于迫使更多的包使用外部存储器427。当寿命1021低于移动下方阈1024时,移动阈管理器263不移动包。例如,队列延迟管理器264将本地的包保存至外部存储器427。
图11是示出根据本公开的技术的示例性操作的流程图。仅出于示例性之目的,相对于图2的路由器206对图11进行了描述。初始,IFC 230A接收待处理的传入网络包(1002)。在一些示例中,队列延迟管理器264初始将网络包存储在本地存储器429中。
成形器积分更新引擎262确定出列速率(1003)。例如,成形器积分更新引擎262确定队列的令牌桶成形器在单位时间内使用的令牌的数目,以使一个或多个包从队列中出列。在本示例中,每个令牌代表从队列中出列的给定数目的字节。在本示例中,成形器积分更新引擎262基于在单位时间内使用的令牌的数目确定采样出列速率。
寿命模块265选择队列状态(1004)。例如,寿命模块265从队列的多个队列状态中选择一队列状态。更具体地,例如,当采样出列速率704超过阈出列速率时并且当队列长度706超过阈队列长度时,寿命模块265从队列的多个队列状态中选择激活队列状态。在一些示例中,当队列的采样出列速率704不超过阈出列速率时并且当队列长度706超过阈队列长度时,寿命模块265从队列的多个队列状态中选择脉冲队列状态。在一些示例中,当队列的采样出列速率704不超过阈出列速率时并且当队列的队列长度706不超过阈队列长度时,寿命模块265从队列的多个队列状态中选择间歇性队列状态。在一些示例中,当采样出列速率704超过阈出列速率时并且当队列的队列长度706不超过阈队列长度时,寿命模块265从队列的多个队列状态中选择瞬时队列状态。
寿命模块265基于出列速率和与队列状态对应的LUT确定网络包的预测寿命(1006)。例如,寿命模块265确定预测寿命包括使用与已选择的队列状态对应的查询表。更具体地,例如,寿命模块265基于队列的队列长度与出列速率确定队列的延迟。例如,寿命模块265使用已确定的延迟作为与激活队列状态对应的查询表的输入确定预测寿命。在一些示例中,寿命模块265使用已确定的延迟作为与脉冲队列状态对应的查询表的输入确定预测寿命。
在一些示例中,寿命模块265使用预定目标出列速率作为与间歇性队列状态对应的查询表的输入确定预测寿命。在一些示例中,寿命模块265使用采样出列速率作为与瞬时队列状态对应的查询表的输入确定预测寿命。寿命模块265可以基于队列的采样出列速率704与预定目标速率702的差确定队列的队列拥堵经历位712并且可以进一步基于队列拥堵经历位712确定网络包的预测寿命。例如,当队列拥堵经历位712表示采样出列速率704小于预定目标速率702时,LUT模块732可以选择与队列拥堵对应的LUT表。
移动阈管理器263确定移动阈(1007)。例如,移动阈管理器263基于本地存储器的使用仪表和队列优先级中的至少一个确定移动阈。队列延迟管理器264基于预测寿命和移动阈从网络包的多个存储器中选择第一存储器(1008)。例如,当预测寿命不超过移动阈时,队列延迟管理器264选择本地存储器429作为第一存储器。在一些示例中,当预测寿命超过移动阈时,队列延迟管理器264选择外部存储器427作为第一存储器。
队列延迟管理器264将网络包存储在第一存储器中(1010)。例如,当预测寿命不超过移动阈时,队列延迟管理器264将网络包存储在本地存储器429中。在一些示例中,当预测寿命超过移动阈时,队列延迟管理器264将网络包存储在外部存储器427中。包转发引擎226从第一存储器中接收网络包(1012)。IFC 230A发送网络包(1014)。
在硬件、软件、固件、或其任意组合中至少可以部分实现本公开中所描述的技术。例如,在一个或多个处理器内可以实现所描述技术的各个方面,包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、场可编程门阵列(FPGA)、或任意其他等效集成或离散逻辑电路、以及该组件的任意组合。术语“处理器”或“处理电路”通常可以指单独或结合其他逻辑电路的任意上述逻辑电路、或任意其他等效电路。包括硬件的控制单元还可以执行本公开中的一种或多种技术。
在相同设备内或独立设备内可以实现该硬件、软件、以及固件,以支持本公开中所描述的各种操作和功能。此外,任意所描述的单元、模块、或部件可以一起或单独实现为离散、但可共同操作的逻辑设备。作为模块或单元的不同特征的描述旨在突出不同的功能方面并且不一定默示必须通过独立硬件或软件组件实现该等模块或单元。确切地,通过独立硬件或软件部件可以执行与一个或多个模块或单元相关联的功能,或将与一个或多个模块或单元相关联的功能集成在共同的部件或独立硬件或软件组件内。
本公开中描述的技术还可以涵盖或被编码在包含指令的计算机可读介质中,诸如,计算机可读存储介质。例如,当执行指令时,被嵌入或编码在计算机可读存储介质中的指令可以致使可编程处理器或其他处理器执行方法。计算机可读存储介质可以包括随机访问存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存存储器、硬盘、CD-ROM、软盘、盒式磁带、磁性介质、光学介质、或其他计算机可读介质。
除上述内容之外或作为上述内容的可替代方案,描述了下列示例。本文中描述的任意其他示例中可以利用任意下列实施方式中所描述的特征。
示例1.一种方法,包括:通过网络设备的处理电路接收待处理的传入网络包,其中,在处理之前,网络包保存在队列中;由处理电路基于队列的出列速率确定网络包的预测寿命;由处理电路基于预测寿命从网络包的多个存储器中选择第一存储器,其中,多个存储器包括处理电路的本地存储器和到处理电路的外部存储器;并且响应于从多个存储器中选择第一存储器,由处理电路将网络包存储在第一存储器中。
示例2.根据示例1所述的方法,包括:由处理电路从队列的多个队列状态中选择一队列状态,其中,确定预测寿命包括使用与已选择的队列状态对应的查询表。
示例3.根据示例2所述的方法,其中,确定网络包的预测寿命包括:基于队列的队列长度与出列速率确定队列的延迟。
示例4.根据示例3所述的方法,其中,出列速率包括队列的采样出列速率,其中,已选择的队列状态是激活队列状态,并且其中,选择队列状态包括:当采样出列速率超过阈出列速率时并且当队列长度超过阈队列长度时,从队列的多个队列状态中选择激活队列状态,其中,确定延迟为响应选择激活队列状态,并且其中,确定预测寿命还包括使用已确定的延迟作为与激活队列状态对应的查询表的输入。
示例5.根据示例3所述的方法,其中,出列速率包括队列的预定目标出列速率,其中,已选择的队列状态是脉冲队列状态,并且其中,选择队列状态包括:当队列的采样出列速率不超过阈出列速率时并且当队列长度超过阈队列长度时,从队列的多个队列状态中选择脉冲队列状态,其中,确定延迟为响应选择脉冲队列状态,并且其中,确定预测寿命还包括使用已确定的延迟作为与脉冲队列状态对应的查询表的输入。
示例6.根据示例2所述的方法,其中,出列速率包括队列的预定目标出列速率,其中,已选择的队列状态是间歇性队列状态,并且其中,选择队列状态包括:当队列的采样出列速率不超过阈出列速率时并且当队列的队列长度不超过阈队列长度时,从队列的多个队列状态中选择间歇性队列状态,其中,确定预测寿命包括使用预定目标出列速率作为与间歇性队列状态对应的查询表的输入。
示例7.根据示例2所述的方法,其中,出列速率包括队列的采样出列速率,其中,已选择的队列状态是瞬时队列状态,并且其中,选择队列状态包括:当采样出列速率超过阈出列速率时并且当队列的队列长度不超过阈队列长度时,从队列的多个队列状态中选择瞬时队列状态,其中,确定预测寿命包括使用采样出列速率作为与瞬时队列状态对应的查询表的输入。
示例8.根据示例1至7中任意组合所述的方法,其中,出列速率包括队列的采样出列速率,方法还包括:由处理电路基于队列的采样出列速率与预定目标出列速率的差确定队列经历的队列拥堵,其中,确定预测寿命进一步基于队列拥堵。
示例9.根据示例1至8中任意组合所述的方法,其中,选择第一存储器包括:
基于本地存储器的使用仪表和队列的优先级中的至少一个确定移动阈;并且将移动阈与预测寿命相比较。
示例10.根据示例9所述的方法,其中,选择第一存储器包括:当预测寿命不超过移动阈时,选择本地存储器作为第一存储器;并且当预测寿命超过移动阈时,选择外部存储器作为第一存储器。
示例11.根据示例1至10中任意组合所述的方法,包括:响应于接收网络包,在选择第一存储器之前,由处理电路将网络包存储在本地存储器中。
示例12.根据示例1至11中任意组合所述的方法,其中,网络设备是第一网络设备,方法还包括:由处理电路从第一存储器中检索网络包;并且通过处理电路将已检索的网络包发送至第二网络设备。
示例13.根据示例1至12中任意组合所述的方法,其中,出列速率包括队列的采样出列速率,方法还包括:通过处理电路确定队列的令牌桶成形器在单位时间内使用的令牌的数目,以使一个或多个包从队列中出列,其中,每个令牌代表从队列中出列的给定数目的字节;并且由处理电路基于在单位时间内使用的令牌的数目确定采样出列速率。
示例14.一种网络设备,包括:多个存储器,包括处理电路的本地存储器和到处理电路的外部存储器;和处理电路,连接至多个存储器并且被配置为:接收待处理的传入网络包,其中,在处理之前,网络包保存在队列中;基于队列的出列速率确定网络包的预测寿命;基于预测寿命从多个存储器中选择第一存储器;并且响应于从多个存储器中选择第一存储器,将网络包存储在第一存储器中。
示例15.根据示例14所述的网络设备,其中,处理电路被配置为:从队列的多个队列状态中选择一队列状态,其中,为了确定预测寿命,处理电路被配置为使用与已选择的队列状态对应的查询表。
示例16.根据示例15所述的网络设备,其中,为了确定网络包的预测寿命,处理电路被配置为:基于队列的队列长度与出列速率确定队列的延迟。
示例17.根据示例16所述的网络设备,其中,出列速率包括队列的采样出列速率,其中,已选择的队列状态是激活队列状态,并且其中,为了选择队列状态,处理电路被配置为:当采样出列速率超过阈出列速率时并且当队列长度超过阈队列长度时,从队列的多个队列状态中选择激活队列状态,其中,确定延迟为响应选择激活队列状态,并且其中,为了确定预测寿命,处理电路被进一步配置为使用已确定的延迟作为与激活队列状态对应的查询表的输入。
示例18.根据示例16所述的网络设备,其中,出列速率包括队列的预定目标出列速率,其中,已选择的队列状态是脉冲队列状态,并且其中,为了选择队列状态,处理电路被配置为:当队列的采样出列速率不超过阈出列速率时并且当队列长度超过阈队列长度时,从队列的多个队列状态中选择脉冲队列状态,其中,确定延迟为响应选择脉冲队列状态,并且其中,为了确定预测寿命,处理电路被进一步配置为使用已确定的延迟作为与脉冲队列状态对应的查询表的输入。
示例19.根据示例15所述的网络设备,其中,出列速率包括队列的预定目标出列速率,其中,已选择的队列状态是间歇性队列状态,并且其中,为了选择队列状态,处理电路被配置为:当队列的采样出列速率不超过阈出列速率时并且当队列的队列长度不超过阈队列长度时,从队列的多个队列状态中选择间歇性队列状态,其中,为了确定预测寿命,处理电路被配置为使用预定目标出列速率作为与间歇性队列状态对应的查询表的输入。
示例20.根据示例15所述的网络设备,其中,出列速率包括队列的采样出列速率,其中,已选择的队列状态是瞬时队列状态,并且其中,为了选择队列状态,处理电路被配置为:当采样出列速率超过阈出列速率时并且当队列的队列长度不超过阈队列长度时,从队列的多个队列状态中选择瞬时队列状态,其中,为了确定预测寿命,处理电路被配置为使用采样出列速率作为与瞬时队列状态对应的查询表的输入。
示例21.根据示例14至20中任意组合所述的网络设备,其中,出列速率包括队列的采样出列速率,并且其中,处理电路被配置为:基于队列的采样出列速率与预定目标出列速率的差确定队列经历的队列拥堵,其中,确定预测寿命进一步基于队列拥堵。
示例22.根据示例14至21中任意组合所述的网络设备,其中,为了选择第一存储器,处理电路被配置为:基于本地存储器的使用仪表和队列的优先级中的至少一个确定移动阈;并且将移动阈与预测寿命相比较。
示例23.根据示例22所述的网络设备,其中,为了选择第一存储器,处理电路被配置为:当预测寿命不超过移动阈时,选择本地存储器作为第一存储器;并且当预测寿命超过移动阈时,选择外部存储器作为第一存储器。
示例24.根据示例14至23中任意组合所述的网络设备,其中,处理电路被配置为:响应于接收网络包,在选择第一存储器之前,将网络包存储在本地存储器中。
示例25.根据示例14至24中任意组合所述的网络设备,其中,网络设备是第一网络设备,并且其中,处理电路被配置为:从第一存储器中检索网络包;并且将已检索的网络包发送至第二网络设备。
示例26.根据示例14至25中任意组合所述的网络设备,其中,出列速率包括队列的采样出列速率,并且其中,处理电路被配置为:确定队列的令牌桶成形器在单位时间内使用的令牌的数目,以使一个或多个包从队列中出列,其中,每个令牌代表从队列中出列的给定数目的字节;并且基于在单位时间内使用的令牌的数目确定采样出列速率。
示例27.一种包括指令的非易失性计算机可读介质,当执行指令时,指令致使网络设备的处理电路:接收待处理的传入网络包,其中,在处理之前,网络包保存在队列中;基于队列的出列速率确定网络包的预测寿命;基于预测寿命从网络包的多个存储器中选择第一存储器,其中,多个存储器包括处理电路的本地存储器和到处理电路的外部存储器;并且响应于从多个存储器中选择第一存储器,将网络包存储在第一存储器中。
而且,可以将上述所述任意示例中阐述的任意具体特征组合成所描述技术的有益示例。即,通常,任意具体特征可适用于本发明的全部示例。已经描述了各个示例。这些及其他示例在所附权利要求的范围内。
Claims (26)
1.一种方法,包括:
通过网络设备的处理电路接收待处理的传入网络包,其中,在处理之前,所述网络包保存在队列中;
由所述处理电路基于所述队列的出列速率确定所述网络包的预测寿命;
由所述处理电路基于所述预测寿命从所述网络包的多个存储器中选择第一存储器,其中,所述多个存储器包括所述处理电路的本地存储器和到所述处理电路的外部存储器;并且
响应于从所述多个存储器中选择所述第一存储器,由所述处理电路将所述网络包存储在所述第一存储器中。
2.根据权利要求1所述的方法,包括:
由所述处理电路从所述队列的多个队列状态中选择一队列状态,其中,确定所述预测寿命包括使用与已选择的队列状态对应的查询表。
3.根据权利要求2所述的方法,其中,确定所述网络包的所述预测寿命包括:
基于所述队列的队列长度与所述出列速率确定所述队列的延迟。
4.根据权利要求3所述的方法,其中,所述出列速率包括所述队列的采样出列速率,其中,所述已选择的队列状态是激活队列状态,并且其中,选择所述队列状态包括:
当所述采样出列速率超过阈出列速率时并且当所述队列长度超过阈队列长度时,从所述队列的所述多个队列状态中选择所述激活队列状态,其中,确定所述延迟为响应选择所述激活队列状态,并且其中,确定所述预测寿命还包括使用已确定的延迟作为与所述激活队列状态对应的查询表的输入。
5.根据权利要求3所述的方法,其中,所述出列速率包括所述队列的预定目标出列速率,其中,所述已选择的队列状态是脉冲队列状态,并且其中,选择所述队列状态包括:
当所述队列的采样出列速率不超过阈出列速率时并且当所述队列长度超过阈队列长度时,从所述队列的所述多个队列状态中选择所述脉冲队列状态,其中,确定所述延迟为响应选择所述脉冲队列状态,并且其中,确定所述预测寿命还包括使用已确定的延迟作为与所述脉冲队列状态对应的查询表的输入。
6.根据权利要求2所述的方法,其中,所述出列速率包括所述队列的预定目标出列速率,其中,所述已选择的队列状态是间歇性队列状态,并且其中,选择所述队列状态包括:
当所述队列的采样出列速率不超过阈出列速率时并且当所述队列的队列长度不超过阈队列长度时,从所述队列的所述多个队列状态中选择所述间歇性队列状态,其中,确定所述预测寿命包括使用所述预定目标出列速率作为与所述间歇性队列状态对应的查询表的输入。
7.根据权利要求2所述的方法,其中,所述出列速率包括所述队列的采样出列速率,其中,所述已选择的队列状态是瞬时队列状态,并且其中,选择所述队列状态包括:
当所述采样出列速率超过阈出列速率时并且当所述队列的队列长度不超过阈队列长度时,从所述队列的所述多个队列状态中选择所述瞬时队列状态,其中,确定所述预测寿命包括使用所述采样出列速率作为与所述瞬时队列状态对应的查询表的输入。
8.根据权利要求1所述的方法,其中,所述出列速率包括所述队列的采样出列速率,所述方法还包括:
由所述处理电路基于所述队列的所述采样出列速率与预定目标出列速率的差确定所述队列经历的队列拥堵,其中,确定所述预测寿命进一步基于所述队列拥堵。
9.根据权利要求1所述的方法,其中,选择所述第一存储器包括:
基于所述本地存储器的使用仪表和所述队列的优先级中的至少一个确定移动阈;并且
将所述移动阈与所述预测寿命相比较。
10.根据权利要求9所述的方法,其中,选择所述第一存储器包括:
当所述预测寿命不超过所述移动阈时,选择所述本地存储器作为所述第一存储器;并且
当所述预测寿命超过所述移动阈时,选择所述外部存储器作为所述第一存储器。
11.根据权利要求1所述的方法,包括:
响应于接收所述网络包,在选择所述第一存储器之前,由所述处理电路将所述网络包存储在所述本地存储器中。
12.根据权利要求1所述的方法,其中,所述网络设备是第一网络设备,所述方法还包括:
由所述处理电路从所述第一存储器中检索所述网络包;并且
通过所述处理电路将已检索的网络包发送至第二网络设备。
13.根据权利要求1至12中任一项所述的方法,其中,所述出列速率包括所述队列的采样出列速率,所述方法还包括:
通过所述处理电路确定所述队列的令牌桶成形器在单位时间内使用的令牌的数目,以使一个或多个包从所述队列中出列,其中,所述令牌中的每个令牌代表从所述队列中出列的给定数目的字节;并且
由所述处理电路基于在所述单位时间内使用的所述令牌的数目确定所述采样出列速率。
14.一种网络设备,包括:
多个存储器,包括处理电路的本地存储器和到所述处理电路的外部存储器;和
所述处理电路,连接至所述多个存储器并且被配置为:
接收待处理的传入网络包,其中,在处理之前,所述网络包保存在队列中;
基于所述队列的出列速率确定所述网络包的预测寿命;
基于所述预测寿命从所述多个存储器中选择第一存储器;并且
响应于从所述多个存储器中选择所述第一存储器,将所述网络包存储在所述第一存储器中。
15.根据权利要求14所述的网络设备,其中,所述处理电路被配置为:
从所述队列的多个队列状态中选择一队列状态,其中,为了确定所述预测寿命,所述处理电路被配置为使用与已选择的队列状态对应的查询表。
16.根据权利要求15所述的网络设备,其中,为了确定所述网络包的所述预测寿命,所述处理电路被配置为:
基于所述队列的队列长度与所述出列速率确定所述队列的延迟。
17.根据权利要求16所述的网络设备,其中,所述出列速率包括所述队列的采样出列速率,其中,所述已选择的队列状态是激活队列状态,并且其中,为了选择所述队列状态,所述处理电路被配置为:
当所述采样出列速率超过阈出列速率时并且当所述队列长度超过阈队列长度时,从所述队列的所述多个队列状态中选择所述激活队列状态,其中,确定所述延迟为响应选择所述激活队列状态,并且其中,为了确定所述预测寿命,所述处理电路被进一步配置为使用已确定的延迟作为与所述激活队列状态对应的查询表的输入。
18.根据权利要求16所述的网络设备,其中,所述出列速率包括所述队列的预定目标出列速率,其中,所述已选择的队列状态是脉冲队列状态,并且其中,为了选择所述队列状态,所述处理电路被配置为:
当所述队列的采样出列速率不超过阈出列速率时并且当所述队列长度超过阈队列长度时,从所述队列的所述多个队列状态中选择所述脉冲队列状态,其中,确定所述延迟为响应选择所述脉冲队列状态,并且其中,为了确定所述预测寿命,所述处理电路被进一步配置为使用已确定的延迟作为与所述脉冲队列状态对应的查询表的输入。
19.根据权利要求15所述的网络设备,其中,所述出列速率包括所述队列的预定目标出列速率,其中,所述已选择的队列状态是间歇性队列状态,并且其中,为了选择所述队列状态,所述处理电路被配置为:
当所述队列的采样出列速率不超过阈出列速率时并且当所述队列的队列长度不超过阈队列长度时,从所述队列的所述多个队列状态中选择所述间歇性队列状态,其中,为了确定所述预测寿命,所述处理电路被配置为使用所述预定目标出列速率作为与所述间歇性队列状态对应的查询表的输入。
20.根据权利要求15所述的网络设备,其中,所述出列速率包括所述队列的采样出列速率,其中,所述已选择的队列状态是瞬时队列状态,并且其中,为了选择所述队列状态,所述处理电路被配置为:
当所述采样出列速率超过阈出列速率时并且当所述队列的队列长度不超过阈队列长度时,从所述队列的所述多个队列状态中选择所述瞬时队列状态,其中,为了确定所述预测寿命,所述处理电路被配置为使用所述采样出列速率作为与所述瞬时队列状态对应的查询表的输入。
21.根据权利要求14所述的网络设备,其中,所述出列速率包括所述队列的采样出列速率,并且其中,所述处理电路被配置为:
基于所述队列的所述采样出列速率与预定目标出列速率的差确定所述队列经历的队列拥堵,其中,确定所述预测寿命进一步基于所述队列拥堵。
22.根据权利要求14所述的网络设备,其中,为了选择所述第一存储器,所述处理电路被配置为:
基于所述本地存储器的使用仪表和所述队列的优先级中的至少一个确定移动阈;并且
将所述移动阈与所述预测寿命相比较。
23.根据权利要求22所述的网络设备,其中,为了选择所述第一存储器,所述处理电路被配置为:
当所述预测寿命不超过所述移动阈时,选择所述本地存储器作为所述第一存储器;并且
当所述预测寿命超过所述移动阈时,选择所述外部存储器作为所述第一存储器。
24.根据权利要求14所述的网络设备,其中,所述处理电路被配置为:
响应于接收所述网络包,在选择所述第一存储器之前,将所述网络包存储在所述本地存储器中。
25.根据权利要求14所述的网络设备,其中,所述网络设备是第一网络设备,并且其中,所述处理电路被配置为:
从所述第一存储器中检索所述网络包;并且
将已检索的网络包发送至第二网络设备。
26.根据权利要求14至25中任一项所述的网络设备,其中,所述出列速率包括所述队列的采样出列速率,并且其中,所述处理电路被配置为:
确定所述队列的令牌桶成形器在单位时间内使用的令牌的数目,以使一个或多个包从所述队列中出列,其中,所述令牌中的每个令牌代表从所述队列中出列的给定数目的字节;并且
基于在所述单位时间内使用的所述令牌的数目确定所述采样出列速率。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/020,842 US10623329B2 (en) | 2018-06-27 | 2018-06-27 | Queuing system to predict packet lifetime in a computing device |
US16/020,842 | 2018-06-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110650099A true CN110650099A (zh) | 2020-01-03 |
CN110650099B CN110650099B (zh) | 2023-05-26 |
Family
ID=66999713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910533086.7A Active CN110650099B (zh) | 2018-06-27 | 2019-06-19 | 预测计算设备中的包寿命的排队系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10623329B2 (zh) |
EP (1) | EP3588880B1 (zh) |
KR (1) | KR102177574B1 (zh) |
CN (1) | CN110650099B (zh) |
SG (1) | SG10201905137YA (zh) |
TW (1) | TWI700912B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10389639B1 (en) | 2016-01-30 | 2019-08-20 | Innovium, Inc. | Dynamic weighted cost multipathing |
US10574577B1 (en) | 2016-03-02 | 2020-02-25 | Innovium, Inc. | Load balancing path assignments techniques |
US11075847B1 (en) | 2017-01-16 | 2021-07-27 | Innovium, Inc. | Visibility sampling |
US11784932B2 (en) * | 2020-11-06 | 2023-10-10 | Innovium, Inc. | Delay-based automatic queue management and tail drop |
US11621904B1 (en) | 2020-11-06 | 2023-04-04 | Innovium, Inc. | Path telemetry data collection |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8184540B1 (en) * | 2009-12-11 | 2012-05-22 | Juniper Networks, Inc. | Packet lifetime-based memory allocation |
CN104821887A (zh) * | 2014-01-30 | 2015-08-05 | 马维尔以色列(M.I.S.L.)有限公司 | 通过使用具有不同延迟的存储器来进行分组处理的设备和方法 |
CN105075373A (zh) * | 2013-02-15 | 2015-11-18 | 思科技术公司 | 在网状网络中基于有效载荷数据的寿命进行优先级排队 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050149563A1 (en) * | 2004-01-06 | 2005-07-07 | Yong Yean K. | Random early detect and differential packet aging flow control in switch queues |
US7373475B2 (en) * | 2005-06-21 | 2008-05-13 | Intel Corporation | Methods for optimizing memory unit usage to maximize packet throughput for multi-processor multi-threaded architectures |
CN101621469B (zh) | 2009-08-13 | 2012-01-04 | 杭州华三通信技术有限公司 | 数据报文存取控制装置和方法 |
CA2882446A1 (en) * | 2014-02-21 | 2015-08-21 | Coho Data, Inc. | Methods, systems and devices for parallel network interface data structures with differential data storage service capabilities |
US10419370B2 (en) * | 2015-07-04 | 2019-09-17 | Avago Technologies International Sales Pte. Limited | Hierarchical packet buffer system |
US10715441B2 (en) * | 2015-09-04 | 2020-07-14 | Arista Networks, Inc. | System and method of a high buffered high bandwidth network element |
US20170242625A1 (en) * | 2016-02-24 | 2017-08-24 | Samsung Electronics Co., Ltd. | Apparatus for ssd performance and endurance improvement |
US9935888B2 (en) * | 2016-05-02 | 2018-04-03 | Visa International Service Association | System and method for latency-based queuing |
KR102229013B1 (ko) | 2016-09-02 | 2021-03-17 | 삼성전자주식회사 | 자동 스트림 검출 및 할당 알고리즘 |
-
2018
- 2018-06-27 US US16/020,842 patent/US10623329B2/en active Active
-
2019
- 2019-06-06 SG SG10201905137YA patent/SG10201905137YA/en unknown
- 2019-06-19 TW TW108121242A patent/TWI700912B/zh active
- 2019-06-19 CN CN201910533086.7A patent/CN110650099B/zh active Active
- 2019-06-20 EP EP19181454.0A patent/EP3588880B1/en active Active
- 2019-06-25 KR KR1020190075557A patent/KR102177574B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8184540B1 (en) * | 2009-12-11 | 2012-05-22 | Juniper Networks, Inc. | Packet lifetime-based memory allocation |
CN105075373A (zh) * | 2013-02-15 | 2015-11-18 | 思科技术公司 | 在网状网络中基于有效载荷数据的寿命进行优先级排队 |
CN104821887A (zh) * | 2014-01-30 | 2015-08-05 | 马维尔以色列(M.I.S.L.)有限公司 | 通过使用具有不同延迟的存储器来进行分组处理的设备和方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3588880B1 (en) | 2021-05-26 |
SG10201905137YA (en) | 2020-01-30 |
TW202002596A (zh) | 2020-01-01 |
CN110650099B (zh) | 2023-05-26 |
US20200007454A1 (en) | 2020-01-02 |
US10623329B2 (en) | 2020-04-14 |
KR102177574B1 (ko) | 2020-11-11 |
TWI700912B (zh) | 2020-08-01 |
KR20200001532A (ko) | 2020-01-06 |
EP3588880A1 (en) | 2020-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11005769B2 (en) | Congestion avoidance in a network device | |
CN110650099B (zh) | 预测计算设备中的包寿命的排队系统 | |
US8797877B1 (en) | Virtual output queue allocation using dynamic drain bandwidth | |
US8184540B1 (en) | Packet lifetime-based memory allocation | |
US8817807B2 (en) | System and method for distributed resource control of switches in a network environment | |
US8149708B2 (en) | Dynamically switching streams of packets among dedicated and shared queues | |
US11784925B2 (en) | Combined input and output queue for packet forwarding in network devices | |
US7697517B2 (en) | Packet forwarding apparatus with transmission control function | |
US20110228781A1 (en) | Combined Hardware/Software Forwarding Mechanism and Method | |
CN115152193A (zh) | 针对ip路由数据中心网络使用自适应路由和基于拥塞提示的节流改进端到端拥塞反应 | |
US8457142B1 (en) | Applying backpressure to a subset of nodes in a deficit weighted round robin scheduler | |
US11223568B2 (en) | Packet processing method and apparatus | |
US20110122883A1 (en) | Setting and changing queue sizes in line cards | |
US20230142425A1 (en) | Virtual dual queue core stateless active queue management (agm) for communication networks | |
CN111224884B (zh) | 拥塞控制的处理方法、报文转发装置及报文接收装置 | |
Benet et al. | Providing in-network support to coflow scheduling | |
Domżał | Flow-aware networking as an architecture for the IPv6 QoS Parallel Internet | |
CN112311678B (zh) | 报文分发的实现方法及装置 | |
Fu | A study on differentiated service queuing scheme with an overflow buffer allocation within a UMTS core network | |
Vijay et al. | PACKET HANDLING SCHEDULING IN MULTIPLE ROUTING CONFIGURATIONS FOR FAST IP NETWORK RECOVERY | |
Jiang et al. | Differentiated queueing service (DQS) for granular QoS |
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 | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Juniper Networks, Inc. Address before: California, USA Applicant before: Jungle network |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |