«上一篇 下一篇»
  计算机工程  2022, Vol. 48 Issue (3): 154-161  DOI: 10.19678/j.issn.1000-3428.0059428
0

引用本文  

荆霞, 周子韬, 王永利. 针对复杂多环网络拓扑的路由改进算法[J]. 计算机工程, 2022, 48(3), 154-161. DOI: 10.19678/j.issn.1000-3428.0059428.
JING Xia, ZHOU Zitao, WANG Yongli. Improved Routing Algorithm for Complex Multi-ring Network Topology[J]. Computer Engineering, 2022, 48(3), 154-161. DOI: 10.19678/j.issn.1000-3428.0059428.

基金项目

国家自然科学基金(61941113);中央高校基本科研业务费专项资金(30916011328,30918015103);南京市科技计划项目(201805036)

作者简介

荆霞(1977—),女,讲师、硕士,主研方向为计算机网络路由优化、计算机审计、大数据应用;
周子韬,硕士;
王永利,教授、博士

文章历史

收稿日期:2020-09-03
修回日期:2021-01-18
针对复杂多环网络拓扑的路由改进算法
荆霞1 , 周子韬2 , 王永利2     
1. 南京审计大学 信息工程学院, 南京 211899;
2. 南京理工大学 计算机科学与工程学院, 南京 210014
摘要:网络运营商为用户提供的光纤接入主干网大多以环型网络的方式提供服务,然而目前对于大规模、环数众多、连接方式多样化的复杂多环网络缺乏性能优良的路由算法。为解决传统环网结构网络延迟高和传输效率低的问题,提出一种针对复杂多环网络拓扑的路由改进算法,将多环网络中的复杂路由问题转化为单环网中的简单路由问题。在此基础上,通过设计源溯节点还原以及路径还原算法,将单一环网改进为增强环网网络结构,使同一环内通信节点间的路径还原为完整最短路径,并从理论上证明该算法得到的最优路径是无差错的。实验结果表明,相比于现有的优化Dijkstra算法,该算法的搜索空间比提升约13%,具有更好的改进效果,且算法运行时间缩短79%,更适合复杂多环网络的路由计算。
关键词多环网络    路由    最优路径    增强环网    拓扑    
Improved Routing Algorithm for Complex Multi-ring Network Topology
JING Xia1 , ZHOU Zitao2 , WANG Yongli2     
1. School of Information Engineering, Nanjing Audit University, Nanjing 211899, China;
2. School of Computer Science and Engineering, Nanjing University of Science and Technology, Nanjing 210014, China
Abstract: Most of the optical access backbone networks provided by network operators provide services in the form of ring network.At present, there is a lack of high-performance routing algorithms with good performance for large-scale complex multi-ring networks with a large number of rings and diverse connection modes.In order to solve the problem of high network delay and low transmission efficiency of traditional ring network structure, an improved routing algorithm for complex multi ring network topology is proposed.The complex routing problem in multi ring network is transformed into a simple routing problem in single ring network.The algorithm of source tracing node restoration and path restoration is designed.The single ring network is improved to an enhanced ring network structure, and the path between communication nodes in the same ring is restored to the complete shortest path.It is proved theoretically that the optimal path obtained by the algorithm is error free.The experimental results show that compared with the existing optimized Dijkstra algorithm, the SearchSpace ratio of the algorithm is improved by about 13%, the improvement effect has been significantly improved, and the running time of the algorithm is shortened by 79%.The proposed algorithm is more suitable for routing calculation of complex multi-ring network.
Key words: multi-ring network    routing    optimal path    enhanced ring network    topology    

开放科学(资源服务)标志码(OSID):

0 概述

随着网络技术的发展,一些流行网站的访问量呈现飞速增长的趋势,如何提供高质量、高效率及更安全稳定的服务已成为运营商必须要面对的问题[1-3]。环形结构网络可以提供更好的本地网络连接体验,能够满足生存性和安全性的要求,因此被应用于很多场景。目前网络运营商为大用户提供的光纤接入网,例如电力、电信、有线电视等,其主干网大多以环型网络的方式提供服务。此外,令牌环网络(Token-Ring Network,TRN)、光同步数字传输网(Synchronous Digital Hierarchy,SDH)[4]、局域网(Local Area Network,LAN)[5]和波分复用(Wavelength Division Multiplexing,WDM)[6-7]光传送网均离不开环网结构。

环网因其结构特点存在自身缺陷,环形结构网络传输效率低、延迟高,当节点或链路发生故障时,会变得不可靠、可扩展性差。许多基于环网结构的拓扑改进也因此被提出。WILLIAM等[8]研究了4种增强的环网络,这些网络以环网结构为基础,在仅适度增加结构复杂性的基础上,显著提高了环作为通信媒介的效率。文献[9]提出了节点在同心多环覆盖网络上进行逻辑互连的网络模型,不仅描述了同心多环网络覆盖拓扑,也提出了节点加入和离开方案,以及路由和资源查找算法。由于基于环的网络覆盖对于组通信具有固有可靠性和单一容错的特点,文献[10]提出利用改进的多环网络结构来实现安全和可扩展的群组通信。

为解决环网结构网络传输效率低、延迟高的问题,近年来,对环网的研究也从结构改进转移到在不同场景下环网路由算法的改进。ABRAHAM等[4]研究了放置在环中有$ d $个出度$ n $个节点的贪婪路由,将路由复杂度从$ O\left(\frac{\mathrm{l}\mathrm{b}2n}{d}\right) $降低到$ O\left(\frac{\mathrm{l}\mathrm{b}n}{\mathrm{l}\mathrm{b}d}\right) $。文献[11]提出基于主从结构的弦环网路由算法,该算法根据区域组成多个子环,在子环中推选出处理能力强的节点为超节点并让其彼此相连构成主环,从而减少路由跳数,提高路由延时性能。文献[12]将增强环网中的弦环网应用到分布式网络中,提出改进路由算法,使该网络结构能更好地适应大规模分布式系统。为解决如何在网络的任意节点之间有效地为消息寻路的核心问题,文献[13]提出一种基于增强环网的贪心路由算法。文献[14]通过添加虚节点和虚拟弧扩充网络,将原有问题转换为混合整数规划问题并提出一种启发式算法,将其作为WDM环网中的路由算法,实验结果证明该算法效果显著。

上述文献是对单环网和特定场景下路由算法的研究,对于规模大、环数多、连接方式多样化的复杂多环网络仍缺乏性能优良的路由算法。本文在弦环网结构的启发下,提出一种面向复杂多环网的路由改进算法PRR。通过构建多种增强环网结构模型,探究其增强的原子操作及由增强环网结构衍生的复杂多环网络定义。同时,通过分析多环网络拓扑的特点,将网络中节点划分为通信节点和环内节点,并令PRR算法只在节点数和边数较少的单个环以及预处理后的有向图上进行,从而避免算法过于复杂,提高算法运算速度。

1 增强环网结构模型

基于环型结构的网络有许多优点,如具有优良的可靠性及安全性、路由控制软件简单易操作等[20],但也有明显的缺点。由于信息在环路中是串行地穿过各个节点,当环中节点过多时,势必影响信息在节点中的传输速率,使网络的响应时间延长。随着环上节点数量的增加,该问题越发明显。目前解决方法主要有2种:一是将原有的大环拆成多个互连在一起的小环,这些环要么处于同一级,要么互连成1个多层次结构的环,如此可以改善伸缩性;二是在环的内部或外部为不直接相连接的节点之间添加“弦”或者“弧”。这些方法也是增强环网结构原子操作的核心。

拓扑直径可定义为任意2个节点之间最短距离的最大值,而平均直径定义为任意2个节点之间最短距离的平均值。在网络拓扑尤其是环网中用直径去度量传输延迟。

1.1 增强环网结构

针对单环网的缺陷,研究人员提出多种改进环网结构,这些改进后的环网也被称为增强环网[8]。其中应用广泛的有以下3种:

1)弦环网

弦环网指对于给定的$ N(N\ge 6) $个节点的环网$ \mathrm{C}\mathrm{H}\mathrm{R}\mathrm{m}4(N, E, {h}_{1}, {h}_{2}) $,其中:$ N、E $分别表示节点与边值;$ {h}_{1}\mathrm{、}{h}_{2} $表示弦的连接值,且$ {h}_{1}\mathrm{、}{h}_{2} $必须为正整数且为偶数。对于任意的偶数节点,$ 0\le k\le {}^{N}\!\!\diagup\!\!{}_{2}\; $,节点$ {i}_{2k}=\{\mathrm{0, 2}, \cdots ,N-2\} $会额外与节点$ i\_\left(2k+{h}_{1}\right)\mathrm{m}\mathrm{o}\mathrm{d}N $和节点$ i\_\left(2k-{h}_{1}\right)\mathrm{m}\mathrm{o}\mathrm{d}N $连接形成环中的弦链路。对于任意的奇数节点,节点$ {i}_{2k+1}=\{\mathrm{1, 3}, \cdots , N-1\} $会额外与节点$ i\_\left(2k+1+{h}_{2}\right)\mathrm{m}\mathrm{o}\mathrm{d}N $和节点$ i\_\left(2k+1-{h}_{2}\right)\mathrm{m}\mathrm{o}\mathrm{d}N $连接形成环中其余部分的弦链路。对于$ \mathrm{C}\mathrm{H}\mathrm{R}\mathrm{m}4 $中的$ N\mathrm{、}{h}_{1}、{h}_{2} $$ \mathrm{g}\mathrm{c}\mathrm{d}\left(N\mathrm{、}{h}_{1}、{h}_{2}\right)=2 $

弦环网通过添加非直接相连的节点与节点之间的链路来增强环网,可以将这条新的链路视为环的弦。弦环是最早提出的并行架构的成本效益互连网络之一,弦环网的优点主要在于当环内1个节点出现故障时不会导致整个环网都瘫痪,且弦环网可以适当减小环形网络的直径。弦环网在分布式网络中有着重要的应用,图 1(a)是四度弦环网$ \mathrm{C}\mathrm{H}\mathrm{R}\mathrm{m}4(\mathrm{10, 1}, \mathrm{2, 4}) $的拓扑图。

Download:
图 1 不同类型增强环网结构 Fig. 1 Different types of enhanced ring network structure

2)边缘互连多环网

环与环之间通过环的边缘(即连续的多个节点)连接从而形成边缘互连多环网。每个环均可与其他多个环通过该方式连接且可以递归发生,这样的网络可以形成“环树”。“环树”的深度(环的递归的级别数)决定了路由开销的程度,深度值越大,路由的决策节点数量更多,路由开销则更高。同时,当网络结构的深度越大时,路径选择则更加多样化,该网络对边缘节点故障拥有更高的容忍度。边缘互连多环网在一定程度上与网格状网络类似,边缘互连多环网更加自由,每个节点的度数不必严格要求相同且可以是网格状网络的子图。边缘互连多环网如图 1(b)所示。在实践中,边缘互连多环网常应用在SONET的通信中。

3)分层环网

环与环之间通过单个节点连接形成分层环网。与边缘互连多环网类似,环的连接也可以递归发生。因此,分层环网也可形成“环树”,其深度同样是重要的结构特征。

图 1(c)为分层环网的示意图。边缘互连多环网和分层环网之间的主要区别在于边缘互连多环网中共享多个节点,而在分层环网中共享1个节点。因此,分层环网也可以作为边缘互连多环网的子图。

1.2 多环网络拓扑

多环网络是增强环网中重要的一部分。在拓扑上,多环网络可以分为3类:1)环共享节点,其中包括单节点和多节点,连续的多节点又可以称为共享边;2)桥连接环网,也分为单桥、多桥;3)多环混合连接。多环网络拓扑如图 2所示。

Download:
图 2 多环网络拓扑 Fig. 2 Multi-ring network topology

本文所研究的复杂多环网络拓扑,“复杂”主要表现在3方面:1)网络中环与环的连接方式复杂,可能通过节点、边,也可能通过桥来连接;2)网络拓扑规模复杂;3)需要解决大批量大规模不同业务需求。

