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.mzph.cn/news/204255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

说说你熟悉哪些maven命令?

Maven是一个流行的Java项目管理和构建工具,它提供了许多命令行工具来帮助开发者管理和构建项目。以下是一些常见的Maven命令: mvn clean:清理项目构建产生的临时文件。mvn compile:编译Java源代码到字节码文件。mvn test&#xf…

Element Plus设置input文本域组件不可鼠标拖拉高度

<el-input type"textarea" resize"none" v-model.trim"form.name" placeholder"请在此填写退款原因" maxlength"100" show-word-limit :rows"3" style"width: 341px" /> <-- resize"none…

KALI LINUX安全审核

预计更新 第一章 入门 1.1 什么是Kali Linux&#xff1f; 1.2 安装Kali Linux 1.3 Kali Linux桌面环境介绍 1.4 基本命令和工具 第二章 信息收集 1.1 网络扫描 1.2 端口扫描 1.3 漏洞扫描 1.4 社交工程学 第三章 攻击和渗透测试 1.1 密码破解 1.2 暴力破解 1.3 漏洞利用 1.4 …

前缀和|二分查找|LeetCode2234| 花园的最大总美丽值

作者推荐 贪心算法LeetCode2071:你可以安排的最多任务数目 本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 二分查找算法合集 题目 Alice 是 n 个花园的园丁&#xff0c;她想通过种花&#xff0c;最大化她所有花…

pycharm中debug,py文件

1、先把需要的实参传入 2、在合适位置打上断点 3、在小三角旁边右键调用调试 4.步进/步出查看 5.选择单步执行&#xff0c;走的更慢

使用Python实现爬虫IP负载均衡和高可用集群

做大型爬虫项目经常遇到请求频率过高的问题&#xff0c;这里需要说的是使用爬虫IP可以提高抓取效率&#xff0c;那么我们通过什么方法才能实现爬虫IP负载均衡和高可用集群&#xff0c;并且能快速的部署并且完成爬虫项目。 通常在Python中实现爬虫ip负载均衡和高可用集群需要一…

基于ssm助学贷款网站论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本助学贷款管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

CTF 7

信息收集 存活主机探测 arp-scan -l 端口探测 nmap -sT --min-rate 10000 -p- 192.168.0.5 服务版本等信息 nmap -sT -sV -sC -O -p22,80,137,138,139,901,5900,8080,10000 192.168.0.5Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-02 21:23 CST Stats: 0:01:30 elaps…

qt中sokect断开的几种情况

第一部分: 在Qt中,Socket的连接可以在多个时刻被断开。以下是一些常见的情况: 显式断开连接:您可以在代码中显式地调用QAbstractSocket类的disconnectFromHost()或close()方法来断开连接。socket->disconnectFromHost(); // 或者 socket->close();连接错误:当Socke…

服务器适合哪些使用场景_Maizyun

服务器适合哪些使用场景 在当今的数字化时代&#xff0c;服务器作为互联网基础设施的核心组件&#xff0c;被广泛应用于各种场景。本文将探讨服务器适合哪些使用场景。 一、Web服务器 Web服务器是服务器中最常见的一种&#xff0c;用于托管和运行网站。它负责处理来自客户端…

​劲松中西医结合医院专家讲解hpv36阳性是否严重

​劲松中西医结合医院专家讲解hpv36阳性严重性问题 HPV36阳性&#xff0c;就像一场潜在的暴风雨&#xff0c;预示着可能的危机。它代表了一种高危型的HPV感染&#xff0c;就像一只隐藏在暗处的猛兽&#xff0c;随时可能暴起伤人。然而&#xff0c;就像生活中的许多挑战&#x…

Python 在控制台打印带颜色的信息

#格式&#xff1a;  设置颜色开始 &#xff1a;\033[显示方式;前景色;背景色m #说明&#xff1a; 前景色 背景色 颜色 --------------------------------------- 30 40 黑色 31 41 红色 32 …

Linux环境下ARM开发

目录 前言ARM启动及开发基础1.Cortex-A架构2.启动方式3.汇编基础4.Makefile语法基础5.Makefile补充6.编译下载 结语 前言 主要介绍基于linux开发环境下&#xff0c;如何开发ARM A7 ARM启动及开发基础 1.Cortex-A架构 1&#xff09;Cortex-A7运行模式 模式说明User(USR)用户模…

RK3588 平台的libevent库的交叉编译

1、下载libevent库&#xff0c;官网https://libevent.org/ 2、解压 3、配置 ./configure --prefix/home/harmony/Lib_self/cross --hostarm-linux-gnueabihf CCaarch64-linux-gnu-gcc --prefix指定安装目录, --host指定将要运行的特定平台 CC指定C语言的编译器 CXX指定C语言…

智能化转型比想象中更难,九牧智能马桶深陷口碑危机

智能化浪潮正深刻改变着消费者日常生活的方方面面&#xff0c;也推动着传统卫浴品牌面向智能化转型的步伐。 而在一众耳熟能详的中国卫浴品牌中&#xff0c;九牧可以称得上是面向数字化、智能化、高端化转型的先锋。 就在近日&#xff0c;九牧刚刚举行了一场盛大的第1000万套…

鸿蒙学习资料

主要是记录一下&#xff1a; 1. ES6 2. lambda表达式 3. TypeScript基础知识 4. ArkTS 5. ArkUI

销售技巧培训之如何提升销售沟通技巧

销售技巧培训之如何提升销售沟通技巧 现在市场环境竞争越来越激烈&#xff0c;产品越来越过剩&#xff0c;如何把产品卖出去是摆在企业面前的难题。所以打造一致所向披靡的销售团队&#xff0c;提升销售人员的系统化销售能力就显得非常重要。在销售系统培训模块中&#xff0c;…

Python第三次练习

Python 一、如何判断一个字符串是否是另一个字符串的子串二、如何验证一个字符串中的每一个字符均在另一个字符串中出现三、如何判定一个字符串中既有数字又有字母四、做一个注册登录系统 一、如何判断一个字符串是否是另一个字符串的子串 实现代码&#xff1a; string1 inp…

安装node.js并创建第一个vue项目

目录 一&#xff0c;下载node.js 二&#xff0c;创建一个vue项目 一&#xff0c;下载node.js 1.进入官网&#xff1a;Node.js (nodejs.org) 2.选择版本 3.选择安装方式 4.运行安装包&#xff0c;下载文件 5.选择要安装的路径后一直next 6.安装完成后打开命令提示符&#xff…

句子逆序

将一个英文语句以单词为单位逆序排放。例如“I am a boy”&#xff0c;逆序排放后为“boy a am I” 所有单词之间用一个空格隔开&#xff0c;语句中除了英文字母外&#xff0c;不再包含其他字符。 输入描述&#xff1a;输入一个英文语句&#xff0c;每个单词用空格隔开。保证输…