李振华 在读博士 北京大学计算机系网络所P2P组 Homepage: net.pku.edu.cn/~p2p 李振华 在读博士 北京大学计算机系网络所P2P组 Homepage: net.pku.edu.cn/~p2p
提纲 1 P2P是什么? 2 P2P历史(工业界) 3 P2P历史(学术界) 4 国内科研情况 5 AmazingStore系统简介 6 基础实验平台简介 7 上机作业
1 P2P是什么? 网上众说纷纭…… 我们的看法: 1、一种思想 2、一种工具 3、一类应用
1.1 一种思想 计算机网络 因特网 Internet 网络的基础结构: 1、集中式:C/S = Client/Server -- 好:管理简单,控制有效 -- 坏:Server瓶颈 2、分布式:Distributed -- 好:无瓶颈,资源充分利用 -- 坏:管理松散,难于控制 P2P = 分布式的极端 (since 1956年) 自由 平等 互联
1.2 一种工具 Peer-to-Peer 一切网络皆可P2P化!But……
1.3 一类应用 文件共享 媒体播放 数据存储 分布计算等
2 P2P的历史(工业界) 2.1 溯源:Napster -- 1999年,18岁的美国学生Shawn Fanning -- 宿舍开发,朋友共享mp3 -- 半年5000万用户! -- 2001年,版权纠纷,被迫关闭 1999-2009,P2P十年……
Napster运行原理
2.2 Gnutella 2000年3月,Nullsoft公司 Justin Frankel & Tom Pepper: Winamp发明人 版权问题上线一个半小时关闭 无结构P2P系统代表 其思想和代码被多出复制、改写、继承
Gnutella运行原理、洪泛问题
2.3 KaZaa/Skype, eDonkey/eMule Niklas & Friis 300万在线用户! Niklas继续创办Skype 2000年,eDonkey 2002年,Merkur改良eDonkey eMule 国内VeryCD 层次化无结构P2P系统
2.4 BT 2002年10月 Bram Cohen穷困潦倒…… 企业家Gilmore资助生活费 2003年BitTorrent流行 2003年末找到工作!
2.5 PPLive, PPS, UUSee 2003年,中国 PPLive:姚欣(华中科大本科) PPStream:张洪禹(哈尔滨师大本科)+ 雷量(成都一程序员) UUSee:李竹(清华本科)+ 刘怀宇(清华硕士)
2.6 迅雷,QQ旋风 迅雷 2003年,深圳 邹胜龙(硅谷海归)+ 程浩(硅谷海归) 中国最大的互联网资源聚合平台 QQ旋风 2007年,上海 腾讯研究院 No.2互联网资源聚合平台
Relaxation 1 “出名要趁早啊,来得太晚的话,快乐也不那么痛快。” ——张爱玲 房子、车子、妻子、孩子、…… 互联网是造就青年英雄的园地!
3 P2P历史(学术界) 3.1 O’reilly的P2P峰会 -- 2000年8月,O’reilly组织P2P峰会 -- 澄清P2P的理念,消除P2P恐惧 -- 2001年,O’reilly出版最早的P2P专著
3.2 四大结构化模型 2001年,SIGCOMM(网络通信顶尖会议) -- Chord: Ion Stoica等(Berkeley、MIT) -- CAN: Ratnasamy等(Berkeley、AT&T) 2001年,其它两个模型 -- Pastry: Rowstron等(微软、Rice) -- Tapestry: 赵燕斌等(Berkeley) 结构化P2P系统 = DHT(Distributed Hash Table)
Chord前传:环形数组/链表 环形数组路由? -- 二分查找 环形链表路由? -- 二分查找 NO! 如何O(logN)? -- 带弦环 = 路由表(网络)
Chord介绍 1 Chord:最简单、最精确 拓扑结构:带弦环 功能: -- 节点/数据对象 映射到 拓扑网络中 映射方法: -- 节点ID = Hash(IP, port) -- 数据ID = Hash(Value) -- 节点按ID顺时针排列 -- 节点后继 vs 对象后继 匿名、 虚节点
Chord介绍 2 路由表(finger table) -- 指数距离:1、2、4、8、…、2^m -- m项,m为节点ID比特数
Chord介绍 3 路由: -- 二分查找,由远及近 -- 定位节点/数据对象平均路由跳数 O(logN) -- 思考题1:为什么是O(logN)而不是O(m)? -- 思考题2:平均跳数是(logN)/2,为什么?
DHT DHT(分布式散列表)
3.3 常数度结构化模型 常数度:每个节点有常数条边 Viceroy:蝴蝶结构 Koorde:Chord + 德布罗意图 Cycloid:3维CCC
3.4 结构化P2P的特点 1、节点度为常数或O(logN) 2、数据对象存放位置确定(hash) 3、定位对象的路由跳数为O(logN) 4、结构严格,维护开销大 迄今为止,除Kademlia模型在BT、eMule中辅助使用外,没有实用的结构化P2P模型 但是,结构化P2P的思想被用在服务器集群、云计算等领域,取得了不错的效果
3.5 专著
4 国内科研情况 北京大学网络所 -- Maze共享、AmazingStore存储 华中科大网格实验室 -- AnySee视频直播 清华大学高性能所、多媒体所 -- Granary存储、GridMedia视频直播
Relaxation 2 P2P科研领域目前的境况: -- 美国学者——引领、挖坑 -- 中国学者——跟踪、灌水 为什么?——找祖宗、2000年 怎么办?——没办法 “牢骚太盛防肠断, 欲望太强睡不着。”
5 AmazingStore系统简介 P2P共享 + P2P存储 教育网 网址:amazingstore.grids.cn 兼容Maze资源 开发小组: 代亚非 教授,苏冰/周模/丁嵩/ 董嵬/肖锋/陈驰/曲直 在线用户突破800 优良的P2P科研试验平台
5.1 AmazingStore 6大功能 1、热门资源推荐 2、所有资源搜索 3、对等节点浏览 1、热门资源推荐 2、所有资源搜索 3、对等节点浏览 4、经典资源收藏 5、P2P网络硬盘 6、开发中……
基础实验平台简介 1、最好的平台:自己搭建系统 -- 自由修改,数据齐全,适合研究 2、较好的平台:利用现有系统 -- 如QQ旋风、AmazingStore等 3、公认的平台:PlanetLab P2P研究者居家必备之良药! (北大已加入)
基础实验平台简介2 4、凑合的平台:自己写代码模拟 -- 灵活方便,简单易行,但不具有说服力 5、最不好的平台:用他人写的模拟器 -- 手到擒来,但自由度太小,极易受他人置疑 -- MIT: p2psim, Trento: PeerSim, GaTech: GnutellaSim, 3LS
基础实验平台简介3 推荐实验方式:4、自己写代码模拟 -- Java或C#,面向对象实现,单线程 -- 1个Monitor对象 + N个Node对象 -- Monitor对象记录所有运行数据 -- Node对象属性:物理地址,ID,路由表,邻居表等 -- Node对象方法:定位对象、传递路由消息等 -- 网络拓扑结构:GT-ITM、BRITE拓扑发生器、真实数据 -- 权宜之计,发不了一流论文!
上机作业 使用任意实验方式模拟Chord网络(单机) -- 算法伪代码均在Chord原始论文中 -- 节点IP、port及数据对象Value随机生成 -- 节点/数据对象ID产生可使用任意Hash函数(SHA、MD5在Java、C#类库中有) -- 节点顺序加入,不考虑并行 -- 路由表构造(Table 1)、路由算法实现(Figure 4)参照原始论文 -- 仅处理节点加入(Figure 6),不处理节点退出、意外 -- 需要处理节点加入时数据对象的移交(Figure 6)
上机作业(续) -- 网络拓扑结构可随机产生(使用拓扑发生器更好) -- 不考虑网络环境,RPC(远程过程调用)可实现为直接的函数调用 -- 统计每个节点存储的数据对象个数,将其分布作图,与原始论文作对照,分析原因 -- 随机选取节点查找随机数据对象,记录路由跳数的分布并作图,与原始论文作对照,分析原因
结尾 感谢大家的耐心和支持! P2P领域问题多多欢迎加入! 祝大家学习进步、安心快乐!