Ethernet 基本架构解析

Overview

标准演进

    Ethernet (以太网) 自从 1980 年 2 月开始由 IEEE 着手进行标准制定,到目前为止出现了下面几代 Ethernet 技术:

速度 名称 IEEE 标准
10 Mbps 以太网 802.3
100 Mbps 快速以太网 802.u
1000 Mbps 千兆位以太网 (GigE) 802.ab
10 Gbps 万兆位以太网 802.ae
100 Gbps 十万兆位以太网 802.bj

以太网基本架构与接口

    对应 OSI 协议来看,以太网对应了 OSI 的最下面两层,即数据链路层和物理层,如下图所示:

    在数据链路层 (ETH),MAC (Media Access Control) 子层用于实现物理网的编址 (MAC 地址)、数据帧的组装和拆分、数据帧的正确性校验等;而 LLC (Logic Link Control) 子层用于承载上层不同的三层协议,现在基本已经被废除。而在物理层 (PHY),PCS (Physical Coding Sublayer) 用于实现物理层的数据传输的编码; PMA (Physical Medium Attachment) 用于实现 PCS 的 bit 数据到 PMD 的 data symbol 的映射,以及在接收方向上从 PMD 的 data symbol 数据中恢复出接收时钟; PMD (Physcal Medium Dependent) 用于将实现 data symbol 和传输媒介上信号的转换。

    就接口来说,ETH 和 PHY 之间,使用的是 MII (Media Independent Interface) 接口进行通信; PHY 和最终传输的实际介质之间,用的是 MDI (Media Dependent Interface) 接口进行通信。

以太网标准命名

    对于其它的串行接口协议,像 PCIe, SATA 和 USB 来说,针对不同的速率,它们分别有一代的标准与之对应。以太网则不同,即使在同一个速率下,以太网也存在多种标准,这与以太网底层支持的传输介质和编码模式等的丰富性有关。本节我们将探讨以太网标准的命名方法。

    以太网的标准命名遵循 RmTYPE-LC 的格式,它们分别的含义如下所示 understanding_ethernet:

  • R: 传输速率,分为如下几种形式:
    • 1000 $\rightarrow$ 1000 Mbps 或者 1 Gbps;
    • 10G $\rightarrow$ 10 Gbps
    • 10/1G $\rightarrow$ 10 Gbps 下行,1 Gbps 上行;
  • mTYPE: 指代的是 Media Layer 的调制方式,取值基本为 BASE,代表基带传输的意思;
  • L: 指代的是 Media Layer 的介质类型/波长,通常有如下形式:
    • B $\rightarrow$ Bidirectional optics, with downstream (D) or upstream (U) asymmetric qualifiers;
    • C $\rightarrow$ Twin axial copper;
    • D $\rightarrow$ Parallel single mode (500 m);
    • E $\rightarrow$ Extra-long optical wavelength λ (1510/1550 nm) / reach (40 km);
    • F $\rightarrow$ Fiber (2 km);
    • K $\rightarrow$ Backplane;
    • L $\rightarrow$ Long optical wavelength λ (~1310 nm) / reach (10 km);
    • P $\rightarrow$ Passive optics, with single or multiple downstream (D) or upstream (U) asymmetric qualifiers, as well as eXternal sourced coding (X) of 4B/5B or 8B/10B;
    • RH $\rightarrow$ Red LED plastic optical fiber with PAM16 coding and different transmit power optics;
    • S $\rightarrow$ Short optical wavelength λ (850 nm) / reach (100 m);
    • T $\rightarrow$ Twisted pair;
  • C: 指代的是 Physical Layer 的 PCS 层编码格式,通常有如下形式:
    • R $\rightarrow$ scRambled coding (64B/66B);
    • X $\rightarrow$ eXternal sourced coding (4B/5B, 8B/10B);
  • n: Number of Lanes,通常有如下形式:
    • Blank space without lane number $\rightarrow$ 默认 1-lane;
    • 4 $\rightarrow$ 4-lane;

    以太网的标准通常可以描述的是关于 PHY 的相关电气标准 (Electrical Specifications)。举个例子来说,10GBASE-KR 描述的是传输速率为 10Gbps 的,在基带传输的,以 Backplane 作为传输介质的,PCS 编码为 64B/66B 的,1-lane 的以太网 PHY;而 10GBASE-KX4 代表的则是传输速率为 10Gbps 的,在基带传输的,以 Backplane 作为传输介质的,但 PCS 编码为 8B/10B 的,4-lane 的以太网 PHY。

    以太网的标准有时也用于描述光纤收发器标准 (Optical Transceiver Specification)。举个例子来说,10GBASE-ER 描述的是传输速率为 10Gbps 的,在基带传输的,以 extra-long reach 作为传输介质的,PCS 编码为 8B/10B 的,1-lane 的单模光纤收发器。10GBASE-ER 标准主要描述的是光纤收发器的基本要求,而没有提供用于驱动光纤收发器的 PHY 的电气特性。

Ethernet PHY 层

PCS (Physical Coding Sublayer)

    PCS 位于 PHY 层的顶端,在 Tx 方向上,其输入是 Bit,输出也是 Bit。PCS 的基本功能有:① 数据 编码/解码 (Encoding/Decoding);② 接口状态/信道冲突检测;③ 接收方向上的 时钟恢复 (Clock Recovery) 和 ④ 数据 扰码/解扰码 (Screambling/Descreambling)。PCS 的内部流程如 img_pcs 所示,具体来说:

    PAC 与 MAC 层通过 xMII 接口交换 Tx/Rx 的数据以及其他控制信号,Tx/Rx 数据的宽度取决于所使用的 xMII 接口格式,有 1, 2, 4, 8-bits 等不同规格。

    在 Rx 方向上,PCS 从 PMA 接收 Code Group,并将其解码 (decode) 为原始的数据包比特,在解码成功时,会通过 RX_DV 信号向 MAC 层通告解码的成功;在失败时通过 RX_ER 信号向 MAC 层宣告数据解码的失败。在 Tx 方向上的操作基本上与 Rx 操作相反,在有的 IEEE 802.3 标准中,在对数据进行编码之后,还会进行扰码的操作。

    PCS 还拥有监控 Tx 和 Rx 通道,以判定 Network Interface 是否 Active 的功能。当物理信道上有冲突发生时,PCS 会通过 COL 信号通告 MAC 层冲突的发生,以便 MAC 实现介质冲突回退功能。

    在 Rx 方向上,PCS 从 PMA 拿到 Recovered CLK,结合本地的 Ref CLK,最终恢复得到接收时钟,并且将该时钟信号通过 xMII 接口传给 MAC 层。

PMA (Physical Medium Attachment)

    PMA 位于 PCS 的下层,在 Tx 方向上,其输入是 Bit,输出是 Symbol。的主要功能是 比特流-信道符号映射 (Bit-Data Symbol Mapping): 在 Rx 方向上将 PCS 层完成编码的比特流数据,转化为可以在 Network Medium 上进行传输的 Symbol;Tx 方向上反向同理。

Bit 是承载数据的基本单元;Symbol 是在信道上真正进行传输的模拟信号样式,一种 Symbol 可以代表若干 Bits,例如 qpsk_symbols 所示,QPSK 调制通过相位的偏移,一共可以有四种 Symbols,因此一个 Symbols 可以代表 2 个 Bits。

    另外,PMA 还拥有 Carrier Detection (载体监测) 的功能 (i.e., 有没有插上网线): 在 Rx 方向上,当在 mapping 后的比特流 rx(k) 中检测到链路状态发生改变 (link transition from IDLE State) 时,PMA 会开始寻找 Start of Stream Delimiter (SSD),若检测到,则说明网线已经接上,PMA 会向 PCS 层进行通告该信息。

    有的 PMA 实现还支持 自动链路协商 (Auto-negotiation): 在和对端完成链路状态 (Link State) 协商后,将 Link Status 通告给 PCS 层。如果 PMA 不支持自动协商,则 PMA 会根据 PMD 提供的 Signal Status 向 PCS 通告 Link Status。如果 PMA 不支持自动协商时,它有可能会支持 远端故障检测 (Far-end Fault Detection) 功能,当 PMA 在 Rx 方向上检测到错误时,它会生成一个 Fault Indication,将其插入 Tx Bit Stream 中进行发送;当 PMA 接收到来自远端发送的 Fault Indication 时,PMA 会重新开始传输 IDLE Symbol Pattern 以重新建立通信链路。

PMD (Physical Media Dependent)

    PMD 位于 PHY 的最底层,在 Tx 方向上,其输入是 PMA 给出的调制 Symbol,输出是真正能在对应物理介质上进行传输的 Signal。

    PHY 不一定拥有 PMD 这一层,例如在 IEEE 802.3bw (i.e., 100BASE-T1) 标准中,PMD 就不包括在 PHY 中,因为这个标准只支持 single-twisted pair copper 这种传输介质,在这种情况下,PMA 会完成 Symbol 到 Signal 的转换。