CN109905497A - 一种IPv6活跃地址动态发现方法 - Google Patents
一种IPv6活跃地址动态发现方法 Download PDFInfo
- Publication number
- CN109905497A CN109905497A CN201910162578.XA CN201910162578A CN109905497A CN 109905497 A CN109905497 A CN 109905497A CN 201910162578 A CN201910162578 A CN 201910162578A CN 109905497 A CN109905497 A CN 109905497A
- Authority
- CN
- China
- Prior art keywords
- node
- address
- vector
- ipv6
- leaf
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种IPV6活跃地址动态发现方法,目的是解决目前IPV6活跃地址发现方法正确率较低、速度较低的问题。技术方案是将IPv6地址转化为高进制向量并对已知活跃地址对应的向量即种子向量集合采用自顶向下分裂层次聚类的方法生成空间树,利用空间树根据在分裂层次聚类过程后种子向量在每个维度扩展后的有效地址密度值来预测不同维度的取值变化性,并提供从叶子结点到根结点路径的搜索方向。本发明能够基于实时扫描结果和空间树动态地调整方向以在发现了更多活跃地址的路径上快速得到下一步的扫描目标地址,达到提高活跃地址发现正确率和速度的目的。
Description
技术领域
本发明涉及互联网领域IP地址发现方法,尤其指一种针对IPv6活跃地址主动扫描的动态发现方法。
背景技术
作为下一代互联网的网络层基础,IPv6在加速演进发展。在2018年,超过20%的谷歌用户使用IPv6来访问其服务,而这个比例从2016年来前所未有地翻了两倍,同样规律的还有从BGP路由表中统计出来的IPv6路由数量,这说明IPv6的部署已经逐渐从网络的骨干走向边缘。估计到2019年,IPv6前缀的数量会达到IPv4前缀数量的25%到50%,并且IPv6流量会成为互联网中的重要组成部分。巨大的地址规模和方便的地址配置方式为未来互联网的发展奠定了良好基础。
在IPv6地址空间中收集活跃IPv6地址集合可以帮助收集互联网上的联网设备属性信息,从而支持一系列研究和应用,包括:网络安全态势感知和应对、网络主机身份识别、IP地址分析和地理位置确定、网络拓扑发现等。目前这方面具有代表性的两个工作是:
Entropy/IP(2016年P.Foremski,D.Plonka,A.W.Berger,Entropy/IP:Uncoveringstructure in IPv6addresses,in:Proceedings of the 2016 ACM on InternetMeasurement Conference,IMC 2016,Santa Monica,CA,USA,November 14-16,2016,2016,pp.167–181.即2016年11月由P.Foremski,D.Plonka,A.W.Berger,Entropy在ACM网络测量国际会议上发表的论文《Entropy/IP:在IPv6地址中发现结构》)和6Gen(2017年A.Murdock,F.Li,P.Bramsen,Z.Durumeric,V.Paxson,Target generation for internet-wideIPv6scanning,in:Proceedings of the 2017Internet Measurement Conference,IMC2017,London,United Kingdom,November 1-3,2017,2017,pp.242–253.即2017年11月由A.Murdock,F.Li,P.Bramsen,Z.Durumeric,V.Paxson在互联网测量国际会议上发表的论文《6Gen:用于互联网范围的IPv6扫描的目标生成》。)前者基于信息熵分析、DBSCAN聚类、贝叶斯网络分析一个子网下面IPv6地址的分配模式,并提供搜索范围;后者基于凝聚式层次聚类的思想提供搜索范围,两者的发现过程都没有根据发现过程的实时状态对发现动作进行调整,同属于静态发现方法,然而真实网络环境下的活跃地址分布在持续变化,因此这两种方法发现的IPv6地址正确率较低;且静态发现方法无法根据网络实时状态优先在发现了更多活跃地址的路径上进行后续搜索,导致在发现过程中数据量太大,使得速度较低。公开号为CN 103685598B的发明专利“IPv6网络中发现活跃IP地址的方法及装置”主要利用爬虫加DNS实现,该专利发现的地址数量受限于网页连通性,很多活跃IPv6没有对应的网页,所以这种专利发现的IPv6地址数量比较少,而且一般只能发现网络服务器的地址,难以发现其他类型联网设备的地址。
发明内容
本发明要解决的技术问题是针对静态发现方法正确率较低、速度较低的问题,提出一种IPv6活跃地址动态发现方法,提高IPv6地址发现的正确率和速度。
本发明技术方案是:将IPv6地址转化为高进制向量并对已知活跃地址对应的向量(作为种子向量)集合采用一种自顶向下分裂层次聚类(DHC,Divisive HierarchicalClustering)的方法生成空间树。利用空间树根据在分裂层次聚类过程后种子向量在每个维度扩展后的有效地址密度值来预测不同维度的取值变化性,并提供从叶子结点到根结点路径的搜索方向。与背景技术所述的静态方法相比,本发明能够基于实时扫描结果和空间树动态地调整方向以在发现了更多活跃地址的路径上快速得到下一步的扫描目标地址,达到提高活跃地址发现正确率和速度的目的。
具体步骤如下:
第一步:将Gasser等人(参见O.Gasser,Q.Scheitle,P.Foremski,Q.Lone,M.Korczynski,S.D.Strowes,L.Hendriks,G.Carle,Clusters in the expanse:Understanding and unbiasing IPv6hitlists,in:Proceedings of the 18th ACMSIGCOMM Internet Measurement Conference,IMC’18,2018即2018年Gasser等人在第18届ACM SIGCOMM会议上发表的《广域中的集群:理解和取消绑定IPv6列表》一文第一节最后一段所述网页资源(https://ipv6hitlist.github.io/)内最新收集的已知的IPv6活跃地址(IPv6地址是用一个128bit的二进制数表示的向量)作为种子向量,令此已知的IPv6活跃地址集合为集合G1,令G1中共有N个IPv6活跃地址,N为正整数。依据G1中IPv6地址二进制整数大小将G1中的IPv6地址排序(升序或降序皆可),得到排序后的二进制IPv6地址集合G2。
第二步:将G2中的N个二进制IPv6地址(128bit)转换成K进制表示的IPv6地址,K为2的p次幂,p为正整数,即按照p位为一项将128bit的IPv6地址转换为用128/p维向量(一维即一个K进制位)(例如,K=16时,即按照4位为一项将128bit的IPv6地址转换为用32维向量(一维即一个16进制位)p优选4,K优选16),得到N个用128/p维向量表示的IPv6地址的集合G3,G3中的每个向量的维度序号为1~128/p,越靠近维度序号1,维度就越低,越靠近维度序号128/p,维度就越高。
第三步:采用分裂层次聚类方法对G3中的向量进行层次聚类,得到空间树,方法是:
3.1定义空间树的结构:树中的每个节点是一个七元组结构,七元组结构为(AA,DS,TS,SS,NDA,NDAS,AAD),AA是一个集合,存贮IPv6地址向量;DS是一个栈结构,存贮IPv6地址向量的维度序号,其项数小于等于IPv6地址向量的维度数(即128/p),非叶子节点的DS从低维到高维压入AA内所有向量在同一维度上的值相同的维度序号(例一,假设AA中有nn个IPv6地址向量,这nn个地址向量的第1、2、5维度上的值相同,其它维度上的值不相同,则DS的第1、2、3项压入维度序号1、2、5);叶子节点首先继承父节点的DS栈信息,还从低维到高维压入剩下的不在栈中的维度信息(如例一,即将叶子节点的DS的第1、2、3项压入1、2、5,第4~32项压入3、4、6、7~128/p);TS是存储所属节点即将扫描的目标IPv6地址向量的集合,SS是存储所属节点已经扫描过的IPv6地址向量的集合,NDA为所属节点下扫描到的活跃地址数量,是一个正整数,NDAS为所属节点下扫描到的活跃地址集合,AAD为有效地址密度值,AAD=在所属节点内扫描到的活跃地址数/在所属节点内扫描过的地址数。
3.2将G3中的元素按维度向下进行层次聚类,具体步骤如下:
3.2.1初始化空间树Tree:令Tree的根节点V0的AA=G3,令V0的TS和SS都为空,令V0的NDA为0,将V0的AA内所有向量在同一维度上的值相同的维度序号压入DS。初始化向量个数变量n=|G3|为V0中向量个数,若n小于进制数K,则表示空间树已生成,不再产生聚类,转第四步,否则执行步骤3.2.2。
3.2.2扩展Tree的节点,方法是:
3.2.2.1令l为Tree中当前需要进行聚类操作的层,令l=1,令NL_l为Tree中第l层的节点个数。
3.2.2.2,如若第l层不存在节点,则转第四步,否则,令节点vli表示Tree中第l层的第i个节点,令i=1。
3.2.2.3令节点v=vli,判定节点v的AA中向量个数是否大于等于K,若满足,转3.2.3.4进行聚类。否则,表示节点v不再往下聚类,并按低维到高维将不在v的DS中的维度信息压入DS,转3.2.3.5。
3.2.2.4从低维度向高纬度观察节点v的AA内所有向量,找到第一个值不同的维度序号,设此维度序号为w,1≤w≤128/p,根据w对节点v的AA内的向量进行分组,根据维度w上的取值将节点聚合成不同的子节点,令维度w上共有M种不同的值,则将AA中的向量根据这M个不同的值分成M组,节点v根据维度w上的取值聚合成M个不同的子节点,这M个子节点定义为V1,V2,…Vm,…,VM,1≤m≤M,且这些子节点处在树的第l+1层上,令V1,V2,…Vm,…,VM的DS值均等于节点v的DS值,并将维度序号w压入V1,V2,…Vm,…,VM的DS中(如例一,w=3,而AA中的n个向量在第3维有4种不同的值,则AA根据不同的值分成4组,节点v根据维度3上的值聚合成4个不同的子节点),V1,V2,…Vm,…,VM都是节点v的子节点,且同一个子节点的AA内的所有向量在维度w上的值相同,不同子节点的AA在维度w上的值不同。
3.2.2.5令i=i+1,若i<=NL_l则转入3.2.2.3进行同一层下一个节点的聚类操作,否则l=l+1,并转入3.2.2.2进行下一层次聚类操作。
第四步:利用空间树对IPv6地址进行动态扫描,得到活跃地址,方法是:
4.1对IPv6地址预扫描,初始化叶子节点,方法是:
4.1.1令Tree的所有叶子节点构成叶子节点序列PP,令PP中有MM个节点,令PPjj为序列PP中第jj个叶子节点,将PP中MM个叶子节点的TS、SS初始化为空,将PP中MM个叶子节点的NDA初始化为0;
4.1.2令叶子节点顺序变量jj=1。
4.1.3弹出叶子节点PPjj的DS栈顶值DS0,将叶子节点PPjj的AA中每个向量在维度DS0处枚举0~K-1所有取值情况(即K进制中的0~K-1这K个数字,如16进制,则是0~f这16个数字),即每个向量形成扩展后的K个向量,形成PPjj的新向量集合,并将PPjj的新向量集合除去扩展前的PPjj的向量集合(因为扩展前的属于种子向量,是已知活跃地址,因此无需再扫描)的结果赋值给叶子节点PPjj的TS集合。
4.1.4利用ZMapv6扫描器(参见O.Gasser,ZMapv6:Internet scanner with IPv6capabilities,https://github.com/tumi8/zmap,2018.即O.Gasser提出的可用于IPv6扫描的工具)依次扫描PPjj的TS集合中向量所对应的IPv6地址,得到活跃的IPv6地址,同时得到活跃的IPv6地址数量,将此数量赋值给PPjj的NDA,同时将PPjj的TS中的向量全部移到PPjj的SS中,并将扫描到的活跃的IPv6地址对应的向量存入PPjj的活跃地址集合NDAS中。
4.1.5计算叶子节点PPjj的有效地址密度值AADjj,AADjj=PPjj的NDA/PPjj的|SS|,|SS|表示SS中元素的个数。
4.1.6令jj=jj+1,若jj小于等于MM,转4.1.3,若jj大于MM,表示此时已得到AAD1,…,AADjj,…,AADMM,转4.1.7。
4.1.7叶子节点序列PP中所有的叶子节点都将自身的NDA值、SS集合和NDAS集合添加到各自父节点的NDA值、SS集合和NDAS集合中,添加过程NDA为累加,SS和NDAS为集合的并操作。
4.1.8利用链表List_Leaf将叶子节点序列PP中的叶子节点按照AAD值从大到小排列,即AAD最大的叶子节点为表头,AAD最小的叶子节点为表尾,并令List_Leaf中有NN个节点,NN为正整数。
4.2对IPv6地址进行正式扫描,方法是:
4.2.1若链表List_Leaf中只有一个节点,即NN=1,转4.2.4,否则转4.2.2。
4.2.2将链表List_Leaf按照叶子节点AAD值从大到小重新排列,即AAD最大的叶子节点为表头,AAD最小的叶子节点为表尾,并令NN为排列后的List_Leaf中的节点个数。
4.2.3按List_Leaf的节点顺序对Tree进行剪枝,方法是:
4.2.3.1令节点序号变量ii=1;
4.2.3.2检查List_Leaf的第ii个节点,若发现第ii个节点的DS值与第ii个节点的父节点相同,则进行剪枝,即将第ii个节点的父节点下所有子节点的SS和NDAS集合中的元素分别添加到第ii个节点的父节点的SS和NDAS集合中,并将这些子节点的NDA值累加到第ii个节点的父节点的NDA值中,并令第ii个节点的父节点的NDA值为所有叶子节点NDA值之和的平均值(即所有叶子节点NDA值之和/该父节点的子节点个数),然后将Tree中该父节点下的所有叶子节点删除,该父节点成为Tree中新的叶子节点,并顶替原叶子节点在List_Leaf中的第ii个位置,转4.2.2;若第ii个节点的DS值与第ii个节点的父节点不相同,则转4.2.3.3。
4.2.3.3令ii=ii+1,判定ii≤NN是成立,若成立,转4.2.3.2,若不成立,说明对Tree剪枝完毕,转4.2.4。
4.2.4按List_Leaf的节点顺序,选择IPv6扫描对象,方法是:
4.2.4.1令节点序号变量ii=1;
4.2.4.2弹出List_Leaf的第ii个节点的DS的栈顶值DS_0,将第ii个节点内的每个向量在维度DS_0处枚举0~K-1所有取值情况,即每个向量形成扩展后的K个向量,形成第ii个节点的新向量集合,并将所得扩展后的向量集合除去扩展前的叶子节点集合的结果赋值给第ii个叶子节点的TS集合;
4.2.4.3将第ii个节点的TS与SS的差集放到差集集合dii中;
4.2.4.4利用ZMapv6扫描器扫描dii内向量对应的IPv6地址,将差集集合dii中的元素添加到第ii节点的SS集合中,根据扫描到的活跃地址结果计算第ii节点的NDA和AAD值,并将扫描到的活跃地址所对应的向量存入第ii节点的NDAS集合中;
4.2.4.5若NN=1,转第五步;若NN≠1,则转4.2.2。
第五步:将List_Leaf中唯一节点的NDAS中的每个向量的每一维度转换为p位2进制数,所对应的所有二进制数则为扫描到的活跃IPv6地址,将活跃IPv6地址输出。
采用本发明可以达到以下技术效果:
1.本发明通过3.2.3步进行聚类扩展Tree的节点,通过4.1.3步枚举将需要扫描的地址根据活跃地址集进行扩展,使用扫描面大,覆盖性强,增大了扫描到的活跃地址的准确性。
2.本发明第四步采用对AAD的动态排序使得依据实时扫描结果动态调整搜索方向,使得AAD大的节点始终优选扫描,相比静态方法,更具快速性和准确性。
附图说明:
图1是本发明总体流程图;
图2是本发明第三步采用分裂层次聚类方法对G3中的向量进行层次聚类得到空间树的流程图;
图3是本发明第四步对IPv6地址进行动态扫描得到活跃地址的流程图。
具体实施方式
如图1所示,本发明包括以下步骤:
第一步:将Gasser等人最新收集的已知的IPv6活跃地址作为种子向量,令此已知的IPv6活跃地址集合为集合G1,令G1中共有N个IPv6活跃地址,N为正整数。依据G1中IPv6地址二进制整数大小将G1中的IPv6地址排序(升序或降序皆可),得到排序后的二进制IPv6地址集合G2。
第二步:将G2中的N个二进制IPv6地址转换成K进制表示的IPv6地址,K为2的p次幂,p为正整数,即按照p位为一项将128bit的IPv6地址转换为用128/p维向量(一维即一个K进制位),得到N个用128/p维向量表示的IPv6地址的集合G3,G3中的每个向量的维度序号为1~128/p,越靠近维度序号1,维度就越低,越靠近维度序号128/p,维度就越高。
第三步:采用分裂层次聚类方法对G3中的向量进行层次聚类,得到空间树,如图2,方法是:
3.1定义空间树的结构:树中的每个节点是一个七元组结构,七元组结构为(AA,DS,TS,SS,NDA,NDAS,AAD),AA是一个集合,存贮IPv6地址向量;DS是一个栈结构,存贮IPv6地址向量的维度序号,其项数小于等于IPv6地址向量的维度数(即128/p),非叶子节点的DS从低维到高维压入AA内所有向量在同一维度上的值相同的维度序号;叶子节点首先继承父节点的DS栈信息,还从低维到高维压入剩下的不在栈中的维度信息;TS是存储所属节点即将扫描的目标IPv6地址向量的集合,SS是存储所属节点已经扫描过的IPv6地址向量的集合,NDA为所属节点下扫描到的活跃地址数量,是一个正整数,NDAS为所属节点下扫描到的活跃地址集合,AAD为有效地址密度值,AAD=在所属节点内扫描到的活跃地址数/在所属节点内扫描过的地址数。
3.2将G3中的元素按维度向下进行层次聚类,具体步骤如下:
3.2.1初始化空间树Tree:令Tree的根节点V0的AA=G3,令V0的TS和SS都为空,令V0的NDA为0,将V0的AA内所有向量在同一维度上的值相同的维度序号压入DS。初始化向量个数变量n=|G3|为V0中向量个数,若n小于进制数K,则表示空间树已生成,不再产生聚类,转第四步,否则执行步骤3.2.2。
3.2.2扩展Tree的节点,方法是:
3.2.2.1令l为Tree中当前需要进行聚类操作的层,令l=1,令NL_l为Tree中第l层的节点个数。
3.2.2.2,如若第l层不存在节点,则转第四步,否则,令节点vli表示Tree中第l层的第i个节点,令i=1。
3.2.2.3令节点v=vli,判定节点v的AA中向量个数是否大于等于K,若满足,转3.2.3.4进行聚类。否则,表示节点v不再往下聚类,并按低维到高维将不在v的DS中的维度信息压入DS,转3.2.3.5。
3.2.2.4从低维度向高纬度观察节点v的AA内所有向量,找到第一个值不同的维度序号,设此维度序号为k,1≤k≤128/p,根据k对节点v的AA内的向量进行分组,根据维度k上的取值将节点聚合成不同的子节点,令维度k上共有M种不同的值,则将AA中的向量根据这M个不同的值分成M组,节点v根据维度k上的取值聚合成M个不同的子节点,这M个子节点定义为V1,V2,…Vm,…,VM,1≤m≤M,且这些子节点处在树的第l+1层上,令V1,V2,…Vm,…,VM的DS值均等于节点v的DS值,并将维度序号k压入V1,V2,…Vm,…,VM的DS中,V1,V2,…Vm,…,VM都是节点v的子节点,且同一个子节点的AA内的所有向量在维度k上的值相同,不同子节点的AA在维度k上的值不同。
3.2.2.5令i=i+1,若i<=NL_l则转入3.2.2.3进行同一层下一个节点的聚类操作,否则l=l+1,并转入3.2.2.2进行下一层次聚类操作。
第四步:对IPv6地址进行动态扫描,得到活跃地址,如图3,方法是:
4.1对IPv6地址预扫描,初始化叶子节点,方法是:
4.1.1令Tree的所有叶子节点构成叶子节点序列PP,令PP中有MM个节点,令PPjj为序列PP中第jj个叶子节点,将PP中MM个叶子节点的TS、SS初始化为空,将PP中MM个叶子节点的NDA初始化为0;
4.1.2令叶子节点顺序变量jj=1。
4.1.3弹出叶子节点PPjj的DS栈顶值DS0,将叶子节点PPjj的AA中每个向量在维度DS0处枚举0~K-1所有取值情况,即每个向量形成扩展后的K个向量,形成PPjj的新向量集合,并将PPjj的新向量集合除去扩展前的PPjj的向量集合的结果赋值给叶子节点PPjj的TS集合。
4.1.4利用ZMapv6扫描器依次扫描PPjj的TS集合中向量所对应的IPv6地址,得到活跃的IPv6地址,同时得到活跃的IPv6地址数量,将此数量赋值给PPjj的NDA,同时将PPjj的TS中的向量全部移到PPjj的SS中,并将扫描到的活跃的IPv6地址存入PPjj的活跃地址集合NDAS中。
4.1.5计算叶子节点PPjj的有效地址密度值AADjj,AADjj=PPjj的NDA/PPjj的|SS|,|SS|表示SS中元素的个数。
4.1.6令jj=jj+1,若jj小于等于MM,转4.1.3,若jj大于MM,表示此时已得到AAD1,…,AADjj,…,AADMM,转4.1.7。
4.1.7叶子节点序列PP中所有的叶子节点都将自身的NDA值、SS集合和NDAS集合添加到各自父节点的NDA值、SS集合和NDAS集合中,添加过程NDA为累加,SS和NDAS为集合的并操作。
4.1.8利用链表List_Leaf将叶子节点序列PP中的叶子节点按照AAD值从大到小排列,即AAD最大的叶子节点为表头,AAD最小的叶子节点为表尾,并令List_Leaf中有NN个节点,NN为正整数。
4.2对IPv6地址进行正式扫描,方法是:
4.2.1若链表List_Leaf中只有一个节点,即NN=1,转4.2.4,否则转4.2.2。
4.2.2将链表List_Leaf按照叶子节点AAD值从大到小重新排列,即AAD最大的叶子节点为表头,AAD最小的叶子节点为表尾,并令NN=排列后的List_Leaf中的节点个数。
4.2.3按List_Leaf的节点顺序对Tree进行剪枝,方法是:
4.2.3.1令节点序号变量ii=1;
4.2.3.2检查List_Leaf的第ii个节点,若发现第ii个节点的DS值与第ii个节点的父节点相同,则进行剪枝,即将第ii个节点的父节点下所有子节点的SS和NDAS集合中的元素分别添加到第ii个节点的父节点的SS和NDAS集合中,并将这些子节点的NDA值累加到第ii个节点的父节点的NDA值中,并令第ii个节点的父节点的NDA值为所有叶子节点NDA值之和的平均值,然后将Tree中该父节点下的所有叶子节点删除,该父节点成为Tree中新的叶子节点,并顶替原叶子节点在List_Leaf中的第ii个位置,转4.2.2;若第ii个节点的DS值与第ii个节点的父节点不相同,则转4.2.3.3。
4.2.3.3令ii=ii+1,判定ii≤NN是成立,若成立,转4.2.3.2,若不成立,说明对Tree剪枝完毕,转4.2.4。
4.2.4按List_Leaf的节点顺序,选择IPv6扫描对象,方法是:
4.2.4.1令节点序号变量ii=1;
4.2.4.2弹出List_Leaf的第ii个节点的DS的栈顶值DS_0,将第ii个节点内的每个向量在维度DS_0处枚举0~K-1所有取值情况,即每个向量形成扩展后的K个向量,形成第ii个节点的新向量集合,并将所得扩展后的向量集合除去扩展前的叶子节点集合的结果赋值给第ii个叶子节点的TS集合;
4.2.4.3将第ii个节点的TS与SS的差集放到差集集合dii中;
4.2.4.4利用ZMapv6扫描器扫描dii内向量对应的IPv6地址,将差集集合dii中的元素添加到第ii节点的SS集合中,根据扫描到的活跃地址结果计算第ii节点的NDA和AAD值,并将扫描到的活跃地址向量存入第ii节点的NDAS集合中;
4.2.4.5若NN=1,转第五步;若NN≠1,则转4.2.2。
第五步:将List_Leaf中唯一节点的NDAS中的每个向量的每一维度转换为p位2进制数,所对应的所有二进制数则为扫描到的活跃IPv6地址,将活跃IPv6地址输出。
Claims (3)
1.一种IPv6活跃地址动态发现方法,其特征在于包括以下步骤:
第一步:将已知的IPv6活跃地址作为种子向量,令此已知的IPv6活跃地址集合为集合G1,令G1中共有N个IPv6活跃地址,N为正整数,依据G1中IPv6地址二进制整数大小将G1中的IPv6地址排序,得到排序后的二进制IPv6地址集合G2;
第二步:将G2中的N个二进制IPv6地址转换成K进制表示的IPv6地址,K为2的p次幂,p为正整数,即按照p位为一项将128bit的IPv6地址转换为用128/p维向量,一维即一个K进制位,得到N个用128/p维向量表示的IPv6地址的集合G3,G3中的每个向量的维度序号为1~128/p,越靠近维度序号1,维度就越低,越靠近维度序号128/p,维度就越高;
第三步:采用分裂层次聚类方法对G3中的向量进行层次聚类,得到空间树,方法是:
3.1定义空间树的结构:树中的每个节点是一个七元组结构,七元组结构为(AA,DS,TS,SS,NDA,NDAS,AAD),AA是一个集合,存贮IPv6地址向量;DS是一个栈结构,存贮IPv6地址向量的维度序号,其项数小于等于IPv6地址向量的维度数即128/p,非叶子节点的DS从低维到高维压入AA内所有向量在同一维度上的值相同的维度序号;叶子节点首先继承父节点的DS栈信息,还从低维到高维压入剩下的不在栈中的维度信息;TS是存储所属节点即将扫描的目标IPv6地址向量的集合,SS是存储所属节点已经扫描过的IPv6地址向量的集合,NDA为所属节点下扫描到的活跃地址数量,是一个正整数,NDAS为所属节点下扫描到的活跃地址集合,AAD为有效地址密度值,AAD=在所属节点内扫描到的活跃地址数/在所属节点内扫描过的地址数;
3.2将G3中的元素按维度向下进行层次聚类,具体步骤如下:
3.2.1初始化空间树Tree:令Tree的根节点V0的AA=G3,令V0的TS和SS都为空,令V0的NDA为0,将V0的AA内所有向量在同一维度上的值相同的维度序号压入DS;初始化向量个数变量n=|G3|为V0中向量个数,若n小于进制数K,则表示空间树已生成,不再产生聚类,转第四步,否则执行步骤3.2.2;
3.2.2扩展Tree的节点,方法是:
3.2.2.1令l为Tree中当前需要进行聚类操作的层,令l=1,令NL_l为Tree中第l层的节点个数;
3.2.2.2如若第l层不存在节点,则转第四步,否则,令节点vli表示Tree中第l层的第i个节点,令i=1;
3.2.2.3令节点v=vli,判定节点v的AA中向量个数是否大于等于K,若满足,转3.2.3.4进行聚类;否则,表示节点v不再往下聚类,并按低维到高维将不在v的DS中的维度信息压入DS,转3.2.3.5;
3.2.2.4从低维度向高纬度观察节点v的AA内所有向量,找到第一个值不同的维度序号,设此维度序号为k,1≤k≤128/p,根据k对节点v的AA内的向量进行分组,根据维度k上的取值将节点聚合成不同的子节点,令维度k上共有M种不同的值,则将AA中的向量根据这M个不同的值分成M组,节点v根据维度k上的取值聚合成M个不同的子节点,这M个子节点定义为V1,V2,…Vm,…,VM,1≤m≤M,且这些子节点处在树的第l+1层上,令V1,V2,…Vm,…,VM的DS值均等于节点v的DS值,并将维度序号k压入V1,V2,…Vm,…,VM的DS中,V1,V2,…Vm,…,VM都是节点v的子节点,且同一个子节点的AA内的所有向量在维度k上的值相同,不同子节点的AA在维度k上的值不同;
3.2.2.5令i=i+1,若i<=NL_l则转入3.2.2.3进行同一层下一个节点的聚类操作,否则l=l+1,并转入3.2.2.2进行下一层次聚类操作;
第四步:利用空间树对IPv6地址进行动态扫描,得到活跃地址,方法是:
4.1对IPv6地址预扫描,初始化叶子节点,方法是:
4.1.1令Tree的所有叶子节点构成叶子节点序列PP,令PP中有MM个节点,令PPjj为序列PP中第jj个叶子节点,将PP中MM个叶子节点的TS、SS初始化为空,将PP中MM个叶子节点的NDA初始化为0:
4.1.2令叶子节点顺序变量jj=1;
4.1.3弹出叶子节点PPjj的DS栈顶值DS0,将叶子节点PPjj的AA中每个向量在维度DS0处枚举0~K-1所有取值情况(即K进制中的0~K-1这K个数字,即每个向量形成扩展后的K个向量,形成PPjj的新向量集合,并将PPjj的新向量集合除去扩展前的PPjj的向量集合的结果赋值给叶子节点PPjj的TS集合;
4.1.4依次扫描PPjj的TS集合中向量所对应的IPv6地址,得到活跃的IPv6地址,同时得到活跃的IPv6地址数量,将此数量赋值给PPjj的NDA,同时将PPjj的TS中的向量全部移到PPjj的SS中,并将扫描到的活跃的IPv6地址对应的向量存入PPjj的活跃地址集合NDAS中;
4.1.5计算叶子节点PPjj的有效地址密度值AADjj,AADjj=PPjj的NDA/PPjj的|SS|,|SS|表示SS中元素的个数;
4.1.6令jj=jj+1,若jj小于等于MM,转4.1.3,若jj大于MM,表示此时已得到AAD1,…,AADjj,…,AADMM,转4.1.7;
4.1.7叶子节点序列PP中所有的叶子节点都将自身的NDA值、SS集合和NDAS集合添加到各自父节点的NDA值、SS集合和NDAS集合中,添加过程NDA为累加,SS和NDAS为集合的并操作;
4.1.8利用链表List_Leaf将叶子节点序列PP中的叶子节点按照AAD值从大到小排列,即AAD最大的叶子节点为表头,AAD最小的叶子节点为表尾,并令List_Leaf中有NN个节点,NN为正整数;
4.2对IPv6地址进行正式扫描,方法是:
4.2.1若链表List_Leaf中只有一个节点,即NN=1,转4.2.4,否则转4.2.2;
4.2.2将链表List_Leaf按照叶子节点AAD值从大到小重新排列,即AAD最大的叶子节点为表头,AAD最小的叶子节点为表尾,并令NN=排列后的List_Leaf中的节点个数;
4.2.3按List_Leaf的节点顺序对Tree进行剪枝,方法是:
4.2.3.1令节点序号变量ii=1;
4.2.3.2检查List_Leaf的第ii个节点,若发现第ii个节点的DS值与第ii个节点的父节点相同,则进行剪枝,即将第ii个节点的父节点下所有子节点的SS和NDAS集合中的元素分别添加到第ii个节点的父节点的SS和NDAS集合中,并将这些子节点的NDA值累加到第ii个节点的父节点的NDA值中,并令第ii个节点的父节点的NDA值为所有叶子节点NDA值之和的平均值即所有叶子节点NDA值之和/该父节点的子节点个数,然后将Tree中该父节点下的所有叶子节点删除,该父节点成为Tree中新的叶子节点,并顶替原叶子节点在List_Leaf中的第ii个位置,转4.2.2;若第ii个节点的DS值与第ii个节点的父节点不相同,则转4.2.3.3;
4.2.3.3令ii=ii+1,判定ii≤NN是成立,若成立,转4.2.3.2,若不成立,说明对Tree剪枝完毕,转4.2.4;
4.2.4按List_Leaf的节点顺序,选择IPv6扫描对象,方法是:
4.2.4.1令节点序号变量ii=1;
4.2.4.2弹出List_Leaf的第ii个节点的DS的栈顶值DS_0,将第ii个节点内的每个向量在维度DS_0处枚举0~K-1所有取值情况,即每个向量形成扩展后的K个向量,形成第ii个节点的新向量集合,并将所得扩展后的向量集合除去扩展前的叶子节点集合的结果赋值给第ii个叶子节点的TS集合;
4.2.4.3将第ii个节点的TS与SS的差集放到差集集合dii中;
4.2.4.4扫描dii内向量对应的IPv6地址,将差集集合dii中的元素添加到第ii节点的SS集合中,根据扫描到的活跃地址结果计算第ii节点的NDA和AAD值,并将扫描到的活跃地址所对应的向量存入第ii节点的NDAS集合中;
4.2.4.5若NN=1,转第五步;若NN≠1,则转4.2.2;
第五步:将List_Leaf中唯一节点的NDAS中的每个向量的每一维度转换为p位2进制数,所对应的所有二进制数则为扫描到的活跃IPv6地址,将活跃IPv6地址输出。
2.如权利要求1所述的一种IPv6活跃地址动态发现方法,其特征在于第四步所述扫描IPv6地址采用ZMapv6扫描器。
3.如权利要求1所述的一种IPv6活跃地址动态发现方法,其特征在于所述p=4,K=16。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910162578.XA CN109905497B (zh) | 2019-03-05 | 2019-03-05 | 一种IPv6活跃地址动态发现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910162578.XA CN109905497B (zh) | 2019-03-05 | 2019-03-05 | 一种IPv6活跃地址动态发现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109905497A true CN109905497A (zh) | 2019-06-18 |
CN109905497B CN109905497B (zh) | 2021-08-20 |
Family
ID=66946325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910162578.XA Active CN109905497B (zh) | 2019-03-05 | 2019-03-05 | 一种IPv6活跃地址动态发现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109905497B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110557286A (zh) * | 2019-09-02 | 2019-12-10 | 南京航空航天大学 | 一种有效测量并构建IPv6网络拓扑的方法 |
CN110809066A (zh) * | 2019-09-30 | 2020-02-18 | 奇安信科技集团股份有限公司 | IPv6地址生成模型创建方法、装置及地址生成方法 |
CN111432043A (zh) * | 2020-03-09 | 2020-07-17 | 清华大学 | 基于密度的动态IPv6地址探测方法 |
CN112383644A (zh) * | 2020-10-21 | 2021-02-19 | 北京邮电大学 | 一种启发式IPv6地址扫描目标生成方法及相关设备 |
CN112398969A (zh) * | 2021-01-19 | 2021-02-23 | 中国人民解放军国防科技大学 | IPv6地址的动态探测方法、装置及计算机设备 |
CN112653764A (zh) * | 2020-12-24 | 2021-04-13 | 清华大学 | IPv6服务探测方法及系统、电子设备及存储介质 |
CN113282805A (zh) * | 2021-06-24 | 2021-08-20 | 中国人民解放军国防科技大学 | IPv6地址模式挖掘方法、装置、电子设备及存储介质 |
CN113382092A (zh) * | 2021-04-27 | 2021-09-10 | 清华大学 | 基于图社区发现的活跃地址探测方法及装置 |
CN113746947A (zh) * | 2021-07-15 | 2021-12-03 | 清华大学 | 基于强化学习的IPv6活跃地址探测方法和装置 |
CN115102922A (zh) * | 2022-04-25 | 2022-09-23 | 国家计算机网络与信息安全管理中心山东分中心 | 一种基于多地址比对结果扩展的IPv6活跃地址探测方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266610A (zh) * | 2008-04-25 | 2008-09-17 | 浙江大学 | 一种Web活跃用户网站访问模式的在线挖掘方法 |
US20120257506A1 (en) * | 2009-12-22 | 2012-10-11 | Cuneyt Bazlamacci | Systolic array architecture for fast ip lookup |
CN103685598A (zh) * | 2013-12-06 | 2014-03-26 | 国家计算机网络与信息安全管理中心 | 在IPv6网络中发现活跃IP地址的方法及装置 |
CN106921661A (zh) * | 2017-02-28 | 2017-07-04 | 山东大学 | 一种基于关联规则的IPv6地址扫描方法 |
-
2019
- 2019-03-05 CN CN201910162578.XA patent/CN109905497B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266610A (zh) * | 2008-04-25 | 2008-09-17 | 浙江大学 | 一种Web活跃用户网站访问模式的在线挖掘方法 |
US20120257506A1 (en) * | 2009-12-22 | 2012-10-11 | Cuneyt Bazlamacci | Systolic array architecture for fast ip lookup |
CN103685598A (zh) * | 2013-12-06 | 2014-03-26 | 国家计算机网络与信息安全管理中心 | 在IPv6网络中发现活跃IP地址的方法及装置 |
CN106921661A (zh) * | 2017-02-28 | 2017-07-04 | 山东大学 | 一种基于关联规则的IPv6地址扫描方法 |
Non-Patent Citations (2)
Title |
---|
左志昊: "活跃IPv6 地址前缀的预测算法", 《通信学报》 * |
楼若岩: "面向校园网的IP地址逐步优化层次聚类算法", 《计算机应用》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110557286A (zh) * | 2019-09-02 | 2019-12-10 | 南京航空航天大学 | 一种有效测量并构建IPv6网络拓扑的方法 |
CN110809066A (zh) * | 2019-09-30 | 2020-02-18 | 奇安信科技集团股份有限公司 | IPv6地址生成模型创建方法、装置及地址生成方法 |
CN111432043B (zh) * | 2020-03-09 | 2021-06-01 | 清华大学 | 基于密度的动态IPv6地址探测方法 |
CN111432043A (zh) * | 2020-03-09 | 2020-07-17 | 清华大学 | 基于密度的动态IPv6地址探测方法 |
US20210281543A1 (en) * | 2020-03-09 | 2021-09-09 | Tsinghua University | DYNAMIC Ipv6 ADDRESS PROBING METHOD BASED ON DENSITY |
CN112383644A (zh) * | 2020-10-21 | 2021-02-19 | 北京邮电大学 | 一种启发式IPv6地址扫描目标生成方法及相关设备 |
CN112383644B (zh) * | 2020-10-21 | 2022-08-05 | 北京邮电大学 | 一种启发式IPv6地址扫描目标生成方法及相关设备 |
CN112653764A (zh) * | 2020-12-24 | 2021-04-13 | 清华大学 | IPv6服务探测方法及系统、电子设备及存储介质 |
CN112398969B (zh) * | 2021-01-19 | 2021-03-19 | 中国人民解放军国防科技大学 | IPv6地址的动态探测方法、装置及计算机设备 |
CN112398969A (zh) * | 2021-01-19 | 2021-02-23 | 中国人民解放军国防科技大学 | IPv6地址的动态探测方法、装置及计算机设备 |
CN113382092A (zh) * | 2021-04-27 | 2021-09-10 | 清华大学 | 基于图社区发现的活跃地址探测方法及装置 |
CN113382092B (zh) * | 2021-04-27 | 2022-05-20 | 清华大学 | 基于图社区发现的活跃地址探测方法及装置 |
CN113282805A (zh) * | 2021-06-24 | 2021-08-20 | 中国人民解放军国防科技大学 | IPv6地址模式挖掘方法、装置、电子设备及存储介质 |
CN113746947A (zh) * | 2021-07-15 | 2021-12-03 | 清华大学 | 基于强化学习的IPv6活跃地址探测方法和装置 |
CN115102922A (zh) * | 2022-04-25 | 2022-09-23 | 国家计算机网络与信息安全管理中心山东分中心 | 一种基于多地址比对结果扩展的IPv6活跃地址探测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109905497B (zh) | 2021-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109905497A (zh) | 一种IPv6活跃地址动态发现方法 | |
EP2750053B1 (en) | Data storage program, data retrieval program, data retrieval apparatus, data storage method and data retrieval method | |
Abraham et al. | Routing in networks with low doubling dimension | |
CN1815989A (zh) | 通过互连拓扑嵌入高效地构造网络覆盖的方法 | |
Abraham et al. | A generic scheme for building overlay networks in adversarial scenarios | |
US20020023089A1 (en) | Modular packet classification | |
WO2005055519A1 (en) | Node clustering based on user interests, application requirements and network characteristics | |
CN104462260A (zh) | 一种基于k-核的社区搜索算法 | |
CN100385880C (zh) | 分组分类装置和使用字段级特里结构的方法 | |
CN110519090B (zh) | 一种fpga云平台的加速卡分配方法、系统及相关组件 | |
CN1992674B (zh) | 一种基于多比特分割的多维分组分类方法 | |
CN113810287B (zh) | 一种基于ndn和sdn的数据检索与推送方法 | |
Konjevod et al. | Optimal-stretch name-independent compact routing in doubling metrics | |
CN101453368A (zh) | 一种因特网ip地址分类和带宽预测的方法、系统及设备 | |
Abraham et al. | Compact routing for graphs excluding a fixed minor | |
Głabowski et al. | Efficiency evaluation of shortest path algorithms | |
CN111901201B (zh) | 一种IPv6网络拓扑测量目标选取方法 | |
CN1719769A (zh) | 在网络设备中对接收数据包进行分类的方法 | |
CN111797180A (zh) | 地理位置信息索引的建立及信息查询方法、电子设备 | |
CN113382092B (zh) | 基于图社区发现的活跃地址探测方法及装置 | |
CN108829695A (zh) | 路网上的弹性聚合最近邻查询G-max方法 | |
Lu et al. | SETMES: a scalable and efficient tree-based mechanical scheme for multi-channel wireless data broadcast | |
Shahin | Memetic elitist Pareto evolutionary algorithm for virtual network embedding | |
CN113612834B (zh) | 一种云网资源的统一表示及优化分配方法与系统 | |
Wang | Packet classification with multiple decision trees |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |