DDS协议--[第四章][dds协议](QOS)

DDS之QOS


QOS可以理解为数据提供者和接收者之间的合约

1、概述

在这里插入图片描述
每个策略都定义了自己的结构,每个实体都支持策略的一个子集,并且定义了一个由被支持的策略结构体所组成的 QoS 结构体,一个给定实体的可用策略集不会受到 QoS 结构体中包含的策略结构体的限制

2、基本功能与类别

Qos:Qos 基本上负责了 DDS 的所有配置,无论是心跳,消息可靠性,流量控制,还是安全配置,甚至包括通道配置,全是通过 Qos 来实现的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
RxO:
YES—Topic的发布方和订阅方必须设置互相兼容的QoS策略,否则不能建立通信
NO—Topc的发布方和订阅方可以分别设置此策略,任何策略的组合都是兼容的
N/A—只能在Topc的发布方或订阅方其中一方设置此策略,不能同时设置,所以不存在兼容问题

Changeable:运行时是否能够改变此策略

2.1、Data availability(数据可用性)

DDS提供以下QoS策略以实现数据可用性控制:
1、 DURABILITY

  • VOLATILE:数据仅提供给现有的订阅者,后加入的Subscriber无法获得数据,这是DDS的默认行为
  • TRANSIENT LOCAL:Publisher在本地保存数据,后加入的Subscriber能够获得数据
  • TRANSIENT:GDS(Global Data Space)保存数据,后加入的Subscriber能够获得数据
  • PERSISTENT:GDS永久保存数据,后加入的Subscriber能够获得数据,即使整个系统发生了重启

比如:一个dds系统,里面有多个Subscriber,我们有些节点先启动,有些后启动,启动慢的节点可能错够一些数据。可以配置durability进行解决。
在这里插入图片描述
2、 LIFESPAN:Data sample的有效时间,默认为永久
比如:类似雷达等数据是随着时间快速变化的,如果出现故障一直是旧的数据,我们可以设置LIFESPAN来设置数据有效时间。

3、 HISTORY:保存data sample历史记录的个数,可以选择仅保存最新sample,或最近的N个sample,
或全部sample
比如:车速数据我们想比较车速变化,那么保留一些历史数据,就可以简单知道是加速还是减速。

2.2、Data delivery(数据交付)

DDS提供以下QoS策略来控制数据的交付方式:

1、PRESENTATION

  • Coherent Access
    在一组DDS data sample的更新都到达接收端后,应用程序才能够访问这一组data sample, 适用于不同数据实例之间存在关联关系的场景

比如:坐标数据,x,y,z都获取到才能访问这组数据。

  • Ordered Access
    保留Data sample之间的顺序

2、RELIABILITY

  • RELIABLE:可靠送达(传输层如果不可靠,应用层实现,比较消耗资源,容易堵塞)
  • BEST EFFORT:尽力送达

3、PARTITION
允许在同一Domain下创建逻辑分区,处于同一分区内的DataWriter和DataReader才可以建立通信

4、DESTINATION ORDER
当系统中存在针对同一个数据实例的多个DataReaders时,接收端如何访问数据
BY RECEPTION TIMESTAMP:以接收端最后收到的数据为准
BY SOURCE TIMESTAMP:以发送端最后发送的数据为准

5、OWNERSHIP
当系统中存在针对同一个数据实例的多个DataWriter时,可以通过设置每个DataWriter的“强度”来控制DataWriter的写入权限(“强度”最高的DataWriter拥有写入权限)

比如:有两套传感器(冗余)只使用一个,一个发生故障(高强度),切换到另一个传感器(次强度)。

2.3、Data timeliness(数据时效性)

DDS提供以下QoS策略来控制分布式数据的时效性:

1、DEADLINE
用于约束数据的发送周期
对发送端来说,设置DEADLINE意味着应用程序必须以在给定时间周期内写入数据
对接收端来说,设置DEADLINE是对数据的时效性的最小要求

保证接收者的deadline>=发送者的deadline,否则产生不兼容错误。

2、LATENCY BUDGET
用于控制数据传输的延迟。
它定义了数据从发送端到接收端的最大允许延迟时间。当数据的延迟超过设定的延迟预算时,DDS可以采取一些策略,如丢弃数据或调整传输优先级,以确保数据传输的实时性

3、TRANSPORT PRIORITY
控制传输数据的优先级,由一个整数表示,值越大优先级越高

2.4、Resources(计算资源)

DDS定义了以下QoS策略来控制满足数据分发要求所必需的网络和计算资源:

