IP 服务发现是目前汽车以太网中使用最多的协议之一,因为它提供了面向服务通信的灵活性,而不是普通的固定通信。
它还提供了一种在不同汽车堆栈之间进行通信的方式,"例如经典 AUTOSAR、自适应 AUTOSAR、GENIVI 等......"
服务发现协议以分散模式在通信模式下工作:
- 发布/订阅所需的数据 "事件"
- 请求/响应 "带返回值的方法"
- 唤醒并遗忘 "无返回值方法"
工作原理
服务器可以提供服务,客户端将订阅服务数据,然后,服务器将只向订阅的客户端发送数据。
最终,我们可以看到不同的 ECU 提供多种服务,而每种服务都被不同的 ECU 作为服务数据的消费者所消费或订阅。
在经典的 Autosar 世界中,这是通过服务发现模块 "SD "和插座适配器模块 "SoAd "来实现的。
SD 可控制 SoAd 套接字连接,根据服务器或客户端状态按需打开或关闭连接。
如果服务器提供服务 A,客户端使用服务 A/B,服务器端的 SD 将打开负责服务数据 Tx 路径的套接字连接,客户端的 SD 也将打开负责 Rx 路径的套接字连接,以便将数据转发给上层和应用程序使用。
这种高效的方法允许只向相关客户端传输和接收所需的数据,从而减少了网络带宽和 ECU 的计算能力。
安全分析
然而,该协议应用广泛,效率极高,但却缺乏汽车通信的一个非常重要的方面,即安全性。
该协议目前采用纯文本模式,缺乏发送者的真实性、数据的完整性和数据的保密性等重要功能。
该协议本身没有规定任何安全措施,但也因为它的实施而使其他安全协议的实施变得困难。
SD 是一种分散式协议,主要使用 UDP 协议、组播和 N:M 通信,因此 TLS 等协议无法在此有效使用,因为它需要通过 TCP 进行 1:1 会话设置。
任何人只要使用适当的工具进入以太网网络,就可以监视总线,了解汽车中运行的 SD 服务,然后开始向同款汽车或另一款同型号汽车注入数据包。
影响数据吞吐量的可用变通方法
使用 TCP 进行数据传输时,请求客户端必须与服务器建立连接。在这种情况下,可以使用 TLS,但日期吞吐量会降低,因为服务器必须手动拉动所有客户端来发送数据。