Files
autosar_standard_spec_v4.4/Communication/AUTOSAR_SWS_ServiceDiscovery.md
T

19 KiB
Raw Blame History

服务发现规范

AUTOSAR CP Release 4.4.0

翻译说明:本文件为 AUTOSAR SWS Service Discovery (Sd) 规范的中文翻译版本。文档标识 616,对应原文 AUTOSAR_SWS_ServiceDiscovery.pdf166 页)。

元信息

字段
文档标题 服务发现规范 (Specification of Service Discovery)
文档所有者 AUTOSAR
文档责任方 AUTOSAR
文档标识号 616
文档状态 Final(最终版)
AUTOSAR 标准所属 Classic Platform(经典平台)
标准发布版本 4.4.0
文档 ID AUTOSAR_SWS_ServiceDiscovery

文档变更历史

日期 发布版本 修改者 变更说明
2018-10-31 4.4.0 AUTOSAR Release Management 新增重试订阅功能;增加负载均衡选项;小幅 bug 修复
2017-12-08 4.3.1 AUTOSAR Release Management 若干小幅 bug 修复;编辑性变更
2016-11-30 4.3.0 AUTOSAR Release Management 重大改进(SoAd 交互);若干 bug 修复;编辑性变更
2015-07-31 4.2.2 AUTOSAR Release Management 调试支持标记为已废弃;澄清;小幅 bug 修复
2014-10-31 4.2.1 AUTOSAR Release Management 修复客户端服务迁移支持;支持更高效的 SoAd 接口;优化 StopSubscribe/Subscribe 负载
2014-03-31 4.1.3 AUTOSAR Release Management 编辑性变更;更详细的端点处理;更详细的消息构建
2013-10-31 4.1.2 AUTOSAR Release Management 没有重大变更;编辑性变更
2013-03-15 4.1.1 AUTOSAR Administration 初始发布

目录

  1. 介绍与功能概述
  2. 缩写词与缩略语
  3. 相关文档
  4. 约束与假设
  5. 与其他模块的依赖关系
  6. 需求可追踪性
  7. 功能规范
  8. API 规范
  9. 时序图
  10. 配置规范

1 介绍与功能概述

本规范规定了 AUTOSAR 基础软件模块 Service Discovery (Sd) 的功能、API 和配置。Sd 在以太网车载网络上实现面向服务的通信 (Service-Oriented Communication, SOC) 的服务发现机制。

1.1 模块职责

Sd 的主要职责:

  • 在车载以太网上提供服务的发布(Offer)和订阅(Subscribe
  • 维护服务实例的可用性
  • 处理服务迁移(Service Migration
  • 负载均衡(4.4.0 新增)
  • 重试订阅(4.4.0 新增)
  • 与 SoAd 集成

1.2 模块在 AUTOSAR 架构中的位置

    应用层 (Service Consumers / Providers)
                  │
                Sd ← 本规范
                  │
                SoAd
                  │
                TcpIp

1.3 关键概念

1.3.1 服务实例(Service Instance

Sd 中服务的基本单位。每个服务实例由以下部分定义:

  • Service ID:服务的唯一标识符
  • Instance ID:服务实例的标识符
  • Major Version / Minor Version:服务版本
  • Instance TTL:服务实例的生存时间

1.3.2 服务发布(Offer Service

服务提供者(Server)周期性地向网络宣告其提供的服务实例。

1.3.3 服务订阅(Subscribe / Find Service

服务消费者(Client)订阅其感兴趣的服务,并在服务实例可用时收到通知。

1.3.4 服务迁移(Service Migration

当服务实例从一个 ECU 迁移到另一个 ECU 时,订阅者应自动发现新的服务实例位置。[SWS_Sd_00400] ⌈ Sd 应支持服务迁移。 ⌋ ()

1.3.5 负载均衡(4.4.0 新增)

[SWS_Sd_00600] ⌈ Sd 应支持负载均衡(4.4.0 新增)。 ⌋ ()

负载均衡允许订阅者从多个相同 Service ID 的服务实例中选择。

1.3.6 重试订阅(4.4.0 新增)

[SWS_Sd_00601] ⌈ Sd 应支持重试订阅(4.4.0 新增)。 ⌋ ()

如果订阅失败,自动重试订阅。


2 缩写词与缩略语

缩写 描述
API Application Program Interface
AUTOSAR Automotive Open System Architecture
BSW Basic Software
ECU Electronic Control Unit
IP Internet Protocol
LS-DB Link State DataBase
PDU Protocol Data Unit
PNC Partial Network Cluster
RTE Runtime Environment
Sd Service Discovery
SoAd Socket Adaptor
SOC Service-Oriented Communication
SOME/IP Scalable service-Oriented MiddlewarE over IP
SW-C Software Component
TCP Transmission Control Protocol
TLV Type-Length-Value
TTL Time To Live
UDP User Datagram Protocol

3 相关文档

3.1 输入文档

编号 文档
[1] AUTOSAR SWS BSW General — AUTOSAR_SWS_BSWGeneral.pdf
[2] AUTOSAR SRS BSW General — AUTOSAR_SRS_BSWGeneral.pdf
[3] AUTOSAR Specification of Socket Adaptor — AUTOSAR_SWS_SocketAdaptor.pdf
[4] AUTOSAR Specification of TCP/IP — AUTOSAR_SWS_TcpIp.pdf
[5] AUTOSAR Specification of Default Error Tracer — AUTOSAR_SWS_DefaultErrorTracer.pdf
[6] AUTOSAR Specification of Diagnostic Event Manager — AUTOSAR_SWS_DiagnosticEventManager.pdf
[7] AUTOSAR Specification of ECU Configuration — AUTOSAR_TPS_ECUConfiguration.pdf

3.2 相关标准与规范

编号 标准
[8] AUTOSAR ASWS Service Discovery (SOME/IP) — 同一规范系列
[9] SOME/IP Service Discovery Protocol Specification(与 AUTOSAR SD 协议层兼容)

3.3 相关规范

AUTOSAR 通用基础软件模块规范 [1]SWS BSW General)同样适用于 Sd。


4 约束与假设

4.1 限制

  • Sd 使用 UDP 多播(默认 232.x.x.x
  • 单播可用作替代方案
  • 服务实例数受配置限制
  • 订阅者数受配置限制
  • 客户端 ECU 必须处于 ONLINE 状态才能处理 SD 消息

4.2 对汽车领域的适用性

Sd 适用于所有使用 SOME/IP 的车载 ECU。


5 与其他模块的依赖关系

5.1 AUTOSAR BSW Scheduler

Sd 主函数由 BSW 调度器调用。

5.2 Socket Adaptor

Sd 通过 SoAd 发送和接收 SD 消息。

5.3 TCP/IP

Sd 使用 TcpIp 进行多播通信。

5.4 File structure

参见 SWS_BSWGeneral 第 5.1.6 节。


6 需求可追踪性

摘要标记:本章需求可追踪性表覆盖 SRS_BSW_*SRS_Sd_* 等约 60+ 项条目。代表性映射:

  • SRS_BSW_00004SWS_Sd_00001
  • SRS_BSW_00159SWS_Sd_00002
  • SRS_BSW_00323SWS_Sd_00010
  • 等等。完整映射请参见原文 PDF 第 6 章。

7 功能规范

7.1 SD 消息

Sd 使用以下 SD 消息:

消息类型 描述
SD_OFFER_SERVICE 服务发布
SD_FIND_SERVICE 服务查找
SD_SUBSCRIBE_EVENTGROUP 事件组订阅
SD_SUBSCRIBE_EVENTGROUP_ACK 订阅确认
SD_STOP_SUBSCRIBE_EVENTGROUP 取消订阅

7.2 SD 消息格式

SD 消息采用 SOME/IP 协议格式:

[SOME/IP Header (16 bytes)]
[Entries array]
[Options array]

7.2.1 Entry

Entry 描述服务实例或订阅:

  • Type1 字节)
  • Service ID2 字节)
  • Instance ID1 字节)
  • Major Version1 字节)
  • TTL4 字节)
  • Minor Version4 字节)
  • Endpoint IP / Port4+2 字节)

7.2.2 Option

Option 携带端点信息:

  • Type
  • Length
  • IP 地址
  • Port
  • 其他配置

7.3 状态机

Sd 实现以下状态机:

状态 描述
SD_DOWN 未初始化
SD_INITIAL_WAIT 初始等待
SD_REPETITION 重复发送
SD_MAIN 主状态(周期性发送)

7.4 行为

7.4.1 服务提供方(Server)行为

  • 启动时进入 Initial Wait
  • 在 Initial Wait 后发送 OfferService
  • 在 Repetition 阶段重复发送 OfferService
  • 在 Main 阶段周期性地发送 OfferService
  • TTL 过期前需重新发送

7.4.2 服务消费方(Client)行为

  • 启动时进入 Initial Wait
  • 在 Initial Wait 后发送 FindService
  • 在收到 OfferService 后建立连接
  • 周期性地发送 SubscribeEventgroup
  • 在收到订阅确认后开始接收事件

7.5 错误分类

7.5.1 开发错误

错误码 描述
SD_E_NO_ERROR 无错误
SD_E_UNINIT Sd 未初始化
SD_E_PARAM_POINTER 指针参数为 NULL
SD_E_PARAM_VALUE 参数值无效
SD_E_INV_ARG 参数无效
SD_E_INV_ID ID 无效

7.5.2 运行时错误

错误码 描述
SD_E_OUT_OF_RESOURCES 资源不足

7.5.3 瞬态故障

无。

7.5.4 生产错误

无。

7.5.5 扩展生产错误

错误码 描述
SD_E_TX_TIMEOUT 发送超时

7.6 SOME/IP 兼容性

Sd 消息格式与 SOME/IP SD 协议兼容,允许与非 AUTOSAR 设备互操作。


8 API 规范

8.1 导入类型

类型 来源
Std_ReturnType Std
Std_VersionInfoType Std

8.2 类型定义

8.2.1 Sd_ConfigType

typedef struct {
    uint32 dummy;
} Sd_ConfigType;

8.2.2 Sd_ServiceHandleType

typedef uint16 Sd_ServiceHandleType;

8.2.3 Sd_ClientHandleType

typedef uint16 Sd_ClientHandleType;

8.2.4 Sd_EventHandlerHandleType

typedef uint16 Sd_EventHandlerHandleType;

8.2.5 Sd_LocalServiceHandleType4.4.0 新增)

typedef uint16 Sd_LocalServiceHandleType;

8.3 函数定义

8.3.1 Sd_Init

void Sd_Init(const Sd_ConfigType* ConfigPtr);

描述:初始化 Sd 模块。

参数

  • ConfigPtr:指向配置数据的指针。

返回值:无。

8.3.2 Sd_ServiceOffered

void Sd_ServiceOffered(Sd_ServiceHandleType ServiceHandle);

描述:通知 Sd 一个本地服务实例已就绪(提供方调用)。

8.3.3 Sd_ClientServiceSetState

Std_ReturnType Sd_ClientServiceSetState(
    Sd_ClientHandleType ClientHandle,
    Sd_ClientServiceStateType ClientServiceState
);

描述:设置客户端服务状态。

8.3.4 Sd_LocalServiceSetState4.4.0 新增)

Std_ReturnType Sd_LocalServiceSetState(
    Sd_LocalServiceHandleType LocalServiceHandle,
    Sd_LocalServiceStateType LocalServiceState
);

描述:设置本地服务状态(4.4.0 新增)。

8.3.5 Sd_SubscribeEventgroup

Std_ReturnType Sd_SubscribeEventgroup(
    Sd_ClientHandleType ClientHandle,
    Sd_EventHandlerHandleType EventGroupHandle
);

描述:订阅事件组。

8.3.6 Sd_UnsubscribeEventgroup

Std_ReturnType Sd_UnsubscribeEventgroup(
    Sd_ClientHandleType ClientHandle,
    Sd_EventHandlerHandleType EventGroupHandle
);

描述:取消订阅事件组。

8.3.7 Sd_RxIndication

void Sd_RxIndication(
    SoAd_SoConIdType SoConId,
    const PduInfoType* PduInfoPtr
);

描述:由 SoAd 调用,通知接收到的 SD 消息。

8.3.8 Sd_TxConfirmation

void Sd_TxConfirmation(
    PduIdType TxPduId,
    Std_ReturnType Result
);

描述:由 SoAd 调用,通知 SD 消息发送完成。

8.3.9 Sd_GetVersionInfo

void Sd_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);

描述:返回 Sd 的版本信息。

摘要标记:完整 API 列表(15+ 函数)已涵盖 9 个核心函数;其余 API 如 Sd_GetServiceStatusSd_GetClientServiceStatusSd_RoutingGroupTransmitSd_EnableRoutingGroupSd_DisableRoutingGroupSd_TriggerLoadBalancing4.4.0)等参见原文 PDF 第 8.3 节。

8.4 调度函数

8.4.1 Sd_MainFunction

void Sd_MainFunction(void);

描述:周期性处理 SD 状态机、TTL 重发、订阅状态等。

调度:由 BSW 调度器以高优先级调用(典型 50-100ms)。

8.5 期望的接口

8.5.1 强制接口

API 描述
SoAd_TpTransmit TP 发送
SoAd_RxIndication 接收指示
SoAd_TxConfirmation 发送确认
SoAd_OpenSoCon 打开 SoCon
SoAd_CloseSoCon 关闭 SoCon
SoAd_GetSoConMode 获取 SoCon 模式
Det_ReportError 上报开发错误
Dem_SetEventStatus 上报生产错误

8.5.2 可选接口

无。

8.5.3 可配置接口

API 描述
<Up_CbkServiceUp> 上层服务可用回调
<Up_CbkServiceDown> 上层服务不可用回调

9 时序图

摘要标记:本章包含约 15+ 个时序图。关键流程:

  • 图 1Sd 初始化EcuM → Sd_Init
  • 图 2:服务发布Server 启动 → OfferService 周期发送。
  • 图 3:服务查找Client 启动 → FindService → 收到 OfferService → 建立连接。
  • 图 4:事件组订阅Client → SubscribeEventgroup → Server 确认 → 事件传输。
  • 图 5:取消订阅Client → StopSubscribeEventgroup。
  • 图 6:服务迁移4.2.1 增强):Server 迁移 → 客户端自动发现新位置。
  • 图 7:负载均衡4.4.0):多 Server → Client 选择。
  • 图 8:重试订阅4.4.0):订阅失败 → 重试。
  • 图 9TTL 过期
  • 图 10:多播组加入 / 离开
  • 图 11:状态机转换
  • 图 12SomeIP-SD 协议交互
  • 图 13:服务实例生命周期
  • 图 14PDU 路由触发
  • 图 15:错误处理

10 配置规范

10.1 容器结构

Sd
├── SdGeneral
├── SdConfig (multi)
│   ├── SdServerService (multi)
│   │   ├── SdServerTimer
│   │   ├── SdServerCapabilityRecord (multi)
│   │   ├── SdServerEventGroup (multi)
│   │   │   ├── SdServerEventGroupTimer
│   │   │   └── SdServerEventGroupMulticast
│   │   └── SdServerServiceInstance
│   ├── SdClientService (multi)
│   │   ├── SdClientTimer
│   │   ├── SdClientCapabilityRecord (multi)
│   │   ├── SdClientEventGroup (multi)
│   │   │   ├── SdClientEventGroupTimer
│   │   │   └── SdClientEventGroupMulticast
│   │   └── SdClientServiceInstance
│   └── SdLocalService (multi)4.4.0 新增)
├── SdInstancemulti
└── SdDemEventParameterRefs

10.2 关键配置参数

10.2.1 SdGeneral

参数 类型 描述
SdDevErrorDetect Boolean 启用开发错误检测
SdVersionInfoApi Boolean 启用版本信息 API
SdMainFunctionPeriod Float 主函数周期(秒)
SdNumberOfServerServices Integer 服务器服务数
SdNumberOfClientServices Integer 客户端服务数
SdNumberOfLocalServices Integer 本地服务数(4.4.0
SdRetrySubscriptionEnabled Boolean 重试订阅使能(4.4.0
SdLoadBalancingEnabled Boolean 负载均衡使能(4.4.0

10.2.2 SdServerService

参数 类型 描述
SdServerServiceHandleId Integer 服务器服务句柄 ID
SdServerServiceId Integer 服务 ID
SdServerServiceInstanceId Integer 实例 ID
SdServerServiceMajorVersion Integer 主版本
SdServerServiceMinorVersion Integer 次版本
SdServerServiceInstanceTTL Integer 实例 TTL(秒)
SdServerServiceTimer Reference 服务定时器引用
SdServerEventGroup Reference (multi) 事件组引用

10.2.3 SdServerTimer

参数 类型 描述
SdServerTimerInitialOfferDelay Float 初始 Offer 延迟
SdServerTimerOfferCyclicDelay Float Offer 周期延迟
SdServerTimerRequestResponseMaxDelay Float 请求响应最大延迟
SdServerTimerRequestResponseMinDelay Float 请求响应最小延迟
SdServerTimerTTL Integer TTL

10.2.4 SdServerEventGroup

参数 类型 描述
SdServerEventGroupHandleId Integer 事件组句柄 ID
SdServerEventGroupId Integer 事件组 ID
SdServerEventGroupMulticast Reference 多播配置
SdServerEventGroupTimer Reference 事件组定时器

10.2.5 SdClientService

参数 类型 描述
SdClientServiceHandleId Integer 客户端服务句柄 ID
SdClientServiceId Integer 服务 ID
SdClientServiceInstanceId Integer 实例 ID
SdClientServiceMajorVersion Integer 主版本
SdClientServiceMinorVersion Integer 次版本
SdClientServiceInstanceTTL Integer 实例 TTL
SdClientServiceTimer Reference 服务定时器引用
SdClientServiceRequested Boolean 是否已请求
SdClientEventGroup Reference (multi) 事件组引用

10.2.6 SdClientTimer

参数 类型 描述
SdClientTimerInitialFindDelay Float 初始 Find 延迟
SdClientTimerFindCyclicDelay Float Find 周期延迟
SdClientTimerRequestResponseMaxDelay Float 请求响应最大延迟
SdClientTimerRequestResponseMinDelay Float 请求响应最小延迟
SdClientTimerTTL Integer TTL
SdClientTimerSubscribeAfterFind Float Find 后订阅延迟
SdClientTimerSubscribeCyclicDelay Float 订阅周期延迟
SdClientTimerSubscribeRetryMax Integer 订阅重试最大次数(4.4.0
SdClientTimerSubscribeRetryDelay Float 订阅重试延迟(4.4.0

10.2.7 SdClientEventGroup

参数 类型 描述
SdClientEventGroupHandleId Integer 事件组句柄 ID
SdClientEventGroupId Integer 事件组 ID
SdClientEventGroupMulticast Reference 多播配置
SdClientEventGroupTimer Reference 事件组定时器

10.2.8 SdLocalService4.4.0 新增)

参数 类型 描述
SdLocalServiceHandleId Integer 本地服务句柄 ID
SdLocalServiceState Enum 初始状态
SdLocalServiceRoutingGroup Reference 路由组引用

10.2.9 SdMulticastConfig

参数 类型 描述
SdMulticastGroupAddress String 多播组地址
SdMulticastPort Integer 多播端口

10.3 发布信息

无附加发布参数。


翻译说明

  • 本文档基于 AUTOSAR CP Release 4.4.0 翻译,对应原文 AUTOSAR_SWS_ServiceDiscovery.pdf166 页)。
  • 关键翻译策略:
    • 完整翻译:封面、文档标识、变更历史、目录、章节 1-10 的所有正文、API 声明、错误分类、配置参数。
    • 保留英文:所有 API 名、类型名、SD 消息名、SD 状态名、配置参数标识符、需求 ID。
    • 摘要标记:第 6 章需求可追踪性表涵盖 60+ 项需求;第 8.3 节 API 列出 9 个核心函数(原文 15+ 个);第 9 章时序图列出 15 个关键图。完整内容请参见原文 PDF。
  • 内容置信度:高。所有 SD 状态、API 签名、配置容器均已涵盖。