Automotive Ethernet

基于以太网和IP的通信已在汽车行业中使用多年,如今这种通信技术越来越多地用于车内的数据传输。

动因

历史背景

近几十年来,为了让驾驶更安全、更舒适以及更环保,汽车的功能也越来越多。我们越来越多电子元件用于实现这些功能,与此同时,这些电子元件对信息交换的需求也在不断增加。电子元件包括电子控制单元(ECU)以及支持自动驾驶且功能日益强大的传感器和执行器。

日益增加的需求

除了传统的驾驶要求,对于汽车多媒体和信息娱乐系统的要求也越来越高。例如,当前已有各种不同的音视频系统,可满足车辆用户和乘客的娱乐需求。许多车辆具有连接智能手机或其他可连网设备的功能。目前,网络化程度增高的大趋势正进一步影响着这些系统,并将最终增加对于车内数据传输的可用带宽的要求。

以太网

近几十年来,以太网已被证实是通信系统中的一种灵活、可扩展的网络技术。以太网的主要优势之一是支持多种物理介质,这使其可以应用于汽车。由于物理介质与协议无关,因此可以轻松开发或调整其他传输技术,以满足汽车行业的要求。因此,以太网将在未来车辆平台中长期使用。

标准化

IEEE(The Institute of Electrical and Electronics Engineers,美国电气与电子工程师协会)

自1980年以来, IEEE一直负责以太网的维护和进一步开发。尽管各家公司都可提供专有的以太网解决方案和增强功能,但大多数情况下,这些公司会将这些解决方案和增强功能交给IEEE以确保涉及更广泛的应用领域,从而获得商业上的成功。工作组 802 负责以太网。因此,所有与以太网相关的标准的编号都以802开头(如IEEE 802.1、IEEE 802.2、IEEE 802.3等)。

OPEN Alliance SIG

汽车整车厂和供应商组成OPEN Alliance SIG,致力于促进以太网在汽车行业的进一步发展。多个技术委员会致力于创建规范,以及监控市场渗透率,确保元件、测试和分析工具的可用性。OPEN Alliance SIG携手IEEE,将车载以太网转化为通用标准。

IEEE 100BASE-T1(前身即OABR)

标准

OABR(Open Alliance BroadR-Reach)是一种物理传输技术,起初由Broadcom(博通公司)开发,后由OPEN Alliance SIG 标准化为IEEE 100BASE-T1。

物理连接

传输对称差分电压的双绞电缆用于物理连接。发送方将需要发送的位流编码成用电压表示的符号。接收方将收到的符号流进行解码从而获取其中包含的位。

image-20230329160324768

image-20230329160338136

编码(Encoding)和解码(Decoding)

4B3B、3B2T和PAM3方法用于编码和解码以及产生差分电压。这些方法由IEEE 100BASE-T1 PHY实现,集成在ECU的一个特定模块中。PHY在物理介质和以太网控制器之间建立连接。

image-20230329160348867

拓扑结构(Topology)

每根电缆仅连接两个节点。因此,仅支持点对点(point-to-point)拓扑结构。某些设备可以连接两个以上的节点,通常是交换机。交换机作为第 2 层连接设备,可以连接多个物理连接,并且可以独立地在分支之间转发报文。

全双工(Full duplex)

该物理层的特点之一是可以用双绞线以100 Mbit/s的速度双向传输信息,即两个相互连接的节点可以同时发送信息(全双工)。作为发送方时,节点会将自己的差分电压施加到双绞线上;而作为接收方时,节点会从总电压中减去自己施加的电压,从而得到对方节点发送的电压。此机制属于回波消除法,也应用在其它以太网系统中。

同步

为了计算差分电压,两个节点必须知道新的电压信号的开始时间。这意味着两个节点必须同步符号流。利用主节点和从节点可以解决此问题:主节点生成一个连续符号流,从节点与之同步。微控制器的基础软件将PHY配置为主节点或从节点。

IEEE 100BASE-TX

物理连接

