基于非线性退火的软件定义网络多约束路由方法与流程

文档序号:12294383阅读:236来源:国知局
基于非线性退火的软件定义网络多约束路由方法与流程
本发明属于通信技术领域,更进一步涉及软件定义网络(SoftwareDefinedNetworkSDN)通信技术领域中的一种基于非线性退火的软件定义网络多约束路由方法。本发明可用于在软件定义网络中接受多参数约束的路由查找,为软件定义网络提供保证QoS的路由服务,有效提升网络的复杂路由查找性能。

背景技术:
软件定义网络中,实现了控制组件与转发组件的分离。当网络需要转发数据时,控制组件负责计算路由,并将转发表配置到转发组件中。转发组件简单的按照转发表进行转发,而不参与路由计算。服务质量(QualityofServiceQoS)路由是一种基于网络的可用资源和业务流的QoS要求来选择路径的路由机制,即包含多个QoS参数的动态多约束路由协议。软件定义网络作为一种新兴的网络,为人们提供了多种网络服务,不同的网络服务有不同的参数约束,而单一的传统网络路由协议无法满足不同服务对不同约束参数的需求,且现有的QoS路由机制无法直接应用于软件定义网络,如何在软件定义网络中提供满足多约束的QoS路由成为一个重要的技术问题。北京邮电大学申请的专利“实现多约束QoS路由选择的优化方法及装置”(申请号201110129535.5公开号CN102158417)公开了一种实现多约束路由选择的优化方法。该方法利用建立路由模型,构造惩罚函数,并运用自然选择和变异操作对初始路径进行迭代求解来实现多约束条件下的最优路由选择。该方法存在的不足是,求解的时间复杂度完全依赖于初始路径的选择,运用自然选择和变异操作使得时间复杂度存在不确定性,无法在实际的大型互联网络中部署使用。西安电子科技大学申请的专利“用于支持端到端时延保证的动态资源分配系统及分配方法”(申请号201010013728X授权号CN101729430B)公开了一种用于支持端到端时延保证的动态资源分配方法。该方法主要解决现有区分服务网络QoS保证能力低下及网络资源利用不充分的问题。该系统的资源管理器根据边界路由器发送的业务请求信息中的时延上限要求,结合网络负载信息中的链路负载度和各段链路端口处各PHB的时延估计值,计算端到端传输路径各段链路上的时延分配值,在相关的核心路由器上,根据本地的可用资源状态,通过时延分配值和带宽要求的匹配,动态选择最佳PHB进行资源配置和分组转发。该方法存在的不足是,首先,约束性参数只有一个,为典型的单约束最短路径问题,不适用于参数约束有多个的复杂多约束路径问题;其次,该方法主要为传统网络和分组交换网络提供QoS保证,无法直接移植到软件定义网络中。

