一、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