SOME/IP RPC protocol-TCP Binding
- The TCP binding of SOME/IP is heavily based on the UDP binding. In contrast to the UDP binding, the TCP binding allows much bigger SOME/IP messages and uses the robustness features of TCP (coping with loss, reorder, duplication, etc.).
SOME / IP的TCP绑定很大程度上基于UDP绑定。 与UDP绑定相比,TCP绑定允许更大的SOME / IP消息并使用TCP的鲁棒性(应对丢失,重新排序,复制等)。 - Every SOME/IP payload shall have its own SOME/IP header.
每个SOME / IP payload都应具有自己的SOME / IP hearder。 - In order to lower latency and reaction time, Nagle’s algorithm shall be turned off (TCP_NODELAY).
为了降低延迟和反应时间,应关闭Nagle算法(TCP_NODELAY)。 - When the TCP connection is lost, outstanding requests shall be handled as timeouts. Since TCP handles reliability, additional means of reliability are not needed.
当TCP连接丢失时,未完成的请求应作为超时处理。 由于TCP的可靠性,因此不需要额外的可靠性手段。 - The client and server shall use a single TCP connection for all methods, events, and notifications of a service instance. When having more than one instance of a service a TCP connection per services instance is needed.
客户端和服务端应对服务实例的所有method,event和notification使用一个TCP连接。 当具有多个服务实例时,则每个服务实例需要一个TCP连接。 - The TCP connection shall be used for as many services as possible to minimize the number of TCP connections between the client and the server (basically only one connection per TCP port of server).
TCP连接应该用于尽可能多的服务,以最小化客户端和服务端之间的TCP连接数(基本上每个服务端的TCP端口只有一个连接)。 - The TCP connection shall be opened by the client, when the first method call shall be transport or the client tries to receive the first notifications.
当发送第一个method调用或者客户端打算接收第一个notification,客户端应该负责打开TCP连接。 - The client is responsible for reestablishing the TCP connection whenever it fails.
客户端负责在失败时重新建立TCP连接。 - The TCP connection shall be closed by the client, when the TCP connection is not required anymore.
当不再需要TCP连接时,客户端应关闭TCP连接。 - The TCP connection shall be closed by the client, when all Services using the TCP connections are not available anymore (stopped or timed out).
当使用TCP连接的所有服务不再可用(停止或超时)时,客户端应关闭TCP连接。 - The server shall not stop the TCP connection when stopping all services the TCP connection was used for but give the client enough time to process the control data to shutdown the TCP connection itself.
当服务器停止使用某TCP连接的所有服务时,服务器不应停止该TCP连接,但是给客户端足够的时间来处理控制数据以关闭TCP连接。 - Rational合理性:
When the server closes the TCP connection before the client recognized that the TCP is not needed anymore, the client will try to reestablish the TCP connection.
当服务器关闭TCP连接而客户端并不清楚不需要该TCP了,客户端将尝试重新建立TCP连接。
2020年1月2日