技术实现要素:
本发明的目的在于克服上述现有技术的不足,提出一种基于非线性退火的软件定义网络多约束路由方法。本发明依据软件定义网络中控制组件的本地性,充分考虑各个子网之间的连通性和相对独立性,运用扩散法,在获取全网虚拟拓扑图的情况下,基于非线性退火标记法,求解出满足多个约束要求的路径,以满足不同服务对不同约束的要求,更好的利用网络资源,提供更好的网络传输性能。实现本发明目的的具体思路是:首先利用扩散法,向外扩散各个子网的虚拟链路信息,使每个控制组件得到全网虚拟拓扑图;然后利用正向线性标记法、反向线性标记法和花费量测量法对全网虚拟拓扑图进行简化以缩小检索空间;最后运用非线性退火标记法对初始路径进行修正,跳出局部最优解,直到找到满足约束的路径。为实现上述目的,本发明的步骤包括如下:(1)获取全网虚拟拓扑图:(1a)转发组件将网络中转发组件的变更信息通知控制组件,控制组件得到本地子网内的实际网络拓扑图;(1b)隐藏本地子网内的节点,保留边界节点,采用最短路径查找法,查找两两边界节点之间的最小跳数路径,将所有的最小跳数路径作为虚拟链路;(1c)本地子网的边界节点向本地子网外发送查询分组信息,根据本地子网外返回的应答分组信息,得到相邻子网边界节点信息和该相邻子网边界节点所属的控制组件信息;(1d)本地子网的边界节点向本地子网外发送测量分组信息,相邻子网边界节点返回应答分组信息,本地子网的边界节点根据该应答分组信息得到相邻子网间连接链路的参数信息;(1e)创建链路状态分组表;(1f)使用扩散法,控制组件发布链路状态分组信息,得到全网虚拟拓扑图;(2)确定源边界节点和目的边界节点:(2a)源节点的控制组件向目的节点的控制组件发送信息,指明要到达的目的节点信息;(2b)目的节点的控制组件,采用最短路径查找法,计算从目的节点到本地子网所有边界节点之间的最小跳数路径,选择所有最小跳数路径中跳数最小的边界节点,返回给源节点的控制组件,作为目的边界节点;(2c)源节点的控制组件,采用最短路径查找法,计算从源节点到本地子网所有边界节点之间的最小跳数路径,选择所有最小跳数路径中跳数最小的边界节点,作为源边界节点;(3)线性标记:(3a)采用正向线性标记法,对全网虚拟拓扑图进行正向线性标记;(3b)采用反向线性标记法,对全网虚拟拓扑图进行反向线性标记;(4)处理节点:采用花费量测量法,对全网虚拟拓扑图中的节点进行节点处理;(5)判断全网虚拟拓扑图中所有节点是否都完成节点处理,若是,得到简化的全网虚拟拓扑图,执行步骤(6);否则,执行步骤(4);(6)正向线性标记:采用正向线性标记法,对简化的全网虚拟拓扑图进行正向线性标记;(7)反向非线性退火标记:将目的边界节点作为根节点root,采用非线性退火标记法,对简化的全网虚拟拓扑图进行反向非线性退火标记;(8)判断dk(s)≤ck是否成立,若是,源边界节点的控制组件得到路径;否则,执行步骤(9);其中,K表示约束参数的个数,K的取值为1,2...9,dk(s)表示根节点到源边界节点s之间使用非线性退火标记所求得的连接链路的第k个约束参数的值,ck表示源边界节点s到目的边界节点t之间连接链路需要满足的第k个约束参数的值;(9)按照下式更新温度:其中,t表示更新后简化的全网虚拟拓扑图的模拟温度值,t1表示更新前简化的全网虚拟拓扑图的模拟温度值,grad表示温度下降的梯度值;(10)正向非线性退火标记:将源边界节点作为根节点root,采用非线性退火标记法,对简化的全网虚拟拓扑图进行正向非线性退火标记;(11)判断dk(t)≤ck是否成立,若是,源边界节点的控制组件得到路径;否则,执行步骤(12);其中,K表示约束参数的个数,K的取值范围是1,2...9,dk(t)表示根节点到目的边界节点t之间使用非线性退火标记所求得的连接链路的第k个约束参数的值,ck表示源边界节点s到目的边界节点t之间连接链路需要满足的第k个约束参数的值;(12)按照下式更新温度和迭代次数:I=I1-1其中,t表示更新后简化的全网虚拟拓扑图的模拟温度值,t1表示更新前简化的全网虚拟拓扑图的模拟温度值,grad表示温度下降的梯度值,I表示更新后的迭代次数,I1表示更新前的迭代次数;(13)判断更新后的迭代次数I≤0是否成立,若是,执行步骤(14);否则,执行步骤(8);(14)查找失败,路由结束。本发明与现有技术相比具有以下优点:第一、本发明采用对本地子网内的实际网络拓扑图,构造虚拟链路,扩散获得全网虚拟拓扑图的方法,克服了现有技术中无法适应软件定义网络特有结构的问题,使得本发明具有可移植于软件定义网络的优点。第二、本发明采用非线性退火进行初始路径修正的方法,克服了现有技术中由于依赖初始路径的选取而造成的时间复杂度不确定性的问题,使得本发明具有时间复杂度可确定性,且时间复杂度满足工业化设计要求,可用于部署实际的大型互联网络的优点。附图说明图1是本发明的流程图;图2是实施例中的全网虚拟拓扑图;图3是实施例简化后的全网虚拟拓扑图。具体实施方式下面结合附图对本发明作进一步的详细描述。参照附图1,实现本发明的具体步骤如下。步骤1,获取全网虚拟拓扑图。转发组件将网络中转发组件的变更信息通知控制组件,控制组件得到本地子网内的实际网络拓扑图。隐藏本地子网内的节点,保留边界节点,采用最短路径查找法,查找两两边界节点之间的最小跳数路径,将所有的最小跳数路径作为虚拟链路。本地子网的边界节点向本地子网外发送hello分组信息,根据本地子网外返回的应答分组信息得到相邻子网边界节点和所属的控制组件。本地子网的边界节点向本地子网外发送echo分组,根据相邻子网边界节点返回的应答分组,测得相邻子网间连接链路的参数。创建链路状态分组表,分组表包括发送方标识、序列号、年龄和一个邻居列表;邻居列表中包括边界节点、边界节点之间的链路参数、相邻子网控制组件、相邻子网边界节点及相连链路的参数。设置发送标志和确认标志,标明要返回确认分组和转发当前分组的方向,使用扩散法,控制组件发布链路状态分组信息,得到全网虚拟拓扑图。经过上述的步骤1,得到全网虚拟拓扑图。步骤2,确定源边界节点和目的边界节点。源节点的控制组件向目的节点的控制组件发送信息,指明要到达的目的节点信息。目的节点的控制组件计算从目的节点到本地子网所有边界节点之间的最小跳数路径,选择所有最小跳数路径中跳数最小的边界节点,目的节点的控制组件将选择的边界节点返回给源节点的控制组件作为目的边界节点。源节点的控制组件,按照最小路径查找法,计算从源节点到本地子网所有边界节点之间的最小跳数路径,选择所有最小跳数路径中跳数最小的边界节点作为源边界节点。步骤3,线性标记。(3a)采用正向线性标记法,对全网虚拟拓扑图进行正向线性标记。将源边界节点s作为根节点root加入永久节点集,并将永久节点集中的根节点root设为工作节点,将与根节点root相邻的节点加入邻节点集NB。按照下式,计算邻节点集NB中的所有节点的暂时性标记:gk(u)=wk(root,u)πg(u)=root其中,g(u)表示邻节点集NB中的节点u的正向线性标记值,Σ表示求和操作,wk(root,u)表示从根节点root到邻节点集NB中的节点u之间的连接链路的第k个约束参数的值,K表示约束参数的个数,K的取值范围是1,2...9,ck表示路径要满足的第k个约束参数的值,gk(u)表示使用正向线性标记所求得的从根节点root到邻节点集NB中的节点u之间的连接链路的第k个约束参数的值,πg(u)表示使用正向线性标记所求得的从根节点root到节点u之间的连接链路中节点u的前驱结点。按照下式,计算全网虚拟拓扑图中除根节点root和邻节点集NB外的所有节点的暂时性标记:g(u)=∞其中,g(u)表示对节点u进行的正向线性标记值,∞表示无穷大。第一步,检查邻节点集NB中的所有暂时性标记节点,将其中标记g(u)最小的节点u加入永久节点集,并设为新工作节点。第二步,对与新工作节点u相邻的所有不属于永久节点集的节点,判断不等式是否成立,若是,则执行下一步;否则,按下式计算与新工作节点u相邻的所有不属于永久节点集的节点的暂时性标记:gk(v)=gk(u)+wk(u,v)πg(v)=u其中,g(v)表示对节点v进行的正向线性标记值,Σ表示求和操作,gk(u)表示从根节点root到节点u之间使用正向线性标记所求得的连接链路的第k个约束参数的值,K表示约束参数的个数,K的取值范围是1,2...9,wk(u,v)表示从节点u到节点v之间的连接链路的第k个约束参数的值,ck表示路径要满足的第k个约束参数的值,gk(v)表示从根节点root到节点v之间使用正向线性标记所求得的连接链路的第k个约束参数的值,πg(v)表示从根节点root到节点u之间使用正向线性标记所求得的连接链路中节点v的前驱结点。第三步,将新邻节点集NB变更为邻节点集NB,减去其中标记为永久节点的节点u,加上与新工作节点u相邻的所有不属于永久节点集的节点后得到的新集合。第四步,判断新邻节点集NB是否为空,当为空时,执行下一步;否则,返回执行第一步,正向线性标记结束。(3b)采用反向线性标记法,对全网虚拟拓扑图进行反向线性标记。将目的边界节点t作为根节点root加入永久节点集,并将永久节点集中的根节点root设为工作节点,将与根节点root相邻的节点加入邻节点集NB。按照下式,计算邻节点集NB中的所有节点的暂时性标记:rk(u)=wk(root,u)πr(u)=root其中,r(u)表示对节点u进行的反向线性标记值,Σ表示求和操作,wk(root,u)表示从根节点root到节点u之间的连接链路的第k个约束参数的值,ck表示路径要满足的第k个约束参数的值,K表示约束参数的个数,K的取值范围是1,2...9,rk(u)表示从根节点root到节点u之间使用反向线性标记所求得的连接链路的第k个约束参数的值,πr(u)表示从根节点root到节点u之间使用反向线性标记所求得的连接链路中节点u的前驱结点。按照下式,计算全网虚拟拓扑图中除根节点root和邻节点集NB外的所有节点的暂时性标记:r(u)=∞其中,r(u)表示对节点u进行的反向线性标记值,∞表示无穷大。第一步,检查邻节点集NB中的所有暂时性标记节点u,将其中标记r(u)最小的节点u加入永久节点集,并设为新工作节点。第二步,对与新工作节点u相邻的所有不属于永久节点集的节点,判断不等式是否成立,若是,则执行下一步;否则,按下式计算与新工作节点u相邻的所有不属于永久节点集的节点的暂时性标记:rk(v)=rk(u)+wk(u,v)πr(v)=u其中,r(v)表示对节点v进行的反向线性标记值,Σ表示求和操作,rk(u)表示从根节点root到节点u之间使用反向线性标记所求得的连接链路的第k个约束参数的值,K表示约束参数的个数,K的取值范围是1,2...9,wk(u,v)表示从节点u到节点v之间的连接链路的第k个约束参数的值,ck表示路径要满足的第k个约束参数的值,rk(v)表示从根节点root到节点v之间使用反向线性标记所求得的连接链路的第k个约束参数的值,πr(v)表示从根节点root到节点u之间使用反向线性标记所求得的连接链路中节点v的前驱结点。第三步,将新邻节点集NB变更为邻节点集NB,减去其中标记为永久节点的u,加上与新工作节点u相邻的所有不属于永久节点集的节点后得到的新集合。第四步,判断新邻节点集NB是否为空,当为空时,执行下一步;否则,返回执行第一步,反向线性标记结束。步骤4,处理节点。采用花费量测量法,对全网虚拟拓扑图中的节点进行处理。按照下式,计算节点的花费量:cost(u)=r(u)+g(u)其中,cost(u)表示节点u的花费量,r(u)表示节点u的反向线性标记值,g(u)表示节点u的正向线性标记值。判断cost(u)>k是否成立,若是,删除节点u和与该节点有关的链路;否则,保留节点u。其中,cost(u)表示节点u的花费量,k表示约束的个数。步骤5,判断全网虚拟拓扑图中所有节点是否都完成节点处理,若是,得到简化的全网虚拟拓扑图,执行下一步;否则,执行步骤4。步骤6,正向线性标记。采用与步骤同步骤(3a)相同的正向线性标记法,对简化的全网虚拟拓扑图进行正向线性标记。步骤7,反向非线性退火标记。将目的边界节点t作为根节点root,采用非线性退火标记法,对简化的全网虚拟拓扑图进行反向非线性退火标记。将根节点root加入永久节点集,并将永久节点集中的根节点root设为工作节点,将与根节点root相邻的节点加入邻节点集NB。按照下式,计算邻节点集NB中的所有节点的暂时性标记:dk(u)=wk(root,u)πd(u)=root其中,d(u)表示对节点u进行的退火标记值,max表示求最大值操作,wk(root,u)表示从根节点root到节点u之间的连接链路的第k个约束参数的值,K表示约束参数的个数,K的取值范围是1,2...9,ck表示路径要满足的第k个约束参数的值,gk(u)表示正向标记值,dk(u)表示从根节点root到节点u之间使用退火标记所求得的连接链路的第k个约束参数的值,πd(u)表示从根节点root到节点u之间使用退火标记所求得的连接链路中节点u的前驱结点。按照下式,计算全网虚拟拓扑图中除根节点root和邻节点集NB外的所有节点的暂时性标记:d(u)=∞其中,d(u)表示对节点u进行的退火标记值,∞表示无穷大。第一步,检查邻节点集NB中的所有暂时性标记节点u,采用退火选点法,选择节点u加入永久节点集,并将永久节点集中的节点u设为新工作节点。首先,按照下式,计算邻节点集NB中的所有暂时性标记节点的暂时能量标记值:并将最小的暂时能量标记值Z(u)赋值给最小能量值g*。其中,Z(u)表示节点u的暂时能量标记值,max表示求最大值操作,dk(u)表示从根节点root到节点u之间使用退火标记所求得的连接链路的第k个约束参数的值,gk(u)表示从根节点root到节点u之间使用正向线性标记所求得的连接链路的第k个约束参数的值,ck表示路径要满足的第k个约束参数的值,K表示约束参数的个数,K的取值范围是1,2...9。其次,按照下式,计算邻节点集NB中的所有暂时性标记节点的能量值:其中,E(u)表示节点u的能量标记值,max表示求最大值操作,dk(u)表示从根节点root到节点u之间使用退火标记所求得的连接链路的第k个约束参数的值,gk(u)表示从根节点root到节点u之间使用正向线性标记所求得的连接链路的第k个约束参数的值,ck表示路径要满足的第k个约束参数的值,K表示约束参数的个数,K的取值范围是1,2...9,g*表示最小能量值。然后,按照下式计算常量Z:其中,Z表示标准化因子,Σ表示求乘积操作,u∈NB表示临界点集NB中的所有节点,E(u)表示节点u的能量标记值,t表示温度值,e表示自然常数。接着,使用随机数生成法,生成一个0~1范围内的随机数x。设置计数器sum=0。任意选取邻节点集NB中的暂时性标记节点u,按照下式更新计数器值:其中,sum1表示更新后计数器值,sum表示更新前计数器值,E(u)表示节点u的能量标记值,t表示温度值,Z表示标准化因子,e表示自然常数。判断公式sum1>x是否成立,若成立,则得到节点u;否则,继续选取邻节点集NB中的暂时性标记节点u,更新计数器值。第二步,对与新工作节点u相邻的所有不属于永久节点集的节点,判断不等式是否成立,若是,则执行下一步;否则,按照下式计算与新工作节点u相邻的所有不属于永久节点集的节点的暂时性标记:dk(v)=dk(u)+wk(u,v)πd(v)=u其中,d(v)表示对节点v进行的退火标记值,max表示求最大值操作,wk(u,v)表示从节点u到节点v之间的连接链路的第k个约束参数的值,K表示约束参数的个数,K的取值范围是1,2...9,ck表示路径要满足的第k个约束参数的值,dk(v)表示从根节点root到节点v之间使用退火标记所求得的连接链路的第k个约束参数的值,gk(u)表示正向标记值,dk(u)表示从根节点root到节点u之间使用退火标记所求得的连接链路的第k个约束参数的值,πd(v)表示从根节点root到节点u之间使用退火标记所求得的连接链路中节点u的前驱结点。第三步,将新邻节点集NB变更为邻节点集NB,减去其中标记为永久节点的u,加上u的所有不属于永久节点集的邻居节点后得到的新集合。第四步,判断新邻节点集NB是否为空,当为空时,执行下一步;否则,返回执行第一步。按照下式,更新简化的全网虚拟拓扑图中所有节点的正向标记值:gk(u)=dk(u)其中,dk(u)表示从根节点root到节点u之间使用退火标记所求得的连接链路的第k个约束参数的值,gk(u)表示从根节点root到节点u之间使用正向线性标记所求得的连接链路的第k个约束参数的值,K表示约束参数的个数,K的取值范围是1,2...9。步骤8,判断dk(s)≤ck是否成立,若是,源边界节点的控制组件得到路径p;否则,执行步骤9。其中,dk(s)表示根节点到源边界节点s之间使用非线性退火标记所求得的连接链路的第k个约束参数的值,ck表示源边界节点s到目的边界节点t之间连接链路需要满足的第k个约束参数的值。步骤9,按照下式更新温度:其中,t表示更新后简化的全网虚拟拓扑图的模拟温度值,t1表示更新前简化的全网虚拟拓扑图的模拟温度值,grad表示温度下降的梯度值。步骤10,正向非线性退火标记。将源边界节点s作为根节点root,采用非线性退火标记法,对简化的全网虚拟拓扑图进行正向非线性退火标记。非线性退火标记法的详细步骤在步骤7中已详细介绍。步骤11,判断dk(t)≤ck是否成立,若是,源边界节点的控制组件得到路径p;否则,执行步骤12。其中,dk(t)表示根节点到目的边界节点t之间使用非线性退火标记所求得的连接链路的第k个约束参数的值,ck表示源边界节点s到目的边界节点t之间连接链路需要满足的第k个约束参数的值。步骤12,按照下式更新温度和迭代次数:I=I1-1其中,t表示更新后简化的全网虚拟拓扑图的模拟温度值,t1表示更新前简化的全网虚拟拓扑图的模拟温度值,grad表示温度下降的梯度值,I表示更新后的迭代次数,I1表示更新前的迭代次数。步骤13,判断迭代次数I≤0是否成立,若是,执行步骤14;否则,执行步骤8。步骤14,查找失败,路由结束。下面结合附图对本发明的过程进行详细说明。附图2、3均为无向图,附图2中:CE1、CE2、CE3和CE4分别表示控制组件1、控制组件2、控制组件3和控制组件4,点表示节点,点之间的连线表示两节点之间的连接链路,其上标注的值为连接链路的服务质量参数。附图3中:CE1、CE2、CE3和CE4分别表示控制组件1、控制组件2、控制组件3和控制组件4,点表示节点,点之间的连线表示两节点之间的连接链路,其上标注的值为连接链路的服务质量参数,路由求解的要求约束条件有两个,分别为14和11,路由方法的初始模拟温度t=10,温度下降梯度值grad=10,源节点为本地子网1的内部节点s,目的节点为本地子网4的内部节点t。结合附图对本发明实施例的具体步骤描述如下。(1)获取全网虚拟拓扑图。(1a)参照附图2,对于本地子网1,控制组件CE1下属的所有转发组件发送节点和链路的变更信息给控制组件CE1,使得控制组件CE1得到本地子网1的实际网络拓扑图,其他子网依次得到本地子网的实际网络拓扑图。(1b)对于本地子网1,控制组件CE1,选择本地子网1的所有边界节点11、12,对于节点11、12,采用最短路径查找法,查找到11到12之间的最小跳数路径,其参数(2,2)为虚拟链路的参数标注在附图2中,同理,本地子网2,本地子网3和本地子网4也计算出虚拟链路的参数并标注在附图2中。(1c)本地子网1的边界节点12向本地子网1外发送hello分组,本地子网2的节点21和节点23和本地子网3的节点31返回应答分组,本地子网1的控制组件CE1得到节点12的本地子网1外的相邻节点21、23和31,其中节点21和23属于控制组件CE2,节点31属于控制组件CE3。(1d)节点12向节点21、23、31发送echo分组,分别得到节点12与节点21的连接链路参数(2,3),与节点23的连接链路参数(3,1),与节点31的连接链路参数(3,1)并标注在附图2中。(1e)节点12的分组表中包括发送方标识12,序列号0,年龄60,邻居列表中有邻居节点11,连接链路参数为(1,1),邻居节点21,连接链路参数为(2,3),邻居节点23,连接链路参数为(3,1),邻居节点31,连接链路参数为(4,2)。(1f)对于节点21,有邻居节点12、22、23和24,上一步中的节点12的链路状态分组表,从节点12方向发送过来,节点21将接收该分组表,并标及确认分组方向为12,转发分组方向为22、23、24,节点21将接收到的分组提交给所属的控制组件CE2,当分组为新时,加入控制组件CE2的数据库,当为旧分组时,选择序列号大的分组替代原有的分组,分组年龄随时间递增,当大于分组的最大年龄时,分组失效,不再在网络中扩散转发。每个节点的邻接信息都通过上述步骤进行扩散处理,最终,网络中每个控制组件得到一个全网虚拟拓扑图,如附图2所示。(2)确定源边界节点和目的边界节点:(2a)源节点的控制组件CE1向目的节点的控制组件CE4发送信息,指明要到达的目的节点为控制组件CE4下属的内部节点t。(2b)目的节点的控制组件CE4采用最小路径查找法分别计算目的节点t到边界节点41和43的最小跳数路径,选择跳数最小的节点43为目的边界节点,并将节点43的信息返回给源节点的控制组件CE1,目的节点t到边界节点43的最小跳数路径参数为(1,1)。(2c)源节点的控制组件CE1采用最小路径查找法分别计算源节点s到边界节点11和12的最小跳数路径,选择跳数最小的节点12为源边界节点,源节点s到边界节点12的最小跳数路径参数为(1,1)。转化为求节点12到节点43之间满足约束:c1=12,c2=9的多约束路径求解问题。(3)线性标记:(3a)采用正向线性标记法,对全网虚拟拓扑图进行正向线性标记。下面结合附图2对本发明中正向线性标记的具体步骤进行详细描述。将源边界节点12加入永久节点集,节点12的邻居节点11、21、23和31加入邻节点集NB中,且节点12为此时的工作节点。对邻节点集NB中的节点,如节点21,暂时性标记:g1(21)=w1(12,21)=2,g2(21)=w2(12,21)=3,πg(21)=12,同理,对邻节点集NB中的其它节点,暂时性标记,节点11:g1(11)=2,g2(11)=2,πg(11)=12,节点23:g1(23)=3,g2(23)=1,πg(23)=12,节点31:g1(31)=4,g2(31)=2,πg(31)=12。对全网虚拟拓扑图中除根节点root和邻节点集NB外的所有节点:22、24、32、33、41和43,暂时性正向标记值都设为∞(无穷大)。第一步,对该邻节点集NB中的节点21、11、23和31,比较标记g(u)的大小,根据上步的计算可知节点23的标记值最小,所以将节点23加入永久节点,并作为新的工作节点,继续下面的步骤。第二步,新工作节点为23,与新工作节点23相邻的所有不属于永久节点集的节点有节点21、22和24,对于节点21,不改变标记值,对于节点22,g(22)=∞,暂时性标记节点22:g1(22)=4,g2(22)=2,πg(22)=23,对于节点24,g(24)=∞,暂时性标记节点24:g1(24)=6,g2(24)=3,πg(24)=23。第三步,新邻节点集NB变更为包含节点21、22、24和31。第四步,判断可知,新邻节点集NB不为空,返回执行第一步。返回执行第一步,根据上述计算的标记值,节点23的标记值最小,选择新工作节点为23,然后按照上述的步骤,标记23的邻居节点21、22、和24:g1(21)=2,g2(21)=3,πg(21)=12,g1(22)=4,g2(22)=2,πg(22)=23,g1(24)=6,g2(24)=3,πg(24)=23。新邻节点集NB变更为包含节点11、21、22、24和31。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,节点11的标记值最小,选择新工作节点为11,因为节点11没有相邻的不属于永久节点集的节点,所以更新新邻节点集NB为包含节点21、22、24和31。返回执行第一步,根据上述计算的标记值,节点21的标记值最小,选择新工作节点为21,然后按照上述的步骤,标记21的邻居节点22和24:g1(22)=4,g2(22)=2,πg(22)=23,g1(24)=6,g2(24)=3,πg(24)=23。新邻节点集NB变更为包含节点22、24和31。返回执行第一步,根据上述计算的标记值,选择新工作节点为31,然后按照上述的步骤,标记31的邻居节点32和33:g1(32)=5,g2(32)=3,πg(32)=31,g1(33)=6,g2(33)=3,πg(33)=31。新邻节点集NB变更为包含节点22、24、32和31。返回执行第一步,根据上述计算的标记值,选择新工作节点为22,然后按照上述的步骤,标记22的邻居节点24和41:g1(24)=6,g2(24)=3,πg(24)=23,g1(41)=9,g2(41)=9,πg(41)=22。新邻节点集NB变更为包含节点24、41、32和31。返回执行第一步,根据上述计算的标记值,选择新工作节点为32,然后按照上述的步骤,标记32的邻居节点33和41:g1(33)=6,g2(33)=3,πg(33)=31,g1(41)=10,g2(41)=7,πg(41)=32。新邻节点集NB变更为包含节点24、33和41。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,选择新工作节点为33,因为节点33没有相邻的不属于永久节点集的节点,所以更新新邻节点集NB为包含节点24和41。返回执行第一步,根据上述计算的标记值,选择新工作节点为24,然后按照上述的步骤,标记24的邻居节点43:g1(43)=12,g2(43)=9,πg(43)=24。新邻节点集NB变更为包含节点41和43。返回执行第一步,根据上述计算的标记值,选择新工作节点为41,然后按照上述的步骤,标记41的邻居节点43:g1(43)=13,g2(43)=8,πg(43)=41。新邻节点集NB变更为包含节点43。判断可知,新邻节点集NB不为空,返回执行第一步,因新邻节点集NB中只有节点43,因此选择节点43作为新的工作节点。因为节点43没有相邻的不属于永久节点集的节点,更新新邻节点集NB,更新后新邻节点集NB为空,正向线性标记结束。(3b)采用反向线性标记法,对全网虚拟拓扑图进行反向线性标记。下面结合附图2对本发明中反向线性标记的具体步骤进行详细描述。将目的边界节点43加入永久节点集,节点43的邻居节点24、41加入邻节点集NB中,且节点43为此时的工作节点。对邻节点集NB中的节点,如节点41,暂时性标记:r1(41)=w1(43,41)=3,r2(41)=w2(43,41)=1,πr(41)=43,同理,暂时性标记节点24:r1(24)=6,r2(24)=6,πr(24)=43。对全网虚拟拓扑图中除根节点root和邻节点集NB外的所有节点11、12、21、22、23、31、32和33,暂时性反向线性标记值都设为∞(无穷大)。第一步,对该邻节点集NB中的节点24和41,比较标记r(u)的大小,根据上步的计算可知节点41的标记值最小,所以将节点41加入永久节点,并作为新的工作节点,继续下面的步骤。第二步,新工作节点为41,与新工作节点41相邻的所有不属于永久节点集的节点有节点22和32,对于节点22:r(22)=∞,所以暂时性标记节点22:r1(22)=8,r2(22)=8,πr(22)=41,对于节点32,r(32)=∞,暂时性标记节点32:r1(32)=8,r2(32)=5,πr(32)=41。第三步,新邻节点集NB变更为包含节点22、24和32。第四步,判断可知,新邻节点集NB不为空,返回执行第一步。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,选择新工作节点为41,然后按照上述的步骤,标记41的邻居节点22和32:r1(22)=8,r2(22)=8,πr(22)=41,r1(32)=8,r2(32)=5,πr(32)=41。新邻节点集NB变更为包含节点21、22、23和32。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,选择新工作节点为24,然后按照上述的步骤,标记24的邻居节点21、22和23:r1(21)=10,r2(21)=10,πr(21)=24,r1(22)=8,r2(22)=8,πr(22)=41,r1(23)=9,r2(23)=8,πr(23)=24。新邻节点集NB变更为包含节点22、24和32。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,选择新工作节点为32,然后按照上述的步骤,标记32的邻居节点31和33:r1(31)=9,r2(31)=6,πr(31)=32,r1(33)=11,r2(33)=10,πr(33)=32。新邻节点集NB变更为包含节点21、22、23、31和33。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,选择新工作节点为31,然后按照上述的步骤,标记31的邻居节点21和23:r1(12)=13,r2(12)=8,πr(12)=31,r1(33)=11,r2(33)=8,πr(33)=31。新邻节点集NB变更为包含节点12、21、22、23和33。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,选择新工作节点为22,然后按照上述的步骤,标记22的邻居节点21和23:r1(21)=10,r2(21)=10,πr(21)=24,r1(23)=9,r2(23)=8,πr(23)=24。新邻节点集NB变更为包含节点12、21、23和33。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,选择新工作节点为23,然后按照上述的步骤,标记23的邻居节点21和12:r1(21)=10,r2(21)=10,πr(21)=24,r1(12)=13,r2(12)=8,πr(12)=31。新邻节点集NB变更为包含节点12、21和33。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,选择新工作节点为33,因为节点33没有相邻的不属于永久节点集的节点,所以更新新邻节点集NB为包含节点12和21。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,选择新工作节点为21,然后按照上述的步骤,标记21的邻居节点12:r1(12)=13,r2(12)=8,πr(12)=31。新邻节点集NB变更为包含节点12。判断可知,新邻节点集NB不为空,返回执行第一步,因新邻节点集NB中只有节点12,然后按照上述的步骤,标记12的邻居节点11:r1(11)=15,r2(11)=10,πr(11)=12。新邻节点集NB变更为包含节点11。判断可知,新邻节点集NB不为空,返回执行第一步,因新邻节点集NB中只有节点11,因此选择节点11作为新的工作节点。因为节点11没有相邻的不属于永久节点集的节点,更新新邻节点集NB,更新后新邻节点集NB为空,反向线性标记结束。(4)处理节点:对于全网拓扑图中的任意点,如节点22,节点22的花费量根据该公式和正向线性标记值、反向线性标记值,可求出每个节点的花费量。cost(22)>2,所以删除图中的节点22,和所有与节点22有关的链路(21,22)、(23,22)、(22,41)和(22,24)。(5)遍历全网拓扑图中的所有节点,对每个节点进行计算和判断,得出满足公式,需要删除的节点有11、21、22和33。每个节点的具体正向线性标记值、反向线性标记值和花费量如下表中所示:删除相关的节点和链路后,得到如附图3所示的简化的全网虚拟拓扑图。(6)正向线性标记:对简化的全网虚拟拓扑图,即附图3,采用正向线性标记法,进行正向线性标记。将源边界节点12加入永久节点集,节点12的邻居节点23和31加入邻节点集NB中,且节点12为此时的工作节点。对邻节点集NB中的节点,如节点23,暂时性标记:g1(23)=w1(12,23)=3,g2(23)=w2(12,23)=1,πg(23)=12,同理,对邻节点集NB中的其它节点,暂时性标记,节点31:g1(31)=4,g2(31)=2,πg(31)=12。对全网虚拟拓扑图中除根节点root和邻节点集NB外的所有节点:24、32、41和43,暂时性正向标记值都设为∞(无穷大)。第一步,对该邻节点集NB中的节点23和31,比较标记g(u)的大小,根据上步的计算可知节点23的标记值最小,所以将节点23加入永久节点,并作为新的工作节点,继续下面的步骤。第二步,新工作节点为23,与新工作节点23相邻的所有不属于永久节点集的节点有节点24,对于节点24,g(24)=∞,所以暂时性标记节点24:g1(24)=6,g2(24)=3,πg(24)=23。第三步,新邻节点集NB变更为包含节点24和31。第四步,判断可知,新邻节点集NB不为空,返回执行第一步。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,节点23的标记值最小,选择新工作节点为23,然后按照上述的步骤,标记23的邻居节点24:g1(24)=6,g2(24)=3,πg(24)=23。新邻节点集NB变更为包含节点24和31。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,节点31的标记值最小,选择新工作节点为31,然后按照上述的步骤,标记31的邻居节点32:g1(32)=5,g2(32)=3,πg(32)=31。新邻节点集NB变更为包含节点24和32。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,节点32的标记值最小,选择新工作节点为32,然后按照上述的步骤,标记32的邻居节点41:g1(41)=10,g2(41)=7,πg(41)=32。新邻节点集NB变更为包含节点24和41。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,节点24的标记值最小,选择新工作节点为24,然后按照上述的步骤,标记24的邻居节点43:g1(43)=12,g2(43)=9,πg(43)=24。新邻节点集NB变更为包含节点41和43。判断可知,新邻节点集NB不为空,返回执行第一步,根据上述计算的标记值,节点41的标记值最小,选择新工作节点为41,然后按照上述的步骤,标记41的邻居节点43:g1(43)=13,g2(43)=8,πg(43)=32。新邻节点集NB变更为包含节点43。判断可知,新邻节点集NB不为空,返回执行第一步,因新邻节点集NB中只有节点43,因此选择节点43作为新的工作节点。因为节点43没有相邻的所有不属于永久节点集的节点,更新新邻节点集NB,更新后新邻节点集NB为空,正向线性标记结束。(7)反向非线性退火标记:下面结合附图3,对本发明中反向非线性退火标记过程进行详细描述。将目的边界节点43加入永久节点集,节点43的邻居节点24、41加入邻节点集NB中,且节点43为此时的工作节点。对邻节点集NB中的节点,如节点41,暂时性标记:d1(41)=3,d2(41)=1,πd(41)=43,同理,暂时性标记节点24:d(24)=1,d1(24)=6,d2(24)=6,πd(24)=43。对简化的全网虚拟拓扑图中除根节点root和邻节点集NB外的所有节点12、23、31和32,暂时性退火标记值都设为∞(无穷大)。第一步,邻节点集NB中包含节点24、41,对于节点24,对于节点41,所以将1赋值给g*。计算邻节点集NB中节点24、41的能量值:同理计算常量Z:使用随机数生成法,生成一个0...1范围内的随机数x,这里取得的随机数为0.4。设置计数器sum=0。任意选取邻节点集NB中的暂时性标记节点,这里为节点41,计算sum=sum1=0.49。sum>x,选择节点41作为退火节点。第二步,对新工作节点为41,与新工作节点41相邻的所有不属于永久节点集的节点有节点32,对于节点32:d(32)=∞,所以暂时性标记节点32:d1(32)=8,d2(32)=5,πd(32)=41。第三步,新邻节点集NB变更为包含节点24和32。第四步,判断可知,新邻节点集NB不为空,返回执行第一步。返回执行第一步,按照上述的退火节点计算方法,此次选择的退火节点为32,然后按照上述的步骤,标记32的邻居节点31:d1(31)=9,d2(31)=6,πd(31)=32,新邻节点集NB变更为包含节点24和31。判断可知,新邻节点集NB不为空,返回执行第一步,按照上述的退火节点计算方法,此次选择的退火节点为31,然后按照上述的步骤,标记31的邻居节点12:d1(12)=13,d2(12)=8,πd(12)=31,新邻节点集NB变更为包含节点24和12。判断可知,新邻节点集NB不为空,返回执行第一步,按照上述的退火节点计算方法,此次选择的退火节点为12,然后按照上述的步骤,标记12的邻居节点23:d1(23)=16,d2(23)=9,πd(12)=12,新邻节点集NB变更为包含节点24和23。判断可知,新邻节点集NB不为空,返回执行第一步,按照上述的退火节点计算方法,此次选择的退火节点为24,然后按照上述的步骤,更新标记24的邻居节点23:d(23)=1,d1(23)=12,d2(23)=9,πd(12)=12,新邻节点集NB变更为包含节点23。判断可知,新邻节点集NB不为空,返回执行第一步,因新邻节点集NB中只有节点23,因此选择节点23作为新的工作节点。因为节点23没有相邻的所有不属于永久节点集的节点,更新新邻节点集NB,更新后新邻节点集NB为空,反向非线性退火标记结束。根据公式:gk(u)=dk(u)。将本次的反向非线性退火标记值为下次计算的正向标记值,以便下次计算使用。(8)d1(12)=13>c1,所以执行下一步。(9)更新温度:(10)正向非线性退火标记:下面结合附图3,对本发明中正向非线性退火标记过程进行详细描述。将源边界节点12加入永久节点集,节点12的邻居节点23和31加入邻节点集NB中,且节点43为此时的工作节点。对邻节点集NB中的节点,如节点23,暂时性标记:d1(23)=3,d2(23)=1,πd(23)=12,同理,暂时性标记节点31:d1(31)=13,d2(31)=8,πd(31)=12。对简化的全网虚拟拓扑图中除根节点root和邻节点集NB外的所有节点24、32、41和43,暂时性退火标记值都设为∞(无穷大)。第一步,邻节点集NB中包含节点23、31,对于节点23,对于节点31,所以将1赋值给g*。计算邻节点集NB中节点23、31的能量值:同理计算常量Z:使用随机数生成法,生成一个0~1范围内的随机数x,这里取得的随机数为0.36。设置计数器sum=0。任意选取邻节点集NB中的暂时性标记节点,这里为节点23,计算sum=sum1=0.50。sum>x,选择节点23作为退火节点。第二步,新工作节点为23,与新工作节点23相邻的所有不属于永久节点集的节点有节点24,对于节点24:d(24)=∞,∞>1,所以暂时性标记节点24:d(24)=1,d1(24)=6,d2(24)=3,πd(24)=23。第三步,新邻节点集NB变更为包含节点24和31。第四步,判断可知,新邻节点集NB不为空,返回执行第一步。返回执行第一步,按照上述的退火节点计算方法,此次选择的退火节点为24,然后按照上述的步骤,标记24的邻居节点43:d(43)=1,d1(43)=12,d2(43)=9,πd(43)=24,新邻节点集NB变更为包含节点43和31。判断可知,新邻节点集NB不为空,返回执行第一步,按照上述的退火节点计算方法,此次选择的退火节点为43,然后按照上述的步骤,标记43的邻居节点41:d1(41)=15,d2(41)=10,πd(41)=43,新邻节点集NB变更为包含节点41和31。判断可知,新邻节点集NB不为空,返回执行第一步,按照上述的退火节点计算方法,此次选择的退火节点为31,然后按照上述的步骤,标记31的邻居节点32:d1(32)=5,d2(32)=3,πd(32)=31,新邻节点集NB变更为包含节点32和41。判断可知,新邻节点集NB不为空,返回执行第一步,按照上述的退火节点计算方法,此次选择的退火节点为32,然后按照上述的步骤,更新标记32的邻居节点41:d1(41)=10,d2(41)=7,πd(41)=32,新邻节点集NB变更为包含节点41。判断可知,新邻节点集NB不为空,返回执行第一步,因新邻节点集NB中只有节点41,因此选择节点41作为新的工作节点。因为节点41没有相邻的不属于永久节点集的节点,更新新邻节点集NB,更新后新邻节点集NB为空,正向非线性退火标记结束。根据公式:gk(u)=dk(u)。将本次的正向非线性退火标记值为下次计算的正向标记值,以便下次计算使用。(11)d1(43)=12=c1,d2(43)=9=c2,依次查找前驱结点,并加上源节点s到源边界节点12,目的节点t到目的边界节点43之间,步骤(2)求得的最小跳数路径,得到完整的路径p:s→12→23→24→43→t,w1(p)=14,w2(p)=11,满足给出的约束条件,且该结果为满足约束条件的唯一可行解。由于本实例的特殊性,在步骤(11)已经得出路由结果,不再执行步骤(12)、步骤(13)和步骤(14)。从上述实施例的实现过程中可以发现,本发明实现了软件定义网络中多约束路由查找的功能,缩小了检索空间,避免了对初始路径的依赖,可适用于软件定义网络。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1