本节书摘来自异步社区《思科数据中心I/O整合》一书中的第2章,第2.3节,作者【美】Silvano Gai , Claudio DeSanti,更多章节内容可以访问云栖社区“异步社区”公众号查看
思科数据中心I/O整合传统的以太网技术,通常有以下三种情况可能会造成以太网数据帧丢失。
帧错误(Frame Errors):接收到的数据帧带有错误的FCS(CRC)从而造成丢失。这些帧错误很少发生,并且只能通过更上层的协议来恢复。相同速率下,光纤通道和以太网中发生帧错误的概率相当:光纤通道接收极少的帧错误,以太网也一样。因此,这不是数据中心环境中常见的数据帧丢失场景。冲突(Collisions):在传输尝试中,数据帧可能会由于多次冲突原因而无法传输。冲突可能发生在以太网共享介质中。在IEEE 802.3的快速以太网(100 Mbit/s)标准中,推出了全双工链路技术。全双工是10GE以太网支持的唯一双工形式,并且它不存在冲突问题,因为每一个方向上都有专用的传输介质且始终是可用的。交换机拥塞造成缓存区溢出:在光纤通道环境下,这个问题可通过使用缓存区到缓存区的信用机制予以解决。在以太网环境下,实现相同作用的是IEEE 802.3-Annex 31B中定义的PAUSE机制。当交换机队列(缓存区)被占满时,PAUSE操作可用于在一特定时间段内抑制(暂停)数据帧的传送,如图2-1所示。
因此,只要正确实现以太网PAUSE机制,就可以将以太网网络转变为无损耗网络。
PAUSE帧是一个标准以太网帧,不带802.1Q VLAN标签(例如,暂停不会针对某个VLAN或某个802.1p优先级,而是针对整个链路)。PAUSE帧的格式如图2-2所示。
PAUSE帧属于以太网MAC(Media Access Control)控制帧分类,该分类通过Ethertype = 0x8808标识。在这个分类中,PAUSE帧由Opcode = 0x0001标识。其中唯一重要的域是Pause_Time,它包含了PAUSE帧发送方需要该链路保持暂停的时间长度(整数),用暂停量子(Pause Quanta,当前链路传输512比特的时间)来表示。如果该链路需要暂停较长的一段时间,那么一般是通过周期性发送PAUSE帧,从而刷新暂停状态。此外,发送带有Pause_Time = 0的PAUSE帧,可以解除链路的当前暂停状态(例如,不等待Pause定时器过期,直接恢复链路传输)。
相关资源:敏捷开发V1.0.pptx