博通BCM53101M以太网交换芯片原理解析
Quality of Service 服务质量
BCM53101M的QoS为每个端口提供6个内部队列以支持6种不同的流量类别(traffic class, TC)。在流量拥塞的情况下,可通过拥塞管理,对数据包进行调度,在出口传输队列(egress transmit queues)中先传输高优先级的数据包,再传输低优先级的数据包。在此通过设置TC的优先级实现,使得高优先级的TC比低优先级的延迟要低。BCM53101M可以根据“Port-Based QoS”、“IEEE 802.1p QoS”、“MACDA-Based QoS”、“TOS/DSCP QoS”4种信息,指派数据包发往6个出口传输队列中的一个。

图1 QoS处理流程
端口的6条内部队列指的是每个出口(egress port拥有6条传输队列(transmit queues),即CoS0 – CoS5,其中CoS4和CoS5专门用于BroadSync™ HD类型流量的传输,不和其他类型流量共享,而CoS0 – CoS3则被IMP(egress)端口使用。Broadcom的BroadSync™ HD技术可通过以太网高效地向联网的电子设备传输高清音/视频数据流,以下是关于这项技术的官方说明。
"BroadSync™ HD Technology enables extraordinary streaming of high definition (HD) audio/video (A/V) traffic over Ethernet to networked electronic devices. This technology promotes Ethernet as a cost effective, easy-to-install connectivity solution, with professional levels of Quality of Service (QoS), for the consumer and professional A/V electronics market. BroadSync HD Technology is Broadcom's custom implementation of the IEEE 802.1 Audio Video Bridging (AVB) draft standard, which provides guaranteed QoS, frame synchronization and timing that is necessary to stream professional-quality audio and video traffic over Ethernet."
在CoS0 – CoS3中,BCM53101M使用绝对优先级(Strict Priority)和加权循环调度算法(WRR, Weighted Round Robin)进行队列调度。设置为绝对优先的队列,其优先级高于使用WRR调度的队列。调度策略可以在TX Queue Control Register中设置,可设置一个或多个队列为绝对优先队列,其他队列按照WRR算法设置。WRR算法中每条队列的权重(weights)可在TX Queue Weight Register中设置。
四种调度策略的设置
- CoS0 – CoS3 : WRR
- CoS0 – CoS2 : WRR , CoS3 : SP
- CoS0 – CoS1 : WRR , CoS2 – CoS3 : SP
- CoS0 – CoS3 : SP
当所有队列都设置为绝对优先队列时,则采用CoS3﹥CoS2﹥CoS1﹥CoS0的优先级原则。而WRR算法的调度是在一个循环周期内,根据每条队列的权重进行调度。
默认设置
- Queue 0 = 0001
- Queue 1 = 0010
- Queue 2 = 0100
- Queue 3 = 1000
默认各条队列的权重大小为Q3﹥Q2﹥Q1﹥Q0。以上设置的是二进制数,其对应十进制的值代表了在一个循环周期内,该队列被允许发包的数量。例如Q0的值是1,则在每个循环周期内,Q0只能发一个包。Q2的值是4,则在每个循环周内,Q2可以发4个包。
Port Trunking/Aggreation 端口聚合
端口聚合也称链路聚合。
BCM53101M提供基于MAC地址的端口聚合,这种聚合允许端口被“组织”成一个组,在两个交换设备之间形成一条单一的链路,使得有效带宽得以增加,如图2所示。

图2 端口聚合
BCM53101M允许建立两个聚合组(trunk groups),聚合组由预先确定的端口组成,用户可通过Trunking Group 0 寄存器进行使能,并且聚合组中的各端口必须设置成相同的连接速度(link speed)。通过执行动态散列算法(dynamic hashing algorithm),每个转发到主干链路的数据包都会发往聚合组中的一个有效端口,使得各端口流量更均衡。
此外,这种基于MAC地址的链路聚合算法提供动态故障转移的冗余方案,如果聚合组内部的一个端口失效,则组内的其他端口自动假设所有流量都是指定为主干链路的。
博通BCM53101M以太网交换芯片原理解析的更多相关文章
- 【转帖】影响超 10 亿设备,博通和 Cypress 芯片曝惊天漏洞,苹果、华为、三星等中招
影响超 10 亿设备,博通和 Cypress 芯片曝惊天漏洞,苹果.华为.三星等中招 https://www.infoq.cn/article/lpNEQGrxZL22gHDPBE2z 26 ...
- 主流蓝牙芯片盘点,Nordic/TI/博通哪家强?
无线通信技术自19世纪中期诞生以来,从使用狼烟.火炬.闪光镜.信号弹等在视距内传输信息,到1838年塞缪尔・莫尔斯发明电报网,再到电报网被电话取代,再到几十年后的1895年马可尼首次从英国怀特岛到30 ...
- appium 原理解析(转载雷子老师博客)
appium 原理解析 原博客地址:https://www.cnblogs.com/leiziv5/p/6427609.html Appium是 c/s模式的appium是基于 webdriver 协 ...
- 从零开始实现lmax-Disruptor队列(三)多线程消费者WorkerPool原理解析
MyDisruptor V3版本介绍 在v2版本的MyDisruptor实现多消费者.消费者组间依赖功能后.按照计划,v3版本的MyDisruptor需要支持多线程消费者的功能. 由于该文属于系列博客 ...
- GeoHash原理解析
GeoHash 核心原理解析 引子 一提到索引,大家脑子里马上浮现出B树索引,因为大量的数据库(如MySQL.oracle.PostgreSQL等)都在使用B树.B树索引本质上是对索引字段 ...
- Request 接收参数乱码原理解析三:实例分析
通过前面两篇<Request 接收参数乱码原理解析一:服务器端解码原理>和<Request 接收参数乱码原理解析二:浏览器端编码原理>,了解了服务器和浏览器编码解码的原理,接下 ...
- Android中插件开发篇之----应用换肤原理解析
一.前言 今天又到周末了,感觉时间过的很快呀.又要写blog了.那么今天就来看看应用的换肤原理解析.在之前的一篇博客中我说道了Android中的插件开发篇的基础:类加载器的相关知识.没看过的同学可以转 ...
- Volley 实现原理解析(转)
Volley 实现原理解析 转自:http://blog.csdn.net/fengqiaoyebo2008/article/details/42963915 1. 功能介绍 1.1. Volley ...
- 3D游戏常用技巧Normal Mapping (法线贴图)原理解析——高级篇
1.概述 上一篇博客,3D游戏常用技巧Normal Mapping (法线贴图)原理解析——基础篇,讲了法线贴图的基本概念和使用方法.而法线贴图和一般的纹理贴图一样,都需要进行压缩,也需要生成mipm ...
随机推荐
- gulp构建例子(ubuntu)
1.项目结构和生产之后的目录 2.gulpfile.js // 载入插件 var gulp = require('gulp'), //本地安装gulp所用到的地 sass = require('gul ...
- ETL增量处理总结
1 LOG表 1.1 思路 用log表记录业务库某表yw_tableA发生变化数据的主键.数据进入BI库目标表bi_tableA前,先根据log表记录的主键进行delete. 1.2 设计 1.2.1 ...
- 一款简单易用的.Net 断言测试框架 : Shouldly
GitHub地址:https://github.com/shouldly/shouldly Shouldly的官方文档:http://docs.shouldly-lib.net/ Nuget安装: 在 ...
- 前端要不要学数据结构&算法
我们都知道前端开发工程师更多偏向 DOM 渲染和 DOM 交互操作,随之 Node 的推广前端工程师也可以完成服务端开发.对于服务端开发而言大家都觉得数据结构和算法是基础,非学不可.所以正在进行 No ...
- 【Jmeter】压测mysql数据库中间件mycat
背景 因为博主所负责测试的项目需要数据库有较大的吞吐量,在最近进行了升级,更新了一个数据库中间件 - - mycat.查询了一些资料,了解到这是阿里的一个开源项目,基于mysql,是针对磁盘的读与写, ...
- spark 性能优化
1.内存 spark.storage.memoryFraction:很明显,是指spark缓存的大小,默认比例0.6 spark.shuffle.memoryFraction:管理executor中R ...
- fstat
相关函数:stat, lstat, chmod, chown, readlink, utime 头文件:#include <sys/stat.h> #include <unistd. ...
- Java 里的异常(Exception)详解
作为一位初学者, 本屌也没有能力对异常谈得很深入. 只不过Java里关于Exception的东西实在是很多. 所以这篇文章很长就是了.. 一, 什么是java里的异常 由于java是c\c++ ...
- 玲珑oj 1028 贪心
http://www.ifrog.cc/acm/problem/1028 很有趣的一道题,求从n个数里挑出不同的两个,使得他俩'|','&','^'后的值尽量大,求这个最大的结果. 求最大的异 ...
- jQuery-轮播图(友善滴滚动切换)
线上实例:http://lgy.1zwq.com/slide/ [处理] 这里的图片滚动轮播,做了点小处理:当在第1页状态时,你点击第5页,图片的滚动是一张滑过,而不是从2-3-4-5(这种的多张滚动 ...