DHT网络的搜索技术解析课件_第1页
DHT网络的搜索技术解析课件_第2页
DHT网络的搜索技术解析课件_第3页
DHT网络的搜索技术解析课件_第4页
DHT网络的搜索技术解析课件_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DHT网络的搜索技术哈尔滨理工大学网络信息中心

姚亮DHT网络的搜索技术哈尔滨理工大学网络信息中心

1P2P网络的分类Hash函数概述DHT原理几种典型的DHT网络总结主要内容主要内容21.P2P网络分类非结构化P2P网络拓扑是任意的内容的存储位置与网络拓扑无关结构化P2P网络拓扑结构是有规律的每个节点都随机生成一个标识(ID)内容的存储位置与网络拓扑相关内容的存储位置与节点标识之间存在着映射关系1.P2P网络分类非结构化P2P3P2P网络分类在结构化P2P网络中,内容一般使用内容索引来表示,内容索引包括key和value两部分,其中key是内容的关键字,value是存放内容的实际位置,因此内容索引也表示为<key,value>对内容索引<夜宴,/yeyan.avi>表示电影夜宴可以从/yeyan.avi处获得P2P网络分类在结构化P2P网络中,内容一般使用内容索引来表42.Hash函数概述Hash函数可以根据给定的一段任意长的消息计算出一个固定长度的比特串,通常称为消息摘要(MD:MessageDigest),一般用于消息的完整性检验。Hash函数有以下特性:给定P,易于计算出MD(P)只给出MD(P),几乎无法找出P无法找到两条具有同样消息摘要的不同消息Hash函数MD5:消息摘要长度固定为128比特SHA-1:消息摘要长度固定为160比特2.Hash函数概述Hash函数可以根据给定的一段任意长的消5Hash函数应用于P2P的特性唯一性:不同的输入明文,对应着不同的输出摘要将节点IP地址的摘要作为节点ID,保证了节点ID在P2P环境下的唯一性SHA-1(“”)=24b92cb1d2b81a47472a93d06af3d85a42e463eaSHA-1(“”)=e1d9b25dee874b0c51db4c4ba7c9ae2b766fbf27Hash函数应用于P2P的特性唯一性:不同的输入明文,对应着63.DHT原理(1)将内容索引抽象为<K,V>对K是内容关键字的Hash摘要K=Hash(key)V是存放内容的实际位置,例如节点IP地址等所有的<K,V>对组成一张大的Hash表,因此该表存储了所有内容的信息每个节点都随机生成一个标识(ID),把Hash表分割成许多小块,按特定规则(即K和节点ID之间的映射关系)分布到网络中去,节点按这个规则在应用层上形成一个结构化的重叠网络给定查询内容的K值,可以根据K和节点ID之间的映射关系在重叠网络上找到相应的V值,从而获得存储文件的节点IP地址3.DHT原理(1)将内容索引抽象为<K,V>对7DHT原理(2)内容内容关键字key内容存储位置等信息value内容索引K=Hash(key)提取kvHash表电影夜宴电影、夜宴/yeyan.avi内容索引K=hash(电影,夜宴)V=/yeyan.aviDHT原理(2)内容内容关键字key内容存储位置等信息内容索8DHT原理(3)kva.Hash表b.分布式Hash表规则?KVN1N48N16N32N8KVKVKVKVChord、CAN、Tapestry、Pastry在许多情况下,节点ID为节点IP地址的Hash摘要DHT原理(3)kva.Hash表b.分布式Hash表9DHT原理(4)插入

(K1,V1)KVKVKVKVKVKVKVKVKVKVKV(K1,V1)查询(K1)ABK1=Hash(xyz.mp3)V1=xyz.mp3C索引发布和内容定位DHT原理(4)插入

(K1,V1)KVKVKV10DHT原理(5)定位(Locating)节点ID和其存放的<K,V>对中的K存在着映射关系,因此可以由K获得存放该<K,V>对的节点ID路由(Routing)在重叠网上根据节点ID进行路由,将查询消息最终发送到目的节点。每个节点需要有到其邻近节点的路由信息,包括节点ID、IP等网络拓扑拓扑结构由节点ID和其存放的<K,V>对中的K之间的映射关系决定拓扑动态变化,需要处理节点加入/退出/失效的情况在重叠网上节点始终由节点ID标识,并且根据ID进行路由DHT原理(5)定位(Locating)在重叠网上节点始终由114.Chord:概述Berkeley和MIT共同提出采用环形拓扑(Chord环)应用程序接口Insert(K,V)将<K,V>对存放到节点ID为Successor(K)上Lookup(K)根据K查询相应的VUpdate(K,new_V)根据K更新相应的VJoin(NID)节点加入Leave()节点主动退出4.Chord:概述Berkeley和MIT共同提出12Chord:Hash表分布规则Hash算法SHA-1Hash节点IP地址->m位节点ID(表示为NID)Hash内容关键字->m位K(表示为KID)节点按ID从小到大顺序排列在一个逻辑环上<K,V>存储在后继节点上Successor(K):从K开始顺时针方向距离K最近的节点ID=hash(IP)=14N56K=hash(key)=54N1N8N14N21N32N38N42N48N51m=6Chord:Hash表分布规则Hash算法SHA-1ID=h13Chord:简单查询过程每个节点仅维护其后继节点ID、IP地址等信息查询消息通过后继节点指针在圆环上传递直到查询消息中包含的K落在某节点ID和它的后继节点ID之间速度太慢O(N),N为网络中节点数N56K54Lookup(K54)N56N1N8N14N21N32N38N42N48N51m=6Chord:简单查询过程每个节点仅维护其后继节点ID、IP地14Chord:指针表N56指针表N8+1N8+2N8+4N8+8N8+16N8+32N14N14N14N21N32N42节点S的第i个指针successor[n+2^(i-1)],1≤i≤m

Chord:指针表N56指针表N8+1N8+2N8+4N8+15Chord:基于指针表的扩展查找过程指针表中有O(logN)个节点查询经过大约O(logN)跳N56K54指针表N8+1N8+2N8+4N8+8N8+16N8+32N14N14N14N21N32N42Lookup(K54)指针表N42+1N42+2N42+4N42+8N42+16N42+32N48N48N48N51N1N14Chord:基于指针表的扩展查找过程指针表中有O(log16Chord:网络波动(Churn)Churn由节点的加入、退出或者失效所引起每个节点都周期性地运行探测协议来检测新加入节点或退出/失效节点,从而更新自己的指针表和指向后继节点的指针Chord:网络波动(Churn)Churn由节点的加入、退17Chord:节点加入新节点N事先知道某个或者某些结点,并且通过这些节点初始化自己的指针表,也就是说,新节点N将要求已知的系统中某节点为它查找指针表中的各个表项在其它节点运行探测协议后,新节点N将被反映到相关节点的指针表和后继节点指针中新结点N的第一个后继结点将其维护的小于N节点的ID的所有K交给该节点维护;Chord:节点加入新节点N事先知道某个或者某些结点,并且通18Chord:节点退出/失效当Chord中某个结点M退出/失效时,所有在指针表中包含该结点的结点将相应指针指向大于M结点ID的第一个有效结点即节点M的后继节点为了保证节点M的退出/失效不影响系统中正在进行的查询过程,每个Chord节点都维护一张包括r个最近后继节点的后继列表。如果某个节点注意到它的后继节点失效了,它就用其后继列表中第一个正常节点替换失效节点Chord:节点退出/失效当Chord中某个结点M退出/失效19Chord:拓扑失配问题O(LogN)逻辑跳数,但是每一逻辑跳可能跨越多个自治域,甚至是多个国家的网络重叠网络与物理网络脱节实际的寻路时延较大Chord:拓扑失配问题O(LogN)逻辑跳数,但是每一逻辑20Chord:总结算法简单可扩展:查询过程的通信开销和节点维护的状态随着系统总节点数增加成对数关系(O(logN)数量级)存在拓扑失配问题Chord:总结算法简单21Pastry:概述英国剑桥Microsoft研究院和Rice大学共同提出考虑网络的本地性,解决物理网络和逻辑网络的拓扑失配的问题基于应用层定义的邻近性度量,例如IP路由跳数、地理距离、往返延时等节点ID分布采用环形结构Pastry:概述英国剑桥Microsoft研究院和Rice22Pastry:Hash表分布规则Hash算法SHA-1Hash节点IP地址->m位节点ID(表示为NID)Hash内容关键字->m位K(表示为KID)NID和KID是以2b为基的数,共有m/b个数位b是一个配置参数,一般为4节点按ID从小到大顺序排列在一个逻辑环上<K,V>存储在NID与KID数值最接近的节点上N0002N0201N0322N1331N1113N2120N2222N3001N3033N3200m=8K1320K1201K0220K2120K31222m-1 0b=2Pastry:Hash表分布规则Hash算法SHA-1N023Pastry:节点维护状态表(1)路由表R路由表包括log2bN(m/b)行,每行包括2b-1个表项路由表第n行与节点ID的前n个数位相同,但是第n+1个数位不同,也称为n数位前缀相同路由表中的每项包含节点ID,IP地址等根据邻近性度量选择距离本节点近的节点邻居节点集M邻居节点集包含|M|个在邻近性度量上最接近于本节点的节点,|M|为2b或者2X2b,邻近性度量指的是物理上相邻节点邻居节点集通常不用于路由查询消息,而是用来维护本地性叶子节点集L叶子节点集包含|L|个节点ID最接近本节点的节点,也就是逻辑地址上的相邻节点,其中|L|/2个节点的ID大于本节点,|L|/2个ID小于本节点,|L|为2b或者2X2b

Pastry:节点维护状态表(1)路由表R24Pastry:节点维护状态表(2)NodeID10233102LeafsetRoutingTableNeighborhoodset0022121021223012033120320311301233122302031302102221003120310132102103233023310222302102002301021130210230322102310001023212110233001102331201023323210213021022102002301130123331301233022121022230120331203203332133211023303310233021102331201023312210233001102330001023323010233232<SMALLERLARGER>节点ID最接近本节点的节点b=2,因此节点ID的基数为4(16bits)m/b行依据邻近性度量最接近本节点的节点每行2b-1个表项第n行的前n个数位与本节点相同[相同前缀下一数位其它]当前节点的第n个数位没有合适节点的表项为空b=2m=16Pastry:节点维护状态表(2)NodeID1023325Pastry:查询过程当一个K为D的查询消息到达节点A节点A首先看D是否在当前节点的叶子节点集中,如果是,则查询消息直接被转发到目的节点,也就是叶子节点集中节点ID与D数值最接近的那个节点(有可能就是当前节点),否则进行下一步在路由表中查找与D具有更长相同前缀的表项,如果该表项不为空,则将查询消息直接转发到该节点,否则进行下一步例如路由D=0629的查询消息5324→

0748→

0605→

0620→

0629如果不存在这样的节点,当前节点将会从其维护的所有邻居节点集合中选择一个距离该键值最接近的节点作为转发目标路由查询消息的逻辑跳数:O(log2bN)

Pastry:查询过程当一个K为D的查询消息到达节点A路由查26Pastry:节点状态表和查询节点路由表R中的每行与本节点具有相同的n数位长度前缀,但是下一个数位不同例如,对于节点N0201:

N-:N1???,N2???,N3???

N0:N00??,N01??,N03??

N02:N021?,N022?,N023?

N020:N0200,N0202,N0203当有多个节点时,根据邻近性度量选择最近的节点维持了较好的本地性N0002N0201N2001N1113N2120N2222N3001N3033N3200m=82m-1 0b=2N0122N0212N0221N0233RoutingtableK2120lookup(K2120)N0322Pastry:节点状态表和查询节点路由表R中的每行与本节点具272.2.4Pastry:节点加入(1)初始化状态表新节点开始时知道一个根据邻近性度量接近自己的节点A节点A可以通过使用扩展环IP组播等机制自动定位,或者由系统管理员通过其它手段获得新节点通过运行SHA-1算法计算自己的IP地址的摘要得到节点ID为X节点X向节点A发送join消息,Pastry将该消息路由到节点ID在数值上最接近X的节点Z接收到join消息的节点,包括A、Z,以及A到Z路径上所有的节点将发送它们的状态表给X,X检查这些信息,然后节点根据下面的过程初始化状态表:由于A与X在邻近性度量上接近,所以使用A的邻居节点集来初始化X的邻居节点集由于Z的节点ID与X最相近,因此使用Z的叶子节点集来初始化X的叶子节点集X将join消息经过的第i个节点的路由表的第i行作为自己路由表的第i行Join消息经过的第i个节点与X的前i个数位相同向其它相关节点通告自己的到来新节点向邻居节点集、叶子节点集和路由表中的每个节点发送自己的状态,以更新这些节点的状态表2.2.4Pastry:节点加入(1)初始化状态表282.2.4Pastry:节点加入(2)X0629节点加入Join消息A5324X知道A(A与X邻近)C0605Z0620B0748路由消息到节点ID在数值上最接近X的节点A邻居节点集Z的叶子节点集A0

—????B1

—0???C2

—06??Z4

—062?0629’sroutingtable2.2.4Pastry:节点加入(2)X节点加入Join消292.2.4Pastry:节点退出/失效叶子节点集L中的节点退出机制:本地节点要求当前叶子节点集合L中的ID最大的节点或ID最小的节点把它的叶子节点集合L1发送过来,如果L1中存在L中没有的节点,则从中选择一个替代失效节点.除非|L|/2个节点同时失效,否恢复过程始终是有效的失效检测:和叶子节点集中的节点周期性交互存活消息路由表R中的节点退出机制:如果失效节点对应的表项为Rdl(第l行第d列),则联系同一行中的Ril,id所指向的存活节点并且获取该节点的Rdl表项,如果l行中没有存活节点,则从下一行选择一个节点失效检测:和路由表中的节点联系(例如发送查询消息)如果无反应则检测到节点失效2.2.4Pastry:节点退出/失效叶子节点集L中的节点30Pastry:总结逻辑网络路由跳数O(log2bN)

路由表开销log2bN*(2b-1)路由本地性:状态表(路由表、邻居节点集、叶子节点集)中的表项选择在邻近性度量上与本节点相近的节点稳健性:只有在|L|/2个叶子节点完全失效时才会路由失败Pastry:总结逻辑网络路由跳数O(log2bN)31基于DHT的结构化P2P比较ChordPastry拓扑结构节点ID分布在单向环形空间节点ID分布在单向环形空间,并且表示为以2b为基的数<K,V>存储储存在K的后继节点即节点ID大于K的第一个节点上存储在节点ID与K最接近的节点上路由查询消息通过后继节点指针或者指针表找到K的后继节点比较K和节点ID的前缀,下一跳节点的ID具有更长的前缀或者在数值上更接近K节点维护状态后继节点指针或者指针表:O(logN)叶子节点集、邻居节点集:2b或者2*2b路由表:log2bN*(2b-1)路由性能O(logN)O(loglog2bN)稳健性维护r个最近的后继节点只有在|L|/2个叶子节点完全失效时才会路由失败路由本地性状态表(路由表、邻居节点集、叶子节点集)中表项选择在邻近性度量上与本节点相近的节点基于DHT的结构化P2P比较ChordPastry拓扑结构节325.总结

今天给大家介绍了结构化p2p网络中的几种搜索技术,对比较了他们的性能,其实本来想给大家介绍BiTtorrent的DHT算法---Kademlia协议原理,但目前有三个关键问题我还没有搞懂,目前还在研究中,再有就是它是一种改进了的DHT技术,所以一定要先介绍DHT,等搞明白了再和大家一起探讨,最后谢谢大家!5.总结

今天给大家介绍了结构化p2p网络中的几种搜索技术,33P2P重叠网P2P重叠网络构筑在已有的Internet基础设施网络之上,也称为应用层网络

返回InternetP2P网络

(overlayNetwork)P2P重叠网P2P重叠网络构筑在已有的Internet基础设34DHT网络的搜索技术哈尔滨理工大学网络信息中心

姚亮DHT网络的搜索技术哈尔滨理工大学网络信息中心

35P2P网络的分类Hash函数概述DHT原理几种典型的DHT网络总结主要内容主要内容361.P2P网络分类非结构化P2P网络拓扑是任意的内容的存储位置与网络拓扑无关结构化P2P网络拓扑结构是有规律的每个节点都随机生成一个标识(ID)内容的存储位置与网络拓扑相关内容的存储位置与节点标识之间存在着映射关系1.P2P网络分类非结构化P2P37P2P网络分类在结构化P2P网络中,内容一般使用内容索引来表示,内容索引包括key和value两部分,其中key是内容的关键字,value是存放内容的实际位置,因此内容索引也表示为<key,value>对内容索引<夜宴,/yeyan.avi>表示电影夜宴可以从/yeyan.avi处获得P2P网络分类在结构化P2P网络中,内容一般使用内容索引来表382.Hash函数概述Hash函数可以根据给定的一段任意长的消息计算出一个固定长度的比特串,通常称为消息摘要(MD:MessageDigest),一般用于消息的完整性检验。Hash函数有以下特性:给定P,易于计算出MD(P)只给出MD(P),几乎无法找出P无法找到两条具有同样消息摘要的不同消息Hash函数MD5:消息摘要长度固定为128比特SHA-1:消息摘要长度固定为160比特2.Hash函数概述Hash函数可以根据给定的一段任意长的消39Hash函数应用于P2P的特性唯一性:不同的输入明文,对应着不同的输出摘要将节点IP地址的摘要作为节点ID,保证了节点ID在P2P环境下的唯一性SHA-1(“”)=24b92cb1d2b81a47472a93d06af3d85a42e463eaSHA-1(“”)=e1d9b25dee874b0c51db4c4ba7c9ae2b766fbf27Hash函数应用于P2P的特性唯一性:不同的输入明文,对应着403.DHT原理(1)将内容索引抽象为<K,V>对K是内容关键字的Hash摘要K=Hash(key)V是存放内容的实际位置,例如节点IP地址等所有的<K,V>对组成一张大的Hash表,因此该表存储了所有内容的信息每个节点都随机生成一个标识(ID),把Hash表分割成许多小块,按特定规则(即K和节点ID之间的映射关系)分布到网络中去,节点按这个规则在应用层上形成一个结构化的重叠网络给定查询内容的K值,可以根据K和节点ID之间的映射关系在重叠网络上找到相应的V值,从而获得存储文件的节点IP地址3.DHT原理(1)将内容索引抽象为<K,V>对41DHT原理(2)内容内容关键字key内容存储位置等信息value内容索引K=Hash(key)提取kvHash表电影夜宴电影、夜宴/yeyan.avi内容索引K=hash(电影,夜宴)V=/yeyan.aviDHT原理(2)内容内容关键字key内容存储位置等信息内容索42DHT原理(3)kva.Hash表b.分布式Hash表规则?KVN1N48N16N32N8KVKVKVKVChord、CAN、Tapestry、Pastry在许多情况下,节点ID为节点IP地址的Hash摘要DHT原理(3)kva.Hash表b.分布式Hash表43DHT原理(4)插入

(K1,V1)KVKVKVKVKVKVKVKVKVKVKV(K1,V1)查询(K1)ABK1=Hash(xyz.mp3)V1=xyz.mp3C索引发布和内容定位DHT原理(4)插入

(K1,V1)KVKVKV44DHT原理(5)定位(Locating)节点ID和其存放的<K,V>对中的K存在着映射关系,因此可以由K获得存放该<K,V>对的节点ID路由(Routing)在重叠网上根据节点ID进行路由,将查询消息最终发送到目的节点。每个节点需要有到其邻近节点的路由信息,包括节点ID、IP等网络拓扑拓扑结构由节点ID和其存放的<K,V>对中的K之间的映射关系决定拓扑动态变化,需要处理节点加入/退出/失效的情况在重叠网上节点始终由节点ID标识,并且根据ID进行路由DHT原理(5)定位(Locating)在重叠网上节点始终由454.Chord:概述Berkeley和MIT共同提出采用环形拓扑(Chord环)应用程序接口Insert(K,V)将<K,V>对存放到节点ID为Successor(K)上Lookup(K)根据K查询相应的VUpdate(K,new_V)根据K更新相应的VJoin(NID)节点加入Leave()节点主动退出4.Chord:概述Berkeley和MIT共同提出46Chord:Hash表分布规则Hash算法SHA-1Hash节点IP地址->m位节点ID(表示为NID)Hash内容关键字->m位K(表示为KID)节点按ID从小到大顺序排列在一个逻辑环上<K,V>存储在后继节点上Successor(K):从K开始顺时针方向距离K最近的节点ID=hash(IP)=14N56K=hash(key)=54N1N8N14N21N32N38N42N48N51m=6Chord:Hash表分布规则Hash算法SHA-1ID=h47Chord:简单查询过程每个节点仅维护其后继节点ID、IP地址等信息查询消息通过后继节点指针在圆环上传递直到查询消息中包含的K落在某节点ID和它的后继节点ID之间速度太慢O(N),N为网络中节点数N56K54Lookup(K54)N56N1N8N14N21N32N38N42N48N51m=6Chord:简单查询过程每个节点仅维护其后继节点ID、IP地48Chord:指针表N56指针表N8+1N8+2N8+4N8+8N8+16N8+32N14N14N14N21N32N42节点S的第i个指针successor[n+2^(i-1)],1≤i≤m

Chord:指针表N56指针表N8+1N8+2N8+4N8+49Chord:基于指针表的扩展查找过程指针表中有O(logN)个节点查询经过大约O(logN)跳N56K54指针表N8+1N8+2N8+4N8+8N8+16N8+32N14N14N14N21N32N42Lookup(K54)指针表N42+1N42+2N42+4N42+8N42+16N42+32N48N48N48N51N1N14Chord:基于指针表的扩展查找过程指针表中有O(log50Chord:网络波动(Churn)Churn由节点的加入、退出或者失效所引起每个节点都周期性地运行探测协议来检测新加入节点或退出/失效节点,从而更新自己的指针表和指向后继节点的指针Chord:网络波动(Churn)Churn由节点的加入、退51Chord:节点加入新节点N事先知道某个或者某些结点,并且通过这些节点初始化自己的指针表,也就是说,新节点N将要求已知的系统中某节点为它查找指针表中的各个表项在其它节点运行探测协议后,新节点N将被反映到相关节点的指针表和后继节点指针中新结点N的第一个后继结点将其维护的小于N节点的ID的所有K交给该节点维护;Chord:节点加入新节点N事先知道某个或者某些结点,并且通52Chord:节点退出/失效当Chord中某个结点M退出/失效时,所有在指针表中包含该结点的结点将相应指针指向大于M结点ID的第一个有效结点即节点M的后继节点为了保证节点M的退出/失效不影响系统中正在进行的查询过程,每个Chord节点都维护一张包括r个最近后继节点的后继列表。如果某个节点注意到它的后继节点失效了,它就用其后继列表中第一个正常节点替换失效节点Chord:节点退出/失效当Chord中某个结点M退出/失效53Chord:拓扑失配问题O(LogN)逻辑跳数,但是每一逻辑跳可能跨越多个自治域,甚至是多个国家的网络重叠网络与物理网络脱节实际的寻路时延较大Chord:拓扑失配问题O(LogN)逻辑跳数,但是每一逻辑54Chord:总结算法简单可扩展:查询过程的通信开销和节点维护的状态随着系统总节点数增加成对数关系(O(logN)数量级)存在拓扑失配问题Chord:总结算法简单55Pastry:概述英国剑桥Microsoft研究院和Rice大学共同提出考虑网络的本地性,解决物理网络和逻辑网络的拓扑失配的问题基于应用层定义的邻近性度量,例如IP路由跳数、地理距离、往返延时等节点ID分布采用环形结构Pastry:概述英国剑桥Microsoft研究院和Rice56Pastry:Hash表分布规则Hash算法SHA-1Hash节点IP地址->m位节点ID(表示为NID)Hash内容关键字->m位K(表示为KID)NID和KID是以2b为基的数,共有m/b个数位b是一个配置参数,一般为4节点按ID从小到大顺序排列在一个逻辑环上<K,V>存储在NID与KID数值最接近的节点上N0002N0201N0322N1331N1113N2120N2222N3001N3033N3200m=8K1320K1201K0220K2120K31222m-1 0b=2Pastry:Hash表分布规则Hash算法SHA-1N057Pastry:节点维护状态表(1)路由表R路由表包括log2bN(m/b)行,每行包括2b-1个表项路由表第n行与节点ID的前n个数位相同,但是第n+1个数位不同,也称为n数位前缀相同路由表中的每项包含节点ID,IP地址等根据邻近性度量选择距离本节点近的节点邻居节点集M邻居节点集包含|M|个在邻近性度量上最接近于本节点的节点,|M|为2b或者2X2b,邻近性度量指的是物理上相邻节点邻居节点集通常不用于路由查询消息,而是用来维护本地性叶子节点集L叶子节点集包含|L|个节点ID最接近本节点的节点,也就是逻辑地址上的相邻节点,其中|L|/2个节点的ID大于本节点,|L|/2个ID小于本节点,|L|为2b或者2X2b

Pastry:节点维护状态表(1)路由表R58Pastry:节点维护状态表(2)NodeID10233102LeafsetRoutingTableNeighborhoodset0022121021223012033120320311301233122302031302102221003120310132102103233023310222302102002301021130210230322102310001023212110233001102331201023323210213021022102002301130123331301233022121022230120331203203332133211023303310233021102331201023312210233001102330001023323010233232<SMALLERLARGER>节点ID最接近本节点的节点b=2,因此节点ID的基数为4(16bits)m/b行依据邻近性度量最接近本节点的节点每行2b-1个表项第n行的前n个数位与本节点相同[相同前缀下一数位其它]当前节点的第n个数位没有合适节点的表项为空b=2m=16Pastry:节点维护状态表(2)NodeID1023359Pastry:查询过程当一个K为D的查询消息到达节点A节点A首先看D是否在当前节点的叶子节点集中,如果是,则查询消息直接被转发到目的节点,也就是叶子节点集中节点ID与D数值最接近的那个节点(有可能就是当前节点),否则进行下一步在路由表中查找与D具有更长相同前缀的表项,如果该表项不为空,则将查询消息直接转发到该节点,否则进行下一步例如路由D=0629的查询消息5324→

0748→

0605→

0620→

0629如果不存在这样的节点,当前节点将会从其维护的所有邻居节点集合中选择一个距离该键值最接近的节点作为转发目标路由查询消息的逻辑跳数:O(log2bN)

Pastry:查询过程当一个K为D的查询消息到达节点A路由查60Pastry:节点状态表和查询节点路由表R中的每行与本节点具有相同的n数位长度前缀,但是下一个数位不同例如,对于节点N0201:

N-:N1???,N2???,N3???

N0:N00??,N01??,N03??

N02:N021?,N022?,N023?

N020:N0200,N0202,N0203当有多个节点时,根据邻近性度量选择最近的节点维持了较好的本地性N0002N0201N2001N1113N2120N2222N3001N3033N3200m=82m-1 0b=2N0122N0212N0221N0233RoutingtableK2120lookup(K2120)N0322Pastry:节点状态表和查询节点路由表R中的每行与本节点具612.2.4Pastry:节点加入(1)初始化状态表新节点开始时知道一个根据邻近性度量接近自己的节点A节点A可以通过使用扩展环IP组播等机制自动定位,或者由系统管理员通过其它手段获得新节点通过运行SHA-1算法计算自己的IP地址的摘要得到节点ID为X节点X向节点A发送join消息,Pastry将该消息路由到节点ID在数值上最接近X的节点Z接收到join消息的节点,包括A、Z,以及A到Z路径上所有的节点将发送它们的状态表给X,X检查这些信息,然后节点根据下面的过程初始化状态表:由于A与X在邻近性度量上接近,所以使用A的邻居节点集来初始化X的邻居节点集由于Z的节点ID与X最相近,因此使用Z的叶子节点集来初始化X的叶子节点集X将join消息经过的第i个节点的路由表的第i行作为自己路由表的第i行Join消息经过的第i个节点与X的前i个数位相同向其它相关节点通告自己的到来新节点向邻居节点集、叶子节点集和路由表中的每个节点发送自己的状态,以更新这些节点的状态表2.2.4Pastry:节点加入(1)初始化状

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论