对于物理连接,IEEE 100BASE-TX通常需要两个通道(channel),每个通道有两条双绞线。尽管某些以太网可以使用单通道进行通信,但实际上这种情况很少发生,因为这些网络仅支持单工或半双工。

image-20230329154956096

image-20230329154935134

编码和解码

双绞线传输对称差分电压,用于表示编码符号。发送方基于所需的位流对符号进行编码。接收方对符号流解码,从而复原发送的位。

与IEEE 100BASE-T1不同,IEEE 100BASE-TX通过使用NRZI、4B5B和MLT-3方法进行编码和解码以及生成差分电压。这些方法由IEEE 100BASE-TX PHY实现,集成在ECU的一个特定模块中。PHY在物理介质和以太网控制器之间建立连接。

电缆和连接器

标准Cat5或Cat5e电缆通常用于IEEE 100BASE-TX。在八条可用线缆中,需要使用四条线缆连接两个通道。EIA/TIA-568A和EIA/TIA-568B标准定义双绞线的分配,以及常用的RJ45接器和插座的引脚分配。

拓扑结构

每根电缆仅连接两个节点。因此,仅支持点对点拓扑结构。某些设备可以连接两个以上的节点,通常是交换机。交换机作为第 2 层连接设备,可以连接多个物理连接,并且可以独立地在分支之间转发报文。

双重单工(Dual Simplex)

如果使用两个通道实现IEEE 100BASE-TX,即可以100 Mbit/s的速度双向传输信息:一个通道用于发送,另一个通道用于接收。如果PHY仅支持固定的通道分配,则必须使用交叉电缆连接两个节点。但目前大多数新式PHY具有自动协商机制,可以自动检测通道的使用情况。有了自动协商机制,就无需使用交叉电缆

IEEE 1000BASE-T

物理连接

对于物理连接,IEEE 1000BASE-T需要四个通道,每个通道有两条双绞线。双绞线传输对称差分电压,用于表示编码符号。

image-20230329155037064

image-20230329155051265

编码和解码

发送方对与位流相对应的符号进行编码。接收方对符号流解码,从而复原发送的位。与IEEE 100BASE-T1和IEEE 100BASE-TX不同,IEEE 1000BASE-T使用8B1Q4、Trellis、Viterbi和PAM5方法进行编码和解码以及生成差分电压。这些方法通过集成在ECU中的IEEE 1000BASE-T PHY模块实现。PHY在物理介质和以太网控制器之间建立连接。

电缆和连接器

标准Cat5e电缆通常用于IEEE 1000BASE-T。连接四个通道需要所有八条可用线缆。EIA/TIA-568A和EIA/TIA-568B标准定义了双绞线的分配,以及常用的RJ45连接器和插座的引脚分配。

拓扑结构

每根线缆反连连到两个节点上。因此,仅支持点对点拓扑结构。某些设备可以连接两个以上的节点,通常是交换机。交换作为第 2 层连接设备,可以连接到多个物理连接,并且可以独立地在分支之间转发报文。

全双工

由于PAM5,两个相互连接的节点可以同时在四个通道上进行发送和接收(全双工)。作为发送方时,节点会将自己的差分电压施加到线缆上;而作为接收方时,节点会从总电压中减去自己施加的电压,从而得到对方节点发送的电压。此机制属于回波消除法,也应用在其他以太网系统中。

同步

为了计算差分电压,两个节点必须了解新符号开始的时间。这意味着两个节点必须同步符号流。利用主节点和从节点可以解决此问题。主节点生成一个连续符号流,从节点与之同步。与IEEE 100BASE-T1不同,主/从节点不是固定的,而是使用自动协商机制进行协商。

特性

基本功能

以太网通信的第二层提供用于控制数据传输的重要基本功能,包括统一的报文结构,节点寻址和总线访问方式(bus access method)。所有基本功能在以太网控制器中实现,目前该控制器通常是微控制器的一个组成部分。

数据传输

符号和符率是针对物理层而言的,第二层传输的是按位组成的以太网帧。位流通常通过介质无关接口(MII)在以太网PHY和以太网控制器之间传输。MII是IEEE标准化接口,具有多种变型以满足不同的传输速度。

