SOME/IP(Scalable Service-Oriented Middleware over IP),即“運行於 IP 之上之可伸縮面向服務中間件”,係寶馬集團於 2011 年主導開發,其後被 AUTOSAR 聯盟接納並標準化之一種車載網絡通訊協議。佢位處 OSI 七層模型嘅應用層,基於 TCP/UDP 傳輸,係支撐新一代智能汽車面向服務架構(SOA) 同車載以太網通訊嘅核心技術。
理解 SOME/IP,首先要理解佢同傳統車載通訊(如 CAN、LIN)嘅本質區別。傳統總線係面向訊號(Signal-Oriented) 嘅,ECU 會週期性或者按變化廣播數據,無論其他 ECU 是否需要,這導致總線負載較重。
SOME/IP 則係面向服務(Service-Oriented) 嘅,遵循“有需求先通訊”嘅原則。只有客戶端(Client)明確請求或者訂閱服務時,服務器端(Server)先發送數據。呢樣大幅降低咗總線負載,並令通訊架構更靈活、更易于軟件功能嘅迭代同擴展。
舉個例:傳統 CAN 總線係“廣場大喇叭”,唔管周圍有冇人聽,都持續廣播信息;SOME/IP 則係“電話專線”,只在需要先建立連線、定向通訊。
SOME/IP 作為中間件,提供咗豐富嘅功能嚟保障服務間嘅通訊:
序列化(Serialization):將唔同作業系統同硬件架構(如 AUTOSAR、Linux、QNX、Android)上嘅數據結構統一轉換為標準化嘅網絡傳輸格式,確保異質設備間嘅互通性。
遠程過程呼叫(RPC):允許一個 ECU(客戶端)好似呼叫本機函數一樣,遠程呼叫另一個 ECU(服務器)上嘅方法或者過程。呢係實現服務呼叫嘅核心機制。
服務發現(Service Discovery, SD):呢係 SOME/IP 嘅“自動建聯”機制。服務器透過 SD 廣播自己“提供邊啲服務”,客戶端則透過 SD“搵”所需服務。雙方透過“提供/搵”握手,完成服務嘅動態發現與訂閱。
發布/訂閱(Publish/Subscribe):客戶端向服務器訂閱特定事件或者欄位。當該事件發生或者欄位值有變嘅時,服務器會自動將更新推送畀所有訂閱嘅客戶端,毋須客戶端重複查詢。
SOME/IP 主要支援以下四種通訊模式,構成咗服務交互嘅完整形態:
Request/Response(雙向方法):客戶端請求,服務端回應。呢係最常見嘅“一問一答”模式,常用嚟讀取狀態或者觸發一次過動作。
Fire&Forget(單向方法):客戶端單向發送請求,服務端唔會回覆回應。適用嚟日誌記錄、通知等場景。
Event(事件通知):客戶端透過 SD 訂閱事件組後,服務端喺特定事件觸發嘅時(如檢測到限速標誌),主動向客戶端發送通知(Notification)。
Fields(欄位):可遠程訪問嘅“屬性”。客戶端可以透過Getter方法讀取佢嘅值,透過Setter方法修改佢嘅值。同時,欄位值有變嘅時也能好似 Event 一樣自動通知客戶端。
SOME/IP 並非孤立協議,而係同車載以太網嘅物理層、TSN 時間敏感網絡技術協同,共同組成現代智能汽車嘅通訊骨幹。據一項研究,SOME/IP 同 TSN 融合嘅架構可將服務導向流量嘅平均抖動控制在17.12 微秒以內,呢為佢喺自動駕駛等實時性要求嚴格嘅場景入面應用提供咗可能。
而家,SOME/IP 已被 AUTOSAR 標準接納,並廣泛應用於 Android Automotive OS 等車載平台,實現咗跨 ECU 嘅標準化通訊。隨著“軟件定義汽車(SDV)”嘅深化,SOME/IP 作為面向服務架構嘅關鍵載體,其地位會越嚟越重要。