【Part 3】P2P overlay networking

我们的目标:
  • 了解p2p体系结构
    --动机
    --基本概念
    --架构
  • 应用
概述:
  • 动机
  • 架构
  • 关键技术

1、对等系统(Peer-to-Peer Systems)

Peer-to-Peer:分散式计算模型
什么是同伴?

信息制作者,传播者或消费者..

为什么它有用?

解决了c / s模型的一些问题

围绕大型服务器的热点

服务器必须始终打开,其IP地址不能更改

客户端资源总量比一些强大的服务器要丰富得多

客户端资源利用率低下

2、文件分发:服务器 - 客户端vs P2P


问题:将文件从一台服务器分发到N个对等体需要多少时间?

3、文件分发时间:服务器端


服务器顺序发送N个副本:
NF / us时间
客户i需要F /di 时间来下载

4、文件分发时间:P2P


  • 服务器必须发送一个副本:F / us时间
  • 客户i需要F /di时间来下载
  • NF位必须上传(聚合)

5、服务器 - 客户端与P2P:例子

客户端上传速率= u,F / u = 1小时,us = 10u,dmin≥us

一些流行的P2P系统

6、P2P的原则

它是应用程序中的应用程序软件之一。 http支持的层
  • 点对点模式
  • 在两个同伴之间直接传输文件
所有运行该软件的客户端都可以在互联网中构建覆盖网络
  • 覆盖网络是一个抽象网络
  • 在这个覆盖网络中,用户可以上传或下载共享文件

7、P2P系统:结构化和非结构化

结构化P2P
  • P2P网络拓扑结构受到严格控制,文件不是放置在随机节点上,而是放置在指定位置,以便后续查询更容易满足。
  • 例子:CAN(内容寻址网络),Chord,Pastry ......
非结构化P2P
  • 没有精确控制网络拓扑或文件位置。 文件的放置不基于任何拓扑知识。
  • 例子:Napster,Gnutella,KaZaA

8、非结构化P2P体系结构

集中模型
  •  纳普斯特
分散模型
  •   Gnutella,Freenet
分层模型
  •   KaZaA,Morpheus

8.1、集中模型


需要服务器来提供目录服务
覆盖网络建设
  • P2p软件知道服务器
    --当软件启动时,主动对等体会自动连接到服务器
  • 每个p2p应用程序将其IP地址和共享文件的名称注册到服务器->创建数据库
  • 需要客户端和服务器之间的心跳,当心跳停止时,相关记录被删除
文件访问
  • 当活动用户需要文件时,访问服务器并查找文件和相应的IP地址
  • 直接连接到IP并下载文件
集中模型的优点和缺点
特征:
  • 文件传输是分散的,但定位内容是高度集中的
    --查找内容相当快!
优点:
  • 简单易用
缺点:
  • 服务器必须始终开启并且已知
  • 单点故障
  • 性能瓶颈
  • 侵犯版权
    --2001年Napster被罚款2600万美元

8.2、分散模型:查询泛洪

没有服务器,没有目录
三个步骤:
  • 第一步:构建覆盖网络
  • 第二步:查询泛洪 - 查找资源主机
  • 第三步:转移

  • P2p进程获取经常从其客户端或特殊站点连接到它们的IP地址
  • X使用对等计数向所有这些连接发送ping消息
    --对等计数与ttl类似
  • 邻居(Y)会将ping消息转发给它的邻居 - Z,
  • Zs会将包括他们的ip,文件号和文件总大小的消息传给X.
  • X连接到Zs(可选)
  • 建立覆盖网络等
分散模型:查询泛滥和转移
当用户需要文件时,向其邻居发送查询消息
  • 如果匹配存在,则发送回;否则,将此查询转发给它们的邻居 - 查询泛洪
  • 匹配时,查询命中消息沿着反向路径逐步返回
  • 点对点直接在两个客户端之间转移

分散模式:优点和缺点

优点
  • 同行有类似的责任
  • 高度分散,没有集中式目录服务器
    --定位服务分布在同行
  • 更难关闭
缺点
  • 过多的查询流量
  • 查询半径:存在时可能没有内容
  • 需要引导节点
  • 覆盖网络的维护很困难
