CAN全称是Controller Area Network的缩写,即控制器局域网络,属于工业现场总线,是ISO国际标准化的串行通信协议,在汽车网络通讯上广泛使用。Classic CAN的一种经典应用是信号传输。如下图所示,这种CAN总线的信号传输只用到了物理层、数据链路层和应用层。CAN的数据帧直接可以解析成应用报文和信号。但是考虑到车载网络的可靠性要求和器件通用标准化要求,CAN通讯针对物理层和数据链路层作了更详尽的分析和协议标准规定。图2:基于CAN的信号通讯与OSI模型 具体来看,CAN的数据链路层分为逻辑链路控制(LLC)子层和媒体访问控制(MAC)子层。MAC子层的功能主要是传送规则,即控制帧结构、执行仲裁、错误检测、出错标定和故障界定;LLC子层的功能主要是报文滤波、超载通知和恢复管理。物理层则由收发器、传输介质(线缆)和接口实现,负责定义总线电压和容错性能等。当然除了简单的信号传输,CAN通讯还可以用来做诊断等应用。这种场景下,则需要细分网络层、传输层等其他层次,以支撑更复杂的通讯应用。
以SOME/IP通讯为例
SOME/IP (Scalable service-Oriented MiddlewarE over IP),即“运行于IP之上的可伸缩的面向服务的中间件”。它是车载以太网通信引入的一个概念,本身属于OSI 模型第4层之上的应用层协议,主要为针对汽车电子的应用层提供API接口,并已经纳入了AutoSAR标准体系。如下图所示,对于4层及以下的协议,SOME/IP可以复用互联网相对成熟的协议。下层的MAC Header、IP Header、TCP/UDP Header都可以基于现有协议定义,底层的寻址逻辑、建链逻辑、流量控制、错误控制等都可以较好地复用现有硬件设备或者软件协议栈。图3:SOME/IP通讯与OSI模型 SOME/IP协议实际上对数据的序列化和反序列化、远程调用机制和服务发现机制等都进行了定义,也涉及到会话层和表示层的部分功能。但是整个协议没有特殊的细分层次需求,所以在通讯协议上无需再划分不同的子层协议。回到开头的例子,这就像一间小型公司,可能看分析报告、整编模板和追踪快递都由同一个人来负责,而不是三个岗位。通过CAN和SOME/IP通讯这两个例子,我们可以进一步理解OSI参考模型在我们分析网络通讯时能起的作用。这个通用模型实际上更像一个指导工具,把网络操作分成低复杂性单元,帮助设计和理解新网络。层次的划分使各层独立,减少相互影响。例如设计应用层SOME/IP协议的同时,可以复用原有的下层协议而不干涉。这种灵活性也使得根据网络特性而单独替换某层协议十分方便,解决了异种网络互连时所遇到的兼容性问题。当然除了CAN和SOME/IP通讯,OSI 模型也用于DoCAN、DoIP、蓝牙、5G、Wi-Fi等多种汽车相关的网络通讯。希望这篇文章能让大家有所收获,在遇到更多的网络通讯问题时能使用到OSI模型这个利器。参考来源:1. What Is the OSI Model,https://www.imperva.com/learn/application-security/osi-model/2. SOME/IP in a Nutshell, https://assets.vector.com/cms/content/events/2019/VH/VIC2019/Track_1_5_Glancing_Ethernet_communication_for_Automotive_4.pdf