DDS、QoS技术

分布式实时通信——DDS技术 - 知乎 (zhihu.com)

QoS

Quality of Service即服务质量。在有限的带宽资源下,QoS为各种业务分配带宽,为业务提供端的服务质量保证。例如,语音,视频和主要的数据应用在网络设备中可以通过配置QoS优先得到服务。

Qos的重要性

在IP网络的业务可以分为实时业务和非实时业务。实时业务往往占据固定带宽,对网络质量变化感知明显,对网络质量稳定性要求高,列如语音业务。非实时业务所占带宽难以预测,经常会出现突发流量。突发流量会导致网络质量下降,会引起无偶拥塞,增加转发时延,严重时还会产生丢包,导致业务质量下降不可用。

解决网络拥塞的最好的办法是增加网络的带宽,但从运营、维护的成本考虑,这是不现实的,最有效的解决方案就是应用一个“有保证”的策略对网络流量进行管理。

QoS一般针对网络中有突发流量时需要保障重要业务质量的场景。如果业务长时间达不到服务质量要求(例如业务流量长时间超过带宽限制),需要考虑对网络扩容或使用专用设备基于上层应用去控制业务。

近几年,视频的应用出现了爆炸式的增长,现在几乎每个人都拥有一部能够随时随地拍摄高分辨率视频的智能手机。同时随着社交网站的涌现,分享和发布视频成了每个人的日常行为,人们不论身在何处都可以将自己制作的视频发布出去与他人分享。对于企业来说,高清视频会议,高清视频监控等应用,也在网络中产生了大量的高清视频流量。与语音流量相比,视频流量占用的带宽更多,也更不稳定,特别是一些交互类视频,对实时性要求非常高。另外,随着无线网络的发展,越来越多的用户和企业都开始使用无线终端,而无线终端会随着用户的移动而不断变化位置,导致网络中的流量更加的不可预测。因此QoS方案设计也面临更多的挑战。

度量指标

影响网络质量的因素包括传输链路的带宽、报文传送时延和抖动、以及丢包率等,它们也就成为了QoS的度量指标。

带宽

带宽也称为吞吐量,是指在一个固定的时间内(1秒),从网络一端传输到另一端的最大数据位数,也可以理解为网络的两个节点之间特定数据流的平均速率。带宽的单位是比特/秒(bit/s)。在网络中,有两个常见的与带宽有关的概念:上行速率和下行速率。上行速率是指用户向网络发送信息时的数据传输速率,下行速率是指网络向用户发送信息时的传输速率。例如,用户通过FTP上传文件到网络,影响上传文件速度的就是上行速率;而从网络下载文件,影响下载文件速度的就是下行速率。

时延

时延是指一个报文或分组从网络的发送端到接收端所需要的延迟时间,一般由传输延迟及处理延迟组成。以语音传输为例,时延是指从说话者开始说话到对方听到所说内容的时间。一般人们察觉不到小于100毫秒的延迟。当延迟在100毫秒和300毫秒之间时,说话者可以察觉到对方回复的轻微停顿,这种停顿可能会使通话双方都感觉到不舒服。超过300毫秒,延迟就会很明显,用户开始互相等待对方的回复。当通话的一方不能及时接收到期望的回复时,说话者可能会重复所说的话,这样会与远端延迟的回复碰撞,导致重复。

抖动

如果网络发生拥塞,导致通过同一连接传输的分组延迟各不相同。抖动用来描述延迟变化的程度,也就是最大延迟与最小延迟的时间差。抖动对于实时性的传输是一个重要参数,特别是语音和视频等实时业务是极不容忍抖动的,抖动会造成话音或视频的断续。抖动也会影响一些网络协议的处理。有些协议是按固定的时间间隔发送交互性报文,抖动过大会导致协议震荡。所有传输系统都有抖动,只要抖动在规定容差之内就不会影响服务质量。利用缓存可以克服过量的抖动,但这将增加时延。

丢包率

丢包率是指在网络传输过程中丢失报文的数量占传输报文总数的百分比。少量的丢包对业务的影响并不大,例如,在语音传输中,丢失一个比特或一个分组的信息,通话双方往往注意不到。在视频的传输中,丢失一个比特或一个分组可能造成在屏幕上瞬间的波形干扰,但能很快恢复正常。使用TCP传送数据可以处理少量的丢包,因为TCP允许丢失的信息重发。但大量的丢包会影响传输效率。在QoS中,我们关注的是丢包的统计数据,也就是丢包率。所以正常传输时,网络丢包率应该控制在一定范围内即可。

QoS是一个目标,不涉及任何技术实现定义

DDS简介

DDS的定义:Data Distribution Service 数据分发服务,是新一代分布式实时通信中间件协议,采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,以保障数据进行实时、高效、灵活的分发,可以满足各种分布式实时通信应用需求。

DDS最早应用在美国海军系统,用于解决军舰系统复杂网络环境中大量软件升级的兼容性问题。在汽车领域,2018年Adaptive AUTOSAR引用了DDS,作为可选择的通信方式之一。目前国内已有主机厂开始研究,主要针对自动驾驶相关需求,工具方面,在汽车电子领域常用的工具厂商也在开发这部分内容。不仅是汽车领域引入DDS,在机器人开发领域,最新升级的ROS2也引入了DDS中间件来传递信息。

DDS规范

