跳转到主内容

PAUSE 帧对网络连接的潜在影响是什么?

Views:
833
Visibility:
Public
Votes:
1
Category:
ontap-9
Specialty:
CORE
Last Updated:

适用于

  • ONTAP 9
  • 以太网

回答

以太网流量控制的目的:

以太网流量控制是一种机制,允许遇到性能瓶颈的网络设备请求相邻设备停止传输。

  • 以太网流量控制定义了一种类型的以太网数据包,通常称为"PAUSE"帧。
  • 它们只能在直接连接的设备之间进行交换,并且只在以太网 (DataLink) 层中定义。
    • 因此,以太网 PAUSE 帧不与 IP、TCP、NFS、CIFS 或任何其他更高级协议相关联,也不能与这些协议相关联。

如果没有以太网流量控制,如果接收设备无法像发送设备发送信息那样快速处理信息,它最终将不得不开始丢弃传入的数据。

  • 这迫使传输 Client 必须重新传输,并且由于多种原因可能导致痛苦的延迟。

使用以太网流量控制,接收方可以请求传输设备"暂停"一段时间,试图避免这些丢弃。

  • 在某些情况下,这样可以实现更高效的网络传输。
  • 然而,以太网流量控制并不总是能有效地防止性能问题。
    • 在某些情况下(通常很少见),以太网流量控制可能比它们旨在防止的重传造成的性能影响更大。

注意: 以太网流量控制在 1 Gbps 或更快的设备上很常见。它也可以在更现代的 100 Mbps 设备上找到,即使以太网流量控制规范并非旨在在那里得到支持。

示例:

  • 假设我们有一个带有存储控制器、交换机和客户端计算机的基本网络。
  • 此外,假设存储控制器被配置为发送以太网流量控制数据包,并且交换机被配置为在存储控制器插入的接口上接收(侦听)以太网流量控制数据包。
  • 最后,假设客户端未配置为完全支持以太网流量控制。
    • 请注意,交换机为每个接口都有一个以太网流量控制设置(Storage Controller 插入的接口有一个设置,Client 插入的接口有一个可能不同的设置)。

Potential impact of PAUSE frames on a network connection

停止/暂停流量:
  • 在这种情况下,存储控制器现在可以向该交换机发送 PAUSE 帧。
  • 如果存储控制器到达无法像交换机发送信息那样快速处理信息的点,则现在允许存储控制器向该交换机发送 PAUSE 帧 (Xoff)。
  • 交换机收到 PAUSE 帧时,应停止传输。交换机现在应开始保留(排队)需要发送到 Storage Controller 的流量一小段时间。Storage Controller 现在可以处理以前收到的数据。 
恢复流量:
  • 每个 PAUSE/Xoff 帧都包含一个值(称为"Quanta"),该值请求相邻设备在特定时间段内停止传输。
  • 当此时间到期时,或者当它从接收器(本示例中的存储控制器)接收到不同的以太网流量控制数据包时,预计发射器(本示例中的交换机)将恢复传输。
  • 根据 IEEE 标准,交换机预计将评估 QUANTA 值,并根据 QUANTA 值和接口速度的组合保持"暂停"状态。
  • 然而,接口预计保持"暂停"的时间长度取决于传输设备的固件,可能不遵循此规则。
计算接口预期保持暂停状态的时间量:

 

  • PAUSE 帧或 Xoff 帧出现在 ifstat -a -v 命令的输出中。
  • 在 10Gbps 中, ifstat –a 命令可能会列出 'PAUSE' 帧;在 1Gbps 中,它通常会列出为 Xoff 和 Xon。 

 

  • PAUSE 帧包括请求的暂停时间段,其形式为两个字节的无符号整数(0 到 65535),称为"quanta"。
    • 此两字节无符号整数是请求的暂停持续时间。

 

  • 每个"量子"等于 512 位时间。
    • "bit time"被定义为发送一位数据所需的秒数。由于接口的额定值为"bits per second",因此"bit time"是接口线速的倒数。

 

对于 1Gbps (1,000,000,000 bps) 接口 "bit time"是每位 1/1,000,000,000 秒
1Gbps 链路,接口预计停止传输计算的最长时间 最大量子值 * 512 / (10^9)  = 65535*512/1000000000 = 0.03355392 秒 = 33.55ms
对于 10Gbps, 接口预计停止传输计算的最长时间
           
  65535*512/10^10 = 3.355 毫秒
对于支持该协议的 100Mbps 接口 预计 100Mbps 接口将暂停长达 335.5ms


可以将设备或网络元件配置为发送和接收 PAUSE 帧。

  • 在 1Gbps 接口上,如果存储控制器在"传输"统计信息中列出 Xoff(或 PAUSE): 
    1. 存储控制器指示交换机端口 PAUSE
    2. 然后存储控制器应停止接收数据包长达 33.5ms。


如果存储控制器在"接收"统计信息中列出 Xoff(或 PAUSE)

  1. 交换机指示 Storage Controller 停止发送数据包
  2. 然后 Storage Controller 应在该接口上停止传输长达 33.5ms。


如果"暂停"端口在计时器到期前收到 Xon 数据包,则该端口可以立即恢复传输。

计算潜在影响:

示例:
-- interface e0b (0 hours, 2 minutes, 21 seconds) --

RECEIVE
Frames/second: 4655 | Bytes/second: 416k | Errors/minute: 0
Discards/minute: 0 | Total frames: 186k | Total bytes: 31954k
Total errors: 0 | Total discards: 0 | Multi/broadcast: 0
No buffers: 0 | Non-primary u/c: 0 | Tag drop: 0
Vlan tag drop: 0 | Vlan untag drop: 0 | CRC errors: 0
Runt frames: 0 | Fragment: 0 | Long frames: 0
Jabber: 0 | Alignment errors: 0 | Bus overruns: 0
Queue overflows: 0 | Xon: 1326 | Xoff: 1326
Jumbo: 0 | Reset: 0 | Reset1: 0
Reset2: 0 | TBI mode: 0 | Pad odd: 0
Pad even: 0
TRANSMIT
Frames/second: 2993 | Bytes/second: 4009k | Errors/minute: 0
Discards/minute: 0 | Total frames: 224k | Total bytes: 285m
Total errors: 0 | Total discards: 0 | Multi/broadcast: 2
Queue overflows: 0 | No buffers: 0 | Frames queued: 0
Buffer coalesces: 0 | MTUs too big: 0 | Max collisions: 0
Single collision: 0 | Multi collisions: 0 | Late collisions: 0
Timeout: 0 | Xon: 0 | Xoff: 0
Jumbo: 0
LINK_INFO
Current state: up | Up to downs: 0 | Auto: on
Status interrupt: 0 | Speed: 1000m | Duplex: full
Flowcontrol: full

收集的统计数据总共涵盖 141 秒(2 分 21 秒)。

  • 收到 1326 个 Xoff 帧。
  • 每个 Xoff 帧可能已停止传输长达 33.5ms。
  • 每个 Xon 都会释放存储系统端口以继续传输。但是,无法确定 Xon 是在 Xoff 后 0.1ms、Xoff 后 1ms 还是 Xoff 后 33.4ms 接收的。

因此,从存储系统到网络的所有传输被保持的最大*潜在*时间为:
1326 * 33.5ms = 44,421ms = 44.4 秒。

在考虑"数据包百分比"时,它可能看起来微不足道:1326/224000 = 0.7%

  • 请注意,接收到的 PAUSE 帧  对传输的帧产生影响(通过暂时停止接收方本来会发送的传输)。
  • 端口可以继续以交换机选择发送的速度从交换机接收数据。

 

  • 如果流量未暂停,则无法确定本应发送的数据包数量。

 

  • 考虑到端口可能被阻止传输的时间,视角非常不同,并且可能更相关:44.4 秒 / 141 秒 = 31%
    • 因此,在这 141 秒的间隔内,多达 31% 的时间,客户端将无法从存储系统上的此 port 接收响应。
    • 也可能每个 'Xoff' 后面都紧跟着一个 'Xon',
      • 在这种情况下,传输流量将仅被停止很短一段时间。
      • 这很可能不会被注意到。


因此,在这些统计数据的情况下,1326 个 PAUSE 帧的影响范围在"无"到 44.4 秒之间。由于流量控制 PAUSE 帧是针对单个端口并由单个端口操作的,因此 PAUSE 帧不会传递到上层协议层。PKTT 将不包含 PAUSE 帧。交换机的大多数端口镜像跟踪也不包含任何 PAUSE 帧。只有"在线"数据包捕获才能确定地揭示真正的影响。

PAUSE 帧表示发送 PAUSE 帧的设备遇到问题。如果计算确认端口可能暂停的最长时间是捕获数据时间的重要部分,那么请考虑调查发送 PAUSE 帧的设备遇到困难的原因。


如果 PAUSE 帧可能已停止流量流动的最长时间仅占捕获数据时间的一小部分,则 PAUSE 帧的存在不应引起太多关注。但是,PAUSE 帧的存在仍会指示发送 PAUSE 帧的设备遇到某种程度的困难。 

该协议的最初目的是允许接口在邻居(电缆另一端的接口)传输速度可能足够快以溢出接口时 PAUSE 其邻居。如果先 PAUSE 相邻接口,则可以防止接收接口不堪重负。虽然这有时可以帮助解决这种情况,但也可能意味着接收接口(以及它所包含的节点)除了 PAUSE 帧外,不会记录问题的任何证据。因此,如果有必要了解发送 PAUSE 帧的原因,则可能需要禁用 Ethernet Flow Control。然后,如果问题仍然存在,您可能会看到其他计数器或行为,告诉您不堪重负的组件是否位于 NIC、PCI 总线或 Operating System 中。

 

NetApp provides no representations or warranties regarding the accuracy or reliability or serviceability of any information or recommendations provided in this publication or with respect to any results that may be obtained by the use of the information or observance of any recommendations provided herein. The information in this document is distributed AS IS and the use of this information or the implementation of any recommendations or techniques herein is a customer's responsibility and depends on the customer's ability to evaluate and integrate them into the customer's operational environment. This document and the information contained herein may be used solely in connection with the NetApp products discussed in this document.