注:本文为 “车载以太网帧结构详解 | SOME/IP | 音视频传输 AVB vs RTP” 的几篇文章合辑。
车载以太网帧结构详解
埃恪深科技 汽车电子与软件 2022年01月19日 07:00
身边的以太网
我们身边充满了以太网,不管是新势力还是传统的主机厂,都已经在准备或是在更上一层地去做以太网的一些升级,包括电子架构也会做车载以太网的一些规划。
当前,无论是我们的电脑,还是手机,还是我们访问的云端数据,还是看视频等,都是我们身边可以感知到的传统以太网。
未来,这些以太网技术都会逐渐运用在我们的汽车上,以太网在汽车上应用已势不可挡。汽车整个的一套以太网生态也在慢慢地构建,包括我们的车联网、V2X 通信、5G 车联网都已经慢慢加入进来。
但是现在我们整个汽车行业最多的可能还是在用 4G 的 T-Box 去做车联网,当然这一块也会随着汽车行业的一个生态、对一些带宽或是延时的一些需求,推动整个汽车供应链去做一些迭代更新。
其实在工业互联网上这一块已经慢慢的趋向于成熟了。
汽车为什么拥抱以太网
因为以太网本来不属于汽车行业的,既然要选择那肯定有它的一些优势。
从总线技术来说,现在车上的总线包括 CAN/FD、Flexray、MOST、LIN 等,然后现在又加入了新的成员以太网。
并不是说因为以太网的加入会导致其他的总线就能够彻底的去取消掉,因为这个涉及到原有的电子架构跟新的电子架构的融合,不可能把原先的整套全部舍弃掉。
我们需要用最简单、最低的成本去把架构一点一点的往上升级,所以就慢慢地引入了百兆、千兆,亦或是将来的万兆以太网。
以太网的相对优势如下图所示:
上图中,我们可以看到,以太网的优势在于:
-
带宽高、可扩展强
-
基于星型的拓扑结构
-
随着趋势的发展,成本会越来越低
-
当前主要应用于娱乐系统和 ADAS,主要用于音视频传输
当前,以太网的应用已不仅限于百兆以太网,随着汽车行业的高速发展越来越依赖高带宽,低延时,高算力的通信,而以太网便是高带宽、低延时、高算力通信的基础。
当前在 L3 + 自动驾驶域控制器中,会以太网为骨干网,AUTOSAR 和激光雷达作为标配,其中以太网是基础;
目前架构会随着 ECU 数目增加而改变,这也会造成分布计算资源的浪费,为了避免分布式资源的浪费,我们可以使用以太网,将原先分布式上的计算资源进行域融合,进而减少 ECU 的数量,节省资源线束重量,这样可以减少 80% 的车内连接成本,30% 的线束重量。
对于带宽要求高的各种传感器,特别是激光雷达和高分辨摄像头必须使用以太网传输数据,节省 LVDS 总线成本;
还有车云交互方面,4G/5G 以及 V2X 生态的逐渐成熟,远程代驾 / 泊车,哨兵等功能可以更完美落地。
汽车以太网 VS 工业以太网
首先从最底层的一些物理介质来看的话,汽车上使用的以太网分为两种,一个是车内 ECU 之间的通信,还有一个是车外 OBD 对外的通信,其实这两个通信它本身是不一致。
车内 ECU 通信用的是一对双绞线进行通信,沿用原先 CAN 的这种单对双绞线传输数据。但是带宽使用的是百兆以太网的技术。
OBD 对外通信是两对双绞线。在 ISO13400-3 中有一些描述,常规使用的是 3、11、12、13 这四个引脚,当然还要外加一个 8 引脚的激活(Activation)线。这是一个通过 OBD 的对外的 DoIP 的诊断。
总的来看就是,一个是对内的一对双绞线的 ECU 之间的通信, 一个是 OBD 对外的两对双绞线的通信。
回过来看一下我们的生活中,例如我们的电脑网线。
我们了解到它是八芯的,相当于四对双绞线。但是,其实工业的百兆以太网,只用到四芯,分别是 1、2、3、6 这四个引脚,其余是做预留的。
工业千兆以太网会用四芯去做千兆的信息传输,用四芯去做 POE(Power On Ethernet)供电,例如我们的摄像头、办公楼无线发射器。所以工业以太网四芯通信其实跟汽车 OBD 对外的通信的本质上是相同的,所以其实整个汽车上面就已经用到工业以太网了。
汽车的以太网分以下几种类型:
OBD 是 100BASE-TX,使用的是 2 对双绞线,速率是 100M,总线类型是星型。
ECU 之间的通信,一般通过 100BASE-T1 或 1000BASE-T1 两种技术,具体使用哪种看 ECU 对通信速率的需求。出于对 EMC 干扰的考虑,我们选择使用 1000BASE-T1 的时候,会选择使用一对屏蔽双绞线。
还有正在制定的 10BASE-T1S ,它是一种类似于 CAN 的总线型技术。主要是弥补百兆以下的车载以太网的空白,其目的是为了考虑未来是否可以统一车内的总线类型。当然,这是一个漫长的过程。
类似的还有 CAN XL 技术,它是在往上努力,最终 10M 技术花落谁家就看谁能从价格和落地上有更多的优势。
汽车以太网物理层以上的,例如它的拓布以及它的整个通信的原理,类似于下图的内部网络图:
以太网组网是一个星型的结构,是点对点的,不可能说一根线挂在那里,所有的节点挂上来就可以通信,必须是点对点的。
它必须得经过一个 Switch 进行二层的转发,或者经过一个 Router 进行三层的转发, 也就是说所有 ECU 的通信肯定是有一个汇聚点的,不可能一对一,这会导致车内网络变成 “蜘蛛网”,这就需要一个车内设备进行汇聚和转发。
以下,我们会详细介绍 Switch 和 Router 的转发原理。
以太网 OSI 模型
OSI(OpenSystem Interconnect),即开放式系统互联,由 ISO 组织发布。
为了方便大家理解以及去做一些更深层次的分析,OSI 参考模型分为七层模型,在工业以太网上其实它也叫 TCP/IP 五层模型,这两个其实本质上是没有区别的,无非是说把应用层更细分为三个层。
整个 OSI 模型每层各司其职。
第一层物理层
如之前我们提到的 100BASE-T1、1000BASE-T1、100BASE-Tx,这技术是由不同的物理层介质决定的。
第二层数据链路层
主要是提供一些链路建立以及一些转发策略。
第三层网络层
是指不在同一个局域网,或者对远端网络有访问需求的时候,都是通过 IP 寻址以及路由转发进行功能操作。
第四层传输层
我们车上会有很多协议例如 DoIP、SOME/IP、UDPNM 等一些协议,每个协议都会有它固定的一个 Server 端的端口号。
Server 端跟客户端会有一个 Client 到 Server 对应关系,多个 Client 要如何识别它要访问的是 DoIP 还是 SOME/IP 服务,它都是通过传输层来确定的,传输层会有一个包含源端口、目的端口、再加上网络源 IP、目的 IP 以及协议的组成一个通信五元组。
第五层会话层
当我们建立 DoIP 的会话,需要有会话管理,这个层次用来会话管理。
第六层表示层
表示层用于数据格式转换和数据加密,如 TLS 的加密方式,使通信双方进行协商,以防止数据的篡改,符合相关安全要求。
第七层应用层
就是我们所谓的 Payload
OSI 模型协议分布如下图:
以太网帧结构
下图是一张以太网帧的结构图。这个结构图很清晰地描述了整个以太网帧每个部分组成。
对我们来说能抓到的或者能看到的报文帧,基本上是在目标 MAC 地址到 IP 数据包。
上图中的前导码和帧开始符主要做一些底层的数据传输和编码流的二进制流,它们本身不会被网卡捕获,网卡一般抓包的时候就已经将前导码跟帧开始符解析掉了。
还有帧后面的校验码,其主要是通过 CRC 校验判断帧是否有效或者发生篡改或错误,当网卡能收到数据帧并通过抓包工具可以抓到的,就说明该帧没有问题,是有效的,当帧是有效的后,就说明 CRC 就已经解析掉了。
所以,在整个以太网帧中,能看到的就是目标 MAC 地址、源 MAC 地址、帧类型以及 IP 数据包,当然 IP 数据包中还会细分许多协议,每个帧之间也是跟 CAN 类似有,有一定的距离,不可能一帧挨着一帧传输的。
IP 数据包里面,有 46~1500 字节的长度约束。这不是由 ECU 决定的。在我们使用的设备中,会有一个最大传输单元(MTU)、MTU 一般默认是 1518 个字节,这就导致 IP 数据包最多只有 1500 个字节。
以太网单个最大帧:6(目的 MAC)+ 6(源 MAC)+ 2(帧类型)+ 1500(IP 数据包)+ 4(CRC 校验)=1518 字节,如果带 VLAN 就是 1522 字节(VLAN 会多出四个字节的帧类型描述)
以太网最小帧:6(目的 MAC)+6(源 MAC)+2(帧类型)+46(IP 数据包)+4(CRC 校验)=64 字节
常见的以太网帧类型:
- 0x0800:IPv4
- 0x0806:ARP
- 0x22F0:AVTP
- 0x8100:VLAN Tag(TPID)