DDS规范是由OMG(Object Management Group)对象管理组织发布的。OMG组织是一个国际性、开放性、非盈利性技术标准联盟,由供应商、终端用户、学术机构、政府机构推动,已经有31年的历史;OMG工作组针对各种技术和行业制定企业集成标准,并开发可为数千个垂直行业提供现实价值的技术标准。

DDS的相关标准包括核心协议(DDSI-RTPS,DDS-XTypes,DDS-Security,Interface Definition Language (IDL)…),API(DDS C++ API,DDS Java API),拓展协议(DDS-RPC,DDS-XML…)等13份协议集合。

在分布式系统中,DDS位于操作系统和应用程序之间,支持多种编程语言以及多种底层协议。这便是我们常说的跨平台。

DDS发布订阅模型DCPS

将具体协议之前,我们先熟悉下几个专有名词

  • Domain:代表一个通信平面,由DomainID唯一标识,只有在一个域内的通信实体才可以通信;如果考虑车内通信,可以只划分1个Domain,也可以按照交互规则或其他规则定义多个Domain;
  • Domain Participant:代表域内通信的应用程序的本地成员身份,简单来说,就是说明统一数据域内的通信成员
  • Topic:是数据的抽象概念,由TopicName标识,关联相应数据的数据类型(DataType),如果把车内所涉及的所有Topic集合在一起,这样就形成一个虚拟的全局数据空间“Global Data Space”,进一步弱化了节点的概念,所以域参与者已经不是节点的概念了;
  • DataWriter:数据写入者,类似缓存,把需要发布的主题数据从应用层写入到DataWriter中
  • DataReader:数据读取者,同样可以理解为一种缓存,从订阅者得到主题数据,随之传给应用层
  • Publisher:发布者,发布主题数据,至少与一个DataWriter关联,通过调用DataWriter的相关函数给发出去
  • Subscriber:订阅者,订阅主题数据,至少与一个DataReader关联,当数据到达时,应用程序可能忙于执行其他操作或应用程序只是等待该消息时,这样就会存在俩种情况,同步访问和异步通知。

接下来,我们看一下DDS的通信模型

根据前面介绍,我们清楚了DDS是一个亿数据为中心的中间件协议和API标准,意为用户只关心自己想要的数据,数据通过Topic进行标识,这样发布者根据主题发布的数据,订阅者根据自己感兴趣的主题订阅数据。这便是DDS核心,以数据为中心发布-订阅模型DCPS(Data-CentricPublish-Subscribe)

如果是熟悉的以服务为中心的SOME/IP中间件,我们需要做的是把数据打包成服务,之后服务的消费方向服务提供方通过SD订阅服务中的事件组,当数据发生变化后,相应的事件报文便会发到总线上。相比之下,DDS确实很直接,直接与数据沟通。

Qos服务质量

DDS的另一重要的知识点是支持QoS(Quality of Service),目前共支持22种QoS策略,每种策略都可以应用在不同的角色上,而针对同一角色,可单独使用一种QoS,也可以组合使用多种QoS策略。试想一下,QoS应该如何应用呢?具体能起到什么作用?

RELIABILITY (可靠性)

参数定义:

Kind = RELIABLE ,如果当网络发生错误, DataReader可能无法收到DataWriter的样本数据时,会对样本数据进行重发,保证DataReader能够收到数据;

Kind = BEST_EFFORT,如果当网络发生错误, DataWriter不会重新发送丢失的样本数据,这样,无法保证DataReader能够收到数据;

如果在DataWriter上应用此QoS策略,设置Kind = RELIABLE,这样保证了DataWriter发布的数据都能被DataReader收到。

LIFESPAN (生命周期)

参数定义:

该QoS的作用是避免交付“过期”的数据,参数为时间duration,默认为无穷大,表示数据样本永远不会失效;如果duration设置为有限数值,同时发送方和接收方的时钟同步,通过在发送端的源时间戳添加定义的duration字段,这样接收方根据时间戳信息计算出数据是否已失效,如果失效了,可以直接删除数据。

以上是对DDS的介绍。总结起来,DDS更针对的是数据本身,去建立各种机制。DDS目前已经广泛应用于国防、民航、工业控制等领域,成为分布式实时系统中数据发布/订阅的标准解决方案。想了解更多关于DDS的内容,请持续关注我们呦!

DDS与RTPS的关系

在DDS规范中,有俩个描述标准的基本文档

  • DDS 规范 :DDS规范描述了用于分别是应用程序通信和集成的数据为中心的发布-订阅(DCPS)模型。该规范定义了应用程序接口(API)和通信语义(行为和服务质量),它们能够有效地将信息从信息生产者传递到匹配的消费者。DDS规范的目的可以概括为在正确的时间,将正确的信息高效、稳健地传递到正确的节点。
  • DDSI-RTPS :RTPS(Real Time Publish Subscribe Protocol)协议通过TCP/UDP等实现最大努力可靠的发布-订阅。该规范定义了 DDS 的互操作性协议,其目的和范围是确保基于不同供应商的 DDS 实现的应用程序可以互操作。

DDS本身是OMG维护的标准,具体有很多开源和商业产品实现了这个标准,比如FastRTPS、OpenDDS、OpenSplice DDS、Cyclone DDS等。

Last modification:December 27, 2023
如果觉得我的文章对你有用,请随意赞赏