一、ETS

1.概述

ETS是DCB的一部分,它作用于IEEE 802.1Q中转发规则部分的传输选择部分。如图所示

ETS为DCB网络环境中的终端和网桥定义了基于优先级的处理模型以及带宽分配模型。利用ETS提供的这种功能,可以为网络中的不同类型的流量提供不同的服务和带宽。

为了提供这些功能:

1. ETS定义了一些带宽配置参数用于进行带宽配置;

2. 需要提供一种方法和邻居交互配置信息;

3. 支持ETS的设备需要满足一些限制

3.1 至少要支持三种不同的流量类型。最少是三种是因为至少需要支持以下三种类型:使用严格优先级,使用基于优先级的并且使能了PFC的,使用基于优先级的并且关闭了PFC的;

3.2 支持粒度为1%或更精细的带宽配置;

3.3 支持精度为10%的带宽分配;

3.4 支持一种发送选择策略,该策略使得如果一种流量的带宽没有被用完,该流量可以被其它流量使用支持DCBX

2.工作机制

2.1 ETS配置参数

每一个使能了ETS功能的端口都包括以下配置参数

numTrafficClassesSupported:该端口支持的流量类型的数目,最小为3,最大为8.

TCPriorityAssignment(P):对于每一个优先级P,分配给该优先级的流量类型。

TCBandwidth(N):对于每一种流量N,分配给该流量的带宽。

2.2网桥发送选择算法

在网桥的发送选择中,所有网桥都必须支持的选择算法是严格优先级算法,这个算法是网桥的默认算法,其它算法可以由配置进行选择。常见的算法有:

2.2.1严格优先级算法(SP,Strict priority algorithm)

该算法严格按照优先级的顺序来进行选择,先从高优先级队列取出数据来发送,只有当高优先级队列没有数据时才会从低优先级队列取数来发送。

使用该算法时可以给比较关键的业务赋予高优先级从而保证其服务质量。

 2.2.2令牌整形算法 (CBS,Credit-based shaper algorithm)

该算法通过令牌来控制数据的发送,基本思想是发送数据时必须从令牌桶中获取令牌,如果能够获取令牌就能发送,否则就无法发送。而令牌分发者负责往令牌桶中发放令牌,一般对最大令牌数目都有限制,这就限制了一次可以最大发送的数据量。
因此在令牌整形算法中,通过不同的令牌分发方法就可以得到不同的整形效果。

 2.2.3 基于权重的轮询算法(Weighted Round Robin)

WRR(Weighted Round Robin)是一个比较常见的轮循(Round Robin)算法,该算法为每个队列分配了一个权重(weight)。该算法会在各个队列之间进行轮流调度,每个队列的权重决定了调度到该队列时可以发送的数据量。WRR算法可以保证每个队列都能够得到调度,不会出现低优先级队列被饿死的情况。如果出现某一个队列为空,那马上换到下一个队列调度,这样可以使带宽资源可以得到充分的利用。

从该算法的工作过程可以看出,如果某个权重较高的流量类型没有用完自己的带宽,则其带宽就可以被其它流量所使用,因而它是一种保证了最小带宽的共享流量算法。

2.2.4 循环队列(round-robin)

循环队列通过循环服务避免局部队列饥饿。调度器总是顺序地移到下一个有分组要发送的队列(空队列被跳过)。如果每个队列都有分组等待发送,调度顺序和队列顺序匹配;如果一些队列为空,则其它队列被频繁地服务。在极端情况下,如果其它队列都为空,单个队列就可以使用全部链路带宽。当分组进入一个空队列时,该队列在下一个循环中被服务,这样就可以避免队列“饥饿”。  
循环调度的缺点是分组时延难于改进,它不可能为低时延业务分配专用队列。每个队列的服务间隔完全依赖于那段时间内其他队列中有多少分组等待发送以及这些分组的长度,这些变量难以准确预测,所以RR调度容易产生时延抖动。调度器可以通过改变服务顺序(例如采用顺序1,2,3,2,4,2,1,2,…)更频繁地调度某些队列以给这些队列更频繁的传送机会,然而分组大小的随机分布仍然会造成时延抖动问题。

2.3 ETS算法

如果一种流量启用了ETS,则该流量的发送选择就会基于分配给该流量的带宽来进行。启用了ETS时,各种流量会根据其所配置的带宽而获得总带宽中的相应的部分。

ETS算法为各种流量类型提供了带宽分配功能。分配算法允许带宽敏感的以及丢包敏感的流量类型共享网络,同时ETS分配算法也允许使用启用了ETS的流量和使用了SP算法或者使用了CBS算法的低延迟流量共存。ETS算法可以采用很多不同类型的方法来实现带宽分配和共享,比如WRR算法。

对于ETS算法,可用的带宽指的是没有分配给ETS算法和厂商指定算法的流量被服务完后剩余的带宽。ETS算法用于判断何时启用了ETS服务的流量可以发送数据,这是根据可用带宽来进行的。

对于一种启用了ETS的流量,如果下列条件被满足,则ETS发送选择算法会认为该流量有帧可以被发送(这个信息会被返回给发送选择模块):
该流量的队列中有一个到多个帧
运行SP和CBS算法的队列中都没有帧需要被发送了,并且
ETS算法执行的结果是该类流量有帧需要被发送

二、DCBX

1.概述

数据中心桥接交换协议(DCBX)是DCB中的一部分,它适用于DCB的网络环境,被链路的双方用于交换配置信息。DCBX也可用于检测链路双方的配置是否有配置错误。

DCBX利用LLDP(Link Layer Discovery Protocol,链路层发现协议)来完成信息交换工作。DCBX支持在链路双发交换ETS,PFC以及应用的优先级配置信息。对于每种被交换的配置信息,都需要指定:

  • 要交换哪些属性
  • 如何利用这些属性来发现配置错误
  • 如果出现了配置错误该如何处理

设计DCBX协议的目的包括:

  • 发现链路对端的DCB能力
  • 发现链路双方是否存在DCB配置不匹配的错误
  • 配置对端的DCB特性

2.工作机制

2.1 DCBX属性

被交换的DCBX属性分为三类

  • 信息属性。属于该类的属性的交换很简单,它不需要DCBX状态机的参与,仅需要通过LLDP通告给对端即可。
  • 非对称属性
  • 对称属性

2.2 DCBX和LLDP

DCBX利用LLDP来完成信息交换工作。LLDP是单向协议,即它只用于向链路的对端通告本端的配置和管理信息。DCBX交换的配置信息封装在LLDP的Organizationally Specific TLVs(组织定义TLV)中,TLV中的OUI字段采用的是IEEE 802.1组织定义的OUI,即0x0080c2。

DCBX状态机基于LLDP MIB中的DCBX对象。DCBX状态机会改变这些DCBX MIB对象的值从而触发LLDP的发送。DCBX需要运行在点到点链路上,如果一端发现它的一个端口有多个对端端口在运行DCBX(比如总线型拓扑),则它就将忽略收到的所有对端的DCBX TLV,这个状态会一直持续到它检测到它的这个端口只有一个对端端口为止。

DCBX的对端端口指的是正在发送DCBX TLV的LLDP对端端口(由chassis ID和port ID标识)。DCBX发现多个对端端口的条件是:在一个端口上发现了多个对端端口,并且该状态持续的时间超过了所有的对端端口(一个设备可以有多个对端端口)的最长TTL。
DCBX定义了两种属性传输机制:

  • 非对称:指链路两端的配置信息允许不相同
  • 对称:指链路两端的参数信息配置成相同的值

2.2.1非对称型属性交换:

非对称型属性交换可以传输两种类型TLV:

  • Configuration TLV:提供了当前的配置信息以及一个willing比特。willing比特不由状态机使用,它是一个标识信息,用于提示该TLV的发送者是否期望接受远端对它的属性进行配置,如果某个属性的willing比特被设置为1,则该属性可以由远端进行配置,否则不行。
  • Recommendation TLV:向邻居通告一个发送者所建议的远端端口的配置信息。

其状态机如下图所示:

  • 初始情况下,采用本地管理配置参数做为运行参数
  • 如果本机配置成通过邻居通告的配置信息来引导本地配置并且接收到邻居的配置信息,则迁移到RxRecommend状态,该状态下采邻居配置参数来引导本地运行参数。

