博通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 ...
随机推荐
- 【Network architecture】Rethinking the Inception Architecture for Computer Vision(inception-v3)论文解析
目录 0. paper link 1. Overview 2. Four General Design Principles 3. Factorizing Convolutions with Larg ...
- Python学习札记(六) Basic3 List和Tuple
参考:List Tuple Note List List是Python中一个很吊的数据结构,类似C语言的数组. 1.定义:listname = [variable 1, v2, v3, ..., vn ...
- Codeforces Round #365 (Div. 2) E - Mishka and Divisors(转化成01-背包)
http://codeforces.com/contest/703/problem/E 题意: 给出n个数和一个k,计算出至少要多少个数相乘才是k的倍数. 思路:这道题目参考了杭电大神的代码http: ...
- nethogs 按进程实时统计网络带宽利用率的工具
安装 sudo apt-get install nethogs 使用 sudo nethogs
- canvas drawimage绘制图像出错(默认canvas300*150)解决办法
今天在开发中,再一次踩了以前踩过的坑,写完程序在这里写一下,分享给大家也避免再次遇坑. //默认的canvas <canvas id ="canvas"></ca ...
- 安装 python 数据分析插件 pandas
一上午试验了各种方法,发现利用pycharm是最快的.可以抛弃版本,命令和兼容问题的烦恼.纯粹傻瓜式 方法是 pycharm, 直接在settings里面,搜索pandas,添加即可,他会把所有之前需 ...
- IP地址分类、私有地址、子网、子网掩码
IP地址分类介绍 这里讨论IPv4,IP地址分成了A类.B类.C类.C类.E类,如下图所示: 解释: A类以0开头,网络地址有7位,主机地址有24位,举例:A类地址:0 10000000 000000 ...
- sina sae搭建wordpress数据库配置
sina app engine上搭建wordpress,使用快速安装向导会无法连接数据库. 可以在本地修改好 wp-config.php再提交. <?php /** * WordPress 基础 ...
- 1-23-shell脚本之-if流程控制语句和for循环语句的使用
大纲: 1.逻辑判断 2.if流程控制语句 3.for循环控制语句 ---------------------------------------------- 在开始之前,先了解一下逻辑判断符号 ...
- git推送文件到远程仓库
远程仓库未创建 git init 初始化一只本地仓库 把你的项目扔进去(或者基于初始化仓库建立项目vue init webpack demoxxxx) git status //查看状态 git ad ...