CN101741646A - 基于数组链表的大流量网络地址前缀检测方法 - Google Patents

基于数组链表的大流量网络地址前缀检测方法 Download PDF

Info

Publication number
CN101741646A
CN101741646A CN200910262844A CN200910262844A CN101741646A CN 101741646 A CN101741646 A CN 101741646A CN 200910262844 A CN200910262844 A CN 200910262844A CN 200910262844 A CN200910262844 A CN 200910262844A CN 101741646 A CN101741646 A CN 101741646A
Authority
CN
China
Prior art keywords
node
network address
pointer
flow
current
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
Application number
CN200910262844A
Other languages
English (en)
Other versions
CN101741646B (zh
Inventor
程光
龚俭
臧宁宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haian Changzhou University Technology Transfer Center Co., Ltd.
Original Assignee
Southeast University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Southeast University filed Critical Southeast University
Priority to CN2009102628442A priority Critical patent/CN101741646B/zh
Publication of CN101741646A publication Critical patent/CN101741646A/zh
Application granted granted Critical
Publication of CN101741646B publication Critical patent/CN101741646B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开一种基于数组链表的大流量网络地址前缀识别方法,其特征是建立一个用于记录IP地址前缀流量信息的8层结构,每层结构记录IP地址的4个比特前缀流量信息且每层结构至少包括一个结点,其中,第0层记录IP地址的第0个至第3个比特流量信息,第1层记录IP地址的第4个至第7个比特流量信息,第2层记录IP地址的第8个至第11个比特流量信息,第3层记录IP地址的第12个至第15个比特流量信息,第4层记录IP地址的第16个至第19个比特流量信息,第5层记录IP地址的第20个至第23个比特流量信息,第6层记录IP地址的第24个至第27个比特流量信息,第7层记录IP地址的第28个至第31个比特流量信息,每个被测量的IP地址及其前缀的流量信息被记录在8层结构中,测量结束后,对于流量超过阀值的大流量网络地址前缀,其相应的网络地址前缀、网络地址前缀长度和网络地址前缀的流量大小输出,本发明相对于传统处理方法减轻了系统处理的负担,加快了处理每个IP地址的效率,同时大大减少生成新结点的数量,节省生成新结点所需要的时间,并降低中间结点所需要的内存空间的使用。

Description

基于数组链表的大流量网络地址前缀检测方法
技术领域
本发明涉及大流量地址检测方法,尤其是一种在高速网络流量检测中的基于数组链表的大流量网络地址前缀检测方法。
背景技术
大流量网络地址前缀是指流量大小超过指定阀值的IP地址前缀,大流量网络地址前缀信息能够为网络管理员提供有价值的报告,能反映出当前占据链路带宽的主要流量的概要信息。网络IP地址一共有32个字节,为了能够检测大流量网络地址前缀,需要按照网络地址前缀的32位长度分为32层进行分别流量聚类。
检测出大流量网络地址前缀的最简单的方法是首先按照每个IP地址的第一个比特进行聚类,IP地址的第一个比特只有0或1两种可能性,将第一个比特相同的所有IP地址流量聚类在一起,如果其流量大于或等于指定的大流量网络地址前缀阀值,则将相应的第一个比特以及其聚类流量输出。然后将每个IP地址按照前两个比特进行聚类,前两个比特具有4种可能的性,将前两个比特相同的所有IP地址流量聚类在一起,如果其流量大于或等于指定的大流量网络地址前缀阀值,则将相应的前两个比特以及其聚类流量输出。接着按照每个IP地址前3个比特进行聚类,将前三个比特相同的所有IP流量聚类在一起,如果有前3个比特相同的IP地址前缀的流量大于或等于指定的大流量网络地址前缀阀值,则将相应的前三个比特以及其聚类流量输出,一直将所有IP前4个比特、前5个比特、...、前31个比特相同的流量聚类,如果有流量大于或等于指定的大流量网络地址前缀阀值,则将相应的比特以及其聚类流量输出。检测所有IP地址的流量,如果某一个IP地址流量大于或等于指定的大流量网络地址前缀阀值,则将相应的IP地址以及其流量输出。
采用该方法,每个IP地址需要被聚类处理32次,处理效率非常低下,同时也需要近32倍IP地址流量的记录数。
考虑可以IP地址前缀关系可以表示成一个层次树关系,层次树的逻辑结构可以自然的用树来表达,层次树中的每个节点表示该维度上一个有意义的取值集合。根节点代表全集,它在该维度上聚合了全部流量;叶节点代表所有的独立取值,内部节点则是聚类的中间结果。如果两个节点之间存在集合包含关系,则其中的一个节点是另一个的祖先节点;否则它们不相连。检测大流量网络地址前缀的问题可以通过在内存中维护完整的层次树,然后遍历层次树从而找出所有流量超过阈值的前缀,这种方法对于取值空间相对很小的端口和协议号来说可以很简单的找出所有的重聚合点。但完整的IP地址空间大小有40Gb,不可能在内存中维护整个层次树。只能维护采集到的IP地址及其流量记录以形成部分层次树,接着遍历层次树聚类中间节点的流量最后找出所有的大流量网络地址前缀。
基于这个思想,按照前缀关系在内存中建立IP前缀的层次树;接着对这棵层次树进行后序遍历,将每个内部节点的两个子节点流量累加赋值给该内部节点,在遍历进行的过程中找出大流量网络地址前缀。算法定义IP前缀长度每层增加1比特,用二叉树来维护IP前缀之间的层次关系,一共32层。算法的空间开销主要来自于维护层次树的结点,时间开销来自于新结点的创建和计数器的更新。每层前缀长度增加1比特的层次树策略存储了任意前缀长度的流量,内部节点的数量较多。
这种方法的主要问题是建立大量的内部结点需要消耗了算法运行的大量时间,同时每次处理一个IP地址流量信息需要更新32个不同的结点;其次每个叶子结点对应一个IP地址,假设IP地址的数量为n,生成了一个完全二叉树,则其中间结点的数量为n-1,每个中间结点的需要两个指针和一个计数器,因此每层前缀长度增加一个比特的二叉树方法也需要更多的内存空间。
发明内容
本发明提出一种基于数组链表的大流量网络地址前缀检测方法,本发明能够支持大规模高速网络流量的大流量网络地址前缀检测。
本发明采用如下技术方案:
一种基于数组链表的大流量网络地址前缀检测方法,其特征是:建立一个用于记录IP地址前缀流量信息的8层结构,每层结构记录IP地址的4个比特前缀流量信息且每层结构至少包括一个结点,其中,第0层记录IP地址的第0个至第3个比特流量信息,第1层记录IP地址的第4个至第7个比特流量信息,第2层记录IP地址的第8个至第11个比特流量信息,第3层记录IP地址的第12个至第15个比特流量信息,第4层记录IP地址的第16个至第19个比特流量信息,第5层记录IP地址的第20个至第23个比特流量信息,第6层记录IP地址的第24个至第27个比特流量信息,第7层记录IP地址的第28个至第31个比特流量信息,每个被测量的IP地址及其前缀的流量信息被记录在8层结构中,测量结束后,对于流量超过阀值的大流量网络地址前缀,其相应的网络地址前缀、网络地址前缀长度和网络地址前缀的流量大小输出,具体步骤如下:
第一步:设置参数
设置大流量网络地址前缀流量阀值T,设置结点数据结构S,结点数据结构由一个结点头和一个包括16个子结点的数组构成,结点头包括一个用于记录该结点的网络地址前缀的存储器、记录该结点的网络地址前缀长度的存储器和记录该结点流量的结点计数器构成,每个子结点由一个记录流量的子结点计数器和一个指向下一个结点的指针构成,设置一个当前指针指向当前处理结点,设置一个指针数组P[p],指针数值P的大小为p,p的大小设置为要处理IP地址数量的8倍,设置指针数组P的当前指针数q为0,进入第二步;
第二步:测量初始化
按照结点数据结构S生成一个新结点作为第0层结点,设置一个指针变量Ipointer指向该新结点,设置该新结点的结点头的网络地址前缀为0,网络地址前缀长度为0,流量大小为0,设置16个子结点中的每个元素的流量大小为0,指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第q个元素中,并设置当前指针数q为q+1,输入第一个IP地址及其流量大小,进入第三步;
第三步:预处理
假设IP地址流量大小为B字节,将IP地址32个比特分成8块,每4个比特为一块,其中第0至第3比特为第0块,第4至第7比特为第1块,第8至第11比特为第2块,第12至第15比特为第3块,第16至第19比特为第4块,第20至第23比特为第5块,第24至第27比特为第6块,第28至第31比特为第7块,
设当前层数为i,i=0,将第0层结点指针Ipointer赋值给当前指针,进入第四步;
第四步:结点更新
将IP地址流量大小B累加更新到当前指针指向的结点的结点计数器中,该结点所对应的4个比特为IP地址的第i块,对应IP地址的第4*i比特、4*i+1比特、4*i+2比特、4*i+3比特,每个比特所对应的比特值分别为b4*i、b4*i+1、b4*i+2、b4*i+3,计算这4个比特所对应的10进制整数x为8*b4*i+4*b4*i+1+2*b4*i+2+b4*i+3,查找该结点中的第x个子结点,将该IP地址流量大小累加更新到第x个子结点的子结点计数器中,进入第五步;
第五步:指向下一层结点
如果当前层i等于7,则表示已经进入到最后一层,该IP地址处理结束,进入第八步,否则检查第x子结点的指向下一层的指针,如果指向下一层指针不为空,进入第七步,如果指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到第六步;
第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值乘以16加上x,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值加上4,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第q个元素中,并设置当前指针数q为q+1,进入第七步;
第七步:设置当前处理
将第x子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=i+1,回到第四步;
第八步:判断IP地址处理结束
如果IP地址及其流量记录没有处理结束,处理下一个IP地址及其流量大小,回到第三步,如果所有的IP地址都处理结束,进入第九步;
第九步:读取指针数组中的结点指针
设当前指针j为0,从指针数组P中读取第j个指针,进入第十步;
第十步:结点输出判断
如果第j个指针指向的结点头的流量计数器值大于大流量网络地址前缀阀值T,进入第十一步,否则进入第十六步;
第十一步:设置次结点
将第j个指针指向的结点划分为4个大小为1比特的子层,其中第0子层至第3子层分别有2、4、8、16个次结点,其中第3子层对应的16个次结点就是第j个指针指向的结点的16个子结点,假设当前子层m为0,当前次结点n为0,进入第十二步;
第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第j个指针指向的结点的网络地址前缀长度加上m+1,当前次结点的网络地址前缀为第j个指针指向的结点的网络地址前缀乘以2(m+1)加上n,如果当前子层m等于3,则当前次结点流量大小为第j个指针指向的结点的第n个子结点的流量大小,进入第十三步;如果当前子层m小于3,当前次结点对应的流量大小为第j个指针指向的结点的第n*2(3-m)个子结点到第(n+1)*2(3-m)-1个子结点的流量累加和,进入第十三步;
第十三步:大流量网络地址前缀输出
如果当前次结点的流量大于大流量网络地址前缀阀值T,则输出当前次结点的网络地址前缀、网络地址前缀长度和流量大小,进入第十四步,否则直接进入第十五步;
第十四步:设置大流量网络地址前缀次结点的下一个次结点序号
如果m小于3,设置m=m+1,n等于2*n,回到第十二步,如果m等于3,n为偶数,则设置n=n+1,回到第十二步,如果m等于3,n为奇数,且n小于15,则设置m=m-1,n=(n+1)/2,回到第十二步,如果m等于3,n等于15,则进入第十六步;
第十五步:设置非大流量网络地址前缀次结点的下一个次结点序号
如果n为偶数,则设置n=n+1,回到第十二步,如果n为奇数,n小于2(m+1)-1,且m大于0,则设置m=m-1,n=(n+1)/2,回到第十二步,如果n为奇数,且n等于2(m+1)-1,则进入第十六步;
第十六步:下一个被处理的结点
如果指针数组P的当前结点指针j小于当前指针数q-1,设置当前结点指针j为j+1,回到第十步,否则结束退出。
与现有技术相比,本发明具有如下优点及有益效果:
1、该方法由于只需要建立8层的测量结构,对于每个IP地址流量只需要更新记录在8个结点的子结点中,相对于传统方法要处理32个结点大大减少了系统处理的负担,加快了每个IP地址的处理效率;
2、该方法每次生成一个新结点包括有16个子结点可以记录16个不同的网络地址前缀流量信息,而传统方法是每次生成的新结点只能记录一个网络地址前缀的流量信息,因此该方法大大减少生成新结点的数量,减少生成新结点所需要的时间;
3、该方法中的每个中间结点只需要使用一个指针,而传统方法每个中间结点需要两个指针,相对原来方法能够减少一半指针的使用量。
附图说明
图1是基于数组链表的大流量网络地址前缀检测方法的一个结点的结构图,结点由结点头和一个包括16个子结点的数组构成,图中各符号含义:a表示记录网络地址前缀的存储器,b表示记录网络地址前缀长度的存储器,c表示记录结点流量的结点计数器,d表示记录流量的子结点计数器,e表示指向下一个结点的指针。
图2是基于数组链表的大流量网络地址前缀检测方法进行大流量网络地址前缀检测的分层处理结构图的一个实例,图中分为8个层次,从第0层到第7层,该实例记录了2个IP地址及其流量信息,IP地址0.1.32.83,流量90字节,IP地址1.2.1.35,流量50字节。
图3是基于数组链表的大流量网络地址前缀检测方法的流程图。
具体实施方式
一种基于数组链表的大流量网络地址前缀识别方法,其特征是:建立一个用于记录IP地址前缀流量信息的8层结构,每层结构记录IP地址的4个比特前缀流量信息且每层结构至少包括一个结点,其中,第0层记录IP地址的第0个至第3个比特流量信息,第1层记录IP地址的第4个至第7个比特流量信息,第2层记录IP地址的第8个至第11个比特流量信息,第3层记录IP地址的第12个至第15个比特流量信息,第4层记录IP地址的第16个至第19个比特流量信息,第5层记录IP地址的第20个至第23个比特流量信息,第6层记录IP地址的第24个至第27个比特流量信息,第7层记录IP地址的第28个至第31个比特流量信息,每个被测量的IP地址及其前缀的流量信息被记录在8层结构中,测量结束后,对于流量超过阀值的大流量网络地址前缀,其相应的网络地址前缀、网络地址前缀长度和网络地址前缀的流量大小输出,具体步骤如下:
第一步:设置参数
设置大流量网络地址前缀流量阀值T,设置结点数据结构S,结点数据结构由一个结点头和一个包括16个子结点的数组构成,结点头包括一个用于记录该结点的网络地址前缀的存储器、记录该结点的网络地址前缀长度的存储器和记录该结点流量的结点计数器构成,每个子结点由一个记录流量的子结点计数器和一个指向下一个结点的指针构成,设置一个当前指针指向当前处理结点,设置一个指针数组P[p],指针数值P的大小为p,p的大小设置为要处理IP地址数量的8倍,设置指针数组P的当前指针数q为0,进入第二步;
第二步:测量初始化
按照结点数据结构S生成一个新结点作为第0层结点,设置一个指针变量Ipointer指向该新结点,设置该新结点的结点头的网络地址前缀为0,网络地址前缀长度为0,流量大小为0,设置16个子结点中的每个元素的流量大小为0,指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第q个元素中,并设置当前指针数q为q+1,输入第一个IP地址及其流量大小,进入第三步;
第三步:预处理
假设IP地址流量大小为B字节,将IP地址32个比特分成8块,每4个比特为一块,其中第0至第3比特为第0块,第4至第7比特为第1块,第8至第11比特为第2块,第12至第15比特为第3块,第16至第19比特为第4块,第20至第23比特为第5块,第24至第27比特为第6块,第28至第31比特为第7块,
设当前层数为i,i=0,将第0层结点指针Ipointer赋值给当前指针,进入第四步;
第四步:结点更新
将IP地址流量大小B累加更新到当前指针指向的结点的结点计数器中,该结点所对应的4个比特为IP地址的第i块,对应IP地址的第4*i比特、4*i+1比特、4*i+2比特、4*i+3比特,每个比特所对应的比特值分别为b4*i、b4*i+1、b4*i+2、b4*i+3,计算这4个比特所对应的10进制整数x为8*b4*i+4*b4*i+1+2*b4*i+2+b4*i+3,查找该结点中的第x个子结点,将该IP地址流量大小累加更新到第x个子结点的子结点计数器中,进入第五步;
第五步:指向下一层结点
如果当前层i等于7,则表示已经进入到最后一层,该IP地址处理结束,进入第八步,否则检查第x子结点的指向下一层的指针,如果指向下一层指针不为空,进入第七步,如果指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到第六步;
第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值乘以16加上x,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值加上4,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第q个元素中,并设置当前指针数q为q+1,进入第七步;
第七步:设置当前处理
将第x子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=i+1,回到第四步;
第八步:判断IP地址处理结束
如果IP地址及其流量记录没有处理结束,处理下一个IP地址及其流量大小,回到第三步,如果所有的IP地址都处理结束,进入第九步;
第九步:读取指针数组中的结点指针
设当前指针j为0,从指针数组P中读取第j个指针,进入第十步;
第十步:结点输出判断
如果第j个指针指向的结点头的流量计数器值大于大流量网络地址前缀阀值T,进入第十一步,否则进入第十六步;
第十一步:设置次结点
将第j个指针指向的结点划分为4个大小为1比特的子层,其中第0子层至第3子层分别有2、4、8、16个次结点,其中第3子层对应的16个次结点就是第j个指针指向的结点的16个子结点,假设当前子层m为0,当前次结点n为0,进入第十二步;
第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第j个指针指向的结点的网络地址前缀长度加上m+1,当前次结点的网络地址前缀为第j个指针指向的结点的网络地址前缀乘以2(m+1)加上n,如果当前子层m等于3,则当前次结点流量大小为第j个指针指向的结点的第n个子结点的流量大小,进入第十三步;如果当前子层m小于3,当前次结点对应的流量大小为第j个指针指向的结点的第n*2(3-m)个子结点到第(n+1)*2(3-m)-1个子结点的流量累加和,进入第十三步;
第十三步:大流量网络地址前缀输出
如果当前次结点的流量大于大流量网络地址前缀阀值T,则输出当前次结点的网络地址前缀、网络地址前缀长度和流量大小,进入第十四步,否则直接进入第十五步;
第十四步:设置大流量网络地址前缀次结点的下一个次结点序号
如果m小于3,设置m=m+1,n等于2*n,回到第十二步,如果m等于3,n为偶数,则设置n=n+1,回到第十二步,如果m等于3,n为奇数,且n小于15,则设置m=m-1,n=(n+1)/2,回到第十二步,如果m等于3,n等于15,则进入第十六步;
第十五步:设置非大流量网络地址前缀次结点的下一个次结点序号
如果n为偶数,则设置n=n+1,回到第十二步,如果n为奇数,n小于2(m+1)-1,且m大于0,则设置m=m-1,n=(n+1)/2,回到第十二步,如果n为奇数,且n等于2(m+1)-1,则进入第十六步;
第十六步:下一个被处理的结点
如果指针数组P的当前结点指针j小于当前指针数q-1,设置当前结点指针j为j+1,回到第十步,否则结束退出。
图1、图2、图3是基于数组链表的大流量网络地址前缀检测方法表示具体实施方式中涉及的结点结构图、分层结构示例图和流程图,该例子中处理的IP地址0.1.32.83,流量90字节,IP地址1.2.1.35,流量50字节,
本发明实施举例的具体技术步骤如下:
(1)第一步:设置参数
设置大流量网络地址前缀流量阀值T为100字节,设置图1的结点数据结构S,结点数据结构由一个结点头和一个包括16个子结点的数组构成,结点头包括一个用于记录该结点的网络地址前缀的存储器、记录该结点的网络地址前缀长度的存储器和记录该结点流量的结点计数器构成,每个子结点由一个记录流量的子结点计数器和一个指向下一个结点的指针构成,设置一个当前指针指向当前处理结点,设置一个指针数组P[p],指针数值P的大小p为24,p的大小设置为要处理IP地址数量的8倍,设置指针数组P的当前指针数q为0,进入(2)第二步;
(2)第二步:测量初始化
按照结点数据结构S生成一个新结点作为第0层结点,设置一个指针变量Ipointer指向该新结点,设置该新结点的结点头的网络地址前缀为0,网络地址前缀长度为0,流量大小为0,设置16个子结点中的每个元素的流量大小为0,指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第0个元素中,并设置当前指针数q为0+1=1,输入第一个IP地址0.1.32.83及其流量大小90字节,进入(3)第三步;
(3)第三步:预处理
IP地址0.1.32.83的流量大小为90字节,将IP地址32个比特分成8块,每4个比特为一块,其中第0至第3比特为第0块,第4至第7比特为第1块,第8至第11比特为第2块,第12至第15比特为第3块,第16至第19比特为第4块,第20至第23比特为第5块,第24至第27比特为第6块,第28至第31比特为第7块,
设当前层数为i,i=0,将第0层结点指针Ipointer赋值给当前指针,进入(4)第四步;
(4)第四步:结点更新
将IP地址0.1.32.83流量大小90字节累加更新到当前指针指向的结点的结点计数器中,该结点所对应的4个比特为IP的第0块,对应IP地址的第0比特、1比特、2比特、3比特,每个比特所对应的比特值分别为0、0、0、0,计算这4个比特所对应的10进制整数x为8*0+4*0+2*0+0=0,查找该结点中的第0个子结点,将该IP流量大小累加更新到第0个子结点的子结点计数器中,进入(5)第五步;
(5)第五步:指向下一层结点
检查第0子结点的指向下一层的指针,指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到(6)第六步;
(6)第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值0乘以16加上0,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值0加上4,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第1个元素中,并设置当前指针数q为1+1=2,进入(7)第七步;
(7)第七步:设置当前处理
将第0子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=0+1=1,回到(8)第四步;
(8)第四步:结点更新
将IP地址0.1.32.83流量大小90字节累加更新到当前指针指向的结点的结点计数器中,该结点所对应的4个比特为IP的第1块,对应IP地址的第4比特、5比特、6比特、7比特,每个比特所对应的比特值分别为0、0、0、0,计算这4个比特所对应的10进制整数x为8*0+4*0+2*0+0=0,查找该结点中的第0个子结点,将该IP流量大小累加更新到第0个子结点的子结点计数器中,进入(9)第五步;
(9)第五步:指向下一层结点
检查第0子结点的指向下一层的指针,指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到(10)第六步;
(10)第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值0乘以16加上0,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值4加上4等于8,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第2个元素中,并设置当前指针数q为2+1=3,进入(11)第七步;
(11)第七步:设置当前处理
将第0子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=1+1=2,回到(12)第四步;
(12)第四步:结点更新
将IP地址0.1.32.83流量大小90字节累加更新到当前指针指向的结点的结点计数器中,该结点所对应的4个比特为IP的第2块,对应IP地址的第8比特、9比特、10比特、11比特,每个比特所对应的比特值分别为0、0、0、0,计算这4个比特所对应的10进制整数x为8*0+4*0+2*0+0=0,查找该结点中的第0个子结点,将该IP流量大小累加更新到第0个子结点的子结点计数器中,进入(13)第五步;
(13)第五步:指向下一层结点
检查第0子结点的指向下一层的指针,指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到(14)第六步;
(14)第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值0乘以16加上0,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值8加上4等于12,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第3个元素中,并设置当前指针数q为3+1=4,进入(15)第七步;
(15)第七步:设置当前处理
将第0子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=2+1=3,回到(16)第四步;
(16)第四步:结点更新
将IP地址0.1.32.83流量大小90字节累加更新到当前指针指向的结点的结点计数器中,该结点所对应的4个比特为IP的第3块,对应IP地址的第12比特、13比特、14比特、15比特,每个比特所对应的比特值分别为0、0、0、1,计算这4个比特所对应的10进制整数x为8*0+4*0+2*0+1=1,查找该结点中的第1个子结点,将该IP流量大小90累加更新到第1个子结点的子结点计数器中,进入(17)第五步;
(17)第五步:指向下一层结点
检查第1子结点的指向下一层的指针,指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到(18)第六步;
(18)第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值0乘以16加上1等于1,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值12加上4等于16,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第4个元素中,并设置当前指针数q为4+1=5,进入(19)第七步;
(19)第七步:设置当前处理
将第1子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=3+1=4,回到(20)第四步;
(20)第四步:结点更新
将IP地址0.1.32.83流量大小90字节累加更新到当前指针指向的结点的结点计数器中,该结点所对应的4个比特为IP的第4块,对应IP地址的第16比特、17比特、18比特、19比特,每个比特所对应的比特值分别为0、0、1、0,计算这4个比特所对应的10进制整数x为8*0+4*0+2*1+0=2,查找该结点中的第2个子结点,将该IP流量大小90累加更新到第2个子结点的子结点计数器中,进入(21)第五步;
(21)第五步:指向下一层结点
检查第2子结点的指向下一层的指针,指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到(22)第六步;
(22)第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值1乘以16加上2等于18,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值16加上4等于20,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第5个元素中,并设置当前指针数q为5+1=6,进入(23)第七步;
(23)第七步:设置当前处理
将第2子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=4+1=5,回到(24)第四步;
(24)第四步:结点更新
将IP地址0.1.32.83流量大小90字节累加更新到当前指针指向的结点的结点计数器中,该结点所对应的4个比特为IP的第5块,对应IP地址的第20比特、21比特、22比特、23比特,每个比特所对应的比特值分别为0、0、0、0,计算这4个比特所对应的10进制整数x为8*0+4*0+2*0+0=0,查找该结点中的第0个子结点,将该IP流量大小90累加更新到第0个子结点的子结点计数器中,进入(25)第五步;
(25)第五步:指向下一层结点
检查第0子结点的指向下一层的指针,指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到(26)第六步;
(26)第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值18乘以16加上0等于288,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值20加上4等于24,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第6个元素中,并设置当前指针数q为6+1=7,进入(27)第七步;
(27)第七步:设置当前处理
将第0子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=5+1=6,回到(28)第四步;
(28)第四步:结点更新
将IP地址0.1.32.83流量大小90字节累加更新到当前指针指向的结点的结点计数器中,该结点所对应的4个比特为IP的第6块,对应IP地址的第24比特、25比特、26比特、27比特,每个比特所对应的比特值分别为0、1、0、1,计算这4个比特所对应的10进制整数x为8*0+4*1+2*0+1=5,查找该结点中的第5个子结点,将该IP流量大小90累加更新到第0个子结点的子结点计数器中,进入(29)第五步;
(29)第五步:指向下一层结点
检查第0子结点的指向下一层的指针,指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到(30)第六步;
(30)第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值288乘以16加上5等于4613,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值24加上4等于28,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第7个元素中,并设置当前指针数q为7+1=8,进入(31)第七步;
(31)第七步:设置当前处理
将第0子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=6+1=7,回到(32)第四步;
(32)第四步:结点更新
将IP地址0.1.32.83流量大小90字节累加更新到当前指针指向的结点的结点计数器中,该结点所对应的4个比特为IP的第7块,对应IP地址的第28比特、29比特、30比特、31比特,每个比特所对应的比特值分别为0、0、1、1,计算这4个比特所对应的10进制整数x为8*0+4*0+2*1+1=3,查找该结点中的第3个子结点,将该IP流量大小90累加更新到第0个子结点的子结点计数器中,进入(33)第五步;
(33)第五步:指向下一层结点
当前层i等于7,则表示已经进入到最后一层,该IP地址处理结束,进入(34)第八步;
(34)第八步:判断IP地址处理结束
如果IP地址及其流量记录没有处理结束,处理下一个IP地址1.2.1.35及其流量50字节,回到(35)第三步;
(35)第三步:预处理
IP地址1.2.1.35流量大小为50字节,将IP地址32个比特分成8块,每4个比特为一块,其中第0至第3比特为第0块,第4至第7比特为第1块,第8至第11比特为第2块,第12至第15比特为第3块,第16至第19比特为第4块,第20至第23比特为第5块,第24至第27比特为第6块,第28至第31比特为第7块,
设当前层数为i,i=0,将第0层结点指针Ipointer赋值给当前指针,进入(36)第四步;
(36)第四步:结点更新
将IP地址1.2.1.35流量大小50累加更新到当前指针指向的结点的结点计数器中,更新后其值为140字节,该结点所对应的4个比特为IP的第0块,对应IP地址的第0比特、1比特、2比特、3比特,每个比特所对应的比特值分别为0、0、0、0,计算这4个比特所对应的10进制整数x为8*0+4*0+2*0+0=0,查找该结点中的第0个子结点,将该IP流量50累加更新到第0个子结点的子结点计数器中,进入(37)第五步;
(37)第五步:指向下一层结点
当前层i等于0,检查第0子结点的指向下一层的指针,指向下一层指针不为空,进入到(38)第七步;
(38)第七步:设置当前处理
将第0子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=0+1=1,回到(39)第四步;
(39)第四步:结点更新
将IP地址1.2.1.35流量大小50累加更新到当前指针指向的结点的结点计数器中,更新后其值为50字节,该结点所对应的4个比特为IP的第1块,对应IP地址的第4比特、5比特、6比特、7比特,每个比特所对应的比特值分别为0、0、0、1,计算这4个比特所对应的10进制整数x为8*0+4*0+2*0+1=1,查找该结点中的第1个子结点,将该IP流量大小累加更新到第1个子结点的子结点计数器中,进入(40)第五步;
(40)第五步:指向下一层结点
当前层i等于1,检查第1子结点的指向下一层的指针,指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到(41)第六步;
(41)第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值0乘以16加上1,其值等于1,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值4加上4等于8,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第8个元素中,并设置当前指针数q为8+1=9,进入(42)第七步;
(42)第七步:设置当前处理
将第1子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=1+1=2,回到(43)第四步;
(44)第四步:结点更新
将IP地址1.2.1.35流量大小50累加更新到当前指针指向的结点的结点计数器中,更新后其值为50字节,该结点所对应的4个比特为IP的第2块,对应IP地址的第8比特、9比特、10比特、11比特,每个比特所对应的比特值分别为0、0、0、0,计算这4个比特所对应的10进制整数x为8*0+4*0+2*0+0=0,查找该结点中的第0个子结点,将该IP流量大小累加更新到第0个子结点的子结点计数器中,进入(44)第五步;
(44)第五步:指向下一层结点
当前层i等于2,检查第0子结点的指向下一层的指针,指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到(46)第六步;
(46)第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值1乘以16加上0,其值等于16,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值8加上4等于12,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第9个元素中,并设置当前指针数q为9+1=10,进入(46)第七步;
(46)第七步:设置当前处理
将第0子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=2+1=3,回到(47)第四步;
(47)第四步:结点更新
将IP地址1.2.1.35流量大小50累加更新到当前指针指向的结点的结点计数器中,更新后其值为50字节,该结点所对应的4个比特为IP的第3块,对应IP地址的第12比特、13比特、14比特、15比特,每个比特所对应的比特值分别为0、0、1、0,计算这4个比特所对应的10进制整数x为8*0+4*0+2*1+0=2,查找该结点中的第2个子结点,将该IP流量大小累加更新到第2个子结点的子结点计数器中,进入(48)第五步;
(48)第五步:指向下一层结点
当前层i等于3,检查第2子结点的指向下一层的指针,指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到(49)第六步;
(49)第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值16乘以16加上2,其值等于258,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值12加上4等于16,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第10个元素中,并设置当前指针数q为10+1=11,进入(50)第七步;
(50)第七步:设置当前处理
将第2子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=3+1=4,回到(51)第四步;
(51)第四步:结点更新
将IP地址1.2.1.35流量大小50累加更新到当前指针指向的结点的结点计数器中,更新后其值为50字节,该结点所对应的4个比特为IP的第4块,对应IP地址的第16比特、17比特、18比特、19比特,每个比特所对应的比特值分别为0、0、0、0,计算这4个比特所对应的10进制整数x为8*0+4*0+2*0+0=0,查找该结点中的第0个子结点,将该IP流量大小累加更新到第0个子结点的子结点计数器中,进入(52)第五步;
(52)第五步:指向下一层结点
当前层i等于4,检查第0子结点的指向下一层的指针,指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到(53)第六步;
(53)第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值258乘以16加上0,其值等于4128,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值16加上4等于20,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第11个元素中,并设置当前指针数q为11+1=12,进入(54)第七步;
(54)第七步:设置当前处理
将第0子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=4+1=5,回到(55)第四步;
(55)第四步:结点更新
将IP地址1.2.1.35流量大小50累加更新到当前指针指向的结点的结点计数器中,更新后其值为50字节,该结点所对应的4个比特为IP的第5块,对应IP地址的第20比特、21比特、22比特、23比特,每个比特所对应的比特值分别为0、0、0、1,计算这4个比特所对应的10进制整数x为8*0+4*0+2*0+1=1,查找该结点中的第1个子结点,将该IP流量大小累加更新到第1个子结点的子结点计数器中,进入(56)第五步;
(56)第五步:指向下一层结点
当前层i等于5,检查第1子结点的指向下一层的指针,指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到(57)第六步;
(57)第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值4128乘以16加上1,其值等于66049,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值20加上4等于24,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第12个元素中,并设置当前指针数q为12+1=13,进入(58)第七步;
(58)第七步:设置当前处理
将第1个子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=5+1=6,回到(59)第四步;
(59)第四步:结点更新
将IP地址1.2.1.35流量大小50累加更新到当前指针指向的结点的结点计数器中,更新后其值为50字节,该结点所对应的4个比特为IP的第6块,对应IP地址的第24比特、25比特、26比特、27比特,每个比特所对应的比特值分别为0、0、1、0,计算这4个比特所对应的10进制整数x为8*0+4*0+2*1+0=2,查找该结点中的第2个子结点,将该IP流量大小累加更新到第2个子结点的子结点计数器中,进入(60)第五步;
(60)第五步:指向下一层结点
当前层i等于6,检查第2个子结点的指向下一层的指针,指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到(61)第六步;
(61)第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值66049乘以16加上2,其值等于1056786,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值24加上4等于28,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第13个元素中,并设置当前指针数q为13+1=14,进入(62)第七步;
(62)第七步:设置当前处理
将第2个子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=6+1=7,回到(63)第四步;
(63)第四步:结点更新
将IP地址1.2.1.35流量大小50累加更新到当前指针指向的结点的结点计数器中,更新后其值为50字节,该结点所对应的4个比特为IP的第7块,对应IP地址的第28比特、29比特、30比特、31比特,每个比特所对应的比特值分别为0、0、1、1,计算这4个比特所对应的10进制整数x为8*0+4*0+2*1+1=3,查找该结点中的第3个子结点,将该IP流量大小累加更新到第3个子结点的子结点计数器中,进入(64)第五步;
(64)第五步:指向下一层结点
当前层i等于7,则表示已经进入到最后一层,该IP地址处理结束,进入(65)第八步;
(65)第八步:判断IP地址处理结束
所有的IP地址都处理结束,进入(66)第九步;
(66)第九步:读取指针数组中的结点指针
设当前指针j为0,从指针数组P中读取第0个指针,进入(67)第十步;
(67)第十步:结点输出判断
第0个指针指向的结点头的流量计数器值140字节大于大流量网络地址前缀阀值T的100字节,进入(68)第十一步;
(68)第十一步:设置次结点
将第0个指针指向的结点划分为4个大小为1比特的子层,其中第0子层至第3子层分别有2、4、8、16个次结点,其中第3层对应的16个次结点就是第0个指针指向的结点的16个子结点,假设当前子层m为0,当前次结点n为0,进入(69)第十二步;
(69)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第0个指针指向的结点的网络地址前缀长度0加上0+1=1,当前次结点的网络地址前缀为第0个指针指向的结点的网络地址前缀0乘以2(0+1)加上0等于0,当前子层0小于3,当前次结点对应的流量大小为第0个指针指向的结点的第0个子结点到第7个子结点的流量累加和,其值等于140字节,进入(70)第十三步;
(70)第十三步:大流量网络地址前缀输出
当前次结点的流量140字节大于大流量网络地址前缀阀值T的100字节,则输出当前次结点的网络地址前缀0、网络地址前缀长度1和流量大小140字节,进入(71)第十四步;
(71)第十四步:设置大流量网络地址前缀次结点的下一个次结点序号
m=0小于3,设置m=0+1=1,n=2*0=0,回到(72)第十二步;
(72)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第0个指针指向的结点的网络地址前缀长度0加上1+1=2,当前次结点的网络地址前缀为第0个指针指向的结点的网络地址前缀0乘以2(1+1)加上0等于0,当前子层1小于3,当前次结点对应的流量大小为第0个指针指向的结点的第0个子结点到第3个子结点的流量累加和,其值为140字节,进入(73)第十三步;
(73)第十三步:大流量网络地址前缀输出
当前次结点的流量140字节大于大流量网络地址前缀阀值T的100字节,则输出当前次结点的网络地址前缀0、网络地址前缀长度2和流量大小140字节,进入(74)第十四步;
(74)第十四步:设置大流量网络地址前缀次结点的下一个次结点序号
m=1小于3,设置m=1+1=2,n=2*0=0,回到(75)第十二步;
(75)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第0个指针指向的结点的网络地址前缀长度0加上2+1=3,当前次结点的网络地址前缀为第0个指针指向的结点的网络地址前缀0乘以2(2+1)加上0等于0,当前子层2小于3,当前次结点对应的流量大小为第0个指针指向的结点的第0个子结点到第1个子结点的流量累加和,其值为140字节,进入(76)第十三步;
(76)第十三步:大流量网络地址前缀输出
当前次结点的流量140字节大于大流量网络地址前缀阀值T的100字节,则输出当前次结点的网络地址前缀0、网络地址前缀长度3和流量大小140字节,进入(77)第十四步;
(77)第十四步:设置大流量网络地址前缀次结点的下一个次结点序号
m=2小于3,设置m=2+1=3,n=2*0=0,回到(78)第十二步;
(78)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第0个指针指向的结点的网络地址前缀长度0加上3+1=4,当前次结点的网络地址前缀为第0个指针指向的结点的网络地址前缀0乘以2(3+1)加上0等于0,当前子层3等于3,当前次结点对应的流量大小为第0个指针指向的结点的第0个子结点流量,其值为140字节,进入(79)第十三步;
(79)第十三步:大流量网络地址前缀输出
当前次结点的流量140字节大于大流量网络地址前缀阀值T的100字节,则输出当前次结点的网络地址前缀0、网络地址前缀长度4和流量大小140字节,进入(80)第十四步;
(80)第十四步:设置大流量网络地址前缀次结点的下一个次结点序号
m=3等于3,n=0为偶数,设置n=0+1=1,回到(81)第十二步;
(81)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第0个指针指向的结点的网络地址前缀长度0加上3+1=4,当前次结点的网络地址前缀为第0个指针指向的结点的网络地址前缀0乘以2(3+1)加上0等于0,当前子层3等于3,当前次结点对应的流量大小为第0个指针指向的结点的第1个子结点流量,其值为0字节,进入(82)第十三步;
(82)第十三步:大流量网络地址前缀输出
当前次结点的流量0字节小于大流量网络地址前缀阀值T的100字节,进入(83)第十五步;
(83)第十五步:设置非大流量网络地址前缀次结点的下一个次结点序号
n=1为奇数,n小于23+1-1=15,且m=3大于0,则设置m=3-1=2,n=(1+1)/2=1,回到(84)第十二步;
(84)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第0个指针指向的结点的网络地址前缀长度0加上2+1=3,当前次结点的网络地址前缀为第0个指针指向的结点的网络地址前缀0乘以2(2+1)加上0等于0,当前子层2小于3,当前次结点对应的流量大小为第0个指针指向的结点的第2个和第3个子结点流量之和,其值为0字节,进入(85)第十三步;
(85)第十三步:大流量网络地址前缀输出
当前次结点的流量0字节小于大流量网络地址前缀阀值T的100字节,进入(86)第十五步;
(86)第十五步:设置非大流量网络地址前缀次结点的下一个次结点序号
n=1为奇数,n小于22+1-1=7,且m=2大于0,则设置m=2-1=1,n=(1+1)/2=1,回到(87)第十二步;
(87)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第0个指针指向的结点的网络地址前缀长度0加上1+1=2,当前次结点的网络地址前缀为第0个指针指向的结点的网络地址前缀0乘以2(1+1)加上0等于0,当前子层1小于3,当前次结点对应的流量大小为第0个指针指向的结点的第4个至第7个子结点流量之和,其值为0字节,进入(88)第十三步;
(88)第十三步:大流量网络地址前缀输出
当前次结点的流量0字节小于大流量网络地址前缀阀值T的100字节,进入(89)第十五步;
(89)第十五步:设置非大流量网络地址前缀次结点的下一个次结点序号
n=1为奇数,n小于21+1-1=3,且m=1大于0,则设置m=1-1=0,n=(1+1)/2=1,回到(90)第十二步;
(90)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第0个指针指向的结点的网络地址前缀长度0加上0+1=2,当前次结点的网络地址前缀为第0个指针指向的结点的网络地址前缀0乘以2(0+1)加上0等于0,当前子层0小于3,当前次结点对应的流量大小为第0个指针指向的结点的第8个至第15个子结点流量之和,其值为0字节,进入(91)第十三步;
(91)第十三步:大流量网络地址前缀输出
当前次结点的流量0字节小于大流量网络地址前缀阀值T的100字节,进入(29)第十五步;
(92)第十五步:设置非大流量网络地址前缀次结点的下一个次结点序号
n=1为奇数,n等于20+1-1=1,则进入(93)第十六步;
(93)第十六步:下一个被处理的结点
指针数组P的当前结点指针0小于当前指针数14-1=13,设置当前结点指针0为0+1=1,回到(94)第十步;
(94)第十步:结点输出判断
第1个指针指向的结点头的流量计数器值140大于大流量网络地址前缀阀值100,进入(95)第十一步;
(95)第十一步:设置次结点
将第1个指针指向的结点划分为4个大小为1比特的子层,其中第0子层至第3子层分别有2、4、8、16个次结点,其中第3子层对应的16个次结点就是第1个指针指向的结点的16个子结点,假设当前子层m为0,当前次结点n为0,进入(96)第十二步;
(96)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第1个指针指向的结点的网络地址前缀长度4加上0+1等于5,当前次结点的网络地址前缀为第1个指针指向的结点的网络地址前缀0乘以2(0+1)加上0等于0,如果当前子层m=0小于3,当前次结点对应的流量大小为第1个指针指向的结点的第0个子结点到第7个子结点的流量累加和,进入(97)第十三步;
(97)第十三步:大流量网络地址前缀输出
当前次结点的流量140大于大流量网络地址前缀阀值100,则输出当前次结点的网络地址前缀0、网络地址前缀长度5和流量大小140,进入(98)第十四步;
(98)第十四步:设置大流量网络地址前缀次结点的下一个次结点序号
m=0小于3,设置m=0+1=2,n等于2*0=0,回到(99)第十二步;
(99)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第1个指针指向的结点的网络地址前缀长度4加上1+1等于6,当前次结点的网络地址前缀为第1个指针指向的结点的网络地址前缀0乘以2(1+1)加上0等于0,当前子层m=1小于3,当前次结点对应的流量大小为第1个指针指向的结点的第0个子结点到第3个子结点的流量累加和,进入(100)第十三步;
(100)第十三步:大流量网络地址前缀输出
当前次结点的流量140大于大流量网络地址前缀阀值100,则输出当前次结点的网络地址前缀0、网络地址前缀长度6和流量大小140,进入(101)第十四步;
(101)第十四步:设置大流量网络地址前缀次结点的下一个次结点序号
m=1小于3,设置m=1+1=2,n等于2*0=0,回到(102)第十二步;
(102)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第1个指针指向的结点的网络地址前缀长度4加上2+1等于7,当前次结点的网络地址前缀为第1个指针指向的结点的网络地址前缀0乘以2(2+1)加上0等于0,当前子层m=2小于3,当前次结点对应的流量大小为第1个指针指向的结点的第0个子结点到第1个子结点的流量累加和,进入(103)第十三步;
(103)第十三步:大流量网络地址前缀输出
当前次结点的流量140大于大流量网络地址前缀阀值100,则输出当前次结点的网络地址前缀0、网络地址前缀长度7和流量大小140,进入(104)第十四步;
(104)第十四步:设置大流量网络地址前缀次结点的下一个次结点序号
m=2小于3,设置m=2+1=3,n等于2*0=0,回到(105)第十二步;
(105)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第1个指针指向的结点的网络地址前缀长度4加上3+1等于8,当前次结点的网络地址前缀为第1个指针指向的结点的网络地址前缀0乘以2(3+1)加上0等于0,当前子层m=3等于3,当前次结点对应的流量大小为第1个指针指向的结点的第0个子结点流量为90,进入(106)第十三步;
(106)第十三步:大流量网络地址前缀输出
当前次结点的流量90小于大流量网络地址前缀阀值100,则进入(107)第十五步;
(107)第十五步:设置非大流量网络地址前缀次结点的下一个次结点序号
n=0为偶数,则设置n=0+1=1,回到(108)第十二步;
(108)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第1个指针指向的结点的网络地址前缀长度4加上3+1等于8,当前次结点的网络地址前缀为第1个指针指向的结点的网络地址前缀0乘以2(3+1)加上1等于1,当前子层m=3等于3,当前次结点对应的流量大小为第1个指针指向的结点的第1个子结点流量为50,进入(109)第十三步;
(109)第十三步:大流量网络地址前缀输出
当前次结点的流量50小于大流量网络地址前缀阀值100,则进入(110)第十五步;
(110)第十五步:设置非大流量网络地址前缀次结点的下一个次结点序号
n=1为奇数,n小于2(3+1)-1=15,且m=3大于0,则设置m=3-1=2,n=(1+1)/2=1,回到(111)第十二步;
(111)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第1个指针指向的结点的网络地址前缀长度4加上2+1等于7,当前次结点的网络地址前缀为第1个指针指向的结点的网络地址前缀0乘以2(2+1)加上1等于1,当前子层m=2小于3,当前次结点对应的流量大小为第1个指针指向的结点的第2个至第3个子结点流量之和为0,进入(112)第十三步;
(112)第十三步:大流量网络地址前缀输出
当前次结点的流量0小于大流量网络地址前缀阀值100,则进入(113)第十五步;
(113)第十五步:设置非大流量网络地址前缀次结点的下一个次结点序号
n=1为奇数,n小于2(2+1)-1=7,且m=2大于0,则设置m=2-1=1,n=(1+1)/2=1,回到(114)第十二步;
(114)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第1个指针指向的结点的网络地址前缀长度4加上1+1等于6,当前次结点的网络地址前缀为第1个指针指向的结点的网络地址前缀0乘以2(1+1)加上1等于1,当前子层m=1小于3,当前次结点对应的流量大小为第1个指针指向的结点的第4个至第7个子结点流量之和为0,进入(115)第十三步;
(115)第十三步:大流量网络地址前缀输出
当前次结点的流量0小于大流量网络地址前缀阀值100,则进入(116)第十五步;
(116)第十五步:设置非大流量网络地址前缀次结点的下一个次结点序号
n=1为奇数,n小于2(1+1)-1=3,且m=1大于0,则设置m=1-1=0,n=(1+1)/2=1,回到(117)第十二步;
(117)第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第1个指针指向的结点的网络地址前缀长度4加上0+1等于5,当前次结点的网络地址前缀为第1个指针指向的结点的网络地址前缀0乘以2(0+1)加上1等于1,当前子层m=0小于3,当前次结点对应的流量大小为第1个指针指向的结点的第8个至第15个子结点流量之和为0,进入(118)第十三步;
(118)第十三步:大流量网络地址前缀输出
当前次结点的流量0小于大流量网络地址前缀阀值100,则进入(119)第十五步;
(119)第十五步:设置非大流量网络地址前缀次结点的下一个次结点序号
n=1为奇数,n等于2(0+1)-1=1,则进入(120)第十六步;
(120)第十六步:下一个被处理的结点
指针数组P的当前结点指针1小于当前指针数14-1=13,设置当前结点指针j为1+1=2,回到(121)第十步;
(121)第十步:结点输出判断
如果第2个指针指向的结点头的流量计数器值90小于大流量网络地址前缀阀值100,进入(122)第十六步;
(122)第十六步:下一个被处理的结点
指针数组P的当前结点指针2小于当前指针数14-1=13,设置当前结点指针j为2+1=3,回到(123)第十步;
(123)第十步:结点输出判断
如果第3个指针指向的结点头的流量计数器值90小于大流量网络地址前缀阀值100,进入(124)第十六步;
(124)第十六步:下一个被处理的结点
指针数组P的当前结点指针3小于当前指针数14-1=13,设置当前结点指针j为3+1=4,回到(125)第十步;
(125)第十步:结点输出判断
如果第4个指针指向的结点头的流量计数器值90小于大流量网络地址前缀阀值100,进入(126)第十六步;
(126)第十六步:下一个被处理的结点
指针数组P的当前结点指针4小于当前指针数14-1=13,设置当前结点指针j为4+1=5,回到(127)第十步;
(127)第十步:结点输出判断
如果第5个指针指向的结点头的流量计数器值90小于大流量网络地址前缀阀值100,进入(128)第十六步;
(128)第十六步:下一个被处理的结点
指针数组P的当前结点指针5小于当前指针数14-1=13,设置当前结点指针j为5+1=6,回到(129)第十步;
(129)第十步:结点输出判断
如果第6个指针指向的结点头的流量计数器值90小于大流量网络地址前缀阀值100,进入(130)第十六步;
(130)第十六步:下一个被处理的结点
指针数组P的当前结点指针6小于当前指针数14-1=13,设置当前结点指针j为6+1=7,回到(131)第十步;
(131)第十步:结点输出判断
如果第7个指针指向的结点头的流量计数器值90小于大流量网络地址前缀阀值100,进入(132)第十六步;
(132)第十六步:下一个被处理的结点
指针数组P的当前结点指针7小于当前指针数14-1=13,设置当前结点指针j为7+1=8,回到(133)第十步;
(133)第十步:结点输出判断
如果第8个指针指向的结点头的流量计数器值50小于大流量网络地址前缀阀值100,进入(134)第十六步;
(134)第十六步:下一个被处理的结点
指针数组P的当前结点指针8小于当前指针数14-1=13,设置当前结点指针j为8+1=9,回到(135)第十步;
(135)第十步:结点输出判断
如果第9个指针指向的结点头的流量计数器值50小于大流量网络地址前缀阀值100,进入(136)第十六步;
(136)第十六步:下一个被处理的结点
指针数组P的当前结点指针9小于当前指针数14-1=13,设置当前结点指针j为9+1=10,回到(137)第十步;
(137)第十步:结点输出判断
如果第9个指针指向的结点头的流量计数器值50小于大流量网络地址前缀阀值100,进入(138)第十六步;
(138)第十六步:下一个被处理的结点
指针数组P的当前结点指针10小于当前指针数14-1=13,设置当前结点指针j为10+1=11,回到(139)第十步;
(139)第十步:结点输出判断
如果第`10个指针指向的结点头的流量计数器值50小于大流量网络地址前缀阀值100,进入(140)第十六步;
(140)第十六步:下一个被处理的结点
指针数组P的当前结点指针11小于当前指针数14-1=13,设置当前结点指针j为11+1=12,回到(141)第十步;
(142)第十步:结点输出判断
如果第`12个指针指向的结点头的流量计数器值50小于大流量网络地址前缀阀值100,进入(143)第十六步;
(143)第十六步:下一个被处理的结点
指针数组P的当前结点指针12小于当前指针数14-1=13,设置当前结点指针j为12+1=13,回到(144)第十步;
(145)第十步:结点输出判断
第`13个指针指向的结点头的流量计数器值50小于大流量网络地址前缀阀值100,进入(146)第十六步;
(146)第十六步:下一个被处理的结点
指针数组P的当前结点指针13等于当前指针数13,结束退出。
该例子输出的结果为
网络地址前缀    网络地址前缀阀值    大流量网络地址前缀流量
0               1                   140
0               2                   140
0               3                   140
0               4                   140
0               5                   140
0               6                   140
0               7                   140

Claims (1)

1.一种基于数组链表的大流量网络地址前缀检测方法,其特征是:建立一个用于记录IP地址前缀流量信息的8层结构,每层结构记录IP地址的4个比特前缀流量信息且每层结构至少包括一个结点,其中,第0层记录IP地址的第0个至第3个比特流量信息,第1层记录IP地址的第4个至第7个比特流量信息,第2层记录IP地址的第8个至第11个比特流量信息,第3层记录IP地址的第12个至第15个比特流量信息,第4层记录IP地址的第16个至第19个比特流量信息,第5层记录IP地址的第20个至第23个比特流量信息,第6层记录IP地址的第24个至第27个比特流量信息,第7层记录IP地址的第28个至第31个比特流量信息,每个被测量的IP地址及其前缀的流量信息被记录在8层结构中,测量结束后,对于流量超过阀值的大流量网络地址前缀,其相应的网络地址前缀、网络地址前缀长度和网络地址前缀的流量大小输出,具体步骤如下:
第一步:设置参数
设置大流量网络地址前缀流量阀值T,设置结点数据结构S,结点数据结构由一个结点头和一个包括16个子结点的数组构成,结点头包括一个用于记录该结点的网络地址前缀的存储器、记录该结点的网络地址前缀长度的存储器和记录该结点流量的结点计数器构成,每个子结点由一个记录流量的子结点计数器和一个指向下一个结点的指针构成,设置一个当前指针指向当前处理结点,设置一个指针数组P[p],指针数值P的大小为p,p的大小设置为要处理IP地址数量的8倍,设置指针数组P的当前指针数q为0,进入第二步;
第二步:测量初始化
按照结点数据结构S生成一个新结点作为第0层结点,设置一个指针变量Ipointer指向该新结点,设置该新结点的结点头的网络地址前缀为0,网络地址前缀长度为0,流量大小为0,设置16个子结点中的每个元素的流量大小为0,指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第q个元素中,并设置当前指针数q为q+1,输入第一个IP地址及其流量大小,进入第三步;
第三步:预处理
假设IP地址流量大小为B字节,将IP地址32个比特分成8块,每4个比特为一块,其中第0至第3比特为第0块,第4至第7比特为第1块,第8至第11比特为第2块,第12至第15比特为第3块,第16至第19比特为第4块,第20至第23比特为第5块,第24至第27比特为第6块,第28至第31比特为第7块,
设当前层数为i,i=0,将第0层结点指针Ipointer赋值给当前指针,进入第四步;
第四步:结点更新
将IP地址流量大小B累加更新到当前指针指向的结点的结点计数器中,该结点所对应的4个比特为IP地址的第i块,对应IP地址的第4*i比特、4*i+1比特、4*i+2比特、4*i+3比特,每个比特所对应的比特值分别为b4*i、b4*i+1、b4*i+2、b4*i+3,计算这4个比特所对应的10进制整数x为8*b4*i+4*b4*i+1+2*b4*i+2+b4*i+3,查找该结点中的第x个子结点,将该IP地址流量大小累加更新到第x个子结点的子结点计数器中,进入第五步;
第五步:指向下一层结点
如果当前层i等于7,则表示已经进入到最后一层,该IP地址处理结束,进入第八步,否则检查第x子结点的指向下一层的指针,如果指向下一层指针不为空,进入第七步,如果指向下一层指针为空,则按照结点结构S生成一个新结点,将指向下一层指针赋值为新生成结点的地址,进入到第六步;
第六步:初始化新结点
将该新结点结点头的网络地址前缀存储器的值设置为当前指针指向的结点头中网络地址前缀存储器的值乘以16加上x,新结点结点头的网络地址前缀长度存储器的值为当前指针指向的结点头中网络地址前缀长度存储器的值加上4,新结点结点头中结点计数器的值设置为0,设置新结点的16个子结点中的每个子结点的子结点计数器的值为0,每个指向下一个结点的指针为空,将该新结点的指针赋值到指针数组P的第q个元素中,并设置当前指针数q为q+1,进入第七步;
第七步:设置当前处理
将第x子结点指针指向的下一层结点的指针赋值给当前指针,设置当前层为i=i+1,回到第四步;
第八步:判断IP地址处理结束
如果IP地址及其流量记录没有处理结束,处理下一个IP地址及其流量大小,回到第三步,如果所有的IP地址都处理结束,进入第九步;
第九步:读取指针数组中的结点指针
设当前指针j为0,从指针数组P中读取第j个指针,进入第十步;
第十步:结点输出判断
如果第j个指针指向的结点头的流量计数器值大于大流量网络地址前缀阀值T,进入第十一步,否则进入第十六步;
第十一步:设置次结点
将第j个指针指向的结点划分为4个大小为1比特的子层,其中第0子层至第3子层分别有2、4、8、16个次结点,其中第3子层对应的16个次结点就是第j个指针指向的结点的16个子结点,假设当前子层m为0,当前次结点n为0,进入第十二步;
第十二步:计算次结点流量
当前次结点的网络地址前缀长度为第j个指针指向的结点的网络地址前缀长度加上m+1,当前次结点的网络地址前缀为第j个指针指向的结点的网络地址前缀乘以2(m+1)加上n,如果当前子层m等于3,则当前次结点流量大小为第j个指针指向的结点的第n个子结点的流量大小,进入第十三步;如果当前子层m小于3,当前次结点对应的流量大小为第j个指针指向的结点的第n*2(3-m)个子结点到第(n+1)*2(3-m)-1个子结点的流量累加和,进入第十三步;
第十三步:大流量网络地址前缀输出
如果当前次结点的流量大于大流量网络地址前缀阀值T,则输出当前次结点的网络地址前缀、网络地址前缀长度和流量大小,进入第十四步,否则直接进入第十五步;
第十四步:设置大流量网络地址前缀次结点的下一个次结点序号
如果m小于3,设置m=m+1,n等于2*n,回到第十二步,如果m等于3,n为偶数,则设置n=n+1,回到第十二步,如果m等于3,n为奇数,且n小于15,则设置m=m-1,n=(n+1)/2,回到第十二步,如果m等于3,n等于15,则进入第十六步;
第十五步:设置非大流量网络地址前缀次结点的下一个次结点序号
如果n为偶数,则设置n=n+1,回到第十二步,如果n为奇数,n小于2(m+1)-1,且m大于0,则设置m=m-1,n=(n+1)/2,回到第十二步,如果n为奇数,且n等于2(m+1)-1,则进入第十六步;
第十六步:下一个被处理的结点
如果指针数组P的当前结点指针j小于当前指针数q-1,设置当前结点指针j为j+1,回到第十步,否则结束退出。
CN2009102628442A 2009-12-11 2009-12-11 基于数组链表的大流量网络地址前缀检测方法 Expired - Fee Related CN101741646B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009102628442A CN101741646B (zh) 2009-12-11 2009-12-11 基于数组链表的大流量网络地址前缀检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102628442A CN101741646B (zh) 2009-12-11 2009-12-11 基于数组链表的大流量网络地址前缀检测方法

Publications (2)

Publication Number Publication Date
CN101741646A true CN101741646A (zh) 2010-06-16
CN101741646B CN101741646B (zh) 2011-09-07

Family

ID=42464578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102628442A Expired - Fee Related CN101741646B (zh) 2009-12-11 2009-12-11 基于数组链表的大流量网络地址前缀检测方法

Country Status (1)

Country Link
CN (1) CN101741646B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105814846A (zh) * 2013-12-17 2016-07-27 华为技术有限公司 网络地址查询的前缀树阶段平衡
CN109952743A (zh) * 2016-12-06 2019-06-28 华为技术有限公司 用于低内存和低流量开销大流量对象检测的系统和方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105814846A (zh) * 2013-12-17 2016-07-27 华为技术有限公司 网络地址查询的前缀树阶段平衡
CN105814846B (zh) * 2013-12-17 2019-06-21 华为技术有限公司 网络地址查询的前缀树阶段平衡
CN109952743A (zh) * 2016-12-06 2019-06-28 华为技术有限公司 用于低内存和低流量开销大流量对象检测的系统和方法
CN109952743B (zh) * 2016-12-06 2021-02-09 华为技术有限公司 用于低内存和低流量开销大流量对象检测的系统和方法

Also Published As

Publication number Publication date
CN101741646B (zh) 2011-09-07

Similar Documents

Publication Publication Date Title
CN104298680B (zh) 数据统计方法及数据统计装置
US8325721B2 (en) Method for selecting hash function, method for storing and searching routing table and devices thereof
CN104021123B (zh) 用于数据迁移的方法和系统
CN109471905B (zh) 一种支持时间范围和属性范围复合查询的区块链索引方法
CN105260354A (zh) 一种基于关键词字典树构造的中文ac自动机工作方法
CN105718218B (zh) 一种适用于电能表或集中器负荷记录的压缩存储方法及系统
CN102929906B (zh) 基于内容特征和主题特征的文本分组聚类方法
US7973680B2 (en) Method and system for creating an in-memory physical dictionary for data compression
CN102075430B (zh) 深度报文检测dfa状态转移表的压缩与报文匹配方法
CN106528786A (zh) 快速迁移多源异构电网大数据到HBase的方法及系统
CN103345496A (zh) 多媒体信息检索方法和系统
CN100512020C (zh) 一种译码方法及译码装置
CN102110171A (zh) 基于树形结构的布鲁姆过滤器的查询与更新方法
CN102799600B (zh) 一种基于编码关联的多模式匹配算法及系统
CN102446184A (zh) 一种基于时间序列的工业数据存储及索引方法
CN110532297A (zh) 一种基于层次聚类的符号化水文时间序列异常模式检测方法
CN103236846A (zh) 一种工业实时数据压缩方法及装置
CN101741646B (zh) 基于数组链表的大流量网络地址前缀检测方法
CN101944121A (zh) 有限状态自动机生成方法、关键字匹配方法及装置和设备
US20120319875A1 (en) Method for storing node information of huffman tree and corresponding decoding method
CN111124313A (zh) 电力采集终端数据读写方法、装置和电子设备
CN104268034B (zh) 一种数据备份方法及装置和数据恢复方法及装置
CN105824927B (zh) 一种基于树状自动机的域名匹配方法
CN101499081A (zh) 文字语言结构树的构建方法
CN102968467A (zh) 一种多层Bloom Filter的优化方法及查询方法

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
ASS Succession or assignment of patent right

Owner name: HAIAN CHANGDA TECHNOLOGY TRANSFER CENTER CO., LTD.

Free format text: FORMER OWNER: SOWTHEAST UNIV.

Effective date: 20131022

Owner name: SOWTHEAST UNIV.

Effective date: 20131022

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 210096 NANJING, JIANGSU PROVINCE TO: 226600 NANTONG, JIANGSU PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20131022

Address after: 226600 No. 8 Yingbin Road, software park, Haian County, Jiangsu Province

Patentee after: Haian Changzhou University Technology Transfer Center Co., Ltd.

Patentee after: Southeast University

Address before: 210096 Jiangsu city Nanjing Province four pailou No. 2

Patentee before: Southeast University

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110907

Termination date: 20181211

CF01 Termination of patent right due to non-payment of annual fee