CN102790697B - IPv6网络路由器级拓扑发现方法 - Google Patents
IPv6网络路由器级拓扑发现方法 Download PDFInfo
- Publication number
- CN102790697B CN102790697B CN201210276321.5A CN201210276321A CN102790697B CN 102790697 B CN102790697 B CN 102790697B CN 201210276321 A CN201210276321 A CN 201210276321A CN 102790697 B CN102790697 B CN 102790697B
- Authority
- CN
- China
- Prior art keywords
- node
- topology discovery
- router
- mapped
- maplista
- 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
Abstract
本发明涉及计算机网络管理技术领域,公开了一种IPv6网络路由器级拓扑发现方法,包括以下步骤:A1、基于OSPF协议进行拓扑发现;A2、基于traceroute6进行拓扑发现;A3、将步骤A1与A2的结果进行整合。本发明综合了基于OSPF协议的拓扑发现方法与基于traceroute6的拓扑发现方法进行设计。实验表明,使用该方法发现结果准确率、节点、链路覆盖率均为100%。对于基于OSPF协议获取的拓扑图节点的IPv6地址信息进行了有效的补充,整合地址信息的准确率为100%,整合时间<1s。
Description
技术领域
本发明涉及计算机网络管理技术领域,尤其涉及一种IPv6网络路由器级拓扑发现方法。
背景技术
拓扑发现是IP网络管理的一项基本功能,主要实现网络节点存在性、连接性信息的自动发现及更新。随着IPv6协议的广泛推行,网络路由器级拓扑发现方法面临全新的挑战。地址结构、相关协议以及设备支持情况的变化使得原有面向IPv4的拓扑发现方法不再适用。对于节点规模庞大的IPv6网络设计有效的拓扑发现算法是下一代计算机网络管理的切实需求。
域内的IPv6网络拓扑发现主要有以下三种思路。第一,基于SNMP协议的拓扑发现算法。基于SNMP的拓扑发现技术在IPv4网络拓扑发现中相对成熟。然而,IPv6网络巨大的地址空间使得基于SNMP发现方法的性能较差,而且目前各个网络设备对于SNMPv3查询所需的MIB支持情况不好。第二,基于traceroute6的主动测量方法。利用ICMP消息获取探测源节点与探测目标节点之间的拓扑关系,适用范围较广。许多研究者在进行骨干IPv6网拓扑测量采用了这种方法。然而,对被管网络进行单点的traceroute测量会使得测量的拓扑结果呈现树状特征,部分链路信息无法准确发现;而多点部署,一方面在路由器对源路由机制支持不好的情况下会非常繁琐,另一方面会带来路由器别名问题,同一台路由器由于在拓扑发现过程中被不同的接口地址标识,会被误认为多台不同的路由器。第三,基于开放式最短路径优先(OSPF)协议的拓扑发现方法。OSPF协议是当前使用范围最广的域内路由协议,属于链路状态协议。同一区域内的路由器通过交换链路状态信息进行链路状态数据库的同步,以实现路由计算。通过与网络中路由器建立邻居关系,获取链路状态信息,就可以进一步分析出网络的拓扑。这种方法发现速度快、发现信息准确、效率很高,在IPv4拓扑发现场景下令人满意。然而,在IPv6的网络环境中,OSPFv3协议将地址语义分离,采用32位id标识路由器。虽然不影响路由的计算,但是基于OSPF的拓扑发现方法却因此无法准确标识路由器节点。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何在IPv6网络环境下进行路由器级拓扑发现,使得在保证发现结果完整、准确率高的同时性能开销尽可能低。
(二)技术方案
为了解决上述技术问题,本发明提供一种IPv6网络路由器级拓扑发现方法,包括以下步骤:
A1、基于OSPF协议进行拓扑发现;
A2、基于traceroute6进行拓扑发现;
A3、以OSPF协议信息作为启发式条件根据步骤A1与A2结果中的拓扑图特征,将步骤A1与A2的结果进行整合。
优选地,步骤A1具体包括:
步骤1.1.在服务器上实现OSPF协议,并使所述服务器与一台被管网络路由器建立紧邻关系,监听网络中洪泛的LSA报文;
步骤1.2.根据监听得到的LSA报文,获得网络中各路由器节点之间的连接关系,将得到的拓扑连接图记为GA,其中的路由器节点用id标识;
步骤1.3.由步骤1.1中的LSA报文中提取出的配置了Loopback state接口的路由器的id与其ip的匹配关系以及配置基于OSPF协议拓扑发现所需的路由器id与其ip的匹配关系构成集合Mapped,以及id与集合Mapped对应的子网前缀的匹配集合N;若集合Mapped覆盖了全部id,则将id替换为IPv6地址,拓扑发现结束;若集合Mapped未覆盖全部id,则继续执行步骤A2;若Mapped集合为空集,将与所述服务器紧邻的路由器的id与ip的对应关系加入集合Mapped。
优选地,步骤A2具体为:以所述服务器为源点进行单点的traceroute拓扑测量,将得到的拓扑连接图记为GB,测量的目标地址集通过人工配置或者利用步骤A1的拓扑发现结果中集合N中的子网前缀自动生成。
优选地,步骤A3具体包括:
步骤3.1.参数初始化:
步骤3.1.1.对于集合Mapped,从中取出已经完成匹配的ip加入集合S1,并从中取出其中已经完成匹配的id加入集合S2;
步骤3.1.2.对照集合S1,将未完成匹配的ip加入集合IPList;
步骤3.1.3.对于GA中的每个节点,计算其连接度数,加入集合DegreeId;对于GB当中的每个节点,统计其连接度数,加入集合DegreeIp;
步骤3.1.4.对于GA中的每个节点inode,依次执行步骤3.1.4.1~3.1.4.2:
步骤3.1.4.1.将节点inode加入队列nodelist,并将inode标记为已访问,并且在inode之后加入一个标记节点tnode用于计算节点之间的距离,初始化s为0,s表示节点之间的距离;
步骤3.1.4.2.如果nodelist不为空,则循环执行步骤3.1.4.2.1~3.1.4.2.3:
步骤3.1.4.2.1.按照先入先出的顺序从nodelist取出一个节点jnode;
步骤3.1.4.2.2.如果jnode是GA中的节点,则节点inode与节点jnode之间的最短距离为s,将此最短距离信息加入集合DistanceId,并将jnode的所有未被访问过的邻居节点加入nodelist,然后标记这些未被访问过的邻居节点为已访问;
步骤3.1.4.2.3.如果jnode是标记节点tnode,且此时nodelist队列为空,则结束步骤3.1.4;如果此时队列不为空,则将标记节点tnode放回序列nodelist,并且将s加1;
步骤3.1.5.对于GB中的每个节点inode,做与步骤3.1.4中相同的操作,将各个节点之间的距离存入集合DistanceIp;
步骤3.1.6.将循环标记变量Flag置为1;
步骤3.2.当Flag为1时,循环执行步骤3.2.1~3.2.2:
步骤3.2.1.将Flag置为0;
步骤3.2.2.对于集合S1中的每一个元素IPi,i为集合中元素的序号,依次执行步骤3.2.2.1~3.2.2.3:
步骤3.2.2.1.从集合Mapped中取出IPi对应的IDi,ID i表示与IPi对应的路由器的id信息;
步骤3.2.2.2.对于步骤A1的拓扑发现结果中每一个不属于集合S2的路由器标识IDk,执行步骤3.2.2.2.1:
步骤3.2.2.2.1.对于集合IPList中的每一个元素IPc,执行步骤3.2.2.2.1.1:
步骤3.2.2.2.1.1.如果集合DistanceIp中IPi与IPc之间的距离大于或等于集合DistanceId中IDi与IDk之间的距离并且度数集合DegreeId中节点k的度数大于或等于DegreeIp中节点c的度数则将IDk作为一个IPc可能的匹配加入IPc的序列MapListB;
步骤3.2.2.3.对于每一个IPList中的元素IPh,依次执行步骤3.2.2.3.1~3.2.2.3.2:
步骤3.2.2.3.1.合并IPh的MapListA与MapListB,若其MapListA不为空,使MapListA取MapListA与MapListB元素的交集,同时将MapListB置为空集;如果MapListA为空集,则将MapListB所有元素加入MapListA,同时将MapListB置为空集;
步骤3.2.2.3.2.如果IPh的MapListA所含元素个数为1,则依次执行步骤3.2.2.3.2.1~3.2.2.3.2.5:
步骤3.2.2.3.2.1.将IPh加入集合S1;
步骤3.2.2.3.2.2.将IPh的MapListA所含的唯一元素IDh加入集合S2;
步骤3.2.2.3.2.3.将IPh从IPList中删除;
步骤3.2.2.3.2.4.将IPh与IDh的对应信息加入集合Mapped;
步骤3.2.2.3.2.5.将Flag置为1;
步骤3.3.对于S1中所有元素IPi,依次执行步骤3.3.1~3.3.2:
步骤3.3.1.从集合Mapped中,取出与IPi对应的id信息IDi;
步骤3.3.2.将GA中对应的IDi用IPi代替;
步骤3.4.输出经过处理的GA。
优选地,步骤A1与A2的执行顺序可互换或步骤A1与A2同时执行。
(三)有益效果
上述技术方案具有如下优点:本发明综合了基于OSPF协议的拓扑发现方法与基于traceroute6的拓扑发现方法进行设计。实验表明,使用该方法发现结果准确率、节点、链路覆盖率均为100%。对于基于OSPF协议获取的拓扑图节点的IPv6地址信息进行了有效的补充,整合地址信息的准确率为100%,整合时间<1s。
附图说明
图1是本发明的方法流程图;
图2是某大学校园网核心路由器拓扑关系以及拓扑发现系统的部署图;
图3是基于OSPF协议拓扑发现结果;
图4基于tracerout6的拓扑发现结果;
图5基于OSPF协议拓扑ip-id对照图;
图6a~图6c是5个节点的三种可能的拓扑连接关系图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明的目的在于:如何在IPv6网络环境下,进行路由器级拓扑发现,使得在保证发现结果完整、准确率高的同时性能开销尽可能低。本发明综合了基于OSPF协议的拓扑发现方法与基于traceroute6的拓扑发现方法,本发明应对了IPv6网络的三种不同的场景:网络中全部路由器配置了loopback IP、部分路由器配置了loopback IP以及全部路由器都没有配置loopback IP。实验表明,使用该方法发现结果准确率、节点、链路覆盖率均为100%。对于基于OSPF协议获取的拓扑图节点的IPv6地址信息进行了有效的补充,整合地址信息的准确率为100%,整合时间<1s。
该方法的实际测试环境为一个真实的高校校园网。
一、IPv6拓扑发现方法思想
应用场景分为三类:所有被管网络路由器配置了loopback IP(环回IP),部分路由器配置了loopback IP以及所有路由器都没有配置loopback IP。根据RFC 2740,如果路由器某个接口被配置为Loopback接口,那么该路由器会在Intra-prefix LSA中发布其id与该Loopback地址的对应关系。这样,对于“所有被管网络路由器配置了loopbackIP”的场景,本发明通过基于OSPF协议的拓扑发现算法获得被管网络的拓扑连接关系之后,可以在Intra-prefix LSA中将id与其LoopbackIP地址的匹配找出,并在拓扑链接关系中将id替换为Loopback IP地址,完成拓扑发现。
对于“部分路由器配置了loopback IP”这种情况,本发明的IPv6拓扑发现方法分为三个阶段进行。首先与第一种场景相同,采用基于OSPF协议的拓扑发现方法,获得被管网络的拓扑连接关系。并从Intra-prefix LSA中获取部分id与Loopback IP地址的匹配。第二步,采用基于traceroute6的单点拓扑发现方法对被管网络进行拓扑探测。通过ICMP消息返回的路由器地址信息,构造网络拓扑。由于采用单点测量,此时的拓扑链接关系并不完整。第三个阶段,整合前两个阶段的结果,利用traceroute6发现的路由器地址信息将基于OSPF协议方法发现的拓扑结果补全。此阶段,利用第一步得到的部分id-ip匹配关系,结合第一步与第二步得到的两张拓扑图的图特性,如节点之间的跳数、节点度等信息,将两张图进行对应起来。
对于“所有路由器都没有配置loopback IP”的情况,需要启发式条件,比如由管理人员手动给出一些id与IP的匹配关系,至少可以获得测量点的IP与id的一对对应关系。这样,这种情况就自然转化到了第二种情况。
接下来,给出综合考虑各种情况的完整的IPv6拓扑发现算法。
二、IPv6拓扑发现方法步骤
参数说明:
S1:已完成id-ip匹配的IPv6地址集合
S2:已完成id-ip匹配的路由器id集合
Mapped:已完成id-ip匹配的id,ip对应关系集合
IPList;未完成匹配的IPv6地址列表
MapListA:对于每个IP地址而言,可能与其匹配的id列表A
MapListB:对于每个IP地址而言,可能与其匹配的id列表B
DegreeId:步骤1得到的OSPF拓扑连接关系图GA中各节点度数序列
DegreeIp:步骤2得到的traceroute6拓扑连接关系图GB中各节点度数序列
DistanceId:步骤1得到的OSPF拓扑连接关系图GA中各节点对之间的距离集合
DistanceIp:步骤2得到的traceroute6拓扑连接关系图GB中各节点对之间的距离集合
Flag:循环标记变量
nodelist:计算图上各节点之间最短路径的过程中,用于存放图中节点的队列
inode,jnode:表示图中的节点
tnode:标记节点,与数据结构图中节点inode,jnode相同
s:单变量,表示节点之间的距离
对于每个IP地址而言,设置两个MapList用作候选id列表求交。对于每一轮迭代,求交的结果放入MapListA,新的候选id放入MapListB。
以下参考图1进行说明。
步骤A1.基于OSPF协议的拓扑发现
步骤1.1.在服务器上实现OSPF协议,并使所述服务器与一台被管网络路由器建立紧邻关系,监听网络中洪泛的LSA报文;
步骤1.2.根据监听得到的LSA报文,获得网络中各路由器节点之间的连接关系,将得到的拓扑连接图记为GA,其中的路由器节点用id标识;
步骤1.3.由步骤1.1中的Intra-prefix LSA报文中提取出的配置了Loopback state接口的路由器的id与其ip的匹配关系以及配置基于OSPF协议拓扑发现所需的路由器id与其ip的匹配关系构成集合Mapped,以及id与集合Mapped对应的子网前缀的匹配集合N;若集合Mapped覆盖了全部id,则将id替换为IPv6地址,拓扑发现结束;若集合Mapped未覆盖全部id,则继续执行步骤A2;若Mapped集合为空集,将与所述服务器紧邻的路由器的id与ip的对应关系加入集合Mapped。
步骤A2.基于traceroute6的拓扑发现
步骤A2具体为:以所述服务器为源点进行单点的traceroute拓扑测量,将得到的拓扑连接图记为GB,测量的目标地址集通过人工配置或者利用步骤A1的拓扑发现结果中集合N中的子网前缀自动生成。
步骤A3.以被动测量得到的OSPF协议信息作为启发式条件根据步骤A1与A2结果中的拓扑图特征,整合拓扑发现结果
步骤3.1.参数初始化:
步骤3.1.1.对于集合Mapped,从中取出已经完成匹配的ip加入集合S1,并从中取出其中已经完成匹配的id加入集合S2;
步骤3.1.2.对照集合S1,将未完成匹配的ip加入集合IPList;
步骤3.1.3.对于GA中的每个节点,计算其连接度数,加入集合DegreeId;对于GB当中的每个节点,统计其连接度数,加入集合DegreeIp;
步骤3.1.4.对于GA中的每个节点inode,依次执行步骤3.1.4.1~3.1.4.2:
步骤3.1.4.1.将节点inode加入队列nodelist,并将inode标记为已访问,并且在inode之后加入一个标记节点tnode用于计算节点之间的距离,初始化s为0,s表示节点之间的距离;
步骤3.1.4.2.如果nodelist不为空,则循环执行步骤3.1.4.2.1~3.1.4.2.3:
步骤3.1.4.2.1.按照先入先出的顺序从nodelist取出一个节点jnode;
步骤3.1.4.2.2.如果jnode是GA中节点(即非标记节点),则节点inode与节点jnode之间的最短距离为s,将此最短距离信息加入集合DistanceId,并将jnode的所有未被访问过的邻居节点加入nodelist,然后标记这些未被访问过的邻居节点为已访问;
步骤3.1.4.2.3.如果jnode是标记节点tnode,且此时nodelist队列为空,则结束步骤3.1.4;如果此时队列不为空,则将标记节点tnode放回序列nodelist,并且将s加1;
步骤3.1.5.对于GB中的每个节点inode,做与步骤3.1.4中相同的操作,将各个节点之间的距离存入集合DistanceIp;
步骤3.1.6.将循环标记变量Flag置为1;
步骤3.2.当Flag为1时,循环执行步骤3.2.1~3.2.2:
步骤3.2.1.将Flag置为0;
步骤3.2.2.对于集合S1中的每一个元素IPi,i为集合中元素的序号,依次执行步骤3.2.2.1~3.2.2.3:
步骤3.2.2.1.从集合Mapped中取出IPi对应的IDi,IDi表示与IPi对应的路由器的id信息;
步骤3.2.2.2.对于步骤A1的拓扑发现结果中每一个不属于集合S2的路由器标识IDk,执行步骤3.2.2.2.1:
步骤3.2.2.2.1.对于集合IPList中的每一个元素IPc,执行步骤3.2.2.2.1.1:
步骤3.2.2.2.1.1.如果集合DistanceIp中IPi与IPc之间的距离大于或等于集合DistanceId中IDi与IDk之间的距离并且度数集合DegreeId中节点k的度数大于或等于DegreeIp中节点c的度数则将IDk作为一个IPc可能的匹配加入IPc的序列MapListB;
步骤3.2.2.3.对于每一个IPList中的元素IPh,依次执行步骤3.2.2.3.1~3.2.2.3.2:
步骤3.2.2.3.1.合并IPh的MapListA与MapListB,若其MapListA不为空,使MapListA取MapListA与MapListB元素的交集,同时将MapListB置为空集;如果MapListA为空集,则将MapListB所有元素加入MapListA,同时将MapListB置为空集;
步骤3.2.2.3.2.如果IPh的MapListA所含元素个数为1,则依次执行步骤3.2.2.3.2.1~3.2.2.3.2.5:
步骤3.2.2.3.2.1.将IPh加入集合S1;
步骤3.2.2.3.2.2.将IPh的MapListA所含的唯一元素IDh加入集合S2;
步骤3.2.2.3.2.3.将IPh从IPList中删除;
步骤3.2.2.3.2.4.将IPh与IDh的对应信息加入集合Mapped;
步骤3.2.2.3.2.5.将Flag置为1;
步骤3.3.对于S1中所有元素IPi,依次执行步骤3.3.1~3.3.2:
步骤3.3.1.从集合Mapped中,取出与IPi对应的id信息IDi;
步骤3.3.2.将GA中对应的IDi用IPi代替;
步骤3.4.输出经过处理的GA。
四、IPv6拓扑发现方法实验评估
基于上述IPv6拓扑发现方法,利用C语言在linux环境下设计并实现了一套IPv6拓扑发现系统。系统由三部分组成:基于OSPF协议的拓扑发现模块、基于traceroute6的拓扑发现模块以及拓扑整合模块。首先启动基于OSPF协议的拓扑发现模块与基于traceroute6的拓扑发现模块。两个模块的发现结果送入拓扑整合模块,得出最终的拓扑结果。
为了对本发明进行评估,在某大学校园网部署了IPv6拓扑发现系统。该大学校园网原始拓扑以及拓扑发现系统部署情况如图2所示,其中真实的IP地址用随机化的IP地址替代。该大学校园网共有核心路由器21台,部署拓扑发现系统的服务器与校园网一台核心路由器建立紧邻关系。通过基于OSPF协议的拓扑发现模块得到的拓扑结果如图3所示。可以看到发现结果中路由器均以32位id标识,管理员按照路由器的IPv4地址配置了id。但基于OSPF协议的拓扑结果链路与节点发现率均为100%。通过基于traceroute6的拓扑发现方法发现结果如图4所示,其中traceroute6的目标地址由OSPF模块得到的子网前缀信息生成。图4节点覆盖率为100%,而且IP地址均为IPv6地址,但链路覆盖率不高,节点呈现树状分布。这是由于测量单点部署造成的。基于OSPF协议的拓扑发现模块得到的id-ip对应关系如图5所示。其中,其中12个节点处标记了通过分析Intra-prefix LSA可以直接得到的id-ip对照关系,即该节点配置了Loopback地址。而未标记的几点则需要拓扑整合模块进行地址信息补全。
经过整合的拓扑发现结果与基于OSPF协议的拓扑发现结果以及基于traceroute6的拓扑发现结果的对比如表1所示。
表1 三种拓扑发现结果对比
拓扑发现方法 | OSPFv3 | Traceroute6 | 本发明 |
核心路由器(个) | 21 | 21 | 21 |
路由器连接关系(条) | 30 | 20 | 30 |
路由器IPv6地址信息(个) | 0 | 21 | 21 |
通过表1的结果对比可以发现,经过整合的结果具有基于OSPF协议方法发现拓扑连接关系准确的优势,同时利用traceroute6结果补全了IPv6地址信息。结果与真实拓扑图完全吻合,证明了该发现方法的准确性;在性能方面,在网络使用高峰期,内存为4G的服务器上进行试验用时为秒级,整个发现用时在10s之内,其中,主要用时在traceroute6探测上,OSPF发现以及整合地址信息均在1s之内完成。整合地址信息模块无需发送探针,需发送的traceroute6探针也由于整合算法的存在而大大减少。因此本发明方法尽可能的减小了测量对于网络运行的影响;另外,本发明方法只需单点进行探测,具有很强的可操作性及可部署性。
该大学校园网规模较大,核心路由器连接关系较为复杂。以该大学校园网进行试验具有代表性。通过实验说明了本发明的方法具有很好的准确率、节点链路覆盖率以及良好的性能和可部署性。当然,在极个别情况下,本发明的方法在地址信息补全方面需要网络管理人员的少量参与,补充进一步的启发式条件。
对于traceroute6获取的拓扑图而言,只需获取被管网络一个树状的连通图。同时,由OSPF发现模块分析得出的id-ip匹配关系以及拓扑发现系统紧邻路由器的id-ip匹配关系作为整合地址信息的启发式条件。从图的角度而言,每一对已知的id-ip匹配相当于为traceroute6得到的树状结构图中该ip对应的节点进行不同颜色的染色。在染色结果中,轴对称的子图所包含的节点有可能无法进行地址信息的补充。而这部分节点往往占比非常小。
对于树状连通图而言,本发明定义拓扑地址信息整合成功率期望为E`。E`是一个关于节点数n,已知id-ip匹配数m的函数,记作E`(n,m)。具有n个节点的树结构、进行m个节点染色对应的图为G1,G2…Gg,其中g为关于n与m的函数,记作g(n,m),表示经过染色的图的种类,其值由n与m共同确定。在各个染色图中可以完成地址匹配的节点数记作Si,则
进而,对于每一个由n个节点构成的拓扑而言,拓扑地址信息整合成功率记作E(n):
本发明以5个节点的拓扑为例进行说明。对于5个节点而言,拓扑可能性如图6a~图6c所示:
对于m为1的情况,即只有一对已知id-ip匹配,对应的五个节点的染色拓扑共15张,图6a~图6c中每类拓扑对应5张。对每张染色拓扑图进行成功匹配统计,可知
E`(5,1)=4/15*2/5+1/15*1/5+3/15*3/5+2/15*1+4/15*1+1/15*1/5=47/75=0.63
同理可知E`(5,2)为0.8,E`(5,3)为0.91,E`(5,4)为1,E`(5,5)为1。因此可以得出E(5)为0.87。由于被管网络核心路由器一般在50个以内,分别对n=6,7…50计算了相应的拓扑地址信息整合成功率期望E(n)。计算结果显示,所有的E(n)均在85%以上。对于未能进行地址信息整合的路由器节点,当然,对于对称性很高的拓扑结果,本发明的方法还可以在无法完成匹配的IP地址候选ID中随机挑选,并用距离以及度数进行选择验证,可以对上述小于20%的情况进行估测,使得匹配成功率趋于100%;也可以通过与网管人员的交互,获取更多的启发式条件,最终完成全部地址信息的匹配。
本发明结合了两种拓扑发现方法,基于traceroute6的拓扑发现方法与基于OSPF协议的拓扑发现方法,进行IPv6拓扑发现。相比于已有技术,本发明在整合基于traceroute6的拓扑发现结果与基于OSPF协议的拓扑发现结果方面具有如下的特点与优势:
1.本发明在配置规范的纯IPv6网络中具有优势。本发明没有利用任何IPv4地址信息,可以在纯IPv6环境中工作。本发明对于不同的配置场景提供了完整的拓扑发现方案。特别对于路由器按规范配置了Loopback地址的场景,本发明根据RFC约定,可以依靠基于OSPF协议的拓扑发现方法进行拓扑发现,不再进行traceroute6以及拓扑整合,在准确率与效率方面具有明显的优势。
2.本发明的匹配正确率更高。不同于利用路由跳数进行匹配,本发明从图的特性出发进行匹配,而且对于traceroute6结果不完整的情况也可以进行准确的匹配;利用已经完成匹配的节点,对可选匹配进行多重约束,能够更加准确的进行拓扑发现。本方法不会出现错误匹配的情况。
3.本发明在性能方面具有优势。本发明进行拓扑整合过程中,不再向网络中注入探测流量;随着成功匹配结果的增加,算法迅速收敛。
通过实验分析,可以得出以下结论:第一,本发明可以准确有效的进行IPv6的拓扑发现。本发明在发现节点与链路存在性方面,发现覆盖率与准确率均为100%;在标识路由器节点方面覆盖率能够达到85%,错误率为0。第二,本发明可部署性强,适用于IPv4/v6双栈网络环境下以及纯IPv6网络环境下的拓扑发现,并且对于路由器配置要求依赖性很小。第三,本发明具有良好的发现性能。能够在较短时间内(秒级)完成拓扑发现;并且在发现过程中将探测包数量降至最低,尤其是在地址整合阶段,不会增加任何的网络资源开销。由此可见,本发明达到了预期目的。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本发明的保护范围。
Claims (2)
1.一种IPv6网络路由器级拓扑发现方法,其特征在于,包括以下步骤:
A1、基于OSPF协议进行拓扑发现,其具体步骤包括:
步骤1.1.在服务器上实现OSPF协议,并使所述服务器与一台被管网络路由器建立紧邻关系,监听网络中洪泛的LSA报文;
步骤1.2.根据监听得到的LSA报文,获得网络中各路由器节点之间的连接关系,将得到的拓扑连接图记为GA,其中的路由器节点用id标识;
步骤1.3.由步骤1.1中的LSA报文中提取出的配置了Loopback state接口的路由器的id与其ip的匹配关系以及配置基于OSPF协议拓扑发现所需的路由器id与其ip的匹配关系构成集合Mapped,以及id与集合Mapped对应的子网前缀的匹配集合N;若集合Mapped覆盖了全部id,则将id替换为IPv6地址,拓扑发现结束;若集合Mapped未覆盖全部id,则继续执行步骤A2;若Mapped集合为空集,将与所述服务器紧邻的路由器的id与ip的对应关系加入集合Mapped;
A2、基于traceroute6进行拓扑发现,其具体步骤包括:
以所述服务器为源点进行单点的traceroute拓扑测量,将得到的拓扑连接图记为GB,测量的目标地址集通过人工配置或者利用步骤A1的拓扑发现结果中集合N中的子网前缀自动生成;
A3、以OSPF协议信息作为启发式条件根据步骤A1与A2结果中的拓扑图特征,将步骤A1与A2的结果进行整合,其具体步骤包括:
步骤3.1.参数初始化:
步骤3.1.1.对于集合Mapped,从中取出已经完成匹配的ip加入集合S1,并从中取出其中已经完成匹配的id加入集合S2;
步骤3.1.2.对照集合S1,将未完成匹配的ip加入集合IPList;
步骤3.1.3.对于GA中的每个节点,计算其连接度数,加入集合DegreeId;对于GB当中的每个节点,统计其连接度数,加入集合DegreeIp;
步骤3.1.4.对于GA中的每个节点inode,依次执行步骤3.1.4.1~3.1.4.2:
步骤3.1.4.1.将节点inode加入队列nodelist,并将inode标记为已访问,并且在inode之后加入一个标记节点tnode用于计算节点之间的距离,初始化s为0,s表示节点之间的距离;
步骤3.1.4.2.如果nodelist不为空,则循环执行步骤3.1.4.2.1~3.1.4.2.3:
步骤3.1.4.2.1.按照先入先出的顺序从nodelist取出一个节点jnode;
步骤3.1.4.2.2.如果jnode是GA中的节点,则节点inode与节点jnode之间的最短距离为s,将此最短距离信息加入集合DistanceId,并将jnode的所有未被访问过的邻居节点加入nodelist,然后标记这些未被访问过的邻居节点为已访问;
步骤3.1.4.2.3.如果jnode是标记节点tnode,且此时nodelist队列为空,则结束步骤3.1.4;如果此时队列不为空,则将标记节点tnode放回序列nodelist,并且将s加1;
步骤3.1.5.对于GB中的每个节点inode,做与步骤3.1.4中相同的操作,将各个节点之间的距离存入集合DistanceIp;
步骤3.1.6.将循环标记变量Flag置为1;
步骤3.2.当Flag为1时,循环执行步骤3.2.1~3.2.2:
步骤3.2.1.将Flag置为0;
步骤3.2.2.对于集合S1中的每一个元素IPi,i为集合中 元素的序号,依次执行步骤3.2.2.1~3.2.2.3:
步骤3.2.2.1.从集合Mapped中取出IPi对应的IDi,ID i表示与IPi对应的路由器的id信息;
步骤3.2.2.2.对于步骤A1的拓扑发现结果中每一个不属于集合S2的路由器标识IDk,执行步骤3.2.2.2.1:
步骤3.2.2.2.1.对于集合IPList中的每一个元素IPc,执行步骤3.2.2.2.1.1:
步骤3.2.2.2.1.1.如果集合DistanceIp中IPi与IPc之间的距离大于或等于集合DistanceId中IDi与IDk之间的距离并且度数集合DegreeId中节点k的度数大于或等于DegreeIp中节点c的度数则将IDk作为一个IPc可能的匹配加入IPc的序列MapListB;
步骤3.2.2.3.对于每一个IPList中的元素IPh,依次执行步骤3.2.2.3.1~3.2.2.3.2:
步骤3.2.2.3.1.合并IPh的MapListA与MapListB,若其MapListA不为空,使MapListA取MapListA与MapListB元素的交集,同时将MapListB置为空集;如果MapListA为空集,则将MapListB所有元素加入MapListA,同时将MapListB置为空集;
步骤3.2.2.3.2.如果IPh的MapListA所含元素个数为1,则依次执行步骤3.2.2.3.2.1~3.2.2.3.2.5;
步骤3.2.2.3.2.1.将IPh加入集合S1;
步骤3.2.2.3.2.2.将IPh的MapListA所含的唯一元素IDh加入集合S2;
步骤3.2.2.3.2.3.将IPh从IPList中删除;
步骤3.2.2.3.2.4.将IPh与IDh的对应信息加入集合Mapped;
步骤3.2.2.3.2.5.将Flag置为1;
步骤3.3.对于S1中所有元素IPi,依次执行步骤3.3.1~3.3.2:
步骤3.3.1.从集合Mapped中,取出与IPi对应的id信息IDi;
步骤3.3.2.将GA中对应的IDi用IPi代替;
步骤3.4.输出经过处理的GA。
2.如权利要求1所述的方法,其特征在于,步骤A1与A2的执行顺序可互换或步骤A1与A2同时执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210276321.5A CN102790697B (zh) | 2012-08-03 | 2012-08-03 | IPv6网络路由器级拓扑发现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210276321.5A CN102790697B (zh) | 2012-08-03 | 2012-08-03 | IPv6网络路由器级拓扑发现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102790697A CN102790697A (zh) | 2012-11-21 |
CN102790697B true CN102790697B (zh) | 2014-11-26 |
Family
ID=47156004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210276321.5A Active CN102790697B (zh) | 2012-08-03 | 2012-08-03 | IPv6网络路由器级拓扑发现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102790697B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905254B (zh) * | 2014-04-04 | 2017-03-29 | 西华师范大学 | 一种基于通信设备端口连接信息的关系图智能生成方法 |
CN107634842A (zh) * | 2016-07-18 | 2018-01-26 | 阿里巴巴集团控股有限公司 | 网络拓扑发现方法及装置 |
CN107566279B (zh) * | 2017-08-30 | 2020-06-02 | 四川易诚智讯科技有限公司 | 一种基于路由信息和Traceroute信息的路由器别名解析方法 |
CN111615021B (zh) * | 2020-05-07 | 2022-05-13 | 杭州东方通信软件技术有限公司 | 一种odn的逻辑拓扑信息的获取方法、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1905512A (zh) * | 2006-08-17 | 2007-01-31 | 北京邮电大学 | 开放最短路径优先路由协议的监测与分析系统及工作方法 |
CN101145974A (zh) * | 2007-10-29 | 2008-03-19 | 清华大学 | 一种路由路径显示的方法 |
CN100514918C (zh) * | 2007-10-15 | 2009-07-15 | 清华大学 | 一种ip主干网的拓扑发现方法 |
-
2012
- 2012-08-03 CN CN201210276321.5A patent/CN102790697B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1905512A (zh) * | 2006-08-17 | 2007-01-31 | 北京邮电大学 | 开放最短路径优先路由协议的监测与分析系统及工作方法 |
CN100514918C (zh) * | 2007-10-15 | 2009-07-15 | 清华大学 | 一种ip主干网的拓扑发现方法 |
CN101145974A (zh) * | 2007-10-29 | 2008-03-19 | 清华大学 | 一种路由路径显示的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102790697A (zh) | 2012-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Haddadi et al. | Network topologies: inference, modeling, and generation | |
Motamedi et al. | A survey of techniques for internet topology discovery | |
ES2551727T3 (es) | Uso de un protocolo de árbol de expansión (STP) para mejorar mapas de topología de red de la capa 2 | |
CN102215136B (zh) | 流量拓扑生成方法和装置 | |
CN105991334A (zh) | 一种网络拓扑自发现方法及装置 | |
US20140317313A1 (en) | Nat sub-topology management server | |
CN102790697B (zh) | IPv6网络路由器级拓扑发现方法 | |
Kardes et al. | Cheleby: A subnet-level internet topology mapping system | |
Ren et al. | Robust network tomography: K-identifiability and monitor assignment | |
CN104579978B (zh) | 一种动态网络链路层拓扑发现方法 | |
Eriksson et al. | DomainImpute: Inferring unseen components in the Internet | |
CN109088756B (zh) | 一种基于网络设备识别的网络拓扑补全方法 | |
US9210046B2 (en) | Zone-based network traffic analysis | |
CN109951321A (zh) | 一种变电站站控层网络拓扑分析方法、装置及存储介质 | |
US20230344755A1 (en) | Determining flow paths of packets through nodes of a network | |
Shavitt et al. | Geographical internet pop level maps | |
CN107276829A (zh) | 基于地址解析协议的电力系统的网络拓扑获取方法和系统 | |
CN114244763B (zh) | 基于规则引擎的动态网络拓扑管理方法及其系统 | |
Zhao et al. | Sdn-enabled rule verification on data plane | |
US11438237B1 (en) | Systems and methods for determining physical links between network devices | |
Zichao et al. | Ethernet topology discovery for virtual local area networks with incomplete information | |
Yuan et al. | A high completeness PoP partition algorithm for IP geolocation | |
Botta et al. | Discovering topologies at router level: Part II | |
CN106411748B (zh) | 跨网络的动态拓扑维护方法 | |
Ma et al. | An algorithm of physical network topology discovery in multi-VLANs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |