Network Working Group                                  G. Camarillo, Ed.
Request for Comments: 5694                                   For the IAB
Category: Informational                                    November 2009
        
Network Working Group                                  G. Camarillo, Ed.
Request for Comments: 5694                                   For the IAB
Category: Informational                                    November 2009
        

Peer-to-Peer (P2P) Architecture: Definition, Taxonomies, Examples, and Applicability

对等(P2P)体系结构:定义、分类、示例和适用性

Abstract

摘要

In this document, we provide a survey of P2P (Peer-to-Peer) systems. The survey includes a definition and several taxonomies of P2P systems. This survey also includes a description of which types of applications can be built with P2P technologies and examples of P2P applications that are currently in use on the Internet. Finally, we discuss architectural trade-offs and provide guidelines for deciding whether or not a P2P architecture would be suitable to meet the requirements of a given application.

在本文中,我们对P2P(对等)系统进行了概述。该调查包括P2P系统的定义和几种分类法。这项调查还包括对使用P2P技术可以构建哪些类型的应用程序的描述,以及当前在互联网上使用的P2P应用程序的示例。最后,我们讨论了体系结构的权衡,并为确定P2P体系结构是否适合满足给定应用程序的需求提供了指导。

Status of This Memo

关于下段备忘

This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.

本备忘录为互联网社区提供信息。它没有规定任何类型的互联网标准。本备忘录的分发不受限制。

Copyright Notice

版权公告

Copyright (c) 2009 IETF Trust and the persons identified as the document authors. All rights reserved.

