国产美女精品福利一区二区_国产尤物av尤物在线观看_中文字幕在线中文字幕二区_精品国产子伦久久久久久小说_手机在线黄色网址_亚洲一区二区精品

400-821-6015
行業(yè)資訊
您當前的位置:首頁 ? 行業(yè)資訊 ? 行業(yè)資訊
內(nèi)部資訊行業(yè)資訊

AUTOSAR中的服務發(fā)現(xiàn)模塊(SOME/IP SD)的規(guī)范與實例分析

發(fā)布日期:2024-12-06

作者 | 不可說

出品 | 汽車電子與軟件


#01 引  入          

      服務發(fā)現(xiàn)模塊(Service Discovery Module)的主要任務是在車內(nèi)通信中管理服務(functional entities)的可用性,這些服務被稱為功能實體,并控制事件消息的發(fā)送行為。這一機制確保僅將事件消息發(fā)送給需要它們的接收方(即采用發(fā)布/訂閱模式)。此處描述的解決方案就被稱為SOME/IP-SD(基于IP的可擴展面向服務中間件 - 服務發(fā)現(xiàn),Scalable service-Oriented MiddlewarE over IP - Service Discovery)。                

      通過服務發(fā)現(xiàn)功能,不同的電子控制單元(ECU)可以提供服務實例,并在車輛網(wǎng)絡中查找可用的服務實例。一個ECU可以停止提供之前提供的服務實例,之后對該服務實例的查找將得不到響應。服務實例是由其服務接口定義的服務的單個實現(xiàn)。                

      除了管理服務實例的狀態(tài)外,服務發(fā)現(xiàn)還能控制發(fā)送一種特殊消息,即事件消息。這些事件消息被分組到事件組中,服務發(fā)現(xiàn)可以以發(fā)布/訂閱的方式開啟或關(guān)閉這些事件組,從而開啟或關(guān)閉該事件組中事件的發(fā)送和接收。           



#02 SOME/IP SD對不同ECU角色的職責  

      ECU的服務發(fā)現(xiàn)模塊在處理服務器服務和客戶端服務時扮演著不同的角色,并需要執(zhí)行相應的操作來確保服務的正確提供和查找。   

      一個ECU需要處理兩種不同類型的服務:
      服務端服務(Server Services):本地ECU向車輛的其他部分提供服務器服務實例(即位于本地的服務實例),并可以被視為該服務實例的服務端。
      客戶端服務(Client Services):本地ECU可能會使用車輛內(nèi)另一個ECU提供的服務器服務實例,并可以被視為該服務實例的客戶端。

      對于服務端服務,本地ECU的SOME/IP SD模塊(擔任服務器角色)需要執(zhí)行以下操作:

      - 當服務可用時(即提供服務的軟件組件(SWC)準備就緒,且服務在當前ECU狀態(tài)下可用)提供本地服務。

      - 當服務不再可用時,撤回本地服務的提供(停止提供)。

      - 響應其他ECU的查找請求。

      對于客戶端服務,本地ECU的服務發(fā)現(xiàn)模塊(擔任客戶端角色)需要執(zhí)行以下操作:

      - 根據(jù)配置監(jiān)聽提供的服務和查找請求,并將這些信息存儲在易失性存儲器中。

      - 監(jiān)聽停止提供的服務信息,并根據(jù)配置將這些信息存儲在易失性存儲器中。

      - 根據(jù)當前ECU及其軟件組件(SWC)的狀態(tài)發(fā)送查找請求。

      服務發(fā)現(xiàn)同樣可用于管理發(fā)布/訂閱(Publish/Subscribe)關(guān)系。在基于服務發(fā)現(xiàn)的發(fā)布/訂閱應用場景中,一個ECU(作為具有已消費事件組的發(fā)布/訂閱客戶端)對從另一個ECU(作為具有事件處理器的發(fā)布/訂閱服務器)接收某些數(shù)據(jù)(即訂閱)感興趣。          

      雖然訂閱關(guān)系在服務發(fā)現(xiàn)(SD)消息中明確定義,但發(fā)布關(guān)系則基于服務實例本身的可用性(即提供服務條目)。基于所提供的服務實例,發(fā)布/訂閱客戶端可通過訂閱事件組條目進行訂閱。此時,發(fā)布/訂閱服務器將利用此訂閱關(guān)系,將發(fā)布/訂閱客戶端注冊為對訂閱中指定的某些信息感興趣的方,并在發(fā)生某些事件或超時后,開始將這些信息發(fā)送給發(fā)布/訂閱客戶端。             

      為進行優(yōu)化,服務發(fā)現(xiàn)支持使用多播消息而非每個客戶端的單播消息,將事件消息發(fā)送給多個客戶端。但請注意,服務器端和客戶端預先配置的多播之間存在差異:          

      - 如果SdServerService(服務端服務)為每個事件處理器預先配置了多播地址和端口(即所謂“事件處理器多播端點”),則當訂閱了具有不同端點信息的SdClientServices(客戶端服務)達到閾值(SdEventHandler MulticastThreshold,事件處理器多播閾值)時,SdServerService將切換至此多播地址和端口。

      - 如果SdClientService(客戶端服務)使用多播地址和端口(即所謂“已消費事件組多播端點”)進行了訂閱,則SdServerService在訂閱已消費事件組多播端點(多播地址和端口)時,會向其發(fā)送事件。


圖片   



#03 SD流程

      服務發(fā)布流程  


圖片


      Down Phase

      服務處于不可用狀態(tài)

      

      Initial Wait Phase

      服務準備完成后, 進入該階段, 延遲一定時間后發(fā)送服務發(fā)布報文

 

      Repetition Phase

      重復發(fā)送服務發(fā)布報文, 重復次數(shù)由配置參數(shù)決定, 此階段收到服務發(fā)現(xiàn)請求后,通過服務發(fā)布報文進行應答

 

      Main Phase

      周期性發(fā)送服務發(fā)布報文, 周期時間由配置參數(shù)決定, 此階段收到服務發(fā)現(xiàn)請求后,通過服務發(fā)布報文進行應答    


      服務發(fā)現(xiàn)流程  


圖片


      Down Phase

      服務未被應用請求

 

      Initial Wait Phase

      應用發(fā)起服務請求后進入該階段


      Repetition Phase

      重復發(fā)送服務發(fā)現(xiàn)報文, 重復次數(shù)由配置文件參數(shù)REPETITION_MAX決定, 收到服務發(fā)布報文后, 停止發(fā)送服務發(fā)現(xiàn)報文


      Main Phase

      不再重復發(fā)送服務發(fā)現(xiàn)報文, 每次收到服務發(fā)布報文后, 觸發(fā)服務訂閱請求報文。              

      服務訂閱流程  


圖片          

  • 服務發(fā)現(xiàn)
  • 連接建立
  • 注冊服務
  • 事件通知
              

#04 SOME/IP SD協(xié)議規(guī)范


圖片
服務發(fā)現(xiàn)消息格式
      SOME/IP SD中的Message ID是固定的字段:0xFFFF8100;
      Length占用32bits位,其數(shù)值表示從Request ID到報文最尾端的字節(jié)數(shù);

      Request ID 由Client ID 和Session ID 組成。雖然Client ID 不用于服務發(fā)現(xiàn),但Session ID 用于檢測車輛中其他服務發(fā)現(xiàn)實例的重啟或重啟,以修復服務發(fā)現(xiàn)模塊的本地狀態(tài)。在初始化 Service Discovery Module 后, ECU 發(fā)送的消息的 Session ID應為0x0001。          

      Protocol Version 字段是用來描述當前SOME/IP協(xié)議版本,目前是0x01;

      Interface Version 字段是用來描述當前SOME/IP服務的版本;
      Message Type 字段用來區(qū)分 SOME/IP 消息的類型, SOME/IP-SD 僅僅使用事件消息,因此固定為0x2;

      Return Code用于表示請求是否已成功處理。這不適用于SOME/IP-SD;因此返回碼被靜態(tài)設置為0x00。             

      SOME/IP SD從Message ID到Return Code字段的格式與SOME/IP 協(xié)議格式是一致的;后面的字段才是SOME/IP SD獨有的。          

      Flag  

      使用Flags字段啟動SOME/IP-SD標頭。它用于發(fā)送全局服務發(fā)現(xiàn)信息,其中包括當前上次重新啟動的狀態(tài)以及接收單播消息的能力。

      如果服務4端或客戶端通過評估通信方發(fā)送的SOME/IP-SD消息的會話ID(Session ID)和重啟標志(Reboot Flag)檢測到重啟,則受影響的通信本地狀態(tài)將失效,并應執(zhí)行以下操作:          

      客戶端檢測到服務端重啟時的處理:

      1)如果客戶端檢測到服務端重啟,并且該客戶端正在使用該服務端的服務,則客戶端應將此次重啟視為接收到“停止提供服務”(StopOffer)消息。

      2)如果為該服務配置了SdClientServiceTcpRef,則活動客戶端應通過調(diào)用SoAd_CloseSoCon()函數(shù)并設置參數(shù)“abort”為TRUE來關(guān)閉相應的TCP連接。


      服務器檢測到客戶端重啟時的處理:


      如果服務器檢測到客戶端重啟,并且該客戶端正在使用該服務端的服務,則服務端應將此次重啟視為接收到“停止訂閱事件組”(StopSubscribeEventgroup)消息。          

      Reserved  

      保留的字段,當前沒有實際含義。

      Length of Entries Array  

      該字段值表示下面Entries Array字段的大小,單位為byte。   

      Entries Array  

      該字段大小是浮動的,并且有兩種類型,一種是服務Entries,一種是事件組Entries

      

      服務Services Entries

圖片
  • Type為0x00時,表示FindService;為0x01時,表示OfferService和StopOfferService
  • Index 1st options 標明屬于這個Entry的第一個option的起始索引序號,從0開始計算;Index 2st options 標明屬于這個Entry的第二個option的起始索引序號,從0開始計算;#of opt 1表明該entry有幾個第一組option;#of opt 2表明有幾個第二組option。
  • 該類型Service ID字段應攜帶服務的Service ID,根據(jù)是服務端還是客戶端,使用參數(shù)SdServerServiceID或SdClientServiceID進行靜態(tài)配置。
  • Instance ID字段應攜帶服務的Instance ID,根據(jù)是服務端還是客戶端,使用參數(shù)SdServerSer-viceInstanceID和SdClientServiceInstanceID靜態(tài)配置。
  • Major Version字段應包含SdServerServiceMajorVersion或者SdClientServiceMajorVersion,這取決于該條消息是服務端發(fā)送的還是客戶端發(fā)送的。
  • TTL字段定義了使用參數(shù)SdServerTimer TTL和SdClientTimer TTL配置的服務器條目的生存期(秒),但TTL為0的Stop Entries除外。
  • Minor字段應攜帶SdServerServiceMinorVersion或者SdClientServiceMinorVersion,這些都是在服務設計階段就已經(jīng)規(guī)范好的。
          Eventgroups Entries   
圖片
      Service ID、Instance ID、Major Version、TTL與Services Entries中定義是一致的;
      Type為0x06時,表示SubscribeEventgroup和StopSubscribeEventgroup;為0x07時,SubscribeEventgroupAck和SubscribeEventgroupNack;
      Counter用于區(qū)分同一訂閱者的相同訂閱事件組。如果不使用,設置為0x0;
      Eventgroup ID字段應包含使用參數(shù)SdConsumerEvent GroupID配置的事件組的ID,也是在通信設計階段定義好的事件組ID。          

      Length of Options Array  

      該字段值表示下面Options Array字段的大小,單位為byte。          

      Options Array  

      Options Array也是有多種類型的:
      Configuration Option

圖片

      Type為0x1;

      Configuration Options Array可以配置服務發(fā)現(xiàn)消息中條目的其他屬性。可以使用配置選項傳輸0到n個配置項。這些配置項可以包括例如主機或服務的名稱;如:   

圖片          

      IPv4 Endpoint Option

圖片
      Type為0x4;

      該Option傳輸單播IP地址、第四層協(xié)議(如UDP或TCP)和端口號;從而獲取與服務通信所需的信息。當接收到提供服務并傳輸IPv4選項的服務發(fā)現(xiàn)消息時,接收此消息的ECU可以通過更新Socket連接,動態(tài)配置套接字適配器以使用此服務。          

      IPv4 Multicast Option

圖片
      Type為0x14;

      IPv4多播選項由SdServerService或者SdClientService用于通告其配置的事件多播端點;

      - 如果用作服務端的多播端點,則SdServerService會聲明IPv4多播地址、傳輸層協(xié)議(ISO/OSI第4層)和端口號,多播事件和多播通知事件將發(fā)送到這些端口。

      - 如果它用作客戶端事件組多播端點,則SdClientSer指示IPv4多播地址、傳輸層協(xié)議(ISO/OSI第4層)和端口號,SdClient期望在其中接收事件。作為傳輸層協(xié)議,只支持UDP。  

      IPv4 SD Endpoint Option
圖片
      Type為0x24;

      IPv4 SD端點選項傳輸發(fā)送方SD實現(xiàn)的端點(即IP地址和端口)。這用于在無法使用IP地址和/或端口號的情況下標識SOME/IP-SD實例。          

      Option也支持 IPv6 Endpoint Option、IPv6 Multicast Option、IPv6 SD Endpoint Option,但是在車載通信中,IPv4就足夠了,并且通常會禁用IPv6,因此此處不介紹IPv6相關(guān)的Option。          



#05 通信實例分析 

      第一個(offer)  


圖片
      Length of Entries Array為0x10,表示Entry有16 bytes大小。只有一個Entry,type為0x01,也就是歸屬于Services Entries,TTL不為0,表示offer service,即表示服務發(fā)布,#opt1值為1,表示有一個option;該服務的服務id為0x12、實例id為0x1,設置的ttl為3,服務主版本為1、次要版本為0。   
      Length of Options Array為0xc,表示Option共計12 bytes大小。該option信息是上面的Entry的信息補充。Length為0x9,Type為0x4,表示這個是IPv4 Endpoint Option;IP地址解析為192.168.60.4,對應原始數(shù)據(jù)為c0 08 3c 04,也表明了L4層使用的是TCP(0x0006)。
      最后的ox7725則是表示端口號,即30501。          

      第二個(Subscribe)  


圖片
      Length of Entries Array為0x10,表示Entry有16 bytes大小。只有一個Entry,type為0x06,也就是歸屬于Eventgroups Entries,TTL不為0,表示Subscribe Eventgroup,即表示服務事件組的訂閱,#opt1值為1,表示有一個option;該服務的服務id為0xd、實例id為0x1,設置的ttl為16777215,即0xffffff,表示訂閱一直有效,不過一般應該避免這樣設置。服務主版本為1、訂閱的服務實例ID為1。
      Length of Options Array為0xc,表示Option共計12 bytes大小。該option信息是上面的Entry的信息補充。Length為0x9,Type為0x4,表示這個是IPv4 Endpoint Option;IP地址解析為192.168.60.1,對應原始數(shù)據(jù)為c0 08 3c 01,也表明了L4層使用的是TCP(0x0006)。   
      最后的0x771b則是表示端口號,即30491。
上海創(chuàng)程車聯(lián)網(wǎng)絡科技有限公司版權(quán)所有 滬ICP備11045498號-1   技術(shù)支持:網(wǎng)站建設
主站蜘蛛池模板: 久草av在线播放 | 亚洲AV色香蕉一区二区蜜桃 | 免费在线成人av | 91国内在线观看 | 特级小箩利无码毛片 | 九九久久精品国产 | 欧美大波少妇在厨房被 | 国产一级内谢 | 黑人疯狂巨大xxx0o0 | 一区二区三区国产最好的精华液 | 亚洲人成网站77777·C0M | 中文字幕狠狠干 | 农村人chinese熟女 | 操你av| 女人脱个精光认男人桶到爽 | 欧美一级一区二区三区高清 | 午夜视频网站在线免费观看 | 久久精品国产一区二区无码 | 曰韩无码无遮挡A级毛片 | 国产成人无码WWW免费视频在线 | 国产毛片精品国产一区二区三区 | 爱丫爱丫影院在线观看免费 | 日韩中文字幕第一页 | 哪里可以看免费的av | 日本a级片在线观看 | 伊人网成人网 | 日本肥妇| 日本精品久久无码影院 | 国产欧美另类久久久精品图片 | 国产精品美女久久久久久久网站 | 色翁荡息又大又硬又粗又爽 | 日本福利一区二区三区 | 一二三四视频社区在线播放中国 | 岛国片在线播放 | 欧美日韩一级在线观看 | 日韩中文字幕在线播放 | 最好免费的高清视频剪辑软件 | 久操香蕉 | 国产精品久久国产精品 | 在线观看黄色毛片 | 免费无码专区毛片高潮喷水 |