[发明专利]基于非线性退火的软件定义网络多约束路由方法有效
申请号: | 201410441095.0 | 申请日: | 2014-09-01 |
公开(公告)号: | CN104202247B | 公开(公告)日: | 2017-10-27 |
发明(设计)人: | 宋志坤;盛立杰;杨建华 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | H04L12/733 | 分类号: | H04L12/733;H04L12/751 |
代理公司: | 陕西电子工业专利中心61205 | 代理人: | 田文英,王品华 |
地址: | 710071*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 非线性 退火 软件 定义 网络 约束 路由 方法 | ||
1.基于非线性退火的软件定义网络多约束路由方法,其步骤包括如下:
(1)获取全网虚拟拓扑图:
(1a)转发组件将网络中转发组件的变更信息通知控制组件,控制组件得到本地子网内的实际网络拓扑图;
(1b)隐藏本地子网内的节点,保留边界节点,采用最短路径查找法,查找两两边界节点之间的最小跳数路径,将所有的最小跳数路径作为虚拟链路;
(1c)本地子网的边界节点向本地子网外发送查询分组信息,根据本地子网外返回的应答分组信息,得到相邻子网边界节点信息和该相邻子网边界节点所属的控制组件信息;
(1d)本地子网的边界节点向本地子网外发送测量分组信息,相邻子网边界节点返回应答分组信息,本地子网的边界节点根据该应答分组信息得到相邻子网间连接链路的参数信息;
(1e)创建链路状态分组表;
所述的链路状态分组表包括发送方标识、序列号、年龄和一个邻居列表;邻居列表中包括边界节点、边界节点之间的链路参数、相邻子网控制组件、相邻子网边界节点及相连链路的参数;
(1f)使用扩散法,控制组件发布链路状态分组信息,得到全网虚拟拓扑图;
(2)确定源边界节点和目的边界节点:
(2a)源节点的控制组件向目的节点的控制组件发送信息,指明要到达的目的节点信息;
(2b)目的节点的控制组件,采用最短路径查找法,计算从目的节点到本地子网所有边界节点之间的最小跳数路径,选择所有最小跳数路径中跳数最小的边界节点,返回给源节点的控制组件,作为目的边界节点;
(2c)源节点的控制组件,采用最短路径查找法,计算从源节点到本地子网所有边界节点之间的最小跳数路径,选择所有最小跳数路径中跳数最小的边界节点,作为源边界节点;
(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;
(5)判断全网虚拟拓扑图中所有节点是否都完成节点处理,若是,得到简化的全网虚拟拓扑图,执行步骤(6);否则,执行步骤(4);
(6)正向线性标记:
采用正向线性标记法,对简化的全网虚拟拓扑图进行正向线性标记;
所述的正向线性标记法按下列步骤进行:
第一步,将源边界节点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相邻的所有不属于永久节点集的节点的暂时性标记后再执行第5步:
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是否为空,当为空时,结束正向线性标记;否则,返回执行第三步;
(7)反向非线性退火标记:
将目的边界节点作为根节点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是否成立,若是,源边界节点的控制组件得到路径;否则,执行步骤(9);
其中,1≤k≤K,k的取值范围是1,2…K,K表示约束参数的个数,K的取值范围是1,2…9;dk(s)表示根节点到源边界节点s之间使用非线性退火标记所求得的连接链路的第k个约束参数的值,ck表示源边界节点s到目的边界节点t之间连接链路需要满足的第k个约束参数的值;
(9)按照下式更新温度:
其中,t表示更新后简化的全网虚拟拓扑图的模拟温度值,t1表示更新前简化的全网虚拟拓扑图的模拟温度值,grad表示温度下降的梯度值;
(10)正向非线性退火标记:
将源边界节点作为根节点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;
(11)判断dk(t)≤ck是否成立,若是,源边界节点的控制组件得到路径;否则,执行步骤(12);
其中,1≤k≤K,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)查找失败,路由结束。
2.根据权利要求1所述的基于非线性退火的软件定义网络多约束路由方法,其特征在于,步骤(1f)所述的扩散法是指,转发组件向分组到来的方向发送分组确认信息,向其余的所有方向转发分组信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410441095.0/1.html,转载请声明来源钻瓜专利网。