通信易懂唠唠SOME/IP——SOME/IP-SD服务发现阶段和应答行为

一 SOME/IP-SD服务发现阶划分

服务发现应该包含3个阶段

1.1 Initial Wait Phase初始等待阶段

  • 初始等待阶段的作用

初始等待阶段是服务发现过程中的一个阶段。在这个阶段,服务发现模块等待服务实例的相关条件满足,以便继续后续的发现和注册过程。

对于客户端服务实例,当务实例所需的网络接口链接已经建立,即网络接口处于 "up" 状态且应用需要这个服务时即进入初始等待阶段。

在实际的实现中,应用需要某个服务一般是生成到配置文件中,当配置文件中有这个实例id,就认为应用需要这个服务。

对于服务器端服务实例,当务实例所需的网络接口链接已经建立,即网络接口处于 "up" 状态且服务可用。即服务器服务已经启动并准备好接受请求。服务准备好一般和具体功能有关系,比如camera service等camera初始化完成。

  • 初始等待阶段的等待时间INITIAL_DELAY

初始等待阶段等待的时间取决于INITIAL_DELAY值得设置。NITIAL_DELAY应该设置一个最大值和一个最小值,实际等待时间是介于最大值和最小值之间的一个随机值。

下面重复阶段和主阶段都是以Provider instance为例的,request insatnce类似,后面会对不一样的地方单独说明。

1.2 Repetition Phase重复阶段

初始等待阶段等待时间到了之后,会发送第一条offer service消息,这时候就进入了重复阶段。

进入重复阶段后

第一次等待REPETITIONS_BASE_DELAY时间后发送第二条offer service消息

然后在等待上一次等待时间的2倍时间发送下一条offer service消息。

如此重复,最大重复次数为REPETITIONS_MAX。这里参数比较多不好理解,可以结合1.5部分的例子增加理解。。

1.3 Main Phase 主阶段

重复阶段结束之后,立马进入在主阶段,先等待1*CYCLIC_OFFER_DELAY时间发送offer service消息,之后以CYCLIC_OFFER_DELAY配置的周期,周期发送offer service 消息。

1.4 client service insatnce的三个阶段

上面是以server端instance为例说明的三个阶段,对于client instance类似。

初始等待阶段和重复阶段与服务端instance类似,只不过发的是find service报文。

不同之处是,find service没有主阶段,即重复阶段之后就不会再发送find 报文了。

Subscribe EventGroup Entries由周期offer service触发,也是周期发送。所以在主阶段我们会看到周期的Offer Service报文和周期的Subscribe报文。

1.5举个例子:

上图是server service instance的各个参数,INITIAL_DELAY的最大值和最小值分别为0.1秒和0.01秒。REPETITIONS_BASE_DELAY是0.5秒,REPETITIONS_MAX是3。按照配置预期的服务发现的行为是:

1)Initial Wait Phase:服务实例化--》等待0.01秒~0.1秒之间的一个时间

2)Repetition Phase:然后发送第一帧数据(即offer service报文)--》延时2^0*0.5s=500ms-》发送offer service--》延时2^1*0.5s=1s时间--》发送offer service--》延时2^2*0.5s=2s时间-》发送offer service。即重复发3次offer service,共发4次报文,每次等待时间是上一次的两倍

3)Main Phase:之后按照3秒周期发送

抓到报文也确实如我们所想

上图第二列是距离上一帧数据的时间,单位秒,可以发现与预期现象一致

第一次offer service 

第二次时间-第一次时间约等于500ms

第三次时间-第二次时间约等于1s

第四次时间-第三次时间约等于2s

之后时间间隔都是约等于3s

这样设计的意义也很好理解,即发送的频率越来越慢,如果一开始发送的频率慢,不利于找到服务,如果一直高频率发送,又增加网络负载。

二 服务发现Answer Behavior应答行为

服务发现阶段的应答行为

  • 服务端收到find service entry后回复offer service entry

    服务端收到find service entry的unicast falg=1,且收到find service的时间距离上一次发送offer service的时间<1/2  的CYCLIC_OFFER_DELAY,则回复一个单播offer service。

       服务端收到find service entry的unicast falg=1,且收到find service的时间距离上一次发送offer service的时间>=1/2  的CYCLIC_OFFER_DELAY,则回复一个多播的offer service

如果REQUEST_RESPONSE_DELAY值设置为0,则是立即回复offer service。

如果REQUEST_RESPONSE_DELAY值不是0,则是delay一个介REQUEST_RESPONSE_DELAY最大值和最小值之间的一个值再回复单播offer service。

  • 客户端收到多播offer service entry后回复单播subscribe entry

     如果REQUEST_RESPONSE_DELAY值设置为0,则是立即回复单播subscribe entry。

    如果REQUEST_RESPONSE_DELAY值不是0,则是delay一个介           REQUEST_RESPONSE_DELAY最大值和最小值之间的一个值再回复单播subscribe entry

  • 客户端收到单播offer service entry后回复单播subscribe entry

     此种情况不受REQUEST_RESPONSE_DELAY的影响

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/965637.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day 30 卡玛笔记

这是基于代码随想录的每日打卡 93. 复原 IP 地址 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201" 和 "192.168.1.1" …

【中间件】 Kafka

1.先导知识&#xff1a; 消息队列MQ(Message Queue): 将需要传输的数据临时(设置有效期)存放在队列中,进行存取消息消息队列中间件&#xff1a; 用来存储消息的中间件(组件) 2.消息队列的应用场景 异步处理 为什么要使用消息队列&#xff1f; 比较耗时的操作放在其他系统中…

给排水 笔记

给水管&#xff08;上水管&#xff09; 概述 专用于上水系统的管道。 单位 基本单位解读 项概述符号表示备注公称直径&#xff08;DN&#xff09;指管道的平均外直径。是行业描述的标准&#xff0c;是参考值&#xff0c;并非指任何直径。-理论外直径。公称外径&#xff08…

React 设计模式:实用指南

React 提供了众多出色的特性以及丰富的设计模式&#xff0c;用于简化开发流程。开发者能够借助 React 组件设计模式&#xff0c;降低开发时间以及编码的工作量。此外&#xff0c;这些模式让 React 开发者能够构建出成果更显著、性能更优越的各类应用程序。 本文将会为您介绍五…

C++11详解(三) -- 可变参数模版和lambda

文章目录 1.可变模版参数1.1 基本语法及其原理1.2 包扩展1.3 empalce系列接口1.3.1 push_back和emplace_back1.3.2 emplace_back在list中的使用&#xff08;模拟实现&#xff09; 2. lambda2.1 lambda表达式语法2.2 lambda的捕捉列表2.3 lambda的原理 1.可变模版参数 1.1 基本…

【数据结构】_时间复杂度相关OJ(力扣版)

目录 1. 示例1&#xff1a;消失的数字 思路1&#xff1a;等差求和 思路2&#xff1a;异或运算 思路3&#xff1a;排序&#xff0b;二分查找 2. 示例2&#xff1a;轮转数组 思路1&#xff1a;逐次轮转 思路2&#xff1a;三段逆置&#xff08;经典解法&#xff09; 思路3…

OSPF基础(2):数据包详解

OSPF数据包(可抓包) OSPF报文直接封装在IP报文中&#xff0c;协议号89 头部数据包内容&#xff1a; 版本(Version):对于OSPFv2&#xff0c;该字段值恒为2(使用在IPV4中)&#xff1b;对于OSPFv3&#xff0c;该字段值恒为3(使用在IPV6中)。类型(Message Type):该OSPF报文的类型。…

第二篇:前端VSCode常用快捷键-以及常用技巧

继续书接上一回&#xff0c; 我们讲解了常用的vscode 插件。 vscode 常用的插件地址&#xff1a; 前端VSCode常用插件-CSDN博客 本篇文章&#xff0c;主要介绍vscode常用的快捷键&#xff0c;可以提高我们的开发效率。 一、VSCode常用的快捷键 注意&#xff0c;其实这个快捷…

【LeetCode】152、乘积最大子数组

【LeetCode】152、乘积最大子数组 文章目录 一、dp1.1 dp1.2 简化代码 二、多语言解法 一、dp 1.1 dp 从前向后遍历, 当遍历到 nums[i] 时, 有如下三种情况 能得到最大值: 只使用 nums[i], 例如 [0.1, 0.3, 0.2, 100] 则 [100] 是最大值使用 max(nums[0…i-1]) * nums[i], 例…

vue生命周期及其作用

