vsomeip同机部署独立Server/Client JSON配置无法通信的问询
vsomeip同主机独立配置通信失效排查
场景前提:服务端、客户端部署在同一系统内,共用配置可正常通信,拆分独立server.json、client.json后无法建立任何连接
核心配置硬匹配要求
不管配置如何拆分,以下字段必须在服务端、客户端的独立配置中完全对齐,否则天然无法打通路由连接:
- 本地路由开关:两边配置的
local_routing必须同时设为true,不能只在服务端开启。同主机下的本地通信完全依赖该开关打通路由隧道,客户端未开启时会直接走外部网络的组播发现流程,完全无法识别本地注册的服务 - 路由管理端口:两边配置中
runtime节点下的路由监听端口必须完全一致,不能让任何一方使用随机端口。端口不匹配时会出现服务端、客户端各自拉起独立的路由管理实例,路由域完全隔离的问题 - 服务标识匹配:双方配置中涉及的服务ID、实例ID、方法/事件ID的数值必须和原来可正常运行的共用配置完全一致,避免拆分时手工誊写出错
- 网卡绑定配置:如果配置中指定了绑定的网卡IP,双方必须统一使用回环地址绑定,不能出现服务端绑物理网卡IP、客户端绑回环IP的跨网卡路由错配
拆分配置的高频遗漏问题
- 服务条目不完整:很多人拆分配置时只在服务端的
services数组里声明了对外提供的服务实例,客户端配置里完全没有把对应需要请求的服务实例加到clients数组中,导致客户端根本没有触发对应的服务发现逻辑 - 应用名不匹配:两边配置的
applications数组中声明的应用名,必须和代码里调用vsomeip::runtime::init()传入的应用名字符串完全一致,差一个字符都会导致vsomeip加载配置时直接跳过对应应用的配置项 - 服务发现冗余配置:部分人为了适配跨机场景,在两个独立配置里都加了外部组播的服务发现地址,同主机场景下这些冗余配置会让vsomeip优先走外部组播流程,拉长服务发现的超时时间,甚至直接错过本地服务的注册广播
快速排查流程
比对时不要手工从零编写独立配置,可以直接把可正常运行的共用配置按模块拆分到两个独立文件中,逐字段核对:
- 启动时开启vsomeip的debug级别日志,根据日志关键词定位问题:
- 出现
Routing manager not reachable类日志,优先检查两边的路由端口是否一致、本地路由开关是否都开启 - 出现
Offered instance not found类日志,优先核对两边的服务ID、实例ID数值是否匹配 - 出现
Configuration for application xxx not found类日志,优先核对配置里的应用名和代码初始化传入的名称是否完全一致
- 出现
- 同主机场景下如果不需要跨设备通信,可以在两个配置中都禁用跨网卡的组播扫描,减少无效的通信逻辑,避免服务发现超时
内容的提问来源于stack exchange,提问作者Sireesha
相关产品推荐
相关产品推荐

