入门车载以太网(2) -- 数据链路层

文摘   2024-11-01 06:43   上海  


目录

1.数据链路层概述

2.以太网帧结构

3.MAC地址

4.VLAN的概念

5.MAC与PHY的接口

6.小结


1.数据链路层概述

OSI参考模型的第二层叫做数据链路层(Data Link Layer),在IEEE 802模型中该层级进一步划分为MAC和LLC两个子层,如下:
  • MAC:Media Access Control,媒体访问控制子层,负责以太网的总线访问机制、物理寻址方式、以太网帧格式等等
  • LLC:Logical Link Control ,逻辑链路控制子层,主要负责以太网帧的收发,还可以对以太网帧进行错误控制、流控等。
从数据链路层开始,我们就需要掌握以太网帧结构。
从上图可以看出,在OSI模型每一层创建的PDU都将成为下一层服务的有效载荷,每一层会给上层传下来的数据添加Header,然后成为下一层的有效负载,就像俄罗斯套娃一样;接收端接收到消息后会根据每层的Header进行控制,传递给上层时再删除Header。
因此,在数据链路层我们首先认识这一层的以太网帧结构。

2.以太网帧结构

根据802.3描述,以太网帧结构如下图所示:
  • Preamble/Start of Frame Delimiter:一共8字节(7+1),Preamble固定7个byte(b10101010,0xAA),SFD固定一个byte(b10101011,0xAB);前导字节提供信号边缘,使通信双方的时钟可以彼此同步,SFD之后表示一个MAC帧开始传输;
  • 地址域:每一个MAC帧都包含了两个MAC地址:目的地址、源地址,分别对应接收方地址和发送方地址,每个MAC地址长度为6字节,它是MAC层最关键的概念,就像是门牌号,必须有这些地址才能准确投递,MAC地址后面我们详解,这里先有个概念;
  • 802.1Q tag:作为可选项,用在VLAN领域,后面详解;
  • 长度\类型域:该域包含2个字节,根据数值不同表示的含义也有所不同;
    • 当该值小于等于1500(0x05DC)时,表示后续有效Payload的长度;
    • 当该值大于等于1536(0x0600)时,表示Eternet II帧,如下图:

    • Payload:表示实际数据,例如在该层级数据开头有可能是IP层的Header;
    • CRC:保证数据完整性,参与计算数据包括DA(Destination Address),SA(Source Address), Length/ Type field, Payload,如果CRC校验失败,那么交换机或者MAC就直接丢弃该帧;Interframe Gap:帧间隙(IFG),至少12字节,为接收下一帧做恢复准备
在对MAC帧有初步印象后,我们继续来看几个关键概念;

3.MAC地址

MAC层最为关键的概念就是MAC地址,该地址由6个字节构成,为网络设备提供了一个全球唯一的标识符,用于确保设备在同一网络内能够相互通信。所以,只要是联网的设备,它都拥有自己独一无二的MAC地址,这个就和门牌号很相似。
具体格式如下:
  • OUI:前3个字节表示组织的唯一标识,需要在IEEE申请购买,大厂会购买多个OUI,例如我现在这台电脑用的Intel网卡,MAC地址前三个字节与IEEE公示的匹配:
  • Local:后三个字节表示本地管理地址,制造商可以用它给产品分配唯一的MAC地址。
 进一步的,在OUI中前2个bit还有详细用法,具体如下所示:
每个地址仍然为48bits,以LSB为例,
  • 第 0 bit 为I/G为,置 0表示单播地址,即某个设备的MAC地址;置1表示地址字段包含一个组地址,即可以是组播,也可以是广播;
  • 第1 bit 为U/L,置0表示全局管理地址,由IEEE分配;置1,表示本地管理地址,一般是为了加强本地网络管理指定的地址。
上述两个bit都有软件设置,因此回到802.3以太网帧中,两个MAC地址中SA的第一字节最低位只能是0,因为标识的是自己这个设备。
那么对于目标MAC地址的不同设置,就可以实现不同发送方式,如下:
  • 广播(Broadcast):想要所有节点都能收到,MAC地址设置为FF:FF:FF:FF:FF:FF;
  • 组播(Multicast):指定多个MAC地址的节点接收消息,首字节设置为0x01;
  • 单播(点对点):指定某个MAC地址节点接收消息,首字节设置为0x00;
聪明的你可能已经察觉到问题了,如果是组播MAC地址的以太网帧,普通终端设备是不会接收的(它自己的I/G永远是0),所以就有了交换机这个东西,我们来举个例子描述组播和单播如何实现。
当局域网有3个及以上设备需要通过以太网进行通信,就需要交换机(Switch)来进行数据转发,以下图为例,当前有5个ECU和交换机构成局域网(LAN:Local Area Network):
假设ECU0向给ECU3发送报文,首先给到交换机,交换机收到报文后会获取该报文的SA(源MAC地址),然后根据交换机的源MAC地址表找到该地址映射的物理端口,最后从该端口进行报文转发,如下绿色箭头:
那如果是组播又该如何呢?我们可以继续定义一组成员,该组内成员共享组播MAC地址,如下图紫色箭头:
ECU0通过组播MAC地址(01:00:00:00:00:01)发送报文给到交换机,交换机根据SAT的相同组播MAC地址对应端口6、7转发报文给到ECU2和ECU3。

4.VLAN的概念

在以前整车电子电气机构架构里,要实现多个局域网,常见方式是新增几路CAN总线,设置私有CAN等方式,往往架构更新受限于芯片硬件资源;
在车载以太网中提出了VLAN(Virtual LANs,虚拟局域网)的概念,实现从物理上看是一个局域网,但从逻辑上划分为多个虚拟局域网;
这个标准由IEEE 802.1 Q提出,这也就是我们上面提到的可选项 -- 802.1Q Tag,也叫VLAN tag。
如果携带该Tag,那么以太网帧全面就叫以太网VLAN帧,其结构如下图所示:
VLAN Tag总计4个字节,包括
  • TPID:固定0x8100,表示以太网帧扩展为VLAN Tag
  • TCI:包含PCP(Priority Code Point ,3 bits,帧优先级,值越大优先级越高),DEI(Drop Eligible Indicator,1 bit,表示网络阻塞时该帧可被丢弃),VLAN ID(12bits,从0-4095)
在实际设计时,即使物理层面多个ECU连接同一台交换机,但从逻辑进行隔离,这样做的好处就是各VLAN网段内的广播报文只会在本VLAN里传播,不会影响其他VLAN,如下:

5.以太网节点接口

通过对MAC地址、以太网帧和以太网VLAN帧的分析,我们大概掌握了车载以太网二层数据链路层的MAC地址寻址方式,了解其通信过程;
上一节我们聊到的PHY对外的Cable,那么MAC与PHY之间是如何连接的呢?
IEEE 802.3定义了MAC与PHY之间的接口为MII(Media Independent interface),实际上有多个变体,以英飞凌TC3xx GETH为例:
  • MII:最初定义的接口,用于10 Mb/s以太网传输,它包含十六根信号和2个控制管理信号(MDC\MDIO),具体信号举例如下(Intel):
CRS(Carrier Sense):载波监测,COL(Collision Detected):冲突碰撞监测
  • RMII:Reduced MII,接口信号数量只需原始MII所需信号数量的一半,接口时钟由MII 25 MHz提高到50 MHz;
  • GMII:Gigabit MII,千兆以太网接口;
  • RGMII:精简GMII,通过更快地传输数据等,使用的信号数量是GMII的一半,支持10\100\1000 Mbps,接口信号如下:

6.小结

数据链路层到这先暂时告一段落,掌握了MAC地址寻址、通信过程这部分,就可以继续往IP层进发了。





谦益行
分享汽车研发日常,助力你我共同成长。
 最新文章