6Topo:一种测量IPv6网络拓扑的新方法

2020-06-05 12:17朱正一王占丰
小型微型计算机系统 2020年6期
关键词:网络拓扑节点测量

朱正一,陈 鸣,王占丰

1(南京航空航天大学计算机科学与技术学院,南京211106)

2(南京莱克贝尔信息技术有限公司,南京210007)

1 引 言

因特网的飞速发展使得新的子网和IP 节点以惊人的增长率连到因特网上,32 比特的IP 地址空间已经分配完毕.为了应对对大规模IP 地址空间的需求,开发了一种具有128 比特的IP 地址空间的IPv6 协议.网络拓扑结构是许多网络技术如网络性能管理、故障管理、安全管理的基础,而各个网络服务运营商出于商业竞争、技术水平和安全等方面的考虑,对自己的网络拓扑通常是秘而不宣的.通常需要通过网络测量的方法来分析判断、推测得知某个网络的拓扑.对于具有大量地址空间的IPv6 网络而言,获取网络拓扑不仅非常必要,并且有比IPv4 网络更多的特殊困难.

对于需要测量其网络拓扑的网络(称为目标网络)而言,传统的网络拓扑测量方法大多采用Traceroute 工具.事实上,仅当种子地址(即目标网络中作为测量目的点的IP 地址)数量与该网中的IP 地址数量的比值达到一定比例时,才能测量出该网络较完整的网络拓扑.因此,获取具有一定数量和一定质量的种子地址集合非常必要.

目前获取目标网络中种子地址集的方式主要包括:

1.在相关地址空间中进行全方位的蛮力扫描.

2.收集典型的活跃服务器如Web 服务器、邮箱服务器、DNS 服务器等的IP 地址.

3.分析过滤RouteView 数据集,收集相关的BGP 路由器的地址前缀.

4.采用抽样方法对IP 地址空间中进行探测取样.

5.分析处理开放的因特网拓扑测量数据集.

在IPv6 庞大的地址空间的条件下,我们分别考虑上述获取种子地址集的5 种方式的可行性.IP 地址长度从IPv4 的32位扩展为IPv6 的128 位,RFC-24601RFC-2460.Internet Protocol,Version6(IPv6)Specification中建议将128 位地址划分为64 位的网络前缀与64 位的接口标识符.在文献[1]中,研究人员通过分析所收集的IPv6 地址集,发现地址中第16个nybble 位的信息熵较大(即61 位-64 位),间接说明了大多数地址划分模式符合RFC-2460.这意味着在最常见的IPv6网络中,都包含264个可能的已分配地址,而某个IPv4 网络最多仅包含224的可能的主机地址.假定每探测一个地址只需要10 毫秒时间,蛮力扫描一个IPv4 网络则约需要46 小时,因此蛮力扫描在此情况下也是一种可行的方法.相比之下,蛮力扫描一个 IPv6 网络,则需要将上述时间增加 240倍,达到约4.6×1013小时,可见此时蛮力扫描方法根本行不通.

对于将活跃的服务器IP 地址作为种子地址方法,从WHOIS 数据库中获取有限的几个服务器IP 地址,对于巨大的地址空间而言极为稀疏,仍无法收到有用的测量效果.对于分析过滤RouteView 数据集的方法,得到的BGP 地址前缀只适合构建AS 级网络拓扑图,无助于构建IP 级IPv6 网络拓扑.对于抽样方法,目前尚无有效的方法来设计抽样策略获取大量的活跃的种子地址.而对于分析处理开放的因特网拓扑测量数据集的方法,由于测量组织采用多种方法持续地改进它的探测质量,此外测量到的地址就是最近活跃IPv6 地址,因此该方法可用作本文研究的起点.上述分析表明:1)为了能够使用Traceroute 工具测量某个IPv6 目标网络的拓扑,有足够的种子地址是前提;2)在常用的5 种探测活跃地址的方法中,除了分析处理开放的因特网拓扑测量数据集,均无法探测到最近活跃的IPv6 地址;3)实际测量得到的IP 地址是近期活跃的地址,它们是进一步探测的依据.针对在地址空间巨大的IPv6 网络中活跃地址稀疏的现状,目前缺乏有效地测量网络拓扑的手段,本文的研究目标是提出一种有效测量IPv6网络拓扑的新方法.

为了便于后继讨论,我们定义如下:

定义1.目标网络的地址规则集RB:分配给目标网络的IPv6 地址的集合.RB中的元素形式为(netIP,value)其中netIP 为目标网络的网络地址,value 为网络前缀的长度.

定义2.目标网络中的IPv6 地址集合Rip:若IP 截取value长度的网络前缀与RB中的netIP 截取value 长度的网络前缀相等,则该IP 属于Rip.

定义3.种子地址集合 S:S=(ip1,ip2,…,ipn):从目标网络中获取到的IPv6 地址集合.

定义 4.探测路径 P:P=(ip1,ip2,…,ipm):从 ip1到 ipm的1 个IP 地址序列,用于表示1 条IP 路径.

由于IPv6 地址的稀疏性,RFC-31942RFC-3194.The H-Density Ratio for Address Assignment Efficiency An Update on the H ratio中建议利用式(1)来评估IPv6 地址分配效率:

当HD≥0.8 时,分配效率较高.事实上,为了度量 IPv6网络使用的情况,我们定义式(2):

假定目标网络的 RB.value 为64,S 大小为 n.当该网络的HD 值为 0.8,γ 值为 0.15-0.2 时,目标网络中已分配的地址数将达到7.5×1011个,活跃地址数为 4362-76800 个.在使用Traceroute 工具测量时,Pip之间存着重合的部分,并且TTL 字段长度为8 位(即最大为255),因此从单个Pip上获得的IP 地址是有限的.事实上,Pip的长度很少超过30.在最优情况下,假定Pip之间不存在重合,Pip的平均长度为30,此时n 的值为145-2560.而通常获取到目标网络对应种子地址集合S 的大小为101-103.由此可见,在大多数情况下,种子地址集合的大小是不能满足拓扑测量需求的.有效扩充种子地址集合是提升Traceroute 工具效能的关键.

综上所述,在IPv6 网络环境下,由于可直接获得的种子地址数量较少,导致基于Traceroute 工具的网络拓扑测量方法无法得到有效的测量效果.为解决该问题,本文提出了一种在种子地址稀少的情况下测量IPv6 网络拓扑的方法6Topo,该方法首先从CAIDA3宏观拓扑数据集中搜索出属于目标网络的种子地址集,再通过目标地址生成算法来扩展种子地址集,最后利用Traceroute 测量数据构建目标网络拓扑.

2 相关工作

尽管Traceroute 是一种基本、原始的网络管理工具,但它至今为止仍作为一种重要的网络拓扑测量方法,并且衍生出一系列方法与工具.鉴于网络拓扑测量的重要性,研究人员对其测量方法、网络各个层次的拓扑、网络拓扑测量算法、网络拓扑应用以及拓扑数据展现等的典型问题进行了长期研究,建立了非盈利研究组织3The Cooperative Association for Internet Data Analysis.文献[2]研究了如何通过 Route-View 数据集构建因特网 AS 级网络拓扑.文献[3]研究了3种可用于构建网络拓扑的数据来源,分别为Traceroute 数据、BGP 表前缀和WHOIS 数据,并分析了3 种数据所构建的网络拓扑之间存在的差异性.文献[4]研究了使用Traceroute 工具获取网络边界.文献[5]介绍了一种拓扑测量系统Atlas,并且探讨了基于ICMP 的测量方法在IPv6 网络测量中存在的问题.文献[6]研究了如何利用IPv6 源路由技术进行网络拓扑测量.

面对IPv6 网络环境下的活跃地址的稀疏性特点,目标地址生成算法是降低IPv6 地址发现成本的重要方法,其源自于IPv6 网络地址扫描的相关研究.IPv6 网络地址扫描相关研究主要是为了解决IPv6 地址空间过大,难以进行遍历式蛮力扫描的问题.国内外关于IPv6 网络地址扫描的研究尚处于起步阶段,通常经过人为分析得出地址分配策略的一般规律,并将这些特定的规律应用于扫描器.文献[7]提出了一种抽样的方法获取地址的空间分布,以此来调整扫描的顺序.2015 年以来,对IPv6 目标地址生成算法的研究逐渐增多.文献[8]提出了基于熵的分析方法,研究了地址的一般配置策略,并提供了活跃地址集合HitList.文献[9]对基于熵的分析方法进行了改进,将种子地址集合转换为一种树状搜索空间.文献[10,11]分别设计了基于关联规则与模式的算法.文献[1]提出了一种基于密度与开销的目标地址生成算法6Gen,具有一定的普适性.文献[12,13]分别提出了基于DNS与SECDNS 服务的IPv6 地址枚举算法.文献[14]对 IPv6 地址搜索算法进行了总结.但是,上述通过人为分析得出的地址分配策略的一般规律是否有效,需要实践加以验证.

CAIDA 宏观拓扑数据集在网络测量领域具有重要影响,在很多研究中得到广泛地使用.例如,文献[15]中提出了一种获得因特网特定区域网络拓扑的方法GNTSD(Generating Network Topology via Skitter's Data).GNTSD 方法以 Skitter提供的测量数据,基于ICANN(The Internet Corporation for Assigned Names and Numbers)提供的特定区域的IP 网络信息,快速有效地构建网络拓扑.该方法对于测量IPv6 网络拓扑具有借鉴意义.

3 从CAIDA 测量数据中获取种子地址集

良好的种子地址集对于Traceroute 工具的测量结果非常重要.本节讨论通过筛选处理CAIDA 网络拓扑测量数据集以构建测量目标网络所需的种子地址集合的方法.

3.1 数据源选择

CAIDA 的宏观拓扑测量项目(Macroscopic Topology Measurements)基于测量基础设施Ark,利用Scamper 工具来监测全球的IP 级网络拓扑连接.Ark 作为测量基础设施,旨在减少开发和部署大规模网络测量所需的工作量.Ark 在全球40 个国家部署了107 个监视器,其中44 个监视器具有监视IPv6 网络的功能.Ark 的监视器大多部署于欧美国家,在中国部署了6 个监视器,其中位于沈阳和香港的2 个监视器具有监视IPv6 网络拓扑的功能.网络拓扑测量工具Scamper以Ark 为基础平台,使用Paris traceroute4http://paris-traceroute.net.Network diagnosis and measurement tool工具向 IPv6 地址空间中数百万个地理上分散的目标地址发送探测数据分组.Paris traceroute 是一种基于 traceroute 网络测量改进工具,能够提供相较传统Traceroute 工具更为准确、完整的拓扑信息.

Ark 采用了多种方法来获取Scamper 所需的种子地址集.例如从网站流量排名系统Alexa5https://www.alexa.com.Website traffic ranking,获取到大量IPv6 Web站点地址与相应DNS 服务器地址.此外,超过一半的具有IPv6 功能的监视器还对BGP 宣布的IPv6 前缀(/48 或者更短)构建合法地址来进行连续的主动测量.Ark 主要利用2 种方法来构建合法地址,1)将IPv6 前缀的末位拼接1,例如IPv6 前缀2001:da8::/32,拼接后为2001:da8::1;2)随机地构造属于该IPv6 前缀所表示的地址空间中的IPv6 地址.Ark以48 小时为周期,生成所有IPv6 前缀的相关测量目标,Scamper 以这些地址作为探测目标进行拓扑测量.由此可以认为,Ark 所获取种子地址集合相较于其他项目是较为全面的.

CAIDA 宏观拓扑数据集的优势在于,Ark 使用了多种主流方式采集IPv6种子地址,Scamper工具得到的拓扑信息更为准确.可见,利用CAIDA 宏观拓扑数据集Dataset,可以得到目标网络中较多、较权威的种子地址.

3.2 构建种子地址集

为了获取目标网络中的种子地址集合S,我们可利用目标网络的地址规则集RB筛选处理Dataset.

首先,通过查询因特网注册机构可以获取到目标网络相关的地址规则集RB.根据RFC-42916RFC-4291.IP Version 6 Addressing Architecture,IANA(The Internet Assigned Numbers Authority)从范围为 2000∶/3 的 IPv6 全球单播地址中分配地址块给各个RIR(Regional Internet Registry),RIR 逐层分配给 NIR(National Internet Registry)、LIP(Local Internet Registry)与EU(End User).由于不同的网络拓扑测量的需求所需的RB在数量和粒度上有很大的不同,在确定目标网络后,需依据网络的层级获取相应的RB.

Dataset 中的数据记录包含了相关的监视器地址、探测路径节点地址IP、应答响应、路径信息等.我们仅关注记录中的路径节点地址信息,可将它们转换为某条探测路径P,最后将P 中的属于目标网络的IP 地址筛选出来加入S 中.

当Dataset 很大时,快速筛选出某个IP 是否属于目标网络是一个必须解决的问题.一是查询某IP 是否存在于目标网络Rip,二是查询该IP 是否已存在于种子地址集合S.我们采用散列方法进行处理,关键是构造一个合适的散列表结构,我们使用散列表ipHashTable 来作为S 的数据结构.为解决RB查询的问题,一种常见的做法是将RB转换为N 叉树进行存储,从树根节点至叶节点为IPv6 地址网络前缀的高位至低位.由于IPv6 地址长度为128 位,若将地址按比特存储于二叉树中,树的深度过大.IPv6 地址以nybble(半字节)进行书写记忆,因此可以将地址按nybble 存储于16 叉树中,降低树的深度.由于网络前缀的长度不一定为4 的倍数,可将节点的数据部分设置为散列表,以提供网络前缀余下部分的快速查询.

由于Dataset 中的一条路径可能穿越多个不同IPv6 子网,而种子地址仅是该路径在目标网络中的那几个地址.为此进行如下定义[15]:

定义5.探测链路:探测路径P 中两个相邻的ipi与ipj之间的链路,用(ipi,ipj)来表示.其中:

·若 ipi∈Rip,ipj∈Rip,称该链路为境内链路.

·若 ipi∈Rip,ipj∈Rip,称该链路为境外链路.

·若 ipi∈Rip,ipj∈Rip或 ipi∈Rip,ipj∈Rip,称该链路为跨境链路.并将属于Rip的IP 称为边缘节点.

在生成初始种子地址集合的算法generateS 中,算法输入是以地址规则集RB与CAIDA 宏观拓扑数据集中获取的探测路径 P 的集合 PathList,遍历 P 中的 IP,若 ip∈Rip且 ip∈S,则将其加入到S 中.此外,为获取边缘节点的相关信息,从每条探测路径P 中提取所有的跨境链路(ipi,ipj),并将ipi与ipj加入到种子地址集合.在基于特定的测量源利用Traceroute 工具对目标网络进行探测时,无论测量源处于目标网络之内还是目标网络之外,都能够获取目标网络的边缘节点信息.算法1 中,方法checkIP 检查IP 是否属于目标网络.方法cheakRemainder 检测叶子节点中的所包含的网络前缀余下部分是否匹配当前IP.下面是算法1 的伪代码.

4 6Topo 方法设计与实现

本节提出了一种测量IPv6 网络拓扑的方法6Topo,研究了该方法的工作原理以及实现方法.

4.1 6Topo 系统工作过程

图1 6Topo 的主要工作过程Fig.1 Main process of 6Topo

测量IPv6 网络拓扑的方法6Topo 的主要工作过程参见图1.6Topo主要包括以下步骤:1)获取初始种子地址集合S;2)基于S 生成更新地址集合S';3)根据S'探测活跃IP 节点,得到活跃地址集合S″;4)调用Traceroute 工具进行测量,得到路径序列集合S″;5)分析S″,构建目标网络拓扑.

实现6Topo 中主要涉及5 个模块:种子地址生成模块、目标地址生成模块、存活检测模块、拓扑探测模块和拓扑构造模块.其中,种子地址生成模块筛选处理来自CAIDA 的IPv6 网络拓扑测量数据,得到初始种子地址集合S.目标地址生成模块采用目标地址生成算法扩展S,得到更新地址集合S'.存活检测模块通过向S'中的种子地址发送ICMP 回响请求来检测该地址是否活跃,删除集合中不活跃的节点,得到活跃地址集合S″.拓扑探测模块利用Traceroute 工具,向S″中的种子地址发送TTL 递增的探测数据分组序列,以获得沿途的地址信息与路径信息,其结果放入S″.最后,拓扑构造模块基于S″中的信息重构目标网络的拓扑.

4.2 6Topo 系统实现

目标地址生成模块是6Topo 系统的关键模块,设计时要重点关注降低系统的测量开销.我们有如下定义:

定义 6.探测地址集合 C:C=(ip1,ip2,…,ipn),C ’Rip,即由目标地址生成算法生成的单个探测目标集合.目标地址生成算法依据最长网络前缀对IP 地址进行归类,使其中的IP数量尽可能的少.

定义 7.探测目标集合 T:T=(C1,C2,…,Cn),即目标地址生成算法生成的所有探测地址集合C 的集合.

定义 8.探测开销Cost:即探测 T 或 C 中所有的IP 存活性所需的探测分组的数量.

目标地址生成算法是为了应对IPv6 地址空间过于庞大且探测速度有限,而有选择性地对当前地址空间中的一些子空间(即探测目标集合T)进行探测的方法.由于IPv6 地址的稀疏性,存活检测需要消耗大量的探测分组.过大的T 将导致过大的探测开销与难以承受的探测时间,以及对网络正常流量的扰动.

在设计目标地址生成模块时,需要考虑到探测开销,同时调用目标地址生成模块的网络拓扑测量算法也需要受到探测开销的约束.该模块借鉴了6Gen[1]算法,依据种子之间的汉明距离,将构成最密集区域的种子聚合在一起,形成探测地址集合C,直到生成的探测目标集合T 的空间达到最大探测开销.本文基于6Gen 算法进行修改,使其能够在多次迭代中运行.6Gen 算法的试验结果显示,存活地址的数量与Cost 值为正相关,但在Cost 超过106探测分组时,存活地址数不再显著增加.这些参数为我们的设计提供了参考.

6Topo 算法通过接收种子地址集合启动对目标网络的测量.在循环过程中,提供目标生成模块功能的generateTarget方法依据当前种子地址集合S,依据6Gen 算法将S 中的地址按照密度聚集若干个探测地址集合C,并组成新的未经确认的探测目标集合T.提供存活验证模块的comfirmActive 方法向T 中所有的IP 发送ICMP 回响请求数据包来确认该节点是否存活,并生成存活目标地址集合.最后,提供路径探测模块功能的traceroute 方法调用Traceroute 工具对存活目标地址进行探测,并将新发现的IPv6 地址作为新的种子地址集合S'进行新一轮的测量.

6Topo 算法涉及在3 个探测开销.网络拓扑测量总过程的探测开销定义为CostTotal;将每一轮目标生成的开销定义为CostGenerate;将当前 的探测开销定义为 CostCurrent.其中,CostCurrent为每一次迭代中产生的 CostGenerate之和.6Topo 在CostCurrent>CostTotal或者不再发现新的IPv6 地址后停止迭代.

5 CERNET2 拓扑实测及其分析

为了检测6Topo 方法的测量效果,我们利用6Topo 原型系统以第二代中国教育和科研计算机网(CERNET2)作为目标网络进行测量.在中国下一代互联网示范工程(CNGI)中,CERNET2 是最大的核心网,连接了200 多个大学和科研单位的IPv6 用户网.本文通过实际测量以获取该网当前的网络拓扑状况.

我们实验室的测量主机通过南京航空航天大学校园网接入CERNET2 网络,并以此作为测量源.通过CERNIC(China Education and Research Network Information Center)得到CERNET2 的网络前缀为2001:da8::/32,因此地址规则集RB中仅包含1 个元素.我们获取了2019 年5 月1 日3 个 Ark 部署于中国香港、美国底特律和英国剑桥的监视器,所测量到的宏观拓扑测量数据集.该数据集的总大小为189MB,包含了40 多万条测量记录.利用算法1 构建相对应的种子地址集合SCERNET2.其中包含了87 个IPv6 种子地址.为验证6Topo 方法的可行性,我们设置了3 组试验:

试验1.利用 GNTSD 方法[15]处理 CAIDA 宏观拓扑数据集,得到了对CERNET2 的网络拓扑测量的结果A.

试验 2.基于 Traceroute 方法,利用算法 1 得到基于SCERNET2中的种子地址,对 CERNET2 的网络拓扑测量的结果B.

试验3.基于6Topo 方法,对 CERNET2 的网络拓扑测量的结果6Topo 组.其中CostTotal设置为10* 106探测分组,将CostGenerate设置为2* 106探测分组.

以上3 组试验分别获得对应的IP 级网络拓扑测量结果和基于地理信息的网络拓扑可视化结果.对于IP 级网络拓扑测量结果,本文从活跃地址数量、链路数量以及测量时间进行评价.对于基于地理信息的网络拓扑可视化结果,本文从节点数量、边数量以及拓扑图的复杂程度进行评价.最后,本文通过调整、替换种子地址集,从种子地址集的大小与种子地址分布情况两个方面来评价6Topo 方法对种子地址集合的鲁棒性.

5.1 IP 级网络拓扑测量结果

IP 级网络拓扑测量结果如图2 所示.可见,试验3(6Topo方法)具有最好的网络拓扑测量结果,试验1(GNTSD 方法)次之,而试验2 最差.

图2 IP 级网络拓扑测量结果图Fig.2 IP-level network topology measurement result

试验1(GNTSD 方法)属于多点主动测量方法,它部署了3 个测量源.而方法2 和方法3 是单点主动测量方法.基于Traceroute 工具的单点测量方法只能发现树状拓扑结构,而不能发现探测路径之间可能存在的路径及其节点.而多点测量方法则可以发现网状拓扑结构,发现不同树状拓扑之间的交叉路径及其节点.在试验1 和试验2 中,种子地址集合是相同,其区别在于单个测量源和多个测量源.试验结果表明,试验1 和试验2 的测量结果差距并不大,这应当是在种子地址集中地址数量过少造成的.其中,选取的3 个测量源均以位于北京的CERNET2 网络为入口,并且由于Ark 在国内部署的监视器数量少.

本文设计的6Topo 方法是一种单点测量方法.试验结果表明,6Topo 方法采用目标地址生成算法,使得种子地址数量从S 中的87 个变为S'中的290 个,从而使得试验3 得到的节点数量和链路数量分别大致为试验1 和试验2 的3 倍.这表明6Topo 方法在测量IPv6 网络拓扑时具有更好的效果.在解决交叉路径问题时,在不同测量源上使用Traceroute 工具,一定程度上解决该问题.而6Topo 方法利用目标地址生成算法扩展了Traceroute 工具,通过分析种子地址集合来找出交叉路径中隐藏的节点.由此可以说明,6Topo 方法为解决交叉路径问题提供了一种新的思路.但这并不影响将6Topo 方法改进为多点测量方法,通过部署多个测量源进一步完善网络拓扑的测量.

由于测量过程存在差异,3 种方法在测量时间上存在较大差别.GNTSD 方法处理完CAIDA 宏观拓扑数据集后不需继续测量,因此试验1 总共耗时12 秒.Traceroute 方法在获得种子地址集合之后需利用Traceroute 工具进行主动测量,测量时间与种子地址的数量成正比.试验2 总共耗时4 分28秒.6Topo 方法的时间消耗包含5 部分:获取并处理种子地址集合的时间;目标地址生成模块生成T 的时间;存活验证模块验证T 中地址存活性的时间;路径探测模块进行主动测量的时间;拓扑构建的时间.由于存活验证模块需要验证大量地址的存活性,占据了50%以上的时间开销.试验3 总共耗时26 分11 秒,其中存活性验证模块耗时13 分20 秒.探测目标集合T 中包含的探测地址集合C 如表1 所示(符号?表示任意0-f 十六进制数).3 种方法中GNTSD 方法最快,Traceroute方法次之,6Topo 方法最慢.

表1 探测地址集合表Table 1 Probe target address set

当前使用得存活验证模块,平均1.8ms 验证1 个IPv6 地址,单个IPv6 地址的最大测量时延为27 秒,并发测量数为50000,测量流量峰值为4Mbps.存活验证模块的性能在现有的技术水平条件下尚有提升空间,主要在3 个方面:

1.测量时延.由于测量报文可能在网络传输过程中丢失,通常对某个IPv6 地址发送多个测量报文.测量时延为所有测量报文的时延之和.因此在不显著降低验证准确度的前提下可以减少测量报文数量.

2.并发测量数.我们在试验中以多线程方式实现并发,维护1 个包含50000 个线程的线程池,消耗 6.4GB 内存.因此可以通过提高并发量,来加快测量速度.

3.测量带宽.试验中的测量峰值仅为4Mbps,而100Mbps的带宽在当前十分普遍.因此试验当中带宽尚不是测量性能的瓶颈.

因此6Topo 方法在时间消耗成本还有一定的提升空间.

5.2 网络拓扑可视化结果

基于地理信息的网络拓扑可视化结果如图3 所示.

为了直观地展现测量结果,图4 给出了在中国地图背景显示了CERNET2 的网络拓扑图.我们使用MapV7http://mapv.baidu.com.A Library of Geography Visualization工具将从路径序列集合S″中的IP 地址中分析出来的CERNET2 网络拓扑显示在地图上.由于地理信息精确度的原因,IP 地址与地理位置之间的映射可能是多对一,该拓扑图上的多个IP、多条链路可能会合并为1 个节点、1 条边.

从图4 的3 个拓扑图中可见,试验1 和试验2 得到的拓扑图的形状基本相似.这表明由于Ark在部署监视器的地理分布特点导致试验1 的方法在测量某些网络时近似于单点测量方法.试验3 组所呈现的拓扑要优于试验1 和试验2,并且与CERNET2 官方公布的网络拓扑示意图进行对比,发现6Topo 方法的测量结果与CERNET2 骨干网的拓扑结构十分相似.

图3 基于地理信息的网络拓扑可视化结果图Fig.3 Visualization result graph of network topology based on geography

图4 基于地理信息的网络拓扑图Fig.4 Network topology based on geography

5.3 对种子地址集合的鲁棒性

在使用Traceroute 工具进行网络拓扑测量时,由于获取种子地址集合的来源和方法不同,难以保证对应所有的目标网络都能获取到大量的种子地址.往往很多时候会面临种子地址极为稀少的情况,而Traceroute 工具对种子地址集合的大小十分敏感.

为了检测6Topo 方法在种子地址稀少情况下的测量效果.我们对SCERNET2进行10%的随机采样,构建1 个仅包含8个种子地址的集合SCERNET2-10%.基于SCERNET2-10%,重新进行了试验2 与试验3.

此时,试验2 发现的节点数为22,链路数为17.这分别是未采样时的25%和30%.而试验3(6Topo方法)的测量结果为269 个节点,151 条链路.这表明尽管6Topo 方法也会受到种子地址数量的影响,但是这种影响并没有其他方法所受影响那么大.在SCERNET2以10%的随机采样条件下,6Topo 方法仍能发现未采样种子地址集合条件下86.7%的节点与87.7%的链路,所发现的节点与链路数量是试验2 的10 倍.

此外,本文上述试验均基于CAIDA 网络拓扑测量数据集,依赖于该数据集的质量.注意到种子地址在目标网络中的分布情况同样会影响网络拓扑测量的效果.因此我们使用Rapid7 实验室的FDNS 数据集8https://opendata.rapid7.com/sonar.fdns_v2.DNS data from Project Sonar重新进行了试验2 与试验3.

FDNS 数据集包含了Rapid7 的Sonar 项目中获取的所有转发DNS 请求响应.通过筛选其中的AAAA 请求可以获得一定数量的种子地址.本文获取Rapid7 在2019 年4 月7 日公开的AAAA 版本的FDNS 数据集.该数据集的大小为23.8GB,以json 格式进行存储.我们通过筛选并且验证存活性之后最终获取了13 个属于CERNET2 网络的种子地址.图5 表示种子地址分布情况,可以看出该数据集中种子地址的分布极不均匀,主要来源于清华大学以及厦门大学两个CERNET2 成员网络.且获取的种子地址数量也小于CAIDA 宏观拓扑数据集.

图5 种子地址分布图Fig.5 Seed address map

此时,试验2 发现的节点数为31,链路数为25.这分别是采用原数据集(CAIDA 宏观拓扑数据集)时的36%和45%.而试验3(6Topo 方法)的测量结果为222 个节点,132 条链路.这分别是采用原数据集时的71%和76%,此时,6Topo 方法所发现的节点与链路数量分别是试验2 的7 倍与5 倍.

综上所述,6Topo 方法对种子地址集合具有良好的鲁棒性.

6 结 论

研发高效的IPv6 网络拓扑测量技术对于保障IPv6 网络的健康发展非常重要.本文研究了在种子地址稀少的情况下进行IPv6 网络拓扑测量的方法,提出了一种称为6Topo 的测量方法.该方法首先从CAIDA 宏观拓扑数据集中搜索出属于被测目标网络的地址集合,将其作为初始种子地址集合,其次利用目标地址生成算法扩充该种子地址集合,然后去除其中不活跃地址,最后基于Traceroute 测量数据构建网络拓扑.本文开发了6Topo 测量原型系统并测量了CERNET2,构建了CERNET2 的IP 级网络拓扑并对其进行可视化.测量结果表明,6Topo 能够在较少的种子数量下在可容忍时间内完成目标网络拓扑结构测量任务,方法具有良好的鲁棒性.后继研究将着重在6Topo 方法性能提升和目标地址生成算法优化等方面.

猜你喜欢
网络拓扑节点测量
基于图连通支配集的子图匹配优化算法
结合概率路由的机会网络自私节点检测算法
面向复杂网络的节点相似性度量*
采用贪婪启发式的异构WSNs 部分覆盖算法*
二十四节气简易测量
日出日落的观察与测量
电网运行风险评估与辅助决策系统的应用
自动化控制系统设计方法探索
数据中心网络拓扑结构研究
一种FC网络管理软件的设计