掌桥专利:专业的专利平台
掌桥专利
首页

一种精准控制DDS通信中RTPS连接速率和连接数量的方法

文献发布时间:2024-04-18 19:59:31


一种精准控制DDS通信中RTPS连接速率和连接数量的方法

技术领域

本发明涉及DDS通信技术,尤其涉及一种精准控制DDS通信中RTPS连接速率和连接数量的方法。

背景技术

DDS通信各RTPS参与者是通过向网络中发送data(p)报文来通告自身的存在的,而网络中的其他RTPS参与者在收到data(p)报文之后,即会对发送端进行回复,之后两端开始建立RTPS连接,以便建立双方的数据通信链路,实现最终的数据通信。

RTPS的PUB端和SUB端在接收到网络上的data(p)报文后,即会向报文的发送端回复data(p)报文,之后两边开始建立连接,当网络上有多个PUB端和SUB端同时启动时,PUB端或SUB端由于瞬时需要同多个SUB端或PUB端建立连接,会导致本端的内存瞬时冲高,对于资源受限型的设备,很可能会导致设备的宕机,而影响整个业务的开展。

发明内容

为解决现有技术中存在的不足,本发明的目的在于,提供一种精准控制DDS通信中RTPS连接速率和连接数量的方法。

为实现本发明的目的,本发明所采用的技术方案是:

一种精准控制DDS通信中RTPS连接速率和连接数量的方法,包括步骤:

(1)为用户提供对端接入速率和对端接入个数两个配置,并分配当前正在建连的对端个数的存储空间和已经建连的对端个数的存储空间两个存储空间;

(2)RTPS参与者向网络中发送data(p)报文通告自身存在,网络中的其他RTPS参与者收到data(p)报文之后,首先判断是否超过允许的对端接入个数,没有超过则在两个存储空间中寻找是否已存在该data(p)所代表的参与者;若均不存在该data(p)所代表的参与者,则判断是否超过允许的对端接入速率,没有超过则将此data(p)记录到当前正在建连的对端个数的存储空间中,此参与者进入与本地参与者的建立连接流程;

(3)当线程调度到RTPS协议栈下一个运行周期时,RTPS协议栈检测当前与本地参与者正在建立连接的所有参与者的连接流程,将连接建立完成的参与者从当前正在建连的对端个数的存储空间中删除。

进一步地,还包括步骤(4):当RTPS参与者接收到网络的data(p[UD])报文时,则在当前正在建连的对端个数的存储空间和已经建连的对端个数的存储空间中寻找并删除data(p[UD])所代表的参与者。

进一步地,步骤(1)中,对端接入速率,同时允许的处于连接状态的最大对端个数,以max_connecting_num表示;对端接入个数,系统允许的最大的对端个数,以max_connected_num表示;

当前正在建连的对端个数的存储空间,用于控制对端接入速率,以connecting_space表示;已经建连的对端个数的存储空间,用于控制系统允许的最大对端个数,以connected_space表示。

进一步地,步骤(2)中,如果未超过对端接入个数max_connected_num,则在已经建连的对端个数的存储空间connected_space中查找此data(p)的参与者是否是已建连的对端;如果connected_space中存在data(p)所代表的参与者,则结束data(p)处理流程;

如果connected_space中不存在data(p)所代表的参与者,再在当前正在建连的对端个数的存储空间connecting_space中查找此data(p)所代表的参与者;如果connecting_space中存在data(p)所代表的参与者,则结束data(p)处理流程;

如果connecting_space中不存在data(p)所代表的参与者,则判断当前正在连接的对端个数,是否超过了对端接入速率max_connecting_num。

进一步地,步骤(2)中,如果当前正在连接个数未超过max_connecting_num,则将此data(p)记录到存储当前正在建连的对端个数的存储空间connecting_space中,同时增加当前正在连接的对端个数,此参与者进入与本地参与者的建立连接流程。

进一步地,步骤(3)中,如果某一个参与者已经完成连接建立操作,则将此参与者信息从connecting_space信息中移除,并将正在连接的对端个数减少,同时将此参与者信息存入到connected_space中,之后将已经连接的对端个数增加,否则,如果某一个参与者还正在建立连接操作中,则继续遍历下一个参与者。

进一步地,步骤(4)中,在已经建连的对端个数的存储空间connected_space中查找data(p[UD])所代表的参与者,如果在connected_space中查找到对应的参与者,则将此参与者从connected_space中移除,并将已经建立连接的对端个数减少,否则在connecting_space中查找data(p[UD])对应的参与者,如果在connecting_space中查找到对应的参与者,则将此参与者从connecting_space中移除,并将正在建立连接的对端个数减少,如果在connecting_space中未查找到对应的参与者,则不处理。

本发明的有益效果在于,与现有技术相比,本发明方法可以有效的减少瞬时网络上出现大量的data(p)报文时,对设备内存造成的冲击,极大的减小大量data(p)报文对系统正常运行的威胁,特别是在整个业务启动过程中或是应对网络攻击时,同时还允许用户根据系统自身的资源和业务特点,灵活地对与系统进行建连的对端个数进行控制,在很大程度上减少网络攻击报文带来的危害,提高系统的可靠性和稳定性。

附图说明

图1是RTPS协商过程示意图;

图2是本发明所述的精准控制DDS通信中RTPS连接速率和连接数量的方法流程图。

具体实施方式

下面结合附图和实施例对本发明的技术方案作进一步的说明。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本申请的保护范围。

如图1,RTPS(Real-Time Publish-Subscribe,基于发布-订阅模式的实时通信)协商过程包括步骤:

(1)RTPS通告阶段:PUB端(发布者)创建参与者后,发送data(p)报文通告P1操作;SUB端(订阅者)创建参与者后,同样发送data(p)报文通告S1操作;

(2)writer通告阶段:PUB端向SUB端发送heartbeat消息P2;SUB端收到heartbeat请求后,查询本地是否已经存储了heartbeat中通告的writer信息,根据情况返回acknack消息S2;PUB端解析SUB端的acknack消息,根据消息中的信息向SUB端发送data(w)报文,并再次发送heartbeat消息P3,再次等待SUB端的确认;SUB收到data(w)信息后,在本地存储writer信息,并对heartbeat请求回复acknack消息S3,如果SUB端完成PUB端所有writer信息的存储,writer通告完成;

(3)reader通告阶段:SUB端向PUB端发送heartbeat消息S4;PUB端收到heartbeat请求后,查询本地是否已经存储了heartbeat中通告的reader信息,根据情况返回acknack消息P4;SUB端解析PUB端的acknack消息,根据消息中的信息向PUB端发送data(r)报文,并再次发送heartbeat消息S5,再次等待PUB端的确认;PUB端收到data(r)信息后,在本地存储reader信息,并对heartbeat请求回复acknack消息P5,如果PUB端完成SUB端所有reader信息的存储,reader通告完成;

(4)pmd通告阶段:pmd是参与者自动保活的消息通道,通告方式为双向的,即PUB端向SUB端通告,同时SUB端也向PUB端通告,并且双向之间独立存在,没有任何影响。以PUB端向SUB端通告为例,PUB端向SUB端发送heartbeat消息P6,SUB端收到heartbeat消息后,查询本地是否已经收到过对应的序列号信息,根据情况回复给PUB端acknack消息S6,PUB端解析SUB端的acknack消息,之后根据消息中的信息向SUB端发送data(m)报文和heartbeat消息P7,SUB端收到消息后,更新PUB端的参与者在本地的保活信息,并向PUB端回复acknack消息S7,至此PUB端pmd通告完成,SUB端的pmd通告与此类似。

(5)user writer确认阶段:当PUB端和SUB端完成上述的各个通告阶段后,PUB端的user writer向SUB端发送heartbeat请求P10,以最后确认user writer和user reader是否匹配成功并进行通信,SUB端收到heartbeat请求后,查询本地writer的存储情况,并返回acknack消息S10;如果返回的是ack消息,说明匹配成功,PUB端可发送数据给SUB端,如果返回的是nack,说明匹配失败,PUB端和SUB端不能通信。

本发明所述的精准控制DDS通信中RTPS连接速率和连接数量的方法,就是基于上述协商过程实现的。

本发明提供一种对瞬时连接的速度和系统稳定时整体连接个数进行配置的方法,使客户能够根据实际的业务场景及硬件的实际情况,方便地对系统同一时间可支持的最大建连个数,以及系统稳定时可支持的最大对端个数进行设置,从而有效的保护硬件、系统的正常运行。

如图2所示,本发明所述的精准控制DDS通信中RTPS连接速率和连接数量的方法,具体方案如下:

(1)为便于用户进行控制,系统对外提供两个配置,并分配两个存储空间;

两个配置包括:对端接入速率,即同时允许的处于连接状态的最大对端个数,后面以max_connecting_num表示;对端接入个数,即系统允许的最大的对端个数,后面以max_connected_num表示。

两个存储空间包括:当前正在建连的对端个数的存储空间,用于控制对端接入速率,后面以connecting_space表示;已经建连的对端个数的存储空间,用于控制系统允许的最大对端个数,后面以connected_space表示。

