SOME/IP是Scalable service-Oriented MiddlewarE over IP的缩写,是一种用于汽车电子设备的通信协议,支持远程过程调用、事件通知和序列化/反序列化等功能¹。
SOME/IP通信是一种面向服务的传输协议,它可以支持请求/响应模式的远程服务调用,也可以支持订阅/发布模式的消息通知1。
当服务端和客户端的数量变多,数据量变大的情况下,如何保障数据不丢包,可不可以为一个通信数据排优先级?这些问题可以通过以下几个方面来解决:
TCP可以保证数据的可靠性和有序性,但是会增加延迟和开销;
UDP可以提供低延迟和高效率的数据传输,但是可能会出现数据丢失或乱序的情况1。
如果需要传输非常大的数据块 (> 1400字节),并且在存在错误的情况下没有硬延迟要求时,可以使用TCP;
如果需要非常硬的延迟要求 (<100ms),在错误的情况下使用UDP;
如果需要传输非常大的数据块 (> 1400字节),并且存在错误时需要硬延迟,可以使用UDP和SOME/IP-TP2。
SOME/IP-TP是一种分段和重组机制,它可以将大于1400字节的数据分成多个小于1400字节的片段,并在接收端重新组合成完整的数据3。
QoS参数可以在服务接口定义中指定,也可以在运行时动态配置。QoS参数包括以下几种类型:
可靠(Reliable)选项表示需要使用TCP或者UDP加SOME/IP-TP来保证数据不丢失;
最佳努力(Best Effort)选项表示只使用UDP来传输数据,不保证数据不丢失
本地(Local)选项表示只在本地节点内部传输数据,不涉及网络通信。
someip通信的QoS是通过令牌桶机制来实现资源限制和时间限制的。令牌桶机制是一种流量控制方法,它可以根据不同的业务需求,为流量分配不同的优先级和带宽。令牌桶中的令牌数代表了允许发送的流量大小,当令牌桶中有足够的令牌时,流量可以被发送;当令牌桶中没有足够的令牌时,流量会被缓存或丢弃,从而达到限制流量的目的。¹²
someip通信的QoS可以在不同的层次上进行配置,例如基于接口、基于队列或基于MQC(Modular QoS Command-line)的流量整形。²³ 不同的配置方式可以实现更细化的针对不同业务的差分服务。
someip通信的QoS可以根据不同的业务需求,为流量分配不同的优先级和带宽,从而提高网络效率和性能¹。
someip通信的QoS可以在不同的层次上进行配置,例如基于接口、基于队列或基于MQC的流量整形,实现更细化的针对不同业务的差分服务²。
someip通信的QoS可以支持多种通信方式,例如请求-响应、请求-无响应、事件通知、字段通知等,满足不同场景的通信需求³。
someip通信的QoS需要依赖于SOME/IP-SD协议来实现服务发现和订阅,这可能增加了网络开销和延迟¹。
someip通信的QoS需要进行序列化和反序列化的操作,这可能影响了数据传输的效率和准确性²。
someip通信的QoS可能存在兼容性和安全性的问题,需要遵循统一的规范和约束,以保证不同平台和系统之间的通信可靠性²。
参考链接:
(1) 车载以太网 - SOME/IP简介 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/48424110.
(2) SOME/IP到底讲了什么 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/186251698.
(3) 【自动驾驶】8. MDC通信架构 + DDS + SOME/IP - CSDN博客. https://blog.csdn.net/u011754972/article/details/119172299.
someip通信的QoS监控和调试可以参考以下内容:
TTL是Time To Live的缩写,是一种用于限制数据在计算机或网络中的生存时间或寿命的机制,可以作为一个计数器或时间戳附加到或嵌入到数据中,一旦达到预定的事件计数或时间跨度,数据就会被丢弃或重新验证²。
SOME/IP通信服务端和客户端的TTL的时间设置长短有以下影响:
TTL参数设置需要注意以下方面:
希望这些信息对您有所帮助。
源:
(1) Analyzing and Securing SOME/IP Automotive Services with Formal and .... https://dl.acm.org/doi/fullHtml/10.1145/3465481.3465748.
(2) Time to live - Wikipedia. https://en.wikipedia.org/wiki/Time_to_live.
(3) IP Time to Live (TTL) and Hop Limit Basics - Packet Pushers. https://packetpushers.net/ip-time-to-live-and-hop-limit-basics/.
- 如果您使用的是Linux系统,您可以使用sysctl命令或直接修改/proc/sys/net/ipv4/ip_default_ttl文件来配置TTL参数³。例如,如果您想将TTL值设置为129,您可以运行以下命令:
sudo sysctl -w net.ipv4.ip_default_ttl=129
或者:
echo 129 | sudo tee /proc/sys/net/ipv4/ip_default_ttl
或者:
sudo bash -c 'echo 129 > /proc/sys/net/ipv4/ip_default_ttl'
如果您使用的是Windows系统,您可以使用reg命令或直接修改注册表中的DefaultTTL键来配置TTL参数。例如,如果您想将TTL值设置为129,您可以运行以下命令:
reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v DefaultTTL /t REG_DWORD /d 129 /f
或者:
打开注册表编辑器(regedit.exe),找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,双击DefaultTTL键,将数值数据改为129。
如果您使用的是SOME/IP协议,您可以使用专业的工具(如ETAS RTA-VRTE)来配置TTL参数¹²。
例如,如果您想将某个服务端或客户端的TTL值设置为1677,您可以在工具中找到相应的服务实例或客户端实例,修改其TTL属性为1677。
希望这些方法对您有所帮助。
源:
(1) How to change the default TTL of TCP/IP packets?. https://askubuntu.com/questions/667096/how-to-change-the-default-ttl-of-tcp-ip-packets.
(2) DNS TTL best practices: Understanding and configuring DNS TTL. https://www.ionos.com/digitalguide/server/configuration/understanding-and-configuring-dns-ttl/.
(3) Time-To-Live and Expiration — RabbitMQ. https://www.rabbitmq.com/ttl.html.
源:
(1) 一篇入门SOME/IP协议 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/253077443.
(2) SOME/IP SD的通信行为 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/103532115.
(3) SOME/IP通信协议-总结篇 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/626401884.