DoIP基础知识
1、概述
????????DoIP是Diagnostic communication over Internet Protocol 的簡稱,顧名思義,就是通過網絡協議進行診斷通信。
????????ISO 13400的所有部分都基于ISO/IEC 7498-1中規定的OSI基本參考模型,該模型將通信系統分為七層。從上到下稱為應用層(第7層)、表示層、會話層、傳輸層、網絡層、數據鏈路層和物理層(第1層)。ISO 13400使用了這些層的一個子集。ISO 13400為DoIP指定了傳輸層、網絡層、數據鏈路層和物理層。
????????ISO 13400由以下部分組成,其總稱為"道路車輛-互聯網協議診斷通訊"(DoIP):
????????????????1、 一般信息和用例定義。
????????????????2、 傳輸協議和網絡層服務。
????????????????3、 基于IEEE 802.3的有線車輛接口。
????????以下部分正在籌備中
????????????????4、 以太網診斷連接器。
????????????????5、 一致性測試規范。
????????ISO 13400協議與OSI基本參考模型的對應關系可參考下圖:
2、DoIP的優勢
??????? 1、更快的診斷響應。
??????? 2、傳輸大量數據的時間更短(用于軟件刷新和參數下載)。
??????? 2、使得遠程的直接診斷成為可能。
3、基本要求
3.1、數據鏈路與物理層要求
????????根據ISO-13400的要求,DoIP通信在物理層支持100BASE-TX (100 Mbit/s Ethernet) 和10BASE-T (10 Mbit/s Ethernet) 兩種制式。DoIP設備的MAC地址也符合IEEE 802.3 的要求。
3.2、傳輸層與網絡層要求
????????ISO-13400規定,DoIP通信在傳輸層上必須同時支持UDP和TCP,并將UDP和TCP的使用場合進行了定義,對所使用的端口號也進行了定義。后續會說明。
????????ISO-13400規定,DoIP通信在網絡層上使用IPv6協議,但是為了后向兼容的原因,也支持IPv4。此外,對于IPv4來說,還要支持地址解析協議(ARP),對于IPv6來說,還要支持鄰居發現協議(NDP),這兩個協議是用于在只知道IP地址的情況下獲取MAC地址的。
4、基本數據類型
?
????????DoIP數據作為SDU層層向下傳遞,直至構成完整的以太網幀,通過物理層的介質發送出去。DoIP的數據內容分為5個部分:
????????1、所使用的ISO13400版本信息,占用1個字節。
????????2、所使用的ISO13400版本信息依比特取反,占用1個字節。
????????3、數據類型,占用2個字節(標識本幀數據的用途,比如用于上報或請求車輛信息、診斷命令、診斷邏輯鏈接激活、alive check等)。
????????4、數據長度,占用4個字節(標識后面的數據長度)。
????????5、診斷數據,長度為0至2的32次方減1,這里的數據又分為sender address、receiver address、應用數據這三部分。
4.1、ISO13400版本取值范圍
????????DoIP版本取值范圍如下表:
| Version | 含義 |
| 0x00 | reserved |
| 0x01 | DoIP ISO/DIS 13400-2:2010 |
| 0x02 | DoIP ISO 13400-2:2012 |
| 0x03…0xFE | reserved by this part of ISO 13400 |
| 0xFF | default value for vehicle identifcation request messages |
4.2、ISO13400數據類型
DoIP數據的第三個部分是data type,即描述數據包中的數據類型,取值范圍如下圖所示:
????????上面這個表格不但定義了代表不同數據類型的值,還說明了具體的數據類型應該是通過UDP還是TCP來發,并定義了應該在哪個端口上發。
????????其中最常用的數據類型應該是0x8001,0x8002,0x8003了,代表的含義分別是診斷消息、診斷消息正響應和診斷消息負響應。
????????0x0001至0x0004用于汽車標識上報或請求,只能通過UDP報文來發送這種命令,主要用于在汽車和診斷儀進入網絡之后、診斷連接建立之前的車輛發現過程。
????????0x0005和0x0006標識的Routing activation request 和 response用于在socket建立之后,進行診斷通信的請求。
????????0x0007和0x0008用于Alive check,用于檢查當前建立的診斷連接socket是否仍然在使用中,如果不再使用,則關閉socket釋放資源。
4.3、ISO13400完整數據結構舉例
????????下圖是一個DoIP數據完整結構的舉例
?5、DoIP的使用場景
????????ISO13400中定義了DoIP的4種使用場景。
5.1、一輛車和一個外部測試設備實例之間的直接物理連接
?
5.2、一輛車和一個外部測試設備實例之間的網絡連接
????????這種通信場景意味著多個車輛和多個外部測試設備被連接到同一個網絡。這意味著外部測試設備應有可能識別網絡中的車輛,并選擇與之建立通信的特定車輛。從車輛的角度來看,這意味著車輛應該實現識別機制,并且應該能夠處理或拒絕多個連接嘗試,因為其他外部測試設備可能會干擾當前建立的通信。外部測試設備和車輛都應支持將自身集成到現有IP網絡中,其中包括網絡層參數的協商。這種通信場景通常發生在車輛連接到現有網絡或無線基礎設施時,其他車輛和外部測試設備(例如維修車間網絡)也使用這些網絡或無線基礎設施。
?
5.3、多輛車和一個外部測試設備實例之間的網絡連接
????????從車輛的角度來看,這個通信場景與3.2中描述的場景相同。只有外部測試設備能夠支持多個連接(即插座)。這種通信場景可能發生在,例如,有一個專用的flash重編程服務器,它可以同時更新多輛汽車(例如,在經銷商或制造區域)。
?
5.4、一輛車與外部測試設備的多個實例之間的網絡連接,或外部測試設備的單個物理實例上的測試應用程序
????????在這種情況下,車輛應能夠清楚地分離負責每個邏輯鏈路的每個外部測試設備的診斷請求和響應。此外,在單個測試設備實例上運行的測試設備或應用程序應能夠檢測到其他測試設備實例或應用程序已經與同一車輛通信,因此,車輛不可能同時支持所有操作。
6、DoIP診斷通信建立連接的過程
????????DoIP診斷同學建立連接分為四個過程:
????????????????1、物理連接(Physically connection)。
????????????????2、車輛聲明(Vehicle Discovery)。
????????????????3、通信建立(Connection Establishment)。
????????????????4、診斷通信(Diagnostic Communication)。
6.1、物理連接
????????車外客戶端(Test equipment)用相應的接口卡(IP-Based Network)連接車身邊緣節點(DoIP Edge Node GW)。在ISO 13400協議中規定外部診斷設備連接邊緣節點,且需用激活線來激活邊緣節點的DoIP功能。
?
????????物理連接后,通過相應手段獲取IP地址,建立通信。
?
6.2、車輛聲明
????????物理連接后,車輛會議廣播的形式發送三次車輛聲明,聲明的信息可以包括:
????????????????1、VIN
????????????????2、EID
????????????????3、GID
?????????如果診斷設備沒有獲取車輛信息,也可以主動請求(Vehicle Identification request)來獲取相應信息(如上圖所示)。
6.3、通信建立
????????在DoIP協議中,有Socket概念:Socket一端連接著IP地址,一端連接著Port端口。并且Socket對于芯片而言是一種資源。因此有激活失效之分。
?????????在協議中定義了Payload Type (0005/0006)用于激活Socket。
?????????激活后,Socket使能,接下來就可以進行診斷通信。
6.4、診斷通信
????????Socket激活后,可以進行診斷通信。通信模型如下圖所示:
?
????????外部Tester發送診斷請求,網關收到診斷請求后,會給與一個收到答復(Acknowledgement),用意是告訴Tester,網關此時已收到診斷請求,與此同時網關將診斷請求(Diagnostic Request)發送至Target ECU。ECU收到診斷請求,并基于這個請求給與響應。
????????因此對于Tester而言,一共收到兩個響應。
????????????????1、Diagnostic Message Acknowledgement;
????????????????2、Diagnostic Message Response;
????????每一幀響應對應的幀類型不同:
?????????在DoIP協議中,通過PayLoad Type區分報文幀類型,用于實現不同的具體功能。但是其具體發送方式都是基于TCP/UDP協議。
????????上述整個過程,報文的發送方式都是以TCP/IP協議(當然是將傳統的TCP/IP協議做了車規級應用),定義不同的階段模型、不同的Payload Type應用報文類型,定義合理的機制,來保證Tester與ECU穩健進行診斷通信。
????????以上是整個DoIP協議定義Tester和ECU通信所需要搭建的“通信橋梁”。
總結
- 上一篇: Qfile
- 下一篇: 多层装饰器、带参数装饰器