data-distribution-service - DDS/RTPS如何保证Qos?
问题描述
DDS/RTPS 是一种点对点数据共享系统。它没有任何集中控制/调度。它实际上如何保证与网络相关的 Qos,即传输优先级和延迟预算?
解决方案
对于那些特定于网络的 QoS,DDS 确实严重依赖网络提供的服务。
传输优先级 QoS的具体行为不受 DDS 标准的规定。它被认为是对中间件的“提示”。典型的实现可能会将其映射到 IP 标头中的 ToS 或 (DS) 字段,但这不是必需的。[考虑 DDS 可以映射到可能支持或不支持数据优先级的各种底层传输。] 这种 QoS 的效果在很大程度上取决于底层网络技术及其配置。DDS 对行为不做任何保证。
延迟预算 QoS也是 DDS 实现的一个提示。例如,较大的延迟预算可能允许中间件出于优化目的做出调度决策(将多个数据消息聚合到一个网络数据报中);而小预算可能会迫使中间件发送多个小型网络数据包。DDS 的实现可能会尝试在数据传输的整体调度中考虑网络传输延迟;但如果没有确定性传输,则无法保证不会超出延迟预算。
基于这个问题,您可能会对截止日期 QoS感兴趣。它本质上要求每个数据实例以一定的频率更新,并提供一种机制,如果不满足这个要求,就会提醒 Reader 和 Writer。它不“保证”数据优先级或延迟,但它提供了一种机制来了解是否不满足所需的数据更新周期。
此外,将时间敏感网络 (TSN) 视为 DDS 的传输可能会很有趣。最近在通过 TSN 标准化 DDS 方面进行了一些工作。这需要专门的硬件和详细的配置,但可能会满足您的要求。[我倾向于相信标准以太网网络的精心架构对于绝大多数应用程序来说是有效且足够的;所以,只要确保你能很好地处理你的要求。]
推荐阅读
- visual-studio-code - 如何在 Visual Studio Code 中显示 python 笔记本的行号
- c# - SignalR 客户端 (Xamarin) 发送给特定用户时不会收到消息
- ios - 如何使用从控制器中提取的项目初始化惰性 UISegmentedControl?
- python-3.x - 为什么 venv 不自动运行?
- postgresql - 如何在 Dotnet Core 中使用 EF 从 Postgresql 函数获取返回
- python - Cloud Functions 的“完成状态:'crash'”是否正常?
- python - 在 Pandas 中删除包含某些字符串列表的行
- bash - 在这种情况下,为什么 Gnuplot 的 -e 标志在 bash 脚本中不起作用?
- python - 如何在 python CSV 中编写表情符号?
- html - 您可以在一个表单上同时运行 JavaScript 和 jQuery 脚本吗?