车载以太网 SOME/IP(1)-SOME/IP的概念

发布于 2023-7-3 11:32
浏览
0收藏

0. SOME/IP简介

 SOME/IP (Scalable service-Oriented MiddlewarE over IP是一种车载以太网的通信协议,是BMW团队于2011年设计的,兼容AUTOSAR汽车软件架构,它依赖于以太网以及TCP/IP协议。位于OSI 7层模型的层4之上,是在传输层之上的应用通信协议。

1. 与传统的CAN汽车总线的区别

1.1 CAN的特点:

  1) 以发送者的需求来实现通信过程;

  2) 发送者信号变化或者发送周期到了,就会发送信号,不考虑接收者是否有需求。

1.2 SOME/IP的特点:

  1) 接收方有需求时才发送,在总线上不会出现过多的不必要的数据,从而降低总线负载;

  2) 中间件:交互数据,与操作系统无关,兼容AUTOSAR和Linux等;

  3) 适配以太网传输特性:大数据,限制广播数据发送;

  4) 面向服务:远程函数、事件、通知——扩充了信号范围。

2. 简述SOME/IP的通信方式

 在车载网络中,某个ECU有时会需要调用实现在其他ECU上的服务,这个时候它俩就分别扮演了client和server的角色,而SOME/IP就是实现这种远程服务调用的接口,如下图所示。

车载以太网 SOME/IP(1)-SOME/IP的概念 -汽车开发者社区

3. SOME/IP所在的协议栈

3.1 简易协议栈图示:

车载以太网 SOME/IP(1)-SOME/IP的概念 -汽车开发者社区

3.2 具体协议栈图示:

车载以太网 SOME/IP(1)-SOME/IP的概念 -汽车开发者社区

4. SOME/IP消息的具体内容

 SOME/IP消息的具体内容如下图所示,主要由其包头和数据包payload构成,左边Header是它固定的包头内容和大小排布,紧接着是右边所示的数据包内容,图中的Payload内容只是一个例子,我们可以根据不同的服务内容进行数据的打包。

车载以太网 SOME/IP(1)-SOME/IP的概念 -汽车开发者社区

长度限制:

1) UDP 16 bytes(header)+ 1400 bytes(payload)

2) TCP 4095 bytes(header + payload)(AUTOSAR)

字节序:Big-Endian 网络字节序,所见即所得。

4.1 Message ID

作用:标记报文 ≈ CAN ID

组成:Message ID = Service ID + Method ID

Message ID

Service ID

Method ID

1.Method

Service ID [16bit]

0 [1bit]

Method ID

[last 15bit]

2.Event

Service ID [16bit]

1 [1bit]

Event ID

[last 15bit]

 

Service ID 16bits:

区分不同服务

Service-ID

Description

0x0000

保留

0xFF00-0xFF1F

用于OEM测试

0xFF20-0xFF3F

用于Tier-1

0xFF40-0xFF5F

用于ECU内部通信(0xFF5F)

0xFFFE

用于非SOME/IP服务命令

0xFFFF

SOME/IP及SOME/IP SD特殊服务

 

Method ID 1bit+15bits:

区分服务中不同的methods,events,fields

Method:最高位为0

Events and Notifications(包含fields):最高位为1

特殊值(当Service ID = 0xFFFF),Method/Event ID:

Method/Event ID

Service ID

0x0000

SOME/IP Magic Cookie

Messages(Client-Server)

0x8000

SOME/IP Magic Cookie

Messages(Server-Client)

0x8100

SOME/IP-SD messages(events)

4.2 Length (bytes)

车载以太网 SOME/IP(1)-SOME/IP的概念 -汽车开发者社区

4.3 Request ID

Client ID [16bit]

Service ID [16bit]

作用

--唯一确定一条请求

--可重复使用

--Response复制,用于追踪

Client ID

--区分对同一服务的不同请求客户端

Session ID

--区分同一客户端对同一服务的多次请求

--0x0001-0xFFFF循环

4.4 Protocol Version

0x01 = SOME/IP Protocol

4.5Interface Version

--检测服务定义的一致性

--标记已使用的服务接口

4.6Message Type

报文类型

说明

0x00

REQUEST

请求,需要回复

0x01

REQUEST_NO_RETURN

请求,不需要回复

0x02

NOTIFICATION

Notifer/Event,不需要回复

0x80

RESPONSE

回复

0x81

ERROR

带有错误信息的回复

0x40

REQUSET_ACK

请求ACK

0x41

REQUEST_NO_RETRUN_ACK

请求ACK

0x42

NOTIFICATION_ACK

通知ACK

0xC0

RESPONSE_ACK

响应ACK

0xC1

ERROR_ACK

错误响应ACK

4.7 Return Code

Client

报文类型

返回值

REQUEST

0x00

REQUEST_NO_RETURN

0x00

NOTIFICATION

0x00

RESPONSE

Return Codes

ERROR

非0x00的Return Codes


Server

参数值

含义

0x00

E_OK

0x01

E_NOT_OK原因不明

0x02

Unknown service 未知服务

0x03

Unknown method 未知方法

0x04

Not Ready 应用程序未运行

0x05

System not reachable 内部错误

0x06

Time out超时

0x07

Wrong protocol version 错误的协议版本号

0x08

Interface version mismatch 接口版本不匹配

0x09

Deserialization error 解串错误

0x0A

Wrong message type错误的报文类型

0x0B-0x1F

AUTOSAR Reserved

0x20-0x5E

Application error,自定义

4.8 Payload

 通常在数据传输时,为了使数据传输更可靠,要把原始数据分批传输,并且在每一批数据的头和尾部加上一定的辅助信息,比如数据量的大小、校验位等,这些便是上述所提到的SOME/IP的数据包头header,而其中的原始数据就是SOME/IP的数据场Payload。

5. SOME/IP消息的传输类型

  SOME/IP的不同传输类型取决于header里的 Message Type。

5.1Method

Method with Response (Message Type :REQUSET)

车载以太网 SOME/IP(1)-SOME/IP的概念 -汽车开发者社区

Method Fire & Forget  

(Message Type :REQUEST_NO_RETURN)

车载以太网 SOME/IP(1)-SOME/IP的概念 -汽车开发者社区

Tips:REQUEST,REQUEST_NO_RETURN,RESPONSE属于同一类远程过程调用方法,当client有需求的时候,发送一个request消息,server根据这个消息类型(REQUEST或REQUEST_NO_RETURN)来决定是否发送RESPONSE消息。

5.2 Event

Event from Server to Client 

(Message Type :NOTIFICATION)

车载以太网 SOME/IP(1)-SOME/IP的概念 -汽车开发者社区

Tips:NOTIFICATION属于事件通知类的服务,首先由client通过SOME/IP-SD向server订阅服务内容,然后server向client自动发布Event信息(图中的Notification),周期性或者有数据变化时才发送。

5.3 Field

车载以太网 SOME/IP(1)-SOME/IP的概念 -汽车开发者社区

Notifier:server的client订阅了服务后主动向其发送数据,NOTIFICATION机制;

Getter:获取Field当前值,REQUSET-RESPONSE机制;

Setter:设置Field当前值,REQUSET-RESPONSE机制。

5.4 Method vs. Event vs. Field

车载以太网 SOME/IP(1)-SOME/IP的概念 -汽车开发者社区

6. SOME/IP-SD的简介

车载以太网 SOME/IP(1)-SOME/IP的概念 -汽车开发者社区

  在服务进行之前,Server和Client需要一系列的准备工作,比如两者是否已有网络连接;Server能否提供所需的服务,并对服务的Event进行订阅。这些工作都是由SOME/IP-SD服务发现(Service Discovery)实现的。

SOME/IP-SD提供了两种不同的机制。Offer Service,由server向网络上的小伙伴告知它所提供的服务;Find Service:由client向别人请求可用的服务。

6.1  主要内容

1) 定位服务实例;

2) 检测服务实例是否在运行,即服务实例的状态;

3) 对发布(Offer Service)或订阅(Find Service)行为进行管理。

6.2  SD报文解析

 SOME/IP SD报文也是一种SOME/IP SD报文,是在SOME/IP报文的基础上进行扩展,增加了Entry、Option等字段:Entries用于同步服务实例的状态和发布/订阅的管理,Options用于传输Entries的附加信息。

在SOME/IP-SD的报文中,以下属性都是固定的:

Service ID

Method

ID

Request

ID

Protocol

Version

Interface

Version

Message

Type

Return

Code

0xFFFF

0x8100

0x0000

0x01

0x01

0x02

0x00

6.2.1  Flag

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

Reboot flag

Unicast flag

reserved

reserved

reserved

reserved

reserved

reserved

Reboot flag

重启之后置为1

Session ID从1循环至0xFFFF后,flag重新置0

Reboot detect:

If((old.reboot==0)&(new.reboot==1))

If((old.reboot==1)&(new.reboot==1)(old.session_id>=new.session_id))

Unicast flag

是否支持单播传输

1为有效

6.2.2  Entry (Array)

 Entry字段可以理解为服务实例的入口,该入口包含服务实例以及需要订阅的事件组的信息。主要通过Entry实现提供服务、发现服务,以及订阅事件组的功能。

车载以太网 SOME/IP(1)-SOME/IP的概念 -汽车开发者社区

 

l (Entry)Type

 

Type Value

TTL > 0

TTL = 0

0x00

FindService entry

/

0x01

OfferService entry

StopOfferService entry

0x06

SubscribeEventgroup entry

StopSubscribeEventgroupService entry

0x07

SubscribeEventgroupAck entry

SubscribeEventgroupAck entry

 

TTL

-- Time To Live ,Entry的有效时间(s)

-- 0xFFFFFF = valid until reboot


Index 1st /2nd options

Entry的额外信息:IP地址,Port ......


First/second option: Endpoint, Multicast, ……


of opt 1/2: 每种option的数量


Service ID:与SOME/IP中的定义一致

Instance ID: 服务实例

Instance ID

含义

0x0000

Reserved

0xFFFF

All instances

 

Eventgroup ID:需要订阅的事件组

Instance ID

含义

0x0000

Reserved

0xFFFF

All eventgroup

 

Major Version: 服务的主版本号


Minor Version:服务的次版本号


Counter: 区分相同订阅者的订阅请求

6.2.3  Options (Array)

Type

Options

作用

0x01

Configuration Option

说明各名称,如非SOME/IP服务

0x02

Load Balancing Option

定义服务优先级

0x04

IPv4 Endpoint option

说明服务发送本地IPv4地址,传输协议,发送端口号

0x06

IPv6 Endpoint option

说明服务发送本地IPv6地址,传输协议,发送端口号

0x24

IPv4 SD Endpoint option

说明SD发送本地IPv4地址,传输协议,发送端口号

0x26

IPv6 SD Endpoint option

说明SD发送本地IPv6地址,传输协议,发送端口号

0x14

IPv4 Multicast option

说明服务发送的组播IPv4地址,传输协议,发送端口号

0x16

IPv6 multicast option

说明服务发送的组播IPv6地址,传输协议,发送端口号


 

文章转载自公众号:汽车电子嵌入式

分类
标签
收藏
回复
举报
回复
相关推荐