CN113328950B - 一种基于树状结构的sdn路由***构建方法 - Google Patents
一种基于树状结构的sdn路由***构建方法 Download PDFInfo
- Publication number
- CN113328950B CN113328950B CN202110572673.4A CN202110572673A CN113328950B CN 113328950 B CN113328950 B CN 113328950B CN 202110572673 A CN202110572673 A CN 202110572673A CN 113328950 B CN113328950 B CN 113328950B
- Authority
- CN
- China
- Prior art keywords
- node
- root
- tree
- path
- routing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/12—Shortest path evaluation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/12—Shortest path evaluation
- H04L45/122—Shortest path evaluation by minimising distances, e.g. by selecting a route with minimum of number of hops
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/18—Loop-free operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
- H04L45/245—Link aggregation, e.g. trunking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/48—Routing tree calculation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种基于树状结构的SDN路由***构建方法,包括以下步骤:读取网络拓扑图,对网络拓扑图的每个节点,通过图的遍历算法构建一棵以该节点作为根节点的路由树;所述路由树从树根到树叶没有环路,且所述路由树中若代表某个节点的树节点在树中有多个,则这些节点的最大深度和最小深度之差不大于m;定期检测实际链路的带宽占用状态,更新每棵路由树中的各树枝代价,并在每棵路由树中找出最小代价的各源节点;在计算从节点s到节点t的路径时,首先找到根结点是t的那棵路由树,再从树叶中代表最小代价的那个s节点开始向上逆行,一直到根结点t,所经过的节点就是从s到t的最优路径。在实时环境下,可快速地计算出网络中的最优路径。
Description
技术领域
本发明涉及软件定义网络通信技术领域,具体涉及一种基于树状结构的SDN路由***构建方法。
背景技术
传统网络中使用路由器进行数据包的路径选择决策。在每个路由器中包含一张路由表,各个路由器之间通过路由协议交换路由信息,从而在每个路由器中构建路由表。常见的路由协议包括RIP、OSPF等。当数据包进入路由器时,路由器从数据包中提取出目的IP地址,用路由表中的子网掩码逐条计算,得出目的网络,若计算出的目的网络与该条路由表中的网络地址相同,则采用该条路由表中的指定IP或端口转发该数据包。
近年来,软件定义网络(Software Defined Networking,SDN)得到了很大的发展,该网络技术被视为未来网络的一个重要方向。软件定义网络通过将控制平面和数据平面分离,实现了转发决策逻辑的集中管理。在软件定义网络中,当数据包进入SDN交换机时,如果这个数据包属于一个新的数据流,交换机中找不到可匹配的流表,交换机会向SDN控制器转发该数据包,由于SDN控制器具备全局视图,因而可以很精确的为这个新流规划路径,并将转发决策下发到沿着路径的一系列SDN交换机。由于每个 SDN控制器管辖着多个交换机,每个交换机下面又连接着众多的主机,每个主机都会发送大量的数据包,因而在海量的请求下,SDN控制器对每个决策请求必须能够快速的进行路由计算,并进行转发规则下发。
在已知拓扑的情况下,求取源节点到目的节点路径计算的经典方法是 Dijkstra算法,该方法通过贪心的思想计算出源节点到目的节点的最短路径,当网络中节点数为n时,其算法的时间复杂度为O(n2)。由于网络的通信量在实时变动,SDN通过sflow等协议可实时获取链路状态,根据链路状态可换算成路径的代价,在实际运行环境中,各链路的代价在频繁变动,前一时刻的最优路径有可能在下一时刻将变得不再是最优,为了保证最优性,Dijkstra算法需要不断实时计算。但当节点数n很大时,在大数据量的计算下,O(n2)的开销难以保证路由计算的实时性。
现有技术中也有一些研究,如授权公开号为CN108965141B的中国发明专利公开了一种多路径路由树的计算方法及装置,包括:从预存的链路状态数据库获取目标设备所在的通信网络的网络拓扑图;以网络拓扑图为依据通过广度优先遍历算法构建初始路由树;通过预设的剪枝规则对初始路由树进行剪枝处理得到剪枝路由树,并以网络拓扑图为依据在剪枝路由树的基础上构建下一级路由树得到二次路由树;判断在构建下一路由树得到二次路由树的过程中是否有新增节点加入;如果没有,将初次剪枝路由树确定为期望的多路径路由树并存储多路径路由树。实施该多路径路由树的计算方法及装置,能够计算出到达目的节点的多条路径,进而有效避免因网络局部节点或通信网络使用高峰导致网络拥塞、报文丢包率增加等问题,进而提升通信服务质量。上述方案存在如下不足:在第二剪枝规则中,是根据路径开销值来剪枝,但实际上在网络运行中,由于流量的动态变化导致剩余带宽的实时变化,其路径开销值是一个变化的量,该方法根据建树瞬间的路径开销值进行剪枝,可能导致一些未来的好路径被剪掉。
发明内容
针对上述问题,本发明的目的是提供一种供SDN控制器使用的基于树状结构的路由***构建方法,在实时环境下,可快速地计算出网络中的最优路径。
为解决上述技术问题,本发明还公开了一种对车辆违规行为的检测方法,包括以下步骤:
(1)构建树状路由:读取网络拓扑图,对网络拓扑图的每个节点,通过图的遍历算法构建一棵以该节点作为根节点的路由树;所述路由树从树根到树叶没有环路,且所述路由树中若代表某个节点的树节点在树中有多个,则这些节点的最大深度和最小深度之差不大于m,m为1;
(2)更新树状路由:定期检测实际链路的带宽占用状态,更新每棵路由树中的各树枝代价,并在每棵路由树中找出最小代价的各源节点;
(3)从树状路由中快速查找路径:在计算从节点s到节点t的路径时,首先找到根结点是t的那棵路由树,再从树叶中代表最小代价的那个 s节点开始向上逆行,一直到根结点t,所经过的节点就是从s到t的最优路径。
优选的,构建树状路由的步骤为:
①取节点k构建只有根节点k的路由树bk,设置队列Q为空,集合表只有根节点;再设置表格记录拓扑图中各节点到根最少的层数,初始为无穷大;
②在拓扑图中找到节点k的邻居节点集合S={s1,s2,…,sn},将节点 s1,s2,…,sn加入路由树bk成为k的孩子节点;更新各节点到根的最少层数信息,更新各节点的集合表;
③将S集合中的每个节点与到根的路径拼接,形成{{s1,{s1,…,k}}, {s2,{s2,…,k}},…,{sn,{sn,…,k}}},将拼接后的各元素{si, {si,…,k}}加入队列Q尾部;
④将队列Q头部元素出列,设为{h,h到根的路径};
⑤在拓扑图中找到节点h的邻居节点集合S′={s′1,s′2,...,s′n},将S′集合中的每个节点与到根的路径拼接,形成新集合 {{s′1,{s′1到根的路径}},{s′2,{s′2到根的路径}},...},若新集合某元素的路径中有同一节点出现两次,则删除该元素,若新集合某元素的路径长度比该节点到根最少的层数大超过m,则删除该元素;将删除后剩余的各元素加入队列 Q尾部,将删除后剩余的各元素中的节点加入树成为h的孩子节点,更新各节点到根的最少层数信息,更新各节点的集合表;
⑥检查队列Q是否为空,否则返回④,是则返回路由树bk。
优选的,更新树状路由的步骤为:
①获取网络实时链路信息;
②取森林中的一棵路由树bt,取路由树bt对应的节点集合表;
③取节点集合表中的某节点i,根据节点i对应的路由树bt中各节点计算到根的代价;
④选取到根最小代价的节点,更新最优路径栏,检查是否为最后节点,否则返回③;是则检查是否为最后一棵路由树,是则结束,否则返回②。与现有技术相比,本发明具有以下优点:
在SDN控制器中,为了达到快速计算路由的目的,本发明采用树状结构来记录到某一节点的拓扑。通过树枝裁剪,可得到从源节点到目的节点的有限条路径,假设这样的路径有k条,当网络通信量变化时,只需更新各链路段的代价,即可重新获得一条最短路径。由于构造路径时不允许有环路,因此每条路径的节点数远小于n,重新从k条路径中选出最优路径的计算复杂度将小于O(kn)。当节点数n很大时,可以比用Dijkstra算法实时计算获得更好的性能。另外本发明根据叶节点层数进行剪枝,再定时进行路由代价计算,选一个最好的路径作为未来一段时间内的唯一路径,这样可快速地计算出网络中的最优路径,更高效快速。
附图说明
图1为本发明中构建树状路由的流程图;
图2为本发明中更新树状路由的流程图;
图3为本发明中树状路由查找路径的流程图;
图4为本发明实施例的网络拓扑;
图5为本发明实施例中D、E节点入队示意图;
图6为本发明实施例中B、C、E节点入队示意图;
图7为本发明实施例中C、D节点入队示意图;
图8为本发明实施例中A、C节点入队示意图;
图9为本发明实施例中A、B节点入队示意图;
图10为本发明实施例中C节点入队示意图;
图11为本发明实施例中A、B节点入队示意图;
图12为本发明实施例中B、C节点入队示意图;
图13为本发明实施例中A节点入队示意图;
图14为本发明实施例中A节点入队示意图;
图15为本发明实施例中A节点入队示意图;
图16为本发明实施例中A节点入队示意图;
图17为本发明实施例中A节点入队示意图;
图18为本发明实施例中A节点入队示意图。
具体实施方式
为了使本发明的目的和优点更清楚明了,下面结合附图和实施例对本发明进行详细的描述。
本发明公开了一种基于树状结构的SDN路由***构建方法,我们需要对拓扑中的每个目标节点构建一棵路由树,并且每个目标节点的路由树对应一个该树中其它所有节点的集合表。其包括以下步骤:
首先,如图1所示,构建树状路由。构建路由树必须从树根到树叶没有环路,且所述路由树中若代表某个拓扑节点的树节点在树中有多个,则这些树节点的最大深度和最小深度之差不大于m,m为1。首先我们设置森林T为空,在SDN控制器中读取网络拓扑图,我们对拓扑图的每个节点,通过图的遍历算法构建一棵以该节点作为根节点的路由树,如有n个节点,则构建n棵路由树。构建树状路由(路由树)的过程如下:
①在本实施例中,取节点k构建只有根节点k的路由树bk,设置队列 Q为空,集合表只有根节点;再设置表格记录拓扑图中各节点到根最少的层数,初始为无穷大。
②在拓扑图中找到节点k的邻居节点集合S={s1,s2,…,sn},将节点 s1,s2,…,sn加入路由树bk成为k的孩子节点;更新各节点到根的最少层数信息,更新各节点的集合表。
③将S集合中的每个节点与节点到根的路径拼接,形成{节点,节点到根的路径}格式,如{{s1,{s1,…,k}},{s2,{s2,…,k}},…, {sn,{sn,…,k}}},将拼接后的各元素{si,{si,…,k}}加入队列Q尾部。
④将队列Q头部元素出列,设为{h,h到根的路径}。
⑤在拓扑图中找到节点h的邻居节点集合S′={s′1,s′2,...,s′n},将S′集合中的每个节点与该节点到根的路径拼接,形成新集合 {{s′1,{s′1到根的路径}},{s′2,{s′2到根的路径}},...},若新集合某元素的路径中有同一节点出现两次,则删除该元素,若新集合某元素的路径长度比该节点到根最少的层数大超过m,则删除该元素;将删除后剩余的各元素加入队列 Q尾部,将删除后剩余的各元素中的节点加入树成为h的孩子节点,更新各节点到根的最少层数信息,更新各节点的集合表。
⑥检查队列Q是否为空,否则返回④,是则返回路由树bk。
本实施例的样例的网络拓扑如图4所示,包含6个节点,每个节点表示一个交换机,分别用A、B、C、D、E和F表示。每条链路用节点间的边表示,链路的代价根据链路的带宽和时延加权计算。
针对每个目标节点,构建一棵路由树,每棵路由树还对应一个其它所有节点的集合表。以目标节点F(F即为上述步骤中的根节点K)为例:
1.以F为树根进行邻居收集,先从F找到邻居D和E,将D、E加入队列。D、E入队时的节点信息中包含从根F到D、E的路径,记录下D和 E的最少深度是1,参见图5,D、E节点入队(根F本身层次为0)。在D 节点的集合表中加入D新节点的树中编号(树中节点编号为树中从上到下,从左到右的节点号码,根开始为1),在E节点的集合表中加入E新节点的树中编号,如表1。
表1:
队列中节点 | 该节点到根路径 |
D | D-F |
E | E-F |
2.队列中头部节点D出列,D到根的路径为D-F,由D继续找邻居,找到B、C、E和F几个节点。并由B、C、E和F向根进行溯源,若发现环路(同一节点出现两次),则忽略该找到的节点,若发现找到节点的深度大于该节点的最少深度+深度差参数m(m通常设置为1),也忽略该节点。B节点的溯源为B-D-F,C节点的溯源为C-D-F,E节点的溯源为E-D- F,F节点的溯源为F-D-F,此处F出现两次,则新树叶F忽略。此时,B 的最小深度为2,C的最小深度为2。如图6,B、C、E节点加入队列,F 节点不加入队列。此时队列中有E、B、C、E。将新发现的B、C、E节点的树中编号加入各自节点的集合表中,如表2(此时B、C、D节点的集合表中各有一个树中编号,E节点的集合表中有两个树中编号)。
表2:
队列中节点 | 该节点到根路径 |
E | E-F |
B | B-D-F |
C | C-D-F |
E | E-D-F |
3.队列中头部节点E出列,E到根的路径为E-F,由E继续找邻居,找到C、D、F。C的溯源为C-E-F,D的溯源为D-E-F,F的溯源为F-E- F,这里F出现环路,新节点F忽略。如图7,节点C、D进入队列并将节点的树中编号加入各自节点的集合表中。如表3,此时队列中有B、C、 E、C、D。
表3:
4.队列中B出列,B到根的路径为B-D-F,B的邻居为A、C、D,其中 A节点的溯源为A-B-D-F,C节点的溯源为C-B-D-F,D节点的溯源为D-B- D-F,新找到的D节点忽略。如图8,A、C节点进入队列并将节点的树中编号加入各自节点的集合表中。如表4,此时队列中有C、E、C、D、A、 C。
表4:
队列中节点 | 该节点到根路径 |
C | C-D-F |
E | E-D-F |
C | C-E-F |
D | D-E-F |
A | A-B-D-F |
C | C-B-D-F |
5.队列中C出列,C到根的路径为C-D-F,C的邻居为A、B、D、E,其中A的溯源为A-C-D-F,B的溯源为B-C-D-F,D的溯源为D-C-D-F,E 的溯源为E-C-D-F,但E的最小深度为1,此处为3,超过E的最少深度+ m,则新找到的E忽略,D有环路也忽略,如图9,则A、B进队列并将节点的树中编号加入各自节点的集合表中。如表5,此时队列中有E、C、 D、A、C、A、B。
表5:
6.队列中E出列,E到根的路径为E-D-F,E的邻居为C、D、F。C的溯源为C-E-D-F,D的溯源为D-E-D-F,F的溯源为F-E-D-F,D、E有环路,忽略。如图10,节点C加入队列并将节点的树中编号加入节点的集合表中。如表6,此时队列为C、D、A、C、A、B、C。
表6:
队列中节点 | 该节点到根路径 |
C | C-E-F |
D | D-E-F |
A | A-B-D-F |
C | C-B-D-F |
A | A-C-D-F |
B | B-C-D-F |
C | C-E-D-F |
7.队列中C出列,C到根的路径为C-E-F,C的邻居为A、B、D、E。A 的溯源为A-C-E-F,B的溯源为B-C-E-F,D的溯源为D-C-E-F,E的溯源为E-C-E-F,此处D的深度超过D的最少深度+m,D忽略,E有环路也忽略。如图11,节点A、B加入队列并将节点的树中编号加入各自节点的集合表中,如表7,此时队列为D、A、C、A、B、C、A、B。
表7:
8.队列中D出列,D到根的路径为D-E-F,找到邻居B、C、E、F。但这4个节点中E、F有环路,E、F忽略。如图12,B、C进入队列并将节点的树中编号加入各自节点的集合表中,如表8,此时队列为A、C、A、 B、C、A、B、B、C。
表8:
队列中节点 | 该节点到根路径 |
A | A-B-D-F |
C | C-B-D-F |
A | A-C-D-F |
B | B-C-D-F |
C | C-E-D-F |
A | A-C-E-F |
B | B-C-E-F |
B | B-D-E-F |
C | C-D-E-F |
9.队列中A出列,A到根的路径为A-B-D-F,A的邻居为B、C。B的溯源为B-A-B-D-F,出现环路,忽略;C的溯源为C-A-B-D-F,此时深度大于最小深度+m,也忽略,这里没有新入队节点。此时队列为C、A、B、 C、A、B、B、C,如表9。
表9:
10.队列中C出列,C到根的路径为C-B-D-F,C的邻居为A、B、D、 E。B、D出现环路,忽略;E的溯源为E-C-B-D-F,深度大于最小深度 +m,忽略。如图13,A节点入队并将节点的树中编号加入节点的集合表中,如表10,此时队列为A、B、C、A、B、B、C、A。
表10:
队列中节点 | 该节点到根路径 |
A | A-C-D-F |
B | B-C-D-F |
C | C-E-D-F |
A | A-C-E-F |
B | B-C-E-F |
B | B-D-E-F |
C | C-D-E-F |
A | A-C-B-D-F |
11.队列中A出队,A到根的路径为A-C-D-F,A的邻居为B、C。B的溯源为B-A-C-D-F,此时深度大于最小深度+m,忽略;C的溯源为C-A-C- D-F,出现环路,也忽略。此处没有新入队节点。如表11,此时队列为 B、C、A、B、B、C、A。
表11:
12.队列中B出队,B到根的路径为B-C-D-F,B的邻居为A、C、D。A 的溯源为A-B-C-D-F;C的溯源为C-B-C-D-F,出现环路,忽略;D的溯源为D-B-C-D-F,出现环路,忽略。如图14,此处A新入队并将节点的树中编号加入节点的集合表中,如表12,此时队列为C、A、B、B、C、A、A。表12:
队列中节点 | 该节点到根路径 |
C | C-E-D-F |
A | A-C-E-F |
B | B-C-E-F |
B | B-D-E-F |
C | C-D-E-F |
A | A-C-B-D-F |
A | A-B-C-D-F |
13.队列中C出队,C到根的路径为C-E-D-F,C的邻居为A、B、D、 E。A的溯源为A-C-E-D-F;B的溯源为B-C-E-D-F,深度大于最小深度 +m,忽略;D的溯源为D-C-E-D-F,出现环路,忽略;E的溯源为E-C-E- D-F,出现环路,忽略。此时A加入队列并将节点的树中编号加入节点的集合表中,如图15。如表13,队列为A、B、B、C、A、A、A。
表13:
14.节点A出队,A到根的路径为A-C-E-F,A的邻居为B、C。B的溯源为B-A-C-E-F,深度大于最小深度+m,忽略;C的溯源为C-A-C-E-F,深度大于最小深度+m,忽略;没有新入队节点。如表14,队列为B、B、 C、A、A、A。表14:
队列中节点 | 该节点到根路径 |
B | B-C-E-F |
B | B-D-E-F |
C | C-D-E-F |
A | A-C-B-D-F |
A | A-B-C-D-F |
A | A-C-E-D-F |
15.节点B出队,B到根的路径为B-C-E-F,B的邻居为A、C、D。C 出现环路,忽略;D的溯源为D-B-C-E-F,深度大于最小深度+m,忽略。如图16,节点A入队并将节点的树中编号加入节点的集合表中。如表 15,队列为B、C、A、A、A、A。
表15:
队列中节点 | 该节点到根路径 |
C | C-D-E-F |
A | A-C-B-D-F |
A | A-B-C-D-F |
A | A-C-E-D-F |
A | A-B-C-E-F |
A | A-B-D-E-F |
16.节点B出队,B到根的路径为B-D-E-F,B的邻居为A、C、D。D 出现环路,忽略;C深度大于最小深度+m,忽略;如图17,节点A入队并将节点的树中编号加入节点的集合表中。如表16,队列为C、A、A、A、 A、A。
表16:
队列中节点 | 该节点到根路径 |
C | C-D-E-F |
A | A-C-B-D-F |
A | A-B-C-D-F |
A | A-C-E-D-F |
A | A-B-C-E-F |
A | A-B-D-E-F |
17.节点C出队,C到根的路径为C-D-E-F,C的邻居为A、B、D、E。 D、E出现环路,忽略;B深度大于最小深度+m,忽略;如图18,节点A 入队并将节点的树中编号加入节点的集合表中。如表17,队列为A、A、 A、A、A、A。表17:
队列中节点 | 该节点到根路径 |
A | A-C-B-D-F |
A | A-B-C-D-F |
A | A-C-E-D-F |
A | A-B-C-E-F |
A | A-B-D-E-F |
A | A-C-D-E-F |
18.节点A出队,A到根的路径为A-C-B-D-F,A的邻居为B、C。B、C 出现环路,忽略;没有新节点入队。如表18,队列为A、A、A、A、A。表18:
19.节点A出队,A到根的路径为A-B-C-D-F,A的邻居为B、C。B、C 出现环路,忽略;没有新节点入队。如表19,队列为A、A、A、A。表19:
队列中节点 | 该节点到根路径 |
A | A-C-E-D-F |
A | A-B-C-E-F |
A | A-B-D-E-F |
A | A-C-D-E-F |
20.节点A出队,A到根的路径为A-C-E-D-F,A的邻居为B、C。B的溯源为B-A-C-E-D-F,深度大于最小深度+m,忽略;C的溯源为C-A-C- E-D-F,出现环路,忽略;没有新节点入队。如表20,队列为A、A、A。表20:
队列中节点 | 该节点到根路径 |
A | A-B-C-E-F |
A | A-B-D-E-F |
A | A-C-D-E-F |
21.节点A出队,A到根的路径为A-B-C-E-F,A的邻居为B、C。B、C 出现环路,忽略;没有新节点入队。如表21,队列为A、A。表21:
队列中节点 | 该节点到根路径 |
A | A-B-D-E-F |
A | A-C-D-E-F |
22.节点A出队,A到根的路径为A-B-D-E-F,A的邻居为B、C。B出现环路,忽略;C的溯源为C-A-B-D-E-F,深度大于最小深度+m,忽略;没有新节点入队。如表22,队列为A。表22:
队列中节点 | 该节点到根路径 |
A | A-C-D-E-F |
23.节点A出队,A到根的路径为A-C-D-E-F,A的邻居为B、C。C出现环路,忽略;B的深度大于最小深度+m,忽略;没有新节点入队。如表 23,队列为空。
表23:
队列中节点 | 该节点到根路径 |
24.到这里,队列为空,树构造完毕。
节点集合表的最终状态如表24,节点最少层数表的最终状态如表 25。
表24:
表25:
拓扑中节点 | 树中最少层数 |
A | 3 |
B | 2 |
C | 2 |
D | 1 |
E | 1 |
F | 0 |
其次,最短路径的生成。当树状路由构造完毕后,***将构造节点间的最小代价路径。每一条链路的代价可以根据链路带宽、路径延迟等因素加权考虑。要查找从源点s到目的节点t的最小代价路径时,先找到以目的节点t为根的那棵路由树,再从路由树的节点集合表中查到所有s节点的指针集合,根据每一个s节点的指针找到对应的s节点,假设有k个s节点,从每个s节点向上查找直到根,并记录路径代价的和。从k个代价中找出最小代价,将该最小代价对应的那个s节点记录为当前到t最小代价的s节点,并在节点集合表中做出标记。
再次,查找路径。路由***的使用时,当查找从源点s到目的节点t 的路径时,先找到以目的节点t为根的那棵路由树,在找到路由树中s节点的集合表所在行,取出该行的最优路径节点指针,从路由树中根据节点指针查找父节点回溯直到根,即可找到最小代价路径,即最优路径。
另外,在路由树的更新中分为两种:一种是拓扑不变,各路径代价发生了变化,路径重计算每隔一段时间触发,间隔时间可以为30秒,此时重复最短路径的生成步骤,重新找到s到t的最小代价s节点指针。另一种是拓扑发生了变化,路径的重计算在拓扑变化时触发,此时要从构建树状路由开始进行重计算,这种重计算的计算量较大,但考虑到拓扑发生变化一般不常见,其计算代价是可接受的。其具体过程如下:①获取网络实时链路信息;②取森林中的一棵路由树bt,取路由树bt对应的节点集合表;③取节点集合表中的某节点i,根据节点i对应的路由树bt中各节点计算到根的代价;④选取到根最小代价的节点,更新最优路径栏,检查是否为最后节点,否则返回③;是则检查是否为最后一棵路由树,是则结束,否则返回②。
上述实施例,仅为对本发明的目的、技术方案和有益效果进一步详细说明的具体个例,本发明并非限定于此。凡在本发明的公开的范围之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围之内。
Claims (1)
1.一种基于树状结构的SDN路由***构建方法,其特征在于,包括以下步骤:
(1)构建树状路由:读取网络拓扑图,对网络拓扑图的每个节点,通过图的遍历算法构建一棵以该节点作为根节点的路由树;所述路由树从树根到树叶没有环路,且所述路由树中若代表某个节点的树节点在树中有多个,则这些节点的最大深度和最小深度之差不大于m,m为1;
构建树状路由的步骤为:
①取节点k构建只有根节点k的路由树bk,设置队列Q为空,集合表只有根节点;再设置表格记录拓扑图中各节点到根最少的层数,初始为无穷大;
②在拓扑图中找到节点k的邻居节点集合S={s1,s2,…,sn},将节点s1,s2,…,sn加入路由树bk成为k的孩子节点;更新各节点到根的最少层数信息,更新各节点的集合表;
③将S集合中的每个节点与到根的路径拼接,形成{{s1,{s1,…,k}},{s2,{s2,…,k}},…,{sn,{sn,…,k}}},将拼接后的各元素{si,{si,…,k}}加入队列Q尾部;
④将队列Q头部元素出列,设为{h,h到根的路径};
⑤在拓扑图中找到节点h的邻居节点集合S'={s'1,s'2,...,s'n},将S'集合中的每个节点与到根的路径拼接,形成新集合{{s'1,{s'1到根的路径}},{s'2,{s'2到根的路径}},...},若新集合某元素的路径中有同一节点出现两次,则删除该元素,若新集合某元素的路径长度比该节点到根最少的层数大超过m,则删除该元素;将删除后剩余的各元素加入队列Q尾部,将删除后剩余的各元素中的节点加入树成为h的孩子节点,更新各节点到根的最少层数信息,更新各节点的集合表;
⑥检查队列Q是否为空,否则返回④,是则返回路由树bk;
(2)更新树状路由:定期检测实际链路的带宽占用状态,更新每棵路由树中的各树枝代价,并在每棵路由树中找出最小代价的各源节点;其中,最小代价节点指在树中对每个节点计算从该节点向根前进经过的路径中所有树枝的代价之和,然后将树中属于拓扑图中同一个源节点的所有非根节点归为一类,找出其中到根代价最小的那个节点;
更新树状路由的步骤为:
①获取网络实时链路信息;
②取森林中的一棵路由树bt,取路由树bt对应的节点集合表;
③取节点集合表中的某节点i,根据节点i对应的路由树bt中各节点计算到根的代价;
④选取到根最小代价的节点,更新最优路径栏,检查是否为最后节点,否则返回③;是则检查是否为最后一棵路由树,是则结束,否则返回②;
(3)从树状路由中快速查找路径:在计算从节点s到节点t的路径时,首先找到根结点是t的那棵路由树,再从树叶中代表最小代价的那个s节点开始向上逆行,一直到根结点t,所经过的节点就是从s到t的最优路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110572673.4A CN113328950B (zh) | 2021-05-25 | 2021-05-25 | 一种基于树状结构的sdn路由***构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110572673.4A CN113328950B (zh) | 2021-05-25 | 2021-05-25 | 一种基于树状结构的sdn路由***构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113328950A CN113328950A (zh) | 2021-08-31 |
CN113328950B true CN113328950B (zh) | 2022-06-17 |
Family
ID=77416780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110572673.4A Active CN113328950B (zh) | 2021-05-25 | 2021-05-25 | 一种基于树状结构的sdn路由***构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113328950B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115442301A (zh) * | 2022-09-09 | 2022-12-06 | 珍爱信息技术(海南)有限公司 | 路由配置树生成方法、基于路由配置树的路由方法、装置和电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101552934A (zh) * | 2009-05-07 | 2009-10-07 | 电子科技大学 | 基于pce回溯递归的光互联网跨域可靠性路径计算方法 |
CN101621721A (zh) * | 2009-08-06 | 2010-01-06 | 中兴通讯股份有限公司 | K优路径的计算方法及装置 |
CN110365585A (zh) * | 2018-03-26 | 2019-10-22 | 武汉大学 | 一种基于多代价指标的路由裁剪优化方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1710884A (zh) * | 2005-06-24 | 2005-12-21 | 武汉理工大学 | 一种支持多QoS约束的多播路由方法 |
JP4377858B2 (ja) * | 2005-07-07 | 2009-12-02 | 日本電信電話株式会社 | 階層分散型ルーティング方法とその管理装置 |
CN1731762A (zh) * | 2005-08-05 | 2006-02-08 | 武汉理工大学 | 一种基于Steiner的QoS约束的多播路由的方法 |
CN103532861B (zh) * | 2013-09-30 | 2016-09-21 | 清华大学 | 基于生成树的域内动态多路径生成方法 |
CN105471764B (zh) * | 2015-11-16 | 2019-01-25 | 中国科学院信息工程研究所 | 一种SDN网络中端到端QoS保障的方法 |
CN108965141B (zh) * | 2018-09-18 | 2021-03-30 | 深圳市风云实业有限公司 | 一种多路径路由树的计算方法及装置 |
-
2021
- 2021-05-25 CN CN202110572673.4A patent/CN113328950B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101552934A (zh) * | 2009-05-07 | 2009-10-07 | 电子科技大学 | 基于pce回溯递归的光互联网跨域可靠性路径计算方法 |
CN101621721A (zh) * | 2009-08-06 | 2010-01-06 | 中兴通讯股份有限公司 | K优路径的计算方法及装置 |
CN110365585A (zh) * | 2018-03-26 | 2019-10-22 | 武汉大学 | 一种基于多代价指标的路由裁剪优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113328950A (zh) | 2021-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108040012B (zh) | 基于天牛须搜索的sdn网络中多目标组播路由路径构建方法 | |
US20180152386A1 (en) | Data transmission method, and switch and network control system using the method | |
US9258220B2 (en) | Communication system, node, control server, communication method and program | |
CN105393511B (zh) | 一种交换机模式切换方法、设备及*** | |
US20030185209A1 (en) | Scalable IP multicast with efficient forwarding cache | |
US9491087B1 (en) | Devices and methods for forwarding information base aggregation | |
CN108965141A (zh) | 一种多路径路由树的计算方法及装置 | |
CN108494601B (zh) | 层次化确定网络中的多约束双路径路由方法 | |
JP2017511055A (ja) | ソフトウェア定義ネットワーキングにおけるコンテキスト符号化を通じたレイヤ2経路追跡 | |
KR102165865B1 (ko) | 소프트웨어 정의 네트워크에서 유전자 및 개미 집단 알고리즘 기반 동적 로드 밸런싱 방법 및 장치 | |
Tian et al. | An SDN-based traffic matrix estimation framework | |
CN113328950B (zh) | 一种基于树状结构的sdn路由***构建方法 | |
Michael et al. | Optimal link-state hop-by-hop routing | |
CN113810225B (zh) | Sdn网络的带内网络遥测探测路径规划方法及*** | |
CN106941447A (zh) | 基于蚁群模型的自由空间光网络路由方法 | |
US9641397B2 (en) | Communication system, control apparatus, control method, and program | |
CN111865789B (zh) | 一种基于段路由的sr路径约束方法 | |
CN107809381B (zh) | 一种实现基于sdn中路由环路主动审计方法 | |
CN107454647A (zh) | 周期性路由信息的发送方法及装置 | |
CN109714261B (zh) | 一种量子通信网络中基于保真度度量的多播路由方法 | |
CN111800339A (zh) | 混合sdn场景下带有路径数目约束的路由优化方法 | |
CN108566335B (zh) | 一种基于NetFlow的网络拓扑生成方法 | |
CN105207951B (zh) | 一种广域网流量优化控制方法及装置 | |
JP4553314B2 (ja) | オーバーレイネットワークにおける通信経路決定方法および通信経路決定システム | |
CN110365585B (zh) | 一种基于多代价指标的路由裁剪优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |