在DDS(数据分发服务)中,进行通信的前提是DDS实体需要交换可以访问它们的地址和端口列表。除了与运行应用程序的主机网络接口相对应的默认宣布定位器之外,用户还可以配置额外的定位器,使用其他网络上的地址和端口,只要相应的路由规则已正确设置。
6.9.1 默认宣布定位器
默认宣布定位器列表将根据监听定位器构建,具体如下:
如果定位器的地址字段为空地址(例如,对于UDPv4而言为0.0.0.0),则将为主机所有网络接口的每个地址宣布一个相同类型和端口的定位器。
如果定位器的地址字段不是空地址,则将仅宣布一个带有该地址的单一定位器。
6.9.2 外部定位器
用户可以为每组单播定位器配置一组外部定位器,包括以下内容:
builtin.metatraffic_external_unicast_locators
:在WireProtocolConfigQos中配置。default_external_unicast_locators
:在WireProtocolConfigQos中配置。external_unicast_locators
:在RTPSEndpointQos中配置。
外部定位器由标准定位符字段(类型、地址和端口)组成,还包括以下属性:
Externality:指示从运行应用程序的主机到外部定位器所代表LAN之间跳数的一种指标。
Cost:表示与同一外部性水平上其他定位符相比的通信成本。
Mask:表示由外部定址LAN上有效位数构成的掩码。
6.9.2.1 外部性级别
外部定址主要用于实现跨不同互联LAN级别之间的通信。通信将使用可用内层LAN中的定址进行处理。
举个例子,如果应用程序正在某个主机上运行,并且该主机连接到办公室局域网,而办公室局域网又连接到同一楼层所有办公室共用的局域网,再往上连接至建筑物级别局域网,则默认为这种情况下只会发生办公区域内主机间通信。这被视为外部性级别0,该级别保留给直接连接到应用程序运行所在主机网络接口上的LAN。这也是默认宣布定址匹配算法所使用的外部性级别。而楼层LAN将被配置为外部性级别1,而建筑物LAN则被配置为外部性级别2。
请注意,为了成功进行通信,很可能需要向不同网络路由器添加路由规则。
注意事项
重要的是,外部性级别0由Fast DDS自动填充,并且无法通过应用程序进行配置。
内容由零声教学AI助手提供,问题来源于学员提问