前言
SOA(面向服務的架構(gòu))的軟件設計原則之一是模塊化。模塊化可以提高軟件系統(tǒng)的可維護性和代碼重用性,并且能夠隔離故障。舉例來說,自動駕駛系統(tǒng)可以分解為特定的任務模塊,如數(shù)據(jù)采集、狀態(tài)估計和任務規(guī)劃等。為了完成各自的任務,這些模塊需要相互交換信息。在現(xiàn)代操作系統(tǒng)中,將單個模塊映射到獨立的軟件進程非常方便,這些進程可以位于同一計算設備上,也可以位于物理上獨立的計算設備上。這使得進程間通信成為一個深入研究的問題,因為信息交換是通過進程間的通信來實現(xiàn)的。
一.通信中間件
在軟件定義汽車中,應用程序之間的跨進程或跨核通信是一個需要解決的問題。模塊化架構(gòu)為開發(fā)人員提供了便利,但也引入了對通信中間件的需求。
在沒有使用通信中間件的情況下,開發(fā)人員需要自己定義數(shù)據(jù)的格式、發(fā)送方和接收方。然而,使用基于服務/數(shù)據(jù)的發(fā)布和訂閱模式(如SOME/IP和DDS),開發(fā)人員只需要明確需要什么樣的數(shù)據(jù)以及數(shù)據(jù)應該傳遞到哪里,而無需關(guān)注數(shù)據(jù)的發(fā)送方和發(fā)送方式。
以數(shù)據(jù)為中心是相對于傳統(tǒng)的以消息為中心而言的,其本質(zhì)區(qū)別在于通信中間件知道存儲了什么數(shù)據(jù)并能夠控制如何共享這些數(shù)據(jù)。對于傳統(tǒng)的以消息為中心的中間件,程序員必須為發(fā)送消息編寫代碼,而對于以數(shù)據(jù)為中心的中間件,程序員只需為如何共享數(shù)據(jù)編寫代碼,然后可以直接共享數(shù)據(jù)值。
通信中間件可以采用點對點、消息隊列和發(fā)布/訂閱三種工作模式,SOME/IP和DDS都采用了發(fā)布/訂閱模式。
在發(fā)布/訂閱模型中,發(fā)布者和訂閱者通過主題進行關(guān)聯(lián),雙方不需要知道對方在何處,也不需要同時在線。這實現(xiàn)了通信雙方在時間、空間和數(shù)據(jù)通信上的多維松耦合。
此外,與面向信號的CAN相比,DDS和SOME/IP都是面向服務的通信協(xié)議。兩者的區(qū)別在于面向信號的數(shù)據(jù)傳輸始終循環(huán)發(fā)送,而面向服務的通信方式不同,只有在客戶端請求或服務器通知特定訂閱者時,才在客戶端-服務器配置中交換數(shù)據(jù)。這確保了永遠不會浪費帶寬,并且僅在需要的時間和地點進行數(shù)據(jù)通信/交換。因此,面向服務的通信協(xié)議可以大大減少網(wǎng)絡負載,提高通信效率。
在軟件定義汽車時代,車內(nèi)的所有可調(diào)用功能都被視為服務,并提供不同類型的調(diào)用接口,這些接口可以按以下方式分類:
1、API接口:提供各類函數(shù)的調(diào)用接口,使應用程序能夠調(diào)用系統(tǒng)內(nèi)部的功能實現(xiàn)函數(shù)。應用程序可以通過調(diào)用相關(guān)的API接口來提供和使用功能服務。
2、文件方式:以配置文件或設備文件的形式提供系統(tǒng)內(nèi)部的調(diào)用能力。這些文件可以通過配置自動生成,包含有效的配置信息,并且可以在運行環(huán)境中被特定的程序讀取和識別,實現(xiàn)特定的服務。
3、系統(tǒng)原生服務:操作系統(tǒng)和基礎類庫提供的可操作能力,包括對系統(tǒng)CPU和內(nèi)存的監(jiān)測、應用程序的監(jiān)控、系統(tǒng)資源的劃分等。此外,還可以調(diào)用C++、boost等基礎類庫。
4、IPC接口:各種IPC機制提供系統(tǒng)內(nèi)進程間的調(diào)用能力,包括使用套接字(socket)、共享內(nèi)存等進程間通信方式,以及使用特定的跨核通信方式如IPCF。
5、協(xié)議棧接口:通過網(wǎng)絡協(xié)議棧提供跨平臺的調(diào)用能力,包括SOME/IP、DDS、MQTT、HTTP等網(wǎng)絡協(xié)議的調(diào)度服務、接口封裝和協(xié)議轉(zhuǎn)換等。
盡管在互聯(lián)網(wǎng)領(lǐng)域中SOA(面向服務的架構(gòu))已經(jīng)被應用了很長時間,但在汽車行業(yè)中,它算是相對較新的概念。在Adaptive AutoSAR框架中,通信管理模塊包括進程間通信和網(wǎng)絡協(xié)議棧。
鑒于汽車應用場景和通信需求的特殊性,許多互聯(lián)網(wǎng)的SOA技術(shù)并不能直接應用于汽車領(lǐng)域。一般來說,SOA通信中間件系統(tǒng)的各個層面需要滿足以下要求:
1、本地服務和遠程服務之間的通信應該使用統(tǒng)一的接口描述語言(IDL)定義的文件作為契約。IDL是一種中立的接口描述語言,與具體的操作系統(tǒng)和編程語言無關(guān)。
2、SOA框架的底層核心功能應具備以下特點:服務發(fā)現(xiàn)、消息序列化、內(nèi)部事件/消息處理和傳輸功能。應用程序、服務和操作系統(tǒng)之間可以通過標準的通信協(xié)議或服務接口相互通信或訪問,特別是要滿足傳感數(shù)據(jù)的大數(shù)據(jù)吞吐傳輸需求。必須支持典型的車內(nèi)通信協(xié)議,如SOME/IP協(xié)議、DDS規(guī)范等。服務發(fā)現(xiàn)功能應具備訪問控制功能,以防止未經(jīng)授權(quán)的用戶進行竊聽和侵入;傳輸功能應具備數(shù)據(jù)加密和簽名等功能,以確保通信數(shù)據(jù)的安全性。
在未來,汽車將與更多的基礎設施進行連接,為了實現(xiàn)與它們的連接,將需要使用不同的通信協(xié)議。
汽車SOA 通信架構(gòu)
HTTP、MQTT、SOME/IP和DDS等協(xié)議都用于實現(xiàn)SOA架構(gòu)中的通信,只是在不同的場景下承擔不同的責任。例如,SOME/IP協(xié)議用于車內(nèi)節(jié)點之間的服務通信,而HTTP和MQTT用于與互聯(lián)網(wǎng)模塊進行通信。盡管它們在實現(xiàn)機制上有些許差異,但它們可以相互切換使用。
MQTT、DDS、AMQP、REST和CoAP等協(xié)議都已被廣泛應用,并且每種協(xié)議都至少有10種不同的代碼實現(xiàn)。它們都宣稱支持實時的發(fā)布/訂閱物聯(lián)網(wǎng)協(xié)議。然而,在具體的系統(tǒng)架構(gòu)設計中,需要考慮實際場景中的通信需求,并選擇適合的協(xié)議。各種協(xié)議的特點如表所示。
二、SOME/IP 介紹
2011年,寶馬設計并提出了SOME/IP(Scalable Service-oriented Middleware over IP)協(xié)議。SOME/IP采用服務器-客戶端的服務通信模式,并且具備高度可擴展性。SOME/IP協(xié)議是一種應用層協(xié)議,運行在TCP/UDP傳輸協(xié)議之上(車載以太網(wǎng)第四層以上)。它作為以太網(wǎng)通信的中間件,實現(xiàn)應用層與IP層之間的數(shù)據(jù)交互,使其不依賴于操作系統(tǒng),并且兼容AUTOSAR和非AUTOSAR平臺。因此,SOME/IP可以獨立于硬件平臺、操作系統(tǒng)和編程語言。
SOME/IP 協(xié)議架構(gòu)
SOME/IP具備滿足車用需求的特性,主要包括以下幾個方面:基于服務的通信方式,占用空間小,與AUTOSAR兼容(其他中間件不具備兼容性),可伸縮性(適用于小型和大型平臺),以及兼容性(可適用于車輛使用的各種操作系統(tǒng),如AUTOSAR、OSEK、QNX和Linux)。
SOME/IP支持AUTOSAR CP、AUTOSAR AP以及非AUTOSAR平臺之間的通信交互。寶馬設計SOME/IP協(xié)議后,它被AUTOSAR納入正式標準,并隨著CP規(guī)范的發(fā)布而被廣泛應用于車載以太網(wǎng),因此可以說是AUTOSAR CP推動了SOME/IP的廣泛使用。
在AUTOSAR架構(gòu)中,SOME/IP-SD模塊位于AUTOSAR BSW Mode Manager模塊(BswM)和AUTOSAR Socket Adaptor模塊(SoAd)之間。BswM模塊提供了通用模式請求和服務請求之間的連接,而SoAd模塊處理以太網(wǎng)堆棧和SD模塊之間的服務請求。通過配置SoAd中的Socket Connection表,可以接收其他ECU的SD模塊發(fā)送的單播和多播報文。
借助SOME/IP協(xié)議的高度平臺擴展性,可以實現(xiàn)不同平臺之間的數(shù)據(jù)交互,而統(tǒng)一的SOME/IP通信機制是不同平臺通信的前提。為了在不同軟件平臺上運行SOME/IP,實現(xiàn)整車以太網(wǎng)上的SOA架構(gòu)通信機制,AP規(guī)范中也同步引入了SOME/IP,因此在AUTOSAR系統(tǒng)中,CP和AP之間實現(xiàn)SOME/IP通信相對容易。
為了促進非AUTOSAR軟件平臺與車內(nèi)CP和APECU之間的交互,GENIVI系統(tǒng)同樣開發(fā)了一套開源的vSOME/IP軟件源碼,以便與CP/AP進行交互。然而,由于vSOME/IP是開源的,性能可能略有差異,因此需要統(tǒng)一的規(guī)范進行約束,以進行深度的二次開發(fā)。目前,全球最大的商用SOME/IP產(chǎn)品供應商是Vector,而開源版的vSOME/IP由GENIVI協(xié)會維護。
三、DDS 介紹
DDS(Data Distribution Service)是由OMG(Object Management Group)發(fā)布的分布式通信規(guī)范。OMG成立于1989年,是一個國際性、開放性、非營利性的技術(shù)標準聯(lián)盟,由供應商、終端用戶、學術(shù)機構(gòu)和政府機構(gòu)推動。OMG工作組致力于制定企業(yè)集成標準和開發(fā)可為數(shù)千個垂直行業(yè)提供現(xiàn)實價值的技術(shù)標準,其中包括統(tǒng)一建模語言SYSML、UML,以及中間件標準CORBA、DDS等。
DDS最早應用于美國海軍系統(tǒng),用于解決在軍艦系統(tǒng)復雜網(wǎng)絡環(huán)境中進行大量軟件升級時的兼容性問題。隨著DDS被ROS2和AUTOSAR引入,目前它已經(jīng)廣泛應用于航空、航天、船舶、國防、金融、通信、汽車等領(lǐng)域。
DDS的特點:
1、數(shù)據(jù)中心(Data Centricity)
DDS最重要的特性是以數(shù)據(jù)為中心,這與其他許多通信中間件不同。DDS的數(shù)據(jù)共享以Topic為單元,應用程序能夠通過Topic判斷包含的數(shù)據(jù)類型,而不必依賴其他上下文信息。同時,DDS能夠按照用戶定義的方式自動地存儲、發(fā)布或訂閱數(shù)據(jù),使應用程序能夠像訪問本地數(shù)據(jù)一樣進行數(shù)據(jù)的寫入或讀取。
DDS 數(shù)據(jù)中心
2、全局數(shù)據(jù)空間(Global Data space)
DDS實現(xiàn)的數(shù)據(jù)共享可以被理解為一個抽象的全局數(shù)據(jù)空間,無論應用程序是用哪種開發(fā)語言編寫,或者在哪種操作系統(tǒng)上運行,都可以以相同的方式訪問這個全局數(shù)據(jù)空間,就像訪問本地存儲空間一樣。當然,全局數(shù)據(jù)空間只是一個抽象概念,在實際實現(xiàn)中,數(shù)據(jù)仍然被分別存儲在每個應用程序的本地空間中。在系統(tǒng)運行時,數(shù)據(jù)是按需傳輸或存儲的,數(shù)據(jù)的發(fā)布者只發(fā)送訂閱者需要的數(shù)據(jù),而訂閱者只接收并存儲本地應用程序當前所需的數(shù)據(jù)。
全局數(shù)據(jù)空間
3、服務質(zhì)量(Quality of service)
DDS還提供了高度靈活的QoS(Quality of Service)策略,以滿足用戶對數(shù)據(jù)共享方式的不同需求,例如可靠性和故障處理等。對于對數(shù)據(jù)安全性要求較高的系統(tǒng),DDS還提供了精細的數(shù)據(jù)安全控制,包括應用程序身份認證、權(quán)限控制和數(shù)據(jù)加密等。
4、動態(tài)發(fā)現(xiàn)(Dynamic Discovery)
類似于SOME/IP-SD,DDS提供了數(shù)據(jù)發(fā)布者和訂閱者的動態(tài)發(fā)現(xiàn)機制,這意味著用戶無需手動配置通信節(jié)點的地址或其他屬性信息,因為它們在運行過程中會自動發(fā)現(xiàn)對方并自動完成相關(guān)配置,實現(xiàn)了即插即用的功能。
5、可擴展架構(gòu)(Scalable Architecture)
DDS可應用于邊緣計算、霧計算和云計算領(lǐng)域。在邊緣計算中,DDS可以實現(xiàn)高速實時的設備間通信。在中間系統(tǒng)中,DDS提供健壯可靠的QoS和內(nèi)容感知的信息流。DDS提供可擴展的信息訪問和數(shù)據(jù)分發(fā)手段,用于集成信息系統(tǒng),將各系統(tǒng)接入云端。
OMG DDS的適用范圍廣泛,涵蓋了從小型設備到云計算系統(tǒng)等超大型系統(tǒng)。DDS能夠以超高速傳輸數(shù)據(jù)并同時管理數(shù)千個數(shù)據(jù)對象,提供極高的可用性和安全性,非常適用于物聯(lián)網(wǎng)。通過提供一個標準的通信層,DDS屏蔽了底層復雜性,簡化了分布式系統(tǒng)的開發(fā)。
可擴展架構(gòu)
6、安全(Security)
DDS為關(guān)鍵任務的工業(yè)物聯(lián)網(wǎng)環(huán)境提供了全面的安全保護機制,跨系統(tǒng)、跨供應商,覆蓋從邊緣設備到云端的安全性需求。
DDS提供了身份驗證、訪問控制、數(shù)據(jù)加密和數(shù)據(jù)完整性等安全機制,以確保數(shù)據(jù)分發(fā)的安全性。這些安全機制是在點對點對等架構(gòu)上實現(xiàn)的,不會影響實時通信的性能。
目前,DDS已被多個車載中間件平臺引入。AUTOSAR AP已完整地集成了DDS標準的網(wǎng)絡綁定。另外,雖然AUTOSAR CP的標準規(guī)范本身不支持DDS,但通過一些變通方法也可以在CP上集成DDS。ROS2和CyberRT的底層都使用了開源的DDS作為最重要的通信機制。針對自動駕駛領(lǐng)域的SOC芯片,如Xavier和Orin,也都預留了DDS接口。RTI作為OMG組織董事會的成員,領(lǐng)導了DDS標準的制定,并開發(fā)了名為Connext的DDS品牌,因此也被稱為Connext DDS。
開源DDS相對于商用的RTI DDS等來說,是根據(jù)OMG官方標準開發(fā)的,但源代碼是開放的,主要包括Fast DDS和Open DDS等。
在自動駕駛領(lǐng)域,由RTI原核心團隊成員在歐洲創(chuàng)辦的eProsima公司推出了影響力較大的開源DDS,名為Fast DDS。在eProsima將Fast DDS的源代碼開放后,用戶可以直接在GitHub上免費下載。使用Fast DDS需要向eProsima支付費用以獲得支持。
Open DDS由位于圣路易斯和鳳凰城的Object Computing的ACE/TAO團隊開發(fā),與Fast DDS有一定的相似性,兩者都基于RTPS實現(xiàn),都是面向數(shù)據(jù)的通信框架,并遵循同一標準。這類框架的典型特征是去中心化、支持QoS機制和實時通信,并通常與序列化工具如protobuf進行綁定。
盡管開源DDS對RTI的商用DDS形成一定的競爭,但開源DDS也存在一些不足之處:開源DDS的使用門檻較高,例如RTI DDS的服務策略有50多個,而開源DDS只有23個,完整性遠不及前者;RTI的DDS已通過了ASIL-D認證,而開源DDS尚未達到這一認證水平。
四、SOME/IP 與 DDS 對比
SOME/IP和DDS是目前在域控最常用的兩類通信中間件,它們都是面向服務的通信協(xié)議,并采用以數(shù)據(jù)為中心的發(fā)布/訂閱模式。
然而,SOME/IP和DDS在許多方面也存在差異,主要區(qū)別如下:
1、主要應用領(lǐng)域不同:SOME/IP專為汽車領(lǐng)域開發(fā),針對汽車領(lǐng)域的需求定義了一套通信標準,并在汽車領(lǐng)域深耕已久;而DDS是一個工業(yè)級別的強實時通信標準,適應性較強,但在應用于汽車/自動駕駛領(lǐng)域時需要進行專門的裁剪。
2、靈活性和可伸縮性不同:相比SOME/IP,DDS引入了許多標準內(nèi)置特性,如基于內(nèi)容和時間的過濾、與傳輸無關(guān)的可靠性、持久性、存活性、延遲/截止時間監(jiān)視、可擴展類型等。當AUTOSAR AP與DDS一起構(gòu)建通信框架時,該框架不僅與現(xiàn)有API和應用程序兼容,還在可靠性、性能、靈活性和可伸縮性等方面提供重要的好處。
3、訂閱方和發(fā)布方的耦合程度不同:在SOME/IP中,訂閱方在正常數(shù)據(jù)傳輸之前需要與發(fā)布方建立網(wǎng)絡連接并詢問發(fā)布方是否提供所需服務,從這個角度看,節(jié)點之間仍然存在一定的耦合性。而在DDS標準下,每個訂閱方或發(fā)布方只需要在自己的程序中訂閱或發(fā)布傳感器數(shù)據(jù),無需關(guān)心任何連接。因此,在DDS中,服務的訂閱方和發(fā)布方更加徹底地解耦。
4、服務策略不同:良好的服務質(zhì)量(QoS)是DDS標準相對于SOME/IP最重要的特征。SOME/IP只有一個QoS,而RTI DDS和開源DDS分別提供了50多個和20多個QoS,這些QoS基本上涵蓋了大多數(shù)可預見的智能駕駛場景。
5、應用場景不同:從應用場景的角度來看,SOME/IP更適用于車載網(wǎng)絡,并且只能在基于IP類型的網(wǎng)絡環(huán)境中使用;而DDS在傳輸方式上沒有特別的限制,可以支持基于非IP類型的網(wǎng)絡,例如共享內(nèi)存、跨核通信、PCIe等。此外,DDS還提供了完備的車聯(lián)網(wǎng)解決方案,其獨有的DDS Security和DDS Web功能為用戶提供了一站式的“車-云-移動端”解決方案。
在商業(yè)落地中,SOME/IP和DDS之間存在直接的競爭關(guān)系,但由于它們在應用領(lǐng)域、靈活性和服務策略等方面存在差異,整車廠可以根據(jù)需求選擇適合的通信中間件,甚至可以同時使用二者。這也是為什么AUTOSAR AP既支持SOME/IP也支持DDS的原因。
來源:智能汽車開發(fā)者平臺
審核編輯:湯梓紅
-
接口
+關(guān)注
關(guān)注
33文章
8598瀏覽量
151157 -
CAN
+關(guān)注
關(guān)注
57文章
2754瀏覽量
463703 -
通信
+關(guān)注
關(guān)注
18文章
6032瀏覽量
135993 -
中間件
+關(guān)注
關(guān)注
0文章
65瀏覽量
18176 -
SOA
+關(guān)注
關(guān)注
1文章
288瀏覽量
27475
原文標題:SOA通信中間件及其協(xié)議介紹
文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論