searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

交换机流量控制简介

2023-08-31 09:13:13
245
0

1. 定义

流量控制用于防止在端口阻塞的情况下丢帧,这种方法是当发送或接收缓冲区开始溢出时通过将阻塞信号发送回源地址实现的。流量控制可以有效的防止由于网络中瞬间的大量数据对网络带来的冲击,保证用户网络高效而稳定的运行。

 

1.1  

 

2. 两种控制流量的方式:

2.1 半双工模式Back Pressure

当交换机端口连接到共享式 LAN(半双工网络)时上,那么就可能通过改变MAC 算法的行为,抢在将要到来的数据之前采取某种动作,来阻止发送者发送它们的数据。这就称为后退压力(back pressure)。在 CSMA/CDLAN 中是通过反向压力(backpressure)即我们通常说的背压计数实现的,这种计数是通过向发送源发送jamming信号使得信息源降低发送速度来防止交换机的输入缓冲区溢出。

  此方法强行与将要到达的帧发生冲突。表面上看,这是一个合理的策略,冲突将使发送站重新传送该帧。这确实能像设想的那样防止缓冲区溢出,但不幸的是,存在一些不利影响:

发送站可能阻塞太多,导致系统实际吞吐量要比可用吞吐量低(即,在信道上有不必要的空闲时间)。这是因为冲突使站产生指数级增长的后退时间。站最初选择时间的范围是 0 到 1 个时隙,但是在随后的冲突中,这个时间区间将变为 0~1023 个时隙。在这段较长的时间里,交换机也同时把缓冲的数据转移到输出端口上,因此交换机的输入缓冲区很可能已经可用了。即使队列被清空了信道也将一直空闲,直到后退记时器超时。完全因为后退压力算法的问题而浪费带宽是很荒唐的。

如果交换机输入缓冲区持续拥塞,站中的待发帧可能要经历连续 16次的冲突与重发。如果 16 次发送都不成功,则按照 MAC 算法,站将丢弃该帧,并把该帧作为错误向站管理程序报告。对于高层协议而言,这与交换机丢失帧是一样的。这种情况和前面讨论的情况有一样的超时过长与性能降低问题,只不过是发生在持续拥塞的条件下。管理计数器与统计资料除了表明有“过多的冲突错误”外,还将显示很高的冲突次数。

 

2.2 全双工模式 Flow Control

2.2.1 简介

在全双工方式下,流量控制一般遵循IEEE 802.3X标准,是由交换机向信息源发送“pause”帧令其暂停发送。采用流量控制,使传送和接受节点间数据流量得到控制,可以防止数据包丢失。

PAUSE 功能用来在全双工以太网链路上实现流量控制。在交换机或站中增加 PAUSE 功能,是为了当瞬时过载导致缓冲区溢出时防止不必要的帧丢弃。假设一个设备被设计用来处理网络上恒稳状态的数据传输,并允许随时间变化有一定数量的过载。PAUSE 功能可使这样的设备在

负载增长暂时超过其设计水平时,不会发生丢帧现象。该设备通过向全双工链路的另一端发送 PAUSE 帧,来防止自己的内部缓冲区溢出。而另一端设备在接收到 PAUSE 帧后,就停止发送数据帧。这将使第一个设备有时间来减少自己的缓冲拥塞:它可以处理掉缓冲队列中发给自己的帧(站操作),或者把帧转发到其他的端口(交换机操作)。

2.2.2 PAUSE 操作概述

PAUSE 操作实现了一种简单的“停-启”形式的流量控制。如果某个设备(站或交换机)想阻止帧到来,它可以发送一个带有参数的 PAUSE 帧,该参数指明了全双工中的另一方在开始继续发送数据前需要等待的时间。当另一个站接收到 PAUSE 帧后,将在指定的时间内停止发送数据。当这个时间超时后,该站将从暂停的位置继续发送帧。PAUSE 帧能禁止发送数据帧,但它不影响MAC 控制帧的发送(例如,从另一个方向到来的 PAUSE 帧)。已发送了 PAUSE 指令的站可以再发送一个时间参数为 0 的 PAUSE 帧取消剩余的暂停时间。即新收到的 PAUSE 帧将覆盖掉当前执行的 PAUSE 操作。类似地,该站也可以在前一个 PAUSE 时间还未结束时,发出另一个包含非零时间参数的帧延长暂停时间。因为 PAUSE 操作使用标准的以太网 MAC,所以不能保证接收者一定能收到帧。 PAUSE 帧也可能出问题,而使接收者可能不知道曾发出了这样的帧。

我们交换机上有两种PASUE帧:XON:继续发生XOFF:暂停发送

2.2.3 PAUSE帧格式

PAUSE 帧如图所示

图表 1 xoff

图表 2 xon

1.目的地址

目的地址是 PAUSE 帧要到达的目的地。它总是包含一个为 PAUSE 保留的唯一的组播地址:01-80-C2-00-00-01。使用组播地址,就可以使 PAUSE 帧的发送者不必知道链路另一端的唯一地址。这个精心挑选的组播地址是特殊保留地址组中的一个,所有标准的网桥和交换机都会阻塞(吸收)这组地址。交换机不会把发往这些地址的帧转发到其他的端口,这使得 PAUSE 帧只在与其相关全双工链路上使用。 

  1. 类型域

类型域包含了所有 MAC 控制帧使用的保留值:0x8808。

  1. MAC 控制操作码和参数

PAUSE 帧的控制操作码是 0x0001。PAUSE 帧只带一个称为暂停时间(pause_time)的参数。这个参数是 2 个字节的无符号整型值。它是发送方请求接收方停止发送数据帧的时间长度。时间度量以 512 比特时间为增量。也就是说,接收者应暂停的时间等于 pause_time 乘以用当前数据率传输 512 比特的时间。

2.3 流量控制策略及其使用

为全双工链路流量控制提供的 PAUSE 机制只是一个工具。协议规范中定义了在发送和接收 PAUSE 帧时发生了什么动作,但没有说明设备何时应该进行流量控制以及何时恢复流量。本节将讨论实际实现的这些流量控制策略(flow control)问题。

流量控制的典型实现是在交换机中防止缓冲区溢出。它使交换机在不降低吞吐量的情况下,能够容纳平均水平的流量,同时还可防止短暂过载造成的丢帧,所有这些都不需要巨大的缓冲内存。这样的交换机,工作情况良好,成本并不昂贵,并可以适应各种流量变化。

2.3.1 流控触发标准

  1. a)  Global Bufffer阀值

此阀值指交换机分配给所有端口的Buffer,可以设置在全局下的XON/XOFF的阀值。

交换机为每个端口(输入队列)配置了一定数量的输入缓冲区。在交换机输出端口或交换结构接收某个帧之前,该帧一直保留在这个队列中。根据流量模式和提供给交换机的总负载,帧在这个队列中经历了一段延时,等待上载。在此期间,同一个端口上接收了更多得帧,从而使队列饱和。合理的流量控制策略应该在缓冲区达到预先定义的 “高水位” (high water mark)时,发送一个带有非零 pause-time 值的 PAUSE 帧,使交换机能够防止由于缓冲区不足而在输入端丢弃帧。当链路伙伴收到了 PAUSE 帧并阻塞时,交换机可以从这个输入队列中上载帧,并把它们转发到交换机的其他端口。当缓冲区中的帧少于预定义的 “低水位标记” (low water mark)时,可通过发送带有 0值 pause-time 的 PAUSE 帧取消流量控制,并恢复正常操作。这样交换机可以不丢弃任何帧并达到最大容量。

高水位应该这样设置:在水位之上尚存在足够大的可用缓冲,它可以满足流水线中附加流量的需要。这个高水位与数据率、介质类型以及链路长度有关。类似地,为了避免缓冲区空闲,在低水位之下应该留有足够的空间,使得在缓冲区完全清空之前有帧到达。因为影响低水位的唯一因素只有 PAUSE帧传输时间(512 比特)、解码时间(512 或 1024 比特),以及链路往返传播延迟,

所以低水位之下的空间要比高水位之上的空间要小。至于溢出的情况,没有最长帧时间问题,因为根据定义在链路伙伴暂停发送期间不会有帧发送。

b)Network Port Group Buffer阀值

交换机为0-23端口(输入队列)配置了一定数量的输入缓冲区。同时可以设置在此组端口下的XON/XOFF的阀值。

c)Stack  Port Group Buffer 阀值

交换机为24-27端口(输入队列)配置了一定数量的输入缓冲区。同时可以在此组端口下的XON/XOFF的阀值。

d)Port Buffer limit Profile

交换机有0-3个profile来设置XON/XOFF的阀值。可以将端口绑定到任意一个profile上。

 

以上四种情况,任意一种达到XOFF阀值就可以触发流控,发出XOFF帧。

只有在上述四种XON的阀值都达到了,才能发出XON帧。

2.3.2 PAUSE 时间的选取

实现者需要选择 PAUSE 帧中的 pause-time 应取什么样的值,它与采用的流量控制策略有关。这个值在前面的例子中显得并不重要。实际上,在队列超过高水位时使用 0XFFFF 的 pause-time,而在队列低于低水位标记时使用0X0000 ,是一种相当可以接受的方法。因此,不需要任何启发式策略给pause-time 选取一个最优值。不同的流量控制策略(也许是不同交换机实现专用的)可能通过仔细选择暂停时间来优化性能。很重要的一点是,链路不能无限期地进行流量控制。高层协议可能依赖于在网络上传送的某些帧。如果出现长时间的流量控制,它们可能认为连接超时,并断开虚电路等等。特别是,生成树协议状态机(用来维护网桥/交换机式网络的无环路拓朴)的定时器将超时,因而会重新计算生成树并导致拓扑结构发生变化。

0条评论
0 / 1000
刘****珂
3文章数
0粉丝数
刘****珂
3 文章 | 0 粉丝
刘****珂
3文章数
0粉丝数
刘****珂
3 文章 | 0 粉丝
原创

交换机流量控制简介

2023-08-31 09:13:13
245
0

1. 定义

流量控制用于防止在端口阻塞的情况下丢帧,这种方法是当发送或接收缓冲区开始溢出时通过将阻塞信号发送回源地址实现的。流量控制可以有效的防止由于网络中瞬间的大量数据对网络带来的冲击,保证用户网络高效而稳定的运行。

 

1.1  

 

2. 两种控制流量的方式:

2.1 半双工模式Back Pressure

当交换机端口连接到共享式 LAN(半双工网络)时上,那么就可能通过改变MAC 算法的行为,抢在将要到来的数据之前采取某种动作,来阻止发送者发送它们的数据。这就称为后退压力(back pressure)。在 CSMA/CDLAN 中是通过反向压力(backpressure)即我们通常说的背压计数实现的,这种计数是通过向发送源发送jamming信号使得信息源降低发送速度来防止交换机的输入缓冲区溢出。

  此方法强行与将要到达的帧发生冲突。表面上看,这是一个合理的策略,冲突将使发送站重新传送该帧。这确实能像设想的那样防止缓冲区溢出,但不幸的是,存在一些不利影响:

发送站可能阻塞太多,导致系统实际吞吐量要比可用吞吐量低(即,在信道上有不必要的空闲时间)。这是因为冲突使站产生指数级增长的后退时间。站最初选择时间的范围是 0 到 1 个时隙,但是在随后的冲突中,这个时间区间将变为 0~1023 个时隙。在这段较长的时间里,交换机也同时把缓冲的数据转移到输出端口上,因此交换机的输入缓冲区很可能已经可用了。即使队列被清空了信道也将一直空闲,直到后退记时器超时。完全因为后退压力算法的问题而浪费带宽是很荒唐的。

