IEEE Std 802.1Q——8.6.6-8.6.9

8.6.6 排队帧

转发过程应将每个接收到的帧排队到每个潜在的传输端口(8.6.1,8.6.3,8.6.4)。
注1—转发过程建模为接收帧作为数据指示的参数,并通过提供数据请求的参数进行传输。排队等待传输的帧等于将数据请求的参数放在出站队列上。
转发进程为排队的帧提供存储,等待提交这些帧以便传输的机会。在同一桥接口接收的框架顺序应保留以下情况:
a) 具有给定 VID、优先级、流散列、目的地址和源地址组合的单播帧。
b) 具有给定 VID、优先级、流散列和目的地址的多播帧。
哈希流只适用于支持流过滤的桥(44.2)。
转发过程为给定的桥接端口提供一个或多个队列,每个队列对应一个不同的流量类。每个帧使用端口的流量类表映射到流量类。用于这种映射的优先级值确定如下:
c)如果不支持流门(8.6.5.4) ,则使用帧的优先级。
d)如果支持流门,并且分配给帧的 IPV 规范为空值,则使用帧的优先级。
e)如果支持流门,并且分配给帧的 IPV 规格为 IPV,则使用此 IPV。
流量类表可以被管理。表8-5显示了在不支持基于信用的流量整形传输选择算法(8.6.8.2)的实现中实现的类数量的推荐映射。在支持基于信用的流量整形传输选择算法的实现中,对流量类映射的优先级的要求在34.5中定义。最多可以支持8个流量类,允许每个优先级有单独的队列。
在这里插入图片描述

注2—不同的端口可以使用不同数量的流量等级。具有支持单一传输优先级的媒体访问方法(如以太网)的端口可以支持多个流量类别。
注3—在这种情况下,队列不一定是单个 FIFO 数据结构。队列是在给定的桥接端口上等待传输的给定流量类别的所有帧的记录。传输选择算法(8.6.8)确定哪个流量类别,在那些具有可传输帧的类别中,提供下一个传输帧。
允许使用各种队列结构,例如单个 FIFO 或一组 FIFO,每个 VLAN 或优先级都有一个。
在拥塞感知网桥(第30条)中,在网桥端口排队传输帧的行为可能导致转发过程生成 CNM。CNM 被重新注入到转发过程(8.6.1)中,就好像它已经在那个桥接端口上被接收了一样。
如果支持 PSFP (8.6.5.2) ,并且与传递帧的流过滤器相关的 IPV 是空值以外的任何值,那么该 IPV 将用于通过8.6.6中指定的流量分类表来确定帧的流量分类,代替帧的优先级。在所有其他方面,8.6.6中指定的排队操作保持不变。
IPV 仅用于确定与帧关联的流量类,从而选择出站队列; 对于所有其他用途,使用接收的优先级。

8.6.7 队列管理

在端口上排队等待传输的帧应从该队列中删除:
a) 在传输数据请求之后。即使已知传输失败,也不得再尝试在该端口上传输帧。
b) 如果有必要确保在随后传送该帧时不会超过最大网桥传输延迟(6.5.6)。
c) 如果传输端口不再转发该帧(8.4,8.6.1)。在转发状态过渡之后进入队列的帧(例如,来自 Down MP 的 CFM 帧,如22.1、图22-4和图22-7所述)不会被丢弃。
注意: 在转发状态转换为转发状态时,CFM 帧可能会被排除,但不会从队列中删除(参见22.1.3)。
该帧可以从队列中删除,并且随后不发送:
d) 如果该帧的缓冲时间已经超过了保证的时间
e) 通过一个队列管理算法,该算法试图通过确定性或概率地管理基于当前和过去队列深度的队列深度来提高所提供的服务质量。
从任何特定端口的队列中删除帧不会影响该帧在任何其他端口上传输的排队。
在所有其他条件相同的情况下,删除具有drop_eligible集的帧的概率不应小于删除具有drop_eligible False的帧的几率。如果实现了队列管理算法,它应该优先丢弃drop_eligible为True的帧。如果网桥支持在其任何端口上对VLAN标签(6.9.3)的PCP字段中的drop_eligable进行编码或解码,则它应在其每个端口上实现布尔参数Require drop-encoding,默认值为FALSE。如果Require Drop Encoding为True,并且网桥端口无法使用Drop_eligible对特定优先级进行编码,则应丢弃使用这些优先级和Drop_eligsible True排队的帧,并且不进行传输。