2.2.2 对称型属性交换:

该类型的属性交换只使用一种TLV类型:

  • Configuration TLV:用于通告本地运行的配置参数信息以及一个willing信息。

其状态机如下图所示:

  • 在该模式下,初始都使用本地配置信息,如果本地配置了willing比特则迁移到使用远端配置的状态。
  • 如果链路的两端只有一端配置了willing比特,则配置了willing比特的一方将使用远端的配置信息作为自己的配置参数,而没有配置willing的一端则使用自己的配置信息。
  • 如果两端都配置了willing比特,则比较MAC地址,MAC地址小的一端将使用本地配置,另一端使用远端配置。

2.2.3 DCBX TLVs:

DCBX定义了4个新的TLV用于传输DCBX相关信息.

2.2.3.1 ETS Configuration TLV

该TLV用于通告本地的配置信息。格式如图所示

  • Willing:willing标志位,值为TRUE时表示期望接收邻居的配置参数来引导本地配置。)
  • CBS:表示设备是否支持CBS(令牌整型)算法。
  • Max TCs:表示支持传输类的最大数量。
  • Priority Assignment Table:提供cos值到传输类的映射表。
  • TC Bandwidth Table:提供每个传输类的带宽分配百分比。
  • TSA Assignment Table:提供每个传输类当前使用的传输选择算法。

Priority Assignment Table如图所示:

该表中中每个优先级占用四个比特,如果4比特的值为0-7则表示该优先级被映射到了该值所指示的流量类型上。其它值是保留值不可用。
TC Bandwidth Table如图所示:

该表中,每个流量类型占用一个字节,每个字节的值表示该类流量类型的流量所分配的带宽百分比。所有8个值相加为100。
TSA Assignment Table如图所示

该表中每种流量类型占用一个字节。每个字节的值表示该流量类型所使用的发送选择算法。

2.2.3.2 ETS Recommendation TLV 

该TLV用于通告邻居本端所建议的ETS配置信息。其格式如图所示:

相应域的含义和ETS Configuration TLV的相同。

2.2.3.3 Priority-based Flow Control Configuration TLV 

该TLV用于用于PFC的配置,格式如下:

  • Willing:willing标志位,1表示期望接收邻居的配置。
  • MBC:MACsec Bypass Capability位。
  • PFC cap:PFC能力,表示有多少个流量类型可以同时支持PFC。
  • PFC Enable:占用1个字节,其中每一位代表一个优先级队列(0~7),如果某个优先级队列使能了PFC,则该位置为1,否则置为0。

2.2.3.4 Application Priority Configuration TLV

该TLV用于通告本地的应用优先级。该TLV主要用于通告邻居本地设备的应用优先级配置,采用的是对称的参数交换类型。TLV的具体内容如下图所示:

  • Application Priority Table:应用优先级表

Application Priority Table的每个表项占用三个字节,格式如下图所示:

Priority为Protocol ID所被分配的优先级。Protocol ID的含义取决于Sel的值,二者关系如下图所示:

------------------------------

转载自:https://blog.csdn.net/goodluckwhh/article/details/11539931?utm_source=blogxgwz0

