Networking 关于以太网、MII、SGMII、RGMII和PHY的澄清

Networking 关于以太网、MII、SGMII、RGMII和PHY的澄清,networking,ethernet,Networking,Ethernet,我主要来自嵌入式软件背景,因此我对硬件的总体知识非常有限。我一直认为以太网是计算机上连接以太网电缆的小物理连接器。从软件的角度来看,您所需要做的就是安装驱动程序(在Windows中)或配置Linux内核以包含以太网的驱动程序 问题: 但是,当我开始向下一个层次(向硬件)并查看各种数据表和示意图时,我开始遇到诸如PHY、MII、SGMII、RGMII等术语,现在我对什么构成以太网有点困惑?例如,当我说“英特尔82574L 1.0 Gbps以太网端口”时,这些术语在哪里合适?让我试着解释一下: MI

我主要来自嵌入式软件背景,因此我对硬件的总体知识非常有限。我一直认为以太网是计算机上连接以太网电缆的小物理连接器。从软件的角度来看,您所需要做的就是安装驱动程序(在Windows中)或配置Linux内核以包含以太网的驱动程序

问题:

但是,当我开始向下一个层次(向硬件)并查看各种数据表和示意图时,我开始遇到诸如PHY、MII、SGMII、RGMII等术语,现在我对什么构成以太网有点困惑?例如,当我说“英特尔82574L 1.0 Gbps以太网端口”时,这些术语在哪里合适?

让我试着解释一下:

  • MII、SGMII、RGMII是MAC芯片和PHY芯片之间的三种接口。英特尔82574L是一款MAC芯片。如下图所示:

    _______         __________                  ___________
     CPU  | PCI-E   |        |  MII/SGMII/RGMII |         |
     or   |<=======>| MAC    |<================>| PHY     |<====>physical interface 
     board| or else |        |                  |         |
    _______         __________                  ___________
    
    \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu___________
    CPU | PCI-E | MII/SGMII/RGMII ||
    或| | MAC | | PHY |物理接口
    董事会|或其他| | | ||
    _______         __________                  ___________
    
    有关MII(100Mbps)、SGMII(1Gbps,串行)、RGMII(1Gbps,精简)定义的详细信息,您可以在谷歌上搜索它们

  • NIC(网络接口卡)基本上由一个MAC芯片和相关的PHY芯片以及其他外围模块组成。一个以太网设备驱动程序也应该与NIC硬件配合使用。MAC芯片有一个与控制CPU或PC主板的接口,如PCI-E总线或其他

  • 一些定义:

    • 媒体访问控制器。这是系统的一部分,它将来自操作系统的数据包转换为字节流,然后放到线路(或光纤)上。通常通过诸如PCI Express之类的东西与主机处理器接口(例如)
    • 物理层-物理层-将MAC中的字节流转换为一条或多条导线或光纤上的信号
    • MII-媒体独立接口。MAC和PHY之间只有一组标准管脚,这样MAC就不必知道或关心物理介质是什么,PHY也不必知道或关心主机处理器接口的外观
    信息产业部很久以前就进行了标准化,支持100Mbit/sec的速度。使用较少引脚的版本也可用,RMII('R'表示减少)

    对于千兆速度,使用GMII(“G”表示千兆)接口,并使用称为RGMII的缩减pincount版本。还提供了一种称为SGMII的非常精简的pincount版本(“S”用于串行),它要求MAC的IO引脚具有特殊功能,而其他XMII则是相对传统的逻辑信号

    在其他情况下也会使用更多种类的界面,其中可能会链接到Wikipedia MII页面:


    关于您具体的英特尔芯片问题-据我所知(数据表链接似乎已失效),该芯片是一款带有PCIe的MAC。因此,它将位于主机上的PCIe总线和某种千兆物理层(PHY)之间。

    您可能需要查找术语“OSI的7层”,其中有一些常见术语

    • 以太网PHY对应于物理层,它由通信的物理组件组成

    • 以太网MAC(不是MAC地址,而是媒体访问控制器)对应于数据链路层,它负责在将帧发送到物理层之前安排帧

      MII、RMII、Auto Negotion等配置都是从这两个配置中配置的,并且有一些库可以让您的生活更轻松

    • 网络层负责数据包的路由。IP和DHCP等协议被认为是在这一层。此外,该层是第一个完全基于软件的最低层。例如,如果您使用的是轻量级IP,那么IP和netif库就是其他一切构建的基础

    • 传输层是可以找到TCP和UDP等传输协议的地方


    希望能有所帮助,遗憾的是,我对上层知之甚少。

    英特尔82574L芯片包含MAC和物理层

    参考数据表第15页的架构框图,可从以下位置获得:


    MAC和PHY都在那里,但从我的非工程师角度来看,我对MII连接感到困惑,因为我期待两个独立的芯片。

    什么是PHY芯片?它与MAC芯片有何不同?此外,根据您的解释,似乎MII、SGMII和RGMII只是互连PHY和MAC芯片的规范?是吗?是的,关于MII/SGMII/RGMII你是对的。PHY和MAC之间的区别很容易在谷歌上找到。简单地说,PHY芯片处理物理信号,如工作模式、双工和协商。当MAC芯片处理数据链路层时,以太网帧创建。嗨@tian_yufeng,请您解释一下RGMII和SGMII自动协商的区别是什么?当我尝试谷歌时,对于RGMII自动协商,我们只需要从PHY芯片读取状态。但是对于SGMII,除了在线协商之外,MAC和PHY之间还有另一个协商。这让我困惑英特尔82574L不仅是一个MAC芯片,它还包含一个物理层。那么到底是什么NIC“驱动程序”驱动MAC芯片呢?我想那些收发环缓冲器都在“MAC”芯片上。对吗?至于PHY“芯片”,我们能说它所做的只是将MAC芯片与实际的RJ-45连接器连接起来吗?当你达到10Gbps的网络时,你还会遇到XGMII(“X”ten“G”gig“MII”)和一大堆其他有趣的首字母缩略词(XAUI、XFI、SFI、SFP等等),同样适用于40/100G:)Hi Martin T。-谢谢你的帮助