案例:Gnutella

开源的P2P软件
  • 由Justin Frankel和Tom Pepper开发
 --AOL
  • 完全分散
  • 用于文件共享
一些众所周知的引导服务器保留了一些对等节点的列表
当新对等体想要加入P2P网络时,它与自举服务器联系,提供现有对等体列表的IP地址
新的对等方然后尝试与其中一些对等方进行连接。

8.3、分层模型:查询泛洪

权衡,借鉴以上两种方法

  • 没有特殊的服务器,而是需要组长
  • 领导者拥有高带宽和高度责任感
当对等体启动p2p应用程序时,对等体与其中一个组长建立TCP连接
  • 发布其共享文件
  • 数据库形成:文件ID,IP,元数据
领导者连接的领导者建立了重叠网络
  • 一个组织喜欢集线器,看图

基于关键字的文件搜索 -> 组长 -> 洪泛

分层模型:组长


组长也称为超级节点
每个对等体都是超级节点或分配给超级节点
超级节点跟踪其所有孩子的内容。

对等查询超级节点,超级节点可以查询其他超级节点(洪泛)

分层叠加网络中的其他技术


请求排队

  • 限制并发下载(3-7),更多的是放入队列
激励优先
  • 对上传文件数量多于下载数量的用户优先考虑
并行下载
  • 并行下载来自不同对等方的文件
  • 部分来自A并且来自B

分层模型:KaZaA


  • 利用异构性,强大而直观的用户界面
  • 超过3M的ip对等体共享超过3,000 TB的内容
  • 比Napster和Gnutella更受欢迎
  • 各种内容:MP3,视频,游戏等
  • 提供估计的下载时间
  • 频繁的上传者可以在服务器队列中获得优先权
  • 关键词搜索
    --用户可以配置“最多x个”对关键字的回应

    --对关键字查询的响应波澜起伏; 当x响应被发现时停止

KaZaA

  • 具有更多连接带宽,更多CPU功率和更多可用性的对等者被指定为超级节点(用户透明)
  • 每个超级节点充当迷你Napster集线器,用于跟踪其后代的内容和IP地址
  • 每个超级节点有大约200-500个后代; 大约10,000个超级节点(估计)
  • 有一个专用的用户认证服务器和超级节点列表服务器

KaZaA覆盖维护

  • 软件下载中包含的潜在超节点列表
  • 新对等体会经历列表直到找到一些运行的超节点
    --连接并获取更多最新列表
    --然后,节点在列表上ping 5个节点,并与具有最小RTT的节点连接
  • 如果超级节点关闭,节点将获得更新列表并选择新的超级节点

KaZaA查询

节点首先向超节点发送查询

  • 超级节点响应匹配
  • 如果找到x匹配,就完成了。
否则,超级节点将查询转发给超节点的子集
  • 如果总共发现了x个匹配项,则完成。
否则,查询被进一步转发
  • 可能由原始超级节点而不是递归

并行下载和恢复

如果在多个节点中找到文件,用户可以选择并行下载

  • 用户可以选择最大下载节点数量
最有可能的HTTP字节范围标头用于从不同节点请求文件的不同部分
服务器对端停止发送文件时自动恢复
  • 当前服务器不可用时自动切换到新的下载服务器

分层模型:优点和缺点

方法的优点

  • 目录数据库较小
  • 少泛滥
  • 分散
方法的缺点
  • 引导节点需要并承担更多责任
  • 超节点可能会超载
  • 维护覆盖网络

9、文件分发:BitTorrent


  • BitTorrent是传输大文件最常用的协议之一
  • 已知最大的部署已经有超过一千个同步下载器。
  • 据估计,截至2009年2月,它占所有互联网流量(取决于地理位置)的约27-55%。

9.1、文件分发结构

P2P文件分发系统

追踪器(tracker):追踪参与洪流的同伴            洪流(torrent):交换文件块的同事组

Web服务器:跟踪元文件和跟踪器的URL

  • 文件分为256KB块。
  • 对方加入洪流:向跟踪器注册以获取对等体列表,连接到对等体子集(“邻居”)
  • 在下载时,对等上传块到其他同伴。
  • 同行可能会来来去去
  • 一旦同伴拥有完整的文件,它可能(自私地)离开或(无私地)留下

