网络动态路由计算方法、装置及设备与流程

文档序号:16309366发布日期:2018-12-19 05:12阅读:180来源:国知局
网络动态路由计算方法、装置及设备与流程
本发明涉及路由计算方法
技术领域
,尤其是涉及一种网络动态路由计算方法、装置及设备。
背景技术
伴随着新兴网络(如移动互联网,物联网等)极大发展,以及网络用户的增长,互联网面临的问题是用户对网络服务的多样化需求和网络流量的极大增长。网络环境的变化,对于路由技术的发展提出了挑战。对于能够适应网络流量,网络拓扑等网络环境变化的动态路由算法的研究在提高网络的利用率,使路由技术适应当前网络的发展等方面具有很强的现实意义和实用价值。目前,现有的常用相关算法需要每个路由器去获得全域的拓扑信息,路由器根据全域的拓扑作出符合要求的路由决策或需要在每个路由器中维持一张距离向量表,很长的时间才能达到收敛状态。当网络中某条链路突然断开或者是发生拥塞,现有算法不能做出快速或有效的反应。技术实现要素:有鉴于此,本发明的目的在于提供一种网络动态路由计算方法、装置及设备,以当网络中某条链路突然断开或者是发生拥塞时,仍能够尽最大限度保证路由的可达性。第一方面,本发明实施例提供了一种网络动态路由计算方法,该方法包括:判断当前节点的邻接节点是否为目的节点,如果是,选择目的节点为下一节点;如果否,根据节点向量分别计算当前节点、邻接节点与目的节点的距离,分别得到第一距离值和第二距离值;节点向量通过机器学习训练得到;随机选择可用的小于第一距离值的第二距离值对应的邻接节点作为下一节点。结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,该方法还包括通过机器学习训练节点向量的步骤:计算当前节点与目的节点间的最短距离;根据第二节点向量生成当前节点与目的节点间的距离函数;根据最短距离和距离函数生成损失函数;最小化损失函数,得到节点向量。结合第一方面及其第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,在通过机器学习训练节点向量的步骤之前,还包括:选取网络中的所有节点作为训练集或按照randomwalks抽样生成训练集;将训练集中的节点向量化,得到第一节点向量;根据预设的初始化方法对第一节点向量进行初始化,得到第二节点向量。结合第一方面及其第一种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,根据第二节点向量生成当前节点与目的节点间的距离函数的步骤,包括:分别生成当前节点的one-hot向量和目的节点的one-hot向量;根据第二节点向量、当前节点的one-hot向量和目的节点的one-hot向量生成距离函数。结合第一方面及其第一种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,该方法还包括正则化最短距离的步骤:将最短距离进行正则变换,以得到目标范围内的最短距离值。结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,该方法还包括:当不存在小于第一距离值的第二距离值时,如果目的节点为当前节点的第一邻接节点的第二邻接节点,选择第一邻接节点作为下一节点;如果目的节点不是当前节点的第一邻接节点的第二邻接节点,当前节点问询目的节点是否为第二邻接点的第三邻接点,直至找到目的节点,选择目的节点所在路径的第一邻接节点作为下一节点。第二方面,本发明实施例还提供一种网络动态路由计算装置,包括:判断模块,用于判断当前节点的邻接节点是否为目的节点,如果是,选择模块用于选择目的节点为下一节点;如果否,计算模块用于根据节点向量分别计算当前节点、邻接节点与目的节点的距离,分别得到第一距离值和第二距离值;节点向量通过机器学习训练得到;选择模块还用于随机选择可用的小于第一距离值的第二距离值对应的邻接节点作为下一节点。结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,计算模块还用于:计算当前节点与目的节点间的最短距离;根据第二节点向量生成当前节点与目的节点间的距离函数;根据最短距离和距离函数生成损失函数;最小化损失函数,得到节点向量。结合第二方面及其第一种可能的实施方式,本发明实施例提供了第二方面的第二种可能的实施方式,其中,该装置还包括向量化模块和初始化模块;向量化模块,用于选取网络中的所有节点作为训练集或按照randomwalks抽样生成训练集;向量化模块,还用于将训练集向量化,得到第一节点向量;初始化模块,用于根据预设的初始化方法对第一节点向量进行初始化,得到第二节点向量。第三方面,本发明实施例还提供一种电子设备,包括存储器、处理器,存储器中存储有可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述第一方面或其任一种可能的实施方式所述的方法的步骤。本发明实施例带来了以下有益效果:本发明实施例提供了一种网络动态路由计算方法、装置及设备,在当前节点进行下一跳节点的选择时,首先判断目的节点是否为当前节点的邻接节点,如果是,直接将该目的节点选为下一节点,如果不是,需分别计算当前节点及其各邻接节点与目的节点直接的距离,分别得到第一距离值和第二距离值,在计算距离的过程中,将各节点通过向量进行表示,并通过机器学习对向量化的节点进行训练,得到节点向量,使用该节点向量计算上述距离,可以提高运算速度,减少存储空间的占用。得到距离计算结果后,随机选择可用的小于第一距离值的第二距离值对应的邻接节点作为下一节点,在网络中当前节点选中的链路突然断开或者是发生拥塞时,可以迅速选择可用的其他邻接节点作为下一节点,所需反应时间短,且仍能够尽最大限度保证路由的可达性。本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的网络动态路由计算方法流程图;图2为本发明实施例提供的网络动态路由计算方法中训练节点向量流程图;图3为本发明实施例提供的网络动态路由计算方法的实例图;图4为本发明实施例提供的网络动态路由计算方法的另一种实例图;图5为本发明实施例提供的网络动态路由计算装置的结构框图;图6为本发明实施例提供的网络动态路由计算装置的另一种结构框图;图7为本发明实施例提供的电子设备的结构框图。图标:21-判断模块;22-选择模块;23-计算模块;24-向量化模块;25-初始化模块;31-存储器;32-处理器。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。目前,比较常见的路算法有距离向量算法(distancevectoralgorithm)和链路状态算法(linkstatealgorithm)。比如在常见的路由协议中,ripng(ripnextgeneration,路由选择信息协议下一代)使用距离向量算法来确定最佳路径,ospfv3使用链路状态算法来确定网络的最佳路径,eigrp(enhancedinteriorgatewayroutingprotocol,增强内部网关路由协议)同时使用了这两种算法。然而,链路状态算法需要每个路由器去获得全域的拓扑信息,路由器根据全域的拓扑作出符合要求的路由决策。这一算法在面对网络拓扑变化时,需要使用洪泛的方式通知到每个路由器拓扑的变化。距离向量算法虽然不需要每个路由去获取全域的拓扑,且只需要在每个路由器中维持一张距离向量表,具有分布式的特点,但是距离向量算法需要很长的时间才能达到收敛状态而且对于网络拓扑变化的敏感性较差。基于此,本发明实施例提供的一种网络动态路由计算方法、装置及设备,使用网络的拓扑信息来构建数据集,采用机器学习的方式来训练得到编码网络拓扑的节点向量。提出了一种节点向量的函数,路由方向的选择由函数值的大小关系来确定。本发明实施例不需要路由器去保存全域的拓扑信息,也不需要使用表来存储距离向量。在每一个网络节点处进行路由只需要知道当前网络节点、与之相邻的网络节点以及目的网络节点的节点向量即可。为便于对本实施例进行理解,首先对本发明实施例所公开的一种网络动态路由计算方法进行详细介绍。实施例1本发明实施例1提供了一种网络动态路由计算方法,参见图1所示的网络动态路由计算方法流程图,该方法包括:步骤s102,判断当前节点的邻接节点是否为目的节点,如果是,选择目的节点为下一节点。当前节点有至少一个邻接节点,判断目的节点是否存在于当前节点的邻接节点中,如果是,选择这个目的节点作为下一节点,路由结束。步骤s104,如果否,根据节点向量分别计算当前节点、邻接节点与目的节点的距离,分别得到第一距离值和第二距离值。节点向量通过机器学习训练得到;节点向量是通过机器学习训练后得到的优化的矩阵。节点向量的行数为节点个数,列数为指定的不大于行数的正整数。节点向量的每一行是一个节点的向量。设网络为g=(v,e),其中v是网络节点的集合,e是网络链路的集合。对于所有的网络中的节点o∈v,记vo为表征该节点的m维节点向量,则在网络g中,任意两节点i,j之间的距离dij可以使用节点向量的函数f(vi,vj)来估计,即当目的节点不存在于当前节点的邻接节点中,根据节点向量分别计算当前节点、邻接节点与目的节点的距离,分别得到第一距离值和第二距离值。步骤s106,随机选择可用的小于第一距离值的第二距离值对应的邻接节点作为下一节点。为了使数据包能够到达目的节点,下一跳的节点一定会比当前数据包所在的节点更加接近目的节点,或者下一跳就是目的节点。在路由当中,下一跳必然是当前数据包所在节点的某个邻接节点,为了使下一跳更加接近目的节点,需要选择小于第一距离值的第二距离值对应的邻接节点作为下一节点。例如,当目的节点与当前节点不直接相连时,计算当前节点c与目的节点d的距离f(vc,vd)以及当前节点c的邻接节点a1,…,ak与目的节点d的距离f(va1,vd),…,f(vak,vd),找出满足f(vc,vd)>f(vai,vd)的邻接节点作为下一跳地址。距离的差值f(vai,vd)-f(vc,vd)的正负事实上指示了路由的方向,这一差值为负值,代表以为下一跳节点会更加远离目的节点,是错误的路由方向。当差值为正时,代表下一跳节点更接近目的节点,沿着这一方向路由能到达目的节点。此外,不等式f(vc,vd)>f(vai,vd)保证了下一跳节点更接近目的节点,因而在路由中不会形成环路。通常,在路有种能够满足小于第一距离值的第二距离值对应的邻接节点不止有一个,只要函数f(·)对距离的估计足够的准确,选择满足上述条件的邻接节点作为下一跳地址都能正常进行路由,即在网络中可以存在从当前节点到目的节点的多条路径。此外,由于当前节点都能够独立的选择下一跳的路由,当当前节点与选中的下一跳邻接节点之间的链路发生断裂或者拥堵时,只要仍然存在满足路由条件的邻接节点存在,该邻接点即为可用的节点,路由仍然能够正常的进行。所以,在不重新训练节点向量的情况下,网络拓扑的变化不会影响全部的相关路由,本方法对于网络拓扑的变化有一定的容忍度。本发明实施例提供了一种网络动态路由计算方法,在当前节点进行下一跳节点的选择时,首先判断目的节点是否为当前节点的邻接节点,如果是,直接将该目的节点选为下一节点,如果不是,需分别计算当前节点及其各邻接节点与目的节点直接的距离,分别得到第一距离值和第二距离值,在计算距离的过程中,将各节点通过向量进行表示,并通过机器学习对向量化的节点进行训练,得到节点向量,使用该节点向量计算上述距离,可以提高运算速度,减少存储空间的占用。得到距离计算结果后,随机选择可用的小于第一距离值的第二距离值对应的邻接节点作为下一节点,在网络中当前节点选中的链路突然断开或者是发生拥塞时,可以迅速选择可用的其他邻接节点作为下一节点,所需反应时间短,且仍能够尽最大限度保证路由的可达性。为了使上述距离的计算更加准确,需要对节点向量进行优化,所以,该方法还包括通过机器学习训练节点向量的步骤,具体为:步骤s202,计算当前节点与目的节点间的最短距离。例如,可以用公式计算当前节点i与目的节点j间的最短距离,其中,vi为表示当前节点i的向量,vj为表示目的节点j的向量,k为用于调整最短距离的常数,用于将得到的距离转化为相对距离,便于计算。步骤s204,根据第二节点向量生成当前节点与目的节点间的距离函数。第二节点向量是经过初始化后的表示各节点的向量。距离函数为对当前节点与目的节点间距离的预测。对节点向量进行训练的过程,即获取使距离函数的值最接近最短距离值时的第二节点向量的值,即节点向量。步骤s206,根据最短距离和距离函数生成损失函数。例如,可以选取loss(dij-f(uim,ujm))为损失函数,其中,dij为计算得到的最短距离,f(uim,ujm)为距离函数,ui为节点i的n维one-hot向量(行向量),uj为节点j的n维one-hot向量。损失函数必须是单调递增的函数。步骤s208,最小化损失函数,得到节点向量。例如,可以选用公式最小化损失函数,其中s是训练集,(i,j,dij)中i,j分别表示源节点和目的节点。使用梯度下降算法求解该式的值,经求解得到的m即为节点向量。节点向量的训练应该统一放到网络中具有计算能力的某一台设备上,计算好节点向量后,再由这台网络设备分发给网络中的各个节点。考虑到网络的时变性,训练集s应该按照一定的周期来进行更新,并重新训练节点向量。虽然可以直接选用node2vec生成的向量直接进行路由,但是采用不同的对训练集的取样方法和初始化方法,产生更好的对节点向量的训练效果,会提高路由的准确率。经过实验测试,可以优选以下取样和初始化的方法。在通过机器学习训练节点向量的步骤之前,还包括:选取网络中的所有节点作为训练集或按照randomwalks抽样生成训练集。(1)选取网络中的所有节点作为训练集:把网络中所有的节点对以及它们之间的距离收集起来作为训练集,这一方式需要计算设备能够获取到全局的拓扑,这也意味着需要额外的算法来帮助计算设备获取全域的拓扑信息。不过,优点也是显而易见的,仅仅在训练集上就能对所有可能的源节点和目的节点之间的路由进行测试。(2)按照randomwalks抽样生成训练集:在grovera和leskovecj的论文node2vec中为了构建“类文本”数据集,提出了randomwalks采样方法。在本发明中,基于采样的训练集的构建也采用randomwalks的方式。记randomwalks采样得到的长度为l的节点数据集包括的节点序列为{s1,s2,…,sl},使用节点序列可以构建训练集相比使用所有的节点对,此处基于randomwalks的采样方法只是用到了相邻节点间的距离关系,计算节点向量时不需要知道全域的拓扑信息,只需要将每次随机游走经过的节点发送给特定的节点。在得到训练集后,将训练集中的节点向量化,得到第一节点向量。可以使用独热码(one-hotcode,one-hot)将训练集中的节点向量化,将向量化后的节点n个m维节点向量依次按行排列得到n*m维的矩阵,即为第一节点向量,其中,n为训练集中的节点个数,m为不大于n的正整数。根据预设的初始化方法对第一节点向量进行初始化,得到第二节点向量。预设的初始化方法可以为随机初始化也可以使用node2vec初始化第一节点向量,初始化后的第一节点向量即为第二节点向量。word2vec是在自然语言处理领域内,mikolov等人提出的使用分布式的densevector来表示word的方法,这一向量编码了word的很多特征,可以用来比较两个word之间的相似性,比如vec(king)–vec(man)+vec(woman)与vec(queen)十分的近似。使用一个向量来表示word启发了很多的科研工作者,自此以后,使用向量来表示某一object在机器学习领域内受到十分的欢迎,比如在nlp领域还有sentence2vec,doc2vec,paper2vec等。word2vec有cbow和skipgram两种模型,两种模型都是特制的神经网络。word2vec需要有大规模的文本序列作为训练集。cbow与skipgram不同之处是,cbow以文本中的某个单词的词向量为预测的输出,而以这个单词两边相邻的多个word的词向量作为模型输入,skipgram以文本中的单个单词的词向量作为输入,而以这个单词左右相邻单词的词向量作为输出。经过word2vec模型训练后,意思相近的词对应的词向量也在几何上是近似的。deepwalk创新性地提出了使用vector来表示图中vertex的想法,在deepwalk中,可以使用word2vec中的skipgram模型来生成节点的向量。deepwalk使用vertex的vector来表示图的特征,并用来解决socialnetwork中的标签分类等实际的问题。可以定义一种randomwalk方法来采样得到图中节点的抽样序列,节点的序列随后会被当做训练集丢入skipgram模型来训练节点向量。randomwalk的做法是,首先从网络中选取一个初始的节点,其次,节点序列中的下一个节点会从当前节点的邻接节点中以等概率采样的方式产生。如此循环往复,直到节点序列的长度达到先前设置的最大序列长度。为了保证训练得到的节点向量能够充分的表征图的特征,在deepwalk中,网络中的每个节点都会成为初始化的节点,并且以每一个节点作为初始化节点的抽样序列都有γ个。node2vec的主要工作是对deepwalk方法的改进。deepwalk在选取节点抽样序列中下一个节点时采用的是等概率均匀采样的方式,这用来对无权的图进行采样是十分合理的,但是不适用于加权图的采样。毕竟对于加权图而言,等概率采样的方式训练出来的节点向量并不能很好反应节点周边链路权值的不同。因此可以结合dfs和bfs这两种遍历算法对于randomwalk方法进行改进,对于下一节点的采样可以有三种不同的情形,而且采样的概率与链路的权重是相关的。由此,能够使得到的节点的向量充分表达图中链路的权重特征。为了提高计算距离的运算效率,减少数据的存储所需空间,需要构造简单方便的函数,作为距离函数。可以根据第二节点向量生成当前节点与目的节点间的距离函数的步骤,包括:分别生成当前节点的one-hot向量和目的节点的one-hot向量。根据第二节点向量、当前节点的one-hot向量和目的节点的one-hot向量生成距离函数。记ui为节点i的n维one-hot向量,即在向量ui中,除第i维度取值为1外,其他各维元素处取值为0,节点i,j间的最短距离可以表示为:在路由中不会用到i=j这以条件,上式重写为:其中i为单位对角矩阵,参数α为系数(α>0),a为n*n维的矩阵,a中的元素aij表示网络g(网络节点的个数为n)中以i为源节点,j为目的节点的最短路径距离,即a为网络图g的距离矩阵。矩阵a+αi为实对称矩阵,当系数α足够大时,矩阵a+αi为正定矩阵,对他进行特征值分解:a+αi=p∧pt,矩阵a+αi的特征值均大于零,记矩阵为矩阵∧中所有元素开根号后得到的矩阵,则故记则dij=uiq(ujq)t=aij,(i≠j)。记第二向量为m,m是n*m维矩阵并满足vi=uim,若取距离函数为向量的点积,则距离函数可以为:当取m=n且m=q时,f(vi,vj)是距离dij的无偏估计(i≠j)。即一定存在n维节点向量组成的n*n维的矩阵m,使函数f(vi,vj)是距离dij的无偏估计(i≠j),且m满足a+αi=mmt,其中系数α的取值需要足够大,使得矩阵a+αi正定。尽管对矩阵a+αi进行特征值分解,可以得到n维的节点向量。但是直接采用特征值分解的方法来求解节点向量并不可行。首先,为了使矩阵a+αi正定,需要找到合适的α,而且,矩阵a+αi对角线上的元素不再表示具体的距离,使得基于矩阵分解得出的节点向量并不是“完美的”(节点向量与自身的数量积不为0,因此f(vi,vj)不表示距离)。其次,当网络节点个数n特别大时,对于n*n维矩阵进行特征值分解并不现实。更一般地说,节点向量的维度m不应当与节点个数n挂钩,否则节点的数量变化会导致所有的节点向量的维度变化。对于节点特别多的网络,应当选取m远小于n。另外,距离的估计函数f(·)也不应该被限制为点积函数,而应该是任意简单方便的函数,比如更直观的欧式距离函数、余弦距离函数等。然而,一般性的,在选定函数f(·)和节点向量维度m的前提下,是否存在节点向量m组成的矩阵使得f(vi,vj)是距离dij的无偏估计有待于理论证明。对此,在本文中,采用有监督的机器学习方法,使得距离的预测值逼近真实值d,而不再寻求预测值在理论上是真实值的无偏估计。在实际网络中值得注意地是,距离dij因节点i和节点j而异,取值范围可能很广,这在使用梯度下降进行训练时可能导致结果不收敛。另外,注意到在使用节点算法进行路由时,只需要关注的相对大小,而不是距离的绝对数值。因而,对于距离dij散步很广的网络,该方法还包括正则化最短距离的步骤:将最短距离进行正则变换,以得到目标范围内的最短距离值。例如,dnew=w·dold+b,其中,w为权重,b为偏置,变换的目的是使得新的距离dnew限制在比较小的目标范围内。目标范围可以预先设定,比如设置为dij∈(0,1)。由于目前基于节点向量的路由受制于节点向量的训练质量,并不能为全部的源节点和目的节点提供路由决策,为保证整个路由算法的可靠性,本发明基于深度优先遍历提供了一种当节点向量无法路由时的辅助算法。该方法还包括:当不存在小于第一距离值的第二距离值时,如果目的节点为当前节点的第一邻接节点的第二邻接节点,选择第一邻接节点作为下一节点;如果目的节点不是当前节点的第一邻接节点的第二邻接节点,当前节点问询目的节点是否为第二邻接点的第三邻接点,直至找到目的节点,选择目的节点所在路径的第一邻接节点作为下一节点。当前节点的邻接点为第一邻接节点,第一邻接节点的邻接点为第二邻接节点,第二邻接节点的邻接点为第三邻接节点。当当前节点不知道怎么到目的节点时,去询问它的第一邻接节点,第一邻接节点确认目的节点不是它的邻居,然后第一邻接节点再去询问第二邻接节点,如此递归下去。只要存在源节点到目的节点的路径,最后一定能找到这条路径。为减小网络通信的代价,辅助算法只是寻找一条可用路由,并不能保证这条路由是最短路径路由。本发明将graphrepresentation的相关成果应用到路由上,将机器学习技术应用到路由中,提出的一种基于编码了网络拓扑信息的节点向量来进行路由的算法。提供对于动态路由的支持。即便在网络中某条链路突然断开或者是发生拥塞,算法仍能能够尽最大的限度保证路由的可达性,而不需要额外的时间来对网络拓扑的变化做出反应。实施例2本发明实施例2提供了一种网络动态路由计算方法。参见图3所示的网络动态路由计算方法的实例图,现在假设需要寻找以b路由器为源点,d路由器为目的节点的路由。图中字母旁的数字是经过计算得到的f(vi,vd)的值(i=a,b,…,f)。显然在b的邻接节点中,使得距离函数公式满足f(vb,vd)>f(vi,vd)成立的节点i相比b距离目的节点更接近。因此找到符合条件i的作为下一跳地址会使得数据包沿着正确的方向前进。参见图4所示的网络动态路由计算方法的另一种实例图,现在假设b与c之间的连接突然断开了,如图所示。这时原来的最短路径b-c-d断开,按照本发明的算法,在b路由器处仍然可以选择替代方案,通过f路由器转发路由。这一决策所需时间只是b检测到与c的连接断开所需时间,而不需要其他是时间来使得路由算法达到收敛。同样地,若a到d的最短路由a-f-e-d在e-d处断开,只要链路断开的消息经由f传回a后,a可以选择a-b作为替代的路由。实施例3本发明实施例3提供了网络动态路由计算方法的可行性测试,包括4组实验。第一组实验,是在一个小型网络(100节点,链路权值都是1)中测试使用本发明的rbnv(routingbasedonnodevectors,基于节点向量的路由)进行最短路径路由。实验结果证明使用node2vec得到的向量来初始化节点向量能够缩短训练时间,此外,使用抽样方法为训练集时,使用node2vec得到的向量来初始化节点向量可以提高准确率。第二组实验,考虑到某些情况下路由对链路的时延有要求,使用了小型网络来测试使用rbnv在链路有不同权重的网络中进行最短路径路由。第三组实验,为证明rbnv在更大网络中的可用性,在一个中型的网络(1000节点,无权网络)测试rbnv。第四组实验,为测试rbnv对网络突变应对能力,在一个小型网络(34节点,无权网络)中,随机断开某条链路,并测试rbnv的路由能力。在以下实验中,本文使用了均方误差作为损失函数,选取公式为节点间距离的估计函数。在初始化矩阵的方式上,采用了两种不同的方式,一种是使用随机数来初始化,另一种是对网络拓扑进行训练得到node2vec的节点向量,再用这些节点向量来初始化矩阵。实验中采用的拓扑是使用python的网络库networkx调用随机算法生成的随机网络拓扑,并且为了避免拓扑太过稀疏,指定网络中每个节点的度都为3。表1为在100节点无权网络上使用节点向量进行路由的准确率,以及训练节点向量所花时间,展示了通过5种不同方式获取的节点向量,在随机生成的100个节点的无权网络图中对所有可能的源节点和目的节点进行路由的结果,以及各个方法所花的平均训练时间(在4gb内存,4核cpu的虚拟机上训练)。使用节点向量进行最短路径路由的策略是,始终选择邻接节点中使得f(vai,vd)最小的且满足f(vc,vd)>f(vai,vd)的节点作为下一跳节点。若当前节点不是目的节点且邻接节点中不存在使f(vc,vd)>f(vai,vd)成立的节点,则意味着用节点向量的方法找不到下一跳节点,也即找不到源节点到目的节点的路由,路由不可达。本文中,将节点向量得到的路由与实际上的最短路径进行比较,若网络跳数一样,则称该路由最短可达,若节点向量能够找到源节点到目的节点的路由,且不是最短可达则称为非最短可达。在表1中剔除了源节点就是目的节点,以及源节点和目的节点直接相连的共393组不需要使用节点向量来路由的(源节点,目的节点)对。最短可达非最短可达不可达训练时间(秒)①8166(86.798%)1020(10.842%)222(2.360%)29.8②2963(31.494%)291(3.093%)6154(65.412%)588.2③8634(91.773%)751(7.983%)23(0.244%)57.9④9226(98.065%)175(1.860%)7(0.074%)762.0⑤9234(98.150%)166(1.764%)8(0.085%)66.4表1①直接选用node2vec生成的向量进行路由。②按randomwalks抽样得到训练集,随机初始化节点向量,训练节点向量。③按randomwalks抽样得到训练集,node2vec向量初始化节点向量,训练节点向量。④选取所有的节点对作为训练集,随机初始化节点向量,训练节点向量。⑤选取所有的节点对作为训练集,node2vec向量初始化节点向量,训练节点向量。表1中的结果大致上已经是最优结果,继续调节参数或者增加训练的epochs不会显著提高最短可达的比率。我们发现将node2vec这种基于word2vec的方法来进行路由,本身具备一定的准确率。此外,使用node2vec方法来初始化节点向量,再进行训练可以到达很高的准确率,而仅仅使用抽样的方法构建数据集并随机初始化节点向量的方法效果不理想,这证明抽样方法有待改进。选取所有的节点对作为训练集时,随机初始化节点向量与node2vec向量初始化节点向量方法到达的效果没有显著区别。事实上,在节点数量更少的网络中,使用所有的节点对作为训练集,无论是随机初始化还是使用node2vec初始化节点向量,都可以使最短可达的比率提高到100%。鉴于使用node2vec初始化节点向量可以减少训练时间,同时不影响路由结果(所有的节点对作为训练集时)或对训练结果有显着的提高(按randomwalks抽样得到训练集),在接下来的实验中,都是使用node2vec初始化节点向量,再进行训练。值得注意地是,上述结果显示受制于训练效果,rbnv并不能保证完整可靠的路由。因此,本文提出了一种辅助的路由算法,当rbnv失效时,使用辅助的路由算法进行路由,具体算法在附录部分。在加入辅助算法后,扩充的rbnv能够保证对所有的源节点和目的节点进行可靠的路由。表2为100节点有权网络上使用rbnv进行路由的准确率,以及训练节点向量所花时间,显示了rbnv在100节点的有权网络中对所有可能的源节点和目的节点进行路由的结果,以及各个方法所花的平均训练时间。实验显示辅助算法能够确保rbnv路由算法的可靠性。代价比指的是,rbnv方法提供的非最短可达的路由路径与实际最短路径所花代价的比值的平均值。其中:①直接选用node2vec生成的向量进行路由,rbnv②直接选用node2vec生成的向量进行路由,rbnv+辅助算法③按randomwalks抽样得到训练集,rbnv④按randomwalks抽样得到训练集,rbnv+辅助算法⑤选取所有的节点对作为训练集,rbnv⑥选取所有的节点对作为训练集,rbnv+辅助算法表2表3为1000节点无权网络上使用rbnv进行路由的准确率,以及训练节点向量所花时间,所示是在一个1000节点规模的无权网络中进行测试的结果。尽管node2vec训练的向量在100个节点的无权网络上表现出色,而且具有训练时间短的优点。然而,在有权网络和更大规模的网络中的实验证明,node2vec训练的向量直接用于rbnv效果并不理想。同样不够理想的还有基于randomwalks抽样得到训练集来训练节点向量的方法,尽管抽样的方法相比使用全局的拓扑来构建数据集训练节点向量的方法更加的具有实用意义,抽样的方法有待于进一步的改进。表3①直接选用node2vec生成的向量进行路由,rbnv②按randomwalks抽样得到训练集,rbnv③选取所有的节点对作为训练集,rbnv为了测试rbnv方法应对网络变化的能力,我们决定随机断开测试网络中的某一条链路,并仍旧使用在原来网络中训练的节点向量来计算路由,来测试rbnv方法应对网络变化的能力。为了实验效果的可展示性,我们在一个34节点的无权小型网络中进行了十次测试,结果如表4所示34节点无权网络上对rbnv进行应对网络变化的能力测试。其中baseline是在原网络中rbnv路由方法得到的结果。在网络中,我们测试了所有可能的源节点到目的节点之间的路由,不过源节点和目的节点是同一个节点或者源节点和目的节点是相邻节点可以直接交付,而不需要节点向量计算路由,因而被在实验中去除。最短可达非最短可达不可达测试路由数目19128169362904626936392612093849308093859326093869335093879076239368908300938991361793610912215938baseline93420936表4表4可见,在某些链路断开后,rbnv方法计算的路由仍然能够保证所有的数据包被正常的交付。而从非最短可达路由数量相比baseline的增长情况来看,尽管断开的链路影响了原来的最短路由,使得最短路由的数量下降,但是rbnv仍然保证了部分的源节点到目的节点间的非最短路由,而不是直接得到不可达的结果。实施例4本发明实施例4提供了一种网络动态路由计算装置,参见图5所示的网络动态路由计算装置的结构框图,该装置包括:判断模块21,用于判断当前节点的邻接节点是否为目的节点,如果是,选择模块22用于选择目的节点为下一节点;如果否,计算模块23用于根据节点向量分别计算当前节点、邻接节点与目的节点的距离,分别得到第一距离值和第二距离值;节点向量通过机器学习训练得到;选择模块22还用于随机选择可用的小于第一距离值的第二距离值对应的邻接节点作为下一节点。计算模块23还用于:计算当前节点与目的节点间的最短距离;根据第二节点向量生成当前节点与目的节点间的距离函数;根据最短距离和距离函数生成损失函数;最小化损失函数,得到节点向量。参见图6所示的网络动态路由计算装置的另一种结构框图,该装置还包括向量化模块和初始化模块;向量化模块,用于选取网络中的所有节点作为训练集或按照randomwalks抽样生成训练集;向量化模块,还用于将训练集向量化,得到第一节点向量;初始化模块,用于根据预设的初始化方法对第一节点向量进行初始化,得到第二节点向量。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。实施例5本发明实施例5提供了一种电子设备,参见图7所示的电子设备的结构框图,该设备包括存储器31、处理器32,存储器中存储有可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例1中任一种可能的方法的步骤。最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1