CN107835137B - 用于交换机的输出端口调度***及该交换机 - Google Patents
用于交换机的输出端口调度***及该交换机 Download PDFInfo
- Publication number
- CN107835137B CN107835137B CN201710986719.0A CN201710986719A CN107835137B CN 107835137 B CN107835137 B CN 107835137B CN 201710986719 A CN201710986719 A CN 201710986719A CN 107835137 B CN107835137 B CN 107835137B
- Authority
- CN
- China
- Prior art keywords
- queue
- scheduling
- request
- message
- port
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种用于交换机的输出端口调度***及该交换机,属于计算机网络的交换机领域。所述输出端口调度***包括:报文存储器,用于获取报文,并发送增加或减少队列长度的请求;队列长度管理单元,用于根据增加或减少队列长度的请求,修改队列长度值;队列调度请求生成模块,用于根据队列长度值判断队列是否有报文被保存,若有,则根据当前多端口绑定使用调度器的情形下的输出端口号生成端口调度请求;以及调度器,用于根据端口调度请求和端口测速结果来调度出队列号,并将队列号发送给报文存储器以读出报文,还根据报文存储器反馈的报文长度来请求更新端口测速结果。本发明方案在多个端口绑定的情况下可避免连续调度同一个输出端口。
Description
技术领域
本发明涉及计算机网络的交换机技术领域,具体地涉及一种用于交换机的输出端口调度***及该交换机。
背景技术
计算机网络中的交换机通常采用存储转发方式来转发报文,即先将从输入端口接收到的报文保存在集中式、大容量存储器中,然后再向输出端口调度器发送调度请求,得到调度许可之后,从存储器中读出报文,发送到输出端口。
由于报文长度比较长,输出端口调度器调度出一个报文,输出端口需要一定的时间才能够将整个报文发送出去,导致输出端口调度器利用率低。为了避免这一问题,通常情况下多个输出端口共享一个调度器。共享方式为分时共享,即按照轮转的方式,轮流向每一个输出端口分配调度时隙,前一个输出端口调度完成,才会允许下一个输出端口使用调度器,即使输出端口没有调度请求,也会获得调度时隙。对应于分时共享方式,可采用非流水线方式或流水线方式实现调度器,这两种调度器的特点如下:
1)采用非流水线方式实现的调度器,调度时隙长度是可以变化的,对于没有调度请求的输出端口,调度时隙比较短,而对于有调度请求的输出端口,调度时隙则比较长。
2)采用流水线方式实现的调度器,调度时隙是相同的,即使输出端口没有调度请求,也会走完整个流水线。
另外,受输出端口报文处理能力和发送速率的限制,通常情况下,共享一个调度器的输出端口数为16。
进一步地,为了提供服务质量保证,输出端口一般提供多个不同优先级的队列,例如8个、16个、32个,甚至48个。提供的队列数目越多,越能细粒度地区分网络中的数据流。对不同的数据流提供不同的转发延迟、转发速率等性能保证,从而为用户提供不同的网络性能。据此,在输出端口的调度时隙,调度器会根据不同队列的优先级,采取轮转(Round-robin)、赤字轮转(Deficit Round-robin)、严格优先级(Strict Priority)等调度模式,从多个提出调度请求的队列中选择一个,作为调度许可发送给报文存储器,从相应的位置读出报文并发送到输出端口。
保存到存储器中的报文,头部携带了队列号信息。为了统计每个队列当前在报文存储器中的报文数,设置了队列长度存储器,用于保存每个队列的报文数。调度器通过读队列长度存储器,得知输出端口的每个队列是否有调度请求。对于输出端口队列数目比较多的情况,调度器读输出端口的每个队列长度将会导致吞吐率下降,从而需要设计一种快速判断队列数目的方法,加快调度器处理速度。
另外,为了检测和控制每个队列的输出速率,调度器调度出队列号,并从报文存储器中读出报文之后,测速器需要根据报文长度更新报文所属队列的输出速率。更新完毕后,测速器需要将测速结果发送到调度器,对于超速的队列,停止调度,从而达到限制速率的目的。
因此,在每个输出端口队列数目比较多的情况下,调度器需要两级分组调度,才能够调度出一个队列,读出报文及其长度需要一个时钟周期,调度完毕做测速计算需要一个时钟周期。如此推算,调度器至少需要四级流水线,每一级流水线完成的功能如图1所示,第一级调度和第二级调度后得到报文长度,第三级调度读测速值,第四级调度计算新的测速值,并保存新的测速值。
由于调度一个队列并更新其速率,至少需要四个时钟周期,因此,连续调度两个端口至少需要间隔3个时钟周期。目前高带宽端口一般是通过将多个低带宽端口绑定使用来实现的,例如40G端口是4个10G端口绑定的,100G端口是4个25G端口绑定的。对于按照自然数顺序编号的端口,通常将编号连续的4个端口绑定到编号数值大的端口,例如端口0、1、2、3绑定到端口3,端口4、5、6、7绑定到端口7等。相应地,在端口0、1、2的调度时隙都调度端口3,在端口4、5、6的调度时隙都调度端口7。因此,多端口共享的调度器需要避免连续调度相同的端口。
因此,需要设计一种能够快速判断队列数目的调整方案,以在多个端口绑定的情况下,避免连续调度同一个输出端口。
发明内容
本发明实施例的目的是提供一种用于交换机的输出端口调度***及该交换机,以至少部分地解决上述技术问题。
为了实现上述目的,本发明实施例提供一种用于交换机的输出端口调度***,所述输出端口调度***包括:报文存储器,用于获取报文,并发送增加或减少队列长度的请求,其中该请求包含队列号,且增加队列长度的请求在所述报文存储器预计读出报文时被发送,减少队列长度的请求在所述报文存储器已读出报文后被发送;队列长度管理单元,用于根据从所述报文存储器接收的增加或减少队列长度的请求,修改队列长度值;队列调度请求生成模块,用于根据从所述队列长度管理单元获得的修改后的队列长度值判断对应的队列是否有报文保存在所述报文存储器,若有,则根据当前多端口绑定使用调度器的情形下的输出端口号生成端口调度请求;以及调度器,用于根据从所述队列调度请求生成模块中接收的端口调度请求和针对所述输出端口号的端口测速结果来调度出需要被调度的队列的队列号,并将调度出的队列号发送给所述报文存储器以读出报文,还用于根据所述报文存储器读出报文后反馈的报文长度来请求更新所述端口测速结果。
可选地,所述输出端口调度***还包括:输入端口,与所述报文存储器连接,用于向所述报文存储器输入报文;以及输出端口,与所述报文存储器连接,用于输出所述报文存储器基于所述调度器所调度出的队列号所读出的报文。
可选地,所述队列长度管理单元包括队列长度统计模块和队列长度存储器;其中,所述队列长度统计模块被配置为:根据增加或减少队列长度的请求,向所述队列长度存储器发送第一读请求和第一读地址,并接收所述队列长度存储器响应于所述第一读请求和第一读地址所读出的数据,并修改该读出的数据作为第一写数据,再向所述队列长度存储器发送第一写请求、第一写地址和所述第一写数据;其中,所述第一读地址和所述第一写地址为所述队列号,且在根据增加队列长度的请求时,所述队列长度统计模块将所述读出的数据加一以作为所述第一写数据,在根据减少队列长度的请求时,所述队列长度统计模块将所述读出的数据减一以作为所述第一写数据,且所述第一写数据示出修改后的队列长度值。
可选地,所述队列调度请求生成模块根据从所述队列长度管理单元获得的修改后的队列长度值判断对应的队列是否有报文保存在所述报文存储器包括:所述队列调度请求生成模块为每个队列维护一个一位的标志位,且配置该标志位为0时,表示对应队列无报文保存在所述报文存储器中,该标志位为1时,表示对应队列有报文保存在所述报文存储器中,报文需要被调度;所述队列调度请求生成模块接收所述第一写请求、所述第一写地址和所述第一写数据,若所述第一写数据大于0,则将所述第一写地址对应的对列的标志位置于1,否则将所述第一写地址对应的对列的标志位置于0。
可选地,所述输出端口调度***还包括:调度顺序控制器,其与所述队列调度请求生成模块及所述调度器连接,用于产生端口绑定情形下的输出端口的调度端口号,且将该调度端口号作为所述当前多端口绑定使用调度器的情形下的输出端口号发送给所述队列调度请求生成模块及所述调度器。
可选地,所述调度顺序控制器还用于向所述调度器发送调度开始信号和接收所述调度器反馈的调度结束信号,并在接收到所述调度结束信号后产生新的调度端口号。
可选地,所述输出端口调度***还包括:测速管理单元,用于向所述调度器提供端口测速结果以及用于根据所述调度器发送的请求更新所述端口测速结果。
可选地,所述测速管理单元包括:测速计算模块,其与所述调度器连接,用于根据从所述调度器接收的更新速率请求向令牌表发送第二读请求和第二读地址,并接收所述令牌表返回的读出的数据,其中该读出的数据为队列当前的令牌数,所述第二读地址是更新速度的队列号;还用于将报文长度转换为令牌,并增加到队列当前的令牌数中,向令牌表发送第二写请求、第二写地址和第二写数据,其中第二写地址为队列号,第二写数据为修改后的令牌数,若该修改后的令牌数大于设定的阈值,则生成并发送队列测速结果,其中所述队列测速结果包括队列号及其超速信息;以及端口测速结果生成模块,与所述调度器及所述测速计算模块连接,用于接收队列测速结果,并根据所述输出端口号和所述队列测速结果,生成端口测速结果。
可选地,所述测速计算模块还用于产生针对令牌表的刷新操作,以根据读出的每一个令牌表的表项,减去部分令牌。
另一方面,本发明实施例还提供了一种交换机,该交换机设置有上述任意的输出端口调度***。
通过上述技术方案,本发明实施例的有益效果是:本发明实施例的输出端口调度***无需读队列长度值,可以直接得到队列调度请求信息,且其调度器无需读测速器的令牌值,可以直接得到队列超速情况。另外,该调度***还能修改调度顺序,避免在队列状态信息没有更新完毕再次调度同一个队列,实现了流水化的快速调度器,并且支持端口绑定
本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1是背景技术所涉及的调度器流水线示意图;
图2是是本发明实施例的输出端口调度***的结构示意图;以及
图3是根据本发明实施例的优选输出端口调度***的结构示意图。
附图标记说明
200 输出端口调度*** 210 报文存储器
220 队列长度管理单元 230 队列调度请求生成模块
240 调度器 250 输入端口
260 输出端口 270 调度顺序控制器
280 测速管理单元 221 队列长度统计模块
222 队列长度存储器 281 测速计算模块
282 端口测速结果生成模块
具体实施方式
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
图2是本发明实施例的输出端口调度***的结构示意图,该输出端口调度***应用在交换机中。如图2所示,所述输出端口调度***200可以包括以下模块或单元:
报文存储器210,用于获取报文,并发送增加或减少队列长度的请求,其中该请求包含队列号,且增加队列长度的请求在所述报文存储器预计读出报文时被发送,减少队列长度的请求在所述报文存储器已读出报文后被发送。
队列长度管理单元220,用于根据从所述报文存储器210接收的增加或减少队列长度的请求,修改队列长度值。
队列调度请求生成模块230,用于根据从所述队列长度管理单元220获得的修改后的队列长度值判断对应的队列是否有报文保存在所述报文存储器,若有,则根据当前多端口绑定使用调度器的情形下的输出端口号生成端口调度请求。
调度器240,用于根据从所述队列调度请求生成模块230中接收的端口调度请求和针对所述输出端口号的端口测速结果来调度出需要被调度的队列的队列号,并将调度出的队列号发送给所述报文存储器以读出报文,还用于根据所述报文存储器读出报文后反馈的报文长度来请求更新所述端口测速结果。
其中,队列调度请求生成模块230判断了每个队列是否需要调度请求,调度器240又进一步结合了端口测速结果,从而本发明实施例的调度***将每个队列是否有调度请求的信息、每个队列是否超速的信息准确快速地通知调度器,在多个端口绑定的情况下能够避免连续调度同一个输出端口,且可以保证在输出端口的测速更新之后才会调度,并相对于图1的四级流水线,减少了流水线结构。
图3是根据本发明实施例的优选输出端口调度***的结构示意图,且该优选输出端口调度***可以理解为图2的调度***的一种优选实现方式。如图3所示,所述队列长度管理单元220优选为可以包括队列长度统计模块221和队列长度存储器222,所述输出端口***200还可以根据不同情形进一步包括输入端口250、输出端口260、调度顺序控制器270以及测速管理单元280中的一者或多者。更为优选地,可以用于向所述调度器240提供端口测速结果以及可以用于根据所述调度器240发送的请求更新所述端口测速结果的所述测速管理单元280又还可以包括测速计算模块281和端口测速结果生成模块282。
下面结合图3来具体介绍构成优选输出调度***的各部件的具体实施细节。
一、输入端口250和输出端口260
本发明实施例的输出端口调度***200还可以包括:输入端口250,其与所述报文存储器210连接,用于向所述报文存储器210输入报文;以及输出端口260,与所述报文存储器210连接,用于输出所述报文存储器210基于所述调度器240所调度出的队列号所读出的报文。
二、报文存储器210
举例而言,报文存储器210与输入端口250、输出端口260、队列长度统计模块221、调度器240相连。从输入端口250输入的报文被保存到报文存储器210,同时,报文存储器210向队列长度统计模块221发送增加队列长度的请求,该请求包含队列号。报文存储器210从调度器240接收到调度出的队列号,读出队列号对应的报文,发送到输出端口260和调度器240,向队列长度统计模块221发送减少队列长度的请求,该请求也包含队列号。
其中,报文存储器210主要是将读出的报文所对应的报文长度发送至调度器240。
三、队列长度统计模块221和队列长度存储器222(即队列长度管理单元220)
优选地,所述队列长度统计模块221被配置为:根据增加或减少队列长度的请求,向所述队列长度存储器222发送第一读请求和第一读地址,并接收所述队列长度存储器222响应于所述第一读请求和第一读地址所读出的数据,并修改该读出的数据作为第一写数据,再向所述队列长度存储器222发送第一写请求、第一写地址和所述第一写数据。
其中,所述第一读地址和所述第一写地址为所述队列号,且在根据增加队列长度的请求时,所述队列长度统计模块221将所述读出的数据加一以作为所述第一写数据,在根据减少队列长度的请求时,所述队列长度统计模块221将所述读出的数据减一以作为所述第一写数据。这里,所述队列长度存储器222中所存储的数据是队列长度,从而所述第一写数据示出的是修改后的队列长度值。
为便于说明,这里将第一读请求记为读请求1,第一读地址记为读地址1,第一读请求和第一读地址对应的读出的数据记为读出的数据1,将第一写请求记为写请求1,第一写地址记为写地址1,第一写数据记为写数据1,对应地后文所涉及的第二读请求等,也采用这种方式进行记录。
举例而言,队列长度统计模块221与报文存储器210、队列长度存储器222、队列调度请求生成模块相连。队列长度统计模块221接收到增加队列长度请求,向队列长度存储器222发送读请求1和读地址1,其中读地址1等于队列号。队列长度存储器222从读地址1读出数据后,将读出的数据1发送给队列长度统计模块221。队列长度统计模块221将读出的数据1加1,然后向队列长度存储器222发送写请求1、写地址1和写数据1,其中写地址1等于队列号,写数据1等于修改后的队列长度值。队列长度统计模块221接收到减少队列长度的请求,向队列长度存储器222发送读请求1和读地址1,其中读地址1等于队列号。队列长度存储器222从读地址1读出数据后,将读出的数据1发送给队列长度统计模块221。队列长度统计模块221将读出的数据1减1,然后向队列长度存储器222发送写请求1、写地址1和写数据1,其中写地址1等于队列号,写数据1等于修改后的队列长度值。队列长度统计模块221生成的写请求1、写地址1和写数据1还被发送到队列调度请求生成模块。
四、队列调度请求生成模块230
其中,所述队列调度请求生成模块230根据从所述队列长度管理单元获得的修改后的队列长度值判断对应的队列是否有报文保存在所述报文存储器210可以包括:所述队列调度请求生成模块为每个队列维护一个一位的标志位,且配置该标志位为0时,表示对应队列无报文保存在所述报文存储器210中,该标志位为1时,表示对应队列有报文保存的报文存储器210中,报文需要被调度;所述队列调度请求生成模块接收所述第一写请求、所述第一写地址和所述第一写数据,若所述第一写数据大于0,则将所述第一写地址对应的对列的标志位置于1,否则将所述第一写地址对应的对列的标志位置于0。
举例而言,队列调度请求生成模块230与队列长度统计模块221、调度顺序控制器270、调度器240相连。假设队列总数为N,输出端口数为M,每个输出端口的队列数为P,则N=Mx P。队列调度请求生成模块230为每个队列维护一个一位的标志位,称作QUEUE_HAS_DATA[N-1:0],第i位为0(其中,i=0,1,2,……,N-1),表示该队列无报文保存在报文存储器210中;为1,表示该队列有报文保存在报文存储器210中,报文需要被调度。队列调度请求生成模块230收到写请求1、写地址1和写数据1,如果写数据1大于0,将QUEUE_HAS_DATA中写地址1对应的位置为1(其中,写地址1和i的取值范围相同);否则,将QUEUE_HAS_DATA中写地址1对应的位置为0。队列调度请求生成模块230收到调度顺序控制器270发送的调度端口号,即当前多端口绑定使用调度器的输出端口号。根据输出端口号,生成端口调度请求发送到调度器240。端口调度请求记做PORT_REQ[P-1:0],第j位(其中,j=0,1,2,……,P-1)为0,表示该队列无报文保存在报文存储器210中;为1,表示该队列有报文保存在报文存储器210中,需要被调度。输出端口0的队列调度请求PORT_REQ[P-1:0] = QUEUE_HAS_DATA[P-1:0],输出端口1的队列调度请求PORT_REQ[P-1:0] = QUEUE_HAS_DATA[2P-1:P],以此类推。
五、调度顺序控制器270
优选地,所述输出端口调度***200还可以包括:调度顺序控制器270,其与所述队列调度请求生成模块230及所述调度器240连接,用于产生端口绑定情形下的输出端口的调度端口号,且将该调度端口号作为所述当前使用调度器240的输出端口号发送给所述队列调度请求生成模块230及所述调度器240。
更为优选地,所述调度顺序控制器270还可以用于向所述调度器240发送调度开始信号和接收所述调度器240反馈的调度结束信号,并在接收到所述调度结束信号后产生新的调度端口号。
举例而言,调度顺序控制器270与调度器240、队列调度请求生成模块230、端口测速结果生成模块282相连。调度顺序控制器270产生输出端口的调度顺序,对于16个端口共享一个调度器的情况,调度顺序为0、4、8、12、1、5、9、13、2、6、10、14、3、7、11、15。这样当端口0、1、2、3绑定到端口3时,调度顺序将变为3、4、8、12、3、5、9、13、3、6、10、14、3、7、11、15;当端口4、5、6、7绑定到端口7时,调度顺序将变为0、7、8、12、1、7、9、13、2、7、10、14、3、7、11、15;当端口8、9、10、11绑定到端口11时,调度顺序将变为0、4、11、12、1、5、11、13、2、6、11、14、3、7、11、15;当端口12、13、14、15绑定到端口15时,调度顺序将变为0、4、8、15、1、5、9、15、2、6、10、15、3、7、11、15。当所有端口组都绑定时,调度顺序为3、7、11、15、 3、7、11、15、3、7、11、15、3、7、11、15。另外,调度顺序控制器270产生调度端口号的同时,向调度器发送调度开始信号,调度器完成调度,向调度顺序控制器270产生调度结束信号,通知调度顺序控制器270产生新的调度端口号。
六、测速计算模块281
优选地,所述测速计算模块281可以与所述调度器240连接,用于根据从所述调度器240接收的更新速率请求向令牌表发送第二读请求和第二读地址,并接收所述令牌表返回的读出的数据,其中该读出的数据为队列当前的令牌数,所述第二读地址是更新速度的队列号,还用于将报文长度转换为令牌,并增加到队列当前的令牌数中,向令牌表发送第二写请求、第二写地址和第二写数据,其中第二写地址为队列号,第二写数据为修改后的令牌数,若该修改后的令牌数大于设定的阈值,则生成并发送队列测速结果,其中所述队列测速结果包括队列号及其超速信息。
举例而言,测速计算模块281与调度器240、令牌表、端口测速结果生成模块282相连。测速计算模块281收到更新速率请求,向令牌表发送读请求2和读地址2,其中读地址2为更新速率的队列号,收到令牌表返回的读出的数据2,即队列当前的令牌数。测速计算模块281将报文长度转换为令牌,并增加到队列当前的令牌数中,向令牌表发送写请求2,写地址2和写数据2,其中写地址2即为队列号,写数据2为修改后的令牌数。如果修改后的令牌大于一定的阈值,测速计算模块281向端口测速结果生成模块282发送队列测速结果,其中包含队列号,及其超速信息RATE_EXCEEDED。RATE_EXCEEDED为1,表示队列超速;否则,表示没有超速。
另外,所述测速计算模块281还可以用于产生针对令牌表的刷新操作,以根据读出的每一个令牌表的表项,减去部分令牌。
举例而言,测速计算模块281还会产生对令牌表的刷新操作,间隔固定的时钟周期,向令牌表发送读请求2,依次读出每一个令牌表的表项,从中减去一定数量的令牌,然后发送写请求2,写地址2和写数据2,将修改后的令牌数作为写数据2写入令牌表中写地址2对应的表项。如果剩余的令牌大于一定的阈值,测速计算模块281向端口测速结果生成模块282发送队列测速结果,其中包含队列号,及其超速信息RATE_EXCEEDED。RATE_EXCEEDED为1,表示队列超速;否则,表示没有超速。
七、端口测速结果生成模块282
优选地,所述端口测速结果生成模块282与所述调度器240及所述测速计算模块281连接,用于接收队列测速结果,并根据所述当前使用调度器240的输出端口号和所述队列测速结果,生成端口测速结果。
举例而言,端口测速结果生成模块282与测速计算模块281、调度器240、调度顺序控制器270相连。端口测速结果生成模块282设置向量QUEUE_RATE_EXCEEDED[N-1:0],每一位对应队列是否超速。如果为1,表示已经超速;否则,未超速。端口测速结果生成模块282根据调度端口号,生成端口测速结果PORT_RATE_EXCEEDED[P-1:0],发送到调度器240。端口0的PORT_RATE_EXCEEDED[P-1:0]=QUEUE_RATE_EXCEEDED[P-1:0],端口1的PORT_RATE_EXCEEDED[P-1:0]= QUEUE_RATE_EXCEEDED[2P-1:P],以此类推。调度器240将对超速的队列停止调度。
综上所述,本发明实施例的输出端口调度***无需读队列长度值,可以直接得到队列调度请求信息,且其调度器无需读测速器的令牌值,可以直接得到队列超速情况。另外,该调度***还能修改调度顺序,避免在队列状态信息没有更新完毕再次调度同一个队列,实现了流水化的快速调度器,并且支持端口绑定,又简化了流水线结构。
本发明实施例还提供了一种交换机,该交换机设置有上述任意的输出端口调度***。
对于该交换机的具体实施细节及有益效果,可参考上述关于输出端口调度***的实施例,在此则不再赘述。
以上结合附图详细描述了本发明实施例的可选实施方式,但是,本发明实施例并不限于上述实施方式中的具体细节,在本发明实施例的技术构思范围内,可以对本发明实施例的技术方案进行多种简单变型,这些简单变型均属于本发明实施例的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施例对各种可能的组合方式不再另行说明。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得单片机、芯片或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。
Claims (9)
1.一种用于交换机的输出端口调度***,其特征在于,所述输出端口调度***包括:
报文存储器,用于获取报文,并发送增加或减少队列长度的请求,其中该请求包含队列号,且增加队列长度的请求在所述报文存储器预计读出报文时被发送,减少队列长度的请求在所述报文存储器已读出报文后被发送;
队列长度管理单元,用于根据从所述报文存储器接收的增加或减少队列长度的请求,修改队列长度值;
队列调度请求生成模块,用于根据从所述队列长度管理单元获得的修改后的队列长度值判断对应的队列是否有报文保存在所述报文存储器,若有,则根据当前多端口绑定使用调度器的情形下的输出端口号生成端口调度请求;以及
调度器,用于根据从所述队列调度请求生成模块中接收的端口调度请求和针对所述输出端口号的端口测速结果来调度出需要被调度的队列的队列号,并将调度出的队列号发送给所述报文存储器以读出报文,还用于根据所述报文存储器读出报文后反馈的报文长度来请求更新所述端口测速结果;
所述队列长度管理单元包括队列长度统计模块和队列长度存储器;
其中,所述队列长度统计模块被配置为:
根据增加或减少队列长度的请求,向所述队列长度存储器发送第一读请求和第一读地址,并接收所述队列长度存储器响应于所述第一读请求和第一读地址所读出的数据,并修改该读出的数据作为第一写数据,再向所述队列长度存储器发送第一写请求、第一写地址和所述第一写数据;
其中,所述第一读地址和所述第一写地址为所述队列号,且在根据增加队列长度的请求时,所述队列长度统计模块将所述读出的数据加一以作为所述第一写数据,在根据减少队列长度的请求时,所述队列长度统计模块将所述读出的数据减一以作为所述第一写数据,且所述第一写数据示出修改后的队列长度值。
2.根据权利要求1所述的输出端口调度***,其特征在于,所述输出端口调度***还包括:
输入端口,与所述报文存储器连接,用于向所述报文存储器输入报文;以及
输出端口,与所述报文存储器连接,用于输出所述报文存储器基于所述调度器所调度出的队列号所读出的报文。
3.根据权利要求2所述的输出端口调度***,其特征在于,所述队列调度请求生成模块根据从所述队列长度管理单元获得的修改后的队列长度值判断对应的队列是否有报文保存在所述报文存储器包括:
所述队列调度请求生成模块为每个队列维护一个一位的标志位,且配置该标志位为0时,表示对应队列无报文保存在所述报文存储器中,该标志位为1时,表示对应队列有报文保存在所述报文存储器中,报文需要被调度;以及
所述队列调度请求生成模块接收所述第一写请求、所述第一写地址和所述第一写数据,若所述第一写数据大于0,则将所述第一写地址对应的对列的标志位置于1,否则将所述第一写地址对应的对列的标志位置于0。
4.根据权利要求1所述的输出端口调度***,其特征在于,所述输出端口调度***还包括:
调度顺序控制器,其与所述队列调度请求生成模块及所述调度器连接,用于产生端口绑定情形下的输出端口的调度端口号,且将该调度端口号作为所述当前多端口绑定使用调度器的情形下的输出端口号发送给所述队列调度请求生成模块及所述调度器。
5.根据权利要求4所述的输出端口调度***,其特征在于,所述调度顺序控制器还用于向所述调度器发送调度开始信号和接收所述调度器反馈的调度结束信号,并在接收到所述调度结束信号后产生新的调度端口号。
6.根据权利要求1至5中任意一项所述的输出端口调度***,其特征在于,所述输出端口调度***还包括:
测速管理单元,用于向所述调度器提供端口测速结果以及用于根据所述调度器发送的请求更新所述端口测速结果。
7.根据权利要求6所述的输出端口调度***,其特征在于,所述测速管理单元包括:
测速计算模块,其与所述调度器连接,用于根据从所述调度器接收的更新速率请求向令牌表发送第二读请求和第二读地址,并接收所述令牌表返回的读出的数据,其中该读出的数据为队列当前的令牌数,且所述第二读地址是更新速度的队列号;还用于将报文长度转换为令牌,并增加到队列当前的令牌数中,向令牌表发送第二写请求、第二写地址和第二写数据,其中第二写地址为队列号,第二写数据为修改后的令牌数,若该修改后的令牌数大于设定的阈值,则生成并发送队列测速结果,其中所述队列测速结果包括队列号及其超速信息;以及
端口测速结果生成模块,与所述调度器及所述测速计算模块连接,用于接收队列测速结果,并根据所述输出端口号和所述队列测速结果,生成端口测速结果。
8.根据权利要求7所述的输出端口调度***,其特征在于,所述测速计算模块还用于产生针对令牌表的刷新操作,以根据读出的每一个令牌表的表项,减去部分令牌。
9.一种交换机,其特征在于,该交换机设置有权利要求1至8中任意一项所述的输出端口调度***。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710986719.0A CN107835137B (zh) | 2017-10-20 | 2017-10-20 | 用于交换机的输出端口调度***及该交换机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710986719.0A CN107835137B (zh) | 2017-10-20 | 2017-10-20 | 用于交换机的输出端口调度***及该交换机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107835137A CN107835137A (zh) | 2018-03-23 |
CN107835137B true CN107835137B (zh) | 2021-05-11 |
Family
ID=61648697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710986719.0A Active CN107835137B (zh) | 2017-10-20 | 2017-10-20 | 用于交换机的输出端口调度***及该交换机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107835137B (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6052375A (en) * | 1997-11-26 | 2000-04-18 | International Business Machines Corporation | High speed internetworking traffic scaler and shaper |
CA2245367A1 (en) * | 1998-08-19 | 2000-02-19 | Newbridge Networks Corporation | Two-component bandwidth scheduler having application in multi-class digital communication systems |
CN100574278C (zh) * | 2006-12-26 | 2009-12-23 | 华为技术有限公司 | 流量限制技术中刷新令牌桶的方法及装置 |
CN101242341B (zh) * | 2007-02-07 | 2015-07-29 | 华为技术有限公司 | 一种报文调度方法及装置 |
CN101257453A (zh) * | 2008-03-12 | 2008-09-03 | 中兴通讯股份有限公司 | 一种基于网络处理器的流量整形实现方法及其装置 |
CN101695052B (zh) * | 2009-10-21 | 2014-10-15 | 中国人民解放军理工大学 | 一种交叉点小缓存的高性能crossbar调度方法 |
CN102104545B (zh) * | 2011-02-12 | 2012-08-08 | 华为技术有限公司 | 解决小包线速的credit调度方法、调度装置及旁路器 |
US9258245B2 (en) * | 2012-09-12 | 2016-02-09 | Broadcom Corporation | Multiple cell dequeue for high speed queueing |
CN104753818B (zh) * | 2013-12-30 | 2019-04-30 | 深圳市中兴微电子技术有限公司 | 一种队列调度方法和装置 |
CN104869079B (zh) * | 2015-06-11 | 2018-03-20 | 烽火通信科技股份有限公司 | 基于动态加权循环法的队列调度方法及装置 |
-
2017
- 2017-10-20 CN CN201710986719.0A patent/CN107835137B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107835137A (zh) | 2018-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102023890B (zh) | 一种用于设置事务优先级的数据处理装置和方法 | |
EP1774714B1 (en) | Hierarchal scheduler with multiple scheduling lanes | |
EP2613479B1 (en) | Relay device | |
US9288154B2 (en) | Queue scheduling method and apparatus | |
US7826468B2 (en) | System and method for bypassing an output queue structure of a switch | |
US7742408B2 (en) | System and method for filtering packets in a switching environment | |
US9602436B2 (en) | Switching device | |
US8819309B1 (en) | Low latency bypass buffer | |
US20020071321A1 (en) | System and method of maintaining high bandwidth requirement of a data pipe from low bandwidth memories | |
CN110830388B (zh) | 一种数据调度方法、装置、网络设备及计算机存储介质 | |
CN107483405B (zh) | 一种支持变长信元的调度方法和调度*** | |
US20030086424A1 (en) | Data transfer apparatus and data transfer method | |
US11221971B2 (en) | QoS-class based servicing of requests for a shared resource | |
US8879578B2 (en) | Reducing store and forward delay in distributed systems | |
US7245617B2 (en) | Queuing packets written to memory for switching | |
CN109905331B (zh) | 队列调度方法及装置、通信设备、存储介质 | |
CN107835137B (zh) | 用于交换机的输出端口调度***及该交换机 | |
CN104022965B (zh) | 一种报文出队调度的方法和设备 | |
US9281053B2 (en) | Memory system and an apparatus | |
US6819675B2 (en) | Self-route multi-memory expandable packet switch with overflow processing means | |
CN113010464A (zh) | 数据处理装置及设备 | |
JPWO2003103234A1 (ja) | パケット転送回路及びパケット転送方法 | |
CN113225263B (zh) | 一种流量请求处理方法、装置及网络芯片 | |
US7746775B2 (en) | Instant service method for deficit-round-robin (DRR) data packet scheduling | |
US7583678B1 (en) | Methods and apparatus for scheduling entities using a primary scheduling mechanism such as calendar scheduling filled in with entities from a secondary scheduling mechanism |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20181105 Address after: 213000 room 525, 18 Xinya Road, Wujin national hi tech Industrial Development Zone, Changzhou, Jiangsu Applicant after: Changzhou Nanfei Microelectronics Co., Ltd. Address before: 518057 the first floor of Fengyun science and technology building, 25 high tech North six road, Nanshan District, Shenzhen, Guangdong. Applicant before: Shenzhen Phoebe Microelectronics Co., Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |