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,一经查实,立即删除!

相关文章

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

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

pycharm中debug,py文件

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

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

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

基于ssm助学贷款网站论文

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

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…

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

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

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

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

Linux环境下ARM开发

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

RK3588 平台的libevent库的交叉编译

1、下载libevent库,官网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语言…

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

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

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

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

Python第三次练习

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

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

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

python获取js data.now同款时间戳

import requestsimport time from datetime import datetimecu_t datetime.now() se cu_t.timestamp()*1000 se int(se) print(se)#cur_time time.time()*1000 #seconds int(cur_time) #print(seconds)

C++——红黑树

作者:几冬雪来 时间:2023年12月7日 内容:C——红黑树讲解 目录 前言: 红黑树的概念: 红黑树的性质: 红黑树的路径计算: 最长路径和最短路径: AVL树与红黑树的区别&#xff…

【Docker】Swarm的overlay网络

对于理解swarm的网络来讲,个人认为最重要的两个点: 第一是外部如何访问部署运行在swarm集群内的服务,可以称之为入方向流量,在swarm里我们通过ingress来解决。 第二是部署在swarm集群里的服务,如何对外进行访问&…

力扣题:字符的统计-12.6

力扣题-12.6 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:696. 计数二进制子串 解题思想:先统计连续的0和连续的1的个数,然后进行相加即可(想不到一点) class Solution(object):def countBinaryS…

EI级 | Matlab实现TCN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测

EI级 | Matlab实现TCN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 EI级 | Matlab实现TCN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【EI级】Matlab实现TCN-LSTM-Multihead-Attent…

egen3 rowwise().maxCoeff()的使用

1、安装eigen3 2、引用头文件 3、代码测试 MatrixXf aaa(2, 4);aaa << 1, 2, 3, 4, 5, 6, 7, 8; Vector2f diff(10, 20);aaa.colwise() diff;std::cout << "new_aaa : " << aaa << endl; 全部代码&#xff1a; int main() {MatrixXf …

Ubuntu18安装(重启黑屏问题)

1. F10 进入bios&#xff0c;选择u盘里的ubuntu镜像 2.进入使用ubuntu&#xff0c;下载 3.重启&#xff0c;esc 4.ubuntu 安e进入 5. nomodeset&#xff08;&#xff09; F10 保存启动 6. 7.没有网 手机usb提供网络 下载有限网卡驱动