首页> 中国专利> 一种链路丢包率的推测方法

一种链路丢包率的推测方法

摘要

本发明涉及一种基于内部监测器的链路丢包率的推测方法,该方法在初始逻辑拓扑树内部放置监测器,并收集初始逻辑树的所有观测数据,然后建立每棵子树对应的叶子节点的丢包序列,从而推测出它内部每条链路的丢包率。本发明具有低复杂度、估计出的丢包率更接近于真实丢包率的优点。

著录项

  • 公开/公告号CN101296133A

    专利类型发明专利

  • 公开/公告日2008-10-29

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN200810115485.3

  • 发明设计人 苏海波;曾烈光;金德鹏;

    申请日2008-06-24

  • 分类号H04L12/26;H04L12/24;

  • 代理机构北京路浩知识产权代理有限公司;

  • 代理人戚传江

  • 地址 100084 北京市海淀区清华园北京100084-82信箱

  • 入库时间 2023-12-17 20:58:06

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-08-14

    未缴年费专利权终止 IPC(主分类):H04L12/26 授权公告日:20110126 终止日期:20120624 申请日:20080624

    专利权的终止

  • 2011-01-26

    授权

    授权

  • 2008-12-24

    实质审查的生效

    实质审查的生效

  • 2008-10-29

    公开

    公开

说明书

技术领域

本发明涉及一种网络推测方法,尤其是一种基于内部监测器的链路丢包率的推测方法。

背景技术

网络测量是实现对网络的监控与管理的必要条件。但是随着现在互联网及通信网络的规模与复杂度的不断增长,它们逐渐演化成一种松散控制的分布式系统。这种分布式网络使得网络内部链路的性能信息的收集变得很困难,传统的基于路由层的排队模型去分析网络性能的方法越来越不适应于这种大规模网络。近年来国际上提出了一种新的测量技术,称为网络层析成像。它主要通过端到端的测量来推断网络内部的性能参数,如链路丢包率、延迟。

链路丢包率是反映网络内部性能最重要的参数之一。目前网络层析技术中推断链路丢包率的方法主要是最大似然估计方法、EM(Expectation Maximiation,期望最大化,下同)以及伪似然估计方法等等。但是似然估计方法需要求解一组高阶方程的根,而EM方法需要通过不断的迭代去逼近一个极限值。随着网络节点数的增多,这些方法的复杂度与计算时间会急剧的增加,从而限制了这些方法在实际中的使用。

目前已有的推测链路丢失率的方法都是基于叶子节点的观测结果,对于内部节点的包丢失情况是毫无所知的。如果在某个内部节点部署了一个监测器,那么这个节点对应的包丢失序列就能被观测到。

发明内容

本发明的目的是提供一种低复杂度的基于内部监测器的链路丢包率的推测方法。

本发明的技术方案是:

S1:在指定的初始逻辑拓扑树中,基于子树深度受限的划分方法、监测器数目受限的划分方法对初始逻辑拓扑树进行划分,并在上述划分节点处放置监测器;

S2:收集初始逻辑树的所有叶子节点的观测数据以及所有内部监测器处的观测数据,根据这两部分数据建立每棵子树对应的叶子节点的丢包序列;

S3:对于每棵子树,根据步骤S2得到的丢包序列推测出它内部每条链路的丢包率;

S4:将所有子树的内部链路丢包率集合在一起,得到初始逻辑树的内部链路的丢包率。

步骤S1中所述的基于子树深度受限的划分方法、监测器数目受限的划分方法划分初始逻辑树,放置监测器的方法为:如果所有子树的深度是一定的,则采用子树深度受限的划分方法,使得监测器的数目最小化;如果监测器的数目是一定的,则采用基于监测器数目受限的划分方法,使得所有子树的深度的最大值最小化。

所述的子树深度受限的划分方法包括以下步骤:

S11:对LST进行初始化赋值LST=T,这里LST为所有划分得到的子树中深度最大的那棵子树,T为初始逻辑拓扑树;

S12:在满足H(k)=maxjRLSTH(j)的条件下,得到一个叶子节点k,这里RLST指的是LST的叶子节点的集合,H(j)是指节点j到LST的根节点的距离;

S13:根据fn(k)=f(f(n-1)(k))递归地得到上述节点k的祖先节点在节点k与之间有hmax条链路,;

S14:在内部节点部署一个监测器,那么就能得到一棵以为根节点的子树,它的深度是hmax

S15:原来的树T被部署的监测器分成了若干棵子树,在这些子树中找出LST,如果LST的深度大于hmax,转到第S12步,否则,退出。

所述的监测器数目受限的划分方法包括以下步骤:

