SOME/IP--协议英文原文讲解9

前言
SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块:

1. SOME/IP协议讲解

2. SOME/IP-SD协议讲解

3. python/C++举例调试讲解


4.2.1.4 Transporting large SOME/IP messages of UDP (SOME/IP-TP)
The UDP binding of SOME/IP can only transport SOME/IP messages that fit directly
into an IP packet. If larger SOME/IP messages need to be transported over UDP
(e.g. of 32 KB) the SOME/IP Transport Protocol (SOME/IP-TP) shall be used. The
SOME/IP message too big to be transported directly with the UDP binding shall be
called "original" SOME/IP message. The "pieces" of the original SOME/IP message
payload transported in SOME/IP-TP messages shall be called "segments".
Use TCP only if very large chunks of data need to be transported (> 1400 Bytes) and
no hard latency requirements in the case of errors exists

如何使用 **SOME/IP 传输协议(SOME/IP-TP)** 通过 UDP 传输较大的 SOME/IP 消息。

1. **UDP 绑定的限制**:
   - SOME/IP 的标准 UDP 绑定只能传输适合单个 IP 数据包的消息。这通常受限于网络的 **最大传输单元(MTU)**,默认情况下约为 1500 字节(包括 IP 和 UDP 头部)。

2. **SOME/IP-TP 的作用**:
   - 如果需要通过 UDP 传输更大的 SOME/IP 消息(例如 32 KB),则需要使用 **SOME/IP-TP**。
   - SOME/IP-TP 将原始 SOME/IP 消息(称为“原始消息”)分割成多个较小的片段(称为“段”),然后通过多个 UDP 数据包传输。

3. **原始消息与段**:
   - **原始消息**:无法直接通过 UDP 绑定的 SOME/IP 消息。
   - **段**:原始消息的有效载荷被分割后,通过 SOME/IP-TP 消息传输的片段。

4. **TCP 的使用场景**:
   - 如果需要传输非常大的数据块(超过 1400 字节),并且对错误情况下的延迟没有严格要求,则建议使用 TCP 而不是 UDP。

5. **UDP 直接传输会怎么样**:
    如果是大包的SOME/IP数据 通过UDP直接传输 而不在SOME/IP层分包的话,数据则会直接转到IP层,IP层有MTU的限制 会进行分包发送,到接收端后IP层会重新组包。如果其中一个分包有问题,则整包直接丢弃,没有重传。
        所以UDP传输大的SOME/IP报文 需要在SOME/IP层进行 分包。

总结来说,SOME/IP-TP 是为了解决 UDP 传输大消息的限制而设计的,通过分段传输实现。而 TCP 更适合传输非常大的数据块,尤其是在对延迟要求不严格的情况下。

 [PRS_SOMEIP_00720]
Upstream requirements: RS_SOMEIP_00010, RS_SOMEIP_00012
SOME/IP messages using SOME/IP-TP shall activate Session Handling (Session ID
must be unique for the original message).
SOME/IP-TP应该激活会话处理功能,即SessionID对于所有被分包的SOME/IP报文而言要连续唯一且大于0。分包之后的子包中的SessionID要和原始包一致
[PRS_SOMEIP_00721]
Upstream requirements: RS_SOMEIP_00010, RS_SOMEIP_00012
All SOME/IP-TP segments shall carry the Session ID of the original message; thus,
they have all the same Session-ID.
所有切片包中的sessionID必须和 原始包一样
[PRS_SOMEIP_00722]
Upstream requirements: RS_SOMEIP_00010, RS_SOMEIP_00011
SOME/IP-TP segments shall have the TP-Flag of the Message Type set to 1.
SOME/IP-TP子包中MessageType的 TP-Flag要设置为1

在SOME/IP header之后 payload之前 有TP-header 格式如下: 

[PRS_SOMEIP_00931]
Upstream requirements: RS_SOMEIP_00027
SOME/IP-TP Header shall be encoded in network byte order (big endian). 大端字节序 和SOME/IP保持同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值