【原】BCM5633x Layer-2/3 千兆交换芯片系列之三 — QoS之优先级调度

BCM5633x QoS的优先级调度模块

 

  BCM56330x 支持四种CoS队列调度算法用来实现出口队列调度

  • Strict Priority across CoS queues

  严格优先级CoS队列调度,调度器完全按照队列的优先级进行报文调度出队转发,不轮询,调度次优先级队列的条件是:最高优先级的CoS队列空,或者使能关闭。

  • Round Robin across CoS queues

  轮询优先级CoS队列调度,调度器按照队列顺序,从由高优先级队列开始,依次调度整个队列组,循环往复,各队列调度机会均等。空CoS队列或者使能关闭的CoS队列不参与轮询,并释放占用带宽。

  • Weighted Round Robin(WRR) across CoS queues

  加权轮询优先级CoS队列调度,调度器执行RR的调度规则,周期性访问每个CoS队列。WRR为每一个CoS队列预先分配一个权值,同时为每个队列维护一个计数器,计数器初始化为默认权值。

  某个CoS队列被调度,待发分组长度小于等于计数器值,WRR允许发送;待发分组长度大于计数器值,WRR将当前计数器值和默认权值累加,作为新的计数器值,在下一次轮询时比较;WRR每调度一个单位报文,计数器减相应单位,直到计数器减为0,重新分配默认权值。权值越高,表明该队列获得调度的机会,包括成功的机会越大。同时,该权值又可以反映CoS队列占有带宽的百分比,从而保证最小优先级的CoS队列同样能够得到带宽,而实现成功调度。5633x的权值范围在0~127。

  • Weighted Deficit Round Robin(WDRR) across CoS queues

  加权差额轮询优先级CoS队列调度。     

  WDRR给每个待调度队列分配一个可配置的最大服务额度MTU_QUANTA,并为每个CoS队列维护一个信贷计数器Credit_Counter,初始化为MTU_QUANTA。如果一个包A从一个CoS队列成功发送,则从该队列的Credit_Counter中减去Len(A)作为新的信贷计数,即Credit_Counter=Credit_Counter-Len(A);如果Credit_Counter < Len(A),则该CoS队列此次轮询不能得到调度,须等待下一个轮询,WDRR将Credit_Counter和Len(A)的差值加给Credit_Counter,即Credit_Counter=Credit_Counter +(Len(A) - Credit_Counter),作为下一轮调度的新的信贷计数。

  • BCM5633x队列调度模式配置

  由ESCONFIG寄存器的SCHEDULING_SELECT域来指定BCM5633x的队列调度模式。

  如果配置出口调度算法为SP,ESCONFIG.SCHEDULING_SELECT = 0;

  如果配置出口调度算法为RR,ESCONFIG.SCHEDULING_SELECT = 1;

  如果配置出口调度算法为WRR,ESCONFIG.SCHEDULING_SELECT = 2,同时需配置COSWEIGHTS寄存器作为队列的权值。8个7bits的COSWEIGHTS寄存器,作为一个寄存器组,用以为8个CoS队列指派特定的权重(顺序是CoS7~CoS0),范围在0~127,如果为0,该CoS队列将会按照SP模式被调度;

  如果配置出口调度算法为WDRR,ESCONFIG.SCHEDULING_SELECT = 3,配置ESCONFIG.MTU_QUANTA_SELECT初始化额度,配置COSWEIGHTS为CoS队列分配权重,如果某个CoS队列的COSWEIGHTS为0,该CoS队列将会按照SP模式被调度;

你可能感兴趣的:(优先级)