复杂多环网络拓扑的研究意义在于:

1)多环拓扑基于环,环可以通过带宽进行扩展,因为节点的工作负载与节点总数无关,所以这种复杂网络拓适用在某些真实网络场景下。

2)单环的主要缺点是对大量节点的高度依赖性,一个节点的故障可能会导致所有业务丢失,且平均延迟与节点总数成比例。将单个环转换成多环可以很好地改善这种情况,但这些都要基于一个良好的路由算法。在多环混合连接拓扑中,将功能强大的节点进行环与环之间的通信,吞吐量不再受功能较弱的节点限制。

3)环之间通过共享环上单个或多个节点连接可以满足场景的实际需求,减少网络的节点数。而通过“桥”连接可以减少环与环之间的“耦合度”,“多桥”可以在桥之间起到互相保护的作用,1个桥出现故障,业务可以通过其他桥继续正常传输。

4)不同结构的增强环网可转化成相应的多环结构。文献[2]中给出了详细的证明。因此,本文研究复杂多环网络拓扑下的路由算法对其他结构的环网路由算法均有借鉴作用,甚至可以应用在环网中。

1.3 多环网络拓扑定义

为更准确、清晰地描述本文算法,对本文所研究的多环网络拓扑给出以下定义:

1)多环网络。由$ N $个节点所构成的多环网络$ \mathrm{M}\mathrm{R}\left({Z}_{N}, {E}_{N}, {R}_{D}, {B}_{C}\right) $,节点集$ {Z}_{N}=\{\mathrm{0, 1}, \cdots , N-1\} $,边集$ {E}_{N}=\left\{\right\{(i, i+1\mathrm{m}\mathrm{o}\mathrm{d}N)|i\in {Z}_{N}\}\bigcup {B}_{C}\} $$ {R}_{D}=\left\{{R}_{1}, {R}_{2}, \cdots , {R}_{d}\right\} $表示$ \mathrm{M}\mathrm{R} $中包含的$ d $个环,$ {B}_{C} $表示网络中的桥,以边的形式存储,表现为:$ \left\{\left({b}_{1}, {b}_{2}\right), \left({b}_{3}, {b}_{4}\right), \cdots , \left({b}_{i-1}, {b}_{i}\right)\right., $$ \left.|{b}_{i}\in {Z}_{N}\right\} $

2)环连接。环$ {R}_{i}\left({Z}^{V}, {E}^{V}, {C}^{R}\right) $由节点集$ {Z}^{V} $、边集$ {E}^{V} $和与这个环通过共享节点连接的环$ {C}^{R} $。对于含有$ j $个节点的环$ {Z}^{i}=\{{Z}_{1}^{i}, {Z}_{2}^{i}, \cdots , {Z}_{j}^{i}|i\le d\}\in {Z}_{N} $,环上的边为$ {E}^{V}=\left\{\right({Z}_{k}^{i}, {Z}_{k+1\mathrm{ }\mathrm{m}\mathrm{o}\mathrm{d}\mathrm{ }\mathrm{j}}^{i}\left)\right| $$ {Z}_{k}^{i}\in {Z}^{i}\} $$ {C}^{R}=\left\{m, {Z}_{x, }^{i}{Z}_{y, }^{i}\cdots \right\}, $ $ \left\{n, {Z}_{a, }^{i}{Z}_{b, }^{i}\cdots \right\} $$ , \cdots ,\left.\left\{j, {Z}_{f, }^{i}{Z}_{j, }^{i}\cdots \right\}\right] $,每一组数据表示与该环$ {V}_{i} $连接的环信息,$ m、n $分别表示与之相连的环为$ {R}_{m}、{R}_{n} $,共享的节点为$ {Z}_{x}^{i}\mathrm{、}{Z}_{y}^{i} $

3)通信节点。环与环之间的共享节点以及桥上的节点称为通信节点。环内的其他节点,及不参与到与其他环交互和通信的节点,统称为非通信节点或环内节点。

增强环网的提出,使环网结构的网络更加灵活,拥有更好的伸缩性,在响应时间和网络延迟上也有一定程度的改善。然而,环网结构本身的传输效率低的缺点仍有待解决,如何针对不同结构的环网提出相应的路由算法,从而提升传输效率仍是一个重要的课题,也是本文的研究主题。

2 PRR路由改进算法

环网拓扑在搜寻节点过程中每次都必须从当前节点沿着顺时针或逆时针遍历环上的其余节点,直到遇到通信节点才可以进入下一个环中进行遍历。因此,搜索空间和时间往往很大,延迟和延迟抖动更高。本算法的思想核心是“分而治之”,在原有的拓扑识别通信节点基础上构建新的拓扑,并在该拓扑中执行还原算法以保证网络不失真。算法流程如图 3所示。

Download:
图 3 改进路由算法的流程 Fig. 3 Procedure of improved routing algorithm
2.1 预处理

环网中传统路由算法先从当前节点搜寻到该环上的通信节点,之后从其节点搜寻到其他环,直到搜寻到包含目标节点的环,在该环上搜寻到目标节点。其过程由3部分组成:从环上的环内节点到通信节点,从一个环搜寻到另一个环即通信节点到通信节点,以及从一个环上的通信节点到环内节点。在复杂多环网中,第2部分的内容占据路由主要部分。因此,本文算法将通信节点到通信节点的路径通过预处理作为缓存,从而避免每次业务都需重新计算一次。

预处理算法的目的是除去整个网络拓扑图的冗余节点,主要操作是将环内节点剥离,同时构建一个新的预处理拓扑图$ {G}^{\text{'}} $并缓存下来以便后续调用数据,步骤如下:

1)遍历所有环的节点度数,如果节点的度数大于2,那么可以认定其为非环内节点(通信节点)。将每个环的通信节点加入到通信节点集($ C{N}^{i}\to CN $

2)构建新的预处理拓扑图$ {G}^{\text{'}} $,将通信节点集中的节点加入$ {G}^{\text{'}} $,即$ CN\to {G}^{\text{'}} $

3)对于同一环内的通信节点,两两节点构成边,利用Dijkstra算法计算他们之间的最短距离并将边加入到$ {G}^{\text{'}} $。算法过程如算法1所示。

算法1  Create new Preprocessing topology $ {G}^{\text{'}} $(CPG)

输入Multi-ring network$ MR({Z}_{N}, {E}_{N}, {R}_{D}, {B}_{C}) $

输出  new preprocessing topology $ {G}^{\mathrm{\text{'}}} $

for $ {\mathrm{R}}_{\mathrm{i}}\in {\mathrm{R}}_{\mathrm{D}} $ do

for node $ {\mathrm{Z}}_{\mathrm{k}}^{\mathrm{i}}\in {\mathrm{R}}_{\mathrm{i}}:\mathrm{z} $ do

if degree($ \mathrm{z} $$ > $2 then

addNode $ \mathrm{z}\to {\mathrm{G}}^{\mathrm{\text{'}}} $

CN i ←z

for node $ \mathrm{c}\mathrm{n}\in \mathrm{C}{\mathrm{N}}^{\mathrm{i}} $ do

for $ \mathrm{v}\in {\mathrm{R}}_{\mathrm{i}} $ do

if $ \mathrm{v}\ne \mathrm{c}\mathrm{n} $and $ \mathrm{v}\in \mathrm{C}{\mathrm{N}}^{\mathrm{i}} $ then

addEdge($ \mathrm{c}\mathrm{n}, \mathrm{v})\to {\mathrm{G}}^{\mathrm{\text{'}}} $

edge($ \mathrm{c}\mathrm{n}, \mathrm{v}) $.value$ \leftarrow $Dijkstra($ {\mathrm{R}}_{\mathrm{i}}, \mathrm{c}\mathrm{n}, \mathrm{v} $

end for

for edge $ \mathrm{b}\mathrm{r}\in {\mathrm{B}}_{\mathrm{C}} $

addEdge $ \mathrm{b}\mathrm{r}\to {\mathrm{G}}^{\mathrm{\text{'}}} $

end for

return $ {\mathrm{G}}^{\mathrm{\text{'}}} $

“最短路径的最优子结构性质”指对于G中的路由$ \rho $由函数$ \rho =V\times V\to {E}^{\mathrm{*}} $,其中$ {E}^{\mathrm{*}} $表示图G中所有可能的路径集合。当对于任意的$ x\in V, y\in V $,且$ \rho (x, y) $是最短路径时,则称$ \rho $是最短路径的路由。如果图中的路由是连续的,对于路由$ \rho \left(x, y\right)=x\cdots {u}_{1}\cdots {u}_{m}\cdots y $是节点对$ \left(x, y\right) $最短路径的路由,那么$ \rho \left({u}_{1}, {u}_{m}\right)={u}_{1}, {u}_{2}, \cdots , {u}_{m} $也是节点对$ \left({u}_{1}, {u}_{m}\right) $的最短路径路由。

“最短路径代价不失真”指在线性时间内,如果原拓扑与预处理后的拓扑得到的两通信节点间的最短路径分别为$ {p}_{1}\mathrm{、}{p}_{2} $,其代价分别为$ {c}_{1}\mathrm{、}{c}_{2} $,那么有$ {c}_{1}={c}_{2} $且对于任意节点$ v $,若$ v\in {p}_{1} $$ v\in {p}_{2} $

证明如下:设在原拓扑中路由获得的最短路径$ {p}_{1} $由节点集$ \left\{{v}_{1}, {v}_{2}, \cdots , {v}_{i}\right\} $组成,其中存在通信节点集$ \left\{{v}_{1}, {v}_{j}, \cdots , {v}_{i}\right\} $,源溯节点必为通信节点。若路径中不存在除源溯节点外其他通信节点,那么源溯节点必属于同一个环,此时$ {p}_{2}=\left\{{v}_{1}, {v}_{i}\right\} $,根据预处理步骤可得最短路径代价不失真理论;若路径中存在其他通信节点,根据最短路径的最优子结构性质可得相邻的两个通信节点($ {v}_{j}, {v}_{j+1}) $的路径$ \left\{{v}_{j}, \cdots , {v}_{j+1}\right\} $必定也是最短路径。而预处理的过程即将$ \left\{{v}_{j}, \cdots , {v}_{j+1}\right\} $简化为$ \left\{{v}_{j}, {v}_{j+1}\right\} $,因此$ {c}_{1}={c}_{2} $,且$ {p}_{2} $中的通信节点都存在于$ {p}_{1} $中,否则$ {p}_{1} $$ {p}_{2} $必定有一条不为最短路径。

2.2 源溯节点还原

新的拓扑图$ {G}^{\text{'}} $存在的问题可能是不包含业务需求中的源溯节点$ s\mathrm{、}t $,通过节点还原算法(RN)将原拓扑中的这部分节点和边信息还原到拓扑图$ {G}^{\text{'}} $中,步骤如下:

1)判断源溯节点$ s\mathrm{、}t $是否为通信节点,如果是则不需要下列步骤,否则执行下列操作。

2)遍历环内节点,寻找节点$ s、t $所在的环。如果存储空间允许,且可在拓扑生成构建节点时存储节点所在环的信息,则不需要此步骤。

3)计算节点$ s、t $到所在环的所有通信节点的距离。并对每个节点对构建边,并加入到新的拓扑图$ {G}^{\text{'}} $中。算法过程如算法2所示。

算法2  Recover Node $ s, t $ in $ {G}^{\mathrm{\text{'}}} $(RN)

输入  ring in the network $ {R}_{D} $,preprocessing topology $ {G}^{\mathrm{\text{'}}} $,node $ s, t $

输出  topology $ {G}^{\mathrm{\text{'}}} $ including $ s, t $

addNode $ \mathrm{s}, \mathrm{t}\to {\mathrm{G}}^{\mathrm{\text{'}}} $

if $ \mathrm{s}\left(\mathrm{o}\mathrm{r}\mathrm{ }\mathrm{t}\right)\notin \mathrm{C}\mathrm{N} $ then

for $ {\mathrm{R}}_{\mathrm{i}}\in {\mathrm{R}}_{\mathrm{D}} $ do

for node $ {\mathrm{Z}}_{\mathrm{k}}^{\mathrm{i}}\in {\mathrm{V}}_{\mathrm{i}}:\mathrm{z} $ do

if $ \mathrm{s} $=$ \mathrm{z} $ then choose $ {\mathrm{R}}_{\mathrm{i}} $ %find the ring including $ \mathrm{s}, \mathrm{t} $

for $ \mathrm{c}\mathrm{n}\in \mathrm{C}{\mathrm{N}}^{\mathrm{i}} $ do

addEdge($ \mathrm{s}, \mathrm{c}\mathrm{n}\mathrm{ })\to {\mathrm{G}}^{\mathrm{\text{'}}} $

edge($ \mathrm{s}, \mathrm{c}\mathrm{n}) $.value$ \leftarrow $Dijkstra($ {\mathrm{R}}_{\mathrm{i}}, \mathrm{s}, \mathrm{c}\mathrm{n} $

end if

图 4所示为预处理及源溯节点还原过程示意图。图 4(a)为初始多环网络拓扑图,标黑节点$ s\mathrm{、}t $为源溯节点。图 4(b)为预处理后的拓扑图,图中网格节点为保留的通信节点,加粗黑实线是预处理后拓扑中通信节点间形成的新边,黑色未加粗实线为源溯节点还原过程中形成的边。

Download:
图 4 预处理及源溯节点还原过程 Fig. 4 Restoration process of preprocessing and source tracing nodes
2.3 路径还原

在预处理的拓扑中执行选路算法所获得的路径为只包括通信节点源溯节点的路径,路径还原算法RP可以将同一环内通信节点间的路径还原为完整的最短路径。该算法还会删除RN算法中添加的源溯节点及包含该节点的边从而还原为最初的预处理拓扑。实现步骤如下:

1)在拓扑图$ {G}^{\text{'}} $中获得初步的路径$ \mathrm{p}\mathrm{a}\mathrm{t}\mathrm{h} $,判断$ \mathrm{p}\mathrm{a}\mathrm{t}\mathrm{h} $中所有边的端节点和末节点是否为同一个环中的节点。若不同,则不执行操作。

2)若该边的端节点和末节点属于同一个环中的节点,在该环中执行寻路算法,获得端节点到末节点的路径$ \mathrm{p}\mathrm{a}\mathrm{t}{\mathrm{h}}^{\mathrm{\text{'}}} $

3)删除路径$ \mathrm{p}\mathrm{a}\mathrm{t}\mathrm{h} $中该边,在$ \mathrm{p}\mathrm{a}\mathrm{t}\mathrm{h} $中从节点$ p $$ q $添加$ \mathrm{p}\mathrm{a}\mathrm{t}{\mathrm{h}}^{\text{'}} $

4)删除拓扑图$ {G}^{\text{'}} $的源溯节点及包含该节点的边。算法过程如算法3所示。

算法3  Recover Path in topology(RP)

输入  ring in the network $ {R}_{D} $,path find in $ {G}^{\mathrm{\text{'}}} $,node $ s, t $

输出  complete $ \mathrm{p}\mathrm{a}\mathrm{t}\mathrm{h} $,topology $ {G}^{\mathrm{\text{'}}} $ removing $ s, t $

for $ \mathrm{E}\mathrm{d}\mathrm{g}\mathrm{e}\in \mathrm{p}\mathrm{a}\mathrm{t}\mathrm{h}:\mathrm{e}(\mathrm{p}, \mathrm{q}) $ do

for $ {\mathrm{R}}_{\mathrm{i}}\in {\mathrm{R}}_{\mathrm{D}} $ do

if($ \mathrm{p}\in {\mathrm{R}}_{\mathrm{i}}) $ then

if($ \mathrm{q}\in {\mathrm{R}}_{\mathrm{i}} $)then

do Dijkstra($ {\mathrm{R}}_{\mathrm{i}}, \mathrm{p}, \mathrm{q} $

$ \mathrm{p}\mathrm{a}\mathrm{t}{\mathrm{h}}^{\mathrm{\text{'}}} $=findPath($ \mathrm{p}, \mathrm{q}) $

deleteEdge($ \mathrm{p}, \mathrm{q}) $ in $ \mathrm{p}\mathrm{a}\mathrm{t}\mathrm{h} $

AddPath($ \mathrm{p}\mathrm{a}\mathrm{t}{\mathrm{h}}^{\mathrm{\text{'}}}, \mathrm{p}\mathrm{a}\mathrm{t}\mathrm{h}, \mathrm{p}, \mathrm{q} $

end for

output($ \mathrm{p}\mathrm{a}\mathrm{t}\mathrm{h} $

for $ \mathrm{E}\mathrm{d}\mathrm{g}\mathrm{e}\in {\mathrm{G}}^{\mathrm{\text{'}}}:\mathrm{e}(\mathrm{p}, \mathrm{q}) $ do

if($ (\mathrm{p}\parallel \mathrm{q})=(\mathrm{s}\parallel \mathrm{t})) $

deleteEdge($ \mathrm{p}, \mathrm{q}) $ in $ {\mathrm{G}}^{\mathrm{\text{'}}} $

end for

路径还原算法过程在大多数情况下可以避免每次都运行。路径还原算法是为了还原同一环中通信节点的路径,而一个环中的通信节点的最短路径只有两种可能,顺时针或者逆时针。而通信节点的数量往往不多,因此,完全可以将路径还原所需要的数据预先计算好并存储下来。存储方式以$ \mathrm{p}\mathrm{a}\mathrm{t}\mathrm{h}(s, t)=(s, t, 0\left(\mathrm{o}\mathrm{r}1\right)) $,其中$ s、t $表示2个通信节点,0和1表示顺时针或者逆时针获得路径。

“最短路径不失真”理论指的是在线性时间内,若网络拓扑直接执行路由算法和经过改进算法获得的非同一环内的节点间的最短路径分别为$ {p}_{1}\mathrm{、}{p}_{2} $,则$ {p}_{1}={p}_{2} $

证明如下:对于节点对$ (s, t) $,节点$ s、t $不在一个环内。若$ {p}_{1}\ne {p}_{2} $,设$ {p}_{1} $由节点集$ \left\{s, {v}_{1}, \cdots , {v}_{\mathrm{i}}, t\right\} $构成,$ {p}_{2} $由节点集$ \left\{s, {u}_{1}, \cdots , {u}_{\mathrm{i}}, t\right\} $构成。由于$ {p}_{1}\ne {p}_{2} $,设$ {p}_{1} $$ {p}_{2}\mathrm{路}\mathrm{径}\mathrm{中} $相异节点为$ \left\{{n}_{1}, {n}_{2}, \cdots , {n}_{i}\right\} $,节点$ {n}_{i} $可能存在于$ \left\{s, \cdots , {{C}_{\mathrm{c}\mathrm{n}}}_{1}\right\} $$ \left\{{{C}_{\mathrm{c}\mathrm{n}}}_{i}, {{C}_{\mathrm{c}\mathrm{n}}}_{i+1}, \cdots , {{C}_{\mathrm{c}\mathrm{n}}}_{i+n}\right\} $$ \left\{{{C}_{\mathrm{c}\mathrm{n}}}_{\mathrm{j}}, \cdots , t\right\} $路径中,其中$ {{C}_{\mathrm{c}\mathrm{n}}}_{i} $表示路径中的通信节点。$ \left\{s, \cdots , {{C}_{\mathrm{c}\mathrm{n}}}_{1}\right\} $$ \left\{{{C}_{\mathrm{c}\mathrm{n}}}_{\mathrm{j}}, \cdots , t\right\} $由2.2节可知均为最短路径算法获得,因此必定相同;若节点$ {n}_{i} $存在于$ \left\{{{C}_{\mathrm{c}\mathrm{n}}}_{i}, \cdots , {{C}_{\mathrm{c}\mathrm{n}}}_{i+1}\right\} $中,根据最短路径的最优子结构性质可得最短路径中的任意一段路径均为最短路径,由于$ {n}_{i} $在另一条路径中不存在,因此该路径上必定不同时存在$ {{C}_{\mathrm{c}\mathrm{n}}}_{i} $$ {{C}_{\mathrm{c}\mathrm{n}}}_{i+1} $,说明$ {p}_{1}\mathrm{、}{p}_{2} $中通信节点存在不同,与最短路径代价不失真理论相悖,因此$ {p}_{1}={p}_{2} $

2.4 算法复杂度分析

多环网络中的路由问题很显然也是一个NP-Hard问题,因此有必要对算法进行复杂度分析。假设该多环网络是双向网络,共有$ j $个环,每个小环平均由$ g $个节点构成,其中每个小环上平均有$ m $个节点为通信节点。默认每个通信节点只与一个通信节点相连接,即不存在多对多$ \mathrm{、} $一对多$ \mathrm{、} $多对一的情况。那么该网络拓扑结果的总结点数为:$ \left|V\right|=j\times g $,边数为$ \left|E\right|=2j\times g+mj $。路由过程的底层算法均采用Dijkstra算法,并以优先队列的方式存储。若不经处理直接在原始网络拓扑中执行路由算法,算法时间复杂度如下:

$ O(\left|E\right|\times \mathrm{l}\mathrm{b}\left|V\right|)=O\left(\right(2j\times g+m\times j)\times \mathrm{l}\mathrm{b}\mathrm{ }(j\times g\left)\right)= \\O\left(\right(j\times g)\times \mathrm{l}\mathrm{b}g+(j\times g)\times \mathrm{l}\mathrm{b}j+(m\times j)\times l\times \mathrm{l}\mathrm{b}\mathrm{ }(j\times g\left)\right) $ (1)

PRR算法由3部分组成。预处理部分首先判断所有的节点度数并标记其是否为通信节点,时间复杂度为$ O(j\times g) $;将所有的通信节点标记后,需要计算同一环内通信节点之间的代价值。即在每一个环内执行一次Dijkstra算法,时间复杂度为$ O(2g\times \mathrm{l}\mathrm{b}g) $。该步可以在不同环内并行进行,若串行执行该步骤,则算法复杂度为$ O(2j\times g\times \mathrm{l}\mathrm{b}g) $。此步时间复杂度共为$ O(2j\times g\times \mathrm{l}\mathrm{b}g)+O(j\times g) $

预处理后的拓扑为由$ m\times j $个节点构成的有向图。RN算法将节点$ s $与节点$ t $加入到改进后的网络拓扑中,每执行一次,时间复杂度为$ O(2g\times \mathrm{l}\mathrm{b}g) $,因此时间复杂度为$ O(4g\times \mathrm{l}\mathrm{b}g) $

拓扑还原后,原有的多环混合网络转换为有向图,执行寻路算法。有向图最多由$ m\times j $个通信节点和2个源溯节点构成。而在这其中,同一环内形成的边数为$ 2m $条,不同环之间形成的边数为$ m\times j $,因此新的拓扑图总共有$ 2m\times j+m\times j=3(m\times j) $条边。此步的算法时间复杂度为$ O\left(3\right(m+j)\times \mathrm{l}\mathrm{b}\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }(m\times j+2\left)\right) $

由此,算法时间复杂度如下:

$ O(j\times g)+O(2j\times g\times \mathrm{l}\mathrm{b}g) +O(4g\times \mathrm{l}\mathrm{b}g)+O\left(3\right(m+j)\times \\\mathrm{l}\mathrm{b}(m\times j+2)) = O(j\times g\times \mathrm{l}\mathrm{b}g)+O\left(\right(m\times j)\times \mathrm{l}\mathrm{b}\mathrm{ }(m\times j\left)\right) $ (2)

2个算法的时间复杂度都含有$ O\left(\right(j\times g)\times \mathrm{l}\mathrm{b}g) $部分。因此,需要比较的部分为:$ O\left(\right(j\times g)\times \mathrm{l}\mathrm{b}j+(m\times j)\times \mathrm{l}\mathrm{b}\mathrm{ }(j\times g\left)\right) $$ O\left(\right(m\times j)\times \mathrm{l}\mathrm{b}\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }(m\times j) $,其底数分别为$ j\times g $$ m\times j $,即前者为所有的节点个数,后者为所有的通信节点个数,因此改进后的算法时间复杂度更优。当环的个数为1时,算法的时间复杂度退化为Dijkstra算法的时间复杂度。时间复杂度的减小无可避免地伴随着空间复杂度的增加,算法需要额外存储一个由$ m\times j $个节点和$ 3(m\times j) $条边组成的新拓扑图,以及通信节点之间路径的数据,但是通信节点在实际拓扑中往往占比很小,因此不需要庞大的存储空间,算法具有应用的价值。

3 实验分析 3.1 实验数据和实验配置

仿真实验的硬件环境为Intel® CoreTMi5-4570 CPU@3.20 GHz,内存4.0 GB,操作系统Windows 10。在NS2网络节点仿真软件上进行网络拓扑仿真,在Intellij idea上进行算法的实现和实验对比。实验通过设置网络节点个数、环的个数、通信节点个数、节点间的平均度数(代价)、“桥”的平均度数来构建网络拓扑。通过搜索空间比、改进比以及算法执行时间作为实验结果参考数据。其中,搜索空间表示最短路径节点数和算法搜索总结点数的比值,搜索空间越接近1,说明算法效果越好。改进比表示两个算法的搜索空间的比值,改进比越大,说明算法相应的改进效果越明显。

3.2 实验结果和分析

复杂多环网络的路由算法测试实验的影响参数主要有环的节点个数、环的个数、环的通信节点个数(即每个环可与其他环连接个数)。在本实验中,网络规模大小(总节点个数)、环的个数和通信节点个数均可调整。原算法与PRR算法的底层寻路算法采用Dijkstra算法,其中PRR算法运行时间不包括生成缓存数据(同一环内通信节点代价及路径)的算法运行时间,每行数据由20组不同源溯节点数据取平均值所得。实验主要分为3部分,分别是同等规模下不同影响参数下的算法性能比较、不同规模下的算法性能比较以及批量业务下的算法性能比较。

1)同等规模不同影响参数下的算法性能对比结果如表 1所示。网络规模的节点总个数皆为10 000,当环个数为20、50和100时,PRR相比于原方法的改进比为1.26~2.62,PRR算法具有更好的表现效果。

下载CSV 表 1 不同参数下实验结果 Table 1 Experimental results under different parameters

$ \rho =\mathrm{通}\mathrm{信}\mathrm{节}\mathrm{点}\mathrm{个}\mathrm{数}/\mathrm{环}\mathrm{个}\mathrm{数} $,从实验数据对比可发现,在一定程度内,随着$ \rho $的不断增加,PRR算法效果表现得越好。$ \rho $也可以理解为每个环与其他环连接的个数占所有环个数比。所以,当$ \rho $较大时,环与环之间的连接较为复杂,每个环可连接的环增加,而PRR算法简化了此步的搜索。但并不是$ \rho $越大,实验效果越好,对比表 1中实验序号2和3可知,出现这种结果的原因是此时的$ \rho $太小,环与环之间连通性太高,导致节点与节点间路径大幅减小,效果不明显。后续实验发现当$ \rho < 0.35 $该结果成立。

当环个数不变时,通信节点个数增加,改进比虽然有较小提升,但原算法时间有明显减小,而PRR算法运行时间明显增加。出现这种结果的主要原因是通信节点个数增加后,环与环之间连通性增强了,节点到节点间路径更短了,因此原算法运行时间减少,而改进算法由于通信节点的增加,构建新拓扑图复杂度则提升。

2)不同规模下的算法性能对比结果如表 2所示。从数据中可以观察,改进比均值为2.10,说明PRR算法具有一定的优越性。网络中通信节点的个数设置为5,当环个数固定,随着每个环中节点个数增加,PRR算法的表现越来越优于原算法;而当每个环中节点个数一定时,随着环个数增加,PRR算法的表现也更加优良。因此可以得出当网络规模越大时,PRR算法的效果越好。从表 2的实验数据1可以看出,当网络规模较小时,PRR算法运行时间甚至比原算法执行时间更长,主要原因是当网络规模较小时,寻路所用时间占比重较小。

下载CSV 表 2 不同规模下实验结果 Table 2 Experimental results at different scales

3)批量业务下算法性能对比结果如图 5所示,其中,(6,DJS算法)中6表示通信节点个数。前2个实验的PRR算法执行时间不包括生成缓存数据的执行时间,因为在实际情况下,一个网络往往需要处理成千上百万个业务,因此预处理的时间往往可以忽略不计。本次实验在10 000个节点、100个环的网络中测试不同通信节点个数下Dijkstra算法和PRR算法的性能表现。由图 5可知当业务数不超过20时,改进算法的效果已经优于传统算法;当通信节点个数减少时,相交点来的更快。从图中可以看出,Dijkstra算法处理批量业务的执行时间随着业务量的增加呈线性增长,而PRR算法随着业务量的增长,算法执行时间不断增长,且速度较为平稳与缓慢。但PRR在业务数量较小时,耗时较长。这是因为分治划分导致了额外开销,这是PRR的不足之处。

Download:
图 5 批量业务下算法的执行时间 Fig. 5 Algorithm execution time under batch business
4 结束语

本文提出一种针对复杂多环网络拓扑的路由改进算法PRR,采用分治法将一个大网络拓扑路由问题划分为多个小网络拓扑路由问题。PRR算法只在节点数和边数较少的单个环以及预处理后的有向图上执行,可避免原有算法在复杂多环网络中由于节点和边数的数量较多而导致复杂度激增,同时PRR算法在将原有拓扑进行预处理后,通过还原算法保证寻路结果的正确性。实验结果表明,该路由算法与Dijkstra算法相比,在复杂多环网络拓扑中具有更好的效果。下一步将通过业务摘要生成、近似计算等方法,缩短PRR的耗时,提升其在批量业务下的性能表现。

参考文献
[1]
郑正, 徐明伟, 李琦, 等. SDN网络拓扑污染攻击防御机制研究[J]. 计算机研究与发展, 2018, 55(1): 207-215.
ZHENG Z, XU M W, LI Q, et al. Defending against SDN network topology poisoning attacks[J]. Journal of Computer Research and Development, 2018, 55(1): 207-215. (in Chinese)
[2]
胡皓, 杨德伟, 王华, 等. 基于运动状态感知的容迟网络路由算法[J]. 北京理工大学学报, 2019, 39(1): 72-78.
HU H, YANG D W, WANG H, et al. A motion awareness based routing algorithm for delay tolerant network[J]. Transactions of Beijing Institute of Technology, 2019, 39(1): 72-78. (in Chinese)
[3]
李莉, 李雪梅, 李秀滢. 改进的无线传感器网络路由算法[J]. 传感器与微系统, 2019, 38(2): 150-153.
LI L, LI X M, LI X Y. Improved routing algorithm for WSNs[J]. Transducer and Microsystem Technologies, 2019, 38(2): 150-153. (in Chinese)
[4]
张举, 王浩, 罗舒婷, 等. 基于遗传算法的混合软件定义网络路由节能算法[J]. 计算机科学, 2020, 47(6): 242-247.
ZHANG J, WANG H, LUO S T, et al. Hybrid software defined network energy efficient routing algorithm based on genetic algorithm[J]. Computer Science, 2020, 47(6): 242-247. (in Chinese)
[5]
周牧, 李垚鲆, 谢良波, 等. 基于多核最大均值差异迁移学习的WLAN室内入侵检测方法[J]. 电子与信息学报, 2020, 42(5): 1149-1157.
ZHOU M, LI Y P, XIE L B, et al. WLAN indoor intrusion detection approach based on multiple kernel maximum mean discrepancy transfer learning[J]. Journal of Electronics and Information Technology, 2020, 42(5): 1149-1157. (in Chinese)
[6]
张敏, 许渤, 蔡怡, 等. 基于遗传算法的大规模WDM光网络RWA算法[J]. 光通信技术, 2018, 42(11): 1-4.
ZHANG M, XU B, CAI Y, et al. Routing and wavelength assignment based on genetic algorithm in large scale WDM network[J]. Optical Communication Technology, 2018, 42(11): 1-4. (in Chinese)
[7]
林绵锋, 罗来荣, 刘雪原, 等. 波分复用光环形网络结构及性能的研究[J]. 光子学报, 1999, 28(4): 336-340.
LIN M F, LUO L R, LIU X Y, et al. Architectural and performance analysis of Wavelength Division Multiplexing (WDM) optical ring network[J]. Acta Photonica Sinica, 1999, 28(4): 336-340. (in Chinese)
[8]
AIELLO W, BHATT S N, CHUNG F R K, et al. Augmented ring networks[J]. IEEE Transactions on Parallel and Distributed Systems, 2001, 12(6): 598-609. DOI:10.1109/71.932713
[9]
WEPIWE G, SIMEONOV P L. A concentric multi-ring overlay for highly reliable P2P networks[C]//Proceedings of IEEE International Symposium on Network Computing and Applications. Washington D. C., USA: IEEE Press, 2005: 83-90.
[10]
WANG J, YURCIK W. A survey and comparison of multi-ring techniques for scalable battlespace group communications[EB/OL]. [2020-08-01]. https://www.zhangqiaokeyan.com/academic-conference-foreign_defense-transformation-network-centric-systems_thesis/02051571549.html.
[11]
李京文, 熊焰, 高燕. CA-Chord: 基于主从环的Chord路由算法[J]. 计算机工程, 2009, 35(11): 107-109.
LI J W, XIONG Y, GAO Y. CN-Chord: Chord routing algorithm based on main and subordinate ring[J]. Computer Engineering, 2009, 35(11): 107-109. (in Chinese)
[12]
PRASATH R. Shared resource allocation using token based control strategy in augmented ring networks[J]. Springer, 2011, 32(11): 555-567.
[13]
TERASHIMA R S, FIX J D. Greedy routing on augmented ring graphs[EB/OL]. [2020-08-01]. https://www.researchgate.net/publication/220489142_Greedy_Routing_on_Augmented_Ring_Graphs.
[14]
YOON M G. Traffic grooming and light-path routing in WDM ring networks with hop-count constraint[C]// Proceedings of IEEE International Conference on Communications. Washington D. C., USA: IEEE Press, 2001: 432-441.
[15]
祝华平, 李蜀瑜. C-Chord: 一种改进的Chord路由算法[J]. 计算机技术与发展, 2013, 12(3): 47-50.
ZHU H P, LI S Y. C-Chord: an improved Chord routing algorithm[J]. Computer Technology and Development, 2013, 12(3): 47-50. (in Chinese)
[16]
BARRIÈRE L, FÀBREGA J, SIMÓ E, et al. Fault‐tolerant routings in chordal ring networks[J]. Networks, 2015, 36(3): 180-190.
[17]
ZHANG Z, HU W, YE T, et al. Routing and spectrum allocation in multi-ring based data center networks[J]. Optics Communications, 2016, 360(1): 25-34.
[18]
LIU Y L. Routing and wavelength assignment for exchanged crossed cubes on ring-topology optical networks[J]. Soft Computing, 2018, 22(3): 6693-6703.
[19]
AUSAVARUNGNIRUN R, FALLIN C, YU X, et al. A case for hierarchical rings with deflection routing: an energy-efficient on-chip communication substrate[J]. Parallel Computing, 2016, 54(3): 29-45.
[20]
SHIBATA N, KANEKO S, HONDA K, et al. Deterministic layer-2 ring network with autonomous dynamic gate shaping for multi-service convergence in 5G and beyond[C]//Proceedings of 2020 Optical Fiber Communications Conference and Exhibition. Washington D. C., USA: IEEE Press, 2020: 421-431.
[21]
DENG Y, JIA Z, YANG F. Synchronizability of multilayer star and star-ring networks[J]. Discrete Dynamics in Nature and Society, 2020, 20(1): 1-20.