博通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 ...
随机推荐
- yum的使用
Yum官网 Yum的缓存 Yum仓库 Yum命令 Yum插件 yum的缓存 通过缓存可以提升我们环境的搭建效率,直接把原来缓存好的安装包数据放到新环境,省去了几个G的下载,甚至,有些时候客户现场不能联 ...
- 编程之美——求1~N的整数中1的个数
为了依次求个位,十位,百位中1的个数,我们可以把这个数字分为三部分,高位数字,当前位数字,低位数字. 如果当前位为0,那么此位为1的数目与高位数字有关 如果当前位为1,那么此位为1的数目与高位和地位都 ...
- [Pytorch]PyTorch Dataloader自定义数据读取
整理一下看到的自定义数据读取的方法,较好的有一下三篇文章, 其实自定义的方法就是把现有数据集的train和test分别用 含有图像路径与label的list返回就好了,所以需要根据数据集随机应变. 所 ...
- 组合数模板 - Lucas
2017-08-10 19:35:32 整理者:pprp 用于计算C(m,n) % p 代码如下: //lucas #include <iostream> using namespace ...
- SpringBoot项目结构介绍
一项目结构介绍 springboot框架本身对项目结构并没有特别的要求,但是按照最佳的项目结构可以帮助我们减少可能遇到的错误问题.结构如下: (1)应用主类SpringbootApplication应 ...
- Mybatis中传参包There is no getter for property named 'XXX' in 'class java.lang.String'
Mybatis中传参包There is no getter for property named 'XXX' in 'class java.lang.String' 一.发现问题 <select ...
- jmeter-负载
主: remote_hosts=10.0.70.35:1099,10.0.70.47:1099 server.rmi.localport=1099 从: remote_hosts=10.0.70.3 ...
- Nginx与PHP(FastCGI)的安装、配置
摘自:http://www.linuxde.net/2012/03/9130.html 一.什么是 FastCGI FastCGI是一个可伸缩地.高速地在HTTP server和动态脚本语言间通信的接 ...
- Android通过soap2访问webservice遇到HTTP request failed, HTTP status: 302的问题
笔者用C#在服务器端写了一个Webservice,然后再Android客户端通过soap2调用webservice的函数,遇到了HTTP request failed, HTTP status: 30 ...
- Angular for TypeScript 语法快速指南 (基于2.0.0版本)
引导 import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; platformBrowserDynami ...