当今时代,智能汽车已成为一个炙手可热的话题,各种先进汽车电子技术蓬勃发展,比如自动驾驶、V2X、OTA......这些新技术的背后都离不开车载以太网通信技术的支持。
其中数据链路层实现了链路管理、虚拟局域网的划分并可提供服务质量,因此数据链路层是车载以太网中很关键的一部分。下面让我们一起走进数据链路层及其测试的世界吧。
数据链路层简介
ISO提出的七层OSI模型是现代通信的理论基础,这七层由低到高分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
图 1 OSI参考模型即各层解释
参考图2可以看到车载以太网与传统以太网比较,数据链路层涉及知识点内容基本一样,主要包括Ethernet帧、MAC和VLAN等。
下面对数据链路层的主要知识点做简要介绍:
图 2 车载以太网与传统网络对比图
1.1 MAC地址
MAC地址也叫物理地址,通常在网络设备制造商固化网络设备的EPROM中。
MAC地址由二进制的48位(6个字节)组成,通常以12个十六进制的数表示
如00-E0-FC-EA-40-33。
前6个数为组织标识符(OUI),表示制造商编码;
后6个数是扩展标识符(EID),表示制造商某个产品的序列号。
一般不做更改的话,某一个MAC地址在全世界是唯一的。
常见的OUI有00-E0-FC(HUAWEI)、00-26-C6(Intel)和00-00-F0(Samsung)。
图 3 MAC地址组成
MAC地址主要分为三类:单播地址、组播地址和广播地址。
1.2 Ethernet帧格式
Ethernet帧具体的组成可参考图4,
目的地址、源地址和类型组成该帧的以太网首部。
FCS组成以太网尾部。
数据包含了数据链路层以上各层添加的协议首部和应用数据,
如图4所示,数据应包括IP首部、TCP首部和应用数据。
图 4 Ethernet帧格式
Ethernet帧组成介绍如下:
- 目的地址:帧到达设备的MAC地址
- 源地址:帧发送设备的MAC地址
- 类型:标识上一层使用的协议类型,比如0x0800(IPv4协议)、0x0806(ARP协议)和0x86DD(IPv6协议)
- 数据:上层传递下来的内容,字节长度介于46~1500字节之间
- FCS:32位的CRC校验码,校验的字段包括目的地址、源地址、类型和数据字段
1.3 虚拟局域网VLAN
虚拟局域网(VLAN)是一组逻辑上的设备和用户组成的网络,这些设备和用户并不受物理位置的限制,相互之间的通信就像在同一个局域网中一样。
说到VLAN技术,不得不提IEEE802.1Q标准,该标准定义了一切关于VLAN连接介质访问控制的规则并对VLAN通信的数据帧格式做了定义。
VLAN有诸多的优点:
- 增加了局域网设计的灵活性;
- 限制广播域,提高网络传输效率;
- 提高网络安全性,禁止跨VLAN访问,VLAN间不会相互影响。
因为这些优点,VLAN不仅在传统网络中被广泛使用,车载以太网中也同样应用广泛。
图 5 802.1Q帧格式
802.1Q帧基于Ethernet帧增加了4字节的802.1Q标记,增加部分简介如下:
- TPID:标签协议标识符,表示帧类型,取值为0x8100表示802.1Q帧
- PCP:表示帧的优先级,取值范围0~7,取值越大优先级越高
- CFI:标准格式指示位,以太网中CFI=0,表示规范格式
- VLAN ID:共有4096个VLAN(0~4095),其中0、4095为保留VLAN
1.4 数据链路层地址学习
数据链路层的寻址和链路管理都是通过交换机实现的。
交换机内部有一个上电后自动建立的MAC地址转发表,维护记录了MAC地址与其所对应端口的关系。 交换机是依据报文的目的MAC地址和MAC地址转发表转发数据报文。
MAC地址转发表包含三项基本内容:
- MAC地址(目的MAC地址)
- 端口(MAC地址对应端口)
- VLAN ID(MAC所属VLAN)
数据链路层的地址学习主要指交换机的地址学习,是通过将接收报文的源MAC地址和对应的端口记录在MAC地址转发表的方式来完成的。在配置VLAN后,交换机有共享VLAN学习和独立VLAN学习两种MAC地址学习方式。
(1)SVL(Shared VLAN Learning)即共享VLAN学习
交换机将所有端口学习到的MAC地址全部记录到一张共享的MAC地址转发表中,任意端口接收的包含任何VLAN的报文都参照此表进行转发处理。
图 6 共享VLAN学习
(2)IVL(Independent VLAN Learning)即独立VLAN学习
交换机为每个VLAN维护独立的MAC地址转发表。某VLAN内的端口接收的报文,其源MAC地址只被更新到该VLAN对应的MAC地址转发表中,其他VLAN的MAC地址转发表是无法查询该表信息的。
图 7 独立VLAN地址学习
为便于交换机的链路管理,MAC地址转发表一般可分为静态地址表、动态地址表和过滤地址表。
静态地址表记录端口的静态MAC地址,该地址通常不会老化。如果数据链路固定,采用静态地址表可以省略地址学习的过程,提高交换机的转发效率。
动态地址表是通过前面介绍的地址学习获得的,但动态地址表的空间有限,为节省资源,交换机采用老化机制维护地址表。
交换机在完成某地址的学习后启动定时器,在老化时间内没有再次收到相同的源MAC地址报文,该地址会从动态地址表中删除。
交换机通过配置过滤地址对某些源地址或目的地址是这个地址的帧进行过滤。
1.5 服务质量(QoS)简介
服务质量是指利用各种网络技术为指定的网络通信提供更好的服务能力,用来解决网络延迟和阻塞的一种技术。一般谈到服务质量主要指的是带宽、时延、抖动、丢包率。
服务质量如何实现呢?
首先对进入的数据流按照一定的规则划分成不同的数据流;
根据入口的配置、报文的VLAN标签中PCP字段对报文进行标记;
约束已分类的数据流所占用的带宽;
将数据流中的报文送往端口的某个输出队列中;
采用调度算法发送队列中的报文;
最后对出口的流量进行整形,实现服务质量。
图 8 交换机服务质量实现示意图
TC8数据链路层测试规范
2.1 TC8数据链路层测试规范概述
OPEN(http://www.opensig.org)组织由全世界主要整车厂和供应商组成,旨在推广以太网技术在车辆中的应用。OPEN下属多个技术委员会(Tech Committee,简称“TC”),对不同方面的技术细节进行量化定义,并发布相应规范。其中,TC8规范包括车载以太网ECU从物理层到应用层的各层操作性以及常规基础功能服务,目的在于提高不同ECU之间的兼容性。
《OPEN Alliance Automotive Ethernet ECU Test Specification Layer 2 – TC8 ECU Test》是TC8数据链路层的测试规范,该测试规范囊括了大多数数据链路层的测试规范,涉及VLAN、常规功能、地址学习、帧过滤、时间同步、服务质量和配置等方面。
2.2 TC8数据链路层测试连接设置
TC8为保证测试结果的可靠,对测试中Test Station和DUT的连接做了要求。图9是TC8数据链路层的测试中用到典型连接设置图。
图 9 交换机标准测试设置
2.3 TC8数据链路层测试规范介绍及实例
TC8数据链路层测试规范中的测试用例是按功能域分组的。应根据ECU的配置,挑选相应的功能域和测试用例对其进行测试。TC8数据链路层测试的功能域可分为7个部分,下面对各功能域和测试用例做简要介绍。
(1)VLAN测试
本部分测试DUT是否根据VLAN要求对未标记、单标记和双标记的帧进行丢弃或转发到相应的端口。
如果目的端口是内部端口,一般使用ICMP报文和ARP报文进行测试;
如果目的端口是外部端口,一般采用广播报文进行测试。
VLAN测试的大致步骤是先从Test Station发送报文到DUT的每个端口,再监听相应的端口是否收到了期望的报文,根据DUT的行为是否符合其VLAN配置需求判断测试是否通过。
图 10 VLAN测试工程脚本图(蓝框内为报文发送和监听函数)
(2)常规测试
本部分测试的是DUT的常规功能,包括储存转发功能、启动时间、入出口的镜像、端口禁用、最大帧的限制和最大队列限制等。
以储存转发功能测试为例,测试步骤大致是先构造可以转发到其他端口的有效帧从Test Station发往DUT;然后监听各端口并在期望的端口收到该帧;最后将有效帧的FCS更改并发给DUT,监听所有端口。如果无法收到该帧,说明交换机有储存转发功能。
图 11 储存转发功能测试工程脚本图(蓝框为两组发送监听函数)
(3)地址学习
本部分测试的是DUT地址学习的功能,包括ARL地址的读写、外部端口的地址学习、内部端口的地址学习、动态地址的老化时间、禁止地址学习、未知目的MAC地址的处理、静态MAC地址的确认、地址学习一次性模式、地址学习数量限制、共享VLAN地址学习、多播地址学习和未知源MAC地址的处理。
(4)帧过滤
本部分测试的是DUT的帧过滤规则,比如是否根据需要丢弃或转发至特定端口,亦或者限制某种帧的入口速率等。
(5)时间同步
这部分测试时钟同步主端口的时间信息会不会受到干扰。该测试要求DUT具备至少一个IEEE1588或IEEE802.1AS/IEEE8021.1AS-Rev的时钟同步主端口,并且需要桥接时域中的时钟同步主端口。
(6)服务质量
本部分测试的是DUT的服务质量配置是否按照要求设置。这些设置包括:
- 特定的端口配置了严格优先级作为传输选择算法;
- 特定的端口使用加权轮询作为传输选择算法;
- 是否按要求配置了VLAN优先级和内部流量类别之间的映射;
- 正确配置基于速率的流量整形器。
(7)配置测试
本部分测试的是DUT在完成配置前是否支持转发模式。
一般DUT在上电后完成配置前是不会对已接收报文进行转发的。因此,测试的方法是在DUT上电前通过Test Station向DUT的端口发送报文,监听各端口收到的报文。如果在DUT配置完成后端口才收到转发报文,说明DUT在完成配置前是不支持转发模式的。
总结
本文介绍数据链路层的主要技术点,包括MAC地址、帧报文、VLAN、地址学习和服务质量等,以及介绍了TC8数据链路层测试内容和方法。通过这篇文章的介绍,相信大家对数据链路层以及TC8数据链路层测试有了一定的了解,希望这篇文章可以起到抛砖引玉的作用,帮助大家理解车载以太网数据链路层及其TC8相关测试并自行探索更深更丰富的车载以太网通信的知识,因篇幅有限,我们今天就介绍到这里啦,期待大家能在下方的留言区与我们进行交流哦~
更多精彩推荐: