10.11.7 BuiltinTransports
BuiltinTransports
是用于控制在初始化 DomainParticipant
时所使用的内置传输模式的配置。内置传输允许 DDS 实现不同的通信方式,以适应各种应用场景和网络条件。
配置说明:
builtinTransport:
描述:定义要使用的内置传输模式。
可选值:
- NONE: 不使用任何内置传输。
- DEFAULT: 使用默认传输设置,通常是 UDPv4。
- DEFAULTv6: 使用 IPv6 的默认传输设置。
- SHM: 使用共享内存进行进程间通信,适合同一机器上的多个进程之间低延迟数据交换。
- UDPv4: 使用 IPv4 协议的用户数据报协议(UDP)。
- UDPv6: 使用 IPv6 协议的用户数据报协议(UDP)。
- LARGE_DATA: 专门处理大数据量传输的模式,提供优化以支持更大的消息负载。
默认值:
DEFAULT
。这意味着如果未显式指定,将使用默认的 UDPv4 模式。
属性配置:
max_msg_size
- 描述:指定在传输层可以接收或发送的最大消息大小。
- 有效值范围:从 1 到 (2^32)-1 字节,即 4294967295 字节。这允许很大尺寸的数据包,但具体限制依赖于网络条件和应用需求。
- 类型:uint32_t(无符号整型)。
- 默认值:65500 字节,这是为了避免与底层协议(如 UDP)的最大负载限制冲突,并留有足够空间以防头部信息占用。
sockets_size
- 描述:发送和接收套接字缓冲区的大小。
- 有效值范围:从 0 到 (2^32)-1 字节。为确保良好的性能,这个参数应该根据预期负载和网络条件调整。
- 类型:uint32_t。
- 默认值:操作系统默认缓冲区大小。这个选择通常能满足一般情况下的数据交换需求,但在高负载环境下可能需要手动调整以提升吞吐量。
non_blocking
- 描述:是否使用非阻塞发送调用。
- 有效值:true 或 false。如果设为 true,则发送调用不会被阻塞,允许程序继续执行其他任务,而不等待发送完成;如果设为 false,则会阻塞直至发送操作完成。
- 类型:bool(布尔型)。
- 默认值:false。在大多数场景下,这种阻塞行为是可接受并且能够简化代码逻辑,但在对实时性要求高的应用中,可以考虑启用非阻塞模式。
tcp_negotiation_timeout
- 描述:逻辑端口协商时的超时时间,仅适用于 LARGE_DATA 模式。这是为了确保在长时间无响应时能够退出协商过程,并采取相应措施。
- 有效值范围:从 1 到 (2^32)-1 毫秒。
- 类型:uint32_t。
- 默认值:0,表示没有设置超时,这可能导致在某些情况下无限期地等待协商完成,因此建议根据实际情况合理配置这一参数。
应用场景
在设计 DDS 应用程序时,根据不同应用对带宽、延迟及可靠性的需求,可以选择合适的
builtinTransport
和属性。例如,在资源受限或局域网环境中,可以选择SHM
来减少延迟,而在广域网中则可能更倾向于UDPv4
或UDPv6
提供更好的兼容性和灵活性。对于需要大量数据交换或实时性强的数据流场景,例如视频流处理或大规模分布式系统,可以考虑将
builtinTransport
设置为LARGE_DATA
并合理配置相关参数,如增加max_msg_size
和调优缓冲区大小,以提高性能和稳定性。同时也要关注网络特性来避免过多的数据丢失与重发。
综上所述,通过恰当配置 BuiltinTransports
的各项参数,开发者可以针对具体应用场景有效提升 Fast DDS 中的数据传输效率、延迟及整体表现。
内容由零声教学AI助手提供,问题来源于学员提问