Fast DDS入门七、Fast DDS的侦听、通告以及底层传输介绍

FastDDS的传输逻辑涉及侦听定位器用于接收数据,通告地址和端口的交换,以及TransportLayer的实现。侦听包括多播和单播定位器,分别处理不同类型的通信流量。通告涉及DDS实体间的可达性信息交换。底层传输层支持UDP,TCP,SHM等多种通信方式,提供DDS实体间通信服务,允许应用选择适合的传输方式。
摘要由CSDN通过智能技术生成

Fast DDS的传输逻辑首先明确收方和发方是谁,收方/发方地址和端口的生成规则是什么,也就是侦听、通告的逻辑规则。其次Fast DDS的底层传输依赖于Transport Layer,是独立UDP/TCP之上传输接口层。

一、侦听

侦听定位器用于接收DomainParticipant上的传入流量,是DDS发现机制和数据传输机制的关键所在。这些定位器可以根据通信类型和数据性质进行分类。

依据通信类别可以划分为:多播定位器和单播定位器,多播定位器侦听多播通信数据,单播定位器侦听单播通信数据。依据数据类别可以划分为:元数据侦听器和用户数据侦听器。元数据侦听器用于接收元数据流量信息,通常由内置端点用户执行发现机制。用户数据侦听器用于接收用户主题的业务流量数据。

Transport Layer子模块默认定义了一组规则来计算默认定位器的知名端口,以便域参与者可以与这些默认定位器通信。当定位器配置为端口号0时,Transport Layer也会自动选择已知端口。

已知侦听端口的计算采用下表计算规则:

流量类型端口计算规则
元数据多播PB+DG*domainId+offsetd0
元数据单播PB+DGdomainId+offsetd1+PGparticipantId
用户数据多播PB+DG*domianId+offsetd2
用户数据单播PB+DGdomainId+offsetd3+PGparticipantId

下表解释了这些规则中使用的值。可以使用DomainParticipantQoS上的WireProtocolConfigQoS的端口成员修改这些默认值。

符号意义默认值
DGDomainID gain250
PGParticipant gain2
PBPort Base number7400
offset0Additional offset0
offset1Additional offset10
offset0Additional offset1
offset0Additional offset11

用户可以使用DomainParticipantQos向DomainParticipant添加自定义侦听定位器。根据添加定位器的字段,它将被视为多播、单播、用户或元流量定位器。

二、通告

为了进行通信,DDS实体需要交换可以到达的地址和端口列表。除了默认通告的定位器(对应于应用程序运行的主机中的网卡地址)之外,当路由规则已相应设置时,用户可以使用主机上其他网络上的地址和端口配置其他定位器。

将根据侦听定位器构建通告定位器的默认列表:
如果定位器的地址字段为空地址(即,对于UDPv4为0.0.0.0),则将构建主机网络接口的每个相同地址类型和端口的通告定位器。
如果定位器的地址字段不是空地址,则将通告具有该地址的单个定位器。

用户可以为每个单播定位器列表配置一组外部定位器:
外部定位器由标准定位器字段(种类、地址和端口)以及以下属性组成:
externality(外部属性),表示从应用程序运行的主机到外部定位器表示的LAN的跳数。
cost(成本),表示在同一外部属性水平上相对于其他定位点的通信成本。
mask(掩码),由外部定位器表示的LAN上有效位数的掩码。

三、底层传输

Transport Layer是DDS底层传输层的实现,它提供DDS实体之间通信服务,负责通过物理传输实际发送和接收消息。DDS Layer层以及RTPS Layer层服务于用户数据和发现流量通信,DDS Layer层本身是独立于传输的,它定义了一个传输API,并且可以在任何实现该API的传输插件上运行。这样,它就不受限于特定的传输方式,应用程序可以选择最适合其要求的传输方式,或者创建自己的传输方式。
Transport Layer子模块实现了五种传输方式:
UDPv4:IPv4上的UDP数据报通信。如果没有给出特定的传输配置,默认情况下会在新的DomainParticipant上创建此传输。
UDPv6:IPv6上的UDP数据报通信。
TCPv4:IPv4上的TCP数据流通信。
TCPv6:IPv6上的TCP数据流通信。
SHM:在同一主机上运行的实体之间的共享内存通信。如果没有给出特定的传输配置,默认情况下会在新的DomainParticipant上创建此传输。
在某些设置下,进程内数据传递和数据共享传递也可用于在实体之间发送消息。Transport Layer子模块不同传输方式如下图所示:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼爱幻想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值