拉块
  • 在任何给定的时间,不同的对等体可能具有不同的文件块子集
  • 周期性地,对等体(爱丽丝)要求每个邻居有他们拥有的块的列表。
  • 爱丽丝发送她失踪的块的请求

    --首先稀有

发送块:聪明的交易算法
爱丽丝目前向四个邻居发送块

  • 那些以最高的速度送她的块
  • 每10秒重新评估前4名
每30秒:随机选择另一个对等点,开始发送块
  • 新选择的同伴可能会加入前4名
  • 5个同行之外的其他同行被噎住

10、非结构化P2P系统中的问题

  • 提高搜索效率
  • 最小延迟覆盖拓扑
  • 匿名
  • 高速缓存
  • 完整
  • ......

10.1、搜索问题

非结构化网络最为灵活,实用且广泛部署
搜索机制是非结构化P2P网络的主要性能因素
目前的搜索机制效率不高,导致流量过大
BFS
  • 如果目标对象存在,BFS最终会找到它
  • 找到最近的同伴
DFS
  • 可以下潜找到一个深度目标同伴
  • 可能会拒绝搜索树的一个分支并且永远不会返回

10.2、搜索评估标准

标准
  • 加载到对等体上
  • 在因特网上加载
  • 查询响应时间
  • 找到罕见的文件
如何改进这些标准
  • 减少查询消息的数量
  • 减少跳数和每跳的延迟
  • 复制罕见文件,使用一些启发式搜索策略

10.3、提高搜索效率的方法

5种方法
  • 随机的
  • 基于内容索引
  • 基于统计
  • 基于兴趣
  • 缓存和复制
10.3.1、基于随机搜索
扩展环
  • 用小的TTL启动洪水,如果搜索失败,则重复发送具有增加的TTL的查询。
迭代深化
  • 设置一系列TTL(a,b,c)。 查询从第一个TTL = a开始。 如果查询失败,它将被来自发起者跳跃的所有节点的第二TTL = b洪泛。
k-walker随机游走
  • 将相同查询的k个查询消息发送给k个独立步行者。 在每个步行者中,查询消息在每一步被转发到随机选择的邻居。
  • BFS和DFS之间的权衡
--搜索流量低于BFS
--响应时间大于BFS
10.3.2、基于内容索引的搜索
每个对等体都维护一个文件索引
  • 可用于某些节点(文件名IP)
  • 类似于url
当对等方接收到查询时,它可以代表目标节点处理查询
  • 直接返回目标节点的IP地址
10.3.3、基于统计的搜索
统计
  • 从先前查询中收到邻居的结果数量
  • 与邻居连接的延迟
  • 每条路径上不同主题的文件数量
路由指数
  • 每个节点都有本地文件的本地索引和路由索引(RI):<文档的路径,路径>  <文档,主题>
  • 基于“善良”查询路由到邻居
启发式
  • 选择返回以前查询结果数最多的邻居
  • 选择具有特定主题下文件数最多的邻居
路由索引示例
对于同行A,B(及其后代)提供的100个文件
  • 20个属于数据库类别
  • 10个属于理论范畴
  • 30属于语言类别
  • ...
计算A的邻居的善良
高瞻远瞩的查询路由
10.3.4、基于兴趣的搜索
“同行有一些感兴趣的文件 - >它可能会有其他感兴趣的文件”
语义上的聚合对象
减少搜索流量并加速搜索过程。
  • 使用快捷方式:潜在目标节点,经常提供良好的搜索结果
--查询首先转发到快捷方式
--只有在没有快捷方式返回响应时才会泛滥到所有邻居
10.3.5、高速缓存
节点缓存内容的拷贝(或指向内容的指针)
  • 对象信息可以从具有副本的节点中推送
  • 更多副本导致更短的搜索
  • 随着同行数量的增长,存储需求也在增长
  • 削弱文件提供商的匿名性
缓存的大小有限:无法容纳所有内容
对象具有不同的流行度:以不同的速率请求不同的内容
  • 低频率使用的内容被替换

猜你喜欢

转载自blog.csdn.net/yeler082/article/details/80385172
P2P