協(xié)議架構(gòu)詳解:從物理層到應(yīng)用層的核心概念與測(cè)試實(shí)踐)
做汽車電子測(cè)試這些年我最大的感受是車載以太網(wǎng)已經(jīng)不是“要不要上”的問題而是“怎么盡快上”的問題。我身邊不少做嵌入式、做CAN總線出身的朋友最近都在補(bǔ)車載以太網(wǎng)的知識(shí)原因也簡(jiǎn)單——智能駕駛和智能座艙的數(shù)據(jù)量傳統(tǒng)CAN總線確實(shí)扛不動(dòng)了。這篇文章我打算從一個(gè)工程師的角度把車載以太網(wǎng)的核心概念和協(xié)議架構(gòu)捋一遍。內(nèi)容會(huì)盡量貼近實(shí)際開發(fā)和測(cè)試場(chǎng)景不搞純粹的理論堆砌。因?yàn)檫@是一套很龐雜的知識(shí)體系我計(jì)劃分幾篇來寫這是第一篇先把概念和協(xié)議棧的整體架構(gòu)講清楚后面對(duì)應(yīng)的時(shí)間同步、SOME/IP服務(wù)、DoIP診斷、TSN流量調(diào)度和測(cè)試用例設(shè)計(jì)我們?cè)僦饌€(gè)展開。1. 車載以太網(wǎng)到底解決了什么問題1.1 從CAN到以太網(wǎng)為什么帶寬成了瓶頸很多老工程師對(duì)CAN總線是有感情的。確實(shí)CAN總線在汽車上服役了三十年可靠、實(shí)時(shí)、成本低一套CAN網(wǎng)絡(luò)加上CAN FD跑個(gè)2Mbps到5Mbps的帶寬在傳統(tǒng)動(dòng)力總成和車身控制場(chǎng)景里綽綽有余。但這兩年情況完全變了。以智能駕駛為例一個(gè)800萬像素的攝像頭YUV422格式、30幀每秒原始數(shù)據(jù)量就超過1.5Gbps。一個(gè)激光雷達(dá)的點(diǎn)云數(shù)據(jù)普遍在幾十Mbps到幾百M(fèi)bps。還有高精地圖、座艙多屏顯示、音視頻同步傳輸這些數(shù)據(jù)統(tǒng)統(tǒng)壓在車上。CAN那個(gè)帶寬連零頭都不到根本沒法承載。更關(guān)鍵的是整車電子電氣架構(gòu)正在從分布式向域集中式演進(jìn)。過去一個(gè)ECU負(fù)責(zé)一個(gè)功能節(jié)點(diǎn)之間偶爾交換幾個(gè)信號(hào)就夠了。現(xiàn)在域控制器要統(tǒng)一處理多個(gè)傳感器的數(shù)據(jù)需要高帶寬、低延遲、可動(dòng)態(tài)擴(kuò)展的通信架構(gòu)。以太網(wǎng)幾乎是唯一現(xiàn)實(shí)的選擇。所以車載以太網(wǎng)解決的核心問題本質(zhì)上就是讓汽車內(nèi)部能夠像現(xiàn)代IT網(wǎng)絡(luò)一樣用更靈活、更高帶寬、更標(biāo)準(zhǔn)化的方式傳輸數(shù)據(jù)。它不是要替代CAN而是和CAN、LIN、FlexRay這些傳統(tǒng)總線長(zhǎng)期共存各司其職。1.2 車載以太網(wǎng)和普通以太網(wǎng)的差異在哪先明確一點(diǎn)車載以太網(wǎng)在二層以上和你辦公室用的以太網(wǎng)在協(xié)議上高度一致都遵循IEEE 802.3標(biāo)準(zhǔn)IP、TCP/UDP、HTTP這些照常使用。但它不是簡(jiǎn)單把辦公室交換機(jī)塞進(jìn)車?yán)镉袔滋庩P(guān)鍵差異搞不清楚后面做項(xiàng)目會(huì)踩大坑。物理層上普通以太網(wǎng)用的100BASE-TX或1000BASE-T需要兩對(duì)或四對(duì)雙絞線而車載以太網(wǎng)用單對(duì)非屏蔽雙絞線例如100BASE-T1和1000BASE-T1。為什么要做這個(gè)改變主要原因是汽車線束對(duì)重量、成本和布線空間極其敏感。傳統(tǒng)以太網(wǎng)的兩對(duì)線、四對(duì)線在車?yán)锊季€會(huì)大幅增加線束重量和成本而單對(duì)線能明顯降重降本而且更適合車內(nèi)的EMC環(huán)境差分信號(hào)的抗干擾能力也更強(qiáng)。車載以太網(wǎng)還根據(jù)汽車工況做了專門的適應(yīng)性設(shè)計(jì)。比如物理層編碼采用PAM3調(diào)制信號(hào)時(shí)鐘、電壓幅值都經(jīng)過重新定義確保車輛在震動(dòng)、高溫、線束老化等惡劣環(huán)境下依然穩(wěn)定。另外車載以太網(wǎng)在連接器和線纜規(guī)范上比辦公室以太網(wǎng)嚴(yán)苛得多強(qiáng)調(diào)連接器的抗震性、IP等級(jí)和整車線束長(zhǎng)度約束。100BASE-T1典型傳輸距離是15米千兆版本也在15米左右這決定了設(shè)計(jì)網(wǎng)絡(luò)拓?fù)鋾r(shí)要特別注意線纜長(zhǎng)度分配。我經(jīng)常打一個(gè)比方如果說傳統(tǒng)以太網(wǎng)是IT機(jī)房里的數(shù)據(jù)中心網(wǎng)絡(luò)那車載以太網(wǎng)就是為“行駛的數(shù)據(jù)中心”定制的工業(yè)級(jí)網(wǎng)絡(luò)。協(xié)議棧上層可以復(fù)用成熟生態(tài)但物理層和鏈路層必須為汽車環(huán)境重新打磨。2. 車載以太網(wǎng)協(xié)議架構(gòu)從物理層到應(yīng)用層有哪些成員2.1 用OSI模型理解車載以太網(wǎng)的分層結(jié)構(gòu)車載以太網(wǎng)的協(xié)議棧本質(zhì)上還是在OSI七層模型的框架里展開的。為了后面討論測(cè)試用例和問題排查方便建議大家先在腦子里建立一張分層地圖。最底下一層是物理層對(duì)應(yīng)OSI的第一層。車載以太網(wǎng)常用的是100BASE-T1和1000BASE-T1這是OPEN Alliance SIG推動(dòng)的標(biāo)準(zhǔn)物理層編碼、電氣特性、連接器定義都和普通以太網(wǎng)不同。再往上是數(shù)據(jù)鏈路層包括MAC子層、VLAN標(biāo)簽處理、流量?jī)?yōu)先級(jí)映射這部分工作主要由車載交換芯片來完成。常見車載以太網(wǎng)交換芯片廠商是Marvell、博通、恩智浦等芯片內(nèi)部集成了多路T1接口同時(shí)也集成VLAN、ACL、QoS等功能模塊面向整車網(wǎng)絡(luò)做二層轉(zhuǎn)發(fā)。第三層和第四層就是IP、TCP、UDP。車載場(chǎng)景里一般用IPv4居多IPv6在部分新架構(gòu)中開始出現(xiàn)但量產(chǎn)項(xiàng)目用IPv4還是主流。UDP和TCP各有分工流媒體、服務(wù)調(diào)用實(shí)時(shí)性要求高的場(chǎng)景多用UDP診斷、刷寫、文件傳輸這類對(duì)可靠性要求高的場(chǎng)景用TCP。再往上就是車載特色所在了。應(yīng)用層有SOME/IP服務(wù)中間件、DoIP診斷協(xié)議、UDS on IP、AVB/TSN相關(guān)的流媒體協(xié)議以及AUTOSAR AP運(yùn)行時(shí)的通信組件??梢哉f傳統(tǒng)以太網(wǎng)的“長(zhǎng)板”在互聯(lián)網(wǎng)應(yīng)用車載以太網(wǎng)的長(zhǎng)板則在這些面向汽車場(chǎng)景定制的協(xié)議集合里。要特別強(qiáng)調(diào)的是TSN時(shí)間敏感網(wǎng)絡(luò)雖然工作在二層但它的價(jià)值體現(xiàn)在為整個(gè)協(xié)議棧提供確定性傳輸能力。以后你看到車載以太網(wǎng)協(xié)議棧圖里出現(xiàn)“AVB/TSN”層不用覺得突兀它是二層和三層之間的關(guān)鍵基礎(chǔ)設(shè)施。2.2 SOME/IP、DoIP、TSN車載協(xié)議棧的三大支柱SOME/IPScalable service-Oriented MiddlewarE over IP是目前車載以太網(wǎng)應(yīng)用層最核心的中間件。它由BMW推動(dòng)標(biāo)準(zhǔn)化并融入AUTOSAR核心思想是把傳統(tǒng)的“信號(hào)廣播”通信方式變成“服務(wù)調(diào)用”方式。一個(gè)ECU提供服務(wù)另一個(gè)ECU作為客戶端去調(diào)用這個(gè)服務(wù)服務(wù)之間通過服務(wù)ID和實(shí)例ID來標(biāo)識(shí)整個(gè)過程支持動(dòng)態(tài)發(fā)現(xiàn)和訂閱/發(fā)布機(jī)制。這種風(fēng)格在軟件架構(gòu)上更接近SOA很適合智能汽車軟件功能持續(xù)迭代的需求。DoIPDiagnostics over IP解決的是診斷和刷寫問題。傳統(tǒng)診斷走CAN上的UDS速率慢刷一個(gè)幾十MB的固件要等很久。DoIP將UDS診斷報(bào)文封裝到TCP/IP上直接跑在以太網(wǎng)物理層上刷寫速度可以提升幾十倍甚至上百倍。DoIP還支持遠(yuǎn)程診斷通過4G/5G網(wǎng)絡(luò)在云端下發(fā)診斷指令這對(duì)智能汽車售后是一個(gè)非常大的效率提升。TSNTime-Sensitive Networking則是保證車載網(wǎng)絡(luò)實(shí)時(shí)性和確定性的協(xié)議族。它包括時(shí)間同步gPTP、流量調(diào)度Qbv、幀搶占Qbu、流預(yù)留Qav等機(jī)制。TSN的價(jià)值在于雖然以太網(wǎng)本身是盡力而為的但通過TSN這套機(jī)制我們可以讓關(guān)鍵控制指令、音視頻數(shù)據(jù)在一個(gè)確定的時(shí)間窗口內(nèi)到達(dá)目的地延遲上限可控。這對(duì)智能駕駛中的攝像頭數(shù)據(jù)分發(fā)、底盤控制指令傳遞尤為關(guān)鍵。這三者的關(guān)系可以這么理解TSN解決“數(shù)據(jù)能不能按時(shí)到”SOME/IP解決“數(shù)據(jù)到了以后怎么組織和服務(wù)”DoIP解決“網(wǎng)絡(luò)壞了怎么診斷、系統(tǒng)要升級(jí)怎么刷寫”。三者合力構(gòu)成了車載以太網(wǎng)協(xié)議棧的完整閉環(huán)。2.3 為什么不能用標(biāo)準(zhǔn)以太網(wǎng)協(xié)議直接“套娃”很多人會(huì)問直接用標(biāo)準(zhǔn)以太網(wǎng)協(xié)議棧把TCP/IP那一套搬上車不就行了為什么還要搞一套車載協(xié)議棧原因是汽車場(chǎng)景有幾個(gè)硬性約束標(biāo)準(zhǔn)以太網(wǎng)協(xié)議棧沒有覆蓋。第一個(gè)約束是實(shí)時(shí)性和確定性。標(biāo)準(zhǔn)以太網(wǎng)是異步的靠TCP重傳和隊(duì)列緩沖能保證最終送達(dá)但無法保證“1毫秒內(nèi)一定送達(dá)”。在智能駕駛場(chǎng)景攝像頭數(shù)據(jù)晚了10毫秒后端融合算法可能就已經(jīng)輸出了錯(cuò)誤結(jié)果。所以需要TSN、gPTP這些機(jī)制來提供確定性時(shí)延。第二個(gè)約束是診斷和升級(jí)流程的標(biāo)準(zhǔn)化。汽車行業(yè)有一套成熟的診斷協(xié)議UDS但它原本跑在CAN上需要有一套適配以太網(wǎng)的封裝和發(fā)現(xiàn)機(jī)制這就是DoIP存在的意義。第三個(gè)約束是資源受限。車規(guī)級(jí)MCU的計(jì)算能力和內(nèi)存比服務(wù)器要小很多SOME/IP這種輕量化的序列化方式和動(dòng)態(tài)發(fā)現(xiàn)機(jī)制就是為了在有限的嵌入式資源上優(yōu)雅地實(shí)現(xiàn)服務(wù)通信而標(biāo)準(zhǔn)RESTful HTTP動(dòng)輒就是沉重的JSON解析和TCP連接管理在車控場(chǎng)景里不夠高效。所以說車載以太網(wǎng)的協(xié)議棧并不是對(duì)標(biāo)準(zhǔn)以太網(wǎng)的簡(jiǎn)單復(fù)制而是在繼承其生態(tài)優(yōu)勢(shì)的基礎(chǔ)上針對(duì)汽車場(chǎng)景的實(shí)時(shí)性、可靠性、可維護(hù)性約束做了大量定制化增強(qiáng)。理解這一點(diǎn)后面讀協(xié)議文檔時(shí)才不會(huì)覺得“這些新標(biāo)準(zhǔn)都是憑空冒出來的”。3. 數(shù)據(jù)鏈路與通信流程一個(gè)報(bào)文是怎么在車?yán)锱芷饋淼?.1 VLAN劃分與QoS優(yōu)先級(jí)讓關(guān)鍵報(bào)文先走車上跑以太網(wǎng)的數(shù)據(jù)流多種多樣有攝像頭的高帶寬視頻流有底盤控制的小包高頻指令有診斷刷寫的長(zhǎng)連接大包還有OTA下載的批量數(shù)據(jù)。這些數(shù)據(jù)流對(duì)時(shí)延、帶寬、可靠性的要求各不相同。如果把所有數(shù)據(jù)都放在同一個(gè)二層網(wǎng)絡(luò)里互相爭(zhēng)搶就很容易出現(xiàn)高優(yōu)先級(jí)報(bào)文被大流量數(shù)據(jù)阻塞的情況。解決辦法就是VLAN和QoS。VLAN虛擬局域網(wǎng)能夠在物理網(wǎng)絡(luò)里劃分出多個(gè)邏輯隔離域例如一個(gè)VLAN專跑動(dòng)力和底盤控制一個(gè)VLAN專跑智能駕駛傳感器數(shù)據(jù)一個(gè)VLAN專跑信息娛樂和OTA。VLAN的好處是既能隔離故障域減少?gòu)V播風(fēng)暴影響又能配合安全策略做到“域間訪問可控”還能基于802.1Q在幀頭打VLAN Tag讓交換機(jī)按照Tag進(jìn)行定向轉(zhuǎn)發(fā)。有了VLAN還不夠同在一個(gè)VLAN內(nèi)的數(shù)據(jù)流之間也需要區(qū)分優(yōu)先級(jí)。802.1Q Tag里面有3個(gè)比特的PCPPriority Code Point字段支持8個(gè)優(yōu)先級(jí)等級(jí)0到7。車載網(wǎng)絡(luò)通常會(huì)為不同數(shù)據(jù)類型分配不同優(yōu)先級(jí)比如底盤控制類報(bào)文通常給定最高優(yōu)先級(jí)音視頻流給中高優(yōu)先級(jí)診斷和OTA這類對(duì)實(shí)時(shí)性不敏感的大流量應(yīng)用給低優(yōu)先級(jí)。結(jié)合交換機(jī)和終端網(wǎng)卡的QoS映射機(jī)制每個(gè)報(bào)文從進(jìn)入交換機(jī)的那一刻開始就會(huì)被標(biāo)記并放入對(duì)應(yīng)的優(yōu)先級(jí)隊(duì)列。交換芯片的調(diào)度器會(huì)優(yōu)先轉(zhuǎn)發(fā)高優(yōu)先級(jí)隊(duì)列里的幀。我曾經(jīng)在測(cè)試中驗(yàn)證過在一個(gè)滿負(fù)載的千兆端口上同時(shí)發(fā)送視頻流和底盤控制指令如果配置了正確的VLAN和PCP控制指令的端到端時(shí)延基本能穩(wěn)定在幾十微秒級(jí)別如果沒配置QoS時(shí)延可能直接拉高到幾毫秒。這個(gè)差異對(duì)實(shí)車控制的影響完全不是一個(gè)量級(jí)。3.2 SOME/IP服務(wù)發(fā)現(xiàn)與調(diào)用從ECU上電到數(shù)據(jù)交互的全流程我以一個(gè)典型的SOME/IP服務(wù)交互流程為例給大家串一遍車載以太網(wǎng)的實(shí)際通信路徑。假設(shè)車上有一個(gè)智能駕駛域控制器它提供“目標(biāo)物體列表”服務(wù)另一個(gè)座艙域控制器作為客戶端需要訂閱這個(gè)服務(wù)。第一步ECU上電后服務(wù)端和客戶端各自完成系統(tǒng)初始化獲得IP地址通常是DHCP或者靜態(tài)分配。接著服務(wù)端會(huì)周期性地發(fā)送SOME/IP-SDService Discovery報(bào)文廣播自己提供的服務(wù)信息包括服務(wù)ID、實(shí)例ID、所在端口、服務(wù)可用性等。第二步客戶端加入網(wǎng)絡(luò)后會(huì)發(fā)送服務(wù)發(fā)現(xiàn)請(qǐng)求或者監(jiān)聽網(wǎng)絡(luò)中的服務(wù)廣播。收到服務(wù)端的SD廣播后客戶端對(duì)服務(wù)ID和實(shí)例ID進(jìn)行匹配。匹配成功客戶端就向服務(wù)端發(fā)送訂閱請(qǐng)求。第三步服務(wù)端收到訂閱請(qǐng)求后進(jìn)行訪問控制或安全校驗(yàn)校驗(yàn)通過則回復(fù)訂閱確認(rèn)。之后服務(wù)端開始按約定的周期或事件觸發(fā)方式向客戶端推送目標(biāo)物體列表數(shù)據(jù)。第四步數(shù)據(jù)交互階段SOME/IP報(bào)文頭里包含消息ID、請(qǐng)求ID、協(xié)議版本、消息類型、返回碼等字段。客戶端根據(jù)消息ID判斷這是應(yīng)答還是事件通知根據(jù)請(qǐng)求ID關(guān)聯(lián)到具體的一次調(diào)用。多個(gè)客戶端訂閱同一個(gè)服務(wù)時(shí)服務(wù)端可以配置單播發(fā)送也可以配置組播發(fā)送這取決于網(wǎng)絡(luò)拓?fù)浜蛶捯?guī)劃。整個(gè)過程看起來不復(fù)雜但實(shí)際工程里涉及的細(xì)節(jié)非常多比如服務(wù)發(fā)現(xiàn)周期、訂閱超時(shí)重試機(jī)制、SD報(bào)文里的Option字段解析、請(qǐng)求和應(yīng)答的會(huì)話保持、多實(shí)例服務(wù)的負(fù)載均衡等。任何一個(gè)環(huán)節(jié)出問題都會(huì)導(dǎo)致服務(wù)無法正常通信。所以SOME/IP協(xié)議棧的測(cè)試重點(diǎn)就要覆蓋這些邊界條件。3.3 AUTOSAR與車載以太網(wǎng)的協(xié)同工作如果聊車載以太網(wǎng)不提AUTOSAR那是不完整的。AUTOSAR分經(jīng)典平臺(tái)CP和自適應(yīng)平臺(tái)AP兩者對(duì)以太網(wǎng)的支持方式不同。經(jīng)典平臺(tái)主要面向傳統(tǒng)嵌入式實(shí)時(shí)控制場(chǎng)景它把SOME/IP做成了Communication Stack的一部分通過SOME/IP Transformation模塊把運(yùn)行在CAN上的信號(hào)通信機(jī)制映射到SOME/IP服務(wù)通信上。這樣原來熟悉AUTOSAR CP開發(fā)模式、習(xí)慣配置信號(hào)矩陣的工程師能夠以較低的遷移成本切換到以太網(wǎng)通信。自適應(yīng)平臺(tái)則原生面向高性能計(jì)算場(chǎng)景通常運(yùn)行在Linux或QNX上采用動(dòng)態(tài)部署、面向服務(wù)的設(shè)計(jì)哲學(xué)。AP AUTOSAR里SOME/IP是核心通信中間件支持更靈活的服務(wù)的動(dòng)態(tài)發(fā)現(xiàn)與調(diào)用同時(shí)也集成了TSN相關(guān)的增強(qiáng)接口用于實(shí)時(shí)性要求更高的數(shù)據(jù)交互。實(shí)際項(xiàng)目中域控制器之間用基于AUTOSAR AP或自定義通信框架的SOME/IP做數(shù)據(jù)交互而域內(nèi)傳統(tǒng)執(zhí)行器的控制仍由AUTOSAR CP通過CAN完成兩者通過域控制器內(nèi)部的網(wǎng)關(guān)模塊橋接。這種混合架構(gòu)是當(dāng)前量產(chǎn)車型最主流的形態(tài)。了解AUTOSAR與以太網(wǎng)的關(guān)系對(duì)于做網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)、通信矩陣開發(fā)的工程師來說尤其重要。4. 測(cè)試驗(yàn)證與問題排查真實(shí)項(xiàng)目中怎么上手4.1 搭建一個(gè)可復(fù)現(xiàn)的車載以太網(wǎng)測(cè)試環(huán)境車載以太網(wǎng)測(cè)試環(huán)境從簡(jiǎn)單到復(fù)雜都有對(duì)應(yīng)的方案。最簡(jiǎn)單的方式是使用一臺(tái)帶有以太網(wǎng)接口的Windows/Linux主機(jī)配合USB轉(zhuǎn)100BASE-T1或1000BASE-T1的盒子直接和一個(gè)車載以太網(wǎng)節(jié)點(diǎn)相連。這種方案適合快速驗(yàn)證ECU的協(xié)議棧狀態(tài)比如用Wireshark直接抓包分析SOME/IP和DoIP報(bào)文。市面上這類盒子的廠家比較多比較常見的有Vector的VN5650/VN5430價(jià)格偏貴但穩(wěn)定也有相對(duì)經(jīng)濟(jì)的國(guó)產(chǎn)方案適合預(yù)算有限的團(tuán)隊(duì)。如果是做系統(tǒng)級(jí)測(cè)試需要準(zhǔn)備好以下幾類組件車載以太網(wǎng)交換機(jī)用來搭建多節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)???芍С謭?bào)文的流量生成和分析工具例如Vector CANoe、Pcap硬件抓包工具或者直接用軟件工具配合高性能網(wǎng)卡實(shí)現(xiàn)。可編程電源和故障注入設(shè)備用來模擬電壓波動(dòng)、斷線短路干擾。時(shí)間同步工具例如集成了gPTP功能的交換機(jī)或者專用的時(shí)間測(cè)試儀。示波器和信號(hào)分析儀用于做物理層一致性測(cè)試?yán)缪蹐D測(cè)試、信號(hào)質(zhì)量分析。在實(shí)驗(yàn)室里我個(gè)人的習(xí)慣是先用一個(gè)最小系統(tǒng)驗(yàn)證協(xié)議棧功能也就是“一個(gè)客戶端 一個(gè)服務(wù)端 一個(gè)抓包工具”的三角結(jié)構(gòu)。把SOME/IP服務(wù)和DoIP基本流程跑通再逐步加入交換機(jī)、VLAN、多個(gè)ECU模擬實(shí)車網(wǎng)絡(luò)環(huán)境。一步到位搭建全尺寸臺(tái)架往往壓力大且排錯(cuò)困難。4.2 核心測(cè)試用例從功能測(cè)試到一致性測(cè)試車載以太網(wǎng)的測(cè)試用例我認(rèn)為可以分為三個(gè)層次功能測(cè)試、協(xié)議一致性測(cè)試、魯棒性測(cè)試。功能測(cè)試是最基礎(chǔ)的驗(yàn)證“能不能通”。比如SOME/IP服務(wù)端能正確發(fā)布服務(wù)客戶端能正常發(fā)現(xiàn)并訂閱服務(wù)客戶端發(fā)送請(qǐng)求服務(wù)端能返回正確應(yīng)答DoIP能正常建立TCP連接并完成診斷請(qǐng)求轉(zhuǎn)發(fā)。功能測(cè)試用例設(shè)計(jì)時(shí)要特別注意異常場(chǎng)景比如一個(gè)客戶端在訂閱后突然斷網(wǎng)服務(wù)端應(yīng)該能通過TCP keepalive或者SOME/IP-SD的心跳機(jī)制感知到并回收訂閱資源而另一個(gè)客戶端重新訂閱時(shí)服務(wù)端不能因資源未釋放而拒絕。協(xié)議一致性測(cè)試更偏標(biāo)準(zhǔn)符合性。比如SOME/IP-SD報(bào)文里的各個(gè)字段SD報(bào)文Option Info、Endpoint Option、Multicast Option的格式編碼必須符合AUTOSAR規(guī)范。用Wireshark解析出的報(bào)文如果標(biāo)記為“malformed”那就要小心了大概率是某個(gè)字段長(zhǎng)度或類型不對(duì)。物理層一致性測(cè)試則依據(jù)OPEN Alliance的TC系列規(guī)范用示波器抓取MDI線上的信號(hào)分析眼圖和模板是否符合規(guī)范務(wù)必使用正規(guī)的一致性測(cè)試夾具和探頭。魯棒性測(cè)試是最容易暴露問題的。比如在正常通信時(shí)往SOME/IP-SD報(bào)文里注入一個(gè)畸形Option看協(xié)議棧是否會(huì)崩潰或進(jìn)入異常狀態(tài)比如在TSN流量調(diào)度運(yùn)行過程中突然增加一個(gè)高優(yōu)先級(jí)的大流量流驗(yàn)證關(guān)鍵低優(yōu)先級(jí)流是否還能在限制時(shí)延內(nèi)送達(dá)。魯棒性測(cè)試設(shè)計(jì)得好能撐起量產(chǎn)質(zhì)量的重要保障。4.3 常見問題排查三個(gè)高頻故障場(chǎng)景復(fù)盤排查以太網(wǎng)問題和當(dāng)年排查CAN問題的手段和思路都有很大區(qū)別。CAN報(bào)文排錯(cuò)一般靠示波器和CANoe就能解決以太網(wǎng)涉及大量IP交互的報(bào)文、TCP會(huì)話狀態(tài)、VLAN標(biāo)簽、QoS優(yōu)先級(jí)等排查難度高了不少。我這里整理三個(gè)我在實(shí)際項(xiàng)目中高頻遇到、也很有代表性的問題。第一個(gè)問題SOME/IP服務(wù)始終不能被客戶端發(fā)現(xiàn)。優(yōu)先級(jí)排查順序是這樣先抓包看服務(wù)端有沒有發(fā)出SOME/IP-SD廣播報(bào)文。如果沒發(fā)出查服務(wù)端協(xié)議棧配置確認(rèn)服務(wù)ID、實(shí)例ID、端口是否綁定正確以及SD廣播周期是否配置合理。如果廣播發(fā)出去了客戶端沒響應(yīng)再看客戶端有沒有發(fā)出訂閱請(qǐng)求如果沒有往往是客戶端把服務(wù)ID的格式或版本匹配當(dāng)作條件寫錯(cuò)了如果訂閱請(qǐng)求發(fā)出去了服務(wù)端沒回復(fù)訂閱確認(rèn)就要查安全校驗(yàn)邏輯比如白名單規(guī)則是否放行了該客戶端。第二個(gè)問題DoIP診斷連接經(jīng)常斷。DoIP走的是TCP連接連接中途斷開無非三種情況物理鏈路不穩(wěn)、TCP?;畛瑫r(shí)、應(yīng)用層主動(dòng)斷開。先用長(zhǎng)時(shí)間重負(fù)載跑流驗(yàn)證物理鏈路排除線路或接口退化問題。再看DoIP的TCP連接是否啟用了keepalive以及診斷儀和ECU之間的路由激活狀態(tài)注意DoIP有一個(gè)關(guān)鍵機(jī)制叫路由激活它規(guī)定了診斷儀以何種身份激活與ECU的路由通道如果安全等級(jí)不匹配ECU可能主動(dòng)斷開連接。抓包時(shí)重點(diǎn)看TCP RST和FIN標(biāo)志鎖定了斷開發(fā)起方處理會(huì)高效很多。第三個(gè)問題TSN時(shí)間同步精度不達(dá)標(biāo)。如果一套TSN網(wǎng)絡(luò)里gPTP同步后從時(shí)鐘偏移超過預(yù)期通常要檢查三件事一是gPTP報(bào)文的優(yōu)先級(jí)和VLAN配置在交換機(jī)里有沒有被QoS策略影響或丟棄二是主時(shí)鐘的報(bào)文發(fā)送周期是否正常三是鏈路上有沒有非TSN交換機(jī)介入。非TSN交換機(jī)會(huì)破壞時(shí)延測(cè)量機(jī)制也就是駐留時(shí)間修正導(dǎo)致時(shí)間同步誤差累積。排查的時(shí)候建議逐段抓取gPTP報(bào)文打印出鏈路本地時(shí)間戳和修正字段對(duì)比每一跳的變化很快能定位到出問題的節(jié)點(diǎn)。車載以太網(wǎng)的體系確實(shí)龐大光協(xié)議架構(gòu)這一塊牽扯到物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層每一層都有大量標(biāo)準(zhǔn)和組織在背后推動(dòng)。從我這些年接觸車載網(wǎng)絡(luò)項(xiàng)目、參與多款車型以太網(wǎng)測(cè)試的體會(huì)來說掌握車載以太網(wǎng)最重要的一點(diǎn)是先建立清晰的整體架構(gòu)觀再逐層深入細(xì)節(jié)。如果一上來就去扣某條SOME/IP報(bào)文的某個(gè)位域很容易迷失。這篇文章算是把車載以太網(wǎng)的整體概念和協(xié)議架構(gòu)理清了后續(xù)我會(huì)繼續(xù)寫SOME/IP服務(wù)機(jī)制的深入拆解、TSN時(shí)間同步與流量調(diào)度的實(shí)測(cè)經(jīng)驗(yàn)還有針對(duì)功能測(cè)試和一致性測(cè)試的用例設(shè)計(jì)思路把這些年摸爬滾打攢下來的東西整理出來給正在進(jìn)入這個(gè)領(lǐng)域的朋友一些參考。如果大家在項(xiàng)目中遇到具體的以太網(wǎng)問題也歡迎多交流這個(gè)技術(shù)方向越交流越清晰。