总线访问方式

在发送报文之前,以太网控制器首先侦听物理介质(载波监听),判断网络中的另一个节点是否正在发送报文,从而防止报文被覆盖。如果介质处于空闲状态,则以太网控制器开始进行数据传输。

由于多个节点可能会通过以太网同时访问总线(多路访问),因此如果两个节点同时开始发送,则在传统总线网络上可能会发生冲突。对于这种情况,以太网控制器具有用于取消传输的冲突检测(collision detection)功能。为防止产生第二次冲突,节点须等待随机时间之后才开始重新发送(避退过程)。每个发送方必须自己计算随机时间。

冲突检测

完整的总线访问方式被称为载波监听多路访问/冲突检测(CSMA/CD),相关算法在以太网控制器中实现。对于车载以太网的物理层,冲突检测位于次要地位。IEEE 100BASE-T1、IEEE 100BASE-TX和IEEE 1000BASE-T都允许全双工数据传输。因此,这些物理介质上不会发生冲突。

image-20230329155125161

寻址

节点寻址

节点寻址用于在以太网中定向传递报文。为此,每个节点至少具有一个MAC地址,作为局域网(LAN)中的唯一标识。传输的报文始终包含源地址和目标地址,以便可以推断通信节点。

image-20230329155201397

单播(Unicast)

节点使用单播地址作为唯一的寻址手段。主机厂可指定这些地址,或者供应商可以从他们自己的地址范围中进行选择。关于地址范围的获取,供应商可以向IEEE进行申请或者注册,之后便可以获取全球唯一的地址范围。

组播(Multicast)和广播(Broadcast)

为了使报文传递到多个节点,除了单播报文之外,还可以使用组播地址。通过定义一组节点,组内成员可通过共享的MAC地址接收报文。与允许将报文发送到所有节点的广播地址不同,组播地址必须在相应的节点中配置。

VLAN(虚拟局域网)

作为经典寻址方式的扩展,VLAN地址经常用于汽车行业。这些地址虚拟网络存在于整个网络中,并允许划定通信范围。这样就可以为不同的应用划分不同的域,域内成员可相互通信。由于ECU可以使用或提供多个应用,因此可能是多个域的成员,进而可能是多个VLAN网络的成员。

image-20230329155212242

优先级

为了提高实时性(real-time behavior),VLAN还提供定义报文优先级的选项,确保重要的数据优先通过交换机进行路由,从而减少延迟时间。

image-20230329155151519

以太网帧

基本帧和标识帧(tagged frame)

IEEE规范定义了不同格式的以太网帧。汽车行业通常使用Ethernet II帧,包含可以标志VLAN的扩展信息。因此,可以把以太网帧划分为基本MAC帧(不含VLAN)和标识MAC帧(包含VLAN)。

MAC地址

Ethernet II帧通常以接收方/目的地址开头,指定哪些网络节点将接收这帧报文。与发送方/源地址只能使用单播地址不同,接收方/目的地址还可以使用组播或广播地址。对于以太网帧来说,只能有一个发送方,但可以有多个接收方。

以太网类型

基本MAC帧和标识MAC帧通过类型字段(以太网类型)进行区分。类型字段通常会标识有效负载数据区域中所包含的数据包(packet),并提供关于更高层(如IPv4)中使用的协议的信息。如果以太网类型的值为0x8100,那么类型字段将向后移动四个字节,并在其原始位置插入一个VLAN标签。

VLAN标签

VLAN标签由协议标识符(TPID)和控制信息(TCI)组成。TPID包含原始类型字段的值,而TCI由优先级(PCP)、丢弃资格指示符或规范格式指示符(DEI或CFI)和VLAN标识符(VID)组成。标识符和优先级主要应用于汽车行业。标识符为不同的应用领域划分各自的虚拟网络。优先级的设定使得交换机可以通过优先转发重要信息来优化运行时间。

有效负载

在字段类型之后,是Ethernet II帧包含的有效负载数据区域。有效负载的最小长度为46个字节(不含VLAN标签)或42个字节(含VLAN标签)。在汽车行业中,有效负载一般最多可包含1500个字节。

CRC校验和

CRC校验和在Ethernet II帧的末尾。标准算法用于计算校验和,且该算法在发送方和接收方中以相同的方式实现。CRC校验和覆盖以太网II帧所有字段,因此可以确保整个报文的完整性。

以太网数据包

为了传输Ethernet II帧,以太网控制器在开始时会插入一个前导码和一个起始帧界定符(SFD),旧的以太网标准以此做为传输开始的标识。所以以太网数据包包括:前导码、起始帧定界符和以太网II帧。

image-20230329155237672

image-20230329155248224

image-20230329155257992

特性

优势

Internet协议(IP)支持超出局域网范围的通信。为此,对负责实际传输数据的底层协议进行抽象,无需对传输的数据包进行调整即可实现在同一网络中或跨多个网络(如UMTS、WLAN等)访问目标节点。

IP数据包

IP数据包可实现标准化通信,其报头包含目标地址和源地址信息。目标地址可以是非本地网络的节点地址。理论上,IP数据包可以实现对全球范围内的任何节点进行寻址。

路由器(Router)

为了实现各种局域网络的的互联,采用路由器作为连接设备。路由器是一个同时属于多个网络的节点,因此也具有多个IP地址。

为了避免IP数据包在错误情况下依然长时间在互联网上流转,当路由器在网络之间转发IP数据包时,会对IP报头中的一个参数(IPv4报文中的TTL(Time To Live,存活时间)、IPv6报文中的HL(Hop Limit,跳数限制))进行倒计时。该参数值等于零时,下一个路由器会丢弃该数据包。

image-20230329155319093

image-20230329155328422

image-20230329155339942

IPv4 - 版本 4

地址和分类

32位IPv4地址通过点分十进制逐字节表示(如192.168.10.1)。多年以前,IPv4地址分类用于管理Internet公共地址结构。尽管这些分类如今已经没有太大的意义,但通过它们可以对网络地址和主机地址进行基本划分,从而推断网络中的节点数。

本地地址

IPv4地址早已分配殆尽。但本地或私有地址仍可供自由使用,例如在公司或私人网络中。这些地址无法通过公共网络访问,路由器也不会在未更改的情况下将本地地址转发到Internet。

子网掩码(Subnet masks)

IP数据报头所使用的目标和源节点地址由高位(左侧)的网络地址和低位(右侧)的主机地址组成。通常使用子网掩码定义划分IP地址的位置,可以将其表示为独立地址(255.255.255.0)或IP地址加后缀(192.168.10.1/24)。左侧已设置位表示网络地址(如左24个位),而右侧未设置位表示主机地址(如右8个位)。

组播和广播

如果要将IP数据包发送到多个节点,可以使用组播地址或广播地址。组播地址必须通过IGMP协议配置或创建,而广播地址可以通过主机地址得出。主机地址范围的最大值始终对应于相应的广播地址(如192.168.10.255)。

image-20230329155418712

image-20230329155426217

image-20230329155435244

image-20230329155455044

IPv6 - 版本 6

背景

IPv6主要是为了解决IPv4地址不足和优化路由过程而开发的。与IPv4相比,IPv6报头中的字段数量从12个减少到8个。

IPv6地址表示法

IPv6地址通常用冒分十六进制表示:以两个十六进制格式的字节为一组,每组之间用冒号分隔。连续的四个零通常写作一个零或完全忽略。与IPv4不同,IPv6中没有广播地址。广播是一种特殊的多播。

IPv6地址的示例:

  • 1080:0:0:0:8:800:200C:417A (单播地址)
  • FF01:0:0:0:0:0:0:101 (组播地址)
  • 0:0:0:0:0:0:0:1 (环回地址)

IPv6地址中,只包含0的一个序列块或连续多个全0的序列块可以使用双冒号省略表示,但一个IPv6地址中只能出现一次由双冒号替代的省略表达。

  • 1080::8:800:200C:417A (单播地址)
  • FF01::101 (组播地址)
  • ::1 (环回地址)

