車載網絡技術--SOME_IP協議詳解

文章目錄

    • 前言
    • SOME/IP概念
    • SOME/IP協議格式
    • SOME/IP功能介紹
      • 序列化
        • 序列化規則
      • 發布和訂閱
      • 服務發現(SOME/IP-SD)
      • SOME/IP-TP協議使用場景
        • SOME/IP-TP協議
    • 參考文章:

前言

本文介紹了SOME/IP協議的具體內容,包括報文格式,協議選擇、序列化、服務發現等。同時介紹了SOME/IP-TP協議。

SOME/IP概念

SOME/IP是一種汽車中間件解決方案,SOME/IP全稱:Scalable service-Oriented MiddlewarE over IP(位于IP協議蹭之上的一種面向服務的可擴展的中間件),是一種基于以太網的協議,提供面向服務的接口。由寶馬集團在2011年設計開發,并在2014年集成進AUTOSAR4.X中。并且是唯一已知的集成到AUTOSAR 4.x版本中的中間件。

SOME/IP協議是在IP層之上的,屬于應用層協議。

畫板

為什么需要SOME/IP?

  • 傳統汽車協議的局限性:傳統的汽車協議如 CAN、MOST、LIN 和 Flexray 等,存在帶寬有限的問題,難以滿足現代汽車日益增長的高數據傳輸需求。基于IP網絡,SOME/IP能夠利用現有的IP網絡基礎設施,提供服務發現、描述、配置以及調用等功能
  • SOME/IP的可擴展性:SOME/IP能夠實現不同硬件平臺,不同操作系統或嵌入式固件之間的可擴展和互操作

SOME/IP協議格式

SOME/IP協議由消息頭(header)和數據段(payload)組成。

  1. message ID是唯一的。前16位標識服務,后16位標識方法
    1. 對于Method,Method ID的第一位為0, 對于Event,Method ID的第一位為1

  1. Length(32 bit)標識后續的Request ID到payload的字節長度。
  2. Request ID(32 bit)由2個字節的Client ID 和2個字節的Session ID組成。Client ID用于區分使用同一Method的不同客戶端,session ID由數據的發送方每發送一次數據+1,從0x1加到0xffff后,從1重新開始,用于區分每一條消息

client ID只有兩個字節,能夠同時支持多少客戶端?支持65536個

  1. Protocol Version協議版本號,目前該值為1
  2. Interface Version接口版本號,一般由服務者提供者定義
  3. Message Type 用于標識消息的類型,例如ErrorREQUEST, RESPONSE

  1. Return Code用來標識請求是否被處理
  2. payload長度可變,攜帶的是真正的數據

說明:

SOME/IP報文可以選擇UDP或者TCP進行傳輸。使用UDP時一般payload大小在0~1400字節,大于1400字節時,應當使用TCP對負載分段。

對于TCP和UDP的選擇并非強制,一般來說要求低時延用UDP,數據大用TCP

要求低時延且數據大可以用UDP結合SOME/IP-TP。后文會詳細介紹SOME/IP-TP

SOME/IP功能介紹

SOME/IP支持的中間件功能:序列化、遠程過程調用、服務發現、發布與訂閱。

序列化

序列化指的是講數據結構或對象按照事先定義的規則轉換成可存儲、可傳輸的線性字節流或特定格式文本(如 JSON、XML)的過程。與之相反的逆過程稱為 “反序列化(Deserialization)

在AUTOSAR中,軟件組件將數據從應用層傳遞到RTE層,在RTE層調用SOME/IP Transformer,執行可配置的數據序列化或者反序列化

SOME/IP 不自動插入填充字節,若需對齊(如 32 位數據對齊到 4 字節地址),需用戶在結構體定義時顯式添加保留字段

序列化規則

SOME/IP 不自動插入填充字節,若需對齊(如 32 位數據對齊到 4 字節地址),需用戶在結構體定義時顯式添加保留字段

SOME/IP序列化與反序列采用LTV(Length-Type-Value)格式來進行的。并且Value中包含因字節對齊的填充

LTV的規則并非需要嚴格遵守

數據類型是否嚴格遵守 LTV說明類比
所有基本類型 (uint8, int32, float64, boolean)只有 V。L 和 T 由接口定義隱含。就像 C 語言中的 struct { int a; char b; }
,成員位置和大小固定。
字符串、數組、結構體、聯合體必須包含顯式的 L(長度字段)。T 可能顯式(聯合體)或隱含。就像網絡協議中的 TLV 或 JSON 中的 {"key": "value"},需要自描述性。

同時為了兼容性,還可以新增一個兩字節的Tag在序列化中。是否使用帶Tag的序列化,取決于對應ARXML文件中的配置。當使用帶有tag的序列化時,即使發送方新增結構體的成員,舊版本的接收方也可以安全跳過不認識的字段,從而實現兼容。

舉例如下:

  1. ECU A(軟件版本 1.0)向 ECU B 發送一個結構體VehicleData,包含speedrpm兩個成員。
  2. 后來,軟件升級了。ECU A 更新到版本 2.0,VehicleData結構體增加了一個新成員 gearECU B 沒有升級(還是版本 1.0),它收到來自版本 2.0 的 VehicleData 消息時,遇到gear對應的tag,會自動跳過解析這個字段。

發布和訂閱

畫板

  1. Method方法(請求/響應交互模式)
    1. Request/Reponse客戶端發送請求,服務端應答
    2. Fire/Forget 客戶端發送請求,服務端不需要應答
  2. Event事件(事件通知模式)
    1. 單項數據傳輸,client訂閱Server服務,Server發布信息到Client(當數據變化時才發送,適合實時狀態監控,告警通知等)
  3. Field字段(遠程屬性訪問模式)
    1. 分為Notifier、Getter、Setter,分別表示Server向Client主動發送消息、client向server請求數據,以及Client修改Server的數據

一些區別:

  • Method:是客戶端主動發起的 “請求 - 響應”(如 “查詢當前車速”),只需知道服務地址即可直接調用,無需提前訂閱;
  • Event 和 Field中的notifier:Event是服務端主動推送的 “通知”(如 “車速超過 100km/h 時自動推送警告”), Field中的notifier是客戶端必須先通過 SD 服務告知服務端 “我需要接收這些通知”,服務端才會針對性推送。
  • Field和Event的區別:Field是一個持續存在的變量,如多媒體音量、車速、環境溫度等。這些可以在任何時刻獲取;而Event指的是一個事件,事件沒有就不發生,比如發生碰撞、出現故障等

服務發現(SOME/IP-SD)

SOME/IP-SD(Service Discovery)是 SOME/IP 協議中用于服務發現的一種機制,允許網絡中的客戶端動態地發現和定位服務實例。

SOME/IP-SD服務只能采用UDP的兩點原因:

  1. SD服務需要進行組播,而TCP協議是點對點協議,無法進行組播;
  2. SD服務往往需要快速廣播或組播通知,UDP無連接特性更適合這種場景

功能:

  • 定位服務實例:幫助在車載網絡中確定服務實例的位置,雖然在車載網絡中服務實例的位置通常是已知的,但 SOME/IP-SD 仍能提供更準確和動態的定位信息。
  • 檢測服務實例狀態:能夠檢查服務實例的運行狀態,及時了解服務是否可用。
  • 實現發布 / 訂閱處理:支持發布 / 訂閱模式,使得消息僅發送給對其感興趣的接收者,提高了通信效率和靈活性。

工作原理:

  • 初始等待階段:服務提供者和客戶端在啟動后,會等待一段時間(在 InitialDelayMin 和 InitialDelayMax 之間隨機)再發送第一條 SD 消息,以避免啟動時的網絡擁塞,允許節點在網絡中穩定后再進行通信。
  • 重復階段:服務提供者和客戶端按照固定的時間間隔(如 100ms 的倍數)重復發送 SD 消息,加快兩者之間的同步速度,確保服務信息的及時更新。
  • 主階段:服務提供者進入周期性發送 Offer Service 消息的階段,客戶端則根據需求發送 Find Service 消息,實現服務的持續發現和動態管理,確保客戶端能夠及時獲取到最新的服務信息。

消息格式:

  • 傳輸協議:SOME/IP-SD 消息通過用戶數據報協議(UDP)發送。
  • 服務 ID:固定為 0xFFFF,表示這是一個服務發現相關的消息。
  • 方法 ID:固定為 0x8100。
  • 長度字段:使用由 SOME/IP 指定的 uint32 長度字段,該字段從長度字段之后的第一個字節開始,一直到 SOME/IP-SD 消息的最后一個字節結束。
  • 客戶端 ID:應設置為 0x0000。

SOME/IP-TP協議使用場景

由于TCP協議需要連接過程,因此針對低時延的數據傳輸,往往采用UDP傳輸數據。而使用UDP傳輸大數據時,例如4M數據。由于UDP頭部的長度采用2字節記錄,因此UDP報文的最大長度約為64K。但其實在數據鏈路層MTU的長度為1500字節,除去頭部占用的字節,大概真正攜帶的數據有1400多字節。因此超過這個字節數就會被IP層被動分片。而采用UDP傳輸時,由于無重傳機制等,任意一個分片丟失都將會導致UDP這次傳輸的數據全部不可用,這是無法接受的。因此在使用UDP傳輸時,一般由應用層主動分片,并配有序號、校驗、重傳的機制。這也是SOME/IP-TP、QUIC等應用層協議處理UDP的思路

SOME/IP-TP協議

當SOME/IP協議攜帶的數據超過1400字節時,在UDP下會使用TP協議,此時Message Type中的TP-Flag會置1,會增加一個4字節的數據,表示數據在整個數據中的偏移量offset以及是否是最后一個分片。

該4字節的具體含義如下:

  1. offset : 28位,后四位為0,表示該數據起始在整個數據中的偏移
  2. RES: 3位,為0,保留位
  3. More Segment Flag: 表示是否是最后一個分片,不是最后一個分片為1,最后一個分片為0。

一個分片的數據長度最多為1392字節,超過則需要分片。因為Length后面還有8個字節的頭部信息。

參考文章:

  1. https://www.some-ip.com/details.shtml
  2. https://blog.csdn.net/m0_62923342/article/details/150599620
  3. https://zhuanlan.zhihu.com/p/24101929809
  4. AUTOSAR_PRS_SOMEIPProtocol

如果本文對您有幫助,還麻煩您點一個免費的贊!如果 有錯誤也歡迎向我反饋。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/99095.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/99095.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/99095.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JVM 核心知識全解析:從類加載到垃圾回收的深度認知

