1.2k likes | 1.41k Views
P2P 网络体系. 大纲. 第一代 P2P 网络:混合式 P2P 体系(*) 第二代 P2P 网络:无结构 P2P 体系(*) 第三代 P2P 网络:结构化 P2P 体系. 本讲需要大家关注的是:. ( 1 ) P2P 思想是如何应用到文件共享领域? ( 2 )无结构的网络如何在节点随意加入和退出的情况下实现自组织? ( 3 )多源下载技术的实现思想以及技术方法 ( 4 ) Freenet 的匿名技术. 第一代 P2P 网络:混合式 P2P 体系. Napster BitTorrent. Napster:P2P 网络的先驱.
E N D
大纲 • 第一代P2P网络:混合式P2P体系(*) • 第二代P2P网络:无结构P2P体系(*) • 第三代P2P网络:结构化P2P体系
本讲需要大家关注的是: • (1)P2P思想是如何应用到文件共享领域? • (2)无结构的网络如何在节点随意加入和退出的情况下实现自组织? • (3)多源下载技术的实现思想以及技术方法 • (4)Freenet的匿名技术
第一代P2P网络:混合式P2P体系 • Napster • BitTorrent
Napster:P2P网络的先驱 • 世界上第一个应用性P2P网络,混合式P2P体系最杰出的代表 • 1999年波士顿东北大学的Shawn Fanning开发Napster,用于MP3文件交流,与传统的提供音乐下载的网站不同,Napster服务器里无歌曲,仅有其它用户硬盘上的文件的索引 • Napster使用的软件技术都是当时已有的,只是改变了软件的应用体系,打破了客户/服务器模式的瓶颈 • Napster半年吸引了5000万注册用户,最高时超过6100万用户
服务器: 维护所有Napster用户的共享文件索引 监控系统中每个用户的状态(连接带宽、连接时间、在线状态) Napster网络的工作原理
节点异构 Bandwidth, online time Free Riding 20-40%用户几乎从来不提供文件共享而只是下载;大约1%的结点支撑Napster文件共享 Napster性能分析
Napster的缺陷 • C/S的残余:文件交换使用P2P,但文件查询、系统维护靠server,带来系统瓶颈、服务器单点失效、可扩展性低等问题 • 组织管理过于松散,仅赋予用户平等的功能,无义务要求、能力区分 • 版权问题:导致Napster发布后当年即被起诉,两年后关闭服务,是P2P文件共享系统迄今为止最大的困境
BitTorrent-分片优化的新一代混合式P2P网络 • Napster进一步发展,BitTorrent: • 相同架构,但文件分片,使用散列函数映射 • 用户有上传义务 • 网络及用户信息更新、BT种子维护由server中的Tracker完成,下载同一文件的用户围绕Tracker形成独立子网,不同文件的Tracker在不同server上,将server分散化,成为P2P在国内最成功的应用
Tracker Web Server Web page with link to .torrent .torrent C A Peer [Seed] Peer [Leech] Downloader “US” B Peer [Leech] Overview – system components
Tracker Web Server Web page with link to .torrent Get-announce C A Peer [Seed] Peer [Leech] Downloader “US” B Peer [Leech] Overview – system components
Tracker Web Server Web page with link to .torrent Response-peer list C A Peer [Seed] Peer [Leech] Downloader “US” B Peer [Leech] Overview – system components
Tracker Web Server Web page with link to .torrent Shake-hand C A Peer [Seed] Peer [Leech] Downloader “US” Shake-hand B Peer [Leech] Overview – system components
Tracker Web Server Web page with link to .torrent pieces C A pieces Peer [Seed] Peer [Leech] Downloader “US” B Peer [Leech] Overview – system components
Tracker Web Server Web page with link to .torrent pieces C A pieces Peer [Seed] Peer [Leech] Downloader “US” pieces B Peer [Leech] Overview – system components
Tracker Web Server Web page with link to .torrent Get-announce Response-peer list pieces C A pieces Peer [Seed] Peer [Leech] Downloader “US” pieces B Peer [Leech] Overview – system components
BitTorrent分片机制 • BT将文件分为固定大小的分片(典型大小256KB),每个用户必须通知其他下载者自己拥有的分片,分片的完整性由散列函数保证 • 分片流水作业:构架在TCP之上的应用层协议,同时发送多个请求,以避免在两个分片发送之间的延迟,进一步,分片可以划分为子分片(典型16KB),BT一直保持几个请求(通常是5个)被流水式地同时发送。流水作业选择同时发送的请求数目的依据,是使大多数连接变得饱和以充分利用带宽
BitTorrent分片选择策略 • 严格的优先级(一个分片的下载) • 一旦请求了某个分片的子分片,那么该分片的所有子分片具有更高优先级,以尽可能快地获得一个完整的分片 • 最少者优先(中间阶段/平稳期) • 尽量选择所知用户拥有数最少的分片作为下一个下载分片,以使网络中最稀少的分片尽快拥有多个复制 • 下载者从Tracker了解哪些分片较少 • 随机的第一个片段(文件下载最初阶段) • 当最少的分片只有一个用户拥有时,为避免并发冲突,第一个分片先随机选择,完成下载后再切换到“最少者优先”策略 • 最后阶段模式(文件下载最后阶段) • 为加速最后阶段下载,下载者向他所连接的所有用户都发送某分片的子分片请求,一旦某个子分片到了,下载者就会向其他用户发送cancel消息,以避免浪费带宽
BitTorrent阻塞算法 • BT并不是由Tracker服务器集中分配资源,每个用户自己有责任尽可能地提高自己的下载速率 • 下载者根据连接用户提供的下载速率给予同等的上传回报(tit-for-tat);对合作者提供上传服务,对不合作者进行临时阻塞 • 一个好的阻塞算法应该利用所有可用的资源,为所有下载者提供一致、可靠的下载速率,并适当惩罚只下载而不上传的用户
阻塞算法的经济学背景——帕累托有效 • 当一个系统中资源配置已达到这样一种境地:任何重新改变资源配置的方式,都不可能使一部分人在没有其他人受损的情况下受益,这一资源配置的状态称为“帕累托最优”状态,或称为“帕累托有效”(Pareto efficient) • 在分布式系统领域,寻求帕累托有效是一种本地优化算法,BT的阻塞算法用一种奉献与回报相对应的方式来试图达到帕累托最优。BT用户对那些向它提供上传的用户给予同样的回报,以使任何时候都有若干个连接正在进行着双向传输
BT的阻塞算法(choking algorithm) • BT每个用户对固定数量的其他用户保持疏通(即不阻塞,通常为4个) • 每隔20秒进行一次轮询:前10秒计算出哪个用户要被阻塞,然后将阻塞状态保持10秒。Naïve策略是仅疏通下载速率最高的前几个。 • 10秒内足够TCP调整传输速率 • 最优疏通(optimistic unchoking) • 为发现更好的空闲连接,不能只向为自己提供最高下载速率的用户提供上传,而是每隔30秒,重新计算一次哪个连接应该是“最优疏通”
反对冷落(anti-snubbing) • 某个下载者可能被所连接的所有用户阻塞,为缓解该问题,当从某个用户那里一个分片也没有得到,下载者认为被对方“冷落”,不再为对方提供上传。“反对冷落”常常会导致多个并发的“最优疏通”,从而更快恢复下载速率 • 仅仅上传 • 用户完成下载后,优先选择可从自己得到更高上传速率的用户或刚好被所有人阻塞的用户
BitTorrent性能分析 Pouwelse et al., 2004,2005论文 • 流行性:应用广泛,但BT网站、.torrent文件服务器及Tracker故障率较高,限制了网络规模 • 可用性:同上,取决于服务器的可用性。实际较低,只有一半的BT网站镜像可正常工作超过2.1天,种子服务器更少 • 下载性能:当时统计平均速度30KB/s
文件生命周期 • 该文件的种子生命期,由于服务器故障及用户行为不确定性,差别很大 • 约17%的用户下载完成后做种时间超过1小时,仅3%用户做种时间超过10小时 • 污染等级 • 加入到BT网络中的共享文件的真实性 • 审查系统(moderation system),三种角色:需要审查的提交者;不需要审查的提交者;审查者。可逐级提升。
BitTorrent体系总结 • BT是混合式结构的P2P网络,以BT网站、.torrent文件服务器和Tracker为核心,控制和帮助用户共享文件 • 下载同一文件的用户围绕Tracker形成一个独立的子网 • BT限定用户在下载的同时必须提供上传,既提高了网络效率,又杜绝了P2P网络中的自私结点现象 • BT将文件分片,分片又被划分成子分片,子分片流水作业,并在文件下载的不同阶段有不同的分片选择策略以优化性能。这是BT最大的特点,也是它高效的最本质原因 • BT基于经济学规律的阻塞算法,优化了网络资源配置,增强了用户间的协作 • BT通过对文件和分片生成散列值,保证文件的完整性 • BT提供了一定的安全机制,如文件审查、输入验证码 • BT服务器故障率高,导致可用性降低,且网络规模受限,文件无持久性保证
BT下载对硬盘的影响 • 硬盘的工作原理 • 磁头读写盘片上的磁道,由于网络吞吐量低于磁盘吞吐量,持续低速下载(上传)带来频繁的读写操作,盘片可能会由于过热而损坏 • 磁盘缓存技术 • 使用内存缓存数据 • 写数据时,仅当缓存满后再整体写入硬盘(下载) • 读数据时,仅当缓存中没有时才从硬盘读数据,且整块读入,减少磁盘操作(上传) • 内存是有限资源,缓存在6~50MB即可 • 结论:P2P下载不伤硬盘
第一代P2P网络的特点 • 拓扑结构 • 混合式(C/S+P2P) • 星型拓扑结构,以服务器为核心 • 查询与路由 • 用户向服务器发出查询请求,服务器返回文件索引 • 用户根据索引与其它用户进行数据传输 • 路由跳数为O(1),即常数跳 • 容错性:取决于服务器的故障概率(实际网络中,由于成本原因,可用性较低) • 自适应:靠服务器监控实现自组织与自适应,只要服务器正常工作即可有效维护网络和结点信息 • 匿名性:一般不提供,但支持 • 增强机制:BT的文件分片、双向传输、防范攻击
第二代P2P网络:无结构P2P体系 • Gnutella • KaZaA • eDonkey/eMule • Freenet
Gnutella:纯分布式无结构P2P • Gnutella的历史 • Nullsoft公司,MP3播放软件WinAmp的发明人Justin Frankel、Tom Pepper开发 • 2000年3月14日在网站上公开Gnutella软件一个半小时后,母公司AOL(American Online)担心步Napster后尘,关闭了网站 • 数千名MP3迷下载了软件并公开与改造 • 其纯分布式无结构P2P网络思想广泛流传 • Gnutella已不单纯对应具体软件,而是当作一种典型的无结构P2P网络协议
Gnutella体系的工作原理 • Gnutella协议0.4版(0.6版加入了超结点Ultrapeer,结构有变化)
协议开发者称Peer为Servent(Server +Client),网络中只有peer,没有server • Gnutella覆盖网上每个结点对应一台实际的计算机 • 每条连接对应一条点到点的链路 • 覆盖网上的连接由每个peer保存的“邻居结点”信息确定,有一个邻居结点即对应有一条边
新结点加入时,必须首先连接到“众所周知”几乎总是在线的Gnutella结点(称为“自举”结点、“入口结点”)新结点加入时,必须首先连接到“众所周知”几乎总是在线的Gnutella结点(称为“自举”结点、“入口结点”) • Gnutella网中的消息可以被广播或回播(back-propagate,沿广播的反向路径回传消息),协议设计的支持机制: • 每条消息具有一个随机产生的全局唯一标识符GUID(16字节)以互相区分 • 每个结点缓存最近路由的消息以支持回播并阻止不必要的重广播 • 每条消息都有TTL以避免过度消耗网络资源
Gnutella的典型消息 • 组成员消息:PING,PONG • 新结点加入时广播PING消息,或用来探测其它结点是否仍然存在(心跳) • 结点收到PING消息后,可以决定是否回播PONG消息,以及是否将PING转发给邻居,PONG消息包含结点IP,port,共享文件数量大小 • 查询消息:QUERY,QUERY RESPONSE • QUERY消息用来查询文件,包含查询内容与最小响应速度等附加信息,但不包含源结点信息 • RESPONSE消息包含文件下载的必须信息及该结点的nodeID,沿QUERY消息路径回播
文件传输消息:GET,PUSH • 结点收到QUERY RESPONSE消息后用GET消息请求获得文件 • 对处于防火墙后因而不能直接响应文件请求的结点,使用PUSH消息请求防火墙后的文件拥有者主动建立到自己的连接
假定: m1’s neighbors are m2 and m3; m3’s neighbors are m4 and m5;… 泛洪式搜索(flooding search), 系统开销大 有限深度TTL(Time to Live), 不保证一定查询到已有文件 E? E E? E? E? Gnutella的文件检索过程 m5 E m6 F D m4 C A B m3 m1 m2
Gnutella网络的维护 • 各结点使用PING、PONG消息探测其他结点存在与否,在收到PING消息后,可以自主决定是否回播PONG,并根据TTL数值决定是否继续广播PING消息 • 具有一定的自组织和自适应性
Gnutella网络的性能分析 • Ripeanu,2001,2002、Saroiu et al., 2002,2003、Adar & Huberman, 2002 • Gnutella用户的连接带宽仅在Query response消息中作为辅助信息回播,因此,Gnutella网络中不共享文件的用户或其共享的文件与查询请求一直不匹配的用户,不会主动发布带宽 • Gnutella网络中结点功能平等,但能力有差异(异构性),如连接带宽 • 在无组织的Gnutella网络组织方式下,70%的结点承受较高时延(>280ms)
用户连接时间与Napster类似,超过50%的用户连接时间<1h,不到10%的>6h用户连接时间与Napster类似,超过50%的用户连接时间<1h,不到10%的>6h • 25%的用户不共享任何文件,75%的用户共享文件数低于100,仅7%共享文件超过1000,即文献中的Free-Riding(搭便车)现象,对网络的高效工作不利 • Gnutella网络相当于社会网络,可用幂律(Power-law)分布网络近似,拥有连接数L的结点占网络总结点的份额正比于L-a,a是取决于网络本身的常数因子,Gnutella网络a=2.3,容错性较高
Gnutella覆盖网的几种状态 左:正常的Gnutella覆盖网。 中:随机移去30%结点后的Gnutella覆盖网。 右:移去连接数最多的4%结点后的Gnutella覆盖网(它分裂了)(图片来自[Saroiu et al.03])
早期Gnutella网络中,PING消息占所有消息的50%以上,显示其自适应机制低效。改进后的Gnutella网络,对用户真正有用的Query消息占总消息的90%以上早期Gnutella网络中,PING消息占所有消息的50%以上,显示其自适应机制低效。改进后的Gnutella网络,对用户真正有用的Query消息占总消息的90%以上 • Gnutella覆盖网络与物理网络的拓扑一致性较低,影响工作效率
采用Gnutella协议的P2P网络应解决: • 结点异构性:充分利用结点能力 • Free-Riding:鼓励上传,限制或剥夺Free-Rider的权利 • 保持高容错性:高效的机制检测和恢复网络分割 • 继续优化查询机制,TTL的取值 • 拓扑一致性
Napster与Gnutella的比较 • 共同点 • P2P的文件共享思想 • 系统中的对等实体(peer)之间是对称的,既是客户又是服务器,既提供下载又提供上传 • 可扩展性都不高:但Napster是因为C/S结构,Gnutella是因为泛洪搜索策略造成的系统开销 • 都有结点异构性问题以及搭便车现象
不同点 • Napster有服务器,Gnutella没有,因此工作机制完全不同 • 网络结构不同:混合式与纯分布式,Gnutella在Internet网上构建了覆盖网,这是后来的P2P网络都会做的一项基础性工作 • Napster中文件只要存在一般都能查询到,Gnutella不一定 • Napster只在服务器故障时出错,Gnutella可能因为结点信息陈旧而出错,最大的问题是可能导致网络分割
Gnutella的双层结构 • Gnutella协议0.6版 • 层次化的无结构P2P网络
KaZaA:基于超结点的无结构P2P网络 • 2000年7月,基于FastTrack无结构P2P协议 • Niklas及Friis,P2P创业家,Joltid, Altnet, Skype • FastTrack协议首次引入超结点SuperNode,开发结点异构性(比Gnutella0.6早得多)
KaZaA的工作原理 • KaZaA是私有协议,并对消息加密,对其理解基于测量与分析的结果