DCB工作机制解析二(ETS,DCBX)相关推荐

  1. DCB工作机制解析一(PFC)

    随着IT企业的发展,很多企业.政府机构.组织机构都部署有自己的数据中心,用来满足自己的存储.计算等IT需求.在数据中心网络当中,典型的存在着以下两种流量: 存储数据流:要求无丢包: 普通数据流:允许一 ...

  2. DCB工作机制解析三(CN)

    一.概述 CN来自于IEEE802.1Qau,它的目地是为带宽-时延积的量级为5Mbit或更小值的网络域中的长时间存在的流增加拥塞管理功能.这种流常存在于DCB网络,存储网络,计算机集群网络等环境中, ...

  3. wireshark抓组播数据_HCIE学习笔记--组播路由协议PIM-DM工作机制解析

    拓扑 二---PIM--DM扩散 组播源发出的第一份ping包此组播域当中的哪些链路和路由器会接收到?解释对应机制与工作原理 组播路由器接口开启了PIM-DM的都会接收到组播报文. 在PIM-DM模式 ...

  4. DCB学习之二(ETS,DCBX)

    一.ETS 1.概述 ETS是DCB的一部分,它作用于IEEE 802.1Q中转发规则部分的传输选择部分.如图所示 ETS为DCB网络环境中的终端和网桥定义了基于优先级的处理模型以及带宽分配模型.利用 ...

  5. 从源码分析Hystrix工作机制

    作者:vivo互联网服务器团队-Pu Shuai 一.Hystrix解决了什么问题? 在复杂的分布式应用中有着许多的依赖,各个依赖都难免会在某个时刻失败,如果应用不隔离各个依赖,降低外部的风险,那容易 ...

  6. 【Android 异步操作】线程池 ( 线程池作用 | 线程池种类 | 线程池工作机制 | 线程池任务调度源码解析 )

    文章目录 一.线程池作用 二.线程池种类 三.线程池工作机制 四.线程池任务调度源码解析 一.线程池作用 线程池作用 : ① 避免创建线程 : 避免每次使用线程时 , 都需要 创建线程对象 ; ② 统 ...

  7. 腾讯反病毒实验室:深度解析AppContainer工作机制

    深度解析AppContainer Win8开始,Windows引入了新的进程隔离机制AppContainer,MetroAPP以及开启EPM的IE Tab进程都运行在AppContainer隔离环境, ...

  8. Hadoop中NameNode和SecondaryNameNode、NN和2NN工作机制、Fsimage和Edits解析、oiv查看Fsimage、oev查看Edits、CheckPoint时间设置

    文章目录 9.NameNode和SecondaryNameNode 9.1NN和2NN工作机制 9.1.1第一阶段:NameNode启动 9.1.2第二阶段:Secondary NameNode工作 ...

  9. JavaWeb技术内幕二:Java IO工作机制

    IO问题是当今web应用所面临的主要问题之一,因为数据在网络中随处流动,在这个流动过程中都涉及IO问题,并且大部分应用的瓶颈都是IO瓶颈. 本章将从IO的角度出发,介绍IO类库的基本架构,磁盘IO的工 ...

最新文章

  1. IPinfoga查询地理位置
  2. trimmomatic对fastq质控
  3. STAR: ultrafast universal RNA-seq aligner STAR:超快的通用RNA-seq比对器
  4. AJAXA进行分页(2)
  5. 一个项目中既有移动端,同时也有PC端的代码,并且 他们的代码分开写的,那么如何实现在手机跳转手机页面,pc点击跳转pc页面...
  6. 基于容器服务 ACK 发行版打造 CNStack 社区版
  7. Redis 与 list 相关的常用命令
  8. Mysql基础代码(不断完善中)
  9. 必须收藏:20个开发技巧教你开发高性能计算代码
  10. javascript Date对象 之 获取时间
  11. 格式化表单js插件jquery.serializeJSON
  12. 从IBM SCE+落地中国看IDC的转型
  13. Android popupwindow 失去焦点或者点击空白区域时消失的解决方法
  14. 【原生JS】js小数正则
  15. java的scjp考试_Sun认证Java程序员(SCJP)考试
  16. 为什么我在CSDN坚持写了3年多的博客?
  17. 数学建模(5.5)相关系数_斯皮尔曼相关系数
  18. 基于万维易源提供的API接口实现快递单号查询物流信息
  19. yolov3.weight
  20. windows许可证即将过期 win10的解决办法

热门文章

  1. 《被讨厌的勇气》- 要有被讨厌的勇气
  2. xes java to c_5个最优秀的java和c#代码转换工具
  3. 美国中小学停课,20个优质在线学习平台推荐
  4. 我的五大开仓点与五大平仓点 开仓点
  5. [转载]动物伦理,为了人的尊严_习惯累积沉淀_新浪博客
  6. 区块链焦虑症:用卖肉包的理论分析你是不是一定要上区块链的车
  7. FineReport 参数级联查询与树集分组序号
  8. 宫廷心计服务器修复,3月25日停服版本更新公告
  9. RDO(Remote Desktop Organizer)远程桌面工具分享
  10. iOS与安卓的区别 浅谈ios为什么比安卓流畅