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以太网交换芯片原理解析的更多相关文章

  1. 【转帖】影响超 10 亿设备,博通和 Cypress 芯片曝惊天漏洞,苹果、华为、三星等中招

    影响超 10 亿设备,博通和 Cypress 芯片曝惊天漏洞,苹果.华为.三星等中招   https://www.infoq.cn/article/lpNEQGrxZL22gHDPBE2z   26 ...

  2. 主流蓝牙芯片盘点,Nordic/TI/博通哪家强?

    无线通信技术自19世纪中期诞生以来,从使用狼烟.火炬.闪光镜.信号弹等在视距内传输信息,到1838年塞缪尔・莫尔斯发明电报网,再到电报网被电话取代,再到几十年后的1895年马可尼首次从英国怀特岛到30 ...

  3. appium 原理解析(转载雷子老师博客)

    appium 原理解析 原博客地址:https://www.cnblogs.com/leiziv5/p/6427609.html Appium是 c/s模式的appium是基于 webdriver 协 ...

  4. 从零开始实现lmax-Disruptor队列(三)多线程消费者WorkerPool原理解析

    MyDisruptor V3版本介绍 在v2版本的MyDisruptor实现多消费者.消费者组间依赖功能后.按照计划,v3版本的MyDisruptor需要支持多线程消费者的功能. 由于该文属于系列博客 ...

  5. GeoHash原理解析

    GeoHash 核心原理解析       引子 一提到索引,大家脑子里马上浮现出B树索引,因为大量的数据库(如MySQL.oracle.PostgreSQL等)都在使用B树.B树索引本质上是对索引字段 ...

  6. Request 接收参数乱码原理解析三:实例分析

    通过前面两篇<Request 接收参数乱码原理解析一:服务器端解码原理>和<Request 接收参数乱码原理解析二:浏览器端编码原理>,了解了服务器和浏览器编码解码的原理,接下 ...

  7. Android中插件开发篇之----应用换肤原理解析

    一.前言 今天又到周末了,感觉时间过的很快呀.又要写blog了.那么今天就来看看应用的换肤原理解析.在之前的一篇博客中我说道了Android中的插件开发篇的基础:类加载器的相关知识.没看过的同学可以转 ...

  8. Volley 实现原理解析(转)

    Volley 实现原理解析 转自:http://blog.csdn.net/fengqiaoyebo2008/article/details/42963915 1. 功能介绍 1.1. Volley ...

  9. 3D游戏常用技巧Normal Mapping (法线贴图)原理解析——高级篇

    1.概述 上一篇博客,3D游戏常用技巧Normal Mapping (法线贴图)原理解析——基础篇,讲了法线贴图的基本概念和使用方法.而法线贴图和一般的纹理贴图一样,都需要进行压缩,也需要生成mipm ...

随机推荐

  1. scrapy之Pymongo

    用Pymongo保存数据 爬取豆瓣电影top250movie.douban.com/top250的电影数据,并保存在MongoDB中. items.py class DoubanspiderItem( ...

  2. deepin下用命令管理自己的Github仓库

    用命令链接github 初始化 需要用ssh公钥链接到github,注意不能从vim中直接复制 介绍一个命令: xsel < test.txt 将文件中内容直接复制到剪切板中 具体做法 git ...

  3. 简化Kubernetes应用部署工具-Helm

    [编者的话]微服务和容器化给复杂应用部署与管理带来了极大的挑战.Helm是目前Kubernetes服务编排领域的唯一开源子项目,做为Kubernetes应用的一个包管理工具,可理解为Kubernete ...

  4. openstack dpdk

    # ovs-vsctl showeef7cd95-0677-486c-b119-5d6ac8531c56 Manager "ptcp:6640:127.0.0.1" is_conn ...

  5. cglib动态代理(需导入cglib-nodep-2.1_3.jar)

    public interface AnimalInterface { public void cry(); } public class AnimalImpl implements AnimalInt ...

  6. SpringBoot学习(1)

    内容概要: spring data springboot是spring团队基于spring4开发的一个框架. springboot来简化spring应用开发,约定大于配置,去繁从简,just run就 ...

  7. 深入了解JavaScript中的Symbol的使用方法

    这篇文章主要介绍了深入了解JavaScript中的Symbol的使用方法,本文针对ES6版本的JS进行讲解,需要的朋友可以参考下 Symbol 是什么? Symbols 不是图标,也不是指在代码中可以 ...

  8. Angular 4.x 修仙之路

    参考:https://segmentfault.com/a/1190000008754631 一个Angular4的博客教程目录

  9. 利用python 模块读取csv文件信息

    还有一个比较简单的方法 # -*- coding=utf-8 -*- import pandas as pddf = pd.read_csv("20170320094630.csv" ...

  10. Cookie和Session的工作原理及比较

    一.Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现.在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料 ...