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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

當(dāng)服務(wù)不可用時(shí)SOME/IP-SD是如何通知Client的呢?

冬至子 ? 來(lái)源:拖拉機(jī)日記 ? 作者:活到一百歲 ? 2023-01-18 16:18 ? 次閱讀

SOME/IP-SD也是基于SOME/IP的報(bào)文,用來(lái)實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和事件訂閱機(jī)制。SOME/IP-SD消息通過(guò)UDP進(jìn)行傳輸,報(bào)文格式如下圖所示:

2.jpg

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

2.jpg

服務(wù)重新啟動(dòng)后,所有消息的Reboot Flag須置為1,直到Session ID重新從1開(kāi)始計(jì)數(shù),之后的Reboot Flag須置為0。

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

2.jpg

3.jpg

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

2.jpg

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

2.jpg

Index 1st options:Option1排在Array里第幾個(gè)

Index 2nd options:Option2排在Array里第幾個(gè)

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

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

Service ID:Entry關(guān)于哪個(gè)服務(wù)

Instance ID:Entry關(guān)于服務(wù)的哪個(gè)實(shí)例,0xFFFF表示全部實(shí)例

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

Minor Version:服務(wù)的次版本號(hào)

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

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

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

Eventgroup Entry 用于事件訂閱:

2.jpg

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

2.jpg

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

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

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

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

2.jpg

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

2.jpg

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

2.jpg

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

2.jpg

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

審核編輯:劉清

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

    關(guān)注

    7

    文章

    504

    瀏覽量

    70330
  • RPC
    RPC
    +關(guān)注

    關(guān)注

    0

    文章

    111

    瀏覽量

    11544
  • UDP協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    69

    瀏覽量

    12719
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SD不可不可

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

    candence 如何設(shè)置引腳不可用

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

    TCP/IP地址不可用

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

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

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

    connect連接一個(gè)不可用的目標(biāo)服務(wù)器能不能改成非阻塞的

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

    FDCAN為什么不可用

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

    如何處理屬性顯示不可用

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

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

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

    基于SOME/ IP可擴(kuò)展面向服務(wù)的中間件

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

    SOME/IP-SD有何作用

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

    SOME/IP-SD有何作用

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

    服務(wù)器數(shù)據(jù)恢復(fù)】服務(wù)器raid5故障導(dǎo)致上層應(yīng)用不可用的數(shù)據(jù)恢復(fù)案例

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

    服務(wù)器數(shù)據(jù)恢復(fù)】EMC存儲(chǔ)崩潰導(dǎo)致上層應(yīng)用不可用的數(shù)據(jù)恢復(fù)案例

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

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

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

    DNS服務(wù)器可能不可用什么意思

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