IPv6地址中的IPv4地址

混合表示法可以将IPv4地址嵌入到IPv6地址中,即十六进制和十进制值混合使用,例如:

  • ::13.1.68.3
  • ::FFFF:129.144.52.38

子网掩码

在IPv6地址中,除非子网掩码另有定义,一般情况下,地址的前64位指定为网络地址,后64位为主机地址。由于地址空间足够大, IPv6很少使用子网掩码。

image-20230329155521865

ARP, NDP, ICMP, IGMP, DHCP

附加协议

为了辅助和支持任务的执行,一系列附加协议在后台运行。例如,汽车行业当前使用以下附加协议:

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)

DHCP协议能够自动将IP地址分配给一个或多个节点。新的IP节点可以自动集成到现有网络中,无需手动配置。

ICMP(Internet Control Message Protocol,Internet控制报文协议)

ICMP协议用于控制任务,是每个IP实现的一部分。一个典型的应用示例是ICMP回应请求(PING)。此命令用于检查两台计算机之间的IP通信。请求节点向目标节点发送PING报文,如果稍后收到了ICMP回应应答(PONG),则表示目标节点可用。

ARP(Address Resolution Protocol,地址解析协议)

ARP协议用于确定IP和MAC地址之间的相关性。如果IP节点想要与已知IP地址但不知道MAC地址的某个目标进行通信,则可以请求获取其MAC地址。发送节点为此向网络广播发送一个包含目标IP的 ARP请求。收到ARP响应后,可将MAC地址保存在ARP缓存中,供后续发送时使用。

NDPNeighbor Discovery Protocol,邻居发现协议)

当使用IPv6时,邻居发现协议(基于ICMPv6)将替换ARP协议。 NDP协议用于以下目的:

  • 路由器发现:识别网络中现有的路由器
  • 前缀发现:确定本地和远程节点的IPv6地址前缀
  • 在不使用DHCP协议的情况下自动配置网络节点的IPv6地址(本地链路地址生成)
  • 参数发现:设置各种参数,如跳数限制

IGMP(Internet Group Management Protocol,Internet组管理协议)

IPv4系统使用IGMP将组播组成员信息传递给组播路由器。

所有需要接收IP组播的主机必须支持该协议。

image-20230329155552482

image-20230329155601732

image-20230329155611146

image-20230329155620218

image-20230329155631629

特性

传输层

OSI(Open System Interconnection,开放式系统互联)7 层模型的第4层有两种传输协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)。TCP协议是面向连接的传输,而UDP协议则是无连接的传输。这两种协议都会将需要传输的数据划分为更小的部分:在TCP协议中称为段(segment),在UDP协议中称为数据报(datagram)。

因为传输协议支持面向连接或无连接的传输,因此适用于不同的用途。根据对安全性和传输速度的要求,可以单独使用TCP或UDP,或者两种协议的组合。

寻址

为了到达目标节点,数据通过第三层的IP协议进行传输。寻址端口用于连接上层的具体应用或功能。如果端口已打开,则可以通过相关的功能或应用程序交换数据。

image-20230329155707141

image-20230329155716518

UDP协议:用户数据报协议

无连接

UDP协议是一种无连接传输协议,支持简单的数据报传输。与TCP协议不同,UDP协议没有用于保障数据传输的机制。发送方不会收到关于数据报丢失或受到干扰的通知,也没有允许重新发送或再次请求数据报的机制。但是,如有需要,可以在更高层的协议中轻松实现这些功能。

优点

UDP协议的优点是传输变化较小。与TCP协议不同,发送方不必等待来自接收方的反馈。因此,不会出现可能延迟数据报发送的额外等待时间。

另一个优点是能够将数据报作为组播或广播发送。这意味着可以将UDP数据报发送到网络中的多个节点或所有节点。因此,在信息必须同时发送到多个接收方的情况下,UDP协议传输可降低总线负载率。

UDP数据包

