PAUSE 帧对网络连接可能产生什么影响?
适用场景
- ONTAP 9
- 以太网
问题解答
以太网流量控制的目的:
以太网流量控制是一种机制,允许遇到性能瓶颈的网络设备请求邻近设备停止传输。
- 以太网流量控制定义了一种通常称为“PAUSE”帧的以太网数据包类型。
- 它们只能在直接连接的设备之间交换,并且仅在以太网(数据链路)层定义。
- 因此,以太网 PAUSE 帧与 IP、TCP、NFS、CIFS 或任何其他更高级别的协议不关联,也不能与其关联。
如果没有以太网流量控制,如果接收设备不能像发送设备发送信息那样快速地处理信息,它最终将不得不开始丢弃传入的数据。
- 这会迫使传输客户端必须重新传输,并且可能由于多种原因造成严重的延迟。
通过以太网流量控制,接收方可以请求传输设备短时间“暂停”,以尝试避免这些丢弃。
- 在某些情况下,这可以实现更高效的网络传输。
- 然而,以太网流量控制并不总是能够有效地防止性能问题。
- 在某些(通常很少见)情况下,以太网流量控制对性能的影响可能比其设计用于防止的重新传输所造成的影响更大。
注意:以太网流量控制在 1 Gbps 或更快的设备上将会很常见。虽然以太网流量控制规范最初并未计划支持 100 Mbps 设备,但在更现代的 100 Mbps 设备上也可能会出现。
示例:
- 假设我们有一个包含存储控制器、交换机和客户端计算机的基本网络。
- 此外,假设存储控制器配置为发送以太网流量控制数据包,交换机配置为在存储控制器所连接的接口上接收(监听)以太网流量控制数据包。
- 最后,假设客户端根本没有配置为支持以太网流量控制。
- 请注意,交换机对每个接口都有一个以太网流量控制设置(存储控制器插入的接口有一个设置,客户端插入的接口可能有一个不同的设置)。
停止/暂停交通:
- 在这种情况下,存储控制器现在可以向交换机发送暂停帧。
- 如果存储控制器无法像交换机发送信息那样快速地处理信息,则存储控制器现在可以向交换机发送暂停帧 (Xoff)。
- 当交换机收到该暂停帧时,预计会停止传输。交换机现在应该开始短暂地保留(排队)需要发送到存储控制器的流量。存储控制器现在可以处理之前收到的数据了。
恢复交通:
- 每个 PAUSE/Xoff 帧都包含一个值(称为“Quanta”),用于请求相邻设备停止传输特定时间。
- 发送方(本例中为交换机)预计会在特定时间过后或从接收方(本例中为存储控制器)收到不同的以太网流量控制数据包时恢复传输。
- 根据 IEEE 标准,交换机应该评估 QUANTA 值,并根据 QUANTA 值和接口速度的组合来保持“暂停”状态。
- 但是,接口预计保持“暂停”状态的时间取决于发送设备的固件,并且可能不遵循此规则。
计算接口预计保持暂停状态的时间:
- PAUSE 帧或 Xoff 帧出现在
ifstat -a -v
命令。 - 在 10Gbps 中,
ifstat –a
命令可能会列出“PAUSE”帧;在 1Gbps 中,它通常会被列为 Xoff 和 Xon。
- PAUSE 帧包括所请求的暂停时间段,以两字节无符号整数(0 到 65535)的形式表示,称为“量子”。
- 这个两字节无符号整数是请求的暂停持续时间。
- 每个“量子”等于 512 位时间。
- “位时间”定义为发送一位数据所需的秒数。由于接口的额定速率为“比特/秒”,因此“位时间”是接口线速度的倒数。
对于1Gbps (1,000,000,000 bps)接口 | “位时间”为每位 1/1,000,000,000 秒 |
1Gbps链路,接口预计停止传输的最大时间计算 | 最大量子值 * 512 / (10^9) = 65535*512/1000000000 = 0.03355392 秒 = 33.55 毫秒 |
对于10Gbps,接口预计停止传输的最大时间计算 |
65535*512/10^10 = 3.355毫秒 |
对于支持该协议的100Mbps接口 | 100Mbps 接口预计暂停时间最长为 335.5 毫秒 |
可以将设备或网络元素配置为发送和接收 PAUSE 帧。
- 在 1Gbps 接口上,如果存储控制器在“传输”统计信息中列出 Xoff(或暂停):
- 存储控制器正在指示交换机端口暂停,
- 然后存储控制器应停止接收数据包长达 33.5 毫秒。
如果存储控制器在“接收”统计信息中列出 Xoff(或暂停)
- 交换机指示存储控制器停止发送数据包,
- 然后存储控制器应停止在该接口上传输长达 33.5 毫秒。
如果“暂停”端口在计时器到期之前收到 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.5 毫秒。
- 每个 Xon 帧都会释放存储系统端口以恢复传输。但是,无法确定 Xon 是在 Xoff 帧之后 0.1 毫秒、1 毫秒还是 33.4 毫秒接收到的。
因此,从存储系统到网络的所有传输的最大*潜在*持续时间为:
1326 * 33.5毫秒 = 44,421毫秒 = 44.4秒。
当考虑“数据包百分比”时,它可能看起来微不足道:1326/224000 = 0.7%
- 请注意,接收到的暂停帧仅对已发送的帧有影响(通过暂时停止接收方原本要发送的传输)。
- 端口可以继续以交换机选择发送速度接收来自交换机的数据。
- 如果流量没有暂停,就无法确定已经发送的数据包数量。
- 考虑到端口可能被阻止传输的时间,观点就大不相同,而且可能更相关:44.4 秒/141 秒 = 31%
- 因此,在此 141 秒间隔内,多达 31% 的时间内,客户端无法从存储系统上的此端口接收响应。
- 也有可能每个“Xoff”后面紧跟着一个“Xon”,
- 在这种情况下,传输流量只会停止很短的一段时间。
- 很可能不会被注意到。
因此,就这些统计数据而言,1326 个暂停帧的影响范围介于“无”到 44.4 秒之间。由于流量控制暂停帧是针对单个端口并由其操作的,因此暂停帧不会传递到上层协议层。PKTT不会包含暂停帧。交换机的大多数端口镜像跟踪也不会包含任何暂停帧。只有“在线”数据包捕获才能确切地揭示真正的影响。
暂停帧表明发送暂停帧的设备遇到了问题。如果计算结果确认端口可能暂停的最大时间占数据捕获时间的很大一部分,则应考虑调查发送暂停帧的设备遇到问题的原因。
如果暂停帧可能停止流量的最大时间只占数据捕获时间的一小部分,那么暂停帧的存在应该不会引起太大的关注。但是,暂停帧的存在仍然表明发送暂停帧的设备遇到了一定程度的故障。
该协议的最初目的是允许接口在邻居接口(电缆另一端的接口)的传输速度可能过快以至于超出接口承载能力时暂停邻居接口(PAUSE)。如果您先暂停邻居接口,则可以防止接收接口不堪重负。虽然这有时可以缓解这种情况,但也可能意味着接收接口(及其所在的节点)除了 PAUSE 帧之外不会记录任何问题证据。因此,如果需要了解发送 PAUSE 帧的原因,您可能需要禁用以太网流量控制。然后,如果问题仍然存在,您可能会看到其他计数器或行为,告诉您不堪重负的组件是位于 NIC、PCI 总线还是操作系统中。