8.6.8 传输选择

对于每个端口,根据该端口支持的流量类别以及该端口上相应队列支持的传输选择算法的操作,选择帧进行传输。对于给定的端口和流量类别,从相应队列中选择帧进行发送,当且仅当:
a) 该队列支持的传输选择算法的操作确定存在可用于传输的帧;以及
b)对于与端口支持的业务类别的数值较高的值相对应的每个队列,该队列支持的传输选择算法的操作确定没有可用于传输的帧。
在支持PFC的网桥或站的端口中,如果优先级为n的帧被暂停,即如果priority_paused[n]在该端口上为TRUE(见36.1.3.2),则该帧不可用于传输。当传输选择在链路聚合之上运行时,如果优先级为n的帧在该帧要被分发到的物理端口上被暂停,则该帧不可用于传输。
注1——两个或多个优先级可以组合在一个队列中。在这种情况下,如果队列中的一个或多个优先级被暂停,则该队列中不属于暂停优先级的帧可能不被调度用于传输。
注2——在同一队列中混合PFC和非PFC优先级会导致非PFC流量暂停,从而导致拥塞扩展,因此不建议使用。
在支持帧抢占的网桥或站的端口中,如果优先级为n的帧在帧抢占状态表(6.7.2)中被标识为可抢占并且holdRequest对象(12.30.1.5)被设置为值hold,或者先前可抢占帧的传输尚未完成,因为它已经被中断以允许快速帧的传输。
8.6.8.1中定义的严格优先级传输选择算法应得到所有网桥的支持,作为选择传输帧的默认算法。除了严格优先级算法外,还可以支持8.6.8.2中定义的基于信用的整形器传输选择算法、8.6.8.3中定义的ETS算法和8.6.8.5中定义的ATS传输选择算法。只要满足8.6.6的要求,可以支持通过管理手段选择的进一步传输选择算法作为实施选项。
给定端口的传输选择算法表为端口支持的每个业务类别分配传输选择算法,该算法将用于从相应队列中选择要传输的帧。可以管理传输选择算法表,并允许识别供应商特定的传输选择算法。传输选择算法在传输选择算法表中通过表8-6中定义的整数标识符来识别。
34.5中规定了与基于信用的整形器传输选择算法一起使用的传输选择算法表的推荐配置。当支持调度流量的增强时,如8.6.8.4中所述,确定帧是否可用于传输的附加要求适用。
在这里插入图片描述

8.6.8.1严格优先级算法

对于支持严格优先级传输选择的给定队列,如果该队列包含一个或多个帧,则算法确定存在可用于传输的帧。从队列中选择帧进行传输的顺序应保持8.6.6中规定的顺序要求。

8.6.8.2基于信用的整形器算法

对于支持基于信用的整形器传输选择的给定队列,如果以下条件都成立,则算法确定帧可用于传输:
a) 队列包含一个或多个帧。
b) 队列的transmitAllowed信号为TRUE。
从队列中选择帧进行传输的顺序应保持8.6.6中规定的顺序要求。
以下外部参数与支持基于信用的整形器算法的操作的每个队列相关联:
c) portTransmitRate。支持通过端口进行传输的底层MAC服务所提供的传输速率,以比特每秒为单位。该参数的值由MAC的操作来确定。
d) idleSlope。当信用值增加时(即,当传输为FALSE且队列的传输门打开[8.6.8.4]时),信用的变化率,以比特每秒为单位。idleSlope的值永远不能超过portTransmitRate。如果不支持计划流量的增强功能(8.6.8.4),或者GateEnabled为FALSE(8.6.9.4.14),则给定队列的idleSlope值等于该队列的operIdleSlope(N)参数值,如34.3中所定义。如果支持计划流量的增强功能(8.6.8.4),并且GateEnabled为TRUE(8.6.9.4.14),则:

其中OperCycleTime如8.6.9.4.19中所定义,GateOpenTime等于选通周期期间队列的选通状态为Open的总时间。
注1——启用计划交通运行时,仅在闸门打开时才累积信用;因此,idleSlope的有效数据速率被增加以反映与队列相关联的传输门的占空比;但是,队列的operIdleSlope(N)的值保持不变。
以下内部参数与支持基于信用的整形器算法的每个队列相关联:
e) 发送。对于来自队列的帧传输的持续时间,取TRUE值;当队列中的任何帧传输完成时,返回FALSE。如果将基于信用的整形器算法与帧抢占(6.7.2)结合使用,则当MAC实际发送帧时,发送仅取值TRUE。如果帧传输被延迟或中断(例如,该帧是可抢占帧,并且其传输被中断以允许从不同队列传输快速帧,或者该帧是快速帧,并且由于正在传输可抢占帧而在传输开始之前存在延迟),则传输取值FALSE,直到该帧的传输开始或恢复。在作为帧抢占的结果的任何开销的传输期间,传输也取值FALSE;即当发生抢占时添加到可抢占帧的任何附加帧开销。
注2——其结果是,与抢占相关的任何开销都不会来自为基于信用的整形器保留的带宽。
f) 信用。队列当前可用的传输信用(以位为单位)。如果在任何时候,队列中没有帧,传输参数为FALSE,信用为正,队列的传输门打开(8.6.8.4),并且该队列中没有传输正在进行但已中断的可抢占帧,则信用设置为零。
注3-只有在将基于信用的整形器算法与抢占相结合使用的情况下,才会出现传输参数为FALSE且可抢占帧或部分帧正在MAC中等待传输的情况。
g) sendslope。当信用值降低时(即,当发送为TRUE时),信用的变化率,以比特每秒为单位。sendSlope的值定义如下:

h) transmitAllowed。当信用参数为零或正时,取TRUE值;当信用参数为负数时为FALSE。
注4——信用值自然受到算法操作参数的约束,也受到使用该算法的任何更高优先级队列的操作的约束。信用可以达到的最低值取决于sendSlope和将从队列传输的最大帧。这个最大的帧大小是使用队列传输的业务类型的结果,而不是由算法或管理施加的限制。
可以在信用中累积的最高值取决于idleSlope和当队列不是空的并且有其他流量通过端口传输时算法可能必须等待的时间长度;对于任何给定的队列,该时间长度是有界的,如附录L中所讨论的,该附录还说明了算法如何在不同条件下运行,以及其运行如何影响SR流量可能经历的最大延迟。
注5——为了使基于信用的整形器算法按预期运行,支持该算法的所有流量类别必须在数字上高于支持8.6.8.1中定义的严格优先级算法的任何流量类别。34.5中定义了优先级到业务类别的映射,以及支持特定传输选择算法的业务类别的选择。
使用基于信用的整形器算法的业务类别不应使用PFC,并且应忽略PFC启用位向量中与此类类别相关的位的设置(见D.2.10.6)

8.6.8.3 ETS算法

如果为某个流量类别启用了ETS,则根据该流量类别的带宽分配进行传输选择。带宽分布在支持ETS算法的ETS流量类别之间,以便每个流量类别按其TC带宽的比例分配可用带宽(见第37条)。
对于支持ETS的给定队列,如果以下条件都成立,则算法确定有一个帧可用于传输:a)队列包含一个或多个帧。
b) ETS算法(37.3)确定应当从队列发送帧。
c) 对于运行严格优先级或基于信用的整形器算法的任何队列,都没有可用于传输的帧。
从队列中选择帧进行传输的顺序应保持8.6.6中规定的顺序要求。

8.6.8.4计划流量的增强

网桥或终端站可以支持增强功能,该增强功能允许相对于已知的时间尺度来调度来自每个队列的传输。为了实现这一点,传输门与每个队列相关联;传输门的状态决定是否可以选择排队的帧进行传输(见图8-16)。对于给定的队列,传输门可以处于两种状态之一:
a) 打开:根据与队列相关联的传输选择算法的定义,选择排队的帧进行传输。
b) 关闭:未选择排队的帧进行传输。
在这里插入图片描述

与每个端口相关联的闸门控制列表包含闸门操作的有序列表。每个门操作改变与每个端口的业务类别队列相关联的门的传输门状态,并允许调度相关联的控制操作。在不支持计划流量增强的实现中,假设所有门都永久处于打开状态。表8-7确定了闸门操作类型、它们的参数以及它们的执行所产生的操作。8.6.9中规定了控制闸门控制列表执行的状态机及其变量和程序。
在这里插入图片描述releaseAdvance参数允许发布命令的时间根据特定实现的限制而变化。它的值应该小于最小帧大小,这样释放就不会太早,也不会干扰最后一个快帧的传输。
除了传输选择算法执行的其他检查外,如果传输门处于关闭状态,或者如果没有足够的时间来传输整个帧,加上12.4.2.2中规定的与媒体相关的开销,则业务类队列上的帧不可用于传输[如8.6.8中测试(a)和(b)所需],在与该队列相关联的下一个闸门关闭事件(3.99)之前(图8-17)。
注1——例如,在IEEE 802.3媒体的情况下,门关闭事件之前的媒体相关开销包括来自不同业务类别的潜在后续帧的前导码。
如果实现检测到来自给定队列的帧在该队列的门关闭事件发生时仍在由MAC发送,则每个流量类计数器TransmissionOverrun(12.29.1.1.2)将递增。
注2——帧大小以及传输所需的时间长度未知可能是有原因的。例如,在支持帧抢占的情况下,并且在给定帧的传输完成之前,无法提前告知给定帧将被抢占多少次。期望的是,这种业务的调度被设计为适应预期的传输模式,而不超过相关业务类别的下一个门关闭事件。
在这里插入图片描述

注3——假设实施可以根据闸门事件序列确定下一次闸门关闭事件发生的时间。在正常情况下,这可以通过检查操作控制列表(8.6.9.4.18)中的闸门操作顺序和相关变量来实现。然而,当即将安装新配置时,有必要检查操作控制列表和管理控制列表(8.6.9.4.2)的内容以及相关变量,以确定下一次闸门关闭事件的时间,因为新配置的门控周期可能在大小和相位上与旧周期不同。
每个业务类队列queueMaxSDU参数定义每个队列的最大服务数据单元大小;超过queueMaxSDU的帧被丢弃【6.5.2中的b8项】。每个队列的queueMaxSDU值可由管理配置(12.29);其默认值是帧要中继到的LAN上所采用的MAC过程所支持的最大SDU大小[6.5.2中的b3)项]。
注3——PFC的使用可能会干扰业务调度,因为PFC是由更高层实体传输的(见第36条)。
为了使端站支持帧的调度传输,它的行为必须与它所连接的网桥中采用的转发和排队机制的操作兼容。实际上,对端站的要求是其传输选择要像支持调度业务的网桥的单个出站端口一样操作。对于接收预定业务的端站支持没有特别的要求;仅用于调度业务的传输。

8.6.8.5 ATS传输选择算法

对于支持ATS传输选择的给定队列,如果分配的合格时间(8.6.5.6、8.6.11.3.2)早于或在当前时间,则帧有资格传输。
当前时间由传输选择时钟确定,传输选择时钟是特定于实现的本地系统时钟功能。
帧是按照分配的合格时间的升序选择进行传输的。具有相同指定合格时间的帧的传输选择应保持8.6.6中规定的订购要求。
注:在合格时间不相同的帧的情况下,由于ATS调度器状态机(8.6.11)的操作,自动满足8.6.6中的订购要求,该状态机以不递减的顺序分配合格时间。

8.6.9调度交通状态机

端口闸门控制列表(8.6.8.4)中闸门操作的执行由三个状态机控制:
a)循环定时器状态机(8.6.9.1)
b)列表执行状态机(8.6.9.2)
c)列表配置状态机(8.6.9.3)
每个状态机的一个实例为每个支持调度流量增强的端口实例化。
循环定时器状态机启动选通控制列表的执行,并确保为端口定义的选通循环时间保持不变。
列表执行状态机按顺序执行闸门控制列表中的闸门操作,并在每次操作之间建立适当的时间延迟。
列表配置状态机管理更新当前活动计划的过程,在执行更新过程时中断其他两个状态机的操作,并在安装新计划后重新启动它们。
附录E中规定了状态机符号。
状态机的概述,显示了它们的关系和它们使用的变量,如图8-18所示。
在这里插入图片描述

