网络拓朴图中环路节点的搜索方法及系统与流程

文档序号:15682978发布日期:2018-10-16 20:46阅读:324来源:国知局
本发明涉及网络拓扑中的环路搜索领域,具体涉及一种网络拓朴图中环路节点的搜索方法及系统。
背景技术
:电信传输网本身就是一个的网络拓朴图,网络拓朴图中的每个节点代表1个网元,网络拓扑图中的光纤代表网元之间连接的链路。随着电信业务的快速发展,电信传输网络也随之不断扩容,网络拓朴变得越来越复杂,其中必然会出现众多的环形链路,为了避免环形链路造成的网络资源浪费,电信业务管理员会充分利用这些环形链路配置带保护的业务,提高电信业务的安全性和服务质量。网络拓朴图中的环路节点条数(1条环路节点中包括至少3个节点,1条环路节点对应1条环路拓扑),是分析网络成环率和网络健壮性的一个重要因素,目前,一般通过人工肉眼搜索的方式,在网络拓扑图中搜索环路节点条数,人工搜索环路节点条数的工作效率较低,而且容易出现误差,搜索精度较低。技术实现要素:针对现有技术中存在的缺陷,本发明解决的技术问题为:如何提高在网络拓朴图中搜索环路节点条数的工作效率和搜索精度。为达到以上目的,本发明提供的网络拓朴图中环路节点的搜索方法,包括以下步骤:s1:根据需要进行环路搜索的传输网络,创建对应的网络拓扑图;根据网络拓扑图创建对应的邻接表,转到s2;s2:将邻接表中将每个节点的访问状态设置为未访问状态,转到s3;s3:判断邻接表中是否存在未访问状态的节点,若是,选取任意1个未访问状态的节点,在选取的节点所属的连通子拓朴中搜索所有环路节点,重新执行s3;否则转到s4;s4:获取所有环路节点。在上述方案的基础上,s1中所述网络拓扑图中包括代表网元的节点、以及节点之间连接的链路信息,每个节点存在0条、1条或者多条与其他节点连接的链路;所述邻接表中包括网络拓扑图的每个节点及其邻接信息,每个节点的邻接信息包括该节点的所有邻接节点;当存在节点x分别通过m条链路与节点y连接时,节点y的邻接信息中包括m个x节点。在上述方案的基础上,s2中所述将邻接表中将每个节点的访问状态设置为未访问状态之前,还包括以下步骤:在邻接表中删除邻接节点数量为0和1的节点。在上述方案的基础上,s2中所述将邻接表中将每个节点的访问状态设置为未访问状态之前,还包括以下步骤:在邻接表的邻接信息中,获取存在2个以上的相同邻接节点o的节点p,将节点p和o作为1条环路节点;在节点p的邻接信息中,仅保留1个节点o,将其余节点o进行删除。在上述方案的基础上,将s3中选取的节点定义为入口节点node当,将node当的前一节点定义为node前,选取节点后进行首次搜索时,node当与node前相同;在此基础上,s3中所述在选取的节点所属的连通子拓朴中搜索所有环路节点的流程包括:s301:将node当的访问状态设置为已访问状态,将node当加入环路节点队列的队尾,转到s302;s302:在node当的邻接信息中,判断node当的每个邻接节点是否均已访问,若是,转到s307,否则任意选择1个邻接节点node邻,转到s303;s303:判断node邻是否与node前相同,若是,转到s302;否则转到s304;s304:判断node邻是否已经在搜索其他节点时被访问、且存在于环路节点队列中,若是,在环路节点队列中,将node邻到队尾的节点形成1条环路节点,转到s302;否则转到s305;s305:判断node邻是否存在于之前已经形成的环路节点中、且与node当邻接,若是,转到s302;否则转到s306;s306:将node当作为node前,将node邻作为node当后,转到s301;s307:判断node当是否为入口节点,若是,确认当前连通子拓扑搜索完成,重新执行s3;否则将node前作为node当,将环路节点队列的队尾节点弹出后,将环路节点队列的倒数第二个节点作为node前,转到s302。本发明提供的网络拓朴图中环路节点的搜索系统,包括节点搜索配置模块、节点状态设置模块、环路节点搜索模块和环路节点获取模块;节点搜索配置模块用于:根据需要进行环路搜索的传输网络,创建对应的网络拓扑图;根据网络拓扑图创建对应的邻接表,向节点状态设置模块发送节点状态设置信号;节点状态设置模块用于:收到节点状态设置信号后,将邻接表中将每个节点的访问状态设置为未访问状态,向环路节点搜索模块发送环路节点搜索信号;环路节点搜索模块用于:收到环路节点搜索信号后,判断邻接表中是否存在未访问状态的节点,若是,选取任意1个未访问状态的节点,在选取的节点所属的连通子拓朴中搜索所有环路节点,重新执开始工作;否则向环路节点获取模块发送环路节点获取信号;环路节点获取模块用于:收到环路节点获取信号后,获取所有环路节点。在上述方案的基础上,所述节点搜索配置模块创建的网络拓扑图中包括代表网元的节点、以及节点之间连接的链路信息,每个节点存在0条、1条或者多条与其他节点连接的链路;所述节点搜索配置模块创建的邻接表中包括网络拓扑图的每个节点及其邻接信息,每个节点的邻接信息包括该节点的所有邻接节点;当存在节点x分别通过m条链路与节点y连接时,节点y的邻接信息中包括m个x节点。在上述方案的基础上,所述节点状态设置模块将邻接表中将每个节点的访问状态设置为未访问状态之前,还用于:在邻接表中删除邻接节点数量为0和1的节点。在上述方案的基础上,所述节点状态设置模块将邻接表中将每个节点的访问状态设置为未访问状态之前,还用于:在邻接表的邻接信息中,获取存在2个以上的相同邻接节点o的节点p,将节点p和o作为1条环路节点;在节点p的邻接信息中,仅保留1个节点o,将其余节点o进行删除。在上述方案的基础上,将所述环路节点搜索模块选取的节点定义为入口节点node当,将node当的前一节点定义为node前,选取节点后进行首次搜索时,node当与node前相同;在此基础上,环路节点搜索模块在选取的节点所属的连通子拓朴中搜索所有环路节点的流程包括:步骤01:将node当的访问状态设置为已访问状态,将node当加入环路节点队列的队尾,转到步骤02;步骤02:在node当的邻接信息中,判断node当的每个邻接节点是否均已访问,若是,转到步骤07,否则任意选择1个邻接节点node邻,转到步骤03;步骤03:判断node邻是否与node前相同,若是,转到步骤02;否则转到步骤04;步骤04:判断node邻是否已经在搜索其他节点时被访问、且存在于环路节点队列中,若是,在环路节点队列中,将node邻到队尾的节点形成1条环路节点,转到步骤02;否则转到步骤05;步骤05:判断node邻是否存在于之前已经形成的环路节点中、且与node当邻接,若是,转到步骤02;否则转到步骤06;步骤06:将node当作为node前,将node邻作为node当后,转到步骤01;步骤07:判断node当是否为入口节点,若是,确认当前连通子拓扑搜索完成,重新执行步骤;否则将node前作为node当,将环路节点队列的队尾节点弹出后,将环路节点队列的倒数第二个节点作为node前,转到步骤02。与现有技术相比,本发明的优点在于:(1)参见本发明s1至s3可知,本发明根据网络拓扑图和邻接表,结合本发明研发的搜索过程,能够自动而准确的搜索出网络拓朴图中的环路节点条数。因此与现有技术中的人工搜索相比,本发明显著提高了搜索环路节点的工作效率和搜索精度,非常适于推广。(2)参见本发明s2可知,本发明在搜索之前,会先将邻接表中的孤立节点和相邻节点间多余的链路进行裁剪,进而进一步提高了后续的搜索环路节点的工作效率。附图说明图1为本发明实施例中网络拓朴图中环路节点的搜索方法的流程图;图2为本发明实施例中的网络拓扑示意图;图3为本发明实施例中进行裁剪后的网络拓扑示意图;图4为本发明实施例中s3的流程图。具体实施方式以下结合附图及实施例对本发明作进一步详细说明。参见图1所示,本发明实施例中的网络拓朴图中环路节点的搜索方法,包括以下步骤:s1:根据需要进行环路搜索的传输网络,创建对应的网络拓扑图;根据网络拓扑图创建对应的邻接表(一种常见的网络拓朴图的数据存储结构),转到s2。s2:将邻接表中将每个节点的访问状态设置为未访问状态,节点的访问状态,可定义为一种数据结构,以节点号为关键字,以是否访问标志为值,例如在节点后增加“未访问”标识,转到s3。s3:判断邻接表中是否存在未访问状态的节点,若是,选取任意1个未访问状态的节点,在选取的节点所属的连通子拓朴中搜索所有环路节点,每条环路节点对应1条环路拓扑,重新执行s3;否则代表邻接表中每个节点所属的连通子拓朴均搜索完成,直接转到s4。s4:获取所有环路节点,将所有环路节点形成成环表,以便统一进行展示。下面通过六个实施例说明本发明的方法。实施例一:参见图2所示,s1中的网络拓扑图中包括代表网元的节点(以网元id进行标识)、以及节点之间连接的链路信息(以连线进行标识),每个节点可能存在0条、1条或者多条与其他节点连接的链路。实施例二:邻接表中包括网络拓扑图的每个节点及其邻接信息,每个节点的邻接信息包括该节点的所有邻接节点;当存在节点x分别通过m条链路与节点y连接时,节点y的邻接信息中包括m个x节点,转到s2。实施例三:参见图3所示,s2中将邻接表中将每个节点的访问状态设置为未访问状态之前,还包括以下步骤:对邻接表进行裁剪,具体为:在邻接表中删除邻接节点数量为0和1的节点(为0代表该节点不与任何节点连接,为1代表该节点仅与1个节点连接),该节点可定义为孤立节点,因为孤立节点必然无法与其他节点形成环路,所以将孤立节点删除能够减少邻接表中的节点数量,进而提高搜索效率。要注意的是,若1个节点i有2个邻接节点a和c,节点a只有1个邻接节点i,此时首次删除节点a;删除节点a之后,节点i会只剩1个邻接节点c,此时需要再删除节点i,其他节点以此类推。实施例四:参加图3所示,s2中将邻接表中将每个节点的访问状态设置为未访问状态之前,还包括以下步骤:对邻接表进行可与实施例三并行或先后进行的裁剪,具体为:获取邻接信息中存在2个以上的相同邻接节点o的节点p(即通过2条以上的链路互联的2个节点),节点p必然会与节点o形成环路拓扑,将节点p和o作为1条环路节点并保存。在节点p的邻接信息中,仅保留1个节点o,其余节点o进行删除;在节点o的邻接信息中,仅保留1个节点p,将其余节点p进行删除。因为节点p和o实际上只有一条通路,多条链路的存在对于其他环路的搜索有干扰的副作用,所以将多个链路进行精减仅保留一条,能够在不会影响环路节点条数的基础上,提高后续的搜索效率。实施例五:s3中将选取的节点定义为入口节点node当,将node当的前一节点定义为node前,选取节点后进行首次搜索时,node当与node前相同,参见图4所示,s3中在选取的节点所属的连通子拓朴中搜索所有环路节点的流程为:s301:将node当的访问状态设置为已访问状态,将node当加入环路节点队列的队尾(即压入顺序结构的访问路径栈,环路节点队列初始为空),转到s302。s302:在node当的邻接信息中,判断node当的每个邻接节点是否均已访问,若是,转到s307,否则任意选择1个邻接节点node邻,转到s303。s303:判断node邻是否与node前相同,若是,则证明访问方向反了,转到s302;否则转到s304。s304:判断node邻是否已经在搜索其他节点时被访问、且存在于环路节点队列中,若是,将环路节点队列中从node邻到队尾的节点形成1条环路节点并保存,转到s302;否则转到s305。s305:判断node邻是否存在于之前已经形成的环路节点中、且与node当邻接(即在环路节点中是node当的邻接节点,当node邻是环的最后一个节点,node当是环的第一个节点这种情况,也视为邻接),若是,则此路径已搜索过,无需再次搜索,转到s302;否则转到s306。s306:将node当作为node前,将node邻作为node当后,转到s301。s307:判断node当是否为入口节点,若是,则证明当前连通子拓扑搜索完成,重新执行s3(进行另一个连通子拓扑搜索);否则将node前作为node当,将环路节点队列的队尾节点弹出后,将环路节点队列的倒数第二个节点作为node前,转到s302。实施例六:以电信传输网的网元id为a~k为例,对本发明的网络拓朴图中环路节点的搜索方法进行说明:s1:创建网络拓扑图,参见图2所示,图中包括以网元id为a~k标识的节点、以及节点连接的链路信息(以连线进行标识);参见表1所示,根据网络拓扑图创建对应的邻接表。表1、初始邻接表s2:参见表2所示,在邻接表中删除邻接节点数量为0的节点k,以及为1的节点a、h、i(节点i在a删除后变成1个邻接节点)。表2、裁减掉孤立节点后的邻接表节点邻接信息bc、d、fcb、e、idb、eec、d、jfb、g、ggf、f、j、jje、g、g获取邻接信息中存在2个以上的相同邻接节点的节点f、g和j,在节点f的邻接信息中,仅保留1个节点g,在节点g的邻接信息中,仅保留1个节点f和j,在节点j的邻接信息中,仅保留1个节点g,修改后的邻接表参见表3和图3所示。表3、精减掉多条链路的邻接表参见表4所示,将邻接表中将每个节点的访问状态设置为未访问状态。表4、初始化节点访问状态表节点访问状态b未访问c未访问d未访问e未访问f未访问g未访问j未访问s3:选取邻接表中未访问状态的节点,对选取的节点属的连通子拓朴中搜索所有环路节点,定义选取的节点为node当,选取节点的前一节点定义为node前(即输入参数为node当和node前2个参数),首次使用时,node当与node前相同。参见图2和表5所示,node当为节点b(即节点b为入口节点)时,搜索流程为:1、将node当和node前均设置为节点b,将节点b设置为已访问状态、并加入环路节点队列的队尾(对应s301,此时队列中只有1个节点b)。2、在领接表中获取节点b的邻接信息,选择节点b的邻接节点c进行访问,邻接节点c定义为node邻(对应s302的否分支)。3、节点c与节点b不同(对应s303的否分支)、且之前没有被访问,也没有存在环路节点队列中(对应s304的否分支),之前也未形成过环路节点(对应s305的否分支),因此将节点b作为node前,将节点c作为node当后(对应s306),将节点c设置为已访问状态、并加入环路节点队列的队尾(对应s301,此时队列依次排列的节点为b和c)。4、在领接表中获取节点c的邻接信息,选择节点c的邻接节点b进行访问,节点b与node前相同(对应s303的是分支,即访问方向反了),回溯到上级选择节点c的其他邻接节点。5、选择c的邻接节点e进行访问;与3同理,将节点c作为node前,将节点e作为node当后,将节点e设置为已访问状态、并加入环路节点队列的队尾(此时队列依次排列的节点为b、c和e)。6、在领接表中获取节点e的邻接信息,选择节点e的邻接节点d进行访问;与3同理,将节点e作为node前,将节点d作为node当后,将节点d设置为已访问状态、并加入环路节点队列的队尾(此时队列依次排列的节点为b、c、e和d)。7、在领接表中获取节点d的邻接信息,选择节点d的邻接节点b进行访问,由于节点b已经在步骤1被访问过、且存在于环路节点队列中(对应s304的是分支),因此环路节点队列中从节点b到节点d必定形成环形拓扑。8、节点d的所有邻接节点均被访问(对应s302的是分支)、且节点d不是入口节点b(对应s307的否分支),将节点e作为node当,将环路节点队列的队尾节点d弹出后,将环路节点队列的倒数第二个节点c作为node前(此时队列依次排列的节点为b、c和e)。9、在领接表中获取节点e的邻接信息,选择节点e的邻接节点j进行访问;与3同理,将节点e作为node前,将节点j作为node当后,将节点j设置为已访问状态、并加入环路节点队列的队尾(此时队列依次排列的节点为b、c、e和j)。10、在领接表中获取节点j的邻接信息,选择节点j的邻接节点g进行访问;与3同理,将节点j为node前,将节点g作为node当后,将节点g设置为已访问状态、并加入环路节点队列的队尾(此时队列依次排列的节点为b、c、e、j和g)。11、在领接表中获取节点g的邻接信息,选择节点g的邻接节点f进行访问;与3同理,将节点g为node前,将节点f作为node当后,将节点f设置为已访问状态、并加入环路节点队列的队尾(此时队列依次排列的节点为b、c、e、j、g和f)。12、在领接表中获取节点f的邻接信息,选择节点f的邻接节点b进行访问,由于节点b已经在步骤1被访问过、且存在于环路节点队列中(对应s304的是分支),因此环路节点队列中从节点b到节点f必定形成环形拓扑。按照上述方式顺序访问节点g、j、e和c后,环路节点队列的队尾节点重复弹出,node前变成了节点b(此时环路节点队列依次排列的节点仅为b);节点b的所有邻接节点均被访问(对应s302的是分支)、且节点b是入口节点(对应s307的是分支),则当前连通子拓朴搜索完成。表5、搜索过程状态数据表经过上述搜索过程后更新的节点访问状态表参见表6所示。表6、访问状态表节点访问状态b已访问c已访问d已访问e已访问f已访问g已访问j已访问s4:领接表中所有节点均被访问后,参见表7所示,将所有环路节点形成成环表,以便统一进行展示。表7、最终成环表环编号环路节点环1f-g环2g-j环3b-c-e-d环4b-c-e-j-g-f环5b-d-e-j-g-f本发明实施例中的网络拓朴图中环路节点的搜索系统,包括节点搜索配置模块、节点状态设置模块、环路节点搜索模块和环路节点获取模块。节点搜索配置模块用于:根据需要进行环路搜索的传输网络,创建对应的网络拓扑图;根据网络拓扑图创建对应的邻接表,向节点状态设置模块发送节点状态设置信号。网络拓扑图中包括代表网元的节点、以及节点之间连接的链路信息,每个节点存在0条、1条或者多条与其他节点连接的链路;所述节点搜索配置模块创建的邻接表中包括网络拓扑图的每个节点及其邻接信息,每个节点的邻接信息包括该节点的所有邻接节点;当存在节点x分别通过m条链路与节点y连接时,节点y的邻接信息中包括m个x节点。节点状态设置模块用于:收到节点状态设置信号后,在邻接表中删除邻接节点数量为0和1的节点;在邻接表的邻接信息中,获取存在2个以上的相同邻接节点o的节点p,将节点p和o作为1条环路节点;在节点p的邻接信息中,仅保留1个节点o,将其余节点o进行删除。将邻接表中将每个节点的访问状态设置为未访问状态,向环路节点搜索模块发送环路节点搜索信号。环路节点搜索模块用于:收到环路节点搜索信号后,判断邻接表中是否存在未访问状态的节点,若是,选取任意1个未访问状态的节点,在选取的节点所属的连通子拓朴中搜索所有环路节点,重新执开始工作;否则向环路节点获取模块发送环路节点获取信号。将环路节点搜索模块选取的节点定义为入口节点node当,将node当的前一节点定义为node前,选取节点后进行首次搜索时,node当与node前相同;在此基础上,环路节点搜索模块在选取的节点所属的连通子拓朴中搜索所有环路节点的流程包括:步骤01:将node当的访问状态设置为已访问状态,将node当加入环路节点队列的队尾,转到步骤02;步骤02:在node当的邻接信息中,判断node当的每个邻接节点是否均已访问,若是,转到步骤07,否则任意选择1个邻接节点node邻,转到步骤03;步骤03:判断node邻是否与node前相同,若是,转到步骤02;否则转到步骤04;步骤04:判断node邻是否已经在搜索其他节点时被访问、且存在于环路节点队列中,若是,在环路节点队列中,将node邻到队尾的节点形成1条环路节点,转到步骤02;否则转到步骤05;步骤05:判断node邻是否存在于之前已经形成的环路节点中、且与node当邻接,若是,转到步骤02;否则转到步骤06;步骤06:将node当作为node前,将node邻作为node当后,转到步骤01;步骤07:判断node当是否为入口节点,若是,确认当前连通子拓扑搜索完成,重新执行步骤;否则将node前作为node当,将环路节点队列的队尾节点弹出后,将环路节点队列的倒数第二个节点作为node前,转到步骤02。环路节点获取模块用于:收到环路节点获取信号后,获取所有环路节点。需要说明的是:本发明实施例提供的系统在进行模块间通信时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。进一步,本发明不局限于上述实施方式,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1