技术新讯 > 电子通信装置的制造及其应用技术 > 一种分布式连通性检测方法与流程  >  正文

一种分布式连通性检测方法与流程

  • 国知局
  • 2024-08-02 14:03:20

本发明涉及一种分布式连通性检测方法,属于计算机设备的连通性检测。

背景技术:

1、在非实验环境下,用户需要检测连通性的设备有很多(摄像头、终端设备、服务器、交换机等),少则几百,多则上万。需要使用有限的硬件资源,在短时间内实现所有设备的连通性检测。并且需要支持硬件资源的按需横向扩展。在资源不足时,可以通过动态追加硬件资源的前提下,提升连通性检测的效率。

2、在用户实际环境中,往往会根据安全性要求,对设备进行子网划分。多个子网之间由安全设备通过预置策略进行有限制的互访。这种情况下,跨子网的计算机之间只能实现单点的通信。

3、在这种情况下,要进行连通性检测,通常需要确定检测设备所在子网,并开通该设备到其他子网设备的全部访问权限,才能实现连通性的检测。这是一项非常费时费力的工作。同时,在设备发生连通性异常时,很难判断是因为安全设备的影响,还是连通性本身的问题。

4、连通性检测,是用来检测网络中源端到目的端的网络是否可达的一种方法。

5、以下是一些常用的技术手段来进行连通性检测:

6、ping命令:这是最常用的连通性检测工具。ping通过发送icmp(internet controlmessage protocol)回声请求消息到目标设备,并等待其响应来检测网络的连通性。如果收到响应,则表示目标设备是可达的。

7、traceroute(或tracert):这个命令用于显示数据包从源主机到目标主机之间经过的路径。它发送一系列具有递增ttl(time to live)值的ip数据包,并记录每个跳点的响应,从而帮助识别网络中的潜在问题。

8、telnet:虽然telnet主要用于远程登录到设备,但它也可以用于检测设备的连通性。通过尝试建立到目标设备的telnet连接,可以验证设备是否在线并响应连接请求。

9、端口扫描:使用如nmap等工具进行端口扫描,可以检测目标设备上哪些端口是开放的,从而判断哪些服务是可用的。这有助于验证特定服务的连通性。

10、现有的连通性检测技术具有如下缺点:

11、1、需要通过命令触发。如ping、traceroute命令,需要在shell或命令行环境中,输入命令触发。如果需要程序触发,则需要初始化命令行运行环境。这样做本身也存在安全隐患。

12、2、每次执行,只能检测一个ip。批量检测需要使用多进程机制。上述的命令,在检测连通性时,不支持批量检测。例如ping命令,在检测特定ip地址的连通性时,通过如下命令实现:

13、ping 192.168.1.1

14、当连通性正常时,此命令会返回丢包率、网络延时等信息。当连通性异常时,此命令返回连通性异常原因,如超时、网路不可达等。

15、3、返回的结果非结构化,需要额外的算力对命令输出的文本进行解析。

16、上述命令主要服务于网络运维人员和系统运维人员,因此返回的信息,主要方便运维人员阅读,多采用描述性的文字形式进行表述。切不同语言(中、英文),不同操作系统返回的表述信息存在一定差异。

17、4、不利于调度。需要通过shell或批处理脚本的方式进行调度。

18、上述命令只有在运维人员将命令输入到终端时,才会执行。命令本身无任何调度计划配置、调度计划执行功能。若要实现调度执行,必须引入第三方调度工具(如计划任务、crontab等)。

19、5、策略性不足,检测效率低。

20、上述命令,针对所有目标设备连通性的检测,均采用同一方式,即调用的参数,不能进行灵活配置。在用户实际环境中,通常情况下,大多数设备的连通性都是通的,而不通的只是少数。这种情况下,如果一视同仁的定义检测发包数、超时时间,显然是不合理的。

21、另外对于分处于不同子网中,且访问受限于安全设备(如网闸)的设备,无法通过设置实现合理的连通性检测任务和策略的下发。

22、针对上述缺陷,提出本发明。

技术实现思路

1、本发明针对现有技术存在的不足,提供了一种分布式连通性检测方法,具体技术方案如下:

2、一种分布式连通性检测方法,通过一个连通性检测任务发布模块和若干个连通性检测执行任务模块来实现,包括以下步骤:

3、步骤1、连通性检测任务发布模块从数据源通过多种数据结构从数据源读取要检测连通性的ip地址配置信息;

4、步骤2、连通性检测任务发布模块从所有的分布式的连通性检测执行任务模块中读取配置信息,并按照其配置信息,生成连通性检测任务执行小组;

5、步骤3、连通性检测任务发布模块根据ip地址配置信息生成连通性检测计划;

6、步骤4、连通性检测任务发布模块根据连通性检测计划生成了连通性检测任务,根据连通性检测任务执行小组,得到满足执行条件的连通性检测执行任务模块的节点;

7、步骤5、连通性检测执行任务模块得到连通性检测任务后,使用环形动态双缓冲队列,将连通性检测任务放入检测任务执行的缓冲队列中;

8、步骤6、连通性检测执行任务模块从环形动态双缓冲队列中提取要执行的连通性检测任务,通过icmp协议执行连通性检测;将连通性检测划分为两个级别:

9、级别1:快速检测,对于任何要检测连通性的ip,发出两个icmp数据包,分析其是否可达、是否超时未响应;当icmp数据包可达,并未出现超时的情况下,认为该ip地址连通性正常;

10、级别2:慢速检测,对于“存疑”状态的ip地址进行慢速检测;检测方式为:每隔2秒发出5个icmp数据包,连发三次;若三次平均丢包率高于50%,或者出现50%以上超时未响应的情况,则判定该ip地址连通性异常;

11、步骤7、当连通性检测执行任务模块对某个ip地址进行级别1的检测时,当连通性状态正常时,会向连通性检测任务发布模块上报“连通性检测正常”的信息;当连通性状态异常时,会向连通性检测任务发布模块上报“连通性检测存疑”的报告;

12、步骤8、连通性检测任务发布模块在收到“连通性检测存疑”的报告时,会将连通性检测存疑的ip配置信息,存入连通性检测存疑队列;

13、步骤9、连通性检测执行任务模块的节点收到“连通性检测存疑”的连通性检测任务后,将该连通性检测任务放入缓冲队列中;连通性检测执行任务模块定时从该缓冲队列读取连通性检测任务,使用级别2的连通性检测方式进行检测;

14、步骤10、若对于应用级别2的连通性检测方式,发现连通性仍然异常,则连通性检测执行任务模块向连通性检测任务发布模块上报“连通性检测异常”的信息。

15、更进一步的改进,在步骤1中,ip地址配置信息包括被检测设备的ip地址、预置的检测时间范围、预置的检测时间间隔、该设备是否禁ping。

16、更进一步的改进,在步骤2中,连通性检测任务发布模块从连通性检测执行任务模块获取的配置信息包括黑名单子网地址、黑名单子网掩码、白名单子网地址、白名单子网掩码。

17、更进一步的改进,在步骤4中,若符合条件的节点有多个,根据环式调度的方式,下发连通性检测任务到特定的连通性检测执行任务模块的节点。

18、更进一步的改进,在步骤8中,所述连通性检测存疑队列同样基于环形动态双缓冲队列实现,连通性检测任务发布模块会定时从该连通性检测存疑队列中拿取“连通性检测存疑”的ip地址信息,生成连通性检测任务,下发到满足条件的连通性检测执行任务模块的节点。

19、更进一步的改进,在步骤2中,执行小组的划分采用动态子网拆分技术进行划分。

20、更进一步的改进,所述环式调度的方法包括以下步骤:

21、步骤s1、计算所有子网的并集子网,即最大子网;算法如下:

22、步骤s11、读取第一个子网的起始地址,终止地址;

23、步骤s12、再读取第二个子网的起始地址,终止地址;

24、步骤s13、比较第一个子网的起始地址和第二个子网的起始地址,取最小的地址,作为最小起始地址;

25、步骤s14、比较第一个子网的终止地址和第二个子网的终止地址,取最大的地址,作为最大终止地址;

26、步骤s15、按照步骤s11-步骤s14,遍历所有子网,即得到最大子网;

27、步骤s2、针对所有白名单子网,在最大子网中进行区间标记;算法如下:

28、步骤s21、读取第一个子网的起始地址,终止地址,保存到区间表中;

29、步骤s22、读取第二个子网的起始地址,终止地址;检查区间表中的所有区间信息,若第二个子网的区间包含于区间表中的现有区间,则对现有区间进行拆分,拆分为包含第二个子网的区间和不包含第二个子网的区间,并存入区间表,同时将不包含第二个子网的区间只指向该区间原有子网,包含第二个子网的区间同时指向该区间原有子网和第二个子网;

30、若第二个子网的区间不包含于区间表中的任意现有区间,但与某区间有交集;则将第二个子网的区间进行拆分,属于交集的区间按照“子网区间包含于现有区间”的算法进行计算,不属于交集的区间保存到区间表中,指向第二个子网;

31、若第二个子网的区间不包含于区间表中的任意现有区间,且与任何区间都没有交集,则直接存入区间表,并指向第二个子网;

32、依照上面步骤s21、步骤s22遍历所有子网信息,定位所有区间;

33、步骤s3、针对所有黑名单子网,按照最大子网取补集进行区间标记,即得到“非黑名单”的子网区间,然后作为白名单按照步骤s2的算法进行计算;

34、经过上述算法拆分,会得到若干个子网区间,每一个区间指向一个或多个子网配置信息;使用数组保存映射与特定区间的连通性检测执行任务模块的节点id;同时提供一个指针,指向当前使用的连通性检测执行任务模块的节点id;当下次进行相同子网的某ip的连通性检测任务下发时,下移该指针,得到下一个可用的连通性检测执行任务模块的节点id;若指针已指向数组的最后一个元素,则让指针重新指向数组的第一个元素。

35、更进一步的改进,所述环形动态双缓冲队列的算法包括以下步骤:

36、步骤p1、构建双缓冲队列

37、步骤p11、初始化两个队列,第一个为等待队列,第二个队列为执行队列;

38、步骤p12、当有连通性检测任务到达时,将其放入等待队列;

39、步骤p13、启动一个定时器,每隔100毫秒检测依次执行队列,当执行队列为空,则将等待队列中所有元素拿出,放入执行队列;

40、步骤p14、启动一个定时器,每隔10毫秒检测执行队列,每次从中拿出一个连通性检测任务并执行;

41、步骤p2、构建环形双缓冲队列

42、步骤p21、构建一个数组,数组中的每一个元素是一个双缓冲队列;

43、步骤p22、创建一个指针,该指针指向当前要放入双缓冲队列的索引号;

44、步骤p23、当要向环形双缓冲队列放入连通性检测任务时,先下移指针,此时定位到下一个环形双缓冲队列,向该环形双缓冲队列放入连通性检测任务;若指针已指向数组最后一个元素,让指针重新指向数组中第一个元素。

45、更进一步的改进,所述连通性检测任务被下发到连通性检测执行任务模块后,连通性检测执行任务模块进行连通性的检测,并得到检测结果;连通性检测任务发布模块在获取该检测结果后,会将该检测结果保存到指定数据源中,按照json的数据格式进行保存。

46、本发明的有益效果:

47、1、本发明通过纯软件的技术手段实现了一套分布式的、可调度的、可动态平衡资源的、可配置策略的、可存储结构化数据的、提供程序接口的分布式连通性检测方法。

48、2、本发明通过动态子网拆分技术+环式调度技术、环形动态双缓冲队列、连通性检测的分级检测方式和结构化数据存储的数据格式实现:

49、1)、通过程序、接口和配置触发连通性检测;

50、2)、支持对设备批量进行连通性检测;

51、3)、连通性检测结果为结构化数据,可存储于数据库中,便于程序处理;

52、4)、支持分布式连通性检测,便于平衡资源和调度;

53、5)、设计了一套灵活的连通性检测策略,将设备连通性状态分为正常、存疑、不通三种类别采取不同策略进行检测。

54、采用分级检测方式,可以有效提高检测的效率。通常情况下,被检测的ip地址的连通性,其状态都是通的。这是第一级检测。对于不通的ip,需要反复确认其是不是真的不通了,所以被过滤出来进行二级检测。这样可以大幅提升检测效率。

55、3、与现有技术相比,本发明采用分布式调度检测的方式,解决了连通性检测效率低的问题,以及由安全设备限制互访的多个子网的连通性检测问题。

本文地址:https://www.jishuxx.com/zhuanli/20240801/241556.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。