S21:如果监测器的数目不超过M,对于二叉树而言,得到子树深度的最大值的上界为Hupper=max{[log2 M]+1,H-1-[log2 M]};

S22:利用子树深度受限的划分方法得到监测器的数目F(Hupper),而且满足M≥F(Hupper);

S23:令h=Hupper,如果M≥F(h),则h值减1,并循环再次判断,直到当满足M<F(h)时退出,把最后得到的h值赋给Hend,并满足F(Hend)>M≥F(Hend+1)的条件。

S24:令S=Hend+1,得到子树的最大深度为S,然后根据子树深度受限的树的划分方法来部署F(Hend+1)≤M个监测器。

步骤S3中是采用显示公式方法或最大似然估计MLE方法或期望最大化EM方法推断出每棵子树内部每条链路的丢包率,根据子树的规模而定,当子树的规模比较小的时候,可以直接利用MLE算法来求,;当子树的规模比较大的时候,可以根据显式公式直接的求出来。

根据仿真结果表明,在初始逻辑树中放入监测器的方法求出的链路丢包率比不放监测器的方法在同等条件下求出的链路丢包率更接近真实的丢包率,而且分成的各棵子树的丢包率彼此独立,推断过程可以并行进行,从而减小了计算的复杂度。

附图说明

图1是本发明的基于内部监测器的链路丢包率的推测方法的流程图;

图2是本发明的基于子树深度受限的划分算法流程图;

图3是本发明的基于监测器数目受限的划分算法流程图。

具体实施方式

以下实施例用于说明本发明,但不用来限制本发明的范围。

参考图1,基于内部监测器的链路丢包率的推测方法是在网络接口上先后按以下步骤依次实现的:

步骤(1):对于给定网络的逻辑拓扑树,在逻辑树的内部放置一些监测器,将它划分为若干棵子树。具体的划分算法有两种:1)所有子树的深度的最大值是给定的,怎样部署监测器使得监测器的数目最小化,我们给出了算法TDA-DL,其算法的流程图如图1所示,并且它是最优的;2)监测器的数目是给定的,怎样部署监测器使得所有子树的深度的最大值最小化。我们给出了算法TDA-ML,其算法的流程图如图2所示。当初始逻辑树被部署的监测器划分为若干棵子树后,每个监测器既作为某棵子树的根节点,起着包的发送者的作用。又作为另一棵子树的叶子节点,起着包的接收者的作用。

步骤(2):收集初始逻辑树的所有叶子节点的观测数据以及所有内部监测器处的观测数据,由这两部分数据便可以得到每棵子树的对应的叶子节点的丢包序列。

步骤(3):对每棵子树,根据它叶子节点的丢包序列可以推断出它内部每条链路的丢包率。具体的推测方法可以采用最大似然估计、EM(expectation maximiation)或者根据显式公式直接的求出,到底采用哪种方法可以根据子树的规模来定。当子树的规模比较小的时候,可以直接利用最大似然估计算法来求,因为最大似然估计算法的精度是全局最优的,而此时的计算复杂度也比较小。当子树的规模比较大的时候,可以根据显式公式直接的求出来,由于它只需要直接的数值计算,不需要解方程或迭代,大大减小了计算的复杂度。

步骤(4):由于最初逻辑树的每条链路必然作为某个子树的链路存在,将所有子树的内部链路的丢包率集合在一起,就得到了初始逻辑树的内部每条链路的丢包率。

参考图2和图3,下面给出上述步骤的详细描述。

首先建立待测网络的丢包模型。我们这里针对的待测网络是树状拓扑,而且它对应的逻辑拓扑结构(其实就是一棵逻辑树)是已知的,并且在测量的过程中保持不变。用符号将这棵逻辑树简记为T=(V,L),其中V是所有的节点集合,L是所有的链路集合。树的根节点0是探测包的发送者,所有的叶子节点是探测包的接收者,所有叶子节点构成的集合用R表示,显然有RV.对于除了根节点以外的每个节点k∈V/{0},都有一个唯一的父亲节点f(k)。进一步,递归地定义k的祖先节点j=fn(k)=f(f(n-1)(k)),也可以写成k<j或者j>k。为简单起见,我们用(f(k),k)∈L来表示链路k。对于叶子节点以外的每一个节点k,它的孩子节点的数目为d(k),孩子节点的集合为D(k)={dki|1id(k)}.像图论中一样,我们把以节点k为根节点的子树记为T(k)=(V(k),L(k)),T(k)中包含的叶子节点的集合为R(k)=R∩V(k)。

