802.3协议解读 06:117章节 RS 和 200GMII / 400GMII I

117. 用于 200 Gb/s 和 400 Gb/s 操作的协调子层(RS)和媒体无关接口(200GMII 和 400GMII) I

  • [117.1.0 概述](#117.1.0 概述)
    • [(1)200GMII / 400GMII](#(1)200GMII / 400GMII)
    • (2)RS
      • [a. 结构和功能](#a. 结构和功能)
      • [b. 发送/接收 与 lane 的对应关系](#b. 发送/接收 与 lane 的对应关系)
      • [c. 延迟约束](#c. 延迟约束)
  • [117.1.7 200GMII/400GMII 信号到 PLS 服务原语的映射](#117.1.7 200GMII/400GMII 信号到 PLS 服务原语的映射)
    • [117.1.7.1 PLS_DATA.request(数据发送请求)](#117.1.7.1 PLS_DATA.request(数据发送请求))
    • [117.1.7.2 PLS_DATA.indication(数据接收标志)](#117.1.7.2 PLS_DATA.indication(数据接收标志))
    • [117.1.7.3 PLS_CARRIER.indication(载波指示)](#117.1.7.3 PLS_CARRIER.indication(载波指示))
    • [117.1.7.4 PLS_SIGNAL.indication(信号有效标志)](#117.1.7.4 PLS_SIGNAL.indication(信号有效标志))
    • [117.1.7.5 PLS_DATA_VALID.indication(数据有效标志)](#117.1.7.5 PLS_DATA_VALID.indication(数据有效标志))
  • 总结

摘要:此专栏主要解读 IEEE 802.3 中与光模块有关的章节。本文主要关注协议文档的 117 章关于 200 Gb/s 和 400 Gb/s 的 RS 层和 MII 层的介绍。不仅是对文档的简单翻译,还会剖析协议规定背后的深层含义。为了方便与协议文档内容对应,本文的章节编号与协议文档保持一致。

这一章节主要介绍200G和400G的RS层和MII层,可以结合本专栏另一篇文章《802.3协议解读 02:116章节 200 Gb/s 和 400 Gb/s 网络介绍 II》来协助理解。

117.1.0 概述

协调子层(Reconciliation Sublayer, RS)和 200G / 400G 媒体无关接口(Media Independent Interface, MII),位于 MAC 和 PCS 之间,如图117-1所示。

(1)200GMII / 400GMII

协议中提及"200GMII 和 400GMII 是 MAC 子层与物理层设备(PHY)之间的"可选逻辑接口",关键词是"可选"和"逻辑接口"。

  • 逻辑接口:不是物理引脚,而是芯片内部模块之间的抽象连接。可以把它想象成一个标准化的数据交接协议,不关心具体用几根线、什么电压。
  • 可选:标准要求"如果没有 MII,行为上要表现得像实现了 MII 一样"。这意味着,无论芯片内部怎么设计,对外表现必须与标准定义的 GMII 行为一致,方便不同厂家互通。

在这里引用本专栏另一篇文章《802.3协议解读 02:116章节 200 Gb/s 和 400 Gb/s 网络介绍 II》中的内容来理解 200GMII / 400GMII 接口。

  1. GMII 的"物理形态"问题
    协议规定 200GMII 和 400GMII 都采用 64 位宽的并行数据通路,时钟速率极快:
    • 200GMII 时钟:200 Gb/s ÷ 64 bit = 3.125 GHz
    • 400GMII 时钟:400 Gb/s ÷ 64 bit = 6.25 GHz

因为时钟速率极快,所以几乎不采用"物理接口",也就是说,200GMII 和 400GMII 通常都集成在 ASIC 芯片或 FPGA IP 核内,只是以"逻辑互联"的概念存在,而非电路上的可见接口。尽管如此,我们可以借助速率较低的 GMII 接口(例如 GMII、RGMII、SGMII)来理解。

所以,我们可以将 200GMII 接口理解为数据位宽为 64 位(TX63:0、RX63:0),时钟速率为 3.125GHz 的接口。同理,400GMII 可理解为数据位宽为 64 位,时钟速率为 6.25GHz 的接口。这两种接口不以物理形式存在,而是以"逻辑互联"的概念集成在 ASIC 芯片或 FPGA IP 核内。

协议提到 200GMII / 400GMII 具有以下特性:

  • 200GMII 支持 200 Gb/s 的速率;400GMII 支持 400 Gb/s 的速率。
  • 数据和定界符(标记帧开始/结束)与时钟基准同步。
  • 它们提供独立的 64 位宽发送和接收数据通路。
  • 它们仅支持全双工操作。

(2)RS

a. 结构和功能

RS 是翻译官,负责两个方向的转换,以及监控链路状态:

  • 发送方向:MAC 通过 PLS 原语,以串行比特流的形式给出以太网帧;RS 把它切成 64 位宽的并行数据块,交给 PCS。
  • 接收方向:PCS 把并行数据交给 RS,RS 拼回完整的帧,再通过PLS原语,以串行比特流的形式交给 MAC。
  • 监视链路状态:如果接收方向发现链路不可靠(比如光信号丢失、误码严重),RS 会通过发送方向把这个故障信息传回给远端的 DTE,让对端设备知道"我这里收不到了信号"。

PLS(Physical Layer Signaling,物理层信令子层) 是 IEEE 802.3 以太网标准中定义的一个概念子层,它位于 MAC 子层和物理介质之间,是物理层最靠近 MAC 的那一部分。在早期的 10M/100M 以太网中,PLS 是实实在在的物理层子层,负责比特流的传输、载波侦听、冲突检测等。在 200G/400G 时代,PLS 的功能被抽象化,更多地体现为一组服务原语,而实际的物理层工作由 PCS、PMA、PMD 等子层完成。MAC 层就是通过 PLS 原语与 RS 交互。

在这里,我们借助 81.3 章节来理解 RS 的结构。

在发送方向上:

在接收方向上:

b. 发送/接收 与 lane 的对应关系

协议规定 64 个 TXD 和 8 个 TXC 信号应组织成八个数据通道(lane),64 个 RXD 和 8 个 RXC 信号也同样如此(见表 81--2)。

  1. 8 个通道的分配方案

    发送方向有 64 根数据线 TXD<63:0> 和 8 根控制线 TXC<7:0>。接收方向有 64 根数据线 RXD<63:0> 和 8 根控制线 RXC<7:0>。这 64 根数据线被平均分成 8 组,每组 8 根,对应一个 lane(通道)。所以:

    lane 0 使用 TXD<7:0> 和 TXC<0>

    lane 1 使用 TXD<15:8> 和 TXC<1>

    ......

    lane 7 使用 TXD<63:56> 和 TXC<7>

    每个 lane 在一个时钟周期内传输 1 个字节(8 比特),同时有 1 位控制信号。

  2. 公共时钟

    • 发送方向:所有 8 个 lane 共用 TX_CLK。每个 TX_CLK 上升沿,8 个 lane 同时送出各自的 8 位数据和控制位,合起来就是 64 位数据 + 8 位控制。
    • 接收方向:所有 8 个 lane 共用 RX_CLK,由 PHY 从接收数据中恢复。
  3. 轮询(round-robin)分配字节

    MAC 层是以字节(octet)为单位产生数据的。RS 要把这些字节依次分配到 8 个 lane 上,规则是:

    第 1 个字节 → lane 0

    第 2 个字节 → lane 1

    第 3 个字节 → lane 2

    ...

    第 8 个字节 → lane 7

    第 9 个字节 → 回到 lane 0

    依此类推。

  4. 控制字符(定界符和空闲字符)

    除了数据字节,接口上还要传输一些控制信息,比如:

    • 定界符:标记帧的开始(Start)和结束(Terminate)。
    • 帧间空闲字符(Idle):帧与帧之间填充,保持数据流连续。
    • 错误指示(Error):表示传输出错。
      这些控制字符也是以字节为单位,放在 lane 上。

c. 延迟约束

MAC Control、MAC 和 RS 的最大累积延迟(链路一端的发送和接收延迟之和)应满足表 117--1 中规定的值,保证 PAUSE 流量控制能及时生效,避免接收方缓冲区溢出。

117.1.7 200GMII/400GMII 信号到 PLS 服务原语的映射

RS负责将 200GMII / 400GMII提供的信号映射到PLS服务原语,也就是将200GMII/400GMII传过来的数据,转化成MAC层能理解和接收的数据。协议定义了五个PLS原语,分别是:

原语 含义
PLS_DATA.request 数据发送请求
PLS_DATA.indication 数据接收标志
PLS_CARRIER.indication 载波指示
PLS_SIGNAL.indication 信号有效标志
PLS_DATA_VALID.indication 数据有效标志

协议提及这些原语的使用方式和 81.1.7 节相同。因此我们需要参考该章节的内容,分别解释这五个原语的含义和作用。

117.1.7.1 PLS_DATA.request(数据发送请求)

  1. 功能

    RS 通过 PLS_DATA.request 将 MAC 层的串行"逐bit发送请求"转换成 GMII 的 64 位并行数据和控制信号。

  2. 语义

    PLS_DATA.request(OUTPUT_UNIT)

    PLS_DATA.request 由 MAC 子层生成。MAC 层是以串行比特流的方式工作的。每发出一个 PLS_DATA.request,就代表"我要发送一个比特"。这个比特值就是括号内的 OUTPUT_UNIT,这个值可以是:

    • ONE:发送 1
    • ZERO:发送 0
    • DATA_COMPLETE:表示"我的数据发完了,可以结束了"
  3. 接收效果/工作方式

    RS 不是每收到一个比特就立刻发出去,因为 GMII 是 64位宽的,必须一次发 64 个比特。所以,RS 做的事情就是:

  4. 前导码和 Start 控制字符

    以太网帧的开头是 7 个字节的前导码(preamble Data octet, Dp)+ 1 个字节的帧起始定界符(Start of Frame Delimiter, SFD)。在 GMII 上,前导码的第一个字节会被转换成一个 Start 控制字符(Start control character, S),用来标记帧的开始。这个 Start 字符必须对齐到 lane 0(也就是 TXD<7:0>),这样接收端的 PCS 才能正确识别帧边界。

  5. Terminate 和 Idle 控制字符

    当 MAC 发出 DATA_COMPLETE(数据发完了),RS 会在最后一个数据字节之后插入一个 Terminate 控制字符,标记帧的结束。然后剩下的空闲位置填上 Idle 控制字符(表示"空闲"),保持数据流连续。

注意:Terminate 不一定刚好在 lane 7 结束。如果 Terminate 出现在 lane 0~6(即不是最后一个字节位置),那么它后面的 lane 都要填 Idle。

发送数据形式如下图所示。

117.1.7.2 PLS_DATA.indication(数据接收标志)

  1. 功能

    RS 将 PHY 送来的 64 位并行数据和控制信号,还原成 MAC 能理解的串行"逐比特接收通知"(PLS_DATA.indication)。

  2. 语义

    PLS_DATA.indication (INPUT_UNIT)

    PLS_DATA.indication (INPUT_UNIT) 由 RS 生成,INPUT_UNIT 的值可以是 1 或 0,表示单个比特。

    PHY 从介质收到数据后,通过 GMII 接口把数据以 64 位并行的形式交给 RS。RS 把这 64 位拆开,变成 64 个独立的比特,然后通过 PLS_DATA.indication 原语一个一个地通知 MAC:"我收到了一个比特,值是 1(或 0 )"。

  3. 工作方式

    工作方式的简要示意图如下所示。

    接收到的数据形式如下图所示。

  4. 错误处理和特殊控制字符

    • 错误指示:如果 RXC 指示某个字节有错误(比如传输中检测到误码),RS 可以按照 200GMII / 400GMII 的错误规则,更改传递给 MAC 的数据值,让 MAC 知道收到了错误帧(见 81.3.3)。
    • Sequence ordered sets:这是一种用于链路控制的有序集合(比如用于链路状态、时钟同步等),它们不是以太网帧数据。RS 不会把它们转换成 PLS_DATA.indication 给 MAC(见 81.3.4)。MAC 不需要关心这些底层控制信息。
  5. 与发送方向的对称性

    对比 PLS_DATA.request 和 PLS_DATA.indication 可以发现,前者是作用在发送方向上,后者是作用在接收方向上,二者的工作模式具有对称性。如下图所示。

117.1.7.3 PLS_CARRIER.indication(载波指示)

  • 传统含义:告诉 MAC 介质上有没有人在传输数据。在半双工 CSMA/CD 中,MAC 发送前必须先检查载波,如果介质忙(CARRIER_ON),就推迟发送,避免冲突。

  • 在 200G / 400G 中的情况

    因为只支持全双工,发送和接收是独立的通道,不存在冲突,所以正常情况下不需要载波侦听。但有两种可选功能会用到这个原语:

    1. EEE(节能以太网)
      当链路空闲时,PHY 可以进入低功耗状态(LPI)。此时如果 MAC 想发送数据,需要知道链路是否已经准备好。LPI_CARRIER_STATUS 为 TRUE 时,表示链路处于低功耗空闲状态,RS 会把 CARRIER_STATUS 设为 CARRIER_ON,通知 MAC"现在不能立即发送,需要等待唤醒"。这就是所谓的"载波侦听延迟"(carrier sense deferral)。
    2. 链路中断检测(Link Interruption)
      某些应用需要检测链路是否发生中断(比如用于快速保护倒换)。如果检测到链路中断(link_fault = Link Interruption),RS 也会把 CARRIER_STATUS 设为 CARRIER_ON,可能用于触发某种延迟或保护机制。
  • 其他情况:CARRIER_STATUS 一律为 CARRIER_OFF,表示"载波关闭",MAC 可以正常发送。

117.1.7.4 PLS_SIGNAL.indication(信号有效标志)

  • 传统含义:告诉 MAC 物理层有没有检测到有效信号。如果光纤断了、对端关机了,这个原语会报告 SIGNAL_OK = FAIL,MAC 就知道链路不可用。
  • 在 200G / 400G 中的情况:200 Gb/s 和 400 Gb/s 操作仅支持全双工操作。RS 从不生成此原语。

为什么?因为 200G / 400G 全双工链路的状态检测和故障报告可以通过其他机制完成,比如:

  • 链路状态通过 PCS 层的同步状态、FEC 错误计数等来反映。
  • 链路故障通过专门的控制字符(如 Sequence ordered sets)或管理寄存器上报,而不是用 PLS_SIGNAL.indication。

117.1.7.5 PLS_DATA_VALID.indication(数据有效标志)

这一小节讲的是 RS 如何告诉 MAC:"现在收到的数据是不是一个有效帧的一部分?" 它通过 PLS_DATA_VALID.indication 这个原语来报告一个状态:数据有效(DATA_VALID) 或 数据无效(DATA_NOT_VALID)。

  1. 功能
    MAC 层通过 PLS_DATA.indication 逐比特接收数据。但 MAC 需要知道:这些比特是真正的以太网帧数据,还是帧与帧之间的空闲填充?PLS_DATA_VALID.indication 就是用来回答这个问题的。
  2. 语义
    PLS_DATA_VALID.indication (DATA_VALID_STATUS)
    DATA_VALID_STATUS 有两个值,分别是:
    • DATA_VALID:当前 PLS_DATA.indication 送来的比特属于一个有效的传入帧。
    • DATA_NOT_VALID:当前送来的比特不是有效帧数据(帧已结束,或者收到的是空闲/控制信息)。
  3. 两种状态的转换
    下图展示了 DATA_VALID 和 DATA_NOT_VALID 两种状态之间转换的条件。
  1. 这个原语只在状态变化时生成

    和 PLS_SIGNAL.indication 类似,PLS_DATA_VALID.indication 不是每个时钟周期都发,而是只在状态翻转时发一次。这样避免了频繁通信,也符合 MAC 的状态机设计:

    • 从无效变为有效:告诉 MAC "新帧开始了,准备接收"。
    • 从有效变为无效:告诉 MAC "帧结束了,或者出错了,停止接收"。
  2. 打个比方

    把 MAC 想象成一个仓库管理员,RS 是门口保安。

总结

本文围绕 IEEE 802.3 第 117 章,梳理了 200GMII/400GMII 这一逻辑接口的特点,以及 RS 在 MAC 与 PCS 之间的转换与链路监控作用。通过 64 位并行数据通路、8 个 lane 的字节分配和五个 PLS 服务原语,可以完整理解 200G/400G 数据发送与接收的协作机制。欢迎有疑问的小伙伴在评论区留言讨论。

相关推荐
坤坤子吖1 小时前
Linux网络编程:自定义应用层协议与 JSON 序列化
linux·服务器·网络·c++·笔记·json
顧棟1 小时前
INFINI Gateway 服务器端口重用(SO_REUSEPORT)实现与分析
网络·gateway
沫璃染墨2 小时前
从零入门计算机网络系列(十八):TCP连接管理详解——从三次握手与四次挥手到TIME_WAIT机制
运维·服务器·网络·c++·网络协议·tcp/ip·tcp
LabVIEW开发3 小时前
Omron PLC:接 LabVIEW 常踩的 5 个坑
服务器·网络·labview·labview知识·labview功能·labview程序
南京码讯光电技术有限公司3 小时前
工业5G/4G路由器怎么选?核心参数解析与工业级网关选购指南
网络·智能路由器
爱和冰阔落3 小时前
【Linux网络】JsonCpp 怎么实现序列化?从 Request/Response 到网络计算器消息设计
linux·运维·网络·php
feng_you_ying_li17 小时前
linux之数据链路层
linux·网络·智能路由器
国科安芯19 小时前
人在回路中的总线:商业空间站环境控制与生命保障系统CANFD网络的可靠性与功能安全
网络·嵌入式硬件·安全·架构·php·抗辐射
国科安芯20 小时前
算力上天之后的电与静:星上边缘计算载荷带外管理网络的低功耗调度与辐射容错
网络·人工智能·嵌入式硬件·安全·边缘计算·低轨卫星·商业航天