欧美美乳视频网站在线观看_日韩视频在线免费观看_国产福利一区二区在线观看_久久99日韩_天天看天天干_成人xxxx

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

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

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

作者 | 不可說

出品 | 汽車電子與軟件


#01 引  入          

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

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

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



#02 SOME/IP SD對(duì)不同ECU角色的職責(zé)  

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

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

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

      - 當(dāng)服務(wù)可用時(shí)(即提供服務(wù)的軟件組件(SWC)準(zhǔn)備就緒,且服務(wù)在當(dāng)前ECU狀態(tài)下可用)提供本地服務(wù)。

      - 當(dāng)服務(wù)不再可用時(shí),撤回本地服務(wù)的提供(停止提供)。

      - 響應(yīng)其他ECU的查找請(qǐng)求。

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

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

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

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

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

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

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

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

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


圖片   



#03 SD流程

      服務(wù)發(fā)布流程  


圖片


      Down Phase

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

      

      Initial Wait Phase

      服務(wù)準(zhǔn)備完成后, 進(jìn)入該階段, 延遲一定時(shí)間后發(fā)送服務(wù)發(fā)布報(bào)文

 

      Repetition Phase

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

 

      Main Phase

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


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


圖片


      Down Phase

      服務(wù)未被應(yīng)用請(qǐng)求

 

      Initial Wait Phase

      應(yīng)用發(fā)起服務(wù)請(qǐng)求后進(jìn)入該階段


      Repetition Phase

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


      Main Phase

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

      服務(wù)訂閱流程  


圖片          

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

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


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

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

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

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

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

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

      Flag  

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

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

      客戶端檢測(cè)到服務(wù)端重啟時(shí)的處理:

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

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


      服務(wù)器檢測(cè)到客戶端重啟時(shí)的處理:


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

      Reserved  

      保留的字段,當(dāng)前沒有實(shí)際含義。

      Length of Entries Array  

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

      Entries Array  

      該字段大小是浮動(dòng)的,并且有兩種類型,一種是服務(wù)Entries,一種是事件組Entries

      

      服務(wù)Services Entries

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

      Length of Options Array  

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

      Options Array  

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

圖片

      Type為0x1;

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

圖片          

      IPv4 Endpoint Option

圖片
      Type為0x4;

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

      IPv4 Multicast Option

圖片
      Type為0x14;

      IPv4多播選項(xiàng)由SdServerService或者SdClientService用于通告其配置的事件多播端點(diǎn);

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

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

      IPv4 SD Endpoint Option
圖片
      Type為0x24;

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

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



#05 通信實(shí)例分析 

      第一個(gè)(offer)  


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

      第二個(gè)(Subscribe)  


圖片
      Length of Entries Array為0x10,表示Entry有16 bytes大小。只有一個(gè)Entry,type為0x06,也就是歸屬于Eventgroups Entries,TTL不為0,表示Subscribe Eventgroup,即表示服務(wù)事件組的訂閱,#opt1值為1,表示有一個(gè)option;該服務(wù)的服務(wù)id為0xd、實(shí)例id為0x1,設(shè)置的ttl為16777215,即0xffffff,表示訂閱一直有效,不過一般應(yīng)該避免這樣設(shè)置。服務(wù)主版本為1、訂閱的服務(wù)實(shí)例ID為1。
      Length of Options Array為0xc,表示Option共計(jì)12 bytes大小。該option信息是上面的Entry的信息補(bǔ)充。Length為0x9,Type為0x4,表示這個(gè)是IPv4 Endpoint Option;IP地址解析為192.168.60.1,對(duì)應(yīng)原始數(shù)據(jù)為c0 08 3c 01,也表明了L4層使用的是TCP(0x0006)。   
      最后的0x771b則是表示端口號(hào),即30491。
上海創(chuàng)程車聯(lián)網(wǎng)絡(luò)科技有限公司版權(quán)所有 滬ICP備11045498號(hào)-1   技術(shù)支持:網(wǎng)站建設(shè)
主站蜘蛛池模板: 日日av拍夜夜添久久免费老牛 | japanese50mature乱熟| 国语对白少妇高潮呻吟v | 欧美videossex| 黑人a级毛片| 九月婷婷综合 | 免费的黄色 | 91看剧| zoofilia杂交videos | 久久精品久久久精品美女 | 国产精品社区 | 国产tube8hdxxxx | 日本精品久久久久中文字幕5 | 色婷婷激情四射 | 欧美真人性做爰一二区 | 午夜视频播放 | 97精品国自产拍在线观看 | 天堂精品在线视频 | av片免费播放| 婷婷丁香五月亚洲中文字幕 | 欧美黑人猛猛猛 | 成人做爰69片免费看网站色戒 | 欧美乱大交做爰xxxⅹ | 黄色网页视频在线观看 | 欧美艳妇 | 成人乱人乱一区二区三区软件 | 国产三级精品三级在线专区91 | 亚洲精品无码不卡久久久久 | 少妇人妻偷人激情视频 | 国产精品久久国产三级国电话系列 | 青青爽无码视频在线观看 | 中文字幕一区一区三区 | 韩国一级片中文字幕 | 91欧美一区 | 四虎四虎院5151hhcom | 特级黄色av | 亚洲人成黄69影院 | 九九九九九九九 | 51xx午夜影福利 | 亚洲五月综合缴情在线观看 | 欧美精品一区二区久久久 |