vue生命周期及其作用 1. 生命周期总览 2. beforeCreate 我们在new Vue()时&#xff0c;初始化一个Vue空的实例对象&#xff0c;此时对象身上只有默认的声明周期函数和事件&#xff0c;此时data,methods都未被初始化 3. created 此时&#xff0c;已经完成数据观测&#xff0…

什么是三层交换技术?与二层有什么区别?

什么是三层交换技术&#xff1f;让你的网络飞起来&#xff01; 一. 什么是三层交换技术&#xff1f;二. 工作原理三. 优点四. 应用场景五. 总结 前言 点个免费的赞和关注&#xff0c;有错误的地方请指出&#xff0c;看个人主页有惊喜。 作者&#xff1a;神的孩子都在歌唱 大家好…

e2studio开发RA2E1(5)----GPIO输入检测

e2studio开发RA2E1.5--GPIO输入检测 概述视频教学样品申请硬件准备参考程序源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置GPIO口配置按键口配置按键口&Led配置R_IOPORT_PortRead()函数原型R_IOPORT_PinRead()函数原型代码 概述 本篇文章主要介绍如何…

【LLM】为何DeepSeek 弃用MST却采用Rejection采样

文章目录 拒绝采样 Rejection sampling&#x1f3af;马尔可夫搜索树 &#x1f333;RFT和SFT1. RFT和SFT的区别2. 如何将RFT用于数学推理任务&#xff1f; Reference 在提升大语言模型&#xff08;LLM&#xff09;推理能力时&#xff0c;拒绝采样&#xff08;Rejection Sampling…

股指入门:股指期货是什么意思?在哪里可以做股指期货交易?

股指期货是一种以股票指数为标的物的期货合约&#xff0c;也可以称为股票指数期货或期指。 股指期货是什么意思&#xff1f; 股指期货是一种金融衍生品&#xff0c;其标的资产是股票市场上的股指&#xff0c;例如标普500指数、道琼斯工业平均指数、上证50指数等。 股指期货允…

前端构建工具大比拼:Vite、Webpack、Parcel、esbuild 等热门工具使用分析

前端构建工具大比拼&#xff1a;Vite、Webpack、Parcel、esbuild 等热门工具使用分析 随着前端技术的不断发展&#xff0c;构建工具成为了每个前端项目的核心部分。通过合适的构建工具&#xff0c;我们能够优化开发效率、提升构建速度&#xff0c;并最终实现更加高效和灵活的开…

安装和使用 Ollama(实验环境windows)

下载安装 下载 https://ollama.com/download/windows 安装 Windows 安装 如果直接双击 OllamaSetup.exe 安装&#xff0c;默认会安装到 C 盘&#xff0c;如果需要指定安装目录&#xff0c;需要通过命令行指定安装地址&#xff0c;如下&#xff1a; # 切换到安装目录 C:\Use…

node.js使用mysql2对接数据库

一、引言 在现代Web开发中&#xff0c;Node.js作为一种高效、轻量级的JavaScript运行时环境&#xff0c;已经广泛应用于后端服务的开发中。而MySQL&#xff0c;作为一个广泛使用的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;提供了强大的数据存储和查询功能…

Unity 快速入门 1 - 界面操作

本项目将快速介绍 Unity 6的基本操作和功能&#xff0c;下载附件的项目&#xff0c;解压到硬盘&#xff0c;例如 D:\Unity Projects\&#xff0c; 注意整个文件路径中只有英文、空格或数字&#xff0c;不要有中文或其他特殊符合。 1. 打开Unity Hub&#xff0c;点击右上角的 O…

携程Java开发面试题及参考答案 (200道-上)

说说四层模型、七层模型。 七层模型(OSI 参考模型) 七层模型,即 OSI(Open System Interconnection)参考模型,是一种概念模型,用于描述网络通信的架构。它将计算机网络从下到上分为七层,各层的功能和作用如下: 物理层:物理层是计算机网络的最底层,主要负责传输比特流…

云轴科技ZStack+海光DCU:率先推出DeepSeek私有化部署方案

针对日益强劲的AI推理需求和企业级AI应用私有化部署场景&#xff08;Private AI&#xff09;&#xff0c;云轴科技ZStack联合海光信息&#xff0c;共同推动ZStack智塔全面支持DeepSeek V3/R1/Janus Pro系列模型&#xff0c;基于海光DCU实现高性能适配&#xff0c;为企业提供安全…