1 概述
DoIP全稱為基于IP網(wǎng)絡(luò)的診斷通信Diagnostic communication over Internet Protocol,由ISO 13400標準定義,是基于IP的汽車診斷協(xié)議。由于DoIP可以傳輸大量數(shù)據(jù),以及響應(yīng)速度快,且可以通過以太網(wǎng)進行遠程診斷,因此DoIP逐步成為代替?zhèn)鹘y(tǒng)的CAN等總線方式,成為車載網(wǎng)絡(luò)診斷的必然趨勢。DoIP診斷經(jīng)由通用的統(tǒng)一診斷服務(wù)UDS協(xié)議引入診斷服務(wù),通過傳輸控制協(xié)議TCP、用戶數(shù)據(jù)報協(xié)議UDP和以太網(wǎng)協(xié)議IP,完成外部測試設(shè)備與ECU間的診斷通信。在OSI 7層模型中,ISO 13400規(guī)定了DoIP的傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層。應(yīng)用層和會話層部分和基于CAN總線診斷一樣采用ISO 14229實現(xiàn)。當然,DoIP并不僅僅只是UDS的載體,雖然在ISO13400標準中內(nèi)容不多,但是它也有自己的一些邏輯,不可能說在TCP/IP之上加了一層封裝就完成了自己的任務(wù),這樣的話安全性就沒有保證了,畢竟車載以太網(wǎng)通過網(wǎng)絡(luò)能夠?qū)④噧?nèi)與車外進行網(wǎng)絡(luò)的連接,而DoIP又是診斷的入口,這個門口如果不好好看住,會存在安全性的問題的。
2 網(wǎng)絡(luò)拓撲
下圖為未來整車架構(gòu)的網(wǎng)絡(luò)拓撲圖,根據(jù)該拓撲結(jié)構(gòu),5個域控制器:車身、動力總成、底盤、信息娛樂、高級駕駛員輔助系統(tǒng)ADAS,通過以太網(wǎng)作為主干網(wǎng)連接,每個域內(nèi)部均可使用不同網(wǎng)絡(luò),當域與域之間需要信息交流時,報文可經(jīng)由域控制器路由轉(zhuǎn)發(fā)到目標網(wǎng)絡(luò)。
注意圖中的一些關(guān)鍵信息可參考DoIP中的以下幾個關(guān)鍵概念來理解:
DoIP entity(DoIP實體):實現(xiàn)DoIP協(xié)議的節(jié)點,即DoIP gateway或者DoIP node;
DoIP gateway( DoIP網(wǎng)關(guān)):實現(xiàn)DoIP協(xié)議,并能進行協(xié)議轉(zhuǎn)發(fā)的節(jié)點;
DoIP node(DoIP節(jié)點):實現(xiàn)DoIP協(xié)議,但不能進行協(xié)議轉(zhuǎn)發(fā)的節(jié)點;
DoIP edge node(DoIP邊緣節(jié)點):連接以太網(wǎng)激活線的DoIP節(jié)點,此部分和DoIP gateway有什么區(qū)別?其實沒什么區(qū)別,唯一的區(qū)別就是多了個使能線的判斷,從圖中可以看出External test equipment和DoIP edge node gateway之間有一條線叫做Activation line。那么這條線的功能就是對協(xié)議棧進行使能作用的,當然External test equipment和DoIP edge node gateway之間不只是Activation line相連的,這個圖只是功能示意圖,少了很多細節(jié),其實是通過標準的OBD-II接頭相連的,其中一個針腳就是Activation line。
Network Node(網(wǎng)絡(luò)節(jié)點):連在IP網(wǎng)絡(luò)上,但不能實現(xiàn)DoIP的節(jié)點。
External test equipment:此部分為外部測試設(shè)備,通常為OBD診斷儀或者其他診斷客戶端
端口:指定了端口號,客戶端和服務(wù)端可以在此端口上進行收發(fā)數(shù)據(jù)。我們知道不管是TCP還是UDP,都包含源端口號和目的端口號,在DoIP報文中用到了以下三種端口:
UDP_DISCOVERY:端口類型-UDP,端口號-13400,該端口有以下兩個應(yīng)用場景:
1) 被用于診斷設(shè)備發(fā)送給DoIP節(jié)點的車輛信息請求報文和DoIP節(jié)點控制報文,此時該端口在報文中被設(shè)置為目的端口。
2) 被用于DoIP節(jié)點在沒有收到請求的時候發(fā)送的UDP報文,如車輛聲明報文。此時該端口同樣被設(shè)置為目的端口,源端口可以為該端口,也可以由發(fā)送方動態(tài)定義。
UDP_TEST_EQUIPMENT_REQUEST:端口類型-UDP,端口號-動態(tài)定義(49152-65535):該端口由外部診斷設(shè)備在49152-65535范圍內(nèi)動態(tài)定義,用于診斷設(shè)備向DoIP節(jié)點發(fā)送的UDP報文,在報文中作為源端口,報文的目的端口應(yīng)設(shè)置為UDP_DISCOVERY。當DoIP節(jié)點向診斷設(shè)備發(fā)送響應(yīng)的時候,報文中的目的端口應(yīng)設(shè)置為UDP_TEST_EQUIPMENT_REQUEST,源端口可以為UDP_DISCOVERY,也可以有DoIP節(jié)點動態(tài)定義。
TCP_DATA:端口類型-TCP,端口號-13400:該端口用于外部診斷設(shè)備和DoIP節(jié)點之間的TCP通信,如路由報文和診斷報文。當診斷設(shè)備向DoIP節(jié)點發(fā)送報文時,使用TCP_DATA作為目的端口號;當DoIP節(jié)點向診斷設(shè)備發(fā)送報文時,使用TCP_DATA作為源端口號。
DoIP在車載領(lǐng)域的應(yīng)用首先汽車系統(tǒng)的整體框架要能夠支持DoIP,正因為車載以太網(wǎng)的快速發(fā)展,相較于傳統(tǒng)的車載系統(tǒng),目前的車載系統(tǒng)的整體框架都會加入一層DoIP協(xié)議層,在TCP/IP之上。并且為了更好的配合OBD診斷,遠程診斷,F(xiàn)OTA等等技術(shù),對整體的車載架構(gòu)進行了調(diào)整,利用swich將MPU,MCU,其它以太網(wǎng)ECU統(tǒng)統(tǒng)通過以太網(wǎng)進行連接,并對外網(wǎng)與內(nèi)網(wǎng)進行隔離。
DoIP架構(gòu)模型必須實現(xiàn)以下特征:
①車輛與測試設(shè)備能夠加入到網(wǎng)絡(luò)中并識別對方;②汽車具有聲明存在且被檢測到的能力;③獲取車輛基本狀態(tài)信息(如Power Mode狀態(tài));④通信建立,如雙方通信請求建立,保持,以及對網(wǎng)關(guān)的控制等;⑤汽車網(wǎng)關(guān)實現(xiàn)診斷設(shè)備與車輛子網(wǎng)組件之間的數(shù)據(jù)路由;⑥錯誤狀態(tài)處理。
3 DoIP幀格式
DoIP報文由DoIP報頭和Payload(有效載荷)組成,具體如下圖所示。
1)DoIP報頭包含:DoIP協(xié)議版本號,目前為0x02(DoIP
2012)。
2)協(xié)議版本號取反,目前為0xFD。注意:協(xié)議書上特別說明了Protocol version可以為0xFF,設(shè)這個值的作用是,當客戶端和服務(wù)端的協(xié)議版本不匹配,可以設(shè)置此值繞過協(xié)議頭版本不匹配而拒絕請求的case。
3)Payload類型,分為3大類:
①節(jié)點管理類,包含DoIP報頭否定應(yīng)答、車輛聲明及標識、路由激活、在線檢查;
②車輛信息類,包含DoIP實體狀態(tài)、診斷電源模式信息;
③診斷數(shù)據(jù)類,包含診斷報文。
關(guān)于每個類型的含義如下表所示,具體含義參考標準即可。
4 DoIP狀態(tài)機和通信流程
DoIP實體內(nèi)管理著一個DoIP connection table ,用來記錄和維護診斷通信的邏輯連接。上圖就是這個表中的一個元素,即一個邏輯連接的狀態(tài)機。上圖中的方框就是連接所處的狀態(tài),[Step]是狀態(tài)之間跳轉(zhuǎn)時發(fā)生的事情。
[Step1] 當一個新的套接字建立,邏輯連接的狀態(tài)就從“l(fā)isten”跳轉(zhuǎn)到“socket initialized”,同時啟動一個定時器, initial inactivity timer。
[Step2] 當DoIP實體接收到tester發(fā)來的一個routing activation信息后,邏輯連接的狀態(tài)就從“socket initialized”跳轉(zhuǎn)到“Registered [Pending for Authentication]” ,此時 initial inactivity timer被停止,啟動一個名為general inactivity timer的定時器。
[Step3] 在完成Authentication之后,邏輯連接的狀態(tài)就從“Registered [Pending for Authentication]”跳轉(zhuǎn)到“Registered [Pending for Confrmation]” 。
[Step4] 在完成Confrmation之后,邏輯連接的狀態(tài)就從“Registered [Pending for Confrmation]”跳轉(zhuǎn)到“Registered [Routing Active] ” 。
[Step5] 如果initial timer 或general inactivity timer 過期后仍沒收到后續(xù)請求,或者authentication 和 confrmation 被拒絕了,又或者外部測試設(shè)備對alive check 消息沒有響應(yīng),則邏輯連接進入“Finalize”狀態(tài)。
[Step6]進入Finalize后,此時TCP套接字將被關(guān)閉,并重新回到“l(fā)isten”狀態(tài)。
5 DoIP通信流程
通信的建立
當一輛車和外部測試設(shè)備都連接到DoIP網(wǎng)絡(luò)中,并且IP地址配置完成,DoIP實體將通過車輛公告信息廣播其VIN、EID、GID和邏輯地址3次,外部測試設(shè)備通過廣播發(fā)送車輛識別請求來觸發(fā)車輛識別響應(yīng),從而完成車輛聲明及標識步驟。打開Socket(套接字)是外部測試設(shè)備向車輛內(nèi)部DoIP實體發(fā)起連接的第一步,必須在交換任何報文前完成,一旦建立了連接,必須執(zhí)行一些初始化操作。為了激活初始化連接中的路由,外部測試設(shè)備將發(fā)送一個路由激活請求消息到DoIP實體。如果外部測試設(shè)備符合條件,DoIP實體將發(fā)送一個路由激活成功的響應(yīng),此時就可以對有效的DoIP報文(如DoIP診斷報文)進行轉(zhuǎn)發(fā)或處理。DoIP會話示例如下圖所示。
報文頭的處理
每個DoIP實體(實現(xiàn)了DoIP協(xié)議的節(jié)點)將按下圖中指定的順序處理所有DoIP報文的通用DoIP報頭結(jié)構(gòu)
如果接收到來自DoIP實體不正確的DoIP報文,外部測試設(shè)備不得發(fā)送通用DoIP報頭的否定應(yīng)答報文。通用DoIP報頭否定應(yīng)答報文只能用于確定先前發(fā)送的DoIP報文的錯誤條件。
審核編輯:郭婷
-
控制器
+關(guān)注
關(guān)注
112文章
16418瀏覽量
178790 -
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5452瀏覽量
172190 -
總線
+關(guān)注
關(guān)注
10文章
2894瀏覽量
88227
原文標題:5 ?DoIP通信流程
文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論