1、TIME BASED FILTER
设置该参数意味着在指定时间周期内只期望收到一个data sample,过多的data sample将被DataReader丢弃
该参数有助于优化网络负载及节点的计算资源

  比如:默认情况发送方能发送得很快(1秒100个),接受方只要求1秒5个,就可以设置这个参数控制发送速度,减小本地系统资源。

2、RESOURCE LIMITS
用于限制DDS可以分配的系统内存

2.5、过滤器类

1、 Time-Based Filter(基于时间的过滤器):基于时间戳进行数据过滤,只传输满足指定时间条件的数据。
2、 Lifespan-based Filter(基于生命周期的过滤器):基于数据的生命周期进行过滤,只传输满足指定生命周期条件的数据。
3、 Topic-based Filter(基于主题的过滤器):基于主题进行数据过滤,只传输满足指定主题条件的数据。

2.6、Configuration(用户定义用途)

DDS支持通过以下QoS策略来定义和分发用户信息:

1、USER DATA
允许应用程序将一个字节序列与DomainParticipant、DataReader或DataWriter进行关联,该字节序列通过内建Topic进行分发
常用于分发安全凭证,应用程序可通过此凭证验证数据的有效性

2、TOPIC DATA
允许应用程序将一个字节序列与Topic相关联,该字节序列通过内建Topic进行分发
常用于为Topic添加附加信息

3、GROUP DATA
允许应用程序将一个字节序列与Publisher或Subscriber相关联,该字节序列通过内建Topic进行分发

可以携带用户定义的信息,在服务发现的过程中就可以交换一些用户数据,从而做一些想做的事,比如安全凭证啥的

2.7、其他类

1、活跃性(Liveliness)

  • 心跳发送周期(Liveliness Lease Duration):指定数据发布者发送心跳信号的时间间隔。数据订阅者(DataReader)通过接收心跳信号来判断数据发布者是否仍然活跃。如果在指定的时间间隔内没有收到心跳信号,订阅者将认为数据发布者已经失活。
  • 心跳超时时间(Liveliness Lease Duration):指定数据订阅者等待心跳信号的超时时间。如果在超时时间内没有收到心跳信号,订阅者将认为数据发布者已经失活,并采取相应的措施,如清除相关数据。

2、EntityFactory:指定充当工厂的实体是否自动启用它创建的实例。

3、设置Qos

设置一个策略就像获得一个已经有默认值的结构体一样简单,并在必要的时候修改个别策略值,然后将 QoS 结构体应用到实体中(通常是在实体被建立的时候)。

应用程序可以通过调用 set_qos() 操作来改变任意实体的 QoS 策略。如果该 QoS 策略变得不再兼容,则现有的连接将会移除,否则,如果该 Qos 策略变得兼容了,将会有新的连接添加。该改变将会通过相应的实体调用 QoS 更新操作通知 DCPSInfoRepo,DCPSInfoRepo 将会依据 Qos 策略规范来重新检测兼容性和关联性,如果兼容性检测失败,set_qos() 调用将会返回错误,关联性检测将以移除现有的连接或增加新的连接为结果。

如果试图去改变一个不能改变的 QoS 策略,set_qos() 操作将会返回 DDS::RETCODE_IMMUTABLE_POLICY。

应用程序获取实体的默认 QoS 策略,通过实例化该实体的一个对应的 Qos 结构体,然后调用实体工厂的 get_default_entity_qos() 操作将它获取回来(例如,对于发布者和订阅者,可以通过使用域参与者来获取默认 QoS)。

4、补充知识

尽量发送和可靠发送。

在舰载信息系统中,尽量发送通常为默认方式,这种方式无需确定样本是否按顺序传递也不需要重新发送样本,而当对数据样本正确性要求较高时,这种方式并不再适用,此时需使用可靠发送模式。可靠发送模式确保所有的样本都被有序接收。

可靠发送模型:
  可靠发送意味着样本确定到达并且按序发布。发送和接收队列用来临时缓存样本,直到DDS确认样本已经成功传递。在样本已经被所有可靠的订阅者接收之后,DDS将发布队列中的样本移除。如果无序样本到达,那么DDS将其缓存到数据读取者(DR)的接收队列中。

在发送样本时,数据写入者(DW)设置为等待空间状态,即当发送队列没有可用的空间时,DW一直等待直到有可用的队列空间。而如果将DW设置为非等待空间状态,即不论队列溢出与否都一直发送数据,那么旧的缓存样本将会被推出队列,DR将无法接收。

可靠协议:
  为了保证可靠发送,DDS执行实时发布订阅(Real-Time Publish-Subscribe,RTPS)协议。
  可靠协议使用以下几种类型的消息[3]:数据信息(Data)、心跳检测信息(HB)、反馈信息(ACK/NACK)。
  (1)数据信息。格式为DATA(<样本值>,<序列号>),例如DATA(A,1),表示样本值为A,序列号为1。
  (2)心跳检测信息。HB信息通知DR应该接收了某序列号范围内的信息,要求DR发送相应的响应信息。
  (3)反馈信息。反馈信息用于向DW表明特定的信息已经成功存储到该DR的历史中。DW可以通过反馈信息得知DR哪些信息丢失了。

丢包状况下的可靠协议

假设样本DATA(A,1)在发送过程中发生了丢包情况,当DR收到下一个信号包(DATA(B,2);HB(1-2))时,由于心跳检测HB(1-2)表明DR应该已经收到序列号为1-2的样本,于是DR将会自检是否已经成功接收这些样本,会发现序列号为1的样本并没有被成功接收。此时,DR将会发送ACKNACK(1)给DW,要求其重新发送样本DATA(A,1)。该过程如图2所示。
在这里插入图片描述
正常状况下的可靠协议

在样本未丢失的情况下,当调用写函数(write())时,可靠协议工作流程如图1所示。

在这里插入图片描述
在样本被发送之前,将会在DW的发送序列中加上序列号(此例中为1)。一旦样本被DR接收,DR就将信息存放于其接收队列中,标记为√。DR接收到的心跳检测信号HB(1)为确认自己是否已经成功接收样本(1,A),本例中为成功接收。DW接收到DR发的ACKNACK(2)信息后,确认样本(1,A)已经被成功接收,也以√标记。

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Fast-DDS是一个高性能的、基于数据发布-订阅模型的通信协议。它提供了丰富的QoS(服务质量)策略以及灵活的路由机制,以满足不同场景下的通信需求。 其中,QoS策略是指在数据传输的过程中,可以通过一定的配置方式来控制数据传输的质量、可靠性、延时等因素。Fast-DDS中提供了多种QoS策略,包括消息传输的可靠性、数据的存储方式、订阅者优先级等。 在Fast-DDS中,消息传输的可靠性可以通过以下几种QoS策略来控制: 1. RELIABILITY,即可靠性:用于控制消息的可靠性,包括发布者和订阅者之间的ack确认机制,以及网络连接中的重传机制。 2. DURABILITY,即持久性:用于控制消息的持久化方式,包括将消息写入本地磁盘或将消息存储在内存中。 3. HISTORY,即历史消息:用于控制订阅者在订阅之前是否可以获取历史消息,以及历史消息保存的方式(内存中、磁盘中、或通过文件传输)。 除了上述QoS策略,Fast-DDS还提供了很多其他的QoS选项,如数据传输的优先级、最大传输延迟、数据分发的方式等等,以满足不同的通信场景需求。 总体而言,Fast-DDSQoS策略提供了丰富的选项和灵活的配置方式,能够帮助开发人员实现高性能、可靠的数据传输。 ### 回答2: Fast-DDS是一种高性能的DDS实现,可以用于构建实时和分布式系统。Fast-DDS支持多种QoS策略,这些策略允许用户在系统性能和资源利用率之间做出权衡。以下是Fast-DDSQoS策略的几个关键点: 1. 可靠性:Fast-DDS支持可靠和非可靠的通信,通过配置可靠性参数,可以控制数据重传和丢失时间等方面的行为。 2. 带宽控制:Fast-DDS支持带宽限制,通过配置带宽参数,可以限制系统的带宽使用,从而避免因过度使用带宽导致的卡顿和延迟。 3. 时间同步:Fast-DDS支持时间同步,通过配置时间同步参数,可以在系统中确立一个统一的时间基准,从而避免因时间差异而导致的不一致性。 4. 优先级:Fast-DDS支持消息优先级,通过配置优先级参数,可以确保重要消息的优先传输,从而提高系统的响应能力。 5. QoS Inheritance: Fast-DDS支持QoS继承,它允许用户在不同级别的实体之间继承QoS属性。例如,可将主题级别的QoS继承到订阅者级别,从而确保所有订阅者都使用同一的QoS策略。 综上所述,Fast-DDSQoS策略提供了一些非常有用的功能,可以帮助用户在不同的反应性和资源利用率需求之间做出权衡,从而优化系统的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

起风就扬帆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值