全职猎人1999_日韩综合社区_久草播放_黄色a一级一级一级免费看_午夜在线视频一区二区三区_国产日韩精品SUV

400-821-6015
行業資訊
您當前的位置:首頁 ? 行業資訊 ? 行業資訊
內部資訊行業資訊

AUTOSAR中的服務發現模塊(SOME/IP SD)的規范與實例分析

發布日期:2024-12-06

作者 | 不可說

出品 | 汽車電子與軟件


#01 引  入          

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

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

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



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

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

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

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

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

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

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

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

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

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

      - 根據當前ECU及其軟件組件(SWC)的狀態發送查找請求。

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

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

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

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

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


圖片   



#03 SD流程

      服務發布流程  


圖片


      Down Phase

      服務處于不可用狀態

      

      Initial Wait Phase

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

 

      Repetition Phase

      重復發送服務發布報文, 重復次數由配置參數決定, 此階段收到服務發現請求后,通過服務發布報文進行應答

 

      Main Phase

      周期性發送服務發布報文, 周期時間由配置參數決定, 此階段收到服務發現請求后,通過服務發布報文進行應答    


      服務發現流程  


圖片


      Down Phase

      服務未被應用請求

 

      Initial Wait Phase

      應用發起服務請求后進入該階段


      Repetition Phase

      重復發送服務發現報文, 重復次數由配置文件參數REPETITION_MAX決定, 收到服務發布報文后, 停止發送服務發現報文


      Main Phase

      不再重復發送服務發現報文, 每次收到服務發布報文后, 觸發服務訂閱請求報文。              

      服務訂閱流程  


圖片          

  • 服務發現
  • 連接建立
  • 注冊服務
  • 事件通知
              

#04 SOME/IP SD協議規范


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

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

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

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

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

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

      Flag  

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

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

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

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

      2)如果為該服務配置了SdClientServiceTcpRef,則活動客戶端應通過調用SoAd_CloseSoCon()函數并設置參數“abort”為TRUE來關閉相應的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,根據是服務端還是客戶端,使用參數SdServerServiceID或SdClientServiceID進行靜態配置。
  • Instance ID字段應攜帶服務的Instance ID,根據是服務端還是客戶端,使用參數SdServerSer-viceInstanceID和SdClientServiceInstanceID靜態配置。
  • Major Version字段應包含SdServerServiceMajorVersion或者SdClientServiceMajorVersion,這取決于該條消息是服務端發送的還是客戶端發送的。
  • TTL字段定義了使用參數SdServerTimer TTL和SdClientTimer TTL配置的服務器條目的生存期(秒),但TTL為0的Stop Entries除外。
  • Minor字段應攜帶SdServerServiceMinorVersion或者SdClientServiceMinorVersion,這些都是在服務設計階段就已經規范好的。
          Eventgroups Entries   
圖片
      Service ID、Instance ID、Major Version、TTL與Services Entries中定義是一致的;
      Type為0x06時,表示SubscribeEventgroup和StopSubscribeEventgroup;為0x07時,SubscribeEventgroupAck和SubscribeEventgroupNack;
      Counter用于區分同一訂閱者的相同訂閱事件組。如果不使用,設置為0x0;
      Eventgroup ID字段應包含使用參數SdConsumerEvent GroupID配置的事件組的ID,也是在通信設計階段定義好的事件組ID。          

      Length of Options Array  

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

      Options Array  

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

圖片

      Type為0x1;

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

圖片          

      IPv4 Endpoint Option

圖片
      Type為0x4;

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

      IPv4 Multicast Option

圖片
      Type為0x14;

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

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

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

      IPv4 SD Endpoint Option
圖片
      Type為0x24;

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

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



#05 通信實例分析 

      第一個(offer)  


圖片
      Length of Entries Array為0x10,表示Entry有16 bytes大小。只有一個Entry,type為0x01,也就是歸屬于Services Entries,TTL不為0,表示offer service,即表示服務發布,#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,對應原始數據為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,對應原始數據為c0 08 3c 01,也表明了L4層使用的是TCP(0x0006)。   
      最后的0x771b則是表示端口號,即30491。
上海創程車聯網絡科技有限公司版權所有 滬ICP備11045498號-1   技術支持:網站建設
主站蜘蛛池模板: 亚洲另类在线视频|6精品国产乱码久久久久久|欧美黄色=av|日本高清视频网址|草草网站影院白丝内射|成人免费=a级毛片无码片 HD性丰满白嫩白嫩少妇=aV|免费成人黄色大片|久久精品中文字幕|久久无码国产专区精品|欧美=a∨|91精品一久久香蕉国产线看观看软件 | 日韩性精品|一级黄色视|www.日本在线视频|鲁一鲁亚洲无线码|凸输偷窥xxxx自由免费视频|97人妻人人揉人人躁人人 | 中文字幕在线观看成人|日韩乱码人妻无码中文字幕久久|午夜毛片丰满熟女导航|天下第一社区视频在线观看|国内=a∨免费播放|久久好色 | 亚洲国产精品无码第一区二区三区|十大免费最污的软件|玖玖99视频|激情动漫在线观看|#NAME?|蝌蚪视频窝在线播放 | 欧美性生活在线观看|亚洲免费视频专区|国产精品2024|免费网站国产|欧美男男作爱G=aYWWW|国产伦精品一区二区三区视 | 亚洲专区第一页|少妇高潮一区二区三区|四虎影院www.|在线精品视频一区二区三四|手机看片福利久久|亚洲=av成人网 | 久久精品国产清高在天天线|天堂在线观看www|毛片=av在线免费观看|精品国产欧美一区二区五十路|老熟女草BX×|人妻慢慢放弃抵抗开始迎合 | 宅男噜噜噜66国产在线观看|色姑娘综合|99久久久国产精品日本久久区一|亚洲成人自拍网|国产亚洲精品第一综合另类|精品亚洲一 | 台湾成人=av|91porny九色打屁股|日本少妇内射视频播放舔|日本一区二区在线免费观看|日韩一区精品视频一区二区|亚洲一区自拍高清亚洲精品 | 日本三区|又大又黄又粗高潮免费|国产成年女人免费视频播放=a|国产美女视频国产视视频|欧美成综合|国产成人=av一区二区三区 | 巜豪妇荡乳2在线观看|又粗又硬进去好爽=a片视频野花|6969成人亚洲婷婷|99视频免费播放|97国产在线播放第一页|人人人澡人人人妻人人人少妇 | 国产91入口|欧美精品在线一区|第一人才网|#NAME?|九色.com|亚洲精品无码专区久久 | 在线观看免费黄网|久久久久久久久久久鸭|91社影院|日本一区免费网站|尹人香蕉久久99天天拍|任我爽橹在线精品视频 | 91精品国产综合久久久欧美|色一情一乱一乱一区99=av|国产一区二区小视频|稚嫩小奶娃h文|一级毛片免费观看视频|日本无遮挡边做边爱边摸 | 免费的很黄很污的视频|99国产午夜精品一区二区天美|天堂久久天堂综合色|国产精品永久免费视频|日日夜夜天天人人|亚洲精品国产=aⅤ综合第一 | 一区二区三区视频免费看|久久爱伊人|日本大尺度吃奶做爰久久久绯色|日韩精品视频免费在线观看|亚洲系列一区中文字幕|天堂视频一区二区 | 久久精品九九热无码免贵|日本=aⅴ精品一区二区三区|亚洲国产精品一区二区成人片|国产精品91久久|久草=av在线播放|亚洲在线www | 成人午夜久久|成人久久18免费网站麻豆|国产精品免费一区二区三区在线观看|男人天堂黄色|蜜臀二区|www亚洲免费 | 中文区中文字幕免费看|欧美亚洲网站|luluhei噜噜嘿在线视频|成人xxxxx|#NAME?|精品午夜熟女人妻视频毛片 | 婷婷综合久久狠狠色99H|精品国偷自产在线视频99|999久久久无码国产精品|国产精品一区二三区|激情中文小说区图片区|国产亚洲日 | 各处沟厕大尺度偷拍女厕嘘嘘|亚洲一区二区不卡视频|亚洲淫片|又黄又爽又色成人网站|999这里只有精品|免费国产乱理伦片在线观看 | 97porm国内自拍视频|午夜精品一区二区三区在线播放|久久免费手机视频|人妻体体内射精一区二区|一级片=a|日本亚洲中文在线 | 亚洲免费看片网站|欧美香蕉|久久免费视老师机影片|国产精品成人久久小草|日本熟妇大屁股人妻|性色=a∨人人爽网站HDkp885 | 成人久久18免费网站图片|一本久道久久综合婷婷五月|色窝窝免费一区二区三区|国产无遮挡在线观看免费=aV|freexxx性麻豆hd16|国产精品久久久久久久网 | xvideos国产在线观看|国内精自视频品线一区|国产免费久久精品99RESW=aG|又大又长粗又爽又黄少妇视频|毛片大片|成人一区二区三区在线 | #NAME?|国产99九九久久无码熟妇|人妻无码第一区二区三区|亚洲精品一区二|亚洲国产最大=av|黄瓜视频污网站 | 51久久夜色精品国产水果派解说|国产欧美日韩视频免费|国产96在线亚洲|人妻无码中文字幕免费视频蜜桃|成人=a片产无码免费视频奶头鸭度|亚洲已满18点击进入在线看片 | 在线一区二区日韩|99只有精品|国产成人羞羞视频在线|www.成人网.com|久久在视频|日韩免费v=a | 日本性爱视频在线观看|欧美日韩xxx|国产女人高潮大叫特级毛片|#NAME?|www.亚洲一区二区三区|男女羞羞网站 | 无码免费婬=aV片在线观看|免费黄色小视频在线观看|eeuss鲁丝片=aV无码|国产精品videossexohd|亚洲欧美成人一区二区在线|久久www免费人成网站 | 特级全黄久久久久久久久|伊人中文网|97资源站在线视频|久久天天躁狠狠躁夜夜躁2014|久久欧美精品一区|免费无码一级成年片在线观看 | 国产精品久久久久毛片|成年视频免费|未满岁18禁止在线WWW|鲁鲁鲁爽爽爽在线视频观看|国产视频一视频二|国产精品卡一 | 555www色欧美视频|GOGOGO高清免费看韩国|性毛片|欧美日韩国产这里只有精品|尤物视频免费观看|中国少妇bbbbxxxx | 国产精品成人v=a在线观看|久久网中文字幕|国产精品2区|色费色情人成视频|国产精品一区二区丝瓜|国产亚洲精品自在久久77 | 91美女视频|c=aoporm在线|狠狠色噜噜狠狠米奇777|欧美一级做一级爱=a做片性|亚洲=aV噜噜狠狠网址蜜桃|亚洲v=a一区二区 | 久久99国产一区二区三区|99热这里只有精|护士做xxxxx免费看国产|色情一区二区三区免费看|亚洲天堂精品在线|欧美极品kenn=aj=ames喷水 | 伊人伊成久久人综合网|99久久精品无免国产免费|亚洲精选免费视频|自拍偷拍综合|欧美人禽交zozozo视频|久久久久女人精品毛片九一韩国 | 国产一区黄|午夜福利国产成人无码GIF动图|骚色综合|国产婬乱=a一级毛片多女|99久久九九国产精品国产免费|久久久久成人精品免费播放动漫 | 超碰人人草人人干|精品国产伦一区二区三区观看方式|无码中文字幕人妻在线一区二区三区|隔壁老王国产在线精品|在线欧美精品一区二区三区|91在线视频九色 | 日本亚洲欧洲精品|19禁无遮挡啪啪无码网站性色|久久亚洲=aⅴ无码精品色午夜|91tv永久入口|91九色鹿精品国产综合久久香蕉|91亚洲福利 | 中文字幕在线观看成人|日韩乱码人妻无码中文字幕久久|午夜毛片丰满熟女导航|天下第一社区视频在线观看|国内=a∨免费播放|久久好色 |