本发明属于通信技术领域,涉及一种时延容忍网络备份路径方法,具体涉及一种时延容忍网络最小代价备份路径方法。
背景技术:
在移动自组织网络、无线传感器网络、星际网络等网络中,会经常出现网络断开的现象,导致端到端的路径难以建立,这类网络被称为时延容忍网络。
在时延容忍网络中,数据需要进行多跳传输,即数据包由源节点发送,通过中间节点转发到目的节点。该路径的某一链路或节点发生故障时,可以进行本地路由修复或者重新寻找路由,这将导致路由收敛慢,还可能在路由收敛过程中出现丢包,无法实现数据的可靠传输。
当链路或节点发生故障时,为了可以快速的找到替代路由,目前大多做法是在每对源节点到目的节点间维护两条路径,一条为主路径,另一条为备份路径。当主路径的某一链路或节点发生故障,导致主路径中断时,可以快速切换到备份路径,减少路由收敛时间,提高数据传输的可靠性。
现阶段选择备份路径的方法是在选定主路径后,再选择一条与主路径没有相交链路或相交节点的路径作为备份路径,但某些关键链路或节点会同时出现在多条路径中,导致源、目的节点间根本找不到备份路径,无法实现数据的可靠传输,所以在网络中不能完全找到节点不相交或链路不相交的两条路径,只能尽可能地降低关键链路或节点的重复率。因此,如何保证源、目的节点间存在备份路径,并且主路径和备份路径间拥有最少的重复链路,以提高数据传输的可靠性,是本领域的研究热点。
为了提高数据传输的可靠性,例如,申请公布号为cn108600096a,名称为“一种基于快速重路由的域内节能路由方法”的专利申请,公开了一种基于快速重路由的域内节能路由方法。该方法将网络中的所有链路存储在链表l中,从链表l中取出任意一条链路,向该链路加入至少一个网络中的节点,形成链路的一条备份路径,若备份路径中不包含该链路,则将备份路径放入链表lc中,统计lc中每条链路出现的次数,按照次数进行升序排序,并放在链表m中,然后遍历链表m,关闭次数最低的链路,但其对应的备份路径中的链路不能关闭,直至遍历到最后一条链路为止。该方法为每一链路准备了一条备份路径,保证了当该链路出现故障时,可以通过备份路径继续为网络提供服务的能力,但该方法为了节能关闭了出现次数低的链路,相当于关闭了一些链路的备份路径,降低了整个网络数据传输的可靠性;并且该方法是对每一链路逐一备份的,在选取备份路径时,该备份路径不一定是全局最优的路径。
技术实现要素:
本发明的目的在于克服上述现有技术的不足,提供了一种时延容忍网络最小代价备份路径方法,用于解决现有技术中存在的数据传输可靠性较低的技术问题。
为实现上述目的,本发明采取的技术方案包括如下步骤:
(1)构建时延容忍网络拓扑结构的快照图g:
(1a)根据时延容忍网络拓扑结构中每条链路的通断信息,以每次链路断开的时刻作为时间节点,将时间范围0~t划分为k个连续时间段t1,t2,…,ti,…,tk,使得网络拓扑在各时段内保持不变,其中,ti表示第i个时间段,1≤i≤k;
(1b)根据各时段网络拓扑中每条链路的通断信息,构建时延容忍网络拓扑结构的快照图g(t)={g1,g2,...,gi,...,gk},其中,gi表示ti对应的快照子图,gi={ni,ei,ci},ni表示节点集合,
(2)搜索每个快照子图gi中源节点si到目的节点di间的最小代价主路径:
(2a)根据业务传输需求,设ni中的源节点为si、目的节点为di,si∈ni,di∈ni;
(2b)采用dijkstra算法,根据每个快照子图gi,以代价最小为优化目标,计算源节点si到目的节点di间的最短路径,并将该最短路径作为ti时段内源节点si与目的节点di间的最小代价主路径;
(3)对每个快照子图gi中的链路代价进行更新:
(3a)利用深度优先搜索方法,在每个快照子图gi中搜索源节点si与目的节点di间的最大代价无环路径,将路径代价值作为代价惩罚值pi;
(3b)将快照子图gi中主路径经过的
(3c)判断链表mi中的元素是否包含
(4)搜索每个快照子图gi′中源节点si到目的节点di间的最小代价备份路径:
采用dijkstra算法,根据每个更新后的快照子图gi′,以代价最小为优化目标,计算源节点si到目的节点di间的最短路径,并将该最短路径作为ti时段内源节点si到目的节点di间的最小代价备份路径。
本发明与现有技术相比有如下优点:
1.本发明以代价最小为优化目标,利用dijkstra算法计算出源节点到目的节点间两条最短路径,并且对主路径包含的各链路增加代价惩罚值,使两条路径间有最少的重复链路,克服了找不到备份路径,或主路径与备份路径间有过多重复链路的问题,与现有技术相比,有效提高了数据传输的可靠性。
2.本发明通过链路代价来表征使用每条链路所需要付出的代价,以代价最小为优化目标,克服了盲目选择备份路径,而未考虑该路径是否为最佳路径的问题,与现有技术相比,本发明选出的备份路径一定是除主路径外,全局最优的路径。
附图说明
图1是本发明的实现流程图;
图2是本发明实施例中使用的时延容忍网络快照图;
图3是本发明实施例中初始化链路代价后的快照图;
图4是本发明实施例中链路代价更新后的快照图。
具体实施方式
以下结合附图和具体实施例,对本发明作进一步详细描述:
参照图1,本发明包括如下步骤:
步骤1)构建时延容忍网络拓扑结构的快照图g:
步骤1a)根据时延容忍网络拓扑结构中每条链路的通断信息,以每次链路断开的时刻作为时间节点,将时间范围0~t划分为k个连续时间段t1,t2,…,ti,…,tk,使得网络拓扑在各时段内保持不变,其中,ti表示第i个时间段,1≤i≤k;
在本实施例中,将0~t划分为3个连续时间段t1、t2、t3。
步骤1b)根据各时段网络拓扑中每条链路的通断信息,构建时延容忍网络拓扑结构的快照图g(t)={g1,g2,...,gi,...,gk},其中,gi表示ti对应的快照子图,gi={ni,ei,ci},ni表示节点集合,
本实施例中,构造了如图2所示的快照图g(t)={g1,g2,g3},在快照子图g1中,节点集合n1={a1,b1,d1,f1,h1,i1},链路集合
步骤2)搜索每个快照子图gi中源节点si到目的节点di间的最小代价主路径:
(2a)根据业务传输需求,设ni中的源节点为si、目的节点为di,si∈ni,di∈ni;
本实施例中,选取节点集合ni中的ai为源节点,ii为目的节点,表明在各时段为同一源、目的节点计算最小代价主路经和最小代价备份路径,其中i=1,2,3。
(2b)采用dijkstra算法,根据每个快照子图gi,以代价最小为优化目标,计算源节点si到目的节点di间的最短路径,并将该最短路径作为ti时段内源节点si与目的节点di间的最小代价主路径,即源节点si与目的节点di间的工作路径;
在本实施例中,分别计算三个快照子图中源节点ai到目的节点ii间的最短路径:
在如图3(a)所示的快照子图g1中,源节点a1到目的节点i1间的最短路径为a1-b1-d1-i1、a1-f1-d1-i1和a1-f1-h1-i1,在其中随机选择一条路径作为主路径,本实施例中选择a1-f1-d1-i1为主路径;
在如图3(b)所示的快照子图g2中,源节点a2到目的节点i2间的最短路径为a2-b2-d2-i2、a2-b2-h2-i2和a2-f2-h2-i2,在其中随机选择一条路径作为主路径,本实施例中选择a2-b2-d2-i2为主路径;
在如图3(c)所示的快照子图g3中,源节点a3到目的节点i3间的最短路径为a3-b3-d3-i3、和a3-b3-h3-i3,在其中随机选择一条路径作为主路径,本实施例中选择a3-b3-d3-i3为主路径。
步骤3)对每个快照子图gi中的链路代价进行更新:
步骤3a)利用深度优先搜索方法,在每个快照子图gi中搜索源节点si与目的节点di间的最大代价无环路径,将路径代价值作为代价惩罚值pi;
步骤3a1)以源节点si作为起始节点,目的节点di作为终止节点,从si出发,先访问si的第一个邻接点,然后访问第一个邻接点的第一个邻接点,直至访问到di为止,并将访问过的节点放入链表
在本实施例中,对于快照子图g1,将每轮访问过程中访问的节点依次放入链表
对于快照子图g2,将每轮访问过程中访问的节点依次放入链表
对于快照子图g3,将每轮访问过程中访问的节点依次放入链表
步骤3a2)每个链表
本实施例,快照子图g1中共有4条无环路径,分别为a1-b1-d1-i1、a1-b1-d1-f1-h1-i1、a1-f1-d1-i1和a1-f1-h1-i1,每条路径经过链路的链路代价之和分别为3、5、3、3,即每条路径的代价值分别为3、5、3、3,所以最大代价无环路径为a1-b1-d1-f1-h1-i1;
快照子图g2中共有4条无环路径,分别为a2-b2-d2-i2、a2-b2-h2-i2、a2-f2-h2-i2和a2-f2-h2-b2-d2-i2,每条路径经过链路的链路代价之和分别为3、3、3、5,即每条路径的代价值分别为3、3、3、5,所以最大代价无环路径为a2-f2-h2-b2-d2-i2;
快照子图g3中共有4条无环路径,分别为a3-b3-d3-i3和a3-b3-h3-i3,每条路径经过链路的链路代价之和分别为3、3,即每条路径的代价值分别为3、3,两个链表长度相同,所以最大代价无环路径为a3-b3-d3-i3或a3-b3-h3-i3。
步骤3a3)将每个快照子图gi中最大代价无环路径的路径代价值作为代价惩罚值pi;
在本实施例的快照子图g1中,最大代价无环路径为a1-b1-d1-f1-h1-i1,该路径代价值为5,即代价惩罚值p1为5;在快照子图g2中,最大代价无环路径为a2-f2-h2-b2-d2-i2,该路径代价值为5,即代价惩罚值p2为5;在快照子图g3中,最大代价无环路径为a3-b3-d3-i3或a3-b3-h3-i3,路径代价值均为3,即代价惩罚值p3为3。
步骤3b)将快照子图gi中主路径经过的
本实施例中,对于快照子图g1,主路经为a1->f1->d1->i1,则链表m1为
步骤3c)判断链表mi中的元素是否包含
对主路径包含的各链路增加代价惩罚值,是为了尽量避免在备份路径构建时对已选链路进行重复选择,主路径与备份路径有过多的重复链路,会降低数据传输的可靠性;
本实施例中,链表m1包含
步骤4)搜索每个快照子图gi′中源节点si到目的节点di间的最小代价备份路径:
采用dijkstra算法,根据每个更新后的快照子图gi′,以代价最小为优化目标,计算源节点si到目的节点di间的最短路径,并将该最短路径作为ti时段内源节点si到目的节点di间的最小代价备份路径;
当主路径上的链路发生故障时,可快速切换到备份路径,同样,以代价最小为优化目标,选择备份路径,克服了现有技术中盲目选择备份路径的问题;
在更新后的快照子图g1′中,源节点a1到目的节点i1间的最短路径为a1-b1-d1-i1和a1-f1-h1-i1,在其中随机选择一条路径作为备份路径即可;
在更新后快照子图g2中,源节点a2到目的节点i2间的最短路径为a2-f2-h2-i2,则选择a2-f2-h2-i2作为备份路径;
在更新后快照子图g3中,源节点a3到目的节点i3间的最短路径为a3-b3-h3-i3,则选择a3-b3-h3-i3作为备份路径。