(2)RTPS参与者向网络中发送data(p)报文通告自身存在,网络中的其他RTPS参与者收到data(p)报文之后,首先判断是否超过最大对端接入个数,没有超过则在两个存储空间中寻找是否已存在该data(p)所代表的参与者;若均不存在该data(p)所代表的参与者,则判断是否超过最大对端接入速率,没有超过则将此data(p)记录到当前正在建连的对端个数的存储空间connecting_space中,此参与者进入与本地参与者的建立连接流程;

当RTPS参与者收到网络上的data(p)通告消息时,首先判断当前正在连接的对端个数与已经连接的对端个数之和是否已经超过对端接入个数max_connected_num;如果超过了对端接入个数max_connected_num,则不允许与data(p)所代表的参与者建立连接,直接返回建立连接失败;如果未超过对端接入个数max_connected_num,则在已经建连的对端个数的存储空间connected_space中查找此data(p)的参与者是否是已建连的对端。

如果connected_space中存在data(p)所代表的参与者,则结束data(p)处理流程;如果connected_space中不存在data(p)所代表的参与者,再在当前正在建连的对端个数的存储空间connecting_space中查找此data(p)所代表的参与者;如果connecting_space中存在data(p)所代表的参与者,则结束data(p)处理流程;如果connecting_space中不存在data(p)所代表的参与者,则判断当前正在连接的对端个数,是否超过了对端接入速率max_connecting_num。

如果当前正在连接个数超过了max_connecting_num,则结束data(p)处理流程;如果当前正在连接个数未超过max_connecting_num,则将此data(p)记录到存储当前正在建连的对端个数的存储空间connecting_space中,同时增加当前正在连接的对端个数,此参与者进入与本地参与者的建立连接流程。

如果在建立连接的过程中出现双方校验失败或是匹配失败的情况,则将此data(p)代表的参与者从connecting_space中移除。

(3)当线程调度到RTPS协议栈下一个运行周期时,RTPS协议栈开始检测当前与本地参与者正在建立连接的所有参与者的连接流程,将连接建立完成的参与者从存储当前正在建连的对端个数的存储空间connecting_space中删除;

如果某一个参与者在connecting_space中未查询到其相关信息,则删除此参与者,并将正在连接的对端个数减少,否则,如果某一个参与者已经完成图1中P10和S10的操作,即连接建立完成,则将此参与者信息从connecting_space信息中移除,并将正在连接的对端个数减少,同时将此参与者信息存入到connected_space中,之后将已经连接的对端个数增加,否则,如果某一个参与者还未完成图1中P10和S10的操作,即还正在建立连接操作中,则继续遍历下一个参与者。针对每一个参与者重复上述步骤,直到所有参与者都处理完成。

当RTPS参与者再次收到网络上的data(p)报文时,继续上述步骤(2)-(3)的操作。

(4)当RTPS参与者接收到网络上的data(p[UD])解除连接报文时,则在当前正在建连的对端个数的存储空间和已经建连的对端个数的存储空间中寻找并删除data(p[UD])所代表的参与者;

首先在已经建连的对端个数的存储空间connected_space中查找data(p[UD])所代表的参与者,如果在connected_space中查找到对应的参与者,则将此参与者从connected_space中移除,并将已经建立连接的对端个数减少,否则在connecting_space中查找data(p[UD])对应的参与者,如果在connecting_space中查找到对应的参与者,则将此参与者从connecting_space中移除,并将正在建立连接的对端个数减少,如果在connecting_space中未查找到对应的参与者,则不处理。

本发明的有益效果在于,与现有技术相比,本发明方法可以有效的减少瞬时网络上出现大量的data(p)报文时,对设备内存造成的冲击,极大的减小大量data(p)报文对系统正常运行的威胁,特别是在整个业务启动过程中或是应对网络攻击时,同时还允许用户根据系统自身的资源和业务特点,灵活地对与系统进行建连的对端个数进行控制,在很大程度上减少网络攻击报文带来的危害,提高系统的可靠性和稳定性。

本发明申请人结合说明书附图对本发明的实施示例做了详细的说明与描述,但是本领域技术人员应该理解,以上实施示例仅为本发明的优选实施方案,详尽的说明只是为了帮助读者更好地理解本发明精神,而并非对本发明保护范围的限制,相反,任何基于本发明的发明精神所作的任何改进或修饰都应当落在本发明的保护范围之内。

相关技术
  • 一种室外陡坡电缆沟道分段式组合盖板
  • 一种电缆故障保护装置及其保护方法
  • 一种具有室外电缆保护装置的生活楼
  • FPSO生活楼优化电缆托架
技术分类

06120116516023