实践Linux的理论
全部博文(61)
分类: LINUX
2015-07-13 17:29:38
以太网基本知识
现在正在做MX515的项目,用到网卡芯片为:LAN8710,由于基础知识欠缺,在网上找到了一些资料,贴上来以供以后学习。
MAC
---------------------------------------
MAC是Media
Access
Control的缩写,即媒体访问控制子层协议。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC层。以太网MAC由IEEE-802.3以太网标准定义。
MII
---------------------------------------
MII即媒体独立接口,"媒体独立"表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号,包括:
transmit data --
TXD[3:0]
transmit strobe
-- TX_EN
transmit clock
-- TX_CLK
transmit error
-- TX_ER/TXD4
receive data
-- RXD[3:0]
receive strobe
-- RX_DV
receive clock
-- RX_CLK
receive error
-- RX_ER/RXD4
collision indication -- COL
carrier sense --
CRS
一般说来,包括:
IC对PHY作读取与写入用的一组信号:MDC(clock),MDIO(data)
作为data
sampling reference用的两组clock,频率应为25MHz(TX_CLK,RX_CLK)
各4-bit的输出、输入Bus(TX[0:3],RX[0:3])
通知对方准备输入数据的输出、输入的启动信号(TX_EN)
输出、输入的错误通知信号(TX_ER,RX_ER)
得到有效输入数据的通知信号(RX_DV)
网络出现拥塞的colision信号(Col)
做为carrier回复用的信号(CRS)
电位可使用+5V或+3.3V
MII以4bit,即半字节方式双向传送数据,时钟速率25MHz,其工作速率可达100Mb/s。MII管理接口是个双信号接口,一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY。MII界面传递了网络的所有数据和数据的控制,而MAC对PHY的工作状态的确定和对PHY的控制则是使用SMI(Serial
Management
Interface)界面通过读写PHY的寄存器来完成的。PHY里面的部分寄存器是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC通过SMI总线不断的读取PHY的状态寄存器以得知目前PHY的状态,例如连接速度,双工能力等。当然也可以通过SMI设置PHY的寄存器达到控制的目的,例如流控的打开关闭,自协商模式还是强制模式等。不论是物理连接的MII总线和SMI总线还是PHY的状态寄存器和控制寄存器都是有IEEE的规范的,因此不同公司的MAC和PHY一样可以协调工作。当然为了配合不同公司的PHY的自己特有的一些功能,驱动需要做相应的修改。
RMII(Reduced Media Independant
Interface)简化媒体独立接口,是标准的以太网接口之一,比MII有更少的I/O传输。关于RMII口和MII口的区别:
RMII口是用2根线来传输数据
MII口是用4根线来传输数据
GMII是用8根线来传输数据
MII/RMII只是一种接口,对于10M线速,MII的时钟是2.5M,RMII的时钟则是5M;对于100M线速,MII的时钟是25M,RMII的时钟则是50M。
The standard MII features a small set of registers:
* Basic Mode Configuration (#0)
* Status
Word
(#1)
* PHY Identification
(#2, #3)
* Ability Advertisement
(#4)
* Link Partner Ability
(#5)
* Auto Negotiation Expansion(#6)
MII/RMII用于传输以太网包,在MII/RMII接口是4/2bit的,在以太网的PHY里需要做串并转换、编解码等才能在双绞线和光纤上进行传输,其帧格式遵循IEEE
802.3(10M)/IEEE 802.3u(100M)/IEEE 802.1q(VLAN)。
以太网帧的格式为:
前导符+开始位+目的MAC地址+源MAC地址+类型/长度+数据+PAD(optional)+32BitCRC
如果有VLAN,则要在类型/长度后面加上2个字节的VLAN
tag,其中12bit来表示VLAN
ID,另外4bit表示数据的优先级!
PHY
---------------------------------------
PHY是物理接口收发器,它实现物理层。包括MII/GMII(介质独立接口)子层、PCS(物理编码子层)、PMA(物理介质附加)子层、PMD(物理介质相关)子层、MDI子层。
100BaseTX采用4B/5B编码。PHY在发送数据时,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC),每4bit就增加1bit的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。收数据时的流程反之。PHY还有个重要的功能就是实现CSMA/CD的部分功能。它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。如果两个碰巧同时送出了数据,那样必将造成冲突,这时候,冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。这个随机时间很有讲究的,并不是一个常数,在不同的时刻计算出来的随机时间都是不同的,而且有多重算法来应付出现概率很低的同两台主机之间的第二次冲突。通信速率通过双方协商,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式。这个技术被称为Auto
Negotiation或NWAY。隔离变压器把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。RJ-45中1、2是传送数据的,3、6是接收数据的。新的PHY支持AUTO
MDI-X功能(也需要隔离变压器支持)。它可以实现RJ-45接口的1、2上的传送信号线和3、6上的接收信号线的功能自动互相交换。
网卡工作在OSI的最后两层,物理层和数据链路层,物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。以太网卡中数据链路层的芯片称之为MAC控制器。很多网卡的这两个部分(MAC控制器和PHY芯片)是做到一起的。他们之间的关系是
PCI总线接MAC总线,MAC接PHY,PHY接网线(当然也不是直接接上的,还有一个变压装置)。
由此可见,MAC和PHY,一个是数据链路层,一个是物理层;两者通过MII传送数据。
OSI七层协议中数据链路层(DLL)内LLC层和MAC层
---------------------------------------
OSI将网络通信协议体系区分为7个层,体系的最底层称为物理层,网络所采用的不同的传输介质,对应不同的物理层,如双绞线或同轴线。体系内第二层为数据链路层(Data
link Sub-layer),数据链路层的上半部为LLC(Logical
Link Control Sub-layer)逻辑链路控制子层,负责将数据正确的发送到物理层,在数据链路层的下半部为MAC(Media
Access
Control)子层,负责控制与连接物理层的物理介质。
当发送数据时,MAC层要完成以下任务:首先它按规则从LLC层接收数据,然后执行媒体访问规程,查看网络是否可以发送;一旦网络可以发送,它将给数据附加上一些控制信息,把数据及控制信息以规定的格式(一般称做帧)送往物理层。
当接收数据时,MAC层要完成以下任务:首先它从物理层接收到数据帧并检查数据帧中的控制信息,从而判断是否发生传输错误。如数据正确,则去掉控制信息后把其送至LLC层。
图1
MAC发送数据流程
图2
MAC接收数据流程
传统有线局域网(LAN)的MAC协议
---------------------------------------
在网络标准内,各种传输介质的物理层对应到相对的MAC层,例如以同轴线为传输介质时,对应的MAC层标准为802.14;各个计算机连接成环状时,对应MAC标准为802.5。目前,最普及的网络标准称为以太网,其在MAC层定义为802.3。802.3的MAC层定义对传输介质的访问控制方式为CSMA/CD。
CSMA/CD媒体访问控制协议
---------------------------------------
由于以太网(Ethernet)成为现存局域网络结构的绝大多形式,CSMA/CD(Carrier
Sense Multiple Access/Collision
Detection)载波监测多址接入协议也成为局域网采用最多的MAC协议。CSMA/CD适宜于总线型局域网拓朴结构的随机竞争型媒体访问控制。总线型网络允许同一时刻只有一个节点(Node)发送数据,一旦两个或以上节点同时发送数据,则会发生数据碰撞,数据不能正常发送和接收。CSMA/CD协议就是尽可能保证网络上同时只有一个节点发送数据,减小数据"碰撞"概率。
CSMA/CD工作过程:
当MAC收到LLC(Logical
Link Control
Sub-Layer)发来的数据以后,首先监测网络电缆上是否具有数据,即载波传送。如果网络空闲,即没有载波传送,刚将数据装帧,经物理层发送出去。如果网络繁忙,则监测网络直到网络空闲,再将数据装帧发送。
IEEE
802.3 MAC帧格式
---------------------------------------
MAC层在发送数据时将数据装帧交物理层发送,下图绘出了IEEE
802.3 MAC帧格式。
Preamble
前导序列,由62比特交替出现的0、1序列组成,设置目的:接收端物理层同步位时钟;
SFD
起始域,"11"表示有用数据开始;
Dest
目的地址域,由6字节组成,表示目的节点地址;
Sourse
源地址域,由6字节组成,表示源节点地址;
Length
长度域,由2字节组成,表示数据域长度;
Data
数据域,46字节~1500字节之间;
FCS
校验域,4字节组成。
Length/Type
2个字节,用来指出以太网帧内所含的上层协议,即帧格式的协议标识符。对于IP报文来说,该字段值是0x0800;对于ARP信息来说,以太类型字段的值是0x0806。
CSMA/CD为基础的MAC发展方向
---------------------------------------
随着10
BASE-T和10
BASE-FL等技术的出现,IEEE
802.3标准局域网拓朴结构已经开始由总线型结构向树型结构发展。因此,CSMA/CD为基础的MAC子层也需要被修改以适应双工工作模式局域网的发展。