什么是JVM? JVM全稱(Java Virtual Machine),中譯為:Java虛擬機 本質:是一個運行在計算機上的程序 職責:運行Java字節碼文件(因為計算機只能認識機器碼文件,所以需要JVM將…

Keepalived 負載均衡

Keepalived 負載均衡 Keepalived 可以與 LVS(Linux Virtual Server)結合,提供強大的四層負載均衡功能。它通過 IPVS(IP Virtual Server)內核模塊實現高性能的負載分發。 核心組件 Virtual Server:虛擬服務器…

拷打DeepSeek實現自動生成差分電荷計算文件和后處理

差分電荷(charge density difference)是材料模擬中分析電子結構變化的直觀工具。 它把成鍵后的真實電荷密度減去成鍵前各碎片疊加的電荷密度,得到一張“電子遷移地圖” 于是可以一眼看出化學鍵形成時電子從哪里來到哪里去,表面吸…

AI問答-Nuxt4:什么時候發布的,有哪些特性,和Nuxt3相比 有哪些優勢 / Nuxt4 / Nuxt-v4

Nuxt 4于2025年7月至8月期間正式發布,作為Nuxt框架的重大版本更新,其核心聚焦于穩定性提升、開發者體驗優化及性能增強,與Nuxt 3相比,優勢體現在項目結構、數據獲取、類型系統、開發工具鏈等多個層面。一、Nuxt 4 發布時間線測試階…

isinstance()和insubclass()

??isinstance() 和 issubclass() 的功能與用法????1. isinstance(obj, classinfo)????功能??:檢查對象 obj 是否是 classinfo 類(或其子類)的實例。 ??返回值??:True 或 False。 ??用法??:class A…

判斷QMetaObject::invokeMethod()里的函數是否調用成功

今天,在Qt編程,碰到一個需要使用invokeMethod方式來獲取函數是否執行成功的情況。 ? ? invokeMethod()即可以同步調用,也可以異步調用。若調用者、被調用者,都在同一個線程,則是同步調用;若調用者、被調用…

【linux】特殊權限

us對文件:用戶執行該文件時,會以文件所有者的權限運行chmod us filename # 符號模式 chmod 4755 filename # 數字模式(4表示SetUID)典型應用:/usr/bin/passwd(允許普通用戶修改自己的密碼,…

OpenCV:指紋識別

目錄 一、核心算法 1:SIFT 特征提取(尺度不變特征變換) 1.1 算法原理(4 步核心流程) 1.2 重點代碼實現與參數解析 1.3 關鍵輸出解讀 二、核心算法 2:FLANN 特征匹配(快速最近鄰搜索&#x…

快速排序:高效的分治排序算法

快速排序因其平均時間復雜度$O(n\log n)$而成為廣泛應用的高效排序算法。其核心是分治法: 選擇基準 (Pivot):從待排序序列中選取一個元素(如第一個元素$arr[0]$)。 分區 (Partition):將序列重新排列,所有小于基準的元素置于其前,大于或等于的置于其后。基準元素最終位于…

網絡編程之UDP廣播與粘包問題

一,廣播簡介從上述講的例?中,不管是TCP協議還是UDP協議,都是”單播”, 就是”點對點”的進?通信,如果要對網絡里面的所有主機進?通信,實現”點對多”的通信,我們可以使用UDP中的?播通信。 理論上可以像…

教育領域大模型生成題目安全研究報告

教育領域大模型生成題目安全研究報告 一、研究背景與意義 隨著大語言模型(LLM)在教育領域的深度應用,自動生成題目已成為提升教學效率、實現個性化教學的關鍵技術手段,廣泛應用于課堂練習、作業布置、考試命題等場景。然而&…

Android安卓項目調試之Gradle 與 Gradle Wrapper的概念以及常用gradle命令深度詳解-優雅草卓伊凡

Android安卓項目調試之Gradle 與 Gradle Wrapper的概念以及常用gradle命令深度詳解-優雅草卓伊凡好的,我們來詳細梳理一下 Android 開發中 Gradle 的常用配置和調試命令。這對于每一位 Android 開發者來說都是必須掌握的核心技能。第一部分:Gradle 與 Gr…

Maven入門_簡介、安裝與配置

ZZHow(ZZhow1024) 參考課程: 【尚硅谷新版Maven教程】 [https://www.bilibili.com/video/BV1JN411G7gX] 一、Maven簡介 02_依賴管理工具 解決 jar 包的規模問題解決 jar 包的來源問題解決 jar 包的導入問題解決 jar 包之間的依賴 03_構建工具 我們沒有注意過…

Spark(1):不依賴Hadoop搭建Spark環境

不依賴Hadoop搭建Spark環境0 概述1 單機安裝Spark1.1 下載Spark預編譯包1.2 解壓和設置1.3 配置環境變量1.4 驗證安裝2 Spark運行模式2.1 Local模式(本地模式)2.1.1 Spark Shell2.1.1.1 Python版的Shell2.1.1.2 Scala版的Shell2.1.2 提交獨立的Spark應用…

【ThreeJs】【自帶依賴】Three.js 自帶依賴指南

🛠? Three.js 輔助庫生態手冊 定位:覆蓋 90% 開發場景的工具選型實操指南,區分「入門必備」和「進階擴展」。 適用人群:Three.js 新手(≥ r132 版本)、需要規范開發流程的團隊。 1. 控制器(Co…

Mac電腦上如何打印出字體圖標

背景 我今天打開了一個之前開發的APP,看到項目中用到了字體圖標,發現有個“面條”圖標用錯了,想著修改一下吧。然后用輸入法打出”面條“,在輸入法的彈窗中就一直往下找,發現并沒有出現圖標。 想著打出”面條圖標“也沒…

當AI遇上數據庫:Text2Sql.Net如何讓“說人話查數據“成為現實

一句話概括:還在為寫復雜SQL而頭疼?Text2Sql.Net讓你用自然語言就能查數據庫,堪稱程序員的"數據庫翻譯官"! 🎯 引言:從"SQL地獄"到"自然語言天堂" 想象一下這樣的場景&…

整體設計 之 緒 思維導圖引擎 之 引 認知系統 之8 之 序 認知元架構 之4 統籌:范疇/分類/目錄/條目 之2 (豆包助手 之6)

問題Q68、我們現在僅僅分析了 認知演進 的 “進”的問題,通過層次結構 和 統籌 的同構約束 給出了 不同對象及其對應的操作和約束。 --這句話 你能完全理解嗎(這意味著 完整的程序細節設計)。 還沒有分析的還有 “演” 以及組合詞 “演進” -…

開始 ComfyUI 的 AI 繪圖之旅-Qwen-Image-Edit(十二)

文章標題一、Qwen-Image-Edit1.ComfyOrg Qwen-Image-Edit 直播回放2.Qwen-Image-Edit ComfyUI 原生工作流示例2.1 工作流文件2.2 模型下載3.3 按步驟完成工作流一、Qwen-Image-Edit Qwen-Image-Edit 是 Qwen-Image 的圖像編輯版本,基于20B模型進一步訓練&#xff0c…

機械制造專屬ERP:降本增效與數字轉型的關鍵

轉型升級壓力下,ERP系統是機械企業破局的得力助手。本文深入解析ERP的核心功能、選型要點與實施價值,助您精準選型,賦能智能制造,全面提升競爭力。在數字化浪潮席卷之下,機械制造企業正面臨提質、增效、降本的關鍵轉型…