如果交换机输入缓冲区持续拥塞,站中的待发帧可能要经历连续 16次的冲突与重发。如果 16 次发送都不成功,则按照 MAC 算法,站将丢弃该帧,并把该帧作为错误向站管理程序报告。对于高层协议而言,这与交换机丢失帧是一样的。这种情况和前面讨论的情况有一样的超时过长与性能降低问题,只不过是发生在持续拥塞的条件下。管理计数器与统计资料除了表明有“过多的冲突错误”外,还将显示很高的冲突次数。

 

2.2 全双工模式 Flow Control

2.2.1 简介

在全双工方式下,流量控制一般遵循IEEE 802.3X标准,是由交换机向信息源发送“pause”帧令其暂停发送。采用流量控制,使传送和接受节点间数据流量得到控制,可以防止数据包丢失。

PAUSE 功能用来在全双工以太网链路上实现流量控制。在交换机或站中增加 PAUSE 功能,是为了当瞬时过载导致缓冲区溢出时防止不必要的帧丢弃。假设一个设备被设计用来处理网络上恒稳状态的数据传输,并允许随时间变化有一定数量的过载。PAUSE 功能可使这样的设备在

负载增长暂时超过其设计水平时,不会发生丢帧现象。该设备通过向全双工链路的另一端发送 PAUSE 帧,来防止自己的内部缓冲区溢出。而另一端设备在接收到 PAUSE 帧后,就停止发送数据帧。这将使第一个设备有时间来减少自己的缓冲拥塞:它可以处理掉缓冲队列中发给自己的帧(站操作),或者把帧转发到其他的端口(交换机操作)。

2.2.2 PAUSE 操作概述

PAUSE 操作实现了一种简单的“停-启”形式的流量控制。如果某个设备(站或交换机)想阻止帧到来,它可以发送一个带有参数的 PAUSE 帧,该参数指明了全双工中的另一方在开始继续发送数据前需要等待的时间。当另一个站接收到 PAUSE 帧后,将在指定的时间内停止发送数据。当这个时间超时后,该站将从暂停的位置继续发送帧。PAUSE 帧能禁止发送数据帧,但它不影响MAC 控制帧的发送(例如,从另一个方向到来的 PAUSE 帧)。已发送了 PAUSE 指令的站可以再发送一个时间参数为 0 的 PAUSE 帧取消剩余的暂停时间。即新收到的 PAUSE 帧将覆盖掉当前执行的 PAUSE 操作。类似地,该站也可以在前一个 PAUSE 时间还未结束时,发出另一个包含非零时间参数的帧延长暂停时间。因为 PAUSE 操作使用标准的以太网 MAC,所以不能保证接收者一定能收到帧。 PAUSE 帧也可能出问题,而使接收者可能不知道曾发出了这样的帧。

我们交换机上有两种PASUE帧:XON:继续发生XOFF:暂停发送

2.2.3 PAUSE帧格式

PAUSE 帧如图所示

图表 1 xoff

图表 2 xon

1.目的地址

目的地址是 PAUSE 帧要到达的目的地。它总是包含一个为 PAUSE 保留的唯一的组播地址:01-80-C2-00-00-01。使用组播地址,就可以使 PAUSE 帧的发送者不必知道链路另一端的唯一地址。这个精心挑选的组播地址是特殊保留地址组中的一个,所有标准的网桥和交换机都会阻塞(吸收)这组地址。交换机不会把发往这些地址的帧转发到其他的端口,这使得 PAUSE 帧只在与其相关全双工链路上使用。 

  1. 类型域

类型域包含了所有 MAC 控制帧使用的保留值:0x8808。

  1. MAC 控制操作码和参数

PAUSE 帧的控制操作码是 0x0001。PAUSE 帧只带一个称为暂停时间(pause_time)的参数。这个参数是 2 个字节的无符号整型值。它是发送方请求接收方停止发送数据帧的时间长度。时间度量以 512 比特时间为增量。也就是说,接收者应暂停的时间等于 pause_time 乘以用当前数据率传输 512 比特的时间。

2.3 流量控制策略及其使用

为全双工链路流量控制提供的 PAUSE 机制只是一个工具。协议规范中定义了在发送和接收 PAUSE 帧时发生了什么动作,但没有说明设备何时应该进行流量控制以及何时恢复流量。本节将讨论实际实现的这些流量控制策略(flow control)问题。

流量控制的典型实现是在交换机中防止缓冲区溢出。它使交换机在不降低吞吐量的情况下,能够容纳平均水平的流量,同时还可防止短暂过载造成的丢帧,所有这些都不需要巨大的缓冲内存。这样的交换机,工作情况良好,成本并不昂贵,并可以适应各种流量变化。

2.3.1 流控触发标准

  1. a)  Global Bufffer阀值

此阀值指交换机分配给所有端口的Buffer,可以设置在全局下的XON/XOFF的阀值。

交换机为每个端口(输入队列)配置了一定数量的输入缓冲区。在交换机输出端口或交换结构接收某个帧之前,该帧一直保留在这个队列中。根据流量模式和提供给交换机的总负载,帧在这个队列中经历了一段延时,等待上载。在此期间,同一个端口上接收了更多得帧,从而使队列饱和。合理的流量控制策略应该在缓冲区达到预先定义的 “高水位” (high water mark)时,发送一个带有非零 pause-time 值的 PAUSE 帧,使交换机能够防止由于缓冲区不足而在输入端丢弃帧。当链路伙伴收到了 PAUSE 帧并阻塞时,交换机可以从这个输入队列中上载帧,并把它们转发到交换机的其他端口。当缓冲区中的帧少于预定义的 “低水位标记” (low water mark)时,可通过发送带有 0值 pause-time 的 PAUSE 帧取消流量控制,并恢复正常操作。这样交换机可以不丢弃任何帧并达到最大容量。

高水位应该这样设置:在水位之上尚存在足够大的可用缓冲,它可以满足流水线中附加流量的需要。这个高水位与数据率、介质类型以及链路长度有关。类似地,为了避免缓冲区空闲,在低水位之下应该留有足够的空间,使得在缓冲区完全清空之前有帧到达。因为影响低水位的唯一因素只有 PAUSE帧传输时间(512 比特)、解码时间(512 或 1024 比特),以及链路往返传播延迟,

所以低水位之下的空间要比高水位之上的空间要小。至于溢出的情况,没有最长帧时间问题,因为根据定义在链路伙伴暂停发送期间不会有帧发送。

b)Network Port Group Buffer阀值

交换机为0-23端口(输入队列)配置了一定数量的输入缓冲区。同时可以设置在此组端口下的XON/XOFF的阀值。

c)Stack  Port Group Buffer 阀值

交换机为24-27端口(输入队列)配置了一定数量的输入缓冲区。同时可以在此组端口下的XON/XOFF的阀值。

d)Port Buffer limit Profile

交换机有0-3个profile来设置XON/XOFF的阀值。可以将端口绑定到任意一个profile上。

 

以上四种情况,任意一种达到XOFF阀值就可以触发流控,发出XOFF帧。

只有在上述四种XON的阀值都达到了,才能发出XON帧。

2.3.2 PAUSE 时间的选取

实现者需要选择 PAUSE 帧中的 pause-time 应取什么样的值,它与采用的流量控制策略有关。这个值在前面的例子中显得并不重要。实际上,在队列超过高水位时使用 0XFFFF 的 pause-time,而在队列低于低水位标记时使用0X0000 ,是一种相当可以接受的方法。因此,不需要任何启发式策略给pause-time 选取一个最优值。不同的流量控制策略(也许是不同交换机实现专用的)可能通过仔细选择暂停时间来优化性能。很重要的一点是,链路不能无限期地进行流量控制。高层协议可能依赖于在网络上传送的某些帧。如果出现长时间的流量控制,它们可能认为连接超时,并断开虚电路等等。特别是,生成树协议状态机(用来维护网桥/交换机式网络的无环路拓朴)的定时器将超时,因而会重新计算生成树并导致拓扑结构发生变化。

文章来自个人专栏
DPU网络
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0