UDP数据报封装在IP数据包中,并通过IP发送。在此情况下,IP数据包的报头指示所包含的数据是UDP数据报。因为UDP数据报可包含的数据(65,535个字节)超过IP数据包(1,480个字节),所以可使用分包将UDP数据报分成多个IP数据包。

分包

对UDP数据报进行分包时,每个相应的IP数据包都包含两个标识符:一个用于标识UDP数据报,另一个用于标识分包数据在整个UDP数据报中的位置。接收方可以据此将将所有分包数据重组为UDP数据报。如果IP数据包丢失,则接收方将无法重组UDP数据报。由于出现错误后不会再次请求数据,因此接收方将丢弃不完整UDP数据报的所有IP数据包。

image-20230329155737634

image-20230329155750057

TCP协议:传输控制协议

面向连接

与UDP协议不同,TCP协议是面向连接的传输。这意味着在实际的数据传输之前必须在两个节点之间建立连接。IP地址和端口号用于分别标识两个节点。

建立连接

TCP协议使用三次握手(三个步骤)建立连接。意图建立连接的节点首先传输包含SYN(Synchronize Sequence Number,同步顺序编号)标识的段。SYN标识表示发送方想要与接收方建立连接。

除了SYN标志,第一个段还包括单独的序列号、窗口字段和其他可选参数。序列号由一个随机数、ISN(Initial Sequence Number,初始序列号)和一个连续编号组成。连续编号表示当前发送的字节在整个数据流中的位置。接收方根据连续编号确定所有段的顺序,并重组数据流。

窗口字段提供节点的可用内存的信息,确保发送方发送给接收方的数据不会超过其可用内存的允许范围。因为通信是双向的,所以两个节点都可将各自的可用内存信息传递给对方。

在第二步中,原始接收方会发送一个SYN ACK,包含SYN标识和ACK标识,从而通知原始发送方已经接收建立连接的请求,并做出肯定确认。原始接收方还会发送自己的序列号。现在两个节点都了解对方的信息,将来所有用于交换的段都可关联到相应的发送方。

建立连接的第三步(也是最后一步)是原始发送方发送确认报文,通知对方节点已成功建立连接。之后,数据可以在两个节点之间进行交换。

数据传输

由于TCP协议需要在两个节点之间建立连接,因此无法在没有特定接收方的情况下向网络发送广播或组播报文。只有通过连接才能进行可靠的数据传输,各种机制可确保数据到达接收方并且不被损坏。

CRC校验和用于保护段数据在传输期间免受损坏。上文提及的序列号可确保即使先发送的段较晚到达接收方,段的顺序也是已知的(不受到达顺序影响)。

ACK编号用于向发送方确认已接收每个段,前提是未检测到任何错误。接收方通过发送包含ACK标识的段进行确认,这表示该段具有一个有效的ACK编号。每个段还包含有关窗口字段中可用内存的更新信息,以便发送方了解当前可以向接收方发送的数据量。

如果发送方在规定的时间段内未收到肯定确认,则再次发送该段,因为这意味着该段出现故障或未到达接收方。该时间段由重发定时器决定,存在于每个段中,并且单独进行倒计时。收到肯定确认之后,发送方将清除该段对应的定时器。

连接释放

所有数据交换完毕并得到肯定确认之后,连接关闭。为此,节点会发送包含FIN标识的段,表示连接终止。该FIN段的接收方必须进行确认响应,使连接处于半关闭状态。如果接收方也想终止连接,则向原始发送方发送一个包含FIN标志的段。如果得到确认,则完成终止连接,不再传输数据。

image-20230329155811185

image-20230329155820865

image-20230329155831978

image-20230329155844460

SOME/IP协议

背景

一种新的数据传输理念正通过SOME/IP(Scalable service-Oriented MiddlewarE over IP)进入汽车领域。经典的总线系统(CAN、LIN、FlexRay)使用面向信号的数据传输,而SOME/IP协议允许引入面向服务的信息传输。但需要注意的是, SOME/IP协议不仅仅限于描述通信。确切地说,SOME/IP是一种对ECU 软件组件产生影响的中间件。因此,AUTOSAR中有一个单独的软件路径,可连接到应用程序。

按需传输

对于面向信号的数据传输来说,发送方会在有需要时(如数据更新或变更时)发送信息,而不管网络中的接收方当前是否需要这些数据。面向服务的数据传输则不同,只有当网络中至少有一个接收方需要这些数据时,发送方才会发送数据。这种传输方式的优点是网络和所有连接的节点不会被不必要的数据影响(导致负载上升)。因此,面向服务的数据传输要求服务器能够被告知哪些接收者在等待其数据。

订阅内容

客户端可以选择订阅服务器上的服务内容。如果有事件发生,客户端将从服务器接收更新数据。SOME/IP-SD 用于服务内容的订阅。如果客户端希望订阅服务器上的内容,则向服务器发送订阅事件组的报文。如果该内容可以被订阅,服务器将向客户端发送带有肯定确认的响应,表示订阅已激活。如果订阅内容无法访问,服务器通过发送否定确认来拒绝订阅。

多个客户端可以同时订阅同一个服务内容。服务器向客户端发送数据的方法取决于服务通过UDP还是TCP发送。使用UDP协议时,如果事件发生,服务器可以通过单播、组播或广播向所有已订阅的客户端发送数据。如果通过TCP协议提供内容,则每个客户端必须先与服务器建立连接,然后分别进行数据的发送。

事件和字段通知

服务器基于有效订阅发送的内容具有两种形式:事件通知和字段通知,两者都是基于事件驱动的。事件通知对应一个表单,包含表示快照的属性,而这些属性与之前的事件没有任何关系,而字段通知包含与之前内容相关的值,因而支持访问历史值。因此,可以扩展字段从而包括getter和setter方法,使客户端能够读写所需内容。这样,即使没有订阅,客户端也可以只读或读写服务器的内容。

方法

另外一种数据交换的方式就是调用方法。客户端通过执行远程过程调用(RPC),来触发相关服务器上函数的启动。客户端通过向网络发送请求可以调用该函数,客户端的请求中还可以包含函数相关的参数数据。服务器执行函数后,会给客户端回复一个返回值。通常客户端调用方法表示该客户端希望使用生成的数据。但是客户端也可能调用服务器上没有任何返回值的方法。在这种情况下,当方法实际被调用时,客户端部分的操作已完成。

服务发现

为了让客户端知道当前有哪些服务可用,SOME/IP-SD提供两种动态发现服务的机制:通过“提供服务”机制,服务器可向网络发布其所提供的所有服务;通过“查找服务”机制,客户端可以请求可用的服务。

image-20230329155911377

image-20230329155925224

image-20230329155934343

image-20230329155945480

image-20230329155955092

AVB(Audio Video Bridging,音视频桥)/TSN(Time-Sensitive Networking,时间敏感网络)

背景

2012年,IEEE将“音视频桥工作组”重命名为“时间敏感网络工作组”。现有的协议标准继续扩展,并增加更多的功能。AVB/TSN支持低延迟和高质量的流数据(如摄像头数据)传输。由于数据不会跨网络边界传输,因此至少在汽车中,可以不使用IP、TCP和UDP协议,AVB/TSN协议直接基于以太网。

AVB/TSN协议所基于的标准可以通过IP使用,但由于上文所述,以及动态响应问题,因此在汽车内部,AVB/TSN追求更快的运行(即跳过IP,直接基于以太网)。因此,使用流预留协议的动态带宽预留协议一般不用于汽车。

组件

在AVB/TSN中,数据源被称为Talker,数据接收器被称为Listener。连接Talker和Listener的交换机被称为Bridge。从技术上来说这样描述并不精确,除了Talker和Listener之外,交换机也必须支持AVB/TSN功能,因为交换机要能够支持特殊的MAC 组播地址,支持“时间敏感网络的转发和排队”功能,以及更改PTP报文。

流数据

音视频传输协议(AVTP)在其有效负载区域传输数据,通常是视频,音频或控制数据。如果传输的是流媒体数据(音频/视频),那么AVTP 报头中始终会包含一个指向未来某一时刻的时间信息。此外,AVTP使用带VLAN标签的以太网帧,以便交换机可以对数据进行优先级排序。 AVB/TSN提出的另一个质量要求是低延迟抖动,Talker 和Listener 之间的延迟小于2ms。

当携带未来时间点的帧到达Listener之后, AVTP将帧交付给应用层(如Speaker)。为了使这个时间点(Presentation time,呈现时间)在所有接收节点中同时发生,需要对节点进行高度精确的同步。精确时间协议(PTP)负责此项工作,当前大多使用PTP 协议的简化版本,即gPTP协议。

image-20230329160026578

image-20230329160035373

image-20230329160044955

DoIP(Diagnostic Communication over IP,基于IP的诊断通信协议)

背景

以太网在诊断方面的应用已经有多年的时间了,尤其是在ECU的刷写方面。这一应用对汽车制造商和零部件供应商来说非常有吸引力,原因在于极大地缩短生产和售后的刷写时间。

ISO 13400

ISO 13400明确定义基于IP的诊断。只要支持IP数据包的传输,使用何种物理层并没有什么区别。 例如,除以太网之外,DoIP也可以基于WLAN和UMTS来实现。

传输协议

基于ISO13400的DoIP 不是诊断协议,而是一个扩展传输协议。这意味着虽然DoIP定义了诊断数据包的传输,但诊断服务仍然由诊断协议(如KWP2000协议和UDS协议)规定和说明。

需求

DoIP协议需要UDP和TCP的支持。UDP用于状态或配置信息的传输, TCP则通过固定的通信通道传输实际诊断数据包。TCP可确保数据传输的高度可靠性,并自动对大型数据包进行分段。因此,诊断测试仪、带有DoIP诊断功能的ECU(DoIP节点)以及诊断网关(DoIP网关或DoIP边缘节点)都需要支持TCP/UDP协议。

诊断仪

与传统总线系统的诊断相同,诊断仪可以发送诊断请求。测试仪可以采用外部设备的形式,例如售后诊断仪或者车载测试仪。ECU处理诊断请求,并向测试仪返回相应的诊断响应。这要求每个ECU底层都支持DoIP协议。

诊断网关

为了避免在每个ECU底层实现DoIP,DoIP协议允许使用诊断网关。原则上,车辆内传统总线系统连接的所有ECU都是可用的。网关充当中间人的角色,将测试仪的请求转发到内部网络,以便ECU进行接收和处理。当收到ECU的响应时,网关会将该响应路由回测试仪。

逻辑地址

诊断网关需要两方面信息以转发诊断请求和响应。首先,网关需要逻辑地址来对车辆中要诊断的ECU进行唯一标识。其次,网关必须了解在总线或网络上哪些报文将用于发送诊断请求和接收诊断响应。这两方面的信息必须准确提供给ECU,以便其可以通过网关进行访问。

诊断过程

在诊断过程中,诊断网关首先接收来自测试仪的请求。该请求包含诊断数据包,其中携带所需的诊断服务和待诊断ECU的逻辑地址信息。随后网关从该诊断数据包中提取有关内容,并将其打包为可在总线或网络上发送的报文。例如,如果要通过CAN总线对ECU进行寻址,网关需要将带有相应的诊断请求标志符(如0x600)的报文发送到总线,然后等待来自ECU的响应。在收到来自总线或网络的响应(如带标志符0x700的CAN报文)之后,网关会将原始诊断服务的响应返回给测试仪。网关会在返回给测试仪的响应中添加ECU 的逻辑地址,以便测试仪能够区分并分配响应。这样,测试仪可以向位于不同的总线系统和网络的多个ECU发送请求,而无需按照发送请求的顺序等待响应。

image-20230329160102840

image-20230329160111897

image-20230329160120544

本文从VECTOR官网Automotive Ethernet介绍整理而来,原文链接如下:

Ethernet_C: 车载以太网(Automotive Ethernet)学习模块 (vector.com)

猜你喜欢

转载自blog.csdn.net/qgccdd061313/article/details/129857303