Verilog开源项目——百兆以太网交换机(四)令牌桶管理单元设计
🔈声明:未经作者允许,禁止转载
😃博主主页:王_嘻嘻的CSDN主页
🔑全新原创以太网交换机项目,Blog内容将聚焦整体架构、模块设计方面;更新周期可能会略慢,希望朋友们多多包涵
🧡关注本专题的朋友们可以学习到原创交换机设计的全流程,包括设计与验证(FPGA)。
🚩第一代交换机 — 从零开始 verilog 以太网交换机系列专栏:点击这里
💥第二代交换机 — Atom(百兆以太网交换机)专栏:点击这里
Atom支持了多种形式的QoS特性,其中发送端口的限速是Tx Path上尤为重要的功能,Atom将使用令牌桶的管理方式,对所有流出的报文,进行限速管理,并将该令牌桶管理单元命名为TKM(Token Manager)。
TKM将实现单速单桶、双速双桶可配置形式,并能统计普通流量、突发流量、瞬时峰值流量,提供给上层更多的管理指导。
一、TKM Feature
- 负责Switch出口QoS管理,核心体现在限速功能;
- 可配置的单速单桶、双速双桶模式;
- CIR、PIR、CBS等参数可配;
- 管理令牌数量,每Port对应一组Token bucket;
- PM从TKM申请令牌,若申请成功Token减少,且返回ack;若申请失败,则返回nack;
- 统计普通流量、突发流量、瞬时峰值流量;
二、TKM概述
TKM负责对Atom Tx MAC的发送流量限速,是Atom QoS策略中的关键一环。其实现原理为令牌桶,当PM处理完一个packet后,需要向TKM对应Port申请令牌数量。
- 若申请成功,则返回ack,之后PM才能发送该Packet前往对应Port;
- 若申请失败或部分成功,则对应失败Port返回nack,之后PM将不能将packet发送至这些nack对应的Port;
令牌桶的核心在于令牌数量的增减,不论是哪种令牌桶模式,增减原理类似:
- PM申请成功后,对应Port的令牌数量都减去相应packet length;
- 根据用户配置的速率,间隔恢复令牌数量;
上图为Atom TKM模块内部架构图,只需设计针对每个Port的Token bucket unit,以下简称TKU。每个TKU负责commit bucket和peak bucket的管理,并根据不同模式执行不同管理方式,最后例化n个TKU,每个TKU对PM request的每个Port请求进行分析,判断是否有足够令牌数量使得该packet通往对于Port,并把ack/nack信息整合返回给PM。
Note:TKM采用色盲模式,对packet不区分颜色,只有ack、nack之分。
a)单速单桶
对于单速单桶模式,只有CIR(承诺信息速率)和CBS(承诺突发尺寸)需要配置,CIR表示Port的限制速率,CBS表示每秒允许发送Byte数量,CIR和CBS可以不一致,代表突发速率可以大于CIR。
这种模式下,桶内令牌数量足够即申请成功,否则为失败。
b)单速双桶
对于单速双桶模式,增加了EBS(超额突发尺寸)的概念,利用一个突发尺寸的桶来检测packet超额突发的情况,和单速单桶的不同在于可以区分超额部分packet,用第三种颜色标记,有利于上层更精细控制QoS。
不过考虑到Atom的TKM是色盲模式,不在乎中间类型的报文,所以单速双桶和单速单桶模式并没区别,将不实现。
c)双速双桶
双速双桶相较于单速单桶增加了PIR(峰值信息速率)和PBS(峰值突发尺寸)的概念,且其拥有独立的令牌桶,完全独立于C桶。
- P桶和C桶各自按PIR和CIR配置恢复令牌数量,溢出则保持上限;
- 若C桶令牌数量满足packet Byte cnt,则P桶、C桶同时减去packet Byte cnt;
- 若C桶令牌数量不满足packet Byte cnt,但P桶满足,则P桶减去packet Byte cnt,C桶不变;
- 若C桶、P桶都不满足,则两桶令牌数量都不变,本次packet请求失败;
因为PBS拥有独立的令牌桶,所以可以更好的通过配置控制Port瞬时速率,这是相较于前两种模式的不同之处。
综上,以下是三种模式的分析与总结:
三、SHA-256接口
若有不专业或错误之处,欢迎指正!
具体电路实现及验证环境代码会在准备完毕后开源,目前暂时不能给出,请见谅
搜索关注我的微信公众号【IC墨鱼仔】,获取我的更多IC干货分享!