- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 【FastDDS源码剖析】HelloWorld UDP抓包详解
前面两篇文章介绍了PDPSimple和EDPSimple,本文将通过抓包分析FastDDS发现的整个过程,以及报文中的一些关键字段,从而对发现有个更深的认识。工作中遇到fastdds的问题可以通过抓包文件来分析哪些包不正常。本文测试用的时一个简单的环境,包的种类看不全。不过不重要,先理解大框,然后每次修改Qos的时候可以抓包看看体现在哪个字段上,对端回复有哪些变化,慢慢熟悉FastDDS网络包,有什么疑问也可以给我留言,大家一起探讨。
2024-06-11 10:00:00 394 1
原创 【FastDDS源码剖析】EDP/EDPListener/EDPSimple
前一篇文章介绍了PDP(Participant Discovery Phase ),Participant发现之后需要EDP。EDP的代码看起来比较绕,我们分一下几个方面介绍EDP。一是要做什么,二是为了达到这个目的需要发送什么,三是具体如何实现的。
2024-06-10 07:50:02 219
原创 【FastDDS源码剖析】PDP/PDPListener/PDPSimple
我们用三篇文章来介绍FastDDS的Simple Discovery机制。发现分为两个阶段,一是Participant Discovery Phase (PDP),同一个DomainID下的DomainParticipants 相互发现,二是Endpoint Discovery Phase (EDP),DomainParticipants之间交换DataWriters 和 DataReaders的信息,从而使DataWriters 和 DataReaders相互匹配。
2024-05-25 10:00:00 202
原创 【FastDDS源码剖析】Well Known Ports
FastDDS使用的端口默认情况下是通过计算得来的,组播端口使用计算出的端口号,单播端口如果被占用,会在默认端口号开始的一定范围内找到一个未使用的端口作为单播端口。在介绍DDS发现机制之前,我们需要先来了解一下常用的UDP端口号是如何计算的。
2024-03-25 10:00:00 396
原创 【FastDDS源码剖析】消息收发流程
本文将介绍FastDDS从Writer创建到Reader接收的大致流程,将前面分享的类全部联系起来。首先会对FastDDS架构(官方文档中有详细的描述)做一个简单的介绍,然后结合类图介绍各个类在消息收发中的作用。
2024-03-24 17:50:07 519 8
原创 【FastDDS源码剖析】StatefulWriter
本文将对StatefulWriter源码进行分析。FastDDS通信时都离不开Reader和Writer,StatefulWriter是支持重传的writer,Qos配置为reliable时使用。它负责管理与DataReader之间的通信。StatefulWriter的设计和实现直接影响着系统的性能和可靠性,同进程、跨进程、跨主机消息需要copy几次,序列化几次,发送几次?通过深入分析FastDDS框架中StatefulWriter的源码,我们将探索其背后的实现原理。
2024-01-22 23:24:55 707
原创 【FastDDS源码剖析】StatefulReader
本文将对StatefulReader源码进行分析。FastDDS通信时都离不开Reader和Writer,StatefulReader是支持重传的reader,Qos配置为reliable时使用。它负责接收和处理来自DataWriter的数据,并管理与DataWriter之间的通信。StatefulReader的设计和实现直接影响着系统的性能和可靠性。通过深入分析FastDDS框架中StatefulReader的源码,我们将探索其背后的实现原理、关键算法和关键代码段的作用。
2024-01-21 18:28:41 337
原创 【FastDDS源码剖析】Transport
Fast DDS是一个强大的开源实时通信框架,旨在支持高性能和可靠的数据传输。作为Fast DDS的核心组件之一,传输层在实现可靠的端到端通信方面起着关键作用。Fast DDS传输层采用了先进的算法和优化技术,并支持多种传输协议,如TCP、UDP和共享内存。本文主要研究UDPv4Transport,即使是使用UDPv4Transport,进程内实际上是同步调用,如果支持DataSharing,进程间也是可以使用shared memory通信。
2024-01-20 10:00:00 396
原创 【FastDDS源码剖析】LocatorSelector
LocatorSelectorSender 是 Fast DDS 中的一个关键组件,它负责选择和管理用于通信的 Locator。在 Fast DDS 中,LocatorSelectorSender 扮演着重要的角色,帮助选择适当的 Locator,确保数据的可靠传输和有效通信。本文的目标是深入研究 LocatorSelector 的源码,探索其内部实现。通过对源码的分析,我们将揭示 LocatorSelector 背后的原理和技术,为实时通信系统的开发和优化提供有价值的见解。
2024-01-19 10:00:00 279 1
原创 【FastDDS源码剖析】Messages
本文将对Fast DDS中的messages模块进行分析,包括CDRMessage_t,RTPSMessageGroup,RTPSMessageCreator,RTPSGapBuilder,通过深入研究这几个类的源码实现,我们能将更好地理解消息具体是什么时候的,消息中包含了哪些信息。本文的末尾会简单分析一个网络抓包,这样可以对RTPS的消息结构有个清楚的认识,以后详解每条报文含义的时候会更加容易理解。
2024-01-18 10:00:00 288 4
原创 【FastDDS源码剖析】Flowcontrol
Flowcontrol(流量控制)是一种在实时通信系统中用于管理数据传输速率的机制。FastDDS中它用来限制发送方的数据流量,以避免数据丢失、拥塞和资源浪费。由于受到带宽和网络情况的限制,大量的数据发送可能会导致丢包严重,丢包又会导致重传,恶化网络环境。流量控制的目标是优化系统的性能和资源利用,确保数据的可靠传输和及时处理。它可以减少网络拥塞、降低数据丢失的风险,并在高负载情况下保持系统的稳定性。Fast DDS提供了多种流量控制的机制和策略,以适应不同的应用场景,实现最佳的数据传输效果。
2024-01-17 10:00:00 451
原创 【FastDDS源码剖析】History
本文将对Fast DDS开源代码中的History进行源码分析,并探讨History在Fast DDS内部的关键作用。History是Fast DDS中一种重要的数据存储和管理机制,它通过有效地组织和存储数据,使得应用程序能够根据需求查询和使用之前的数据。本文将深入研究Fast DDS中History的实现细节和关键功能。
2024-01-16 10:00:00 240 1
原创 【FastDDS源码剖析】CacheChange_t
CacheChange_t在Fast DDS中扮演着重要的角色,并且对于实时通信和数据发布-订阅模型的实现具有关键意义。它是Fast DDS中用于管理数据变化的关键组件之一,用于表示在数据发布者和订阅者之间交换的数据单元,并在DDS中的发布-订阅过程中起到关键的作用。CacheChange_t结构中并没有包含实际的数据,而是包含了数据的指针(参考),以及与数据相关的元数据,如时间戳、序列号等。通过CacheChange_t,Fast DDS能够有效地跟踪和传输数据更新,以保证可靠的通信和数据一致性。
2024-01-15 10:00:00 306 1
原创 【FastDDS源码剖析】SerializedPayload_t
本文将对Fast DDS中的SerializedPayload_t进行分析,它在Fast DDS中用于高效地封装和传递数据。在实时通信中,数据的传输是必不可少的环节。SerializedPayload_t作为Fast DDS中的一个关键结构,承担着将数据在发布者和订阅者之间进行高效传输的任务。它包含了数据的二进制表示以及与数据相关的元信息,如数据大小、序列号等。SerializedPayload_t的设计和实现保证了数据的可靠性和高效性。
2024-01-14 14:41:37 144 1
原创 【FastDDS源码剖析】Payload Pool
在本文中,我将对Fast DDS中的Payload Pool源码进行分析,它是Fast DDS中一种重要的资源管理机制,用于高效地管理和重用数据的存储空间。在实时通信中,数据的传输和处理效率对于系统的性能至关重要。Payload Pool为Fast DDS提供了一种优化策略,用于管理数据负载的内存分配和释放。通过预先分配一定数量的数据缓冲区,并将其存储在Payload Pool中,Fast DDS能够在数据传输过程中高效地重用这些缓冲区,避免频繁的内存分配和释放操作,从而显著提高系统的性能和效率。
2024-01-14 13:18:39 942
原创 【FastDDS源码剖析】Timer
本文将对Fast DDS定时器源码进行分析。定时器是实时通信系统中一项重要的功能,用于管理和触发各种时间相关的任务和事件。在实时通信中,时间敏感性是至关重要的。定时器作为一种关键机制,为Fast DDS提供了在特定时间点执行任务的能力。它可以用于处理数据发送和接收的超时、重传机制、心跳检测、资源管理等多种场景。通过合理使用定时器,Fast DDS能够确保数据的及时传输、资源的高效利用以及系统的稳定性。本文将深入研究Fast DDS定时器的实现细节和关键功能。
2024-01-12 22:08:00 291
原创 【FastDDS源码剖析】GUID_T
本文将对Fast DDS中的GUID_T进行分析,并探讨GUID_T在Fast DDS内部的关键作用。GUID_T是Fast DDS中一种重要的标识符类型,用于唯一标识实体。在分布式系统中,实体的唯一标识对于数据交换和通信的正确性至关重要。GUID_T作为全局唯一标识符,在Fast DDS中扮演着关键的角色。它用于标识DDS实体(如主题、订阅者、发布者)。GUID_T的生成和管理机制保证了在Fast DDS中的实体的唯一性。本文将深入研究Fast DDS中GUID_T的实现细节和关键功能。
2024-01-12 21:40:32 352
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人