第2章 P2P网络测量
2.1 引言
网络测量的研究,是网络行为学研究的基础。网络测量是对实际运行的各种网络或部署其上的应用采用特定的方法进行观测,直接或间接地获知系统运行状态和行为模式,从而进一步帮助并指导网络设计、评价和优化系统性能,是网络建模和仿真模拟的必要前提,是网络行为学研究的第一步。网络测量研究通过长时间积累,已经形成了一套较为系统的方法,但随着P2P网络及其技术的不断发展,网络整体行为逐渐发生着变化,现有的网络测量方法已无法适应当前系统,测量方法的效率和完整性均有待提高。由于BitTorrent系统是一种典型的混杂网络,构成复杂,组件分散在多个网络,其研究能够为其他P2P系统测量工作提供指导。为了进一步加深对现行P2P系统的理解和认识,本章主要以一个高效的BitTorrent 测量系统为例,涵盖了种子采集、共享节点探测、文件片断收集、被动收集等多项功能,通过测量到的数据对BitTorrent系统拓扑结构和运行现状进行了宏观和微观分析,并对其进行了建模和评估。
2.1.1 网络测量概述
“测量”的一般概念是以确定量为目的的一组操作,通常是对特定对象属性的量的估计。在计量学中,测量是能够减少一个量的不确定性的观察。网络测量是指获取与网络运行状态相关数据的过程,具体数据包括各层次拓扑、路由动态性、可达性、带宽利用率、分组流量、RTT(Round Trip Time)、分组丢失率、电路性能等。网络拓扑数据通常是难以直接得到的,各电信运营商为保护各自的商业隐私和网络安全,严格限制有关数据的获取。不过,为了满足最基本的网络可达性与连通性需求,网络维护者不得不向与路由相关的应用提供一部分拓扑相关信息,这就成为一个“突破口”,由此能够以公开的、温和的、非攻击性的方式来实施网络拓扑测量。大规模网络的拓扑测量通过收集来自被测网络的蕴含拓扑信息的路由行为数据来推断拓扑本身,因而本质上是依赖路由协议行为的一种间接测量。
拓扑测量的意义在于它回答了“网络拓扑是什么样”这个问题,为整个Internet拓扑研究提供了基础数据,同时对拓扑测量技术的探索,也帮助人们更深入理解网络协议行为及其与物理设备的关联性。Internet拓扑研究方法与物理、化学、生物等实证科学类似,对未知事物的研究应建立在充分和细致的观察(拓扑测量)之上,真实数据是提出和验证假设模型(拓扑建模)的唯一标准。例如,传统的对 Internet 的理想假设,如流量规模在大时间尺度上是平滑的以及拓扑节点度分布是非高度变化的,都被后来的实际测量数据证明是错误的。测量研究负责开发测量实验技术和获取真实拓扑数据;建模研究负责提取数据的外在特征与内在规律。前者是后者产生新发现与验证新模型的实证基础,后者则建立理论来为之后的实践提供前提。可以说,网络测量将互联网络研究从工程、技术提升到了科学的高度。
2.1.2 P2P网络测量现状
P2P网络作为Internet的上层应用的覆盖网络,其拓扑结构继承了Internet网络拓扑的特点,同时,由于其本身的匿名性、开放性、动态性等特点,使对其进行全面认识和评估变得更加困难。总的来说,当前P2P网络测量中仍存在着各种各样的难题。
第一,Internet网络的异构性和复杂性仍将长期存在。由于Internet采用松散的组织结构,网络间差异明显,并且各种网络技术(如防火墙、网络地址转换、动态地址等)也会导致测量路径中断或主机身份无法认定,产生缺失或错误的测量结果,影响测量结果的准确性。
第二,部分网络或系统的自我封闭,如协议非公开、报文加密等,大大降低了网络测量的可行性和适用范围。
第三,P2P网络自身的Churn特性要求测量系统必须拥有快速访问网络的能力,但测量系统的速度不仅受限于自身的网络访问能力,还与测量过程中查询路径对应的物理链路的传输能力以及交互节点的网络访问速度有关,数据或多或少存在失真;而良好的测量方法学,不仅可以有的放矢地考察关键的系统参数,获取更为关键、全面、更具代表性的数据,而且能在测量结果准确性和数据完整性上取得合理折中。
P2P测量方法与传统的网络测量方法相同,通常分为主动测量和被动测量,前者侧重于端到端以及响应延迟等用户行为分析,后者则侧重于流量识别、统计和带宽分析,而实际中也可能是两种方法的结合。
主动测量属于介入式测量,一般需要高带宽的网络接入。通常采用模拟客户端的方式实现轻量级的测量终端,并主动参与网络,通过与其他主机的交互来收集数据。但由于P2P网络结构上的差异,主动测量方法亦不尽相同。根据P2P网络的结构,主动测量方法可分为以下4种。
(1)面向中央索引服务器的主动测量方法,该方法适用于类Naspter等具有中央索引服务器的P2P网络。Saroiu等[32]曾通过构造大量热点流行资源向近160个索引服务器发送文件查询请求,用于收集节点信息。此外,他们同时向索引服务器查询每个节点的带宽、共享文件数量、IP地址等信息,一次测量过程需3~4 min。可见,该方法仅能获取整个网络的部分文件或节点(受限于查询),对整个网络的认识需要一定的假设和推断。
(2)面向无结构化网络的主动测量方法,该方法适用于类Gnutella等无结构化网络。文献[32]通过模拟Gnutella协议,持续不断地访问gnutellahosts.com和router.limewire.com等知名节点收集Gnutella节点,并周期性地发送带有较大TTL的PING消息,在接收到PONG消息后,把新发现的节点加入现有节点队列,直到再无新节点加入,2 min内可收到8 000到10 000个节点。Stutzbach等[33]设计了Cruiser的Gnutella拓扑获取系统,其使用了多种方法提高系统获取速度、如爬行友好的握手机制、仅爬行上层拓扑、分布式架构、异步通信和适当超时,其效率可达7 min获取百万级节点规模。王勇等[34]对两层Gnutella网络进行了详尽的测量,对比了Gnutella网络的测量性能,提出基于正反馈分布式拓扑获取系统,快速获取Gnutella网络节点拓扑,其核心思想是通过分析Gnutella网络拓扑上层节点间度概率密度以及节点排名,动态调整初始节点集合,节点度高的优先抓取,其节点地址信息的获取速度为100~160 KB/min。
(3)面向结构化网络的主动测量方法,该方法适用于类Kad等结构化网络。文献[35,36]均对当前最为流行的结构化网络进行了测量,但并未对测量方法进行详细描述和讨论。文献[35]采用了类似网页爬虫的朴素测量方法,通过本地路由表内的节点指针,按照先广和迭代搜索方式发现新节点,当无新节点加入时则终止测量。为了加快搜索,其在内存中保存了所有节点。Zhou等[37]设计了一种可扩展的DHT爬虫系统,主要考察了路由表的K桶结构,指出只要合理地构造了若干特定ID向被测量节点发起查询,通常经过几轮查询即可获得被测量节点的所有路由表项。在此基础上只要给定一个测量节点集合,就可以有效地测量DHT网络,但上述两种方法都是利用节点间的邻接关系,可能导致部分节点丢失[38]。
(4)面向混杂网络的主动测量方法,该方法适用于类BitTorrent等混杂网络。混杂网络的构成较为复杂,系统组件一般分散在多个网络上,如在BitTorrent网络中,种子文件发布在Web站点,节点索引分别存储在Tracker服务器和DHT网络,每个节点既是下载同一共享资源的Swarm网络共享节点,既下载也上传,同时也是DHT网络的节点,为其他节点提供路由查询。因此,完整的数据获取需要多种测量方法相结合,共同完成。
主动测量方法是一种精细化的测量方法,其根据不同协议定制测量终端,能够针对性地获取相关数据,测量范围广泛,测量粒度可控,但主动测量方法需要对系统有详尽的了解,并依据不同网络设计测量终端,通用性较差,而且主动测量一般会引入较大的流量,对网络本身造成冲击,一定程度上也会影响网络行为或其他节点的行为,造成测量误差。
被动测量属于无介入式测量。通常采用旁路监听方式捕获并分析流经若干测量点的网络流量,并依据端口、协议特征或统计信息识别P2P流量,最后将数据聚合形成会话、用户和社区等上层应用信息。而被动测量存在另外一种形式,即测量终端部署在网络中,仅接收数据报文,并不发送,这在P2P网络测量中较为常见。P2P被动测量的核心难点问题会转化为P2P流量识别问题,详细的内容将在下一章展开。
本章后续小节将有针对性地介绍最流行的 P2P 应用下的测量系统,包括BitTorrent系统和eMule系统,内容将涵盖系统测量方法、测量结果分析以及P2P系统建模技术等方面。