基于IPv6的下一代互联网拓扑发现系统及实现方法

文档序号:7759348阅读:226来源:国知局
专利名称:基于IPv6的下一代互联网拓扑发现系统及实现方法
技术领域
本发明属于计算机网络管理技术领域,特别涉及一种基于IPv6的下一代互联网 拓扑发现系统及其实现方法。
背景技术
过去的20多年里,IPv4作为互联网的标准取得了辉煌的业绩。但随着Internet 的飞速发展,IPv4网络的缺陷已变得愈加明显。如地址空间的不足,端到端通信质量得不 到保障,网络配置管理困难以及与移动网络难以互通等。相比于IPv4,IPv6具有如下优越 性良好的可扩展性、可靠的安全性、多样化的服务质量、易管理性、移动性,另外,还能很好 地支持多播业务,提高网络的整体吞吐量。使用IPv6后,大量非计算机终端将有机会独立 连接到互联网上,人们将生活在一个真正的网络世界中。IPv6协议作为下一代网络协议,正在得到越来越多的国家和研究单位的关注。中 国、日本、韩国和欧洲以及美国都在IPv6研发中投入了巨大的精力和时间。2008年12月3 日,历时五年的CNGI (China Next Generation Internet,中国下一代互联网)项目取得阶 段性的成果,在下一代互联网基础设施建设、技术研发及产业化、技术试验与应用示范等方 面取得了一系列重大成果,建成并稳定运行全球第一个、也是规模最大的纯IPv6互联网主 干网。中国下一代互联网研究与产业化获得重大突破,现已建成包括6个核心网络、22个 城市59个节点以及北京和上海两个国际交换中心、273个驻地网的IPv6示范网络。据不 完全统计,截至目前国家发展改革委累计安排投资超过11亿元,带动社会投资约40亿元。 从2003年至今,CNGI先后支持建设了骨干网、驻地网,103个研究开发、产业化及应用示范 项目以及教育网IPv6技术升级项目,全国超过100所高校和100家研究单位、几十家企业 的上万名科研生产一线工作者参加了项目建设。以此为基础,国家发改委、科技部等部委在2008年年底组织实施了的下一代互联 网业务试商用及设备产业化专项,在不久的将来,基于IPv6的下一代互联网必将大规模在 国内乃至世界范围内得到广泛应用。网络管理是网络的重要支撑系统,当新一代网络实施成功时,下一代网络管理也 要应时而生,否则网络的运营、业务的管理会受到极大的负面拖动。而网络拓扑发现是自动 发现网络中的各种设备及网络设备之间的连接关系,是网络管理的基础。由于IPv6协议和 IPv4协议不兼容,以往适用于IPv4网络的拓扑发现工具、方法不能直接移植到IPv6的网 络,同时IPv6协议的许多新特征,如地址结构的变化以及IPv6 over IPv4隧道的存在,也 对IPv6下的拓扑发现提出了全新的挑战。目前,IPv6拓扑自动发现主要存在以下三个困难第一,目前探测子网内部设备 的活动性方法几乎用的都是Ping穷举方法,对于IPv6的子网来说,穷举法探测主机需要264 个(约2千亿亿个)ICMP(Internet Control Message Protocol,互联网控制报文协议)回 射请求。这对于任何网络都是不可接受的。比较而言,对一个IPv4的C类子网256位地址 的探测,如果采用异步方式只需要几秒钟,因而不会给网络带来太大负担。所以IPv4的局域网拓扑探测方法显然不适用于IPv6。第二,在IPv6中地址按照范围被划分为全球地址, 本地站点地址和本地链路地址三类。目前有许多路由协议使用本地的链路地址来定义路由 表中的ipv6RouteNextHop对象,而不是用全球地址定义,因此IPv4中的基于SNMP (Simple Network Management Protocol,简单网络管理协议)搜索算法的拓扑发现机制在IPv6情 况下无法直接使用。第三,标准化组织虽然已经定义了 IPv6管理相关的MIB (Management Information Base,管理信息库),但目前大部分网络设备对这些MIB标准不支持或者不完 全支持,SNMP协议还无法在IPv6拓扑发现中发挥作用。以上这些问题都给目前的IPv6的 网络进行拓扑发现造成了极大的困难,迫切需要进行深入的研究。由于基于通用协议的探测方法独立于IP的特性,目前许多研究组织往往采用 Traceroute探测方法对IPv6的骨干网路由器级的拓扑进行研究,但利用Traceroute进行 探测,虽然具有适用性好、容易实现等优点,但是存在路由别名的问题,如图1(a)和图1(b) 所示,其中图1(a)为实际的网络连接,图1(b)为通过Traceroute探测得到的拓扑网络,在 Traceroute探测过程中,除了目标节点是探测报文的真正目的地,其它发送ICMP消息的都 是中间节点,在收到的所有ICMP响应消息中,除了目标节点发送的消息外,其它消息的源 IP地址只代表路由器的一个接口,并不代表路由节点。由于探测点可能会收到来自同一节 点的不同接口发来的ICMP响应,所以在构造拓扑时,若把所有地址视为节点对待,将会和 实际拓扑相差很大。从路由器B发现路由器D的过程中,获得了路由器D的接口 1的IP地 址,从路由器C发现路由器D的过程中,获得了路由器D的的接口 2的IP地址,如果不能分 辨出接口 1和接口 2是同一个路由器的两个接口,就会得到错误的拓扑图,见图1(b),这就 是路由别名的问题。此外,Traceroute探测方法不能发现网段信息,而且发现的信息不完 整,即节点和链路的覆盖率不高。而覆盖率依赖于探测节点的数目,若增加探测节点来提升 覆盖率,则会增加探测时间以及会出现更多的路由别名问题。

发明内容
本发明的目的之一在于克服上述现有技术的缺点和不足,提供一种基于IPv6的 下一代互联网拓扑发现系统,其可以实现IPv6下一代互联网网络层拓扑自动发现,具有稳 定性加强、性能更好、消除别名,以及有效提升拓扑发现的准确性和完整性等优点。本发明的目的之二在于克服上述现有技术的缺点和不足,提供一种基于IPv6的 下一代互联网拓扑发现系统的实现方法。本发明的目的之一是通过下述技术方案实现的一种基于IPv6的下一代互联网 拓扑发现系统,包括探测列表输入模块,用于接收用户输入的探测节点信息,形成探测节点列表并发 送到设备及相连关系发现模块;设备及相连关系发现模块,用于接收探测列表输入模块的探测节点列表,并根据 探测节点列表中的每个地址发送网络路径探测包,获取以IPv6地址标识的路由器及其相 连关系,并把获取的信息发送至分析整合模块;设备及子网拓扑发现模块,用于将计算机模拟成路由器,与网络上的路由器交换 网络拓扑信息,得到完整的网络拓扑信息,并把网络拓扑信息发送分析整合模块;分析整合模块,用于接收设备及子网拓扑发现模块和设备及相连关系发现模块的信息并进行分析,形成完整的拓扑结构图,并发送至拓扑结构信息存储模块;拓扑结构信息存储模块,用于将完整的拓扑结构图存入数据库;数据库,用于存储拓扑结构信息;拓扑结构信息显示模块,用于显示数据库中完整的拓扑结构图。为更好的实现本发明,所述系统采用对象的形式来组织数据结构,对于系统中涉 及到的每一种拓扑对象均定义了一个类,具体包括设备类、子网类、连接类、接口类和路由 器直连子网类。优选的,所述系统采用链表的形式来组织拓扑对象,具体包括用于保存所发现路由器的路由器列表1、路由器列表2和设备表;用于保存所发现子网的子网列表;用于保存所发现路由器之间连接关系的连接列表1、连接列表2和连接列表;用于保存所发现路由器与子网连接关系的路由器直连子网列表;和用于保存路由别名的别名列表和接口表。本发明的目的之二是通过下述技术方案实现的一种基于IPv6的下一代互联网 拓扑发现系统的实现方法,包括以下步骤Si、探测列表输入模块接收用户输入的探测节点信息,形成探测节点列表并发送 到设备及相连关系发现模块,进入步骤S2 ;S2、设备及相连关系发现模块接收探测列表输入模块的探测节点列表,并根据探 测节点列表中的每个地址发送网络路径探测包,获取以IPv6地址标识的路由器及其相连 关系,并把获取的信息发送至分析整合模块;设备及子网拓扑发现模块将计算机模拟成路由器,与网络上的路由器交换网络拓 扑信息,得到完整的网络拓扑信息,并把网络拓扑信息发送至分析整合模块,进入步骤S3;S3、分析整合模块接收设备及子网拓扑发现模块和设备及相连关系发现模块的信 息并进行分析,形成完整的拓扑结构图,并发送至拓扑结构信息存储模块,进入S4 ;S4、拓扑结构信息存储模块将完整的拓扑结构图存入数据库,进入步骤S5 ;S5、拓扑结构信息显示模块显示数据库中完整的拓扑结构图。为更好的实现本发明,所述步骤S2中设备及相连关系发现模块接收探测列表输 入模块的探测节点列表,并根据探测节点列表中的每个地址发送网络路径探测包,获取以 IPv6地址标识的路由器及其相连关系,并把获取的信息发送至分析整合模块,具体包括以 下步骤S2. 1、设备及相连关系发现模块接收探测列表输入模块的探测节点列表,并进入
下一步骤;S2. 2、设备及相连关系发现模块判断探测节点列表中的地址是否都进行了普通路 由探测,若是,则跳转至S2. 4 ;若不是,则在探测节点列表中选择一个没有进行普通路由探 测的地址进行普通路由探测,即设备及相连关系发现模块以选择的地址为目标地址发送路 由路径探测包,等待并接收路由路径探测包的返回结果,进入下一步骤;S2. 3、设备及相连关系发现模块分析路由路径探测包的返回结果,依次获取设备 的IPv6地址、该设备的跳数、设备间连接信息,并将设备IPv6地址和该设备的跳数保存到 路由器列表1,把设备间连接信息保存到连接列表1中;若路由路径探测包的返回结果中最后一跳的地址和探测的目标地址不一样,那么这两个地址是路由别名,把路由别名保存到 别名列表中,返回步骤S2. 2;S2. 4、设备及相连关系发现模块发送一个路由路径探测包到一个可以到达的地 址,根据探测包返回结果中第一跳的地址来获取网关地址,进入下一步骤;S2. 5、设备及相连关系发现模块以网关地址为目标地址,路由器列表1中没有进 行过源路由测试的的路由器为中间节点,进行源路由测试,将支持源路由探测的节点放到 源路由器列表中;S2. 6、设备及相连关系发现模块以路由器列表1中的节点为目标节点,源路由器 列表中节点为中间节点,进行源路由探测,并进入一下步骤;S2. 7、设备及相连关系发现模块分析步骤S2. 6中源路由探测的结果,将新发现的 连接信息存入连接列表1 ;若在源路由测试和源路由探测中,发现一些新的节点,则把这些 新的节点写入路由器列表1 ;设备及相连关系发现模块进行别名判断,即当对同一地址进行源路由探测时,若 返回报文的源地址与探测的地址不同,则返回报文的源地址与探测地址是路由别名,把路 由别名保存到别名列表,进入下一步骤;S2. 8、设备及相连关系发现模块判断在进行步骤S2. 5的源路由测试及步骤S2. 6 的源路由探测时,是否发现一些新的节点,若有,则返回至步骤S2. 5 ;若否,则把路由器列 表1、连接列表1和别名列表传送给分析整合模块,结束操作。优选的,在步骤S2. 5中,下述节点无需进行源路由测试(1)设备及相连关系发现模块之前已经对该节点进行过源路由测试;(2)该节点位于网关上;(3)设备及相连关系发现模块之前已经对该节点所在路由器上的其他地址进行过 源路由测试。优选的,在步骤S2. 6中,下述节点无需进行源路由探测(1)设备及相连关系发现模块之前已经对此节点进行过源路由探测;(2)目标地址位于网关上;(3)中间节点位于网关上;(4)中间节点和目标地址是路由别名;(5)设备及相连关系发现模块曾经把目标地址作为中间节点探测过,而且探测包 不能到达目标地址。优选的,所述步骤S2设备及子网拓扑发现模块将计算机模拟成路由器,与网络上 的路由器交换网络拓扑信息,得到完整的拓扑结构信息,并把拓扑结构信息发送至分析整 合模块,具体包括以下步骤Q2. 1、设备及子网拓扑发现模块通过计算机系统,创建一个套接字到一个端口上 进行监听,若收到客户端的结束命令时,则设备及子网拓扑发现模块结束操作;若收到客户 端的开始命令时,则进入下一步骤;Q2. 2、设备及子网拓扑发现模块获取自己计算机的网卡地址,然后进入下一步 骤;Q2. 3、设备及子网拓扑发现模块初始化组播包,然后进入下一步骤;
9
Q2. 4、设备及子网拓扑发现模块将步骤Q2. 3中构建的组播包发送到网络中,进入
下一步骤;Q2. 5、设备及子网拓扑发现模块判断是否收到对端路由器对组播包的回应包,若 是,则设备及子网拓扑发现模块分析对端路由器的回应包,获取对端路由器的本地链路地 址,并进入下一步骤;若不是,则跳转至步骤Q2. 7 ;Q2. 6、设备及子网拓扑发现模块发送一个请求数据库描述包给对端路由器,并进 入下一步骤;Q2. 7、设备及子网拓扑发现模块判断是否收到对端路由器对请求数据库描述包的 回应包,若是,则设备及子网拓扑发现模块再发一次请求数据库描述包给对端路由器,以完 成与对端路由器的协商,进入下一步骤;若不是,则跳转至步骤Q2. 9 ;Q2. 8、设备及子网拓扑发现模块发送链路状态请求报文,向对端路由器申请获取 链路状态数据,进入下一步骤;Q2. 9、设备及子网拓扑发现模块判断是否收到对端路由器回应的链路状态数据 包,若是,则将链路状态数据保存在缓存中,进入下一步骤;若不是,则返回至步骤Q2. 5 ;Q2. 10、设备及子网拓扑发现模块判断是否与对端路由器交换完所有链路状态数 据,若是,则进入下一步骤;若否,则返回至步骤Q2. 8 ;Q2. 11、设备及子网拓扑发现模块分析获取的链路状态数据信息,形成网络拓扑信 息,包括以路由器编号标识的路由器列表2、连接列表2、子网列表以及路由器直连子网列 表,最后将网络拓扑信息发送至分析整合模块。优选的,所述步骤Q2. 3中设备及子网拓扑发现模块初始化组播包,具体是指设备 及子网拓扑发现模块在组播包中填充自己的地址、组播地址、校验码,以及组播包的类型与 长度;其中组播包的类型用于说明这是一个与邻居打招呼的包,主要是用来发现邻居的,以 便获取邻近路由器的本地链路地址,所述校验码用于标记组播包在传递时有无误码。优选的,所述步骤S3具体包括以下步骤S3. 1、分析整合模块计算以路由器编号标识的路由器列表2中的每个节点的跳 数,进入下一步骤;S3. 2、分析整合模块从具有IPv6地址的路由器列表1中读出一个还没有进行分析 的节点信息,包括该路由器的IPv6地址和跳数信息,进入下一步骤;S3. 3、设该节点表示为IPA,计算IPA的IP地址前缀,进入下一步骤;S3. 4、分析整合模块判断IPA的IP地址前缀是否等于子网列表中的某个子网,若 是,则IPA属于该子网,进入下一步骤;若否,则IPA属于域外设备节点,跳转至S3. 14 ;S3. 5、分析整合模块读出路由器列表2中属于IPA所在的子网的节点Rl的跳数, 进入下一步骤;S3. 6、分析整合模块在以路由器编号标识的路由器列表2中查找IPA所属的子网 是否还有节点R2,如果有,分析整合模块读出路由器列表2中属于该子网的节点R2的跳数, 进入下一步骤;如果没有,则跳转至S3. 9 ;S3. 7、分析整合模块判断IPA的跳数是否等于节点Rl的跳数且不等于节点R2的 跳数,若IPA的跳数等于节点Rl的跳数且IPA的跳数不等于节点R2的跳数,则IPA属于Rl 节点,跳转至步骤S3. 14 ;若不是,则进入下一步骤;
10
S3. 8、分析整合模块判断IPA的跳数是否等于节点R2的跳数且IPA的跳数不等于 节点Rl的跳数,若IPA的跳数等于节点R2的跳数且IPA的跳数不等于节点Rl的跳数,则 IPA属于R2节点,跳转至步骤S3. 14 ;若不是,则进入下一步骤;S3. 9、分析整合模块判断IPA是否存在已经进行分析的别名IPB,若有,并且IPB属 于路由器R,则IPA也属于路由器R,将IPA的IPv6地址存入接口表,跳转至步骤S3. 14 ;若 没有,则进入下一步骤;S3. 10、分析整合模块判断IPA是否存在没有进行分析的别名,若有,则读取该别 名节点信息,返回至步骤S3. 3 ;若没有,则进入下一步骤;S3. 11、分析整合模块判断IPA所属子网是否存在其他已经进行过分析的节点 IPC,若没有,则跳转至步骤S3. 13 ;若有,则进入下一步骤;S3. 12、分析整合模块判断,若节点IPC属于路由器R1,则IPA属于路由器Rl的同 网段路由器R2 ;若节点IPC属于路由器R2,则IPA属于路由器R2的同网段路由器Rl ;分析 整合模块将IPA的地址存入接口表,跳转至步骤S3. 14 ;S3. 13、分析整合模块判断IPA所属子网是否存在其他没有进行分析的节点,若存 在,则读取该节点信息,包括该路由器的IPv6地址和跳数信息,返回至步骤S3. 3 ;若不存 在,则进入下一步骤;S3. 14、分析整合模块判断具有IPv6地址的路由器列表1所有节点是否已完成分 析,若不是,则返回至步骤S3. 2 ;若是,则进入下一步骤;S3. 15、分析整合模块将分析出的节点IPv6地址保存在接口表中,如果一台路由 器有多个IP,将最小的IPv6地址保存到新整理的设备表中,将域外设备节点的IPv6地址保 存在设备表中,将路由器之间连接关系保存在连接列表,路由器与子网连接关系保存在路 由器直连子网列表,子网信息保存在子网列表,形成完整的拓扑结构图,并发送至拓扑结构 信息存储模块。本发明与现有技术相比,具有如下优点和有益效果第一、系统更加稳定函数放在线程里运行,给线程定义一个超时时间,每100毫 秒判断1次,超过超时时间则强制停止线程后重启,提高了程序的稳定性。第二、性能更好通过分析节点和相关接口的测试历史,避免对同一节点的多次重 复探测,有效提高了系统的性能。第三、本发明系统发现的拓扑结构更加完整,并且可以得到子网信息。通过将计算 机模拟成路由器,与路由器交换网络拓扑信息,可以得到完整和正确的拓扑结构信息,这个 拓扑信息可以包含路由器信息(以路由器编号RouterID标识)、路由器之间的连接信息、子 网信息和路由器与子网之间的连接信息。第四、有效消除路由别名,获取IPv6路由器接口信息,有效提高拓扑发现的准确 性。分析整合模块通过综合分析设备及子网拓扑发现模块和设备及相连关系发现模块的结 果,将以IPv6地址标识的路由器和以路由器标识符标识的路由器进行对应,可以有效消除路 由别名而且可以发现大量的子网信息和IPv6路由器接口信息,有效提高拓扑发现的准确性。


图1 (a)是实际的网络连接示意图1 (b)是通过Traceroute探测得到的拓扑网络示意图;图2是实施例一中基于IPv6的下一代互联网拓扑发现系统的结构示意图;图3是图2中设备及相连关系发现模块的工作流程图;图4是图2中设备及子网拓扑发现模块的工作流程图;图5是图2中分析整合模块的工作流程图;图6是实施例一中进行IPv6拓扑自动发现得到的拓扑结构示意图。
具体实施例方式下面结合实施例及附图,对本发明作进一步地详细说明,但本发明的实施方式不 限于此。实施例如图2所示,一种基于IPv6的下一代互联网拓扑发现系统,包括探测列表输入模 块、设备及子网拓扑发现模块、设备及相连关系发现模块、分析整合模块、拓扑结构信息存 储模块、数据库和拓扑结构信息显示模块,其中探测列表输入模块,用于通过客户端的用户界面接收用户输入的探测节点信息, 形成探测节点列表并发送到设备及相连关系发现模块;设备及相连关系发现模块,用于接收探测列表输入模块的探测节点列表,并根据 探测节点列表中的每个地址发送网络路径探测包,获取以IPv6地址标识的路由器及其相 连关系,并把获取的信息发送至分析整合模块;设备及子网拓扑发现模块,用于将计算机模拟成路由器,与网络上的路由器交换 网络拓扑信息,得到完整的网络拓扑信息,并把网络拓扑信息发送分析整合模块;分析整合模块接收设备及子网拓扑发现模块和设备及相连关系发现模块的信息 并进行分析,形成完整的拓扑结构图,并发送至拓扑结构信息存储模块;拓扑结构信息存储模块,用于将完整的拓扑结构图存入数据库;数据库,用于存储拓扑结构信息;拓扑结构信息显示模块,用于显示数据库中完整的拓扑结构图。一种基于IPv6的下一代互联网拓扑发现系统的实现方法,包括以下步骤Si、探测列表输入模块通过客户端的用户界面接收用户输入的探测节点信息,形 成探测节点列表并发送到设备及相连关系发现模块,进入步骤S2 ;S2、设备及相连关系发现模块接收探测列表输入模块的探测节点列表,并根据探 测节点列表中的每个地址发送网络路径探测包,获取以IPv6地址标识的路由器及其相连 关系,并把获取的信息发送至分析整合模块;设备及子网拓扑发现模块将计算机模拟成路由器,与网络上的路由器交换网络拓 扑信息,得到完整的网络拓扑信息,并把网络拓扑信息发送至分析整合模块,进入步骤S3;S3、分析整合模块接收设备及子网拓扑发现模块和设备及相连关系发现模块的信 息并进行分析,形成完整的拓扑结构图,并发送至拓扑结构信息存储模块,进入S4 ;S4、拓扑结构信息存储模块将完整的拓扑结构图存入数据库,进入步骤S5 ;S5、拓扑结构信息显示模块显示数据库中完整的拓扑结构图。所述拓扑结构信息存储模块将分析得到的完整的拓扑结构信息存入数据库。系
12统中采用了面向对象的思想来组织数据结构,对于系统中涉及到的每一种拓扑对象均定 义了一个类,其中包括设备类(Device)、子网类(Subnet)、连接类(Connection)、接口类 (Interface)、路由器直连子网类(RouterSubnet)等。每一种类都定义了相关的属性和操 作,比如路由器类定义了设备类型,设备名称、设备描述、设备标识IP等属性;子网类定义 了子网IP地址、子网掩码等属性。系统采用链表的形式来组织拓扑对象,具体包括用于保存所发现路由器的路由器列表1、路由器列表2和设备表;用于保存所发现子网的子网列表;用于保存所发现路由器之间连接关系的连接列表1、连接列表2和连接列表;用于保存所发现路由器与子网连接关系的路由器直连子网列表;和用于保存路由别名的别名列表和接口表。在拓扑发现中系统每发现一个拓扑对象均生成相应类的一个对象,并将该对象插 入到对应的列表中。发现结束后所得到的拓扑结构信息就完全保存在这几个链表结构中。所述设备及相连关系发现模块,接收探测节点列表,并对列表中的所有探测节点 进行网络路径的探测,把探测得到的节点存入路由器列表1,路由器之间连接信息存入连接 列表1 ;对路由器列表1中的所有节点进行源路由测试,目的是测试哪些节点支持源路由探 测,然后将支持源路由探测的节点存入源路由器列表(SourceRouteList)中;把源路由器 列表中的节点作为中间节点,把路由器列表1中的节点作为目标节点进行源路由探测,将 新发现的路由器之间连接信息存入连接列表1 ;若在源路由探测中,发现一些新的节点,则 把这些新的节点写入路由器列表1中并进行源路由探测;若设备及相连关系发现模块在探 测过程中发现路由别名,则把路由别名保存到别名列表中。设备及相连关系发现模块的工作流程,如图3所示,具体包括以下步骤S2. 1、设备及相连关系发现模块接收探测列表输入模块的探测节点列表,并进入 下一步骤;S2. 2、设备及相连关系发现模块判断探测节点列表中的地址是否都进行了普通路 由探测,若是,则跳转至S2. 4 ;若不是,则在探测节点列表中选择一个没有进行普通路由探 测的地址进行普通路由探测,即设备及相连关系发现模块以选择的地址为目标地址发送路 由路径探测包,等待并接收路由路径探测包的返回结果,进入下一步骤;S2. 3、设备及相连关系发现模块分析路由路径探测包的返回结果,依次获取设备 的IPv6地址、该设备的跳数、设备间连接信息,并将设备IPv6地址和该设备的跳数保存到 路由器列表1,把设备间连接信息保存到连接列表1中;若路由路径探测包的返回结果中最 后一跳的地址和探测的目标地址不一样,那么这两个地址是路由别名,把路由别名保存到 别名列表中,返回步骤S2. 2;S2. 4、设备及相连关系发现模块发送一个路由路径探测包到一个可以到达的地 址,根据探测包返回结果中第一跳的地址来获取网关地址,进入下一步骤;S2. 5、设备及相连关系发现模块以网关地址为目标地址,路由器列表1中没有进 行过源路由测试的的路由器为中间节点,进行源路由测试,将支持源路由探测的节点放到 源路由器列表中;S2. 6、设备及相连关系发现模块以路由器列表1中的节点为目标节点,源路由器列表中节点为中间节点,进行源路由探测,并进入一下步骤;S2. 7、设备及相连关系发现模块分析步骤S2. 6中源路由探测的结果,将新发现的 路由器之间的连接信息存入连接列表1 ;若在源路由测试和源路由探测中,发现一些新的 节点,则把这些新的节点写入路由器列表1 ;设备及相连关系发现模块进行别名判断,即当对同一地址进行源路由探测时,若 返回报文的源地址与探测的地址不同,则返回报文的源地址与探测地址是路由别名,把路 由别名保存到别名列表,进入下一步骤;S2. 8、设备及相连关系发现模块判断在进行步骤S2. 5的源路由测试及步骤S2. 6 的源路由探测时,是否发现一些新的节点,若有,则返回至步骤S2. 5 ;若否,则把路由器列 表1、连接列表1和别名列表传送给分析整合模块,结束操作。所述S2. 5中,设备及相连关系发现模块在进行源路由测试前,判断某节点是否需 要进行源路由测试,有几种情况无需进行源路由测试1.设备及相连关系发现模块之前已经对此地址进行过源路由测试;2.此地址位于网关上;3.之前设备及相连关系发现模块已经对此地址所在路由器上的其他地址进行过 源路由测试。所述步骤S2. 6、设备及相连关系发现模块在进行源路由探测前,判断某节点是否 需要进行源路由探测,有几种情况无需测试1.设备及相连关系发现模块之前已经对此地址进行过源路由探测;2.目标地址位于网关上;3.中间节点位于网关上;4.中间节点和目标地址是路由别名;5.设备及相连关系发现模块曾经把目标地址作为中间节点探测过,而且探测包不 能到达目标地址。所述设备及子网拓扑发现模块发送一个组播包,计算机的对端路由器收到该组播 包后发一个回应包,设备及子网拓扑发现模块分析对端路由器的回应包,得到对端路由器 的本地链路地址;然后设备及子网拓扑发现模块向对端路由器发一个请求数据库描述包, 得到对端路由器返回的回应包,设备及子网拓扑发现模块再次向对端路由器发一个请求数 据库描述包,完成与对端路由器的协商;然后设备及子网拓扑发现模块通过发送链路状态 请求报文向对端路由器申请获取链路状态数据,对端路由器收到请求后就会回应若干个链 路状态数据包,设备及子网拓扑发现模块获得链路状态数据包中的链路状态数据,分析整 理链路状态数据形成网络拓扑信息,包括以路由器编号(RouterID)标识的路由器信息、路 由器之间的连接信息、子网信息以及路由器与子网之间的连接信息等,最后将网络拓扑信 息发送至分析整合模块。设备及子网拓扑发现模块的工作流程,如图4所示,具体包括以下步骤Q2. 1、设备及子网拓扑发现模块通过计算机系统,创建一个套接字到一个端口 (本实施例中端口默认为1234,用户可以修改)上进行监听,若收到客户端的结束命令时, 则设备及子网拓扑发现模块结束操作;若收到客户端的开始命令时,则进入下一步骤;Q2. 2、设备及子网拓扑发现模块获取自己计算机的网卡地址,然后进入下一步骤;Q2. 3、设备及子网拓扑发现模块初始化组播包,在组播包中填充自己的地址、组播 地址、校验码,以及组播包的类型与长度;其中组播包的类型用于说明这是一个与邻居打招 呼的包,主要是用来发现邻居的,以便获取邻近路由器(或称为对端路由器)的本地链路地 址,所述校验码用于标记组播包在传递时有无误码,然后进入下一步骤;Q2. 4、设备及子网拓扑发现模块将步骤Q2. 3中构建的组播包发送到网络中,进入 下一步骤;Q2. 5、设备及子网拓扑发现模块判断是否收到对端路由器对组播包的回应包,若 是,则设备及子网拓扑发现模块分析对端路由器的回应包,获取对端路由器的本地链路地 址,并进入下一步骤;若不是,则跳转至步骤Q2. 7 ;Q2. 6、设备及子网拓扑发现模块发送一个请求数据库描述包给对端路由器,并进 入下一步骤;Q2. 7、设备及子网拓扑发现模块判断是否收到对端路由器对请求数据库描述包的 回应包,若是,则设备及子网拓扑发现模块再发一次请求数据库描述包给对端路由器,以完 成与对端路由器的协商,同时进入拓扑信息交换阶段,即进入下一步骤;若不是,则跳转至 步骤Q2. 9 ;Q2. 8、设备及子网拓扑发现模块发送链路状态请求报文,向对端路由器申请获取 链路状态数据,进入下一步骤;Q2. 9、设备及子网拓扑发现模块判断是否收到对端路由器回应的链路状态数据 包,若是,则将链路状态数据保存在缓存中,进入下一步骤;若不是,则返回至步骤Q2. 5 ;Q2. 10、设备及子网拓扑发现模块判断是否与对端路由器交换完所有链路状态数 据,若是,则进入下一步骤;若否,则返回至步骤Q2. 8 ;Q2. 11、设备及子网拓扑发现模块分析获取的链路状态数据信息,形成网络拓扑信 息,包括以路由器编号标识的路由器列表2、连接列表2、子网列表以及路由器直连子网列 表,最后将网络拓扑信息发送至分析整合模块。所述分析整合模块是利用跳数来将设备及子网拓扑发现模块和设备及相连关系 发现模块的信息有机结合。所述设备及子网拓扑发现模块发送的网络拓扑信息是用路由器 编号(RouterID)来标识路由器的,而在设备及相连关系发现模块输出的拓扑相关信息(包 括路由器列表1、连接列表1和别名列表)是用IPv6地址来标识路由器的。首先利用设 备及子网拓扑发现中发现的子网信息确定设备及相连关系发现的IPv6地址是在哪个网段 中,然后利用到同一路由器的不同地址跳数相等的原理,计算网段内的路由器的跳数,然后 将网段内的路由器的跳数和IPv6地址标识的路由器的跳数进行比较,若相等,则确定了对 应关系。分析整合模块的工作流程,如图5所示,具体包括以下步骤S3. 1、分析整合模块计算以路由器编号标识的路由器列表2中的每个节点的跳 数,进入下一步骤;S3. 2、分析整合模块从具有IPv6地址的路由器列表1中读出一个还没有进行分析 的节点信息,包括该路由器的IPv6地址和跳数信息,进入下一步骤;S3. 3、设该节点表示为IPA,计算IPA的IP地址前缀,进入下一步骤;
S3. 4、分析整合模块判断IPA的IP地址前缀是否等于子网列表中的某个子网,若 是,则IPA属于该子网,进入下一步骤;若否,则IPA属于域外设备节点,跳转至S3. 14 ;S3. 5、分析整合模块读出路由器列表2中属于IPA所在的子网的节点Rl的跳数, 进入下一步骤;S3. 6、分析整合模块在以路由器编号标识的路由器列表2中查找IPA所属的子网 是否还有节点R2,如果有,分析整合模块读出路由器列表2中属于该子网的节点R2的跳数, 进入下一步骤;如果没有,则跳转至S3. 9 ;S3. 7、分析整合模块判断IPA的跳数是否等于节点Rl的跳数且不等于节点R2的 跳数,若IPA的跳数等于节点Rl的跳数且IPA的跳数不等于节点R2的跳数,则IPA属于Rl 节点,跳转至步骤S3. 14 ;若不是,则进入下一步骤;S3. 8、分析整合模块判断IPA的跳数是否等于节点R2的跳数且IPA的跳数不等于 节点Rl的跳数,若IPA的跳数等于节点R2的跳数且IPA的跳数不等于节点Rl的跳数,则 IPA属于R2节点,跳转至步骤S3. 14 ;若不是,则进入下一步骤;S3. 9、分析整合模块判断IPA是否存在已经进行分析的别名IPB,若有,并且IPB属 于路由器R,则IPA也属于路由器R,将IPA的IPv6地址存入接口表(接口表中含有接口所 属的路由器R信息),跳转至步骤S3. 14 ;若没有,则进入下一步骤;S3. 10、分析整合模块判断IPA是否存在没有进行分析的别名,若有,则读取该别 名节点信息(包括该路由器的IPv6地址和跳数信息),返回至步骤S3. 3 ;若没有,则进入下 一步骤;S3. 11、分析整合模块判断IPA所属子网是否存在其他已经进行过分析的节点 IPC,若没有,则跳转至步骤S3. 13 ;若有,则进入下一步骤;S3. 12、分析整合模块判断,若节点IPC属于路由器R1,则IPA属于路由器Rl的同 网段路由器R2 ;若节点IPC属于路由器R2,则IPA属于路由器R2的同网段路由器Rl ;分析 整合模块将IPA的地址存入接口表(接口表中含有接口所属的路由器R2或Rl信息),跳转 至步骤S3. 14 ;S3. 13、分析整合模块判断IPA所属子网是否存在其他没有进行分析的节点,若存 在,则读取该节点信息,包括该路由器的IPv6地址和跳数信息,返回至步骤S3. 3 ;若不存 在,则进入下一步骤;S3. 14、分析整合模块判断具有IPv6地址的路由器列表1所有节点是否已完成分 析,若不是,则返回至步骤S3. 2 ;若是,则进入下一步骤;S3. 15、分析整合模块将分析出的节点IPv6地址保存在接口表中,如果一台路由 器有多个IP,将最小的IPv6地址保存到新整理的设备表中,将域外设备节点的IPv6地址保 存在设备表中,将路由器之间的连接关系保存在连接列表,路由器与子网连接关系保存在 路由器直连子网列表,子网信息保存在子网列表,形成完整的拓扑结构图,并发送至拓扑结 构信息存储模块。图6是应用本系统在华南理工大学的网络进行IPv6拓扑自动发现的拓扑结构示 意图,出于安全的考虑,这里隐藏了详细的IPv6地址信息,其中以R0uterl、R0uter2,……, Routerl8表示路由器。上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化, 均应为等效的置换方式,都包含在本发明的保护范围之内。
权利要求
一种基于IPv6的下一代互联网拓扑发现系统,其特征在于,包括探测列表输入模块,用于接收用户输入的探测节点信息,形成探测节点列表并发送到设备及相连关系发现模块;设备及相连关系发现模块,用于接收探测列表输入模块的探测节点列表,并根据探测节点列表中的每个地址发送网络路径探测包,获取以IPv6地址标识的路由器及其相连关系,并把获取的信息发送至分析整合模块;设备及子网拓扑发现模块,用于将计算机模拟成路由器,与网络上的路由器交换网络拓扑信息,得到完整的网络拓扑信息,并把网络拓扑信息发送给分析整合模块;分析整合模块,用于接收设备及子网拓扑发现模块和设备及相连关系发现模块的信息并进行分析,形成完整的拓扑结构图,并发送至拓扑结构信息存储模块;拓扑结构信息存储模块,用于将完整的拓扑结构图存入数据库;数据库,用于存储拓扑结构信息;拓扑结构信息显示模块,用于显示数据库中完整的拓扑结构图。
2.根据权利要求1所述基于IPv6的下一代互联网拓扑发现系统,其特征在于,所述 系统采用对象的形式来组织数据结构,对于系统中涉及到的每一种拓扑对象均定义了一个 类,具体包括设备类、子网类、连接类、接口类和路由器直连子网类。
3.根据权利要求1所述基于IPv6的下一代互联网拓扑发现系统,其特征在于,所述系 统采用链表的形式来组织拓扑对象,具体包括用于保存所发现路由器的路由器列表1、路由器列表2和设备表; 用于保存所发现子网的子网列表;用于保存所发现路由器之间连接关系的连接列表1、连接列表2和连接列表; 用于保存所发现路由器与子网连接关系的路由器直连子网列表; 和用于保存路由别名的别名列表和接口表。
4.一种基于IPv6的下一代互联网拓扑发现系统的实现方法,其特征在于,包括以下步骤51、探测列表输入模块接收用户输入的探测节点信息,形成探测节点列表并发送到设 备及相连关系发现模块,进入步骤S2 ;52、设备及相连关系发现模块接收探测列表输入模块的探测节点列表,并根据探测节 点列表中的每个地址发送网络路径探测包,获取以IPv6地址标识的路由器及其相连关系, 并把获取的信息发送至分析整合模块;设备及子网拓扑发现模块将计算机模拟成路由器,与网络上的路由器交换网络拓扑信 息,得到完整的网络拓扑信息,并把网络拓扑信息发送至分析整合模块,进入步骤S3 ;53、分析整合模块接收设备及子网拓扑发现模块和设备及相连关系发现模块的信息并 进行分析,形成完整的拓扑结构图,并发送至拓扑结构信息存储模块,进入S4 ;54、拓扑结构信息存储模块将完整的拓扑结构图存入数据库,进入步骤S5;55、拓扑结构信息显示模块显示数据库中完整的拓扑结构图。
5.根据权利要求4所述基于IPv6的下一代互联网拓扑发现系统的实现方法,其特征在 于,所述步骤S2设备及相连关系发现模块接收探测列表输入模块的探测节点列表,并根据 探测节点列表中的每个地址发送网络路径探测包,获取以IPv6地址标识的路由器及其相连关系,并把获取的信息发送至分析整合模块,具体包括以下步骤S2. 1、设备及相连关系发现模块接收探测列表输入模块的探测节点列表,并进入下一 步骤;S2. 2、设备及相连关系发现模块判断探测节点列表中的地址是否都进行了普通路由测 试,若是,则跳转至S2. 4 ;若不是,则在探测节点列表中选择一个没有进行普通路由探测的 地址进行普通路由探测,即设备及相连关系发现模块以选择的地址为目标地址发送路由路 径探测包,等待并接收路由路径探测包的返回结果,进入下一步骤;S2. 3、设备及相连关系发现模块分析路由路径探测包的返回结果,依次获取设备的 IPv6地址、该设备的跳数、设备间连接信息,并将设备IPv6地址和该设备的跳数保存到路 由器列表1,把设备间连接信息保存到连接列表1中;若路由路径探测包的返回结果中最后 一跳的地址和探测的目标地址不一样,那么这两个地址是路由别名,把路由别名保存到别 名列表中,返回步骤S2. 2 ;S2. 4、设备及相连关系发现模块发送一个路由路径探测包到一个可以到达的地址,根 据探测包返回结果中第一跳的地址来获取网关地址,进入下一步骤;S2. 5、设备及相连关系发现模块以网关地址为目标地址,路由器列表1中没有进行过 源路由测试的路由器为中间节点,进行源路由测试,将支持源路由探测的节点放到源路由 器列表中;S2. 6、设备及相连关系发现模块以路由器列表1中的节点为目标节点,源路由器列表 中节点为中间节点,进行源路由探测,并进入一下步骤;S2. 7、设备及相连关系发现模块分析步骤S2. 6中源路由探测的结果,将新发现的连接 信息存入连接列表1 ;若在源路由测试和源路由探测中,发现一些新的节点,则把这些新的 节点写入路由器列表1 ;设备及相连关系发现模块进行别名判断,即当对同一地址进行源路由探测时,若返回 报文的源地址与探测的地址不同,则返回报文的源地址与探测地址是路由别名,把路由别 名保存到别名列表,进入下一步骤;S2. 8、设备及相连关系发现模块判断在进行步骤S2. 5的源路由测试及步骤S2. 6的源 路由探测时,是否发现一些新的节点,若有,则返回至步骤S2. 5 ;若否,则把路由器列表1、 连接列表1和别名列表传送给分析整合模块,结束操作。
6.根据权利要求5所述基于IPv6的下一代互联网拓扑发现系统的实现方法,其特征在 于,在步骤S2. 5中,下述节点无需进行源路由测试(1)设备及相连关系发现模块之前已经对该节点进行过源路由测试;(2)该节点位于网关上;(3)设备及相连关系发现模块之前已经对该节点所在路由器上的其他地址进行过源路 由测试。
7.根据权利要求5所述基于IPv6的下一代互联网拓扑发现系统的实现方法,其特征在 于,在步骤S2. 6中,下述节点无需进行源路由探测(1)设备及相连关系发现模块之前已经对此节点进行过源路由探测;(2)目标地址位于网关上;(3)中间节点位于网关上;(4)中间节点和目标地址是路由别名;(5)设备及相连关系发现模块曾经把目标地址作为中间节点探测过,而且探测包不能 到达目标地址。
8.根据权利要求5所述基于IPv6的下一代互联网拓扑发现系统的实现方法,其特征在 于,所述步骤S2设备及子网拓扑发现模块将计算机模拟成路由器,与网络上的路由器交换 网络拓扑信息,得到完整的拓扑结构信息,并把拓扑结构信息发送至分析整合模块,具体包 括以下步骤Q2. 1、设备及子网拓扑发现模块通过计算机系统,创建一个套接字到一个端口上进行 监听,若收到客户端的结束命令时,则设备及子网拓扑发现模块结束操作;若收到客户端的 开始命令时,则进入下一步骤;Q2. 2、设备及子网拓扑发现模块获取自己计算机的网卡地址,然后进入下一步骤; Q2. 3、设备及子网拓扑发现模块初始化组播包,然后进入下一步骤; Q2. 4、设备及子网拓扑发现模块将步骤Q2. 3中构建的组播包发送到网络中,进入下一 步骤;Q2. 5、设备及子网拓扑发现模块判断是否收到对端路由器对组播包的回应包,若是,则 设备及子网拓扑发现模块分析对端路由器的回应包,获取对端路由器的本地链路地址,并 进入下一步骤;若不是,则跳转至步骤Q2. 7 ;Q2. 6、设备及子网拓扑发现模块发送一个请求数据库描述包给对端路由器,并进入下一步骤;Q2. 7、设备及子网拓扑发现模块判断是否收到对端路由器对请求数据库描述包的回应 包,若是,则设备及子网拓扑发现模块再发一次请求数据库描述包给对端路由器,以完成与 对端路由器的协商,进入下一步骤;若不是,则跳转至步骤Q2. 9 ;Q2. 8、设备及子网拓扑发现模块发送链路状态请求报文,向对端路由器申请获取链路 状态数据,进入下一步骤;Q2. 9、设备及子网拓扑发现模块判断是否收到对端路由器回应的链路状态数据包,若 是,则将链路状态数据保存在缓存中,进入下一步骤;若不是,则返回至步骤Q2. 5 ;Q2. 10、设备及子网拓扑发现模块判断是否与对端路由器交换完所有链路状态数据,若 是,则进入下一步骤;若否,则返回至步骤Q2. 8 ;Q2. 11、设备及子网拓扑发现模块分析获取的链路状态数据信息,形成网络拓扑信息, 包括以路由器编号标识的路由器列表2、连接列表2、子网列表以及路由器直连子网列表, 最后将网络拓扑信息发送至分析整合模块。
9.根据权利要求8所述基于IPv6的下一代互联网拓扑发现系统的实现方法,其特征在 于,所述步骤Q2. 3中设备及子网拓扑发现模块初始化组播包,具体是指设备及子网拓扑发 现模块在组播包中填充自己的地址、组播地址、校验码,以及组播包的类型与长度;其中组 播包的类型用于说明这是一个与邻居打招呼的包,主要是用来发现邻居的,以便获取邻近 路由器的本地链路地址,所述校验码用于标记组播包在传递时有无误码。
10.根据权利要求8所述基于IPv6的下一代互联网拓扑发现系统的实现方法,其特征 在于,所述步骤S3具体包括以下步骤S3. 1、分析整合模块计算以路由器编号标识的路由器列表2中的每个节点的跳数,进入下一步骤;S3. 2、分析整合模块从具有IPv6地址的路由器列表1中读出一个还没有进行分析的节 点信息,包括该路由器的IPv6地址和跳数信息,进入下一步骤;S3. 3、设该节点表示为IPA,计算IPA的IP地址前缀,进入下一步骤; S3. 4、分析整合模块判断IPA的IP地址前缀是否等于子网列表中的某个子网,若是,则 IPA属于该子网,进入下一步骤;若否,则IPA属于域外设备节点,跳转至S3. 14 ;S3. 5、分析整合模块读出路由器列表2中属于IPA所在的子网的节点Rl的跳数,进入 下一步骤;S3. 6、分析整合模块在以路由器编号标识的路由器列表2中查找IPA所属的子网是否 还有节点R2,如果有,分析整合模块读出路由器列表2中属于该子网的节点R2的跳数,进入 下一步骤;如果没有,则跳转至S3. 9 ;S3. 7、分析整合模块判断IPA的跳数是否等于节点Rl的跳数且不等于节点R2的跳数, 若IPA的跳数等于节点Rl的跳数且IPA的跳数不等于节点R2的跳数,则IPA属于Rl节点, 跳转至步骤S3. 14 ;若不是,则进入下一步骤;S3. 8、分析整合模块判断IPA的跳数是否等于节点R2的跳数且IPA的跳数不等于节点 Rl的跳数,若IPA的跳数等于节点R2的跳数且IPA的跳数不等于节点Rl的跳数,则IPA属 于R2节点,跳转至步骤S3. 14 ;若不是,则进入下一步骤;S3. 9、分析整合模块判断IPA是否存在已经进行分析的别名IPB,若有,并且IPB属于 路由器R,则IPA也属于路由器R,将IPA的IPv6地址存入接口表,跳转至步骤S3. 14 ;若没 有,则进入下一步骤;S3. 10、分析整合模块判断IPA是否存在没有进行分析的别名,若有,则读取该别名节 点信息,返回至步骤S3. 3 ;若没有,则进入下一步骤;S3. 11、分析整合模块判断IPA所属子网是否存在其他已经进行过分析的节点IPC,若 没有,则跳转至步骤S3. 13 ;若有,则进入下一步骤;S3. 12、分析整合模块判断,若节点IPC属于路由器R1,则IPA属于路由器Rl的同网段 路由器R2;若节点IPC属于路由器R2,则IPA属于路由器R2的同网段路由器Rl ;分析整合 模块将IPA的地址存入接口表,跳转至步骤S3. 14 ;S3. 13、分析整合模块判断IPA所属子网是否存在其他没有进行分析的节点,若存在, 则读取该节点信息,包括该路由器的IPv6地址和跳数信息,返回至步骤S3. 3 ;若不存在,则 进入下一步骤;S3. 14、分析整合模块判断具有IPv6地址的路由器列表1所有节点是否已完成分析,若 不是,则返回至步骤S3. 2 ;若是,则进入下一步骤;S3. 15、分析整合模块将分析出的节点IPv6地址保存在接口表中,如果一台路由器有 多个IP,将最小的IPv6地址保存到新整理的设备表中,将域外设备节点的IPv6地址保存在 设备表中,将路由器之间的连接关系保存在连接列表,路由器与子网连接关系保存在路由 器直连子网列表,子网信息保存在子网列表,形成完整的拓扑结构图,并发送至拓扑结构信 息存储模块。
全文摘要
本发明公开了一种基于IPv6的下一代互联网拓扑发现系统,包括探测列表输入模块、设备及相连关系发现模块、设备及子网拓扑发现模块、分析整合模块、拓扑结构信息存储模块、数据库和拓扑结构信息显示模块。本发明还公开上述系统的实现方法,包括以下步骤S1、探测列表输入模块形成探测节点列表;S2、设备及相连关系发现模块发送网络路径探测包,获取以IPv6地址标识的路由器及其相连关系;设备及子网拓扑发现模块与网络上的路由器交换网络拓扑信息,得到网络拓扑信息;S3、分析整合模块进行分析形成完整的拓扑结构图。本发明具有稳定性加强、性能更好、消除别名,以及有效提升拓扑发现的准确性和完整性等优点。
文档编号H04L12/26GK101945043SQ20101027586
公开日2011年1月12日 申请日期2010年9月6日 优先权日2010年9月6日
发明者张凌, 李佳, 董守斌, 董守玲, 许勇, 邓剑峰, 陈启愉 申请人:华南理工大学;广州数园网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1