0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

當服務不可用時SOME/IP-SD是如何通知Client的呢?

冬至子 ? 來源:拖拉機日記 ? 作者:活到一百歲 ? 2023-01-18 16:18 ? 次閱讀

SOME/IP-SD也是基于SOME/IP的報文,用來實現(xiàn)服務發(fā)現(xiàn)和事件訂閱機制。SOME/IP-SD消息通過UDP進行傳輸,報文格式如下圖所示:

2.jpg

Flags=重新啟動標志+單播標志+顯示初始數(shù)據(jù)控制標志,如下圖所示:

2.jpg

服務重新啟動后,所有消息的Reboot Flag須置為1,直到Session ID重新從1開始計數(shù),之后的Reboot Flag須置為0。

Entries Array,Entry可以理解為“入口”,包含了服務實例以及需要訂閱的事件組的信息,分為Service和Eventgroup兩種類型,一個SD報文可能包含多個Entry,每個Entry大小都是16個字節(jié),一個Entry可能包含0-2個Option。下圖為一個完整的SD報文示例:

2.jpg

3.jpg

Service Entry 用于服務發(fā)現(xiàn):

2.jpg

Type:當網(wǎng)絡中未收到相關服務的OfferService或者暫時未收到,而Client又需要訪問該服務,那Client可以發(fā)出FindService去主動尋找服務,如果Service已經(jīng)就緒的話,會回復OfferService報文;服務就緒后,主動發(fā)出OfferService,用以告知組播內(nèi)其他節(jié)點,該服務已經(jīng)啟動,可以創(chuàng)建連接;當服務不可用時,會主動發(fā)送StopOfferService報文,用以告知組播內(nèi)其他節(jié)點,該服務目前不可用,停止發(fā)送請求,并取消訂閱。

2.jpg

Index 1st options:Option1排在Array里第幾個

Index 2nd options:Option2排在Array里第幾個

of opt 1:Option1的數(shù)目

of opt 2:Option2的數(shù)目

Service ID:Entry關于哪個服務

Instance ID:Entry關于服務的哪個實例,0xFFFF表示全部實例

Major Version:服務的主版本號
TTL:“入口”的生命周期,單位為秒,我理解為發(fā)現(xiàn)服務時的搜索時間,提供服務時的有效時間

Minor Version:服務的次版本號

服務發(fā)現(xiàn),說白了,就是想辦法讓服務消費者能夠找到服務提供者。打個比方,想象你在一個有很多人的廣場上找一個會唱歌的人,很顯然有兩種情況:

你認識這個人,提前說好了,他站在某個地方等你,而你知道那個地方的位置,那你肯定很容易就找到他了,這就是靜態(tài)配置;

你并不認識這個人,存在一個中間人,你告訴中間人你想找一個會唱歌的,而那個人也會告訴中間人我是會唱歌的,我站在廣場的哪個位置,然后中間人把位置給你,你就可以找到他了,這就是動態(tài)發(fā)現(xiàn),而SOME/IP-SD就是那個中間人。

Eventgroup Entry 用于事件訂閱:

2.jpg

Type:當Client收到服務OfferService之后,Client可以發(fā)送Subscribe報文主動跟Service訂閱感興趣的事件組;當Client訂閱某個事件組之后,后續(xù)發(fā)現(xiàn)不再需要改事件組的數(shù)據(jù)了,可以通過StopSubscribe報文來通知Service,避免不必要的數(shù)據(jù)交互;當Service收到Client的Subscribe報文之后,需要先行判斷是否符合可訂閱的條件,如果該Client滿足事件組訂閱條件,則返回SubscribeAck,告知Client訂閱成功,當事件組內(nèi)的事件準備就緒之后,Service會以某種約定好的形式發(fā)送相關事件給成功訂閱的Client,如果該Client不符合事件組訂閱條件,那Service就會直接回復SubscribeEventgroupNack,告知訂閱失敗。

2.jpg

Initial Data Requested Flag:如初始值由服務發(fā)送,須置為1

Counter:區(qū)分相同訂閱者的訂閱請求

Eventgroup ID:事件組ID,也就是說SOME/IP事件訂閱和取消訂閱的顆粒度到一個事件組,而不是一個事件

下面的示例,說明了一個Client發(fā)現(xiàn)服務和訂閱事件組的過程:

2.jpg

Options Array,Option可以理解為選項參數(shù),Type=0x01時,用于傳輸Entry的附加信息,比如服務名等等:

2.jpg

Type=0x04時,用于傳輸IPv4相關的參數(shù),比如服務的IP地址、TCP還是UDP、端口號:

2.jpg

從下圖可知,對于不同的消息,要配置的選項類型也不一樣,甚至不需要配置,其他幾種選項的具體內(nèi)容不一一列舉了

2.jpg

到這里,SOME/IP算介紹完了。是不是覺得如果要自己實現(xiàn)SOME/IP全部的協(xié)議,還是有點復雜的,目前GENIVI的vsomeip開源庫已經(jīng)實現(xiàn)了SOME/IP協(xié)議棧,所以通常并不用再去造輪子。換言之,我們完全可以基于vsomeip開發(fā)SOME/IP應用程序,不用關心報文長什么樣,也不用關心服務發(fā)現(xiàn)和事件訂閱的細節(jié),拿到手已經(jīng)是Payload了,如果再用上GENIVI的CommonAPI,IDL一寫,一條命令下去,代碼自動生成了,Payload都用不著解析了,這樣就實現(xiàn)了真正的RPC。

審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • TTL
    TTL
    +關注

    關注

    7

    文章

    496

    瀏覽量

    70004
  • RPC
    RPC
    +關注

    關注

    0

    文章

    110

    瀏覽量

    11487
  • UDP協(xié)議
    +關注

    關注

    0

    文章

    68

    瀏覽量

    12670
收藏 人收藏

    評論

    相關推薦

    SD不可不可

    進行真機調(diào)試,我的SD卡為什么無法讀寫,顯示不可用獲取路徑用的一下語句File root = Environment.getExternalStorageDirectory();
    發(fā)表于 12-05 13:29

    candence 如何設置引腳不可用

    candence如何設置引腳不可用eg:在原理圖中畫了一個元件只有4PIN,但實際封裝有5pin,如何設置才能使原理圖導入PCB時一一對應不出錯?除了在原理圖中再添加一個腳之外,能不能把PCB中的8號引腳變?yōu)?b class='flag-5'>不可用,如何設置
    發(fā)表于 04-24 14:11

    TCP/IP地址不可用

    大家好,我對基于和聲的應用有問題。調(diào)試時,所有的工作都很好,但現(xiàn)在是時候把它連接到真正的網(wǎng)絡了。我得到了專用IP,它是192.168164.4。它可以通過DHCP獲得。調(diào)諧后的設備不可用。經(jīng)過一些
    發(fā)表于 12-06 15:36

    為什么SPI外圍不可用時使用32雙TPIF II總線?

    ,GPIO [ 53 ] [ 56 ]對GPIO可以配置成GPIO、UART接口而已?!闭l能說明為什么SPI外圍不可用時使用32雙TPIF II總線?我沒有看到物理引腳沖突;GPIO [ 53
    發(fā)表于 07-25 09:28

    connect連接一個不可用的目標服務器能不能改成非阻塞的

    connect連接一個不可用的目標服務器,阻塞近20秒。能不能改成非阻塞的?我在前面加了配置非阻塞之后,去連正常能通的服務器也立即返回了。unsigned long ul = 1;r
    發(fā)表于 09-05 14:50

    FDCAN為什么不可用?

    FDCAN 不可用。我正在使用 STM32G474RE。我想在經(jīng)典模式下將波特率設置為 1MBps。的我經(jīng)常偶然發(fā)現(xiàn) if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK){ Error_Handler();}。我不知道是什么原因?qū)е滤?。我認為設置不好。的
    發(fā)表于 12-02 06:07

    如何處理屬性顯示不可用

    如何處理屬性顯示不可用 q:我電腦的操作系統(tǒng)是Windows XP,為什么在顯示屬性高級的適配器里,芯片類型、DAC類型.內(nèi)存大小等全都
    發(fā)表于 02-24 13:57 ?2837次閱讀

    車載以太網(wǎng)的SOME/IP-SD協(xié)議了解與認識

    通過之前的文章我們了解到了SOME/IP協(xié)議的基本組成與SOME/IP的具體工作過程,同時也提到了SOME/
    的頭像 發(fā)表于 08-10 10:53 ?2872次閱讀

    基于SOME/ IP可擴展面向服務的中間件

    PDU 路由組管理需要管理啟用到禁用的套接字PDU 路由,SOME/IP - 套接字適配器 [SoAD] - AUTOSAR 模型構建塊,可用于通用上層支持SOME/
    的頭像 發(fā)表于 09-08 17:34 ?1295次閱讀

    SOME/IP-SD有何作用

    車載以太網(wǎng)協(xié)議??偣部蓜澐譃槲鍖?,分別為物理層,數(shù)據(jù)鏈路層,網(wǎng)絡層,傳輸層,應用層,其中今天所要介紹的內(nèi)容SOME/IP就是一種應用層協(xié)議。
    的頭像 發(fā)表于 10-24 10:58 ?1719次閱讀

    SOME/IP-SD有何作用

    車載以太網(wǎng)協(xié)議??偣部蓜澐譃槲鍖?,分別為物理層,數(shù)據(jù)鏈路層,網(wǎng)絡層,傳輸層,應用層,其中今天所要介紹的內(nèi)容SOME/IP就是一種應用層協(xié)議。
    的頭像 發(fā)表于 10-24 11:00 ?1174次閱讀

    服務器數(shù)據(jù)恢復】服務器raid5故障導致上層應用不可用的數(shù)據(jù)恢復案例

    某公司服務器8塊硬盤組成raid5磁盤陣列,其中有2塊硬盤故障指示燈報警,其他硬盤指示燈正常,上層應用不可用
    的頭像 發(fā)表于 12-09 14:15 ?683次閱讀
    【<b class='flag-5'>服務</b>器數(shù)據(jù)恢復】<b class='flag-5'>服務</b>器raid5故障導致上層應用<b class='flag-5'>不可用</b>的數(shù)據(jù)恢復案例

    服務器數(shù)據(jù)恢復】EMC存儲崩潰導致上層應用不可用的數(shù)據(jù)恢復案例

    raid5磁盤陣列中2塊硬盤離線,服務器崩潰,上層應用不可用。
    的頭像 發(fā)表于 12-26 14:44 ?745次閱讀

    SOME/IP協(xié)議的基本原理

    ECU,每個ECU提供了十余種服務。SOME/IP具有輕量化、高效、以接收方的需求為主導的特點,并且能夠提供過程調(diào)用和事件通知,逐漸被多種汽車設備所使用。
    發(fā)表于 08-30 10:29 ?1306次閱讀
    <b class='flag-5'>SOME</b>/<b class='flag-5'>IP</b>協(xié)議的基本原理

    DNS服務器可能不可用什么意思

    與該域名相關聯(lián)的IP地址。DNS服務器將IP地址返回給計算機,然后計算機使用該IP地址與目標服務器建立連接。 DNS
    的頭像 發(fā)表于 01-17 09:24 ?8218次閱讀