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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/225521.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

全方位解读SeaTunnel MySQL CDC连接器:实现数据高效同步的强大工具

在当今数据快速增长的时代,实时、高效地同步和处理来自各种数据源的信息成为了企业和开发者面临的重要挑战。 MySQL作为广泛使用的数据库之一,其变更数据捕获(CDC)功能对于实现这一目标至关重要。在这篇文章中,我们将深…

Java接口:用于实现各种动态功能

👑专栏内容:Java⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 1、接口概念2、实现一个接口3、实现多个接口4、接口间的继承 1、接口概念 在现实生活中,接口的例子比比皆是&#…

java接口自动化测试框架及断言详解

在上篇文章,我们介绍了Get方法的设计过程和测试结果,现在我们需要对前面代码进行重构和修改,本篇需要完成以下目标。 1)重构Get方法2)如何进行JSON解析3)使用TestNG方法进行测试断言 1.重构Get方法 在前…

家政小程序源码,师傅竞价接单

家政预约上门服务小程序开发方案,php开发语言,前端是uniapp,有成品源码,可以二开,可以定制。 一家政小程序用户端功能:服务分类、在线预约、在线下单。 师傅端:在线接单,竞价&…

算法初阶双指针+C语言期末考试之编程题加强训练

双指针 常⻅的双指针有两种形式,⼀种是对撞指针,⼀种是左右指针。 对撞指针:⼀般⽤于顺序结构中,也称左右指针。 • 对撞指针从两端向中间移动。⼀个指针从最左端开始,另⼀个从最右端开始,然后逐渐往中间逼…

哥尼斯堡的“七桥问题”——欧拉回路

哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。 可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707—1783)最终解决了这个问题,并由此创立…

Pacifist:一款专为技术开发者打造的软件提取工具

对于技术开发者而言,有效且便捷的工具可以显著提高工作效率。Pacifist,作为一款专业的软件提取工具,专为技术开发者而设计,旨在提供简单、安全的软件提取和管理工作。 一、Pacifist的技术特点 Pacifist主要采用AppleScript作为其…

ROS小练习——话题订阅

目录 一、话题与消息获取 二、代码编写 1、C 2、python 三、编译运行 一、话题与消息获取 rostopic list rostopic type /turtle1/pose rosmsg info turtlesim/Pose 二、代码编写 1、C //包含头文件 #include "ros/ros.h" #include "turtlesim/Pose…

js vue 输入正确手机号/邮箱后,激活“发送验证码”按钮

按钮禁止点击状态: 按钮能够点击状态: 我采用的方式是监听手机号/邮箱输入框的输入事件,即实判断用户输入的数据是否满足规则,如果满足手机号/邮箱规则,则激活“获取验证码”按钮。 话不多说,上代码 样式…

Java期末复习题之封装

点击返回标题->23年Java期末复习-CSDN博客 第1题. 定义一个类Person,定义name和age私有属性,定义有参的构造方法对name和age进行初始化。在测试类中创建该类的2个对象,姓名、年龄分别为lili、19和lucy、20,在屏幕打印出2个对象的姓名和年龄…

【Lidar】基于Python的三维点云数据转二维平面+散点图绘制

最近一直在搞点云相关的操作,有时候在处理点云数据时需要查看处理后的数据是否满足需求,所以就想着写一套展示点云的代码。之前已经分享过如何可视化点云了,感兴趣的可以自己去看下:【Lidar】基于Python的Open3D库可视化点云数据。…

微信商城小程序怎么弄

随着移动互联网的快速发展,微信小程序已经成为了许多商家和企业拓展业务的新渠道。其中,微信商城小程序更是受到了广大用户的喜爱。那么微信商城小程序怎么弄呢?下面给大家做个详细讲解。 首先,你需要在微信公众平台注册一个小程…

孩子都能学会的FPGA:第二十三课——用FPGA实现格雷码的编码和解码

(原创声明:该文是作者的原创,面向对象是FPGA入门者,后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门,作者不光让大家知其然,还要让大家知其所以然!每个工程作者都搭建了全自动化的仿…

文心一言大模型应用开发入门

本文重点介绍百度智能云平台、文心一言、千帆大模型平台的基本使用与接入流程及其详细步骤。 注册文心一言 请登录文心一言官方网站 https://yiyan.baidu.com/welcome 点击登录;图示如下: 请注册文心一言账号并点击登录,图示如下&#xff1…

深入理解数据在内存中是如何存储的,位移操作符如何使用(能看懂文字就能明白系列)文章超长,慢慢品尝

系列文章目录 C语言笔记专栏 能看懂文字就能明白系列 🌟 个人主页:古德猫宁- 🌈 信念如阳光,照亮前行的每一步 文章目录 系列文章目录🌈 *信念如阳光,照亮前行的每一步* 前言引子一、2进制和进制转化为什么…

ORACLE数据库实验总集 实验四 Oracle数据库物理存储结构管理

一、实验目的 (1)掌握 Oracle数据库数据文件的管理 (2)掌握 Oracle数据库控制文件的管理 (3)掌握 Oracle数据库重做日志文件的管理 (4)掌握 Oracle数据库归档管理, 二、…

Golang 原生Rpc Server实现

Golang 原生Rpc Server实现 引言源码解析服务端数据结构服务注册请求处理 客户端数据结构建立连接请求调用 延伸异步调用定制服务名采用TPC协议建立连接自定义编码格式自定义服务器 参考 引言 本文我们来看看golang原生rpc库的实现 , 首先来看一下golang rpc库的demo案例: 服…

忘记PDF密码了,怎么办?

PDF文件有两种密码,一个打开密码、一个限制编辑密码,因为PDF文件设置了密码,那么打开、编辑PDF文件就会受到限制。忘记了PDF密码该如何解密? PDF和office一样,可以对文件进行加密,但是没有提供恢复密码的功…

动态代理IP和静态代理IP有什么区别,适用场景是什么?

互联网行业的从业者经常会用到一种工具,那就是代理IP工具。动态代理IP和静态代理IP是两种常见的代理IP技术,它们在网络通信中起到了重要的作用,比如大数据行业的从业者会经常需要用到动态代理IP,跨境行业的从业者会经常用到静态代…

MySQL 忘记root密码后重置密码操作

在忘记 MySQL 密码的情况下,可以通过 --skip-grant-tables 关闭服务器的认证,然后重置 root 的密码,具体操作步骤如下。 步骤 1):关闭正在运行的 MySQL 服务。打开 cmd 进入 MySQL 的 bin 目录。 步骤 2):输入mysqld -…