版权所有(c)2009 IETF信托基金和确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the BSD License.

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(http://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括《信托法律条款》第4.e节中所述的简化BSD许可文本,并且提供BSD许可中所述的代码组件时不提供任何担保。

Table of Contents

目录

   1. Introduction ....................................................3
   2. Definition of a P2P System ......................................3
      2.1. Applying the P2P Definition to the DNS .....................5
      2.2. Applying the P2P Definition to SIP .........................5
      2.3. Applying the P2P Definition to P2PSIP ......................6
      2.4. Applying the P2P Definition to BitTorrent ..................7
   3. Functions in a P2P System .......................................7
   4. Taxonomies for P2P Systems ......................................8
   5. P2P Applications ...............................................10
      5.1. Content Distribution ......................................10
      5.2. Distributed Computing .....................................12
      5.3. Collaboration .............................................13
      5.4. Platforms .................................................14
   6. Architectural Trade-Offs and Guidance ..........................14
   7. Security Considerations ........................................16
   8. Acknowledgements ...............................................19
   9. IAB Members at the Time of This Writing ........................19
   10. Informative References ........................................19
   Appendix A.  Historical Background on Distributed Architectures ...25
        
   1. Introduction ....................................................3
   2. Definition of a P2P System ......................................3
      2.1. Applying the P2P Definition to the DNS .....................5
      2.2. Applying the P2P Definition to SIP .........................5
      2.3. Applying the P2P Definition to P2PSIP ......................6
      2.4. Applying the P2P Definition to BitTorrent ..................7
   3. Functions in a P2P System .......................................7
   4. Taxonomies for P2P Systems ......................................8
   5. P2P Applications ...............................................10
      5.1. Content Distribution ......................................10
      5.2. Distributed Computing .....................................12
      5.3. Collaboration .............................................13
      5.4. Platforms .................................................14
   6. Architectural Trade-Offs and Guidance ..........................14
   7. Security Considerations ........................................16
   8. Acknowledgements ...............................................19
   9. IAB Members at the Time of This Writing ........................19
   10. Informative References ........................................19
   Appendix A.  Historical Background on Distributed Architectures ...25
        
1. Introduction
1. 介绍

P2P (Peer-to-peer) systems have received a great deal of attention in the last few years. A large number of scientific publications investigate different aspects of P2P systems, several scientific conferences explicitly focus on P2P networking, and there is an Internet Research Task Force (IRTF) Research Group (RG) on P2P systems (the Peer-to-Peer RG). There are also several commercial and non-commercial applications that use P2P principles running on the Internet. Some of these P2P applications are among the most widely used applications on the Internet at present.

P2P(Peer-to-Peer)系统在过去几年中受到了广泛的关注。大量科学出版物研究了P2P系统的不同方面,一些科学会议明确关注P2P网络,还有一个互联网研究工作组(IRTF)研究小组(RG)研究P2P系统(对等RG)。还有一些商业和非商业应用程序使用在互联网上运行的P2P原则。其中一些P2P应用程序是目前互联网上应用最广泛的应用程序之一。

However, despite all the above, engineers designing systems or developing protocol specifications do not have a common understanding of P2P systems. More alarming is the fact that many people in the telecom and datacom industries believe that P2P is synonymous with illegal activity, such as the illegal exchange of content over the Internet or P2P botnets.

然而,尽管如此,设计系统或开发协议规范的工程师对P2P系统并没有共同的理解。更令人担忧的是,电信和数据通信行业的许多人认为P2P是非法活动的同义词,例如通过互联网或P2P僵尸网络非法交换内容。

The goal of this document is to discuss the trade-offs involved in deciding whether a particular application can be best designed and implemented using a P2P paradigm or a different model (e.g., a client-server paradigm). The document also aims to provide architectural guidelines to assist in making such decisions. This document provides engineers with a high-level understanding of what defines a P2P system, what types of P2P systems exist, the characteristics that can be expected from such systems, and what types of applications can be implemented using P2P technologies. Such understanding is essential in order to appreciate the trade-offs referred to above. In addition, we stress the importance of the fact that P2P systems can be used to implement perfectly legitimate applications and business models by providing several examples throughout the document.

本文档的目的是讨论在决定特定应用程序是否可以使用P2P范式或其他模型(例如,客户机-服务器范式)进行最佳设计和实现时所涉及的权衡。该文件还旨在提供架构指南,以协助做出此类决策。本文档为工程师提供了对P2P系统定义、存在的P2P系统类型、此类系统的预期特征以及使用P2P技术可以实现的应用程序类型的高级理解。这种理解对于理解上述权衡至关重要。此外,我们还强调了P2P系统可用于实现完全合法的应用程序和业务模型这一事实的重要性,在整个文档中提供了几个示例。

2. Definition of a P2P System
2. P2P系统的定义

In order to discuss P2P systems, we first need a working definition of a P2P system. In this section, we provide such a definition. All discussions in this document apply to systems that comply with that definition. In addition to providing examples of P2P systems, we provide a few examples of systems that comply only partially with the definition and, thus, cannot be strictly considered P2P systems. Since these systems are not fully P2P compliant, some of the discussions in this document may apply to them while others may not. We have chosen to include those examples anyway to stress the fact that P2P and centralized architectures are not completely disjoint

为了讨论P2P系统,我们首先需要一个P2P系统的工作定义。在本节中,我们提供了这样一个定义。本文件中的所有讨论均适用于符合该定义的系统。除了提供P2P系统的示例外,我们还提供了一些仅部分符合定义的系统示例,因此不能严格地将其视为P2P系统。由于这些系统不完全符合P2P,因此本文档中的一些讨论可能适用于它们,而其他的可能不适用。无论如何,我们选择包含这些示例,以强调P2P和集中式架构并非完全不相交的事实

alternatives. There are many examples of systems that fall, for instance, somewhere in between a pure P2P system and a centralized one.

选择。举例来说,有许多系统介于纯P2P系统和集中式系统之间。

P2P is a term used in many contexts, sometimes with slightly different meanings. It is possible to find several alternative definitions, which are not all fully equivalent, in the existing scientific literature. If we include other material (e.g., marketing material) in our search for a definition on P2P, the diversity of definitions is even higher.

P2P是一个在许多上下文中使用的术语,有时含义略有不同。可以在现有的科学文献中找到几种不同的定义,这些定义并不完全相同。如果我们在搜索P2P定义时包含其他材料(如营销材料),定义的多样性甚至更高。

The issue is that there is no clear border between a P2P paradigm and other supposedly opposite paradigms such as client-server [Milojicic2002]. In the extremes, some architectures are clearly P2P while others are clearly client-server. However, there are architectures that can be considered to be either or both, depending on the definition for P2P being considered. Consequently, it is important to understand what is common to all definitions of P2P and what are the non-common traits some authors include in their own definitions.

问题在于,P2P范式与其他假定相反的范式(如客户机-服务器[Milojicic202])之间没有明确的界限。在极端情况下,一些架构显然是P2P,而另一些架构显然是客户机-服务器。然而,根据所考虑的P2P的定义,有些体系结构可以被认为是其中之一或两者兼而有之。因此,了解P2P的所有定义的共同点以及一些作者在自己的定义中包含的非共同特征是很重要的。

We consider a system to be P2P if the elements that form the system share their resources in order to provide the service the system has been designed to provide. The elements in the system both provide services to other elements and request services from other elements.

我们认为一个系统是P2P的,如果构成系统的元素共享它们的资源,以便提供系统被设计来提供的服务。系统中的元素既向其他元素提供服务,也向其他元素请求服务。

In principle, all the elements in the system should meet the previous criteria for the system to be considered P2P. However, in practice, a system can have a few exceptions (i.e., a few nodes that do not meet the criteria) and still be considered P2P. For example, a P2P system can still be considered P2P even if it has a centralized enrollment server. On the other hand, some systems divide endpoints between peers and clients. Peers both request and provide services while clients generally only request services. A system where most endpoints behaved as clients could not strictly be considered P2P.

原则上,系统中的所有元素都应满足之前将系统视为P2P的标准。然而,在实践中,一个系统可能有一些例外(即,一些不符合标准的节点),并且仍然被认为是P2P。例如,即使P2P系统有一个集中的注册服务器,也可以将其视为P2P系统。另一方面,一些系统在对等端和客户端之间划分端点。对等方请求并提供服务,而客户端通常只请求服务。大多数端点作为客户端的系统不能严格地视为P2P。

Although most definitions do not state it explicitly, many implicitly assume that for a system to be P2P, its nodes need to be involved in transactions that are related to services that do not directly benefit the nodes.

尽管大多数定义没有明确说明,但许多定义隐含地假设,对于要成为P2P的系统,其节点需要参与与服务相关的事务,而这些服务不会直接使节点受益。

Some authors add that the elements that form the P2P system, which unsurprisingly are called peers, should be able to communicate directly between themselves without passing intermediaries [Schollmeier2001]. Other authors add that the system should be self organizing and have decentralized control [Roussopoulus2004].

一些作者补充说,构成P2P系统的元素(不足为奇地被称为对等点)应该能够在它们之间直接通信,而无需经过中介[Schollmier2001]。其他作者补充说,系统应该是自组织的,并具有分散控制[Roussopoulus2004]。

Note that the previous definitions are given within the context of a single individual service. A complex service can be made up of several individual services. Some of these individual services can consist of P2P services and some of them can consist of client-server services. For example, a file sharing client may include a P2P client to perform the actual file sharing and a web browser to access additional information on a centralized web server. Additionally, there are architectures where a client-server system can serve as a fallback for a service normally provided by a P2P system, or vice versa.

请注意,前面的定义是在单个服务的上下文中给出的。一个复杂的服务可以由几个单独的服务组成。其中一些单独的服务可以由P2P服务组成,而其中一些可以由客户机-服务器服务组成。例如,文件共享客户端可以包括执行实际文件共享的P2P客户端和访问集中式web服务器上的附加信息的web浏览器。此外,在一些体系结构中,客户机-服务器系统可以作为通常由P2P系统提供的服务的后备,反之亦然。

Providing a service typically involves processing or storing data. According to our definition, in a P2P system, peers share their processing and storage capacity (i.e., their hardware and software resources) so that the system can provide a service. For example, if the service to be provided is a file distribution service, different peers within the system will store different files. When a given peer wants to get a particular file, the peer will first discover which peer or peers have that file and then obtain the file from those peers.

提供服务通常涉及处理或存储数据。根据我们的定义,在P2P系统中,节点共享其处理和存储容量(即硬件和软件资源),以便系统能够提供服务。例如,如果要提供的服务是文件分发服务,则系统中的不同对等方将存储不同的文件。当给定的对等方想要获取特定的文件时,该对等方将首先发现哪些对等方拥有该文件,然后从这些对等方获取该文件。

The definition for P2P provides us with a criterion to decide whether or not a system is P2P. As examples, in the following sections we apply the definition to the DNS, SIP, P2PSIP, and BitTorrent and discuss which of these systems are P2P.

P2P的定义为我们提供了一个判断系统是否是P2P的标准。作为示例,在以下部分中,我们将定义应用于DNS、SIP、P2PSIP和BitTorrent,并讨论其中哪些系统是P2P系统。

2.1. Applying the P2P Definition to the DNS
2.1. 将P2P定义应用于DNS

The DNS is a hierarchical distributed system that has sometimes been classified as a hierarchical client-server system and sometimes as a P2P system [Milojicic2002]. According to our definition, the DNS is not a P2P system because DNS resolvers are service requesters but not service providers. The elements in a system need to be both service requesters and service providers for the system to be considered P2P.

DNS是一个分层分布式系统,有时被分类为分层客户端-服务器系统,有时被分类为P2P系统[Milojicic202]。根据我们的定义,DNS不是P2P系统,因为DNS解析程序是服务请求者而不是服务提供者。系统中的元素需要同时是服务请求者和服务提供者,才能将系统视为P2P。

2.2. Applying the P2P Definition to SIP
2.2. P2P定义在SIP中的应用

SIP [RFC3261] is a rendezvous protocol that allows a user to locate a remote user and establish a communication session with that remote user. Once the remote user is located, sessions are established in a similar way in all SIP systems: directly between the nodes involved in the session. However, the rendezvous function can be implemented in different ways: the traditional SIP way and the P2P way. This section discusses the former. Section 2.3 discusses the latter.

SIP[RFC3261]是一种会合协议,允许用户定位远程用户并与该远程用户建立通信会话。一旦找到远程用户,会话将以类似的方式在所有SIP系统中建立:直接在会话所涉及的节点之间。然而,集合功能可以通过不同的方式实现:传统的SIP方式和P2P方式。本节讨论前者。第2.3节讨论了后者。

In traditional SIP, a central server is typically responsible for a DNS domain. User agents in the domain register with the server. This way, when a user agent wants to communicate with a remote user

在传统的SIP中,中央服务器通常负责DNS域。域中的用户代理向服务器注册。这样,当用户代理想要与远程用户通信时

agent in the same domain, the user agent consults the server, which returns the contact information of the remote user agent. Session establishment occurs directly between the user agents, without the involvement of the server.

代理在同一域中,用户代理咨询服务器,服务器返回远程用户代理的联系信息。会话建立直接在用户代理之间进行,不需要服务器参与。

Inter-domain communications in SIP are implemented using server federations. The servers responsible for each domain form a federation in which they can communicate with each other. This way, when a user agent wants to communicate with a remote user agent in a different domain, the user agent consults its local server, which in turn consults the server responsible for the remote user agent's domain.

SIP中的域间通信是使用服务器联盟实现的。负责每个域的服务器形成一个联合体,它们可以在其中相互通信。这样,当用户代理想要与不同域中的远程用户代理通信时,用户代理会咨询其本地服务器,而本地服务器又会咨询负责远程用户代理域的服务器。

SIP user agents act as both clients and servers. A given user agent can act as a client in a particular transaction and as a server in a subsequent transaction. However, traditional SIP cannot be considered a P2P system because user agents only share their resources for their own benefit. That is, a given user agent is only involved in transactions related to a service that benefits (somehow) the user agent itself. For example, any given user agent is only involved in SIP INVITE transactions intended to establish sessions that involve the user agent. For a system to be P2P, its nodes need to be involved in transactions that benefit others, that is, transactions that are related to services that do not benefit the nodes directly.

SIP用户代理同时充当客户端和服务器。给定的用户代理可以在特定事务中充当客户机,在后续事务中充当服务器。然而,传统的SIP不能被视为P2P系统,因为用户代理只为自身利益共享资源。也就是说,给定的用户代理只参与与服务相关的事务,该服务以某种方式使用户代理自身受益。例如,任何给定的用户代理仅参与旨在建立涉及该用户代理的会话的SIP INVITE事务。对于要成为P2P的系统,其节点需要参与有利于他人的事务,也就是说,与服务相关的事务不会直接使节点受益。

2.3. Applying the P2P Definition to P2PSIP
2.3. 将P2P定义应用于P2PSIP

In addition to the traditional way of using SIP, SIP can also be used in a way that is generally referred to as P2PSIP (P2PSIP is the name of the IETF working group developing the technology). In P2PSIP, user agents do not register their contact information with a central server. Instead, they register it with an overlay formed by the user agents in the system. This way, when a user agent wants to communicate with a remote user agent, the user agent consults the overlay, which returns the contact information of the remote user agent. Session establishment occurs, as usual, directly between the user agents. P2PSIP is a P2P system because nodes share their resources by storing data that is not related to them (i.e., contact information of different user agents) and are involved in transactions that are related to services that do not revert directly to the nodes themselves (e.g., the rendezvous of two remote user agents).

除了使用SIP的传统方式外,SIP还可以以通常称为P2PSIP的方式使用(P2PSIP是开发该技术的IETF工作组的名称)。在P2PSIP中,用户代理不向中央服务器注册其联系信息。相反,他们将其注册到由系统中的用户代理组成的覆盖中。这样,当用户代理想要与远程用户代理通信时,用户代理将咨询覆盖,覆盖将返回远程用户代理的联系信息。会话建立通常直接在用户代理之间进行。P2PSIP是一个P2P系统,因为节点通过存储与其无关的数据(即不同用户代理的联系信息)共享其资源,并且参与与服务相关的事务,这些服务不会直接恢复到节点本身(例如,两个远程用户代理的会合)。

2.4. Applying the P2P Definition to BitTorrent
2.4. 将P2P定义应用于BitTorrent

BitTorrent [BitTorrent] is a protocol used to distribute files. The group of endpoints involved in the distribution of a particular file is called a swarm. The file is divided into several pieces. An endpoint interested in the file needs to download all the pieces of the file from other endpoints in the swarm. Endpoints downloading pieces of the file also upload pieces they already have to other endpoints in the swarm. An endpoint that both downloads (because it does not have the complete file yet) and uploads pieces is called a leecher (note that this definition is counterintuitive because, in other contexts, a leecher normally means someone that takes but does not give). When an endpoint has the whole file (i.e., it has all the pieces of the file), it does not need to download any pieces any longer. Therefore, it only uploads pieces to other endpoints. Such an endpoint is called a seeder.

BitTorrent[BitTorrent]是用于分发文件的协议。参与特定文件分发的端点组称为swarm。文件分为几部分。对文件感兴趣的端点需要从swarm中的其他端点下载文件的所有部分。下载文件片段的端点也会将它们已经拥有的片段上传到swarm中的其他端点。下载(因为它还没有完整的文件)和上传片段的端点称为leecher(注意,这个定义是违反直觉的,因为在其他上下文中,leecher通常指的是接受但不给予的人)。当端点拥有整个文件(即,它拥有文件的所有片段)时,它不再需要下载任何片段。因此,它只将片段上载到其他端点。这样的端点称为播种机。

BitTorrent systems are P2P systems because endpoints request services from other endpoints (i.e., download pieces from other endpoints) and provide services to other endpoints (i.e., upload pieces to other endpoints). Note, however, that a particular swarm where most endpoints were infrastructure nodes that had the complete file from the beginning and, thus, acted all the time as seeders could not be strictly considered a P2P system because most endpoints would only be providing services, not requesting them.

BitTorrent系统是P2P系统,因为端点从其他端点请求服务(即从其他端点下载片段)并向其他端点提供服务(即将片段上载到其他端点)。但是,请注意,一个特定的群,其中大多数端点都是从一开始就拥有完整文件的基础设施节点,因此一直充当播种机,不能严格地将其视为P2P系统,因为大多数端点只提供服务,而不请求服务。

3. Functions in a P2P System
3. P2P系统中的函数

P2P systems include several functions. The following functions are independent of the service provided by the P2P system. They handle how peers connect to the system.

P2P系统包括几个功能。以下功能独立于P2P系统提供的服务。它们处理对等点如何连接到系统。

o Enrollment function: nodes joining a P2P system need to obtain valid credentials to join the system. The enrollment function handles node authentication and authorization.

o 注册功能:加入P2P系统的节点需要获得有效凭据才能加入系统。注册函数处理节点身份验证和授权。

o Peer discovery function: in order to join a P2P system (i.e., to become a peer), a node needs to establish a connection with one or more peers that are already part of the system. The peer discovery function allows nodes to discover peers in the system in order to connect to them.

o 对等点发现功能:为了加入P2P系统(即成为对等点),节点需要与已经是系统一部分的一个或多个对等点建立连接。对等点发现功能允许节点发现系统中的对等点,以便连接到它们。

The functions above are provided in a centralized way in some P2P systems (e.g., through a central enrollment server and a central peer discovery server, which is sometimes called a bootstrap server). Taxonomies for P2P systems, which will be discussed in Section 4, do

上述功能在一些P2P系统中以集中方式提供(例如,通过中央注册服务器和中央对等发现服务器,有时称为引导服务器)。P2P系统的分类法(将在第4节中讨论)是

not consider these functions when classifying P2P systems. Instead, they classify P2P systems based on how the following set of functions are implemented.

在对P2P系统进行分类时不考虑这些功能。相反,他们根据以下一组功能的实现方式对P2P系统进行分类。

The following functions depend on the service provided by the P2P system. That is, not all P2P systems implement all functions. For example, a P2P system used only for storing data may not implement the computing function. In another example, a P2P system used only for computing may not implement the data storage function. Also, some of these functions are implemented in a centralized way in some P2P systems.

以下功能取决于P2P系统提供的服务。也就是说,并非所有P2P系统都实现所有功能。例如,仅用于存储数据的P2P系统可能无法实现计算功能。在另一示例中,仅用于计算的P2P系统可能不实现数据存储功能。此外,其中一些功能在一些P2P系统中以集中方式实现。

o Data indexing function: it deals with indexing the data stored in the system.

o 数据索引功能:对系统中存储的数据进行索引。

o Data storage function: it deals with storing and retrieving data from the system.

o 数据存储功能:用于存储和检索系统中的数据。

o Computation function: it deals with the computing performed by the system. Such computing can be related to, among other things, data processing or real-time media processing.

o 计算功能:处理系统执行的计算。除其他外,这种计算可以与数据处理或实时媒体处理相关。

o Message transport function: it deals with message exchanges between peers. Depending on how this function is implemented, peers can exchange protocol messages through a central server, directly between themselves, or through peers that provide overlay routing.

o 消息传输功能:处理对等点之间的消息交换。根据此功能的实现方式,对等方可以通过中心服务器、直接在它们之间或通过提供覆盖路由的对等方交换协议消息。

Depending on the service being provided, some of the functions above may not be needed. Section 5 discusses different types of P2P applications, which implement different services.

根据所提供的服务,可能不需要上述某些功能。第5节讨论了实现不同服务的不同类型的P2P应用程序。

4. Taxonomies for P2P Systems
4. P2P系统的分类

Taxonomies classify elements into groups so that they can be studied more easily. People studying similar elements can focus on common problem sets. Taxonomies also provide common terminology that is useful when discussing issues related to individual elements and groups of elements within a given taxonomy. In this section, we provide a few taxonomies for P2P systems in order to facilitate their study and to present such a common terminology.

分类法将元素划分为组,以便更容易地对其进行研究。研究类似元素的人可以专注于常见的问题集。分类法还提供了在讨论与给定分类法中的单个元素和元素组相关的问题时有用的通用术语。在本节中,我们提供了一些P2P系统的分类法,以便于对其进行研究,并提供这样一个通用术语。

Given that different authors cannot seem to agree on a single common definition for P2P, the fact that there are also many different taxonomies of P2P systems should not come as a surprise. While classifying P2P systems according to different traits is something

鉴于不同的作者似乎无法就P2P的单一通用定义达成一致,P2P系统也有许多不同的分类法这一事实并不令人惊讶。而根据不同的特征对P2P系统进行分类是很重要的

normal, the fact that different authors use the same term to indicate different things (e.g., first and second generation P2P systems mean different things for different authors) sometimes confuses readers.

通常,不同的作者使用相同的术语来表示不同的东西(例如,第一代和第二代P2P系统对不同的作者意味着不同的东西)这一事实有时会让读者感到困惑。

Arguably, the most useful classification of P2P systems has to do with the way data is indexed. That is, how the data indexing function is implemented. A P2P index can be centralized, local, or distributed [RFC4981]. With a centralized index, a central server keeps references to the data in all peers. With a local index, each peer only keeps references to its own data. With a distributed index, references to data reside at several nodes. Napster, early versions of Gnutella (up to version 0.4), and Distributed Hash Table (DHT)-based systems are examples of centralized, local, and distributed indexes, respectively.

可以说,P2P系统最有用的分类与数据的索引方式有关。也就是说,如何实现数据索引功能。P2P索引可以是集中式的、本地的或分布式的[RFC4981]。通过集中索引,中央服务器保留对所有对等中数据的引用。对于本地索引,每个对等方只保留对自己数据的引用。对于分布式索引,对数据的引用驻留在多个节点上。Napster、Gnutella的早期版本(直到版本0.4)和基于分布式哈希表(DHT)的系统分别是集中式索引、本地索引和分布式索引的示例。

Indexes can also be classified into semantic and semantic-free. A semantic index can capture relationships between documents and their metadata whereas a semantic-free index cannot [RFC4981]. While semantic indexes allow for richer searches, they sometimes (depending on their implementation) fail to find the data even if it is actually in the system.

索引还可以分为语义索引和语义自由索引。语义索引可以捕获文档及其元数据之间的关系,而无语义索引则不能[RFC4981]。虽然语义索引允许更丰富的搜索,但它们有时(取决于它们的实现)无法找到数据,即使数据实际上在系统中。

Some authors classify P2P systems by their level of decentralization. Hybrid P2P systems need a central entity to provide their services while pure P2P systems can continue to provide their services even if any single peer is removed from the system [Schollmeier2001]. According to this definition, P2P systems with a centralized index are hybrid P2P systems while systems with local and distributed indexes are pure P2P systems.

一些作者根据分散程度对P2P系统进行分类。混合P2P系统需要一个中心实体来提供其服务,而纯P2P系统可以继续提供其服务,即使从系统中删除任何单个对等点[Schollmeer2001]。根据这个定义,具有集中索引的P2P系统是混合P2P系统,而具有本地和分布式索引的系统是纯P2P系统。

Still, some authors classify pure P2P systems by the level of structure they show [Alima2005]. In unstructured systems, peers join the system by connecting themselves to any other existing peers. In structured systems, peers join the system by connecting themselves to well-defined peers based on their logical identifiers. The distinction between early unstructured systems (e.g., early versions of Gnutella), which used local indexes and had no structure at all, and structured systems (e.g., the DHT-based systems), which used distributed indexes and had a well-defined structure, was fairly clear. However, unstructured systems have evolved and now show a certain level of structure (e.g., some systems have special nodes with more functionality) and use distributed indexes. Therefore, the border between unstructured and structured is somewhat blurry.

尽管如此,一些作者还是根据他们展示的结构层次对纯P2P系统进行了分类[Alima2005]。在非结构化系统中,对等点通过将自己连接到任何其他现有对等点来加入系统。在结构化系统中,对等点通过基于其逻辑标识符将自己连接到定义良好的对等点来加入系统。早期的非结构化系统(例如Gnutella的早期版本)使用本地索引,完全没有结构,而结构化系统(例如基于DHT的系统)使用分布式索引,具有定义良好的结构,两者之间的区别相当清楚。然而,非结构化系统已经发展,现在显示出一定的结构级别(例如,一些系统具有具有更多功能的特殊节点),并使用分布式索引。因此,非结构化和结构化之间的边界有些模糊。

Some authors refer to different generations of P2P systems. For some, the first, second, and third generations consist of P2P systems using centralized indexes, flooding-based searches (i.e., using local indexes), and DHTs (i.e., DHT-based distributed indexes),

一些作者提到了不同代的P2P系统。对于一些人来说,第一代、第二代和第三代由使用集中索引、基于泛洪的搜索(即使用本地索引)和DHT(即基于DHT的分布式索引)的P2P系统组成,

respectively [Foster2003]. Other authors consider that second generation systems can also have non-DHT-based distributed indexes [Zhang2006]. Yet for other authors, the first and second generations consist of P2P systems using unstructured (typically using flooding-based searched) and structured (e.g., DHT-based) routing, respectively [RFC4981]. Talking about generations of P2P systems in a technical context is not useful (as stated previously, it is more useful to classify systems based on how they index data) because different generations are defined in different ways depending on the author and because talking about generations gives the impression that later generations are better than earlier ones. Depending on the application to be implemented, a P2P system of an earlier generation may meet the application's requirements in a better way than a system of a later generation.

分别为[2003]。其他作者认为第二代系统也可以有基于非DHT的分布式索引[AXA2006 ]。然而,对于其他作者来说,第一代和第二代P2P系统分别使用非结构化(通常使用基于泛洪的搜索)和结构化(例如,基于DHT的)路由[RFC4981]。在技术背景下谈论几代P2P系统是没有用的(如前所述,根据系统索引数据的方式对系统进行分类更有用)因为不同的一代是以不同的方式定义的,这取决于作者,而且因为谈论一代人会给人一种印象,即后代人比早期人更好。根据要实现的应用程序,较早一代的P2P系统可以比较后一代的系统更好地满足应用程序的需求。

As discussed in Section 3, the previous taxonomies do not consider the enrollment and the peer discovery functions. For example, a pure P2P system would still be considered pure even if it had centralized enrollment and peer discovery servers.

如第3节所讨论的,以前的分类法不考虑注册和对等体发现功能。例如,一个纯粹的P2P系统即使有集中的注册和对等发现服务器,也会被认为是纯粹的。

5. P2P Applications
5. P2P应用

P2P applications developed so far can be classified into the following domains [Pourebrahimi2005] [Milojicic2002]: content distribution, distributed computing, collaboration, and platforms.

迄今为止开发的P2P应用程序可分为以下领域[Pourebrahimi2005][Milojicic202]:内容分发、分布式计算、协作和平台。

5.1. Content Distribution
5.1. 内容分布

When most people think of P2P, they think of file sharing. Moreover, they think of illegal file sharing where users exchange material (e.g., songs, movies, and software in digital format) they are not legally authorized to distribute. However, despite people's perception, P2P file sharing systems are not intrinsically illegal.

当大多数人想到P2P时,他们想到的是文件共享。此外,他们认为非法文件共享是指用户交换未经合法授权分发的材料(如歌曲、电影和数字格式的软件)。然而,尽管人们认为P2P文件共享系统本质上并不非法。

P2P file sharing applications provide one out of many means to store and distribute content on the Internet. HTTP [RFC2616] and FTP [RFC0959] servers are examples of other content distribution mechanisms. People would not claim that HTTP is an illegal mechanism just because a number of users upload material that cannot be legally distributed to an HTTP server where other users can download it. The same way, it is misleading to claim that P2P is illegal just because some users use it for illegal purposes.

P2P文件共享应用程序提供了在互联网上存储和分发内容的众多方法中的一种。HTTP[RFC2616]和FTP[RFC0959]服务器是其他内容分发机制的示例。人们不会仅仅因为许多用户上传了无法合法分发到HTTP服务器的材料而声称HTTP是非法机制,其他用户可以在HTTP服务器上下载这些材料。同样,仅仅因为一些用户将P2P用于非法目的而声称P2P是非法的也是误导。

P2P content distribution systems are used to implement legitimate applications and business models that take advantage of the characteristics of these P2P systems. Examples of legitimate uses of these systems include the distribution of pre-recorded TV programs

P2P内容分发系统用于实现利用这些P2P系统特性的合法应用程序和商业模式。合法使用这些系统的例子包括分发预先录制的电视节目

[Rodriguez2005], Linux distributions [Rodriguez2005], game updates [WoW], and live TV [Peltotalo2008] [Octoshape] by parties legally authorized to distribute that content (e.g., the content owner).

[Rodriguez2005]、Linux发行版[Rodriguez2005]、游戏更新[WoW]和直播电视[Peltotalo2008][Octoshape],由合法授权分发该内容的各方(例如,内容所有者)提供。

The main advantage of P2P content distribution systems is their scalability. In general, the more popular the content handled, the more scalable the P2P system is. The peer that has the original content (i.e., the owner of a file or the source of an audio or video stream) distributes it to a fraction of the peers interested in the content, and these peers in turn distribute it to other peers also interested in the content. Note that, in general, there is no requirement for peers distributing content to be able to access it (e.g., the content may be encrypted so that peers without the decryption key are content distributors but not content consumers). Peers can distribute content to other peers in different ways. For example, they can distribute the whole content, pieces of the content (i.e., swarming), or linear combinations of pieces of content [Gkantsidis2005]. In any case, the end result is that the peer with the original content does not need to distribute the whole content to all the peers interested in it, as it would be the case when using a centralized server. Therefore, the capacity of the system is not limited by the processing capacity and the bandwidth of the peer with the original content and, thus, the quality of the whole service increases.

P2P内容分发系统的主要优势在于其可扩展性。一般来说,处理的内容越流行,P2P系统的可伸缩性就越强。具有原始内容的对等方(即,文件的所有者或音频或视频流的源)将其分发给对该内容感兴趣的对等方的一小部分,而这些对等方又将其分发给同样对该内容感兴趣的其他对等方。注意,一般来说,分发内容的对等方不需要能够访问内容(例如,可以对内容进行加密,以便没有解密密钥的对等方是内容分发方而不是内容消费者)。对等方可以以不同的方式将内容分发给其他对等方。例如,他们可以分发整个内容、内容片段(即群集)或内容片段的线性组合[Gkantsidis2005]。在任何情况下,最终结果是,具有原始内容的对等方不需要将整个内容分发给对其感兴趣的所有对等方,就像使用集中式服务器时一样。因此,系统的容量不受具有原始内容的对等方的处理能力和带宽的限制,从而提高了整个服务的质量。

An important area that determines the characteristics of a P2P distribution system is its peer selection process. Interestingly, the different parties involved in the distribution have different views on how peers should be selected. Users are interested in connecting to peers that have the content they want and also have high bandwidth and processing capacity, and low latency so that transfers are faster. The Content Delivery Network (CDN) operator wants peers to connect first to the peers who have the rarest pieces of the content being distributed in order to improve the reliability of the system (in case those peers with the rare pieces of content leave the system). Network operators prefer peers to perform local transfers within their network so that their peering and transit agreements are not negatively affected (i.e., by downloading content from a remote network despite of the content being available locally). Sometimes, all these requirements can be met at the same time (e.g., a peer with a rare piece of content has high bandwidth and processing capacity and is in the local network). However, other times the system can just try and reach acceptable trade-offs when selecting peers. These issues were the subject of the IETF P2P Infrastructure (P2PI) workshop held in 2008.

决定P2P分发系统特性的一个重要方面是其对等点选择过程。有趣的是,参与分配的不同各方对如何选择同龄人有不同的看法。用户感兴趣的是连接到具有他们想要的内容、高带宽和处理能力以及低延迟的对等方,以便传输更快。内容交付网络(CDN)运营商希望对等方首先连接到分发内容最稀少的对等方,以提高系统的可靠性(以防那些内容稀少的对等方离开系统)。网络运营商希望对等方在其网络内执行本地传输,以便其对等和传输协议不会受到负面影响(即,尽管内容在本地可用,但通过从远程网络下载内容)。有时,可以同时满足所有这些要求(例如,具有稀有内容的对等方具有高带宽和处理能力,并且位于本地网络中)。然而,在其他情况下,系统可以在选择对等点时尝试达成可接受的权衡。这些问题是2008年举行的IETF P2P基础设施(P2PI)研讨会的主题。

Network operators also find that, depending on the dimensioning of their networks (e.g., where the bottlenecks are), the different traffic patterns generated by P2P or centralized CDNs can be more or less easily accommodated by the network [Huang2007].

网络运营商还发现,根据其网络的规模(例如瓶颈所在的位置),P2P或集中式CDN生成的不同流量模式或多或少可以被网络轻松容纳[2007]。

An example of a sensor network based on P2P content distribution and Delay-tolerant Networking (DTL) is ZebraNet [Juang2002]. ZebraNet is a network used to track zebras in the wild. Each zebra carries a tracking collar that gathers data about the zebra (e.g., its position) at different times. Mobile stations communicate wirelessly with the collars in order to gather and consolidate data from different zebras. Since not all the zebras get close enough to a mobile station for their collars to be able to communicate with the station, the collars communicate among them exchanging the data they have gathered. In this way, a given collar provides the mobile station with data from different zebras, some of which may never get close enough to the mobile station. P2P networks are especially useful in situations where it is impossible to deploy a communication infrastructure (e.g., due to national park regulations or potential vandalism) such as in the previous example or when tracking reindeers in Lapland [SNC] (this project has focused on DTNs more than on P2P so far, but some of its main constraints are similar to the ones in ZebraNet). Note however that sensor networks such as ZebraNet cannot be strictly considered P2P because the only node issuing service requests (i.e., the only node interested in receiving data) is a central node (i.e., the mobile station).

ZebraNet[Juang2002]是基于P2P内容分发和延迟容忍网络(DTL)的传感器网络的一个示例。斑马网是一个用来追踪野生斑马的网络。每只斑马都有一个跟踪项圈,可以在不同的时间收集有关斑马的数据(例如,斑马的位置)。移动站和项圈进行无线通信,以便收集和整合来自不同斑马的数据。由于并非所有斑马都离移动站足够近,以至于它们的项圈能够与移动站进行通信,因此项圈在它们之间进行通信,交换它们收集的数据。通过这种方式,一个给定的项圈向移动台提供来自不同斑马的数据,其中一些斑马可能永远无法接近移动台。P2P网络在无法部署通信基础设施的情况下(例如,由于国家公园法规或潜在的故意破坏行为)尤其有用,如前一个例子或在拉普兰追踪驯鹿[SNC](到目前为止,该项目更多地关注DTN,而不是P2P,但其一些主要限制条件与ZebraNet中的类似)。但是,请注意,ZebraNet等传感器网络不能严格视为P2P,因为发出服务请求的唯一节点(即,唯一对接收数据感兴趣的节点)是中心节点(即,移动台)。

5.2. Distributed Computing
5.2. 分布式计算

In P2P distributed computing, each task is divided into independent subtasks that can be completed in parallel (i.e., no inter-task communication) and delivered to a peer. The peer completes the subtask using its resources and returns the result. When all the subtasks are completed, their results are combined to obtain the result of the original task.

在P2P分布式计算中,每个任务被划分为独立的子任务,这些子任务可以并行完成(即,没有任务间通信)并交付给对等方。对等方使用其资源完成子任务并返回结果。当所有子任务都完成时,它们的结果将合并以获得原始任务的结果。

Peers in P2P distributed computing systems are typically distributed geographically and are connected among them through wide-area networks. Conversely, in cluster computing, nodes in a cluster are typically physically close to each other (often in the same room) and have excellent communication capabilities among themselves. Consequently, computer clusters can divide tasks into subtasks that are not completely independent from one another and that cannot be completed in parallel. The excellent communication capabilities among the nodes in the cluster make it possible to synchronize the completion of such tasks. Since computers in a cluster are so tightly integrated, cluster computing techniques are not typically considered P2P networking.

P2P分布式计算系统中的节点通常分布在不同的地理位置,并通过广域网相互连接。相反,在集群计算中,集群中的节点通常在物理上彼此接近(通常在同一个房间中),并且它们之间具有出色的通信能力。因此,计算机集群可以将任务划分为相互不完全独立且不能并行完成的子任务。群集中节点之间出色的通信能力使同步完成此类任务成为可能。由于集群中的计算机是如此紧密地集成在一起,集群计算技术通常不被认为是P2P网络。

The main advantage of P2P distributed computing systems is that a number of regular computers can deliver the performance of a much more powerful (and typically expensive) computer. Nevertheless, at present, P2P distributed computing can only be applied to tasks that can be divided into independent subtasks that can be completed in parallel. Tasks that do not show this characteristic are better performed by a single powerful computer.

P2P分布式计算系统的主要优点是,许多常规计算机可以提供功能更强大(通常更昂贵)的计算机的性能。然而,目前,P2P分布式计算只能应用于可划分为独立子任务并可并行完成的任务。不显示此特征的任务最好由一台功能强大的计算机执行。

Note that even though distributed computing, in general, can be considered P2P (which is why we have included it in this section as an example of a P2P application), most current systems whose main focus is distributed computing do not fully comply with the definition for P2P provided in Section 2. The reason is that, in those systems, service requests are typically generated only by a central node. That is, most nodes do not generate service requests (i.e., create tasks). This is why Grid computing [Foster1999] cannot be strictly considered P2P [Lua2005]. Another well-known example that cannot strictly be considered P2P either is SETI@home (Search for Extra-Terrestrial Intelligence) [Seti], where the resources of many computers are used to analyze radio telescope data. MapReduce [Dean2004], a programming model for processing large data sets, cannot strictly be considered P2P either, for the same reason. On the other hand, a number of collaboration applications implement distributed computing functions in a P2P way (see Section 5.3).

请注意,尽管分布式计算通常可以被视为P2P(这就是为什么我们将其作为P2P应用程序的示例包含在本节中),但大多数主要关注分布式计算的当前系统并不完全符合第2节中提供的P2P定义。原因是,在这些系统中,服务请求通常仅由中心节点生成。也就是说,大多数节点不生成服务请求(即创建任务)。这就是为什么网格计算[Foster1999]不能被严格地视为P2P[Lua2005]。另一个不能严格被认为是P2P的著名例子是SETI@home(搜索外星智能)[Seti],许多计算机的资源用于分析射电望远镜数据。MapReduce[Dean2004]是一种处理大型数据集的编程模型,出于同样的原因,也不能严格地将其视为P2P。另一方面,许多协作应用程序以P2P方式实现分布式计算功能(参见第5.3节)。

Another form of distributed computing that cannot be strictly considered P2P (despite its name) are P2P botnets [Grizzard2007]. In P2P botnets, service requests, which usually consist of generating spam or launching Distributed Denial-of-Service (DDoS) attacks, are typically generated by a central node (or a few central nodes); that is why they cannot be strictly considered P2P. An example of this type of P2P botnet that propagates using a DHT-based overlay is the Storm botnet [Kanich2008]. In addition to their distributed propagation techniques, some P2P botnets also use a distributed command and control channel, which makes it more difficult to combat them than traditional botnets using centralized channels [Cooke2005]. DHT-based overlays can also be used to support the configuration of different types of radio access networks [Oechsner2006].

另一种不能被严格视为P2P(尽管其名称)的分布式计算形式是P2P僵尸网络[Grizzard2007]。在P2P僵尸网络中,通常由生成垃圾邮件或发起分布式拒绝服务(DDoS)攻击组成的服务请求通常由一个中心节点(或几个中心节点)生成;这就是为什么不能严格地将它们视为P2P。使用基于DHT的覆盖进行传播的此类P2P僵尸网络的一个例子是Storm僵尸网络[Kanich2008]。除了分布式传播技术外,一些P2P僵尸网络还使用分布式命令和控制通道,这使得与使用集中式通道的传统僵尸网络相比更难对付它们[Cooke2005]。基于DHT的覆盖还可用于支持不同类型的无线接入网络的配置[Oechsner2006]。

5.3. Collaboration
5.3. 协作

P2P collaboration applications include communication applications such as Voice over IP (VoIP) and Instant Messaging (IM) applications. Section 2.3 included discussions on P2PSIP systems, which are an example of a standard-based P2P collaboration application. There are also proprietary P2P collaboration applications on the Internet [Skype]. Collaboration applications typically provide rendezvous, Network Address Translators (NAT) traversal, and a set of media-

P2P协作应用程序包括通信应用程序,如IP语音(VoIP)和即时消息(IM)应用程序。第2.3节讨论了P2PSIP系统,这是基于标准的P2P协作应用程序的一个示例。互联网[Skype]上也有专有的P2P协作应用程序。协作应用程序通常提供会合、网络地址转换器(NAT)遍历和一组媒体-

related functions (e.g., media mixing or media transcoding). Note that some of these functions (e.g., media transcoding) are, effectively, a form of distributed computing.

相关功能(例如,媒体混合或媒体转码)。请注意,其中一些功能(例如,媒体转码)实际上是分布式计算的一种形式。

P2P rendezvous systems are especially useful in situations where there is no infrastructure. A few people with no Internet connectivity setting up an ad hoc system to exchange documents or the members of a recovery team communicating among themselves in a disaster area are examples of such situations. P2PSIP is sometimes referred to as infrastructureless SIP to distinguish it from traditional SIP, which relies on a rendezvous server infrastructure.

P2P会合系统在没有基础设施的情况下特别有用。一些没有Internet连接的人建立了一个临时系统来交换文档,或者恢复团队的成员在灾区相互通信就是此类情况的例子。P2PSIP有时被称为无基础设施SIP,以区别于依赖集合服务器基础设施的传统SIP。

5.4. Platforms
5.4. 平台

P2P platforms can be used to build applications on top of them. They provide functionality the applications on top of them can use. An example of such a platform is JXTA [Gong2001]. JXTA provides peer discovery, grouping of peers, and communication between peers. The goal with these types of P2P platforms is that they become the preferred environment for application developers. They take advantage of the good scalability properties of P2P systems.

P2P平台可用于在其上构建应用程序。它们提供了上面的应用程序可以使用的功能。JXTA[2001]就是这样一个平台的例子。JXTA提供对等点发现、对等点分组以及对等点之间的通信。这些类型的P2P平台的目标是成为应用程序开发人员的首选环境。它们利用了P2P系统良好的可伸缩性。

6. Architectural Trade-Offs and Guidance
6. 架构权衡和指导

In this document, we have provided a brief overview of P2P technologies. In order to dispel the notion that P2P technologies can only be used for illegal purposes, we have discussed a number of perfectly legitimate applications that have been implemented using P2P. Examples of these applications include video conferencing applications [Skype], the distribution of pre-recorded TV programs [Rodriguez2005], Linux distributions [Rodriguez2005], game updates [WoW], and live TV [Peltotalo2008] [Octoshape] by parties legally authorized to distribute that content.

在本文档中,我们简要概述了P2P技术。为了消除P2P技术只能用于非法目的的概念,我们讨论了一些使用P2P实现的完全合法的应用程序。这些应用程序的示例包括视频会议应用程序[Skype]、预录电视节目的发行[Rodriguez2005]、Linux发行版[Rodriguez2005]、游戏更新[WoW]以及由合法授权发行该内容的各方发行的直播电视[Peltotalo2008][Octoshape]。

When deciding whether or not to use a P2P architecture to implement a given application, it is important to consider the general characteristics of P2P systems and evaluate them against the application's requirements. It is not possible to provide any definitive rule to decide whether or not a particular application would be implemented best using P2P. Instead, we discuss a set of trade-offs to be considered when making architectural decisions and provide guidance on which types of requirements are better met by a P2P architecture (security-related aspects are discussed in Section 7). Ultimately, applications' operational requirements need to be analyzed on a case-by-case basis in order to decide the most suitable architecture.

当决定是否使用P2P体系结构来实现给定的应用时,重要的是考虑P2P系统的一般特性,并根据应用的需求对它们进行评估。不可能提供任何确定的规则来决定是否最好地使用P2P实现特定应用程序。相反,我们讨论了在做出体系结构决策时要考虑的一组权衡,并提供了关于P2P体系结构更好地满足哪些类型需求的指导(第7节讨论了与安全相关的方面)。最终,需要逐个分析应用程序的操作需求,以确定最合适的体系结构。

P2P systems are a good option when there is no existing infrastructure and deploying it is difficult for some reason. Ad hoc systems are usually good candidates to use P2P architectures. Disaster areas where existing infrastructures have been destroyed or rendered unusable can also benefit from P2P systems.

P2P系统是一个很好的选择,当没有现有的基础设施和部署它是困难的原因。adhoc系统通常是使用P2P体系结构的理想选择。现有基础设施遭到破坏或无法使用的灾区也可以受益于P2P系统。

One of the main features of P2P systems is their scalability. Since the system can leverage the processing and storage capacity of all the peers in the system, increases in the system's load are tackled by having the peers use more of their processing or storage capacity. Adding new peers generally increases the system's load but also increases the system's processing and storage capacity. That is, there is no typical need to update any central servers to be able to deal with more users or more load [Leibniz2007]. Adaptive P2P systems tune themselves in order to operate in the best possible mode when conditions such as number of peers or churn rate change [Mahajan2003]. In any case, at present, maintaining a running DHT requires nontrivial operational efforts [Rhea2005].

P2P系统的主要特征之一是其可伸缩性。由于系统可以利用系统中所有对等方的处理和存储容量,因此通过让对等方使用更多的处理或存储容量来解决系统负载增加的问题。添加新的对等点通常会增加系统的负载,但也会增加系统的处理和存储容量。也就是说,通常不需要更新任何中央服务器来处理更多用户或负载[Leibniz2007]。自适应P2P系统自我调整,以便在对等点数量或流失率等条件发生变化时以最佳模式运行[Mahajan2003]。在任何情况下,目前,维护运行中的DHT都需要大量的操作工作[Rhea2005]。

Robustness and reliability are important features in many systems. For many applications to be useful, it is essential that they are dependable [RFC4981]. While there are many techniques to make centralized servers highly available, peers in a P2P system are not generally expected to be highly available (of course, it is also possible to build a more expensive P2P system with only highly available peers). P2P systems are designed to cope with peers leaving the system ungracefully (e.g., by crashing). P2P systems use techniques such as data replication and redundant routing table entries to improve the system's reliability. This way, if a peer crashes, the data it stored is not lost and can still be found in the system.

鲁棒性和可靠性是许多系统的重要特征。对于许多有用的应用程序,其可靠性至关重要[RFC4981]。虽然有许多技术可以使集中式服务器高度可用,但P2P系统中的对等点通常不被认为是高度可用的(当然,也可以只使用高度可用的对等点构建更昂贵的P2P系统)。P2P系统的设计目的是为了应对对等点不正常地离开系统(例如崩溃)。P2P系统使用数据复制和冗余路由表项等技术来提高系统的可靠性。这样,如果对等机崩溃,它存储的数据不会丢失,并且仍然可以在系统中找到。

The performance of a P2P system when compared to a server-based system depends on many factors (e.g., the dimensioning of the server-based system). One of the most important factors is the type of task to be performed. As we discussed in Section 5.2, if the task that needs to be computed can be divided into independent subtasks that can be completed in parallel, a P2P distributed computing system made up of regular computers may be able to perform better than even a super computer. If the task at hand consists of completing database queries, a well-dimensioned centralized database may be faster than a DHT.

与基于服务器的系统相比,P2P系统的性能取决于许多因素(例如,基于服务器的系统的尺寸)。最重要的因素之一是要执行的任务类型。正如我们在第5.2节中所讨论的,如果需要计算的任务可以划分为可以并行完成的独立子任务,那么由普通计算机组成的P2P分布式计算系统可能比超级计算机的性能更好。如果手头的任务包括完成数据库查询,那么维度良好的集中式数据库可能比DHT更快。

The performance of a P2P system can be negatively affected by a lack of cooperation between the peers in the system. It is important to have incentives in place in order to minimize the number of free riders in the system. Incentive systems generally aim to take the P2P system to optimal levels of cooperation [Feldman2004].

P2P系统的性能可能会受到系统中对等方之间缺乏合作的负面影响。重要的是要有适当的激励措施,以尽量减少系统中的免费搭车人数。激励系统通常旨在使P2P系统达到最佳合作水平[Feldman2004]。

There are trade-offs between the scalability, robustness, and performance of a particular P2P system that can be influenced through the configuration of the system. For example, a P2P database system where each peer stored all the information in the system would be robust and have a high performance (i.e., queries would be completed quickly) but would not be efficient or scalable. If the system needed to grow, it could be configured so that each node stored only a part of the information of the whole system in order to increase its efficiency and scalability at the expense of its robustness and performance.

特定P2P系统的可伸缩性、健壮性和性能之间存在权衡,这些都会受到系统配置的影响。例如,一个P2P数据库系统,其中每个对等方存储系统中的所有信息,该系统将是健壮的,并且具有高性能(即,查询将快速完成),但不会是高效的或可伸缩的。如果系统需要增长,可以对其进行配置,使每个节点仅存储整个系统的一部分信息,以提高其效率和可伸缩性,同时牺牲其健壮性和性能。

Energy consumption is another important property of a system. Even though the overall consumption of a client-server system is generally lower than that of a P2P system providing the same service, P2P systems avoid central servers (e.g., server farms) that can potentially concentrate the consumption of high amounts of energy in a single geographical location. When the nodes in a system need to be up and running all the time anyway, it is possible to use those nodes to perform tasks in a P2P way. However, using battery-powered devices as peers in a P2P system presents some challenges because a peer typically consumes more energy than a client in a client-server architecture where they can go into sleep mode more often [Kelenyi2008]. Energy-aware P2P protocols may be the solution to these challenges [Gurun2006].

能耗是系统的另一个重要特性。尽管客户机-服务器系统的总体能耗通常低于提供相同服务的P2P系统,但P2P系统避免使用可能将大量能源消耗集中在单个地理位置的中央服务器(例如服务器场)。当系统中的节点需要随时启动和运行时,可以使用这些节点以P2P方式执行任务。然而,在P2P系统中使用电池供电的设备作为对等点会带来一些挑战,因为在客户端-服务器体系结构中,对等点通常比客户端消耗更多的能量,在客户端-服务器体系结构中,它们可以更频繁地进入睡眠模式[Kelenyi2008]。能源感知P2P协议可能是这些挑战的解决方案[Gurun2006]。

This section has discussed a set of important system properties and compared P2P and centralized systems with respect to those properties. However, the most important factor to take into consideration is often cost. Both capital and operating costs need to be taken into account when evaluating the scalability, reliability, and performance of a system. If updating a server so that it can tackle more load is inexpensive, a server-based architecture may be the best option. If a highly available server is expensive, a P2P system may be the best choice. With respect to operating costs, as previously stated, at present, maintaining a running DHT requires nontrivial operational efforts [Rhea2005].

本节讨论了一组重要的系统属性,并就这些属性对P2P和集中式系统进行了比较。然而,要考虑的最重要因素往往是成本。在评估系统的可伸缩性、可靠性和性能时,需要考虑资本和运营成本。如果更新服务器以便处理更多负载的成本较低,那么基于服务器的体系结构可能是最佳选择。如果高可用性服务器价格昂贵,那么P2P系统可能是最佳选择。关于运营成本,如前所述,目前,维护运行中的DHT需要大量的运营工作[Rhea2005]。

In short, even though understanding the general properties of P2P and server-based systems is important, deciding which architecture best fits a particular application involves obtaining detailed information about the application and its context. In most scenarios, there are no easy rules that tell us when to use which architecture.

简言之,尽管理解P2P和基于服务器的系统的一般属性很重要,但决定哪种体系结构最适合特定的应用程序需要获取有关应用程序及其上下文的详细信息。在大多数情况下,没有简单的规则告诉我们何时使用哪种体系结构。

7. Security Considerations
7. 安全考虑

Security is an important issue that needs to be considered when choosing an architecture to design a system. The first issue that needs to be considered is to which extent the nodes in the system can

安全性是选择体系结构设计系统时需要考虑的一个重要问题。需要考虑的第一个问题是系统中的节点可以在多大程度上

be trusted. If all the nodes in the system are fully trusted (e.g., all the nodes are under the full control of the operator of the system and will never act in a malicious or otherwise incorrect way), a P2P architecture can achieve a high level of security. However, if nodes are not fully trusted and can be expected to behave in malicious ways (e.g., launching active attacks), providing an acceptable level of security in a P2P environment becomes significantly more challenging than in a non-P2P environment because of its distributed ownership and lack of centralized control and global knowledge [Mondal2006]. Ultimately, the level of security provided by a P2P system largely depends on the proportion of its nodes that behave maliciously. Providing an acceptable level of security in a P2P system with a large number of malicious nodes can easily become impossible.

值得信任。如果系统中的所有节点都是完全可信的(例如,所有节点都在系统运营商的完全控制下,并且永远不会以恶意或其他不正确的方式进行操作),P2P体系结构可以实现高级别的安全性。但是,如果节点不完全受信任,并且可能会以恶意方式行为(例如,发起主动攻击),那么在P2P环境中提供可接受级别的安全性将比在非P2P环境中更具挑战性,因为其所有权分散,且缺乏集中控制和全局知识[Mondal2006]。最终,P2P系统提供的安全级别在很大程度上取决于其恶意行为节点的比例。在有大量恶意节点的P2P系统中,提供可接受的安全级别很容易变得不可能。

P2P systems can be used by attackers to harvest IP addresses in use. Attackers can passively obtain valid IP addresses of potential victims without performing active scans because a given peer is typically connected to multiple peers. In addition to being passive, this attack is much more efficient than performing scans when the address space to be scanned is large and sparsely populated (e.g., the current IPv6 address space). Additionally, in many cases there is a high correlation between a particular application and a particular operating system. In this way, an attacker can harvest IP addresses suitable to launch attacks that exploit vulnerabilities that are specific to a given operating system.

攻击者可以利用P2P系统获取正在使用的IP地址。攻击者可以被动获取潜在受害者的有效IP地址,而无需执行主动扫描,因为给定对等方通常连接到多个对等方。除了被动之外,当要扫描的地址空间很大且人口稀少(例如,当前IPv6地址空间)时,此攻击比执行扫描更有效。此外,在许多情况下,特定应用程序和特定操作系统之间存在高度相关性。通过这种方式,攻击者可以获取适合发起攻击的IP地址,从而利用特定于给定操作系统的漏洞进行攻击。

Central elements in centralized architectures become an obvious target for attacks. P2P systems minimize the amount of central elements and, thus, are more resilient against attacks targeted only at a few elements.

集中式体系结构中的中心元素成为攻击的明显目标。P2P系统最小化了中心元素的数量,因此对仅针对少数元素的攻击更具弹性。

When designing a P2P system, it is important to consider a number of threats that are specific to P2P systems. Additionally, more general threats that apply to other architectures as well are sometimes bigger in a P2P environment. P2P-specific threats mainly focus on the data storage functions and the routing of P2P systems.

在设计P2P系统时,考虑特定于P2P系统的威胁是很重要的。此外,在P2P环境中,应用于其他体系结构的更普遍的威胁有时更大。P2P特有的威胁主要集中在P2P系统的数据存储功能和路由上。

In a P2P system, messages (e.g., service requests) between two given peers generally traverse a set of intermediate peers that help route messages between the two peers. Those intermediate peers can attempt to launch on-path attacks they would not be able to launch if they were not on the path between the two given peers. An attacker can attempt to choose a logical location in the P2P overlay that allows it to launch on-path attacks against a particular victim or a set of victims. The Sybil [Douceur2002] attack is an example of such an attack. The attacker chooses its overlay identifier so that it

在P2P系统中,两个给定对等点之间的消息(例如,服务请求)通常穿过一组中间对等点,以帮助在两个对等点之间路由消息。这些中间对等方可以尝试发起路径攻击,如果它们不在两个给定对等方之间的路径上,它们将无法发起。攻击者可以尝试在P2P覆盖中选择一个逻辑位置,使其能够对特定受害者或一组受害者发起路径攻击。Sybil[Douceur2002]攻击就是此类攻击的一个例子。攻击者选择其覆盖标识符,以便

allows the attacker to launch future attacks. This type of attack can be mitigated by controlling how peers obtain their identifiers (e.g., by having a central authority).

允许攻击者在将来发起攻击。这种类型的攻击可以通过控制对等方获取其标识符的方式(例如,通过拥有中央权限)来缓解。

A trivial passive attack by peers routing messages consists of trying to access the contents of those messages. Encrypting message parts that are not required for routing is an obvious defense against this type of attack.

路由消息的对等方发起的一种简单的被动攻击包括尝试访问这些消息的内容。对路由不需要的消息部分进行加密显然是针对此类攻击的一种防御措施。

An attacker can create a message and claim that it was actually created by another peer. The attacker can even take a legitimate message as a base and modify it to launch the attack. Peer and message authentication techniques can be used to avoid this type of attack.

攻击者可以创建消息并声称它实际上是由另一个对等方创建的。攻击者甚至可以将合法消息作为基础,并对其进行修改以发起攻击。对等和消息身份验证技术可用于避免此类攻击。

Attackers can attempt to launch a set of attacks against the storage function of the P2P system. The following are generic (i.e., non-P2P-specific) attacks. Even if they are generic attacks, the way to avoid or mitigate them in a P2P system can be more challenging than in other architectures.

攻击者可以尝试对P2P系统的存储功能发起一系列攻击。以下是一般(即非P2P特定)攻击。即使它们是一般攻击,在P2P系统中避免或减轻它们的方法也比在其他体系结构中更具挑战性。

An attacker can attempt to store too much data in the system. A quota system that can be enforced can be used to mitigate this attack.

攻击者可以尝试在系统中存储过多数据。可以使用可强制实施的配额系统来缓解此攻击。

Unauthorized peers can attempt to perform operations on data objects. Peer authorization in conjunction with peer authentication avoids unauthorized operations.

未经授权的对等方可以尝试对数据对象执行操作。对等授权与对等身份验证相结合可避免未经授权的操作。

A peer can return forged data objects claiming they are legitimate. Data object authentication prevents this attack. However, a peer can return a previous version of a data object and claim it is the current version. The use of lifetimes can mitigate this type of attack.

对等方可以返回声称合法的伪造数据对象。数据对象身份验证可防止此攻击。但是,对等方可以返回数据对象的早期版本并声明它是当前版本。使用生命周期可以减轻这种类型的攻击。

The following are P2P-specific attacks against the data storage function of a P2P system. An attacker can refuse to store a particular data object. An attacker can also claim a particular data object does not exist even if another peer created it and stored it on the attacker. These DoS (Denial-of-Service) attacks can be mitigated by using data replication techniques and performing multiple, typically parallel, searches.

以下是针对P2P系统数据存储功能的特定于P2P的攻击。攻击者可以拒绝存储特定的数据对象。即使另一个对等方创建了特定数据对象并将其存储在攻击者身上,攻击者也可以声称该数据对象不存在。这些DoS(拒绝服务)攻击可以通过使用数据复制技术和执行多个(通常是并行)搜索来缓解。

Attackers can attempt to launch a set of attacks against the routing of the P2P system. An attacker can attempt to modify the routing of the system in order to be able to launch on-path attacks. Attackers can use forged routing maintenance messages for this purpose. The Eclipse attack [Singh2006] is an example of such an attack.

攻击者可以尝试对P2P系统的路由发起一系列攻击。攻击者可以尝试修改系统的路由,以便能够发起路径攻击。攻击者可为此目的使用伪造的路由维护消息。Eclipse攻击[Singh2006]就是此类攻击的一个例子。

Enforcing structural constraints or enforcing node degree bounds can mitigate this type of attack.

强制执行结构约束或强制执行节点度边界可以减轻此类攻击。

It is possible to launch DoS attacks by modifying or dropping routing maintenance messages or by creating forged ones. Having nodes get routing tables from multiple peers can help mitigate this type of attack.

通过修改或删除路由维护消息或创建伪造消息,可以发起DoS攻击。让节点从多个对等方获取路由表有助于缓解此类攻击。

Attackers can launch a DoS attack by creating churn. By leaving and joining a P2P overlay rapidly many times, a set of attackers can create large amounts of maintenance traffic and make the routing structure of the overlay unstable. Limiting the amount of churn per node is a possible defense against this attack.

攻击者可以通过创建搅动来发起DoS攻击。通过多次快速离开和加入P2P覆盖,一组攻击者可以创建大量维护流量,并使覆盖的路由结构不稳定。限制每个节点的搅动量是抵御此攻击的一种可能方法。

8. Acknowledgements
8. 致谢

Jouni Maenpaa and Jani Hautakorpi helped with the literature review. Henning Schulzrinne provided useful ideas on how to define P2P systems. Bruce Lowekamp, Dan Wing, Dan York, Enrico Marocco, Cullen Jennings, and Frank Uwe Andersen provided useful comments on this document. Loa Andersson, Aaron Falk, Barry Leiba, Kurtis Lindqvist, Dow Street, and Lixia Zhang participated in the IAB discussions on this document.

Jouni Maenpa和Jani Hautakorpi帮助进行了文献综述。Henning Schulzrinne就如何定义P2P系统提供了有用的想法。Bruce Lowekamp、Dan Wing、Dan York、Enrico Marocco、Cullen Jennings和Frank Uwe Andersen对本文件提供了有用的评论。Loa Andersson、Aaron Falk、Barry Leiba、Kurtis Lindqvist、Dow Street和Lixia Zhang参加了IAB关于本文件的讨论。

9. IAB Members at the Time of This Writing
9. 撰写本文时的IAB成员

Marcelo Bagnulo Gonzalo Camarillo Stuart Cheshire Vijay Gill Russ Housley John Klensin Olaf Kolkman Gregory Lebovitz Andrew Malis Danny McPherson David Oran Jon Peterson Dave Thaler

马塞洛·巴格努洛·冈萨洛·卡马里洛·斯图尔特·切希尔·维杰·吉尔·罗斯·霍斯利·约翰·克莱森·奥拉夫·科尔克曼·格雷戈里·勒博维茨·安德鲁·马里·丹尼·麦克弗森·大卫·奥兰·乔恩·彼得森·戴夫·泰勒

10. Informative References
10. 资料性引用

[Alima2005] Alima, L., Ghodsi, A., and S. Haridi, "A Framework for Structured Peer-to-peer Overlay Networks", Global Computing, vol. 3267, Lecture Notes in Computer Science: Springer Berlin / Heidelberg, pp. 223-249, 2005.

[Alima2005]Alima,L.,Ghodsi,A.,和S.Haridi,“结构化对等重叠网络的框架”,全球计算,第3267卷,计算机科学课堂讲稿:柏林斯普林格/海德堡,第223-249页,2005年。

[BitTorrent] Cohen, B., "The BitTorrent Protocol Specification Version 11031", February 2008.

[BitTorrent]Cohen,B.,“BitTorrent协议规范版本11031”,2008年2月。

[Cooke2005] Cooke, E., Jahanian, F., and D. McPherson, "The Zombie roundup: understanding, detecting, and disrupting botnets", Proceedings of the Steps to Reducing Unwanted Traffic on the Internet Workshop, 2005.

[Cooke2005]Cooke,E.,Jahanian,F.,和D.McPherson,“僵尸综述:理解、检测和破坏僵尸网络”,减少互联网上不必要流量的步骤研讨会论文集,2005年。

[Dean2004] Dean, J. and S. Ghemawat, "MapReduce: Simplified Data Processing on Large Clusters", Sixth Symposium on Operating System Design and Implementation (OSDI '04), December 2004.

[Dean2004]Dean,J.和S.Ghemawat,“MapReduce:大型集群上的简化数据处理”,第六届操作系统设计和实现研讨会(OSDI'04),2004年12月。

[Douceur2002] Douceur, J., "The Sybil Attack", IPTPS 02, March 2002.

[Douceur2002]Douceur,J.,“Sybil攻击”,IPTPS2002年3月。

[Farber1972] Farber, D. and K. Larson, "The Structure of a Distributed Computer System - The Communications System", Proceedings Symposium on Computer-Communications Networks and Teletraffic, Microwave Research Institute of Polytechnic Institute of Brooklyn pp. 21-27, 1972.

[Farber1972]Farber,D.和K.Larson,“分布式计算机系统的结构-通信系统”,计算机通信网络和远程通信研讨会论文集,布鲁克林理工学院微波研究所,1972年第21-27页。

[Feldman2004] Feldman, M., Lai, K., Stoica, I., and J. Chuang, "Robust Incentive Techniques for Peer-to-peer Networks", Proceedings of the 5th ACM Conference on Electronic Commerce, 2004.

[Feldman2004]Feldman,M.,Lai,K.,Stoica,I.,和J.Chuang,“点对点网络的稳健激励技术”,第五届ACM电子商务会议记录,2004年。

[Foster1999] Foster, I., "Computational Grids", Chapter 2 of The Grid: Blueprint for a New Computing Infrastructure, 1999.

[Foster 1999]Foster,I.,“计算网格”,网格:新计算基础设施蓝图第2章,1999年。

[Foster2003] Foster, I. and A. Iamnitchi, "On Death, Taxes, and the Convergence of Peer-to-Peer and Grid Computing", 2nd International Workshop in Peer-to-Peer Systems IPTPS '02, 2003.

[Foster 2003]Foster,I.和A.Iamnitchi,“关于死亡、税收以及点对点和网格计算的融合”,第二届点对点系统IPTPS国际研讨会,2003年2月。

[Gkantsidis2005] Gkantsidis, C. and P. Rodriguez, "Network Coding for Large Scale Content Distribution", IEEE INFOCOM 2005, vol. 4, March 2005.

[Gkantsidis2005]Gkantsidis,C.和P.Rodriguez,“大规模内容分发的网络编码”,IEEE INFOCOM 2005,第4卷,2005年3月。

[Gong2001] Gong, L., "JXTA: A Network Programming Environment", IEEE Internet Computing, vol. 5, no. 3, pp. 88-95, 2001.

[Gong2001]Gong,L.,“JXTA:网络编程环境”,IEEE互联网计算,第5卷,第3期,第88-952001页。

[Gray1983] Gray, J. and S. Metz, "Solving the Problems of Distributed Databases", Data Communications, pp. 183-192, 1983.

[Gray 1983]Gray,J.和S.Metz,“解决分布式数据库的问题”,数据通信,第183-192页,1983年。

[Gray1986A] Gray, J., "An Approach to Decentralized Computer Systems", IEEE Transactions on Software Engineering, V 12.6, pp. 684-689, 1986.

[Gray 1986a]Gray,J.,“分散计算机系统的方法”,IEEE软件工程学报,第12.6版,第684-689页,1986年。

[Gray1986B] Gray, J. and M. Anderton, "Distributed Systems: Four Case Studies", IEEE Transactions on Computers and Tandem Technical Report 85.5, 1986.

[Gray 1986b]Gray,J.和M.Anderton,“分布式系统:四个案例研究”,IEEE计算机交易和串联技术报告85.52986。

[Grizzard2007] Grizzard, J., Sharma, V., Nunnery, C., Kang, B., and D. Dragon, "Peer-to-peer botnets: overview and case study", Proceedings of Hot Topics in Understanding Botnets (HotBots '07), 2007.

[Grizzard 2007]Grizzard,J.,Sharma,V.,Nunnery,C.,Kang,B.,和D.Dragon,“点对点僵尸网络:概述和案例研究”,理解僵尸网络的热门话题会议录(HotBots'07),2007年。

[Gurun2006] Gurun, S., Nagpurkar, P., and B. Zhao, "Energy Consumption and Conservation in Mobile Peer-to-Peer Systems", First International Workshop on Decentralized Resource Sharing in Mobile Computing and Networking (MobiShare 2006), 2006.

[Gurun 2006]Gurun,S.,Nagpurkar,P.,和B.Zhao,“移动对等系统中的能源消耗和节约”,第一届移动计算和网络中分散资源共享国际研讨会(MobiShare 2006),2006年。

[Huang2007] Huang, Y., Rabinovich, M., and Z. Xiao, "Challenges of P2P Streaming Technologies for IPTV Services", IPTC Workshop International World Wide Web Conference, Edinburgh, Scotland, United Kingdom, May 2006.

[Huang 2007]Huang,Y.,Rabinovich,M.,和Z.Xiao,“P2P流媒体技术对IPTV服务的挑战”,IPTC研讨会国际万维网会议,英国苏格兰爱丁堡,2006年5月。

[Juang2002] Juang, P., Oki, H., Wang, Y., Martonosi, M., Peh, L., and D. Rubenstein, "Energy-efficient computing for wildlife tracking: design tradeoffs and early experiences with ZebraNet", Proceedings of Conference on Computer and Communications Security (CCS), ACM, 2002.

[Juang 2002]Juang,P.,Oki,H.,Wang,Y.,Martonosi,M.,Peh,L.,和D.Rubenstein,“野生动物追踪的节能计算:斑马网的设计权衡和早期经验”,《计算机与通信安全会议录》,ACM,2002年。

[Kanich2008] Kanich, C., Levchenko, K., Enright, B., Voelker, G., Paxson, V., and S. Savage, "Spamalytics: An Empirical Analysis of Spam Marketing Conversion", Proceedings of Conference on Computer and Communications Security (CCS) (ACM), October 2008.

[Kanich2008]Kanich,C.,Levchenko,K.,Enright,B.,Voelker,G.,Paxson,V.,和S.Savage,“垃圾邮件传播:垃圾邮件营销转化的实证分析”,计算机与通信安全会议录,2008年10月。

[Kelenyi2008] Kelenyi, I. and J. Nurminen, "Energy Aspects of Peer Cooperation - Measurements with a Mobile DHT System", in Proc. of Cognitive and Cooperative Wireless Networks Workshop in the IEEE International Conference on Communications 2008, Beijing, China, pp. 164-168, 2008.

[Kelenyi 2008]Kelenyi,I.和J.Nurminen,“同行合作的能源方面——使用移动DHT系统的测量”,在Proc。2008年IEEE国际通信会议认知与合作无线网络研讨会,中国北京,第164-168页,2008年。

[Leibniz2007] Leibniz, K., Hobfeld, T., Wakamiya, N., and M. Murata, "Peer-to-Peer vs. Client/Server: Reliability and Efficiency of a Content Distribution Service", Lecture Notes in Computer Science, LNCS 4516, pp. 1161-1172, 2007.

[Leibniz 2007]Leibniz,K.,Hobfeld,T.,Wakamiya,N.,和M.Murata,“点对点与客户端/服务器:内容分发服务的可靠性和效率”,《计算机科学讲稿》,LNCS 4516,第1161-1172页,2007年。

[Lua2005] Keong Lua, E., Crowcroft, J., Pias, M., Sharma, R., and S. Lim, "A Survey and Comparison of Peer-to-peer Overlay Network Schemes", IEEE Communications Surveys & Tutorials, vol. 7, no. 2, Second Quarter 2005, pp. 72-93, 2005.

[Lua2005]Keong Lua,E.,Crowcroft,J.,Pias,M.,Sharma,R.,和S.Lim,“点对点覆盖网络方案的调查和比较”,IEEE通信调查与教程,第7卷,第2期,2005年第二季度,第72-93页,2005年。

[MMUSIC-ICE] Rosenberg, J., "Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/ Answer Protocols", Work in Progress, October 2007.

[MMUSIC-ICE]Rosenberg,J.,“交互式连接建立(ICE):提供/应答协议的网络地址转换器(NAT)遍历协议”,正在进行的工作,2007年10月。

[Mahajan2003] Mahajan, R., Castro, M., and A. Rowstron, "Controlling the Cost of Reliability in Peer-to-Peer Overlays", Proceedings of the 2nd International Workshop on Peer-to-Peer Systems (IPTPS '03), 2003.

[Mahajan 2003]Mahajan,R.,Castro,M.,和A.Rowstron,“控制点对点覆盖的可靠性成本”,第二届点对点系统国际研讨会论文集(IPTPS'03),2003年。

[Milojicic2002] Milojicic, D., Kalogeraki, V., Lukose, R., Nagaraja, K., Pruyne, J., Richard, B., Rollins, S., and Z. Xu, "Peer-to-Peer Computing", Technical Report HP, March 2002.

[Milojicic202]Milojicic,D.,Kalogeraki,V.,Lukose,R.,Nagaraja,K.,Pruyne,J.,Richard,B.,Rollins,S.,和Z.Xu,“点对点计算”,惠普技术报告,2002年3月。

[Mondal2006] Mondal, A. and M. Kitsuregawa, "Privacy, Security and Trust in P2P environments: A Perspective", 17th International Conference on Database and Expert Systems Applications 2006 (DEXA '06), September 2006.

[Mondal2006]Mondal,A.和M.Kitsuregawa,“P2P环境中的隐私、安全和信任:前景”,第17届数据库和专家系统应用国际会议2006(DEXA'06),2006年9月。

[Octoshape] "Octoshape - Large Scale Live Streaming Solutions", <http://www.octoshape.com>.

[Octoshape]“Octoshape-大规模流媒体直播解决方案”<http://www.octoshape.com>.

[Oechsner2006] Oechsner, S., Hobfeld, T., Tutschku, K., Andersen, F., and L. Caviglione, "Using Kademlia for the Configuration of B3G Radio Access Nodes", Proceedings of the Fourth Annual IEEE International Conference on Pervasive Computing and Communications Workshops (PERCOMW '06), 2006.

[Oechsner2006]Oechsner,S.,Hobfeld,T.,Tutschku,K.,Andersen,F.,和L.Caviglione,“使用Kademlia配置B3G无线接入节点”,第四届IEEE普及计算和通信研讨会年会论文集(PERCOMW'06),2006年。

[Peltotalo2008] Peltotalo, J., Harju, J., Jantunen, A., Saukko, M., and L. Vaatamoinen, "Peer-to-Peer Streaming Technology Survey", Seventh International Conference on Networking, Cancun, Mexico, pp. 342-350, April 2008.

[Peltotalo2008]Peltotalo,J.,Harju,J.,Jantunen,A.,Saukko,M.,和L.Vaatamoinen,“点对点流媒体技术调查”,第七届网络国际会议,墨西哥坎昆,第342-350页,2008年4月。

[Pourebrahimi2005] Pourebrahimi, B., Bertels, K., and S. Vassiliadis, "A Survey of Peer-to-Peer Networks", Proceedings of the 16th Annual Workshop on Circuits, Systems, and Signal Processing, ProRisc 2005, November 2005.

[Pourebrahimi 2005]Pourebrahimi,B.,Bertels,K.,和S.Vassiliadis,“对等网络的调查”,第16届电路、系统和信号处理年度研讨会论文集,ProRisc 2005,2005年11月。

[RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", STD 9, RFC 959, October 1985.

[RFC0959]Postel,J.和J.Reynolds,“文件传输协议”,标准9,RFC 959,1985年10月。

[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

[RFC2616]菲尔丁,R.,盖蒂斯,J.,莫卧儿,J.,弗莱斯蒂克,H.,马斯特,L.,利奇,P.,和T.伯纳斯李,“超文本传输协议——HTTP/1.1”,RFC 2616,1999年6月。

[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002.

[RFC3261]Rosenberg,J.,Schulzrinne,H.,Camarillo,G.,Johnston,A.,Peterson,J.,Sparks,R.,Handley,M.,和E.Schooler,“SIP:会话启动协议”,RFC 3261,2002年6月。

[RFC4981] Risson, J. and T. Moors, "Survey of Research towards Robust Peer-to-Peer Networks: Search Methods", RFC 4981, September 2007.

[RFC4981]Risson,J.和T.Moors,“稳健对等网络研究概况:搜索方法”,RFC 49812007年9月。

[RFC5128] Srisuresh, P., Ford, B., and D. Kegel, "State of Peer-to-Peer (P2P) Communication across Network Address Translators (NATs)", RFC 5128, March 2008.

[RFC5128]Srisuresh,P.,Ford,B.,和D.Kegel,“跨网络地址转换器(NAT)的对等(P2P)通信状态”,RFC 51282008年3月。

[Rhea2005] Rhea, S., Godfrey, B., Karp, B., Kubiatowicz, J., Ratnasamy, S., Shenker, S., Stoica, I., and H. Yu, "Open DHT: A Public DHT Service and Its Uses", ACM/SIGCOMM CCR'05, vol. 35, Issue 4, October 2005.

[Rhea2005]Rhea,S.,Godfrey,B.,Karp,B.,Kubiatowicz,J.,Ratnasamy,S.,Shenker,S.,Stoica,I.,和H.Yu,“开放式DHT:公共DHT服务及其使用”,ACM/SIGCOMM CCR'05,第35卷,第4期,2005年10月。

[Rodriguez2005] Rodriguez, P., Tan, S., and C. Gkantsidis, "On the Feasibility of Commercial Legal P2P Content Distribution", ACM/SIGCOMM CCR'06, January 2006.

[Rodriguez 2005]Rodriguez,P.,Tan,S.,和C.Gkantsidis,“关于商业合法P2P内容分发的可行性”,ACM/SIGCOM CCR'06,2006年1月。

[Roussopoulus2004] Roussopoulus, M., Baker, M., Rosenthal, D., Guili, T., Maniatis, P., and J. Mogul, "2 P2P or Not 2 P2P", Workshop on Peer-to-Peer Systems, February 2004.

[Roussopoulus 2004]Roussopoulus,M.,Baker,M.,Rosenthal,D.,Guili,T.,Manatis,P.,和J.Mogul,“2 P2P还是非2 P2P”,点对点系统研讨会,2004年2月。

[SNC] "http://www.snc.sapmi.net".

[SNC]。”http://www.snc.sapmi.net".

[Schollmeier2001] Schollmeier, R., "A Definition of Peer-to-Peer Networking for the Classification of Peer-to-Peer Architectures and Applications", In Proceedings of the First International Conference on Peer-to-Peer Computing P2P '01, 2001.

[Schollmeier 2001]Schollmeier,R.“对等网络的定义,用于对等体系结构和应用的分类”,载于第一届对等计算P2P国际会议论文集'01,2001年。

[Seti] "SETI@home", <http://setiathome.berkeley.edu>.

[Seti]”SETI@home", <http://setiathome.berkeley.edu>.

[Singh2006] Singh, A., Ngan, T., Druschel, T., and D. Wallach, "Eclipse Attacks on Overlay Networks: Threats and Defences", INFOCOM 2006, April 2006.

[Singh2006]Singh,A.,Ngan,T.,Druschel,T.,和D.Wallach,“重叠网络上的Eclipse攻击:威胁和防御”,INFOCOM 2006,2006年4月。

[Skype] "Skype", <http://www.skype.com>.

[Skype]“Skype”<http://www.skype.com>.

[Tanenbaum1981] Tanenbaum, A. and S. Mullender, "An Overview of the Amoeba Distributed Operating System", ACM SIGOPS Operating Systems Review, 1981.

[Tanenbaum1981]Tanenbaum,A.和S.Mullender,“变形虫分布式操作系统概述”,ACM SIGOPS操作系统评论,1981年。

[WoW] "World of Warcraft Community Site", <http://www.worldofwarcraft.com>.

[哇]“魔兽世界社区网站”<http://www.worldofwarcraft.com>.

[Zhang2006] Zhang, Y., Chen, C., and X. Wang, "Recent Advances in Research on P2P Networks", In Proceedings of the Seventh International Conference on Parallel and Distributed Computing, Applications, and Technologies PDCAT '06, 2006.

[Zhang 2006]Zhang,Y.,Chen,C.,and X.Wang,“P2P网络研究的最新进展”,载于第七届并行和分布式计算、应用和技术国际会议论文集PDCAT'06,2006年。

Appendix A. Historical Background on Distributed Architectures
附录A.分布式体系结构的历史背景

In this appendix, we briefly provide historical background on distributed architectures. Distributed architectures are relevant to P2P because P2P architectures are a type of distributed architecture. That is, a distributed architecture is considered P2P if it meets a set of requirements, which are discussed in Section 2.

在本附录中,我们简要介绍分布式体系结构的历史背景。分布式体系结构与P2P相关,因为P2P体系结构是一种分布式体系结构。也就是说,如果分布式体系结构满足第2节中讨论的一组需求,则将其视为P2P。

In centralized architectures (e.g., client-server architectures), a central server (or very few central servers) undertakes most of the system's processing and storage. Conversely, decentralized architectures contain no (or very few) centralized elements.

在集中式体系结构(例如,客户机-服务器体系结构)中,中央服务器(或很少的中央服务器)承担系统的大部分处理和存储。相反,分散的体系结构不包含(或很少)集中式元素。

The increasing spread of packet-switched network technologies in the 1970s made it possible to develop operational distributed computer systems [Farber1972]. Distributed computer systems received a lot of attention within the research community. Research focused on distributing the different parts of a computer system, such as its operating system [Tanenbaum1981] or its databases [Gray1983]. The idea was to hide from the user the fact that the system was distributed. That is, the user did not have to worry or even be aware of the fact that his or her files were stored in different computers or the fact that his or her tasks were processed also in a distributed way. Actions such as file transfers and task allocations were taken care of by the system in an automated fashion and were transparent to the user.

20世纪70年代,分组交换网络技术的日益普及使得开发可操作的分布式计算机系统成为可能[Farber1972]。分布式计算机系统在研究界受到了广泛关注。研究集中于分布计算机系统的不同部分,如操作系统[Tanenbaum1981]或数据库[Gray1983]。这个想法是为了向用户隐瞒系统是分布式的这一事实。也就是说,用户不必担心甚至不必知道他或她的文件存储在不同的计算机中,或者他或她的任务也以分布式方式处理。文件传输和任务分配等操作由系统以自动方式处理,并且对用户透明。

In the middle of the 1980s, building distributed computer systems using general-purpose off-the-shelf hardware and software was believed to be not much harder than building large centralized applications [Gray1986A]. It was understood that distributed systems had both advantages and disadvantages when compared to centralized systems. Choosing which type of system to use for a particular application was a trade-off that depended on the characteristics and requirements of the application [Gray1986B].

在20世纪80年代中期,使用通用现成的硬件和软件构建分布式计算机系统被认为比构建大型集中式应用程序[GRAYA46A]要难得多。据了解,与集中式系统相比,分布式系统既有优点也有缺点。选择用于特定应用程序的系统类型是一种权衡,取决于应用程序的特征和要求[Gray1986B]。

The client-server paradigm, where a client makes a request to a server that processes the request and returns the result to the client, was and is used by many Internet applications. In fact, client-server architectures were so ubiquitous on the Internet that, unfortunately, the Internet itself evolved as if the majority of the endpoints on the Internet were only interested in applications following the client-server model. With the appearance of Network Address Translators (NATs) and stateful firewalls, most Internet endpoints lost the ability to receive connections from remote endpoints unless they first initiated a connection towards those nodes. While NATs were designed not to disrupt client-server applications, distributed applications that relied on nodes receiving

客户机-服务器模式,即客户机向处理请求并将结果返回给客户机的服务器发出请求,过去和现在被许多Internet应用程序使用。事实上,客户机-服务器体系结构在互联网上无处不在,不幸的是,互联网本身的发展似乎互联网上的大多数端点只对遵循客户机-服务器模型的应用程序感兴趣。随着网络地址转换器(NAT)和有状态防火墙的出现,大多数Internet端点失去了从远程端点接收连接的能力,除非它们首先启动到这些节点的连接。虽然NAT的设计不会中断客户机-服务器应用程序,但依赖于接收节点的分布式应用程序

connections were disrupted. In a network full of NATs, these types of distributed applications could only be run among nodes with public IP addresses. Of course, most users did not like applications that only worked some of the time (i.e., when their endpoint happened to have a public IP address). Therefore, the loss of global connectivity caused by NATs was one of the reasons why applications that did not follow the client-server paradigm (e.g., P2P applications) took a relatively long time to be widely deployed on the public Internet.

连接中断。在充满NAT的网络中,这些类型的分布式应用程序只能在具有公共IP地址的节点之间运行。当然,大多数用户不喜欢只在某些时间工作的应用程序(即,当他们的端点碰巧有公共IP地址时)。因此,NAT造成的全球连通性损失是不遵循客户机-服务器模式的应用程序(如P2P应用程序)在公共互联网上广泛部署所需时间相对较长的原因之一。

The design of NAT traversal mechanisms has made it possible to deploy all types of distributed applications over a network without global connectivity. While the first NAT traversal mechanisms used by P2P applications were proprietary [RFC5128], nowadays there are standard NAT traversal mechanisms such as Interactive Connectivity Establishment (ICE) [MMUSIC-ICE]. ICE makes it possible for endpoints to establish connections among themselves in the presence of NATs. The recovery of global connectivity among Internet endpoints has made it possible to deploy many P2P applications on the public Internet (unfortunately, the fact that global connectivity is not supported natively at the network layer makes it necessary for applications to deal with NATs, which can result in highly complex systems). Some of these P2P applications have been very successful and are currently used by a large number of users.

NAT遍历机制的设计使得在没有全局连接的情况下通过网络部署所有类型的分布式应用程序成为可能。虽然P2P应用程序使用的第一个NAT遍历机制是专有的[RFC5128],但现在有标准的NAT遍历机制,如交互式连接建立(ICE)[MMUSIC-ICE]。ICE使端点能够在NAT存在的情况下在它们之间建立连接。Internet端点之间的全局连接恢复使得在公共Internet上部署许多P2P应用程序成为可能(不幸的是,网络层本地不支持全局连接这一事实使得应用程序必须处理NAT,这可能导致高度复杂的系统)。其中一些P2P应用程序非常成功,目前被大量用户使用。

Another factor that made it possible to deploy distributed applications was the continuous significant advances in terms of processing power and storage capacity of personal computers and networked devices. Eventually, most endpoints on the Internet had capabilities that previously were exclusively within the reach of high-end servers. The natural next step was to design distributed applications that took advantage of all that distributed available capacity.

使部署分布式应用程序成为可能的另一个因素是个人计算机和网络设备在处理能力和存储容量方面的持续显著进步。最终,Internet上的大多数端点都具有以前只有高端服务器才能实现的功能。下一步自然是设计分布式应用程序,充分利用所有分布式可用容量。

Authors' Addresses

作者地址

Gonzalo Camarillo (editor) Ericsson Hirsalantie 11 Jorvas 02420 Finland

冈萨洛·卡马里洛(编辑)爱立信·赫萨兰蒂11号乔瓦斯02420芬兰

   EMail: Gonzalo.Camarillo@ericsson.com
        
   EMail: Gonzalo.Camarillo@ericsson.com
        

Internet Architecture Board

互联网架构委员会

   EMail: iab@iab.org
        
   EMail: iab@iab.org