服務導向通訊驗證解決方案:SOME/IP 與 DDS 的模擬、測試與 QoS 分析

SOME/IP 與 DDS 常被拿來比較誰比較好,但這個問題本身就問錯了。兩者的定址方式不同、品質控制的細緻度不同、所屬的生態也不同——選哪一個取決於您的架構要求與供應鏈生態,不是技術優劣之爭。歐特莫夫協助客戶把這個決定講清楚,並建立一套能真正觀測服務行為的驗證環境:服務有沒有被發現、訂閱有沒有成立、品質條件兩端有沒有談攏。這些問題在訊號式通訊裡不存在,卻是服務導向架構最常卡住的地方。

01 我們的技術方法

  • 依架構要求與供應鏈生態選定中間件,而非比較功能表
  • 驗證服務發現、訂閱與生命週期行為,而不只是封包通不通
  • 確認品質條件在讀寫兩端相容——不相容就不會建立連線
  • 把時間同步納入驗證前提,否則時序問題無從判斷

02 使用的核心工具

我們利用業界標準的 Vector 工具來執行此解決方案:

服務導向通訊的模擬與分析環境。可扮演服務提供者或消費者,並在追蹤與圖形視窗中觀測服務層的互動。

CANoe 的 DDS 支援

匯入 IDL 定義的主題型別並轉為模擬環境可用的通訊模型,品質條件可逐項設定,也支援 DDS 的資安擴充。

把服務行為的驗證做成可重複執行的測試序列,供整合階段共用。

VN5000 系列
更多工具介紹

車載乙太網介面。提供精確的時間戳記與分接模式,用於非侵入式的流量擷取。

CAPL / C# / Python

模擬節點與測試邏輯的實作方式,可依團隊既有的語言能力選擇。

03 技術難點

選型的討論常變成「哪個比較好」:實際上兩者的定址方式、品質控制細緻度與生態都不同,該問的是「我們的架構與供應鏈適合哪一個」。
訊號式通訊的除錯經驗用不上:服務導向架構的失敗多半不是封包錯誤,而是服務沒被發現、訂閱沒成立,或兩端的品質條件談不攏。
執行期會變動:服務可以上線、下線與重連,測試若只驗證「正常情況下通得過」,就漏掉了最容易出問題的那一段。
時間同步沒先建立:沒有共同的時間基準,跨節點的時序問題根本無法判斷是誰的責任。

SOME/IP 與 DDS 差在哪裡?

SOME/IP 由 AUTOSAR 定義,以服務與方法的識別碼定址;互動方式包含方法呼叫(分為需要回應與不需回應兩種)、事件通知,以及可讀可寫的欄位,服務發現由專門的機制負責。DDS 由 OMG 定義,改以「主題加上品質條件」定址:發布端與訂閱端各自宣告自己要求的品質,兩端相容才會建立連線。生態上,SOME/IP 同時存在於 AUTOSAR 的傳統平台與調適平台;DDS 主要用於調適平台,也是機器人領域 ROS2 的基礎。這個生態差異,往往比技術規格更能決定選型結果。

服務導向通訊真正需要驗證的是什麼

服務導向通訊真正需要驗證的是什麼
服務發現:連線建立之前的那一段

提供者上線後宣告自己提供什麼、消費者尋找目標服務——這一段在訊號式通訊裡不存在。驗證重點是服務上線、下線與重連時的行為是否如設計預期,而不是穩定狀態下通不通。

品質條件必須兩端相容

DDS 讓發布端與訂閱端各自宣告可靠性、期限、存續等品質要求,兩端相容才會建立連線。這是 DDS 特有、也最容易讓工程師卡住的地方:程式沒有錯,但條件不相容,資料就是不會過來。驗證環境必須能把兩端的宣告攤開來比對。

介面定義是驗證的起點

不論走哪一種中間件,介面都要先有機器可讀的定義:SOME/IP 側可來自 AUTOSAR 描述檔或通訊描述語言,DDS 側則以 IDL 定義主題型別再轉入模擬環境。定義不完整,後面的自動化測試就無從產生。

時間基準:時序問題的前提

跨節點的時序驗證需要共同的時間基準,這由乙太網的時間同步機制提供。沒有先把時間同步建立起來,延遲與順序的問題只能各說各話,無法歸因到具體的節點。

歐特莫夫的技術服務流程

這四個階段把「選型」放在最前面,因為選錯中間件的代價會一路累積到供應鏈協作。

1
階段一

生態盤點與中間件選型

盤點您的軟體平台、供應商生態與品質控制需求,據此決定走哪一種中間件,或兩者並存。產出是一份選型依據的說明——這份文件在跟供應商對接時,比任何規格表都有用。

2
階段二

介面定義與模擬環境建置

把介面定義匯入模擬環境,建立可以扮演提供者或消費者的節點。此時同步把時間同步機制設定好,讓後面量到的時序資料是可信的。

3
階段三

服務行為與品質條件驗證

驗證服務發現、訂閱、上下線與重連的行為,並比對兩端宣告的品質條件是否相容。異常情境要刻意製造——服務突然消失、訂閱被拒絕、條件不匹配,這些才是上線後會遇到的。

4
階段四

自動化與跨供應商整合

把驗證做成可重複執行的測試序列,並在多方供應商的整合階段作為共同的判定依據。有一套雙方都認可的測試,整合會議就不必花時間爭論是誰的問題。