流量控制指导书.doc_第1页
流量控制指导书.doc_第2页
流量控制指导书.doc_第3页
流量控制指导书.doc_第4页
流量控制指导书.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

资料编码产品名称使用对象产品版本编写部门资料版本交换机流量控制指导书拟 制:日 期:审 核:日 期:批 准:日 期:东 土 科 技 股 份 有 限 公 司版权所有 侵权必究修 订 记 录日 期修订版本作 者描 述2008.10.10V1.0任富强目 录端到端流量控制4半双工网络的后退压力4全双工网络中的显式流量控制6MAC控制7MAC控制结构7MAC控制帧格式9PAUSE功能11PAUSE功能不解决下列问题:11PAUSE操作概述12PAUSE帧的语义121. 目的地址122. 源地址133. 类型域144. MAC控制操作码和参数14PAUSE功能的实现15交换机流量控制指导书端到端流量控制可靠的传输协议常常提供端到端的流量控制。也就是说,这些协议保证数据发送在接收方没有足够资源(如缓冲区)处理数据时不再继续进行。然而,这只保证数据最终接收者的资源是可用的,站间的协议不能保证在每个中间的交换机或路由器有足够的可用资源用来接收和处理数据源。因此端到端的流量控制无法保证帧不被网络互连设备丢失(由于缓冲内存不足)。链路缓冲区溢出问题必须在链路层解决,端到端的流量控制不能解决这个问题。半双工网络的后退压力当交换机端口连接到共享式LAN(半双工网络)时上,那么就可能通过改变MAC算法的行为,抢在将要到来的数据之前采取某种动作,来阻止发送者发送它们的数据。这就称为后退压力(back pressure)。在CSMA/CDLAN中,有两种方法可用来防止交换机的输入缓冲区溢出:1) 强行与将要到达的帧发生冲突。表面上看,这是一个合理的策略,冲突将使发送站重新传送该帧。这确实能像设想的那样防止缓冲区溢出,但不幸的是,存在一些不利影响: 发送站可能阻塞太多,导致系统实际吞吐量要比可用吞吐量低(即,在信道上有不必要的空闲时间)。这是因为冲突使站产生指数级增长的后退时间。站最初选择时间的范围是0到1个时隙,但是在随后的冲突中,这个时间区间将变为01023个时隙。在这段较长的时间里,交换机也同时把缓冲的数据转移到输出端口上,因此交换机的输入缓冲区很可能已经可用了。即使队列被清空了信道也将一直空闲,直到后退记时器超时。完全因为后退压力算法的问题而浪费带宽是很荒唐的。 如果交换机输入缓冲区持续拥塞,站中的待发帧可能要经历连续16次的冲突与重发。如果16次发送都不成功,则按照MAC算法,站将丢弃该帧,并把该帧作为错误向站管理程序报告。对于高层协议而言,这与交换机丢失帧是一样的。这种情况和前面讨论的情况有一样的超时过长与性能降低问题,只不过是发生在持续拥塞的条件下。 管理计数器与统计资料除了表明有“过多的冲突错误”外,还将显示很高的冲突次数。网络管理人员会认为该网络出现了某些严重的错误。“正常的”以太网不会有极高的冲突率或过多的冲突错误。后一种情况特别表明了网络系统出现了问题,需要重新进行配置。2) 使信道看起来处于忙状态。这种方法使用“拖延”策略而不是以太网MAC的冲突后退策略。只要站发现信道忙(载波侦听判断),它将延迟传输。然而,它不增加后退延迟时间,而且该帧保留在队首,并且不管拖延的时间有多长,该帧都不会被丢弃。这种方法比强迫冲突法要优越。让共享式LAN接入站的载波侦听作出“信道忙”判断是比较容易的;只要把构造好的数据比特串放在连接交换机和站的以太网上就可以了。最简单的方法是,在交换机遭遇拥塞而想要阻塞供应负载时,生成一段前导码,把它放到需要的输入端口上。这段前导码的结尾绝对不能是帧起始定界符,这保证接收站不会把它解释为一个真正的帧。上述方法可以在任何必要的时候使用。这将完全消除强迫冲突并且没有严重的不利影响。唯一的问题是如果这段前导码的发送时间超过20ms,标准的10Mb/s收发器会作出“过长发送控制”(jabber control)的判断(使它们的传输功能失效)。而在100Mb/s和1000Mb/s系统中,就完全不会出现这样的问题.当交换机的每个端口都只有一个站连接时(微分段),使用伪载波信号(False Carrier Sense)尤为合适。在这种情况下,输入缓冲区拥塞的唯一原因是,站发送过多的数据,使交换机来不及把它们转发到输出端口。伪载波信号算法将很好地阻塞这个站。当伪载波去掉之后,站会从队首的帧开始发送。即使在拥塞情况下,也不会有冲突与后退。当有两个以上的站连接到交换机端口(共享式LAN)时,会有一点儿不同。当拥塞发生时,站断定有载波信号,所有站将停止传送。当拥塞解除时,载波信号消失。在这时刻,可能有多个站有帧要发送。这些站间将出现冲突,起码是在第一次传送时将出现。然而,这正是以太网所擅长的。各个站将使用恰当的冲突发现及后退方法,解决它们的以太网拥塞问题(缓冲区拥塞已经通过后退压力算法解决)。因此,虽然伪载波侦听算法可能间接导致冲突的发生,但是这些冲突是正常的并且可以被适当地解决。类似的后退压力方法,可以用在使用MAC算法而不是CSMA/CD算法的共享式LAN中。例如,在令牌传输网络中,交换机可以“把持令牌”一段时间,以便阻塞到来的帧(受令牌传输协议自身的时间限制)。全双工网络中的显式流量控制在上面讨论的后退压力方法是半双工LAN中显式流量控制的一种形式。各个站停止帧的发送并停止向交换机缓冲区中填充数据,但是它们不知道正是交换机执行MAC算法达到这样的目的。只要站能够知道这一点,它只是简单地遵守正常的网络访问规则就可以了,就可以在没有对站显式阻塞情况下,减轻交换机负载。在全双工以太网中,无论是伪载波侦听,还是强迫冲突算法都不能工作。全双工以太网接口不检测冲突,并且忽略可延迟传送的载波侦听。全双工网络需要显式的流量控制机制,使交换机能够阻塞处于拥塞状态的站。为了实现这个目标,开发了为全双工以太网流量控制的标准算法MAC控制IEEE802.3x任务组没有选择去定义一个全双工以太网的显式流量控制协议(那太简单了!),而是规定了一个控制以太网MAC(MAC控制)的更通用的体系结构框架。在这个结构框架中,全双工流量控制是定义的第一个操作(目前是仅有的一个操作)。将来还要定义以下内容: 显式流量控制到半双工网络的扩充。 其他全双工流量控制机制(除了随后简单介绍的PAUSE功能)的规范。 其他功能(除流量控制以外)的定义与规范。虽然目前还没有开发这种MAC控制协议的标准扩充,但体系结构规范可使这些扩充易于进行。在以太网中,MAC控制是可选功能。把它作为可选的,是为了避免新版规范与过去存在的以太网兼容设备不兼容。很明显,在高速、全双工交换网络中,使用流量控制有非常大的好处,但是实现者和用户需要综合考虑性能和价格。实现MAC控制协议(特别是用于全双工流量控制的PAUSE功能)的成本很低(它可以用硬件在以太网控制器的内部芯片中实现)。因此,大多数全双工以太网产品供应商将增加这项功能,特别是千兆比特数据速率的以太网产品。MAC控制结构图1-2给出了MAC控制的层次结构。MAC控制是数据链路层的一个子层(sub layer)。它是介于传统以太网MAC层和MAC客户之间的可选功能。客户可以是网络层协议(如IP)或数据链路层内部实现转发功能的网桥(交换机)。如果MAC的客户不知道或不关心MAC控制提供的功能,则这个子层就“消失”了;就像这个MAC控制子层不存在一样,正常的发送和接收数据流会经过MAC与MAC控制子层的客户交互。对MAC控制敏感的客户(如需要防止缓冲区溢出的交换机),可以利用这个子层来控制底层以太网MAC的操作。特别是,它可以请求全双工链路另一端的MAC停止进一步传送数据,因而防止将要发生的溢出。图1-2 MAC控制在体系结构中的位置一旦对MAC控制敏感客户发出了请求,MAC控制可以产生控制帧(control frame),这些帧被发送到底层使用标准MAC的以太网上,同样,以太网MAC将接收MAC控制帧(由其他站MAC控制子层产生),并把它们提交到MAC控制子层中的相应模块,如图1-3所示。因此在以太网上普通的MAC客户数据帧中将会夹杂着一些MAC控制帧。图1-3 客户帧和控制帧在MAC控制出现以前,在以太网上传送的每一个帧都是应高层协议或应用的请求而产生的,并且每个数据帧都携带了与该协议或应用相关的数据。MAC控制引出了一个概念,即帧是在数据链路层自身内部产生和接收的(即信源和信宿都在数据链路层内,sourced/sunk)。这个概念在许多其他MAC协议中都存在,如IEEE802.5令牌环和FDDI,但对以太网来说是新的。MAC控制帧格式MAC控制帧是正规、合法的以太网帧,并且使用标准以太网MAC算法传送。除了类型域标识符之外,MAC控制帧在网络上发送或接收与其他帧没有什么区别。所有MAC控制帧的长度都恰好是以太网帧的最小长度64字节,不包括前导码和帧起始定界符。MAC帧格式如图1-4所示。MAC控制帧是通过唯一的类型域标识符(0x8808)标识出的。这个类型域专门保留用于以太网MAC控制。在控制帧的数据域内,前两个字节标识了MAC控制的操作代码,即帧请求的控制功能。目前只定义了一种操作代码,即随后讨论的全双工中的PAUSE操作。它的操作代码是0x0001。操作代码后面的域是该操作所需的参数。如果这些参数不能使用全部的44字节,则帧中其余的位将以0填充。图1:MAC控制帧格式PAUSE功能PAUSE功能用来在全双工以太网链路上实现流量控制。目前该操作只工作于单个的全双工链路。也就是说,它不能用于共享式(半双工)LAN,也不能用于需要跨越交换机的链路。可能用它来控制下列设备之间的数据帧流: 一对端站(简单的两站网络)。 一个交换机和一个端站。 交换机到交换机链路。在交换机或站中增加PAUSE功能,是为了当瞬时过载导致缓冲区溢出时防止不必要的帧丢弃。假设一个设备被设计用来处理网络上恒稳状态的数据传输,并允许随时间变化有一定数量的过载。PAUSE功能可使这样的设备在负载增长暂时超过其设计水平时,不会发生丢帧现象。该设备通过向全双工链路的另一端发送PAUSE帧,来防止自己的内部缓冲区溢出。而另一端设备在接收到PAUSE帧后,就停止发送数据帧。这将使第一个设备有时间来减少自己的缓冲拥塞:它可以处理掉缓冲队列中发给自己的帧(站操作),或者把帧转发到其他的端口(交换机操作)。PAUSE功能不解决下列问题: 稳定状态的网络拥塞。PAUSE协议的设计目标是在缓冲区溢出时通过减少到来的数据量,缓和瞬时过载情况。如果持续(稳定状态下)的流量超过了设备的设计能力,则这是一个配置问题,而不是流量控制问题。PAUSE功能不能解决持续性过载。 提供端到端流量控制。PAUSE操作只定义在单全双工链路上。它不具有端到端的流量控制能力,也不能协调在多个链路上的操作。 提供比简单“停-启”更复杂的机制。特别是,它不直接提供基于信任的策略、基于速率的流量控制等等。这些功能可能在以后提供。PAUSE操作概述PAUSE操作实现了一种简单的“停-启”形式的流量控制。如果某个设备(站或交换机)想阻止帧到来,它可以发送一个带有参数的PAUSE帧,该参数指明了全双工中的另一方在开始继续发送数据前需要等待的时间。当另一个站接收到PAUSE帧后,将在指定的时间内停止发送数据。当这个时间超时后,该站将从暂停的位置继续发送帧。PAUSE帧能禁止发送数据帧,但它不影响MAC控制帧的发送(例如,从另一个方向到来的PAUSE帧)。已发送了PAUSE指令的站,可以再发送一个时间参数为0的PAUSE帧取消剩余的暂停时间。即新收到的PAUSE帧将覆盖掉当前执行的PAUSE操作。类似地,该站也可以在前一个PAUSE时间还未结束时,发出另一个包含非零时间参数的帧延长暂停时间。因为PAUSE操作使用标准的以太网MAC,所以不能保证接收者一定能收到帧。PAUSE帧也可能出问题,而使接收者可能不知道曾发出了这样的帧。在设计PAUSE传输策略(6.4.2中将讨论)时必须考虑这样的问题。正式的、详细的PAUSE操作规范可参阅IEEE97。PAUSE帧的语义PAUSE帧包含了图1-4中指出的所有域。前导码、帧起始定界符以及FCS与所有以太网帧相同。其余域的值在下面小节中予以讨论。1.目的地址目的地址是PAUSE帧要到达的目的地。它总是包含一个为PAUSE保留的唯一的组播地址:01-80-C2-00-00-01。既然PAUSE功能只用于全双工链路,PAUSE的目标显然是链路另一端!那么为什么还要指定目的地址呢?更奇怪的是,一个链路的另一端只能有一个设备,为什么目的地址还要指定为组播地址?问题的答案很微妙但也很重要。 如果因为配置错误,PAUSE帧被不经意地发送到共享式LAN上,使用特定的组播地址可以保证接收并解释这些帧的是那些真正懂得PAUSE协议的站(即,地址是专门为这个目的而保留的)。 使用组播地址,就可以使PAUSE帧的发送者不必知道链路另一端的唯一地址。虽然高层协议很可能知道这个地址,但数据链路层没有必要知道。 这个精心挑选的组播地址是特殊保留地址组中的一个,所有标准的网桥和交换机都会阻塞(吸收)这组地址。交换机不会把发往这些地址的帧转发到其他的端口,这使得PAUSE帧只在与其相关单全双工链路上使用。关于这组保留组播地址的更多信息,可参见IEEE93a。2. 源地址源地址域包含了发送PAUSE帧的站单播地址。虽然指定源地址看起来好像是不必要的,因为该帧只能由一个设备发出,但是包含一个源地址有如下好处: 可与其他所有类型以太网帧保持一致(即所有以太网帧的源地址都包含了发送站的唯一地址) 可正确地更新监控设备上的管理记数器(如RMONRTC17567),这些设备可能一直跟踪记录每个站产生的帧。 如果由于错误配置,PAUSE帧被不小心地发送到共享式LAN上,可以容易地确定发送者。3. 类型域类型域包含了所有MAC控制帧使用的保留值:0x8808。4. MAC控制操作码和参数PAUSE帧的控制操作码是0x0001。PAUSE帧只带一个称为暂停时间(pause_time)的参数。这个参数是2个字节的无符号整型值。它是发送方请求接收方停止发送数据帧的时间长度。时间度量以512比特时间为增量。也就是说,接收者应暂停的时间等于pause_time乘以用当前数据率传输512比特的时间。Pause_time的取值范围在表1中列出。表1 PAUSE定时器范围10Mb/s03.36s(以0.0512ms为增量)100Mb/s0336ms(以0.00512ms为增量)1000Mb/s033.6ms(以0.000512ms为增量)注:对于带有组播目的地址的帧,交换机缺省的动作是将它们转发到除帧到达的端口之外的其他所有端口。这个原则对于这个保留的组播地址块是不适用的。也就是,带有该地址块中地址的帧将不会被转发到交换机的任何其他端口。该保留的地址块中包括从01-80-C2-00-00-00到01-80-C2-00-00-10中的所有地址。使用依赖于数据传输率的参数是基于以下两个原因:1) 当以这种方式设定PAUSE操作时,可以认为是让发送者暂停发送与速率无关的若干比特,而不是暂停一段指定的时间。由于使用PAUSE功能的初衷是实现内存容量有限的交换机,当网络接口只剩下一定比特量的缓冲时,它发送一个PAUSE帧,并以剩下的比特量作为该帧的pause_time参数,而不考虑使用什么样的速率。这可以简化某些设计。2) 在半双工以太网中,冲突后退计数器的时间度量以时隙为增量。除1000Mb/s以外,所有数据速率的时隙都是传输512比特的时间。因为PAUSE功能只能用于全双工链路,这个计数器(如果实现了的话)不再用于后退定时,因此可用它来做PAUSE定时,不需改变。注:当PAUSE功能被设计的时候,千兆以太网还没有把时间槽的定义改为512比特之外的其他值,因此所有的数据传输率都获得了这种好处。IEEE802.3z任务组把时间槽的值改为4096比特,就使这种好处丧失了。PAUSE功能的实现流量控制(特别是发送和接收PAUSE帧)给以太网设备的设计增加了新的问题。在使用流量控制以前,给定接口传送的所有以太网帧都是由高层协议或应用提供的。类似地,以太网接口接收到的所有帧在完成有效性检查后将传送给高层实体,接口不对帧的内容进行检查、解释,也不需要按帧的内容进行相应处理。流量控制实现改变了这一切。现在,链路接口可以生成PAUSE帧,并且必须检查到来的帧,以确定它是否是链路伙伴发来的PAUSE请求,如果是,还要执行这些请求。因此在支持PAUSE功能的以太网接口设计中,出现了一些重要的问题。1. 在发送队中插入PAUSE帧如果没有PAUSE功能,以太网接口只是简单按设备驱动程序排列的顺序发送帧。因为以太网设备没有访问优先权或用户优先权的概念,所以发送方可以使用单队列模型。然而有效的流量控制要求PAUSE帧能够及时地发送出去。高层的应用,例如网桥中继功能,一般在缓冲区将要溢出时,发出信号声明要对连接进行流量控制。如果这个信号产生的PAUSE帧只是像其他帧一样放入传送队列,则传送该帧会因为等待前面所有帧的发送而延迟。受接口发送队列规模的直接影响,可能无法及时实施流量控制来防止缓冲区溢出,以至于许多努力都白白浪费。显而易见,PAUSE帧必须具有传送优先权。因为在任何给定时刻,只能有一个正在进行的流量控制动作,所以PAUSE帧一般不需要有专门的队列。另外,PAUSE帧的内容是相对固定的,唯一需要随时间改变的是pause_time参数。实现中可以在静态缓冲区中(或用硬件)保存构造好的PAUSE帧,在需要时进行发送。传送PAUSE帧不能打断正在进行的数据发送。因此接口在收到发送一个PAUSE帧的信号后,应完成正在进行的帧传送,等待一个帧间隔后,发送PAUSE帧。在PAUSE帧发送之后,接口可以正常方式继续发送队列中的帧。2. 对收到的PAUSE帧进行语法分析能够进行流量控制的接口,必须能够对所有到来帧的域进行检查和语法分析,并确定何时收到了一个有效PAUSE帧,然后执行相应的动作。下列域必须检查:a) 目的地址。必须检查这个域,看它是否是为PAUSE功能保留的熟知组播地址(01-80-C2-00-00-01),或是接收帧的端口的单播地址。虽然目前PAUSE帧发送器不会发送单播地址,但在接收器上做检查可使PAUSE功能将来扩展到半双工MAC上。b) 类型域。必须检查这个域,看它的值是否为MAC控制帧的保留值0x8808。c) MAC控制操作代码。这个域的值必须等于PAUSE功能的值:0x0001。d) 帧校验序列。这个域必须包含收到帧的有效CRC值。由于在读取FCS域之前,前面的域可能已经检查及分析过了,所以必须有一定的手段,当FCS发生错误时,能够忽略已经接收并解码的PAUSE帧。在语法分析与解码之后,接收器必须从帧中提取pause_time参数,并把它传递给接口中实现PAUSE功能的相应模块。PAUSE帧不上传给设备驱动器,而是在接口内直接被吸收掉。图1-5 插入PAUSE帧3. PAUSE时序因为PAUSE功能用于链路的实时流量控制,所以及时解码并执行PAUSE帧是非常重要的。在收到PAUSE帧之后(即从CFS的最后一位被接收开始),接口有一个最大512比特时间的处理时间(千兆以太网是1024比特时间),对PAUSE帧进行校验、解码和执行。如果在这段时间内发送器开始发送帧,则收到的PAUSE帧已处理完毕(注意发送器与接收器是完全独立的,因为这是一个全双工接口)。然而,如果收到的有效PAUSE帧包含非零pause_time值,就不允许发送帧长超过512比特时间(千兆以太网是1024比特时间)的数据帧。如图1-6所示。如果对PAUSE帧接收方的响应时间没有这种上界限制,PAUSE帧的发送方就不可能知道在流量终止前会收到多少附加的数据。那将毫无办法阻止缓冲溢出。4. 缓冲区要求由于流量控制工作在全双工链路上,在链路双方之间存在着传播延迟和响应时间延迟。所以发送PAUSE帧后,不会立刻终止另一个方向(进入发送方接收器)的数据流。因此,发送方必须考虑到还要接收附加的数据,并应在缓冲区溢出之前提前发送PAUSE帧。在请求MAC控制实体进行流量控制后,可能接收的最大数据量(即发送PAUSE后需要的缓冲区上界)是表1-3中所列各项的总和:需要的缓冲“净空”因此约为3.2K字节,加上链路的传播延迟。链路传播延迟可能很严重,如表1-4所示。图1-6 pause_time时序5. 流量控制策略及其使用为全双工链路流量控制提供的PAUSE机制只是一个工具。协议规范中定义了在发送和接收PAUSE帧时发生了什么动作,但没有说明设备何时应该进行流量控制以及何时恢复流量。本节将讨论实际实现的这些流量控制策略(flow control policy)问题。流量控制的典型实现是在交换机中防止缓冲区溢出。它使交换机在不降低吞吐量的情况下,能够容纳平均水平的流量,同时还可防止短暂过载造成的丢帧,所有这些都不需要巨大的缓冲内存。这样的交换机,工作情况良好,成本并不昂贵,并可以适应各种流量变化。a) 缓冲区阀值一般的交换机为每个端口(输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论