SOME/IP 學習筆記


定義

SOME/IP 即 Scalable service-Oriented MiddlewarE over IP,是定義在傳輸層(TCP/UDP)之上的面向服務的中間件,是汽車以太網面向服務的架構 SOA 中的重要內容。
image
image

功能

SOME/IP 支持:

  • 序列化
  • RPC 遠程調用
  • 服務發現 SD
  • 發布/訂閱
  • UDP 拆包組包

服務

服務是 SOME/IP 的核心,服務端提供服務,客戶端使用服務。服務由零個或多個方法事件以及字段組成。

方法 Method

客戶端調用服務端的函數/程序/服務/方法。方法有兩種形式:

  • Request & Response:常規的客戶端請求,服務端響應
  • Fire & Forget(Request_NoReturn):單向客服端請求,服務端不響應
    image

事件 Event

客戶端向服務端訂閱事件組 EventGroup,當事件組有更新時,服務端發布消息,通知所有訂閱的客戶端
image

字段 Field

方法和事件的組合,提供 Getter/Setter 兩個方法用於獲取/設置字段值,以及一個 Notification 事件,當字段值變化時,服務端發布消息,通知訂閱的客戶端。
image

消息格式

image
image
各字段含義如上圖,其中 Message Type 取值及含義如下表:

Message Type 報文類型 說明
0x00 REQUEST 請求,需要回復
0x01 REQUEST_NO_RETURN 請求,不需要回復
0x02 NOTIFICATION Notifier/Event,不需要回復
0x80 RESPONSE 回復
0x81 ERROR 錯誤

服務發現 SOME/IP SD

服務發現主要用於

  • 定位服務實例
  • 檢測服務實例狀態是否在運行
  • 發布/訂閱行為管理

SOME/IP SD 也是 SOME/IP 消息,遵循 SOME/IP 消息格式,有固定的 Message ID、Request ID 以及 Message Type 等。並對 SOME/IP Payload 進行了詳細的定義。
image
SOME/IP SD 只用 UDP 協議的 30490 端口通信。

SOME/IP SD 的 Payload 中主要包含 Entry 和 Option:

Entry

用於提供服務、發現服務、訂閱事件組。Entry 有服務和 EventGroup 兩種:

服務 Entry

image

EventGroup Entry

image

Entry 的類型有
image

有的類型具有相同的值,這時需要通過 Entry 中的 TTL 字段來區分到底是 Start 還是 Stop,是ACK 還是 NACK。

SOME/IP SD 提供了兩種動態發現服務的機制。一種是 Offer Service(Type = 0x01),由服務端廣播其提供的服務;另一種是 Find Service(Type = 0x00),由客戶端請求可用的服務。

Option

Option 字段用來傳輸 Entry 的附加信息,包括對於服務實例的 IP 地址、傳輸協議、端口號等信息。
image

例如 Type = 0x04 時
image

有關 SOME/IP SD 報文格式的詳細解析可以參考 SOME/IP-SD 深入淺出 -熊貓眼老阿姨 一文。

Reference


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM