CN105141681A - Rpki文件的同步方法及装置 - Google Patents
Rpki文件的同步方法及装置 Download PDFInfo
- Publication number
- CN105141681A CN105141681A CN201510507607.3A CN201510507607A CN105141681A CN 105141681 A CN105141681 A CN 105141681A CN 201510507607 A CN201510507607 A CN 201510507607A CN 105141681 A CN105141681 A CN 105141681A
- Authority
- CN
- China
- Prior art keywords
- tree
- node
- orderly
- orderly hash
- hash tree
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种RPKI文件的同步方法及装置。本发明RPKI文件的同步方法,包括:接收RP端发送的文件同步请求,所述文件同步请求包括RP端目录对应的第一有序哈希树;获取RPKI资料库中目录对应的第二有序哈希树;其中,所述第一有序哈希树和所述第二有序哈希树分别由树节点组成;遍历所述第一有序哈希树以及所述第二有序哈希树,根据所述第一有序哈希树和所述第二有序哈希树中树节点的信息,确定所述RP端需同步的文件。本发明同步数据时的效率较高。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种资源公钥证书体系(ResourcePublicKeyInfrastructure,简称RPKI)文件的同步方法及装置。
背景技术
作为支撑互联网基础设施的域间路由系统,对互联网的安全有着至关重要的影响。由于边界网关协议(BorderGatewayProtocol,简称BGP)缺乏对路由通告内容真实性的保证,黑客的蓄意攻击行为以及错误的网络参数配置都可以导致路由劫持现象的发生。为了增强域间路由系统的安全性,因此引入了互联网基础RPKI。RPKI构建了个公钥证书体系(PublicKeyInfrastructure,简称PKI)来完成对互联网码号资源(InternetNumberResource,简称INR)的所有权和使用权的认证,并以路由源声明(RouteOriginAttestation,简称ROA)的形式帮助域间路由系统,验证某个自治系统(AutonomousSystem,简称AS)号针对特定网络互连协议(InternetProtocol,简称IP)地址前缀的路由通告是否合法,从而避免路由劫持;其中,INR包括IP地址前缀和AS号。
RPKI包括三大基本组件:认证权威(CertificateAuthority,简称CA)、依赖方(RelyingParty,简称RP)和资料库(repository)。这三大组件通过签发、传送、存储、验证各种数字对象(包括各种签名对象和证书)来彼此协作,共同完成RPKI的功能。CA通过签发资源证书(ResourceCertificate,简称RC)将资源持有者和其持有的INR关联起来,也可以通过签发路由起源声明(RouteOriginAuthorization,简称ROA)来授权某个互联网服务提供商(InternetServiceProvider,简称ISP)针对自己的一部分IP地址前缀发起源路由通告,ROA包含一个AS号与一个或多个IP地址前缀之间的“绑定关系”;RPKI中所有数字对象都在RPKI资料库存储并加以发布,供全球的RP下载;RP负责从RPKI资料库中下载同步这些数字对象,将验证之后的ROA分发给相关的边界路由器。当有新的路由通告到达这些边界路由器时,RP提供的ROA就成为边界路由器判断路由通告是否可信的一个依据。
现有技术中,RPKI体系的RP端在同步数据时使用的是开源软件rsync,RP端在同步文件时需要将文件读入内存进行分块和计算校验值,假设块大小为s个字节,并将所有校验值传给部署RPKI资料库的设备,该设备对RPKI资料库中文件进行同样的分块处理并计算校验值,将接收到的校验值和计算出的校验值进行比较,从而判断文件是否相同,RP端是否需要同步,将RP端需要同步的文件传输给RP端。上述过程中,RP端和部署RPKI资料库的设备都需要将文件读入内存进行分块,如果文件数量巨大,那么读取数量庞大的文件会占用很多的I/O资源,同步数据时的效率较低。
发明内容
本发明提供一种RPKI文件的同步方法及装置,以克服现有技术中读取数量庞大的文件会占用很多的I/O资源,同步数据时的效率较低的问题。
第一方面,本发明提供一种RPKI文件的同步方法,包括:
接收依赖方RP端发送的文件同步请求,所述文件同步请求包括RP端目录对应的第一有序哈希树;
获取资源公钥证书体系RPKI资料库中目录对应的第二有序哈希树;其中,所述第一有序哈希树和所述第二有序哈希树分别由树节点组成;
遍历所述第一有序哈希树以及所述第二有序哈希树,根据所述第一有序哈希树和所述第二有序哈希树中树节点的信息,确定所述RP端需同步的文件。
第二方面,本发明提供一种RPKI文件的同步装置,包括:
接收模块,用于接收依赖方RP端发送的文件同步请求,所述文件同步请求包括RP端目录对应的第一有序哈希树;
获取模块,用于获取资源公钥证书体系RPKI资料库中目录对应的第二有序哈希树;其中,所述第一有序哈希树和所述第二有序哈希树分别由树节点组成;
处理模块,用于遍历所述第一有序哈希树以及所述第二有序哈希树,根据所述第一有序哈希树和所述第二有序哈希树中树节点的信息,确定所述RP端需同步的文件。
本发明提供的RPKI文件的同步方法及装置,在同步时,首先获取到RP端目录对应的第一有序哈希树以及RPKI资料库中目录对应的第二有序哈希树;然后遍历所述第一有序哈希树以及所述第二有序哈希树,根据所述第一有序哈希树和所述第二有序哈希树中树节点的信息,确定所述RP端需同步的文件,与现有技术相比,无需读取数量庞大的文件,也无需将文件进行分块,直接获取目录对应的有序哈希树,遍历有序哈希树的树节点,比现有的分块处理能够更直接快速的查找到需同步的文件,同步数据时的效率较高,而且读取目录对应的有序哈希树比读取文件占用的I/O资源少的多。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明RPKI文件的同步方法一实施例的流程示意图;
图2为本发明实施例的RPKI文件尺寸分布图;
图3为本发明方法实施例中目录转化有序哈希树的示意图;
图4A为本发明方法实施例的第一有序哈希树示意图;
图4B为本发明方法实施例的第二有序哈希树示意图;
图5A为本发明方法另一实施例的第二有序哈希树示意图;
图5B为本发明方法另一实施例的第一有序哈希树示意图;
图5C为图5B中经过同步后的第一有序哈希树示意图;
图6A为本发明方法又一实施例的第一有序哈希树示意图;
图6B为本发明方法又一实施例的第二有序哈希树示意图;
图6C为图6A中经过同步后的第一有序哈希树示意图;
图7为本发明RPKI文件的同步装置一实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例涉及的方法,旨在解决现有技术中读取数量庞大的文件会占用很多的I/O资源,同步数据时的效率较低的技术问题。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1为本发明RPKI文件的同步方法一实施例的流程示意图。本实施例的执行主体可以为RPKI文件的同步装置,该装置可以设置在部署RPKI资料库的设备内。如图1所示,本实施例的方法包括:
步骤101、接收RP端发送的文件同步请求,所述文件同步请求包括RP端目录对应的第一有序哈希树;
步骤102、获取RPKI资料库中目录对应的第二有序哈希树;
步骤103、遍历所述第一有序哈希树以及所述第二有序哈希树,根据所述第一有序哈希树和所述第二有序哈希树中树节点的信息,确定所述RP端需同步的文件。
具体来说,RPKI资料库同步过程涉及到的文件种类有:CA证书(.cer)、ROA(.roa)、资料清单(.mft)、CRL证书(.crl)和Ghostbusters证书(.gbr)等,而且文件数量多。截止到2015年6月30日,全球RPKI体系中资料库文件大小为290M字节,共47763个文件,而此时RPKI在全球的部署率仅为6.4%。可以想象,如果RPKI今后在全球普遍推广部署后,RPKI体系中资料库将是十分庞大的。而现有的同步工具rsync在同步文件时需要将文件读入内存进行分块和计算校验值,如果文件数量巨大,那么读取数量庞大的文件无疑会占用很多的I/O资源,对同步的整体性能会产生不利的影响。
而RPKI体系中的文件的尺寸通常比较小。图2为本发明实施例的RPKI文件尺寸分布图。经统计,在上述资料库的47763个文件中文件尺寸分布图如图2所示。从分布比例可以看出,文件大小在2K字节以内的文件数量占总文件数的93%。这些文件按照发布点的不同,组织在不同的目录中。另外,RPKI体系中的文件是数字签名对象,签名对象的内容包含文件的语义内容和该语义内容的哈希值(即上述校验值)。由于文件语义内容的哈希值和文件语义内容之间的强关联性,因此当文件语义内容发生变化时,即使是细微的改变,哈希值也将彻底改变,结果整个签名对象的内容也会彻底的改变,即使将文件分块,也不存在签名对象局部更新的情况。
因此,在本发明实施例中,文件无需分块。这样一方面减少了读取文件划分文件块时的性能消耗,另一方面在同步时也不会传输过多的协议数据。
本实施例的具体实现过程如下:
RP端会实时性的或周期性的发起文件同步请求,同步RPKI资料库中的文件;所述文件同步请求包括RP端目录对应的第一有序哈希树。
当接收到RP端发送的文件同步请求后,需要获取RPKI资料库中目录对应的第二有序哈希树。
图3为本发明方法实施例中目录转化有序哈希树的示意图。第一有序哈希树和第二有序哈希树是将文件目录转化成有序哈希树进行表示,为了便于比较。如图3所示,左边为文件目录,右边为转化后的有序哈希树。树节点RPKI为该有序哈希树的根节点,树节点ISP1为根节点的头子节点,树节点ISP2为ISP1的后继兄弟节点。树节点ISP1的相对路径为RPKI/ISP1,树节点ISP2的相对路径为RPKI/ISP2。
遍历所述第一有序哈希树以及所述第二有序哈希树,根据所述第一有序哈希树和所述第二有序哈希树中树节点的信息,确定所述RP端需同步的文件。通过一一比对第一有序哈希树和第二有序哈希树的树节点,比较两颗哈希树的同一相对路径下的树节点是否相同,可以通过比较树节点的哈希值是否相同,从而判断树节点是否相同。
图4A为本发明方法实施例的第一有序哈希树示意图。图4B为本发明方法实施例的第二有序哈希树示意图。
具体来说,如图4A、4B所示,假设图4A所示的有序哈希树为RP端目录对应的第一有序哈希树,图4B所示的有序哈希树为资料库目录对应的第二有序哈希树,遍历第一有序哈希树以及第二有序哈希树,即首先比较树节点A和树节点A’,若树节点A和树节点A’的哈希值不同,然后比较树节点B和树节点B’,若树节点B和树节点B’的哈希值相同,则继续比较树节点C和树节点C’,进一步去确定是哪两个树节点不同;若树节点B和树节点B’的哈希值不同,则继续比较树节点D和树节点D’(即进行递归遍历),进一步去确定是哪两个树节点不同,比较完树节点D和树节点D’,再比较树节点E和树节点E’;若树节点A和树节点A’的哈希值相同,则说明RPKI资料库中和RP端的文件相同,无需同步。
本发明不仅缩短了RPKI资料库和RP端同步的时间,而且减少了同步时传输的数据量。
本实施例提供的RPKI文件的同步方法,在同步时,首先获取到RP端目录对应的第一有序哈希树以及RPKI资料库中目录对应的第二有序哈希树;然后遍历所述第一有序哈希树以及所述第二有序哈希树,根据所述第一有序哈希树和所述第二有序哈希树中树节点的信息,确定所述RP端需同步的文件,与现有技术相比,无需读取数量庞大的文件,也无需将文件进行分块,直接获取目录对应的有序哈希树,遍历有序哈希树的树节点,比现有的分块处理能够更直接快速的查找到需同步的文件,同步数据时的效率较高,而且读取目录对应的有序哈希树比读取文件占用的I/O资源少的多。
在本发明RPKI文件的同步方法的另一实施例中,在图1所示的实施方式的基础上,进一步的,为了通过遍历有序哈希树,从而确定需同步的文件。因此在获取RPKI资料库中目录对应的第二有序哈希树之前,可以进行如下操作:
将所述目录的所有直属子目录以及所述直属子目录中的所有文件对应的树节点组成所述第二有序哈希树;
其中,所述第一有序哈希树和所述第二有序哈希树分别由树节点组成;所述树节点的信息包括:所述树节点的相对路径、所述树节点的哈希值、所述树节点的头子节点、所述树节点的后继兄弟节点;
所述文件对应的树节点的哈希值为所述文件修改时间和相对路径拼接后的字符串的哈希值;
所述直属子目录对应的树节点的哈希值为所述直属子目录中文件对应的树节点的哈希值依次进行拼接后的拼接结果的哈希值;
所述目录对应的树节点的哈希值为所述目录中的直属子目录对应的树节点的哈希值依次进行拼接后的拼接结果的哈希值。
具体来说,使用有序哈希树来管理RPKI文件的目录,能够高效快速地检测出RPKI资料库和RP端文件或目录的异同。其树节点可以用四元组<p,h,firstChild,nextSibling>表示,其中,p表示该树节点对应的文件或者目录的相对路径;h表示该树节点存储的哈希值,有序哈希树中文件节点的哈希值为文件的相对路径和文件的修改时间戳拼接后的字符串进行哈希运算的哈希值,目录节点的哈希值为其子节点(目录内所有文件对应的的文件节点)的哈希值拼接后进行哈希运算后的哈希值;fristChild表示该树节点的头子节点;nextSibling表示该树节点的后继兄弟节点。
有序哈希树的树结构体和树节点结构体分别如下所示:
有序哈希树的树结构体:
structTree
{structnode*root;
intnodeNumber;}
有序哈希树的树节点的结构体:
有序哈希树构建算法如下:
算法输入:RPKI资料库文件(目录)或RP端文件(目录)f;
算法输出:有序哈希树HT(f);
buildHT(f)
步骤1、令文件f的相对路径为p,为文件f创建有序哈希树的节点node=<p,NULL,NULL,NULL>,若f为目录,则进入步骤2;否则,假设文件的修改时间为t,拼接p和t,形成字符串l,文件f的哈希值为h=Hash(l),令node.hash=h,进入步骤4;
步骤2、若f是目录,对于其任意的直属子目录或文件f’,创建与f’对应的有序哈希树HT(f’)=buildHT(f’),进行如下处理:
步骤2.1、令节点node’=HT(f’).root,若node.firstChild=NULL,则node.firstChild=node’,进入2;若node.firstChild≠NULL,则记chNode=node.firstChild;
步骤2.2、设文件f’的相对路径为p’,若p’<chNode.p,则令node.firstChild=node’,node’.nextSibling=chNode,进入步骤2;
步骤2.3、若chNode.nextSibling=NULL,chNode.nextSibling=node’,进入2;否则令nextNode=chNode.nextSibling;
步骤2.4、若p’<chNode.p,则令chNode.nextSibling=node’,node’.nextSibling=nextNode;否则令chNode=nextNode,进入步骤2.3;
步骤3、对于节点node的所有子节点chNode,按顺序依次拼接chNode.hash,形成字符串s,node.hash=Hash(s);
步骤4、令HT(f).root=node,退出。
其中,记与文件(目录)f对应的有序哈希树为HT(f),记HT(f)的根节点为root。
下面以图3所示的哈希树将上述算法的原理进行详细阐述:
如图3所示,由于RPKI为目录则进入步骤2,建立HT(RPKI),RPKI为HT(RPKI)的根节点,对于其直属子目录ISP1创建与ISP1对应的有序哈希树HT(ISP1)=buildHT(ISP1),令树节点ISP1=HT(ISP1).root,由于RPKI.firstChild(此时为ISP1)≠NULL,则记树节点RPKI的头子节点chNode=ISP1,相对路径为p;
假设ISP2的相对路径为p’,由于p’>chNode.p,则令node.firstChild=chNode,chNode.nextSibling=ISP2;此时由于chNode.nextSibling=ISP2≠NULL,则头子节点的后继兄弟节点为nextNode=ISP2;若RPKI还有直属子目录,则再次执行该步骤进行比较排序,直到找到相对路径最小的直属子目录作为头子节点,根据同样的原理对其他的直属子目录进行按照相对路径大小进行排序,查找该头子节点的后继兄弟节点(相对路径大的作为后继兄弟节点),以及后继兄弟节点的后继兄弟节点,依此类推。
由HT的构建算法可知,对于文件而言,HT中对应节点的哈希值即为文件修改时间和路径拼接后的字符串的哈希值(步骤1);对于目录而言,则首先分别创建其直属子目录或子文件的对应的树节点(步骤2);然后将其直属子节点的哈希值依次进行拼接,并将拼接结果的哈希值作为其对应树节点的哈希值(步骤3)。
由于有序哈希树中子节点按照相对路径进行了排序(步骤2.2~2.4),因此只要目录的某个子文件内容或者目录结构发生变化,其对应的根节点的哈希值必然会发生变化。对于RP端来说,如果根节点root的哈希值发生变化,也就意味着RPKI资料库发生了变化;反之,如果哈希值未变化,那么RPKI资料库也没有发生变化。这也是本发明htsync能够快速检测RPKI资料库文件变化的原理。
在本发明中,RP端的目录对应的有序哈希树的建立方法同上,此处不再赘述。
图5A为本发明方法另一实施例的第二有序哈希树示意图。图5B为本发明方法另一实施例的第一有序哈希树示意图。图5C为图5B中经过同步后的第一有序哈希树示意图。
在上述的实施方式的基础上,在实际应用中,作为一种可实施的方式,遍历所述第一有序哈希树以及所述第二有序哈希树,根据所述第一有序哈希树和所述第二有序哈希树中树节点的信息,确定所述RP端需同步的文件,可以具体采用以下方式进行:
若所述树节点为根节点,则比较所述第一有序哈希树以及所述第二有序哈希树的根节点的哈希值;其中,所述第一有序哈希树和所述第二有序哈希树分别由树节点组成;所述树节点的信息包括:所述树节点的相对路径、所述树节点的哈希值、所述树节点的头子节点、所述树节点的后继兄弟节点;
若所述第一有序哈希树的根节点的哈希值与所述第二有序哈希树的根节点的哈希值不相等,则遍历所述第一有序哈希树以及所述第二有序哈希树除所述根节点之外的树节点,根据所述第一有序哈希树和所述第二有序哈希树中除所述根节点之外的树节点的相对路径和哈希值,确定所述RP端需同步的文件。
可选的,遍历所述第一有序哈希树以及所述第二有序哈希树除所述根节点之外的树节点,根据所述第一有序哈希树和所述第二有序哈希树中除所述根节点之外的树节点的相对路径和哈希值,确定所述RP端需同步的文件,可以具体采用以下方式进行:
比较所述第一有序哈希树和所述第二有序哈希树中所述树节点的相对路径;
若所述第二有序哈希树中所述树节点的相对路径小于所述第一有序哈希树中所述树节点的相对路径,则以所述第二有序哈希树中所述树节点为根节点形成第一子树,确定所述第一子树对应的文件为所述RP端需添加的文件,并将所述第一有序哈希树中所述树节点作为所述第一子树中根节点的后继兄弟节点形成新的第一有序哈希树,并遍历所述新的第一有序哈希树中所述第一子树中根节点和所述第二有序哈希树中所述第一子树中根节点的后继兄弟节点,根据所述新的第一有序哈希树中所述第一子树中根节点和所述第二有序哈希树中所述第一子树中根节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件;
若所述第二有序哈希树中所述树节点的相对路径大于所述第一有序哈希树中所述树节点的相对路径,则以所述第一有序哈希树中所述树节点为根节点形成第二子树,确定所述第二子树对应的文件为所述RP端需删除的文件,将所述第二子树的根节点的后继兄弟节点作为以所述根节点为后继兄弟节点的树节点的后继兄弟节点形成新的第一有序哈希树,并遍历所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点,根据所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的相对路径和哈希值,确定所述RP端需同步的文件;
若所述第二有序哈希树中所述树节点的相对路径等于所述第一有序哈希树中所述树节点的相对路径,则比较所述第二有序哈希树和所述第一有序哈希树中所述树节点的哈希值,根据所述哈希值确定所述RP端需同步的文件。
可选的,比较所述第二有序哈希树和所述第一有序哈希树中所述树节点的哈希值,根据所述哈希值确定所述RP端需同步的文件,可以具体采用以下方式进行:
若所述第二有序哈希树中所述树节点的哈希值与所述第一有序哈希树中所述树节点的哈希值相等,则遍历所述第一有序哈希树中所述树节点和所述第二有序哈希树中所述树节点的后继兄弟节点,根据所述第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件;
若所述第二有序哈希树中所述树节点的哈希值与所述第一有序哈希树中所述树节点的哈希值不相等,则以所述第二有序哈希树中所述树节点为根节点形成第三子树,以所述第一有序哈希树中所述树节点为根节点形成第四子树,遍历所述第三子树和所述第四子树除所述根节点之外的树节点,根据所述第三子树和所述第四子树中除所述根节点之外的树节点的相对路径和哈希值,确定所述RP端需同步的文件,并遍历所述第一有序哈希树中所述树节点和所述第二有序哈希树中所述树节点的后继兄弟节点,根据所述第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件。
具体来说,如图5A、5B所示,首先比较所述第一有序哈希树以及所述第二有序哈希树的根节点A和A’的哈希值,若哈希值相同,则说明RPKI资料库和RP端文件相同,无需同步,算法结束;若哈希值不同,则进一步遍历所述第一有序哈希树以及所述第二有序哈希树除所述根节点之外的树节点,根据所述第一有序哈希树和所述第二有序哈希树中除所述根节点之外的树节点的相对路径和哈希值,确定所述RP端需同步的文件。
由于第一有序哈希树和所述第二有序哈希树中根节点的头子节点分别为树节点C和树节点B’,因此比较所述第一有序哈希树和所述第二有序哈希树中树节点C和树节点B’的相对路径;若树节点B’的相对路径小于树节点C的相对路径,则以树节点B’为根节点形成第一子树,确定所述第一子树对应的文件为所述RP端需添加的文件;RPKI资料库端的设备将所述第一子树对应的文件发送给RP端,RP端同步后得到的新的第一有序哈希树如图5C所示;将树节点C作为树节点B’的后继兄弟节点,继续遍历所述第一有序哈希树中所述树节点B’的后继兄弟节点C和所述第二有序哈希树中所述树节点B’的后继兄弟节点C’,根据所述树节点B’的后继兄弟节点C和所述树节点B’的后继兄弟节点C’的相对路径和哈希值,确定所述RP端需同步的文件;
图6A为本发明方法又一实施例的第一有序哈希树示意图。图6B为本发明方法又一实施例的第二有序哈希树示意图。图6C为图6A中经过同步后的第一有序哈希树示意图。如图6A、6B所示,由于第一有序哈希树和所述第二有序哈希树中根节点的头子节点分别为树节点B和树节点C’,因此比较所述第一有序哈希树和所述第二有序哈希树中树节点B和树节点C’的相对路径;若所述第二有序哈希树中树节点C’的相对路径大于所述第一有序哈希树中树节点B的相对路径,则以所述第一有序哈希树中所述树节点B为根节点形成第二子树,确定所述第二子树对应的文件为所述RP端需删除的文件;将所述树节点B为根节点形成的第二子树删除后,将所述第二子树的根节点的后继兄弟节点作为原第一有序哈希树中以所述根节点为后继兄弟节点的树节点的后继兄弟节点,RP端新的第一有序哈希树如图6C所示;遍历所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点C’,根据所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点C’的相对路径和哈希值,确定所述RP端需同步的文件;
如图5A、5C所示,由于RP端已将以树节点B’为根节点形成的第一子树添加,因此进一步比较所述第一有序哈希树和所述第二有序哈希树中树节点C和树节点C’的相对路径;若所述第二有序哈希树中所述树节点C’的相对路径等于所述第一有序哈希树中所述树节点C的相对路径,则比较所述第二有序哈希树中所述树节点C’和所述第一有序哈希树中所述树节点C的哈希值,根据所述哈希值确定所述RP端需同步的文件。
具体来说,若所述第二有序哈希树中树节点C’的哈希值与所述第一有序哈希树中树节点C的哈希值相等,则遍历所述第一有序哈希树中所述树节点C和所述第二有序哈希树中树节点C’的后继兄弟节点,根据所述第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件,即重复执行上述方法步骤,进行递归遍历;
如图5A、5C所示,所述第二有序哈希树中所述树节点C’的哈希值与所述第一有序哈希树中所述树节点C的哈希值不相等,则以所述第二有序哈希树中所述树节点C’为根节点形成第三子树T3,以所述第一有序哈希树中所述树节点C为根节点形成第四子树T4,遍历所述第三子树T3和所述第四子树T4除所述根节点(C和C’)之外的树节点,根据所述第三子树T3和所述第四子树T4中除所述根节点之外的树节点的相对路径和哈希值,确定所述RP端需同步的文件,并遍历所述第一有序哈希树中所述树节点C和所述第二有序哈希树中所述树节点C’的后继兄弟节点,根据所述第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件,即重复执行上述方法步骤,进行递归遍历。
可选的,比较所述第一有序哈希树和所述第二有序哈希树中所述树节点的相对路径之前,还包括:
确定所述第一有序哈希树和所述第二有序哈希树中所述树节点为非空节点。
可选的,所述方法,还包括:
若所述第一有序哈希树中所述树节点为空节点,所述第二有序哈希树中所述树节点为非空节点,则以所述第二有序哈希树中所述树节点为根节点形成第五子树,确定所述第五子树对应的文件为所述RP端需添加的文件,并将所述第五子树中根节点作为所述第一有序哈希树中所述树节点形成新的第一有序哈希树,并遍历所述新的第一有序哈希树中所述树节点和所述第二有序哈希树中所述树节点的后继兄弟节点,根据所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件;
若所述第一有序哈希树中所述树节点为非空节点,所述第二有序哈希树中所述树节点为空节点,则以所述第一有序哈希树中所述树节点为根节点形成第六子树,确定所述第六子树对应的文件为所述RP端需删除的文件,并将所述第六子树中根节点的后继兄弟节点作为所述第一有序哈希树中以所述根节点为后继兄弟节点的树节点的后继兄弟节点形成新的第一有序哈希树,并遍历所述新的第一有序哈希树中所述树节点和所述第二有序哈希树中所述树节点的后继兄弟节点,根据所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件。
具体来说,如图5A、5B所示,在比较所述第一有序哈希树中所述树节点B和所述第二有序哈希树中所述树节点B’的相对路径之前,首先要确定所述树节点B和所述树节点B’为非空节点;若均为空节点,则继续递归遍历所述树节点B和所述树节点B’的后继兄弟节点,对该后继兄弟节点执行相同步骤;
若所述第一有序哈希树中所述树节点B为空节点,所述第二有序哈希树中所述树节点B’为非空节点,则以所述第二有序哈希树中所述树节点B’为根节点形成第五子树,确定所述第五子树对应的文件为所述RP端需添加的文件;并将该第五子树对应的文件发送给RP端,将该第五子树的根节点替换原树节点B;后续再递归遍历所述树节点B和所述树节点B’的后继兄弟节点;
若所述第一有序哈希树中所述树节点为非空节点,所述第二有序哈希树中所述树节点为空节点,则以所述第一有序哈希树中所述树节点为根节点形成第六子树,确定所述第六子树对应的文件为所述RP端需删除的文件,并将所述第六子树中根节点的后继兄弟节点作为所述第一有序哈希树中以所述根节点为后继兄弟节点的树节点的后继兄弟节点形成新的第一有序哈希树;后续再递归遍历所述树节点B和所述树节点B’的后继兄弟节点。
上述具体实施方式中,遍历所述第一有序哈希树以及所述第二有序哈希树,根据所述第一有序哈希树和所述第二有序哈希树中树节点的信息,具体是相对路径和哈希值,确定所述RP端需同步的文件,与现有技术相比,无需读取数量庞大的文件,也无需将文件进行分块,直接获取目录对应的有序哈希树,遍历有序哈希树的树节点,比现有的分块处理能够更直接快速的查找到需同步的文件,同步数据时的效率较高,而且读取目录对应的有序哈希树比读取文件占用的I/O资源少的多。
在本发明RPKI文件的同步方法另一实施例中,在上述实施方式的基础上,进一步的,对同步算法进行详细阐述:
算法输入:RPKI资料库有序哈希树HT,RP端有序哈希树HT’
算法输出:差异文件列表list
findDiff(HT,HT’)
步骤1、令list为HT和HT’比较所得的文件变化列表,root为HT的根节点,root’为HT’的根节点,若root.hash=root’.hash,进入步骤3,否则进入步骤2;
步骤2、令node=root.firstChild,node’=root’.firstChild,对node和node’进行步骤2.1~2.8的处理:
步骤2.1、若node、node’均为NULL,node=node.nextSibling,node’=node’.nextSibling,进入步骤2.1,进行步骤2.1~2.8的处理;
步骤2.2、若node=NULL并且node’≠NULL,则令subHT为HT’中根节点为node’的子树,执行子过程delete(subHT,list),node’=node’.nextSibling,进入步骤2.1,进行步骤2.1~2.8的处理;
步骤2.3、若node≠NULL并且node’=NULL,则令subHT为HT中根节点为node的子树,执行子过程add(subHT,list),node=node.nextSibling,进入步骤2.1,进行步骤2.1~2.8的处理;
步骤2.4、若node≠NULL并且node’≠NULL,且若node.p<node’.p,则令subHT为HT中根节点为node的子树,执行子过程add(subHT,list),node=node.nextSibling,进入步骤2.1,进行步骤2.1~2.8的处理;
步骤2.5、若node≠NULL并且node’≠NULL,且若node.p>node’.p,则令subHT为HT’中根节点为node’的子树,执行子过程delete(subHT,list),node’=node’.nextSibling,进入步骤2.1,进行步骤2.1~2.8的处理;
步骤2.6、若node≠NULL并且node’≠NULL,且若node.p=node’.p并且node.hash=node’.hash,则进入步骤2.8;
步骤2.7、若node≠NULL并且node’≠NULL,且若node.p=node’.p并且node.hash≠node’.hash,则令subHT为HT中根节点为node的子树,subHT’为HT’中根节点为node’的子树,执行子过程update(subHT,subHT’,list),进入步骤2.8;
步骤2.8、令node=node.nextSibling,node’=node’.nextSibling,进入步骤2.1,进行步骤2.1~2.8的处理。
步骤3、算法运行结束,返回list。
add(subHT,list)
步骤1)、令root为subHT的根节点,记文件f=root.p,添加文件列表list.push(f),令node=root.firstChild;
步骤2)、若node=NULL,则子过程结束,退出;若node≠NULL,则令subHT’为subHT中根节点为node的子树,执行子过程add(subHT’,list);
步骤3)、令node=node.nextSibling,重复执行步骤2)。
delete(subHT,list)
步骤1)、令root为subHT的根节点,令节点node=root.firstChild;
步骤2)、若node=NULL,则进入步骤4);若node≠NULL,则令subHT’为subHT中根节点为node的子树,执行子过程delete(subHT’,list);
步骤3)、令node=node.nextSibling,重复执行步骤2);
步骤4)、记文件f=root.p,删除文件列表list.puth(f),子过程执行完毕。
update(subHT,subHT’,list)
步骤1)、令root为subHT的根节点,root’为subHT’的根节点,令node=root.firstChild,node’=root’.firstChild,若node=NULL并且node’=NULL,则令nodeHT为subHT中根节点为node的子树,执行子过程add(nodeHT,list),令nodeHT’为subHT’中根节点为node’的子树,执行子过程delete(nodeHT’,list),子过程执行完毕,否则进入步骤2);
步骤2)、令list’=findDiff(subHT,subHT’),list.pushAll(list’),子过程执行完毕。
有序哈希树HT的比对算法findDiff由1个算法主控流程和3个子过程组成,3个子过程分别对应文件的创建、删除和修改,而修改由删除旧文件和创建新文件两个操作组成,算法的主控流程和子过程之间通过递归调用完成了RPKI资料库有序哈希树和RP端有序哈希树的遍历和比对,两棵哈希树最多遍历一次就可以完成比对过程。
总体上,比对流程分为两个步骤。第一步,比对两个树节点的相对路径,如果路径不同,说明RPKI资料库和RP端的文件(目录)结构不同,则在RP端执行相应地创建或者删除文件(目录)操作。同理,如果比对时发现有NULL节点,也说明了文件(目录)结构不一致,同样在RP端执行文件(目录)的创建或删除;如果两个节点的相对路径一致,那么进行第二步的比对,比较两者的哈希值。如果哈希值一致,说明两个节点代表的文件(目录)相同,算法进行下一组节点比对,反之如果哈希值不一致,则找到了RPKI资料库和RP端文件(目录)的不同,如果该节点表示文件,那么在RP端将旧文件删除然后创建新文件并同步,而如果该节点表示目录,则递归调用findDiff算法,进一步确定变化的节点。由于有序哈希树的节点包含了RPKI文件(目录)的特征信息,即文件(目录)的修改时间戳和路径信息,因此通过哈希值的比较就可以快速找到变化的节点,并且跳过没有变化的节点,从而提高了比对速度。
假设RPKI资料库和RP端的目录层次为H,每个目录平均包含的文件(子目录)数目为N。如果RPKI资料库中的一个文件发生变化,那么使用findDiff算法发现该变化的文件的时间复杂度为O(H×N),由于是多项式时间复杂度,因此在RPKI资料库文件数目增大时,该算法的优势更为明显,具有较好的适应性。
图7为本发明RPKI文件的同步装置一实施例的结构示意图。如图7所示,本实施例的RPKI文件的同步装置,可以包括:接收模块701、获取模块702和处理模块703;
其中,接收模块701,用于接收RP端发送的文件同步请求,所述文件同步请求包括RP端目录对应的第一有序哈希树;
获取模块702,用于获取RPKI资料库中目录对应的第二有序哈希树;其中,所述第一有序哈希树和所述第二有序哈希树分别由树节点组成;
处理模块703,用于遍历所述第一有序哈希树以及所述第二有序哈希树,根据所述第一有序哈希树和所述第二有序哈希树中树节点的信息,确定所述RP端需同步的文件。
可选的,作为一种可实施的方式,获取模块702,具体用于:
将所述目录的所有直属子目录以及所述直属子目录中的所有文件对应的树节点组成所述第二有序哈希树;
其中,所述树节点的信息包括:所述树节点的相对路径、所述树节点的哈希值、所述树节点的头子节点、所述树节点的后继兄弟节点;
所述文件对应的树节点的哈希值为所述文件修改时间和相对路径拼接后的字符串的哈希值;
所述直属子目录对应的树节点的哈希值为所述直属子目录中文件对应的树节点的哈希值依次进行拼接后的拼接结果的哈希值;
所述目录对应的树节点的哈希值为所述目录中的直属子目录对应的树节点的哈希值依次进行拼接后的拼接结果的哈希值
所述处理模块703,具体用于:
若所述树节点为根节点,则比较所述第一有序哈希树以及所述第二有序哈希树的根节点的哈希值;其中,所述树节点的信息包括:所述树节点的相对路径、所述树节点的哈希值、所述树节点的头子节点、所述树节点的后继兄弟节点;
若所述第一有序哈希树的根节点的哈希值与所述第二有序哈希树的根节点的哈希值不相等,则遍历所述第一有序哈希树以及所述第二有序哈希树除所述根节点之外的树节点,根据所述第一有序哈希树和所述第二有序哈希树中除所述根节点之外的树节点的相对路径和哈希值,确定所述RP端需同步的文件。
可选的,作为一种可实施的方式,所述处理模块703,具体用于:
比较所述第一有序哈希树和所述第二有序哈希树中所述树节点的相对路径;
若所述第二有序哈希树中所述树节点的相对路径小于所述第一有序哈希树中所述树节点的相对路径,则以所述第二有序哈希树中所述树节点为根节点形成第一子树,确定所述第一子树对应的文件为所述RP端需添加的文件,并将所述第一有序哈希树中所述树节点作为所述第一子树中根节点的后继兄弟节点形成新的第一有序哈希树,并遍历所述新的第一有序哈希树中所述第一子树中根节点和所述第二有序哈希树中所述第一子树中根节点的后继兄弟节点,根据所述新的第一有序哈希树中所述第一子树中根节点和所述第二有序哈希树中所述第一子树中根节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件;
若所述第二有序哈希树中所述树节点的相对路径大于所述第一有序哈希树中所述树节点的相对路径,则以所述第一有序哈希树中所述树节点为根节点形成第二子树,确定所述第二子树对应的文件为所述RP端需删除的文件,将所述第二子树的根节点的后继兄弟节点作为以所述根节点为后继兄弟节点的树节点的后继兄弟节点形成新的第一有序哈希树,并遍历所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点,根据所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的相对路径和哈希值,确定所述RP端需同步的文件;
若所述第二有序哈希树中所述树节点的相对路径等于所述第一有序哈希树中所述树节点的相对路径,则比较所述第二有序哈希树和所述第一有序哈希树中所述树节点的哈希值,根据所述哈希值确定所述RP端需同步的文件。
可选的,作为一种可实施的方式,所述处理模块703,具体用于:
若所述第二有序哈希树中所述树节点的哈希值与所述第一有序哈希树中所述树节点的哈希值相等,则遍历所述第一有序哈希树中所述树节点和所述第二有序哈希树中所述树节点的后继兄弟节点,根据所述第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件;
若所述第二有序哈希树中所述树节点的哈希值与所述第一有序哈希树中所述树节点的哈希值不相等,则以所述第二有序哈希树中所述树节点为根节点形成第三子树,以所述第一有序哈希树中所述树节点为根节点形成第四子树,遍历所述第三子树和所述第四子树除所述根节点之外的树节点,根据所述第三子树和所述第四子树中除所述根节点之外的树节点的相对路径和哈希值,确定所述RP端需同步的文件,并遍历所述第一有序哈希树中所述树节点和所述第二有序哈希树中所述树节点的后继兄弟节点,根据所述第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件。
可选的,作为一种可实施的方式,所述处理模块703,还具体用于:
确定所述第一有序哈希树和所述第二有序哈希树中所述树节点为非空节点。
可选的,作为一种可实施的方式,所述处理模块703,还具体用于:
若所述第一有序哈希树中所述树节点为空节点,所述第二有序哈希树中所述树节点为非空节点,则以所述第二有序哈希树中所述树节点为根节点形成第五子树,确定所述第五子树对应的文件为所述RP端需添加的文件,并将所述第五子树中根节点作为所述第一有序哈希树中所述树节点形成新的第一有序哈希树,并遍历所述新的第一有序哈希树中所述树节点和所述第二有序哈希树中所述树节点的后继兄弟节点,根据所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件;
若所述第一有序哈希树中所述树节点为非空节点,所述第二有序哈希树中所述树节点为空节点,则以所述第一有序哈希树中所述树节点为根节点形成第六子树,确定所述第六子树对应的文件为所述RP端需删除的文件,并将所述第六子树中根节点的后继兄弟节点作为所述第一有序哈希树中以所述根节点为后继兄弟节点的树节点的后继兄弟节点形成新的第一有序哈希树,并遍历所述新的第一有序哈希树中所述树节点和所述第二有序哈希树中所述树节点的后继兄弟节点,根据所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件。
需要说明的是,对于装置实施例而言,由于其基本相应于方法实施例,所以相关之处参见方法实施例的部分说明即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元或模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种RPKI文件的同步方法,其特征在于,包括:
接收依赖方RP端发送的文件同步请求,所述文件同步请求包括RP端目录对应的第一有序哈希树;
获取资源公钥证书体系RPKI资料库中目录对应的第二有序哈希树;其中,所述第一有序哈希树和所述第二有序哈希树分别由树节点组成;
遍历所述第一有序哈希树以及所述第二有序哈希树,根据所述第一有序哈希树和所述第二有序哈希树中树节点的信息,确定所述RP端需同步的文件。
2.根据权利要求1所述的方法,其特征在于,所述获取资源公钥证书体系RPKI资料库中目录对应的第二有序哈希树之前,还包括:
将所述目录的所有直属子目录以及所述直属子目录中的所有文件对应的树节点组成所述第二有序哈希树;
其中,所述树节点的信息包括:所述树节点的相对路径、所述树节点的哈希值、所述树节点的头子节点、所述树节点的后继兄弟节点;
所述文件对应的树节点的哈希值为所述文件修改时间和相对路径拼接后的字符串的哈希值;
所述直属子目录对应的树节点的哈希值为所述直属子目录中文件对应的树节点的哈希值依次进行拼接后的拼接结果的哈希值;
所述目录对应的树节点的哈希值为所述目录中的直属子目录对应的树节点的哈希值依次进行拼接后的拼接结果的哈希值。
3.根据权利要求1或2所述的方法,其特征在于,所述遍历所述第一有序哈希树以及所述第二有序哈希树,根据所述第一有序哈希树和所述第二有序哈希树中树节点的信息,确定所述RP端需同步的文件,包括:
若所述树节点为根节点,则比较所述第一有序哈希树以及所述第二有序哈希树的根节点的哈希值;其中,所述树节点的信息包括:所述树节点的相对路径、所述树节点的哈希值、所述树节点的头子节点、所述树节点的后继兄弟节点;
若所述第一有序哈希树的根节点的哈希值与所述第二有序哈希树的根节点的哈希值不相等,则遍历所述第一有序哈希树以及所述第二有序哈希树除所述根节点之外的树节点,根据所述第一有序哈希树和所述第二有序哈希树中除所述根节点之外的树节点的相对路径和哈希值,确定所述RP端需同步的文件。
4.根据权利要求3所述的方法,其特征在于,所述遍历所述第一有序哈希树以及所述第二有序哈希树除所述根节点之外的树节点,根据所述第一有序哈希树和所述第二有序哈希树中除所述根节点之外的树节点的相对路径和哈希值,确定所述RP端需同步的文件,包括:
比较所述第一有序哈希树和所述第二有序哈希树中所述树节点的相对路径;
若所述第二有序哈希树中所述树节点的相对路径小于所述第一有序哈希树中所述树节点的相对路径,则以所述第二有序哈希树中所述树节点为根节点形成第一子树,确定所述第一子树对应的文件为所述RP端需添加的文件,并将所述第一有序哈希树中所述树节点作为所述第一子树中根节点的后继兄弟节点形成新的第一有序哈希树,并遍历所述新的第一有序哈希树中所述第一子树中根节点和所述第二有序哈希树中所述第一子树中根节点的后继兄弟节点,根据所述新的第一有序哈希树中所述第一子树中根节点和所述第二有序哈希树中所述第一子树中根节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件;
若所述第二有序哈希树中所述树节点的相对路径大于所述第一有序哈希树中所述树节点的相对路径,则以所述第一有序哈希树中所述树节点为根节点形成第二子树,确定所述第二子树对应的文件为所述RP端需删除的文件,将所述第二子树的根节点的后继兄弟节点作为以所述根节点为后继兄弟节点的树节点的后继兄弟节点形成新的第一有序哈希树,并遍历所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点,根据所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的相对路径和哈希值,确定所述RP端需同步的文件;
若所述第二有序哈希树中所述树节点的相对路径等于所述第一有序哈希树中所述树节点的相对路径,则比较所述第二有序哈希树和所述第一有序哈希树中所述树节点的哈希值,根据所述哈希值确定所述RP端需同步的文件。
5.根据权利要求4所述的方法,其特征在于,所述比较所述第二有序哈希树和所述第一有序哈希树中所述树节点的哈希值,根据所述哈希值确定所述RP端需同步的文件,包括:
若所述第二有序哈希树中所述树节点的哈希值与所述第一有序哈希树中所述树节点的哈希值相等,则遍历所述第一有序哈希树中所述树节点和所述第二有序哈希树中所述树节点的后继兄弟节点,根据所述第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件;
若所述第二有序哈希树中所述树节点的哈希值与所述第一有序哈希树中所述树节点的哈希值不相等,则以所述第二有序哈希树中所述树节点为根节点形成第三子树,以所述第一有序哈希树中所述树节点为根节点形成第四子树,遍历所述第三子树和所述第四子树除所述根节点之外的树节点,根据所述第三子树和所述第四子树中除所述根节点之外的树节点的相对路径和哈希值,确定所述RP端需同步的文件,并遍历所述第一有序哈希树中所述树节点和所述第二有序哈希树中所述树节点的后继兄弟节点,根据所述第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件。
6.根据权利要求5所述的方法,其特征在于,比较所述第一有序哈希树和所述第二有序哈希树中所述树节点的相对路径之前,还包括:
确定所述第一有序哈希树和所述第二有序哈希树中所述树节点为非空节点。
7.根据权利要求6所述的方法,其特征在于,还包括:
若所述第一有序哈希树中所述树节点为空节点,所述第二有序哈希树中所述树节点为非空节点,则以所述第二有序哈希树中所述树节点为根节点形成第五子树,确定所述第五子树对应的文件为所述RP端需添加的文件,并将所述第五子树中根节点作为所述第一有序哈希树中所述树节点形成新的第一有序哈希树,并遍历所述新的第一有序哈希树中所述树节点和所述第二有序哈希树中所述树节点的后继兄弟节点,根据所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件;
若所述第一有序哈希树中所述树节点为非空节点,所述第二有序哈希树中所述树节点为空节点,则以所述第一有序哈希树中所述树节点为根节点形成第六子树,确定所述第六子树对应的文件为所述RP端需删除的文件,并将所述第六子树中根节点的后继兄弟节点作为所述第一有序哈希树中以所述根节点为后继兄弟节点的树节点的后继兄弟节点形成新的第一有序哈希树,并遍历所述新的第一有序哈希树中所述树节点和所述第二有序哈希树中所述树节点的后继兄弟节点,根据所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件。
8.一种RPKI文件的同步装置,其特征在于,包括:
接收模块,用于接收依赖方RP端发送的文件同步请求,所述文件同步请求包括RP端目录对应的第一有序哈希树;
获取模块,用于获取资源公钥证书体系RPKI资料库中目录对应的第二有序哈希树;其中,所述第一有序哈希树和所述第二有序哈希树分别由树节点组成;
处理模块,用于遍历所述第一有序哈希树以及所述第二有序哈希树,根据所述第一有序哈希树和所述第二有序哈希树中树节点的信息,确定所述RP端需同步的文件。
9.根据权利要求8所述的装置,其特征在于,所述处理模块,具体用于:
若所述树节点为根节点,则比较所述第一有序哈希树以及所述第二有序哈希树的根节点的哈希值;其中,所述树节点的信息包括:所述树节点的相对路径、所述树节点的哈希值、所述树节点的头子节点、所述树节点的后继兄弟节点;
若所述第一有序哈希树的根节点的哈希值与所述第二有序哈希树的根节点的哈希值不相等,则遍历所述第一有序哈希树以及所述第二有序哈希树除所述根节点之外的树节点,根据所述第一有序哈希树和所述第二有序哈希树中除所述根节点之外的树节点的相对路径和哈希值,确定所述RP端需同步的文件。
10.根据权利要求9所述的装置,其特征在于,所述处理模块,具体用于:
比较所述第一有序哈希树和所述第二有序哈希树中所述树节点的相对路径;
若所述第二有序哈希树中所述树节点的相对路径小于所述第一有序哈希树中所述树节点的相对路径,则以所述第二有序哈希树中所述树节点为根节点形成第一子树,确定所述第一子树对应的文件为所述RP端需添加的文件,并将所述第一有序哈希树中所述树节点作为所述第一子树中根节点的后继兄弟节点形成新的第一有序哈希树,并遍历所述新的第一有序哈希树中所述第一子树中根节点和所述第二有序哈希树中所述第一子树中根节点的后继兄弟节点,根据所述新的第一有序哈希树中所述第一子树中根节点和所述第二有序哈希树中所述第一子树中根节点的后继兄弟节点的相对路径和哈希值,确定所述RP端需同步的文件;
若所述第二有序哈希树中所述树节点的相对路径大于所述第一有序哈希树中所述树节点的相对路径,则以所述第一有序哈希树中所述树节点为根节点形成第二子树,确定所述第二子树对应的文件为所述RP端需删除的文件,将所述第二子树的根节点的后继兄弟节点作为以所述根节点为后继兄弟节点的树节点的后继兄弟节点形成新的第一有序哈希树,并遍历所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点,根据所述新的第一有序哈希树中所述树节点的后继兄弟节点和所述第二有序哈希树中所述树节点的相对路径和哈希值,确定所述RP端需同步的文件;
若所述第二有序哈希树中所述树节点的相对路径等于所述第一有序哈希树中所述树节点的相对路径,则比较所述第二有序哈希树和所述第一有序哈希树中所述树节点的哈希值,根据所述哈希值确定所述RP端需同步的文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510507607.3A CN105141681B (zh) | 2015-08-18 | 2015-08-18 | Rpki文件的同步方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510507607.3A CN105141681B (zh) | 2015-08-18 | 2015-08-18 | Rpki文件的同步方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105141681A true CN105141681A (zh) | 2015-12-09 |
CN105141681B CN105141681B (zh) | 2018-07-31 |
Family
ID=54726884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510507607.3A Active CN105141681B (zh) | 2015-08-18 | 2015-08-18 | Rpki文件的同步方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105141681B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105634721A (zh) * | 2015-12-23 | 2016-06-01 | 中国互联网络信息中心 | 一种rpki数据仓库增量同步方法 |
CN106790648A (zh) * | 2017-01-15 | 2017-05-31 | 网宿科技股份有限公司 | 一种任务数据同步的方法和系统 |
CN109117420A (zh) * | 2017-06-23 | 2019-01-01 | 百度在线网络技术(北京)有限公司 | 操作日志记录方法和装置 |
CN110109920A (zh) * | 2019-03-19 | 2019-08-09 | 咪咕文化科技有限公司 | 数据比对方法及服务器 |
CN111597146A (zh) * | 2020-05-20 | 2020-08-28 | 浙江大华技术股份有限公司 | 视频文件处理方法及装置、存储介质、电子装置 |
CN115001697A (zh) * | 2022-04-26 | 2022-09-02 | 互联网域名系统北京市工程研究中心有限公司 | 基于rpki的证书链局部验证方法、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693302A (zh) * | 2012-05-21 | 2012-09-26 | 浙江省公众信息产业有限公司 | 快速文件比对方法、系统及客户端 |
CN102790760A (zh) * | 2012-05-31 | 2012-11-21 | 清华大学 | 安全网盘系统中一种基于目录树的数据同步方法 |
CN103812912A (zh) * | 2012-11-14 | 2014-05-21 | 北京慧点科技股份有限公司 | 一种维护组织结构信息的方法及装置 |
-
2015
- 2015-08-18 CN CN201510507607.3A patent/CN105141681B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693302A (zh) * | 2012-05-21 | 2012-09-26 | 浙江省公众信息产业有限公司 | 快速文件比对方法、系统及客户端 |
CN102790760A (zh) * | 2012-05-31 | 2012-11-21 | 清华大学 | 安全网盘系统中一种基于目录树的数据同步方法 |
CN103812912A (zh) * | 2012-11-14 | 2014-05-21 | 北京慧点科技股份有限公司 | 一种维护组织结构信息的方法及装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105634721A (zh) * | 2015-12-23 | 2016-06-01 | 中国互联网络信息中心 | 一种rpki数据仓库增量同步方法 |
CN105634721B (zh) * | 2015-12-23 | 2019-06-25 | 中国互联网络信息中心 | 一种rpki数据仓库增量同步方法 |
CN106790648A (zh) * | 2017-01-15 | 2017-05-31 | 网宿科技股份有限公司 | 一种任务数据同步的方法和系统 |
CN109117420A (zh) * | 2017-06-23 | 2019-01-01 | 百度在线网络技术(北京)有限公司 | 操作日志记录方法和装置 |
CN110109920A (zh) * | 2019-03-19 | 2019-08-09 | 咪咕文化科技有限公司 | 数据比对方法及服务器 |
CN110109920B (zh) * | 2019-03-19 | 2022-03-22 | 咪咕文化科技有限公司 | 数据比对方法及服务器 |
CN111597146A (zh) * | 2020-05-20 | 2020-08-28 | 浙江大华技术股份有限公司 | 视频文件处理方法及装置、存储介质、电子装置 |
CN111597146B (zh) * | 2020-05-20 | 2023-04-07 | 浙江大华技术股份有限公司 | 视频文件处理方法及装置、存储介质、电子装置 |
CN115001697A (zh) * | 2022-04-26 | 2022-09-02 | 互联网域名系统北京市工程研究中心有限公司 | 基于rpki的证书链局部验证方法、系统及存储介质 |
CN115001697B (zh) * | 2022-04-26 | 2024-04-02 | 互联网域名系统北京市工程研究中心有限公司 | 基于rpki的证书链局部验证方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105141681B (zh) | 2018-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105141681A (zh) | Rpki文件的同步方法及装置 | |
JP6830549B2 (ja) | ブロックチェーンのワールドステートマークルパトリシアトライ(world state merkle patricia trie)サブツ | |
JP2020530213A (ja) | ブロックチェーンワールド状態マークルパトリシアトライ木サブツリーの構築 | |
CN104283723B (zh) | 网络访问日志处理方法及装置 | |
CN105701096A (zh) | 索引生成方法、数据查询方法、装置及系统 | |
CN106372221A (zh) | 一种文件同步的方法、设备及系统 | |
CN101184091B (zh) | 一种确定相似文件的方法及装置 | |
CN109766389B (zh) | 一种基于位图索引的区块链轻客户端验证查询方法 | |
CN104346365A (zh) | 确定与特定业务相关的关联日志的方法和装置 | |
CN113726873B (zh) | 基于区块链的文件处理方法、系统、设备和存储介质 | |
JP2017107556A (ja) | コンテンツ指向ネットワーク内のキーカタログ | |
WO2022095574A1 (zh) | 一种基于区块链的资源共享的方法及装置 | |
CN108710681A (zh) | 文件获取方法、装置、设备及存储介质 | |
Hayes et al. | The forgiving graph: a distributed data structure for low stretch under adversarial attack | |
CN104539578B (zh) | 一种rpki数据的主动同步方法和系统 | |
CN104079623A (zh) | 多级云存储同步控制方法及系统 | |
CN110597922A (zh) | 数据处理方法、装置、终端及存储介质 | |
CN114281893A (zh) | 一种区块链交易的处理方法、装置及设备 | |
CN107391650B (zh) | 一种文档的结构化拆分方法,装置及系统 | |
CN106681795B (zh) | 节点局部拓扑和可利用资源容量的虚拟网络映射方法 | |
CN105491094B (zh) | 处理http请求的方法及装置 | |
CN106878171B (zh) | 一种用于多数据源的流式数据处理方法及装置 | |
CN102638569B (zh) | 一种文件分发同步方法及系统 | |
CN111563083A (zh) | 报表数据查询方法、装置及系统 | |
CN112003736B (zh) | 一种多节点配置信息确定方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20181031 Address after: 101408 D9, No. 88, Yang Yan Road, Yan Qi Economic Development Zone, Huairou, Beijing. Patentee after: INTERNET DOMAIN NAME SYSTEM BEIJING ENGINEERING RESEARCH CENTER LLC Address before: 100190 two floor, 1 building, software park, Chinese Academy of Sciences, four Zhongguancun South four street, Haidian District, Beijing. Patentee before: Beilong Knet (Beijing) Technology Co., Ltd. |
|
TR01 | Transfer of patent right |