当前位置: 首页 > article >正文

Verilog开源项目——百兆以太网交换机(四)令牌桶管理单元设计

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干货分享!


http://www.kler.cn/a/160839.html

相关文章:

  • 缓存与数据库不一致的解决方案:深入理解与实践
  • 基于微信小程序的乡村研学游平台设计与实现,LW+源码+讲解
  • 【最新版】Stable Diffusion4.9(AI绘画)下载及安装教程(附软件安装包)!
  • Bugku CTF_Web——文件上传
  • C++,STL 054(24.11.13)
  • 【C#设计模式(8)——过滤器模式(Adapter Pattern)】
  • CSS-2
  • php中WebSocket简单使用
  • C++——红黑树
  • uniapp实战 —— 自定义顶部导航栏
  • GPT 中文提示词技巧:参照 OpenAI 官方教程
  • mysql知识分享(包含安装卸载)(一)
  • Vue + Element 实现按钮指定间隔时间点击
  • [MTK]安卓8 ADB执行ota升级
  • 文心一言 VS 讯飞星火 VS chatgpt (151)-- 算法导论12.2 7题
  • JPA(Java Persistence API)是什么
  • 指针(四)
  • 2.面向对象编程风格
  • 【NLP】如何管理大型语言模型 (LLM)
  • 常规外网打点拿下域控
  • 鸿蒙一出,android开发处境再受重创
  • Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)读书笔记 目录
  • screen 常用命令
  • 小程序商城制作一个需要多少钱
  • C++指针作业
  • RT-DETR手把手教程:NEU-DET钢材表面缺陷检测任务 | 不同网络位置加入EMA注意力进行魔改