8.6.9.1循环定时器状态机

循环定时器状态机器应实现图8-19中状态图和8.6.9.4中附带定义所规定的功能。
在这里插入图片描述

注1—由于PTP时间刻度的原点是1970年1月1日00:00:00 TAI,因此周期起始时间将大于1.3 1018 纳秒。如果在计算N时没有保持足够的精度,则CycleStartTime将不是OperCycleTime的整数倍,这可能导致不同网桥上端口的循环错位。
注2-如果所有网桥和终端站的AdminBaseTime设置为过去相同的时间,则OperBaseTime始终在过去,并且所有周期开始同步。当您可以在启动使用计划的应用程序之前启动计划时,过去使用AdminBaseTime是合适的。将来使用AdminBaseTime是为了在将来的某个时间将所有网桥和端站中当前运行的时间表更改为新的时间表。当必须在不停止应用程序的情况下更改计划时,将来使用AdminBaseTime是合适的。

8.6.9.2 列表执行状态机

列表执行状态机应实现图8-20中状态图和8.6.9.2.1、8.6.9.2.2和8.6.9.4中附带定义所规定的功能。
在这里插入图片描述

8.6.9.2.1执行操作()

ExecuteOperation()过程负责从OperControlList中获取下一个门操作以及与之相关的任何参数,并根据已获取的门操作执行操作。ListPointer变量(8.6.9.4.15)的值用作OperControlList的索引。该程序根据操作名称(表8-7)对操作进行处理,如下所示:
a) 如果操作名称为SetGateStates,则与该操作相关联的GateState参数值被分配给OperGateStates变量(8.6.9.4.21),与该操作关联的TimeInterval参数值被指定给TimeInterval变量(8.6.9.423)。如果与该操作相关联的TimeInterval参数值为0,TimeInterval变量被赋予值1。
b) 如果操作名称无法识别,则ListPointer变量(8.6.9.4.15)被分配OperControlListLength变量(8.6.9.422)的值,TimeInterval变量(8.6.9.4 23)被分配值0。
c) 如果没有与操作关联的TimeInterval参数,则会为TimeInterval变量指定值0。

8.6.9.2.2设置门状态()

该程序根据操作网关状态变量(8.6.9.4.21)的值设置每个端口队列的门状态。
注:如果OperGateStates值与以前的门状态不同,则SetGateStates()过程会导致发生门打开和/或门关闭事件(3.99,3.100)。在给定队列上,任何门打开事件和随后的门关闭事件之间的最大时间间隔可能小于queueMaxSDU的值。在这种情况下,太长而不能传输但比queueMaxSDU短的帧可以在该队列上排队。此类帧永远不会被传输,但最终会被丢弃,因为它们超过了最大帧寿命(6.5.2,6.5.6)。还应注意的是,网桥可以丢弃永远无法传输的帧[6.5.2中的b8项]。

8.6.9.3列表配置状态机

SetConfigChangeTime()过程确定将周期配置变量的管理值复制到操作变量的时间。该程序根据以下规则,基于AdminBaseTime(8.6.9.4.1)和AdminCycleTime(8.6.9.4.3)的值,将ConfigChangeTime变量(8.6.9.4.9)设置为开始时间:
a) 如果:AdminBaseTime>=CurrentTime(8.6.9.4.10)(即AdminBaseTime指定当前时间或未来时间)然后:ConfigChangeTime=AdminBaseTime
b) 如果:(AdminBaseTime<CurrentTime)和(GateEnabled=FALSE)(即,AdminBaseTime指定过去的时间,并且当前计划已停止)那么:ConfigChangeTime=(AdminBaseTime+NAdminCycleTime)其中N是最小整数其中关系ConfigChangeTime>=CurrentTime将为TRUE。
c) 如果:(AdminBaseTime<CurrentTime)和(GateEnabled=TRUE)(即,AdminBaseTime指定过去的时间,并且当前计划正在运行),则:增量ConfigChangeError计数器(12.29.1)ConfigChangeTime=(AdminBaseTime+N
AdminCycleTime),其中N是ConfigChangeTime>=CurrentTime关系为TRUE的最小整数。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值