我们假定每条链路的丢包服从Bernoulli伯努利分布,而且不同链路上的丢包与同一条链路上的丢包彼此独立。探测包在链路k∈L上丢失的概率为θk。用随机过程X=(Xk)k∈V来表示探测包在网络中的丢失情况,其中Xk的取值为0或1。当探测包到达节点k时,Xk取值为1,否则取值为0。从而对于节点k和它的孩子节点j∈D(k),它们的丢包满足如下关系:1)如果Xk=0,那么有Xj=0;2)P[Xj=0|Xk=1]=θj及P[Xj=1|Xk=1]=1-θj。如果从根节点发送了N个探测包,那么Xk(i)(1≤i≤N)表示在节点k处对应的0-1序列。如果Xk(i)=1,表示节点k收到了第i个探测包,否则表示没有收到。

在若干待测网络的内部节点放置监测器,把原来的整棵逻辑树T分成若干棵子树。目前已有的推测链路丢失率的方法都是基于叶子节点的观测结果,对于内部节点的包丢失情况是毫无所知的。如果在某个内部节点部署了一个监测器,那么这个节点对应的包丢失序列就能被观测到。下面讨论的就是如何在原来的逻辑树中部署监测器,我们把这个问题转化为两个子问题:

1.如果所有子树的深度的最大值是给定的,那么怎样部署监测器使得监测器的数目最小化。

2.如果监测器的数目是给定的,那么怎样部署监测器使得所有子树的深度的最大值最小化。

我们用M来表示监测器的数目,用hmax来表示所有子树的最大深度。如果要使得监测器的数目尽量少,那么我们要尽可能的每棵子树的深度接近或等于hmax。对于每一个叶子节点k,定义H(k)为它到树的根节点的距离,那么树的深度H=maxiRH(i).把所有划分得到的子树中深度最大的那棵子树(如果有多棵的话,任意选出其中一棵)用LST表示。对于第一个子问题,我们提出了一种名为子树深度受限TDA-DL的树的划分算法。如图2所示。

算法1:TDA-DL

初始化LST=T,T是最初的深度最深的子树。

对于找到的LST,选出一个叶子节点k,它满足H(k)=maxjRLSTH(j),这里RLST指的是LST的叶子节点的集合。

根据fn(k)=f(f(n-1)(k))递归地找到上面选出的节点k的祖先节点由于LST的深度大于hmax,从而肯定存在。

在节点k与之间有hmax条链路,我们在内部节点部署一个监测器,那么就能得到一棵以为根节点的子树,它的深度是hmax

原来的树T被部署的监测器分成了若干棵子树,在这些子树中找出LST,如果LST的深度大于hmax,转到第2步,否则,退出。

下面来证明这种算法是最优的。

如果hmax是给定的,Malg表示TDA-DL算法所需要的监测器的数目,Mmin表示理论上所需要的最少的监测器的数目。那么有Malg=Mmin

下面我们给出上面结论的证明。如果节点j和k满足k=fn(j)或j=fn(k),其中n为正整数,那么用d(j,k)=n来表示节点j和k的距离。如果不满足,我们用j∨k来表示节点j和k最近的共同祖先节点,这个时候,节点j和k的距离定义为d(j,k)=max{d(j,j ∨k),d(k,j∨k)}。在TDA-DL算法的第2步中,选出LST中距离根节点中距离最远的一个叶子节点,用vi表示第i次选出的节点。由于TDA-DL算法一共部署了Malg个监测器,那么所有选出来的节点的集合是根据TDA-DL算法中监测器部署的方法,除了最后一棵子树,划分出的前Malg棵子树的深度都等于hmax。那么对于任意的两个节点vi和vj(i≠j),都满足d(vi,vj)≥hmax,当且仅当vi<vj或vj<vi时,d(vi,vj)=hmax成立。下面我们证明无论采取什么样的部署策略都需要Malg个监测器来覆盖选出来的Malg个节点一个监测器覆盖的范围是到它的距离不大于hmax的所有的节点。如果d(vi,vj)>hmax,那么需要两个监测器才能覆盖vi和vj。如果d(vi,vj)=hmax,那么有vi<vj或vj<vi。不失一般性,假定为vi<vj。表面看上去只需要在vj处部署一个监测器就能把vi和vi都能覆盖,但实际上,此时vj会作为另外一棵子树的叶子节点,我们需要另外一个监测器去覆盖它。所以在d(vi,vj)=hmax的情况下仍然需要部署两个监测器去覆盖vi和vj。这说明对于选出的Malg个节点,一个监测器不管部署在哪里都只能覆盖其中的一个。所以我们需要至少Malg个监测器才能覆盖这Malg个节点,这意味着Malg≤Mmin。由于Mmin表示理论上所需要的最少的监测器的数目,从而有Malg≥Mmin。从而可以推出Malg=Mmin

由于TDA-DL是最优的,从而对于一个给定的网络和hmax,就可以用TDA-DL算法得到Mmin,我们用Mmin=F(hmax)表示。

第二个子问题是怎样部署给定的M个监测器使得划分子树的深度的最大值最小化。这里我们提出了一种基于TDL-DL的名为TDL-ML的算法来解决这个问题,如图3所示。

算法2:TDA-ML

1.如果我们部署的监测器的数目不超过M,那么子树深度的最大值hmax会有一个上界,首先我们找出这个上界。对于二叉树而言,我们在原来子树的第[log2 M]+1层的所有节点都部署上监测器,这至多需要2[log2M]M个监测器。依照这种方法分成子树的深度的最大值为max{[log2 M]+1,H-1-[log2 M]},记为Hupper,那么Hupper是hmax的一个上界。

2.用TDL-DL可以得到监测器的数目F(Hupper),而且满足M≥F(Hupper)。令h=Hupper,如果M≥F(h),则h值减1,并循环再次判断,直到当满足M<F(h)时退出,把最后得到的h值赋给Hend,它满足F(Hend)>M≥F(Hend+1)。

3.令S=Hend+1,根据TDL-DL算法我们需要部署F(Hend+1)≤M个监测器。如果在放置监测器数目不多于M的情况下,由于TDL-DL算法是最优的,那么Hend+1就是S的最小值。这个TDL-DL算法在S=Hend+1时的部署策略也就是我们所需要的。

对于一棵树,给定所有叶子节点的观测结果,下面给出一个用观测结果求出链路丢失率的显式估计。

根据步骤1中逻辑树的丢包模型,对于任何一个内部节点k,可以建立一个一个以它为分叉节点的二层树。这个二层树由一条输入虚拟链路和若干条输出虚拟链路组成。输入虚拟链路代表的是从根节点0到节点k的路径,每条输出虚拟链路代表的是以k的一个孩子节点为根节点的子树。输入虚拟链路的丢包率pk表示的从根节点发送的探测包没有达到节点k的概率,可以用链路上的丢包率表示

pk=1-(1-θk)Πj>k(1-θj)---(1)

从而链路k的丢包率可以用输入虚拟链路的丢包率pk表示

θk=1-(1-pk)/(1-pf(k))    (2)

每条输出虚拟链路代表的是以k的一个孩子节点为根节点的子树,这些子树的集合可以表示为{T(dki)|1id(k)},其中d(k)是节点k的孩子节点的数目。子树T(dki)中的叶子节点的集合是R(dki),它是R(k)的子集。对于子树T(k),定义一个新的随机变量Tk

Tk=1,i,iR(k),Xi=10,i,iR(k),Xi=0

其中Xi表示在叶子节点k处探测包是否丢失。如果探测包的发送数目为N,那么0-1序列{Tk(1),Tk(2),…,Tk(N)}表示的是子树T(k)对应的丢包情况。子树T(k)的丢包率定义为对于某个探测包,它的每一个叶子节点都没有收到的概率,可以表示成lk=P[Tk=0]。

如果内部节点k有d(k)个孩子节点,那么它的输出虚拟链路为T(dk1),T(dk2),…,T(dkd(k))。我们做如下定义:

rb1b2...bm(k)=P{Tdk1=b1;Tdk2=b2;...Tdkm=bm}

以及rbi(i)(k)=P{Tdki=bi}

其中bi∈{0,1}(1≤i≤m)。

它们的估计值可以用叶子节点的观测结果直接表示出来:

以及

其中n(Tdk1=b1;Tdk2=b2;...Tdkm=bm)是观测样本中满足Tdk1=b1;Tdk2=b2;...Tdkm=bm的数目,n(Tdki=bi)是观测样本中满足Tdki=bi的数目。下面我们给出输入虚拟链路的丢包率pk与及的关系式。

对于任一个内部节点k∈V/R∪{0},

pk=1-pk=1-[Σi=1d(k)r1(i)(k)r11...1(k)]1/(d(k)-1)---(3)

其中r11...1(k)表示概率r11...1(k)=P{Tdk1=1;Tdk2=1;...Tdkd(k)=1}.

根据公式(2),链路k上的丢包率θk的估计值可以表示为

由公式(3)可以得到其中以及根据大数定理,当N→∞时,收敛于真实值r11...1(k)以及收敛于真实值r1(i)(k),从而有以及这说明公式(4)中的估计式是θk的一致估计,这个估计式是用叶子节点的观测结果显式的求出链路上的丢包率。从而我们可以利用显示公式(3)与(4)求出各个子树内部每条链路的丢包率。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号