在DDSI-RTPS V2.2标准中,定义了一套计算知名端口(well-known ports)的方法,以便域参与者(Domain Participants)能够通过这些默认定位器进行通信。当定位器的端口号配置为0时,Fast DDS会自动选择知名端口。
以下是用于计算知名端口的规则:
默认监听定位器上的端口计算规则
流量类型 | 知名端口表达式 |
---|---|
元流量组播 (Metatraffic multicast) | PB + DG * domainId + offsetd0 |
元流量单播 (Metatraffic unicast) | PB + DG * domainId + offsetd1 + PG * participantId |
用户组播 (User multicast) | PB + DG * domainId + offsetd2 |
用户单播 (User unicast) | PB + DG * domainId + offsetd3 + PG * participantId |
表达式中的符号含义和默认值
以下表格解释了在上述规则中使用的符号及其默认值:
符号 | 意义 | 默认值 | QoS字段 | |
---|---|---|---|---|
DG | 域ID增益 (DomainID gain) | 250 | wire_protocol().port.domainIDGain | |
PG | 参与者ID增益 (ParticipantId gain) | 2 | wire_protocol().port.participantIDGain | |
PB | 基础端口号 (Port Base number) | 7400 | wire_protocol().port.portBase | |
offsetd0 | 附加偏移量 | 0 | wire_protocol().port.offsetd0 | |
offsetd1 | 附加偏移量 | 10 | wire_protocol().port.offsetd1 | |
offsetd2 | 附加偏移量 | 1 | wire_protocol().port.offsetd2 | |
offsetd3 | 附加偏移量 | 11 | wire_protocol().port.offsetd3 |
注意事项
如果在同一主机上创建多个域参与者,当创建的域参与者数量达到 BuiltinAttributes::mutation_tries
的值(默认为100)时,可能会导致可用端口不足。在这种情况下,域参与者将无法创建监听端口,并且系统会发出日志警告,这些参与者将被创建但未配置单播定位器。
这些规则确保了在网络中多个域参与者能够通过知名端口进行有效通信,从而支持分布式系统的架构设计。
内容由零声教学AI助手提供,问题来源于学员提问