Seminar P2P im Wintersemester 2010
Transcription
Seminar P2P im Wintersemester 2010
Seminar P2P im Wintersemester 2010 Teilnehmer des Seminar P2P im Wintersemester 2010 26. Juni 2011 Veranstalter: Fachgebiet Peer-to-Peer Netzwerke und Fachgebiet Telekooperation Fachbereich Informatik TU Darmstadt Inhaltsverzeichnis 1 2 3 4 Exploiting Anonymity in P2P-based Systems von Hristo Chonov 3 Replikationsstrategien in Content-Distributionssystemen von Julian Dean 11 P2P Service Description Language von Dimitar Goshev 20 Cheating Detection in P2P-based Massive Multiplayer Online Games von Georgi Hadshiyski 26 5 P2P-Based Video-on-Demand-Streaming von Pablo Hoch 32 6 Skype - Ein Überblick über die Protokolle, das Overlay-Netzwerk und die Sicherheitsmaÿnahmen von Marius Hornung 40 7 Übersicht über datenorientierte Netzwerklösungen von Bastian Laur 47 8 Trac Analysis of p2p Applications von The An Binh Nguyen 54 9 Peer-to-Peer-basierte Live-Streaming-Systeme von Thomas Schlosser 61 10 Harvesting Sensor Networks von Andreas Straninger 70 11 Load Balancing in Peer-to-Peer Netzwerken Survey von Johannes Thomas 75 12 Diaspora und Safebook: Der Stand von Decentralized Online Social Networks von Samuel Vogel 80 13 P2P-based VoIP von Zoran Zaric 85 2 ~ 1 EXPLOITING ANONYMITY IN P2P-BASED SYSTEMS Exploiting Anonymity in P2P-based Systems Hristo Chonov who are taking part in the anonymous message transfer. On the other side Low-Latency systems like Tor attempts to reduce the delivery delay to provide normal speeds for internet browsing and file sharing. In the current open peer-to-peer overlay networks every client can participate without the need to prove that it is trust-able. Thus a small fraction of malicious nodes can easily be built, what can lead to incorrect message delivery. That’s why closed peer-to-peer overlay networks where the clients connect to the nodes they trust have evolved. In some cases to participate the network a client needs an invitation. The closed peer-to-peer networks are usually very small and increasing the size of the network makes it more insecure. I’ll mainly concentrate on open peer-to-peer systems. The main objective of an adversary in an anonymous communication system is to link the initiators of connections with their respective communication partners and vice versa. Outline The rest of the paper is organized as follow: In Section II I give a short background information and in Section III I briefly describe well known look up mechanisms and their weaknesses. Sections IV to XI present different systems for anonymous communication and how the anonymity in those systems can be exploited. At the end I make a conclusion about the most uncovered weak points which could be used to exploit the anonymity in the respective systems. Abstract—After David Chaum, considered the father of anonymous communications, proposed a system for anonymous email in 1981 many new systems has been implemented on the scene aiming to offer better protection than their predecessors. But trying to cover some security holes in the anonymity new protocols can cause other security issues. In this paper I describe some of the peer-to-peer network protocols that employ anonymization techniques and some of the known approaches that can be used to exploit anonymity in overlay networks built on top of those protocols. At the end, I make a conclusion based on a table showing the most widely uncovered and effective types of attacks. I. I NTRODUCTION Anonymous overlay networks allow Internet hosts to communicate with each other, while preventing linkability between sender and receiver from the rest of the overlay. This means they conceal who is interacting with whom. Those networks have a very important usage like for online privacy, resisting censorship, evasioning surveillance. At some places in the world there is no freedom of speech and censorship is imposed. There expressioning online could be considered as a crime and thus the authors need to protect their real identities. This kind of networks could also be used to resist blocking circumvention censorship. Of course they could be used for illegal file sharing, what someones are doing, by running BitTorrent on the top of Tor for exchanging illegal content. But actually this is not what these systems are built for, it’s just an exploitation of them. Some of the schemes use global list to choose relays from it. An alternative is to organize the nodes of a network overlay in a distributed hash table (DHT), which can form a decentralized and distributed system that maps identifiers to nodes and has a mechanism to determine the responsible nodeID for a given identifier. The problem however with DHTs is that they are proven to have very weak points and thus be very insecure – queries in DHTs are easy to observe and manipulate. That’s why redundancy mechanisms for securing DHTs are developed and will continue to be developed in the future. In this paper I review both mechanisms for finding relays i.e. overlays based on a global list and overlays based on a DHT. In the most cases the anonymity has a price and that is the speed. The anonymous peer-to-peer network overlays are structured in two areas: The first one is Low-Latency anonymity systems and the second one is High-Latency anonymity systems. The time of message delivery in High-Latency systems like Mixmaster and Mixminion is around 4 hours. This two networks are assuming that the attacker can see the whole network traffic and also can manipulate some of the nodes, II. BACKGROUND David Chaum, considered the father of anonymous communications, proposed a system for anonymous email in 1981 which is count as the the first one of its kind. He introduced the term MIX that is a server between sender and receiver performing cryptographic transformations on the messages and forwarding them to the next destination in such a way that the input address could not be linked with the output address. Most of the existing anonymous routing layers utilize ChaumMIXes for anonymity. Figure 1. illustrates a path in a MIX system. Other technique built on the idea of Chaum-MIXes is Onion-routing, where the messages are encrypted in layers and sent through several network nodes (onion routers), which remove the upper encryption layer to uncover routing instructions. Fig. 1. 3 Example Path in a MIX system 2~ EXPLOITING ANONYMITY IN P2P-BASED SYSTEMS In the following sections I review Tor and Torsk, which are Onion-routing schemes and Tarzan, Cashmere, Salsa and MorphMix, which are Chaum-MIXes based systems. Torsk, Cashmere and Salsa also are based on DHTs for finding relays. They all represent open peer-to-peer networks. controlled from an attacker. If an attacker succeeds in finding a way to control the distribution of the node-IDs she can use a lot of mechanisms to violate the network overlay. • An attacker needs to control small fraction of nodes. When, in Chord, the attacker chooses appropriate nodeIDs she can accomplish that all the entries in a victim’s finger table point to enemy nodes. • The access to a target object can also be controlled by choosing node-IDs close to the target key and so the attacker can gain full control over the target object by owning all the replicas. So the attacker can delete, modify, corrupt, or deny access to the object. Using both techniques an adversary is able to reveal identities. III. S TRUCTURED PEER - TO - PEER OVERLAY NETWORKS A. Overview In structured P2P networks, peers employ a globally consistent protocol. Thus the nodes in the overlay can route and search for other peers. The most such networks are using distributed hash table – DHT. These following are look up mechanisms, which doesn’t built a whole system and actually does not employ any anonymization techniques, but they can be used as a base for building a peer-to-peer system that provides anonymity. Some of this look up mechanisms are Pastry, Tapestry, Chord and CAN. Lets just briefly describe them. In Pastry the nodes get assigned an unique IDs and maintain a list of their neighbors called “leaf set”, which is used for storing replicas. The IDs of the nodes included in the “leaf set” are numerically close to the current node-ID. From a message to be send is built a key, which is used for choosing the node towards which the message will be routed. Beside the list of neighbors a node maintains also a routing table. Two options to route a message are available. First, the message is forwarded to a node-ID from the routing table, which shared prefix with the key of the message is at least one bit longer than the shared prefix with the current sender. Otherwise, the message is forwarded to a node-ID which shares the same prefix length, but is numerically closer to the key than the current node. Finally, if no node is found to which the message should be forwarded the destination is either the current node or its immediate neighbor. Tapestry is similar to Pastry, but the nodes don’t keep a neighbors set. Tapestry also uses a surrogate routing mechanism by trying to forward the message to a node that matches the key’s n-th digit. If no such node exists in the routing table, the n-th digit will be incremented till an appropriate node is found. Unlike Pastry Chord uses circular ID space and routes the messages only in clockwise direction. Chord doesn’t have a routing table but maintains a so called “finger table”, which contains up to m pointers to online nodes. A node always is aware of it’s predecessor. The more deeper an entry in the table is, the more distant node it’ll point to. Chord maintains the replicas by mapping keys to node-IDs. CAN is based on d-dimensional Cartesian coordinate space. A hash function is assigned to each dimension. The entire space is partitioned amongst the nodes. Each node has a routing table consisting of O(d) entries, which are the neighbors of the current node. Sybil attack: If the attacker can gain control over many legitimate nodes she can accomplish 1. and 2. without the need of freely choosing node-IDs. This kind of attack is called Sybil attack. 2) Attacks based on the maintenance of the routing table [1]: • The first attack works only against routing algorithms which are aiming to improve network efficiency by calculating the delays between nodes. If an attacker controls enough number of nodes she can intercept a delaycalculating request from a correct node to hostile node and get another faulty node closer to the correct node answer to the request. This way an attacker can populate the victim’s routing table with bad entries. • The second attack is based on the routing updates. It is hard to check their trust in network overlays like Pastry and Tapestry. The attacker can just start populating the overlay with updates pointing to hostile nodes. As result the correct nodes will announce their bad entries in the routing updates. Storage Anonymity means that a request for a particular data doesn’t reveal the node storing this data. Chord doesn’t provide such anonymity since the answer of such a request is the IP address of the node on which the data is stored. Problem: Pastry and Tapestry employ very weak constraints which node-IDs should be granted in the routing table. This gives the opportunity to use the network proximity and thus to improve routing performance. CAN and Chord on the other side employ very strong constraints: only the closest nodeIDs should be accepted in the routing tables. This improves the security, but thus the network proximity can’t be used. IV. ATTACKS AGAINST G ENERAL C HAUM -MIX ES BASED AND O NION - ROUTING BASED NETWORK OVERLAYS A. Timing Attacks in Low-Latency MIX Systems B. Attacks A MIX can be defined as a proxy that hides the conversation between its incoming and outgoing connections. Routing through many MIXes provides strong unlinkablity of senders and receivers. Among the systems using MIXes for routing are 1) Attacks based on the node-ID assignment [1]: The security of structured peer-to-peer overlay networks depends on the assumption that the assignment of node-IDs can’t be 4 ~ 3 EXPLOITING ANONYMITY IN P2P-BASED SYSTEMS Onion-routing, Freedom and Tarzan. Using a timing attack an adversary tries to identify, if two malicious MIXes Mf irst and Mlast that belongs to him are on the same path. To reveal the Identity of the sender and the receiver one of the MIXes should be the first and and the other one the last in the chain and they must be aware of their position. This way an adversary is able to find a correlation in the timings of both malicious nodes and thus link the initiator with the receiver. The first method to exploit the attack is to compute the difference between the arrival time of packet xn and its successor packet xn+1 at Mf irst and Mlast . The adversary can compare both differences and for example, if the delay at Mf irst was large and both nodes lie on the same path the delay at Mlast is more likely to be larger than average. This method is sensitive to dropped packets and some otherwise perfect correlations could be identified as a mismatch. More powerful approach [8] is to use a nonoverlapping and adjacent windows of time. During this periods both malicious nodes will count the packets on every path they are belonging to. Finally the collected counts need to be compared. To make this attack even more powerful Mf irst could drop intentionally packets to enhance the correlation. Onion-routing and the second version fo Freedom do not offer any special mechanisms to prevent timing attacks if an adversary happens to own the first and the last node of a chain. Tarzan and the original version of Freedom employ constantrate cover traffic between pairs of mixes and send traffic between covered links. Freedom however is still vulnerable to timing attacks, because the traffic between the initiator and first node and between the last node and the receiver is not covered. In Tarzan and in Freedom the mixes are able to distinguish between real and covered traffic and the malicious nodes can consider only the first for the timing attack. circuit. The first encryption is done with the key known to the last node called exit node and the last encryption is done with the key known to the first node in the circuit. This represents the so called onion routing and every node in a circuit knows only its predecessor and successor. Multiple TCP streams from one source are put together in one circuit to improve efficiency instead of building many circuits from a single node. This improves the anonymity and it is restricted to put new streams in circuits containing streams older than 10 minutes. Tor protects against non-global adversary that only control fraction of the nodes. Tor doesn’t protect against attacks trying to find out, if two parties are communicating with each other by observing them – this kind of attack is the already mentioned traffic confirmation attack. Tor only makes it difficult for an adversary with weak suspicions to collect more information. B. Attacks 1) Traditional traffic analysis – global passive adversary: • • B. Intersection Attacks in Onion-routing Systems The Onion-routing project has drawn the attention to such kind of attacks and also named them Traffic Confirmation Attacks. This kind of attacks is based on the fact that not all the nodes are active at the same time and that users typically communicate with a small number of parties – for example a user queries the same web sites in different sessions. To reveal the identities of the nodes the observer records the active users and intersects the sets. This is possible only if the observer knows all the nodes in the system. When the attacker has reduced the possible set of initiators she can switch to another tactic e.g. Packet Timing to reveal the original initiator. One kind of attack is to consider the time of connection initiations. Statistical variant of this attack is also developed. Both attacks could be used to determine if a specific node establishes connections to a set of web sites regularly. Low cost traffic analysis - One corrupt node in the Tor overlay network is required to accomplish this attack. The corrupt node first must establish connections to the nodes in the network to measure and monitor the latencies of those connections for some period of time. The aim of this is to determine the traffic loads of the nodes the attacker has made connection with. Then from this traffic patterns are derived. They can be used to be built a template indicating how a stream based on the reply of a server outside the overlay network will look like inside of it. A comparison of all links is needed to find similarity with the model built from the template and so even the position of a node in the circuit can be found. [6] 2) Traffic analysis – non-global passive adversary: Packet Counting – Lone Connection Tracking [7]: This attack is applicable on the 2nd generation onion routing, Tarzan and MorphMix. The attacker only needs to observe all the links used by a connection. By counting the packets on lone connections the anonymised streams can be followed. The term lone connection means that only this connection is traveling toward a particular link. If the packets number on D->X and X->T is very similar, it can be assumed that X is communicating with T, as it can be observed on Figure 2. There are some restrictions about the measure interval to implement the attack: First, it must be larger than the mix delay. Otherwise the incoming and outgoing packet counts will be made dissimilar. Second, it must be shorter than the mean time new connections are built between the pair of links. A simulation [7] in a network with 100 nodes showed that 92 Figure 3. shows a graph of the number of nodes against V. T OR – S ECOND GENERATION ONION - ROUTING A. Overview Tor is a Low-Latency circuit-based anonymous network overlay, thus it’s main aim is to hide the identities of the clients. When a client wants to establish a connection to a server, it first obtains a list of Tor nodes from a directory server and then picks up n nodes from the Tor network and afterward builds a circuit. The messages are encrypted n times with encryption keys negotiated separately with the hops in the 5 4~ Fig. 2. EXPLOITING ANONYMITY IN P2P-BASED SYSTEMS Packet Counting Example Fig. 4. Attack Model Against Tor TCP port the client is listening on, 3. peer ID of the client and 4. optionally the IP address of the Alice’s NIC device. In return the tracker sends a sub list of peers already joined the torrent. Finally, the client sends a handshake to the peers to establish a connection with them. BitTorrent can also use DHT over UDP to search for a tracker controlling the desirable torrent. BitTorrent can run over Tor network as over proxy. So it is possible to use the Tor network for communication with the tracker and the peers. The client can decide to use Tor for only one of them or both. Fig. 3. B. De-anonymizing IPs in BitTorrent on top of Tor Lone Connections Simulation In a study [2] 6 Tor exit nodes have been mounted all over the world for 23 days. 1) Inspection of BitTorrent control messages: The tracker announces can contain the IP address of a client and according to the study 3968 unique public IP addresses were captured , which represents 58 Clients supporting the Extension Protocol may also send additionally their IP addresses. As result 1131 unique public IP addresses were collected – 33 2) Hijacking Trackers’ Responses: The following is typical man-in-the-middle attack and works, if the client is using Tor only for communication with the tracker. The attacker Bob can hijack the tracker’s response to an announce message from Alice. Then Bob can just send an altered sub list with peers where the first one is Bob himself. This way Alice will try to establish a direct connection with Bob and thus revealing her public IP address. Comparing this IP address with the public addresses of the Tor’s exit nodes can show, if it belongs to Alice or to the exit nodes. Finally, 2240 unique public IP addresses were collected - 73 3) Exploitation of the DHT: As Tor doesn’t support UDP the client will connect to the DHT without Tor and Alice will publish it’s public IP address in the DHT and despite of the connection to the peers over Tor the IP address of Alice can still be looked up in the DHT. This is possible only when Bob is controlling Alice’s exit node and so knowing her BitTorrent port number. Later Bob can search in the peer list for this torrent in the DHT and compare the port numbers. After finding a match it is possible that the published IP address belongs to Alice. This tactic resulted in 6151 unique public IP addresses. the lone connections when there are 60 connections all running through 2 links. Traffic-analysis of Tor - Tor employs round-robin sending of packets. If a stream has no more cells to be forwarded, it is skipped and the node proceeds with the next waiting connection. Thus the load on a Tor node affects the latency of the connections running through it. This can be used by an attacker. • An adversary can route a connection through a Tor node and with another corrupt node measure the latency to learn the traffic load of that node by connecting with it and sending probe traffic. If traffic pattern is already extracted the traffic load can be compared with it and thus an attacker is able to detect the nodes it is relayed through. • The following attack is just a more powerful version of the previous one and is based on the assumption that a victim node is trying to access a corrupt server which sends the data in specific traffic pattern. Using this pattern a template can be derived and it can be checked which nodes correspond to it. One such traffic pattern could represent sequences of short bursts of data. Figure 4. shows an example model of this attack. [6] VI. B IT T ORRENT ON TOP OF T OR A. Overview of BitTorrent When joining a torrent Alice first sends an announce message to the tracker containing 1. unique torrent identifier, 2. 6 ~ 5 EXPLOITING ANONYMITY IN P2P-BASED SYSTEMS VII. T ORSK A. Overview Torsk improves the scalability of Tor and retains the benefits of the client-server architecture claiming it doesn’t introduce new attacks. Torsk distributes most of the Tor directory service over a DHT and propose usage of secret buddy nodes and certificates to keep the look up initiator anonymous. The look up mechanism is based on Kademlia DHT and Myrmic. Torsk look-up: Every node maintains a finger table and when it wants to look up data x, it first selects t (usually 3) pointers close to x. Then the querier starts independent look ups at the t pointers and builds a list with the closest nodes from every look up he has learned. Next the node selects again from every list t pointers and start the same way independent look ups. This iterative process terminates when at the end of an iteration the lists with the closest nodes to x stay unchanged. Every node has a certificate from a trusted central authority, that contains all fingers of the node. Finally, the querier can check if the node he has found is responsible for x by verifying it’s certificate. During the iterative process every node included in the search learns x and if a hostile node is looked up it can associate the found node with the query initiator. Secret buddy: To remain anonymous the nodes select random buddies in the network and when a node searches for some data it gets the query executed from one of its buddies. The selection of buddies is realized with random walks before starting the look up, what prevents Timing Analysis Attacks. The buddies should be used only one time and not repeatedly. Fig. 5. Example Binary Tree In Salsa B1 ...Br . Then connections are built from each A1 ...Ar node to each B1 ...Br node. The initiator then asks the B nodes to search for a final node. Next the querier selects a circuit randomly and connects the final node to it. The nodes get mapped trough a hash function of their IP addresses into points in the ID space. This is done for bound checking and so the closest node to a target is selected. If a path exceeds a threshold length, it is discarded. The ID space is partitioned in groups as each node knows all of the participants in its group and also knows some nodes in the other groups to route look up requests in the system. The groups are organized in the form of a binary tree. A node has a global contact for each level in the tree, which is selected at random from the child subtree where the node is not belonging to. A global contact is chosen by hashing the concatenation of the selecting node’s IP address and the level height. This is done to ensure that a node cannot select arbitrary global contacts. Figure 5. shows an example for a binary tree in Salsa. B. Attacks 1) Inherited attacks: As Torsk is just a implementation of Tor that aims to make the overlay network achieve scalability it inherits the weaknesses of the previous system. Thus all the attacks mentioned in the Tor section are applicable also against the Torsk overlay network. 2) Buddy Exhaustion Attack: Since the buddies should be used only one time on the end node of a built circuit, Buddy Exhaustion Attack can be used and thus the attacker can succeed placing malicious entry and exit nodes in many circuits. Then the attacker can apply DoS attack or use timing analysis attack. The attack consists in flooding the node that is looked up with the aim to extend the circuit. Since the random walk for selecting new buddies is restarted every time when an invalid certificate is found, the attacker can just let the malicious nodes expose invalid certificates and with enough large fraction of hostile nodes it is most likely a malicious node to be included in a random walk. Thus the victim node can’t recover from the exhaustion attack. The performed study [3] shows that with this attack over 80 B. Attacks 1) Intersection Attack: To accomplish this attack in Salsa an attacker only needs to have at least one node in each group. When 4096 groups exits, an attacker needs 68100 hostile nodes to ensure success with probability 0,9998. [4] The other mechanism of gaining overview of the network is by using the look up process. This is a long procedure and new nodes are joining over and over again. 2) Active path compromise attacks: If an attacker gets all the nodes in a particular stage compromised, she can get all the IDs/public keys of the next set of nodes, being looked up, modified. Since a node can not determine the validity of a public key the bound checking algorithm is defeated. The remaining stages of the path building can now be emulated. If the attacker gets the first and the last node in a circuit compromised she can use end-to-end timing analysis to compromise the path. 3) Conventional Continuous Stage Attack: Another way of compromising path is to have at least one malicious node at every stage of the path. Lets take the three attacks nodes A1 , VIII. S ALSA A. Overview Salsa is a DHT-based layered circuit anonymity scheme. Look up mechanism: The querier selects r random nodes A1 ...Ar and gets them separately look up for another r nodes 7 6~ EXPLOITING ANONYMITY IN P2P-BASED SYSTEMS A2 , A3 , where 1, 2 and 3 stay for the different stages. A1 looks up A2 , which on his turn looks up A3 . the last node in the tunnel and last with the key of the first node. Before forwarding the packet each node first removes the outer encryption layer and then tags the packet with the flow identifier of the next node in the tunnel. The last hop removes the last layer and sends the original IP packet. The response from the server then gets encrypted l times in the tunnel and Alice needs to perform l decryptions. IX. C ASHMERE A. Overview Cashmere is a recursive DHT based network overlay on top of Pastry DHT. A node has k-bit signed node-ID. The nodes are divided in groups with m-bit IDs, where k is equal or greater than m. The group-ID serves as a prefix of the nodes. A node participates in a group if the ID of the group is a prefix of its ID. Every group has assigned public/private keys and the group members receive them. The nodes obtain also the public keys from the other groups. Messages in the overlay are routed using group-IDs. The first found node, that has this group-ID as a prefix is responsible for forwarding the message to all other members in this group. The forwarding of messages is done through n groups. The sender encrypts separately the path and the message in layers using the public keys of the groups. Thus the same path can be used multiple times. A group in the path decrypts the path message with it’s private key and finds out the next group in the path and the symmetric key to decrypt the outer layer of the message. B. Attacks 1) Low Cost Attack: The term low cost attack means that the attacker requires only a partial view of the network. Like the low cost attack against Tor a corrupt node must find the other nodes and establish connections with them to monitor their latencies. When the adversary is ready with the monitoring she can use the latencies information to obtain the traffic load of the nodes, she has built connections with. If the nodes were on a path to a corrupt server there will be similarity between their traffic load and the traffic load of that server. Checking all the nodes can lead to learning the whole path. For this attack to be applicable, the traffic loads of the nodes must be extracted from the latencies, as the described above Tor attack. Second, the corrupt node must be able to discover all nodes. Third, an establishment of direct connections to all of them should be possible. In the testbed of Tarzan during the study [5] a mimic part wasn’t available and it wasn’t possible to conduct an experiment to obtain, if the mimic mechanism is able to destroy the timing characteristics. So the problem if it is possible to extract the real traffic loads was left open. Tarzan offers the ability to discover all other nodes in the network overlay through a goosip-protocol based mechanism. The last condition is also met. Through the mimics is not possible to be established a direct connections to all nodes, unless the desired nodes are mimics of the corrupt node. But the NAT-Server node can be freely chosen and thus it is possible to be established a one-hop connection to the desired nodes if they are treated as the NAT-Server of that connection. As conclusion the applicability of the attack against Tarzan depends only on the open question if the mimic traffic can destroy the timing characteristics. 2) Intersection Attacks: Since as already mentioned a node is capable of discovering all nodes in the network an Intersection attack is thus applicable here. 3) Packet Counting – Lone Connection Tracking [7]: As I already said in the Tor Section that this attack is applicable also against Tarzan. B. Resending captured messages Attack [4] If a observer catches a message m1 delivered to group G1 and m2 to G2 , the attacker can try to send m1 over a new path, including both groups and built by the attacker. Then depending on that if m2 is seen on the same place, where the first m2 was caught it is sure whether G1 and G2 were/are neighbors on the original path. This attack is possible, because only public-private key structure is used for encryption. It is not applicable in overlays where only session keys are used for encryption. X. TARZAN A. Overview Tarzan is the first anonymizing communication system that is both self-organizing and fully-decentralized. Every node in the network is a client and a relay. Not both ends of a tunnel need to be in Tarzan for the communication. If a client wants to connect to a server not in Tarzan, the last node in the circuit (the exit node) acts as a NAT-Server. Tarzan is based on the Chaum-MIXes idea and every node in the tunnel adds or removes encryption layer depending on the direction. When joining Tarzan, a node ask k nodes already in the network to share with it mimic traffic. This means they must send him their mimics. The mimics are normal nodes in the network and the joining node builds a bidirectional connections with them. When Alice wants to establish a connection with a server, she picks up the first node n1 of her mimic list. Then she asks n1 for its mimic list and picks up the second node from it. This process is repeated until the path reaches length of l hops. The l + 1 node in the path is the NAT-Server and Alice picks up it randomly from her peer database. The initiator first negotiates symmetric session keys with the hops in the circuit. The IP packet that has to be send is first encrypted with the key of XI. M ORPH MIX A. Overview MorphMix is a peer-to-peer anonymous network based on MIXes. Each node is a client that generates anonymous traffic and at the same time is a mix server that forwards anonymous traffic for other nodes. A node finds other nodes in the system through its neighbors. To defend against attacks based on colluding nodes that redirect to a set of other colluding nodes when a tunnel is built up, MorphMix introduces new collusion 8 ~ 7 EXPLOITING ANONYMITY IN P2P-BASED SYSTEMS detection mechanism (CDM). Each node has virtual links via TCP to its neighbors. MorphMix uses fixed size messages and layered encryption to defends against traffic analysis and also protect the message content. To build a anonymous tunnel the initiator D firsts select node A from its neighbors and establish a symmetric key with it. If the initiator wants to extend the tunnel he asks A to recommend nodes. Then D selects one of the recommended nodes, B, and gets a witness node C from the already known nodes to establish a symmetric key between D and B. This continues until D stops appending nodes to the tunnel. The witness mechanism is also used for the selection of the first node, thus a node is not aware of its position in the tunnel. CDM – To improve security each node maintains a fixed size extended selection list LES which consists of the suggested selections and the 16-bit IP prefix of the node that recommended them. To detect that a malicious node recommends another malicious nodes MorphMix distinguishes the nodes from each other by their 16-bit IP address prefix, because it is very costly for an attacker to own nodes in many unique /16 subnets. For every recommended selection a comparison in the extended selection list is made. Low cost traffic analysis and Packet counting are also very powerful threats that can be used against plenty of the existing anonymous communication systems. I hope this review of the attacks will motivate the development of a communication system that implements anonymization techniques and doesn’t expose weaknesses which can be used to employ the attacks described in this paper and also others not reviewed here. Personally I think that the development of a new system should not follow the approaches of the existing ones and needs to take a whole new way, because analysis of the old schemes has proven that those systems could not be made resistant against all the attacks. The focus of my paper were Low-Latency Open anonymous peer-to-peer systems and I haven’t reviewed any closed ones a.k.a. Darknets like Nulsoft’s WASTE and Freenet. However I suggest extensions of this paper that include those systems and even more of their kind. R EFERENCES [1] Miguel Castro and Peter Druschel and Ayalvadi Ganesh and Antony Rowstron and Dan S. Wallach Secure routing for structured peer-topeer overlay networks. Proceedings of the 5th symposium on Operating systems design and implementation - OSDI ’02, 2002. III-B1, III-B2 [2] Pere Manils and Abdelberi Chaabane and Stevens Le Blond and Mohamed Ali Kaafar and Claude Castelluccia and Arnaud Legout and Walid Dabbous Compromising Tor Anonymity Exploiting P2P Information Leakage. VI-B [3] Qiyan Wang and Nikita Borisov In Search of an Anonymous and Secure Lookup. ACM CCS, 2010. VII-B2 [4] Andrew Tran and Yongdae Kim Hashing it out in public: common failure modes of dht-based anonymity schemes. WPES, 2009. VIII-B1, IX-B [5] Rungrat Wiangsripanawan and Willy Susilo and Rei Safavi-naini Design principles for low latency anonymous network systems secure against timing attacks. In Proceedings of the fifth Australian symposium on ACSW frontiers (ACSW ’07, 2007. X-B1 [6] Steven J. Murdoch and George Danezis Low-Cost Traffic Analysis Of Tor. In Proceedings of the 2005 IEEE Symposium on Security and Privacy. IEEE CS, 2005. V-B1, V-B2 [7] Andrei Serjantov and Peter Sewell Passive Attack Analysis for Connection-Based Anonymity Systems. In Proceedings of European Symposium on Research in Computer Security (ESORICS, 2003. V-B2, V-B2, X-B3, XI-B3 [8] Brian N. Levine and Michael K. Reiter and Chenxi Wang and Matthew Wright Timing attacks in low-latency mix systems (extended abstract. Proceedings of the 8th International Financial Cryptography Conference (FC 2004), Key West, FL, USA, February 2004, volume 3110 of Lecture Notes in Computer Science, 2004. IV-A B. Attacks 1) Intelligent Selection Attack if a colluding node knows it is the first one in the tunnel: 1) For every victim we construct a list of selections S, so that there is no overlap in the subnets between the nodes in S. 2) Global pointer pg keeps reference to a node in the list that is to be offered the next time. 3) Every time the pointer is incremented and when it refers to the last node in S the pointer is moved to the first node and the iteration goes so on. 2) Intelligent Selection Attack if a colluding node doesn’t knows it is the first one in the tunnel: 1) We reply to a v’s request by assigning local pointers pl to the elements referenced by pg and offer v this selection. 2) For every successive request we increment pl and offer the selection it points to. 3) After the tunnel is built up we just measure the length of the tunnel and determine if the initiator was v or some other node. 4) In the case v was the initiator we set pg to point to the elements referenced by pl . The Intelligent Selection Attack is very powerful especially against new nodes, because their extended selection lists are empty. 3) Packet Counting – Lone Connection Tracking [7]: As I already mentioned earlier in the Tor Section that this attack is applicable also against MorphMix. XII. C ONCLUSIONS As we can see based on Table 1. that makes a summary of the attacks described here the Intersection Attack approach seems to be serious problem for Onion-routing schemes. 9 8~ EXPLOITING ANONYMITY IN P2P-BASED SYSTEMS TABLE I C OMPARISION Attack Protocol Time of connection initiations Low Cost traffic analysis Packet counting Traffic Analysis - corrupt Node, corrupt Server Intersection Attack Active path compromise attacks Conventional Continuous Stage Attack Resending catched messages Intelligent Selection Attack Timing Attacks Buddy Exhaustion Attack Salsa x x x Cashmere TOR x x x x Torsk x x x x x Tarzan MorphMIX Chaum-MIXes systems x x x x x x x 10 Onion Routing x x x ~ 1 REPLIKATIONSSTRATEGIEN IN CONTENT-DISTRIBUTIONSSYSTEMEN Replikationsstrategien in Content-Distributionssystemen Julian Dean Zusammenfassung—Mittels Replikation können Performanz und Verfügbarkeit von Content-Distributionssystemen erhöht werden. Solche Systeme dienen der Verbreitung von Inhalten, etwa Webinhalten oder Streaming-Medien im Internet. Es existieren verschiedene Strategien für die Platzierung, Aktualisierung und Abfrage der Replikate, welche die Performanz und Verfügbarkeit maßgeblich beeinflussen. In diesem Paper wird ein Überblick über existierende Replikationsstrategien in Content-Distributionssystemen gegeben. Sie unterscheiden sich vorallem bezüglich Kommunikation (Client-Server vs. Peer-toPeer), Informationsfluss (Push vs. Pull) und Konsistenz (stark vs. schwach). chen. Dazu werden zunächst in Kapitel II Faktoren genannt, anhand derer solche Replikationsstrategien klassifiziert werden können. Danach werden konkrete Replikationsstrategien für Verschiedene Architekturen beschrieben: in Kapitel III für Client-Server-Systeme, in Kapitel IV für unstrukturierte P2PSysteme, in Kapitel V für strukturierte P2P-Systeme und in Kapitel VI für hybride Systeme. Abschließend wird in Kapitel VII eine Taxonomie der Systeme gegeben und in Kapitel VIII ein Fazit und ein Ausblick. I. E INLEITUNG Es gibt grundsätzlich zwei verschiedene Arten von Replikation [SKS09]: • Replikation ganzer Dateien: hierbei werden n Kopien einer Datei auf verschiedenen Knoten abgelegt. Der Nachteil ist, dass die Replikation ganzer Dateien relativ aufwendig ist. Eine Lösung ist die . . . • Blockweise Replikation: hierbei wird eine Datei in Blöcke zerteilt, die dann auf verschiedenen Knoten abgelegt werden. Der Verlust von Blöcken ist allerdings problematisch. Eine Lösung ist die Verwendung von Auslöschungscodes (engl. erasure code), eine Art von Vorwärtsfehlerkorrektur (engl. forward error correction, FEC), mit denen verlorene Blöcke wiederhergestellt werden können. Dabei können b originale Blöcke von m kodierten Blöcken rekonstruiert werden, wobei m nur wenig größer ist als b. Bei der Konstruktion von Replikationsstrategien für ein verteiltes System sind diverse Faktoren zu beachten, anhand derer auch die späteren Algorithmen klassifiziert werden können [Kla06]: a) Kommunikation: Grundsätzlich sind zwei Arten von Kommunikation denkbar: • Bei Client-Server-Systemen werden Daten auf eine bestimmte Anzahl von Knoten kopiert, beispielsweise bei Content-Delivery-Networks (CDN). Ein CDN ist ein Netz von Servern zur Auslieferung von Inhalten. • Bei Overlay-Netzwerken kann die logische Struktur des Netzwerks auf der Anwendungsebene genutzt werden, um Replikate zu platzieren. Es kann aber auch anhand von Kriterien wie der Beliebtheit von Daten oder der Verfügbarkeit von Knoten repliziert werden. Zu beachten ist, dass bei gewöhnlichen P2P-Netzwerken, etwa Tauschbörsen, bereits implizit eine Replikation stattfindet, weil Benutzer lokale Kopien von Daten erzeugen. Das Ausmaß der Replikation hängt dort allerdings von der Popularität der Daten ab und ist daher nicht ausreichend, weil auch unpopuläre Daten verfügbar sein müssen. II. G RUNDLAGEN Content-Distributionssysteme sind im Allgemeinen Systeme, mit denen Inhalte an Verbraucher geliefert werden, beispielsweise Webinhalte oder Streaming-Medien im Internet. Solche Systeme reichen von Content-Delivery-Systemen (CDN) bis hin zu Peer-to-Peer-Systemen. Das Ziel des Betreibers ist immer, seine Inhalte möglichst wirtschaftlich einem großen Publikum bereitzustellen. Er will also – wie immer in der Wirtschaft – seinen Gewinn maximieren und gleichzeitig die Kosten minimieren. Dazu müssen die Daten möglichst nahe an den Verbraucher gebracht werden, damit die Auslieferung nur geringe Kosten verursacht. Dies erreicht der Betreiber für Inhalte, die nicht in Echtzeit übertragen werden müssen, durch Replikation. Das generelle Ziel der Replikation ist es, Performanz und Verfügbarkeit von verteilten Systemen zu erhöhen, etwa den erwähnten Content-Distributionssystemen. Daten und Dienste sollen effizient abrufbar und trotz Knotenausfällen oder Netzwerkpartitionen verfügbar sein. Knotenausfällen kommen beispielsweise durch Abstürze von Servern zustande. Netzwerkpartitionen treten dann auf, wenn Gruppen von Knoten durch den Ausfall von Verbindungen voneinander getrennt werden, jedoch für sich noch funktionsfähig sind. Es wird mit einem Lehrbuchbeispiel gezeigt, dass durch Replikation die beiden Ziele erreicht werden können: Bei n replizierenden Knoten mit unabhängiger Ausfallwahrscheinlichkeit p beträgt die Verfügbarkeit des Gesamtsystems 1 − pn , sie kann demnach durch Replikation verbessert werden. Allerdings ist in Folge mehr Fehlertoleranz nötig, etwa muss bei gleichzeitigen Updates in verschiedenen Netzwerkpartitionen eine Synchronisierung durchgeführt werden, nachdem die Partitionierung behoben ist. Lese- und Schreibvorgänge müssen auf vielen Knoten ausgeführt werden. Da all dies aber nicht skaliert, muss häufig die Konsistenzbedingung abgeschwächt werden [CDK05], [Kla06]. Die Arbeit gibt einen Überblick über existierende Ansätze, Replikation in Content-Distributionssystemen zu verwirkli- 11 2~ REPLIKATIONSSTRATEGIEN IN CONTENT-DISTRIBUTIONSSYSTEMEN Da – insbesondere bei Overlay-Netzwerken – eine starke Fluktuation von Knoten bestehen kann, müssen deren Eigenschaften wie Bandweite, Rechenleistung oder Verweildauer beachtet werden, wenn sie Replikate speichern sollen. b) Synchronisierung und resultierende Konsistenz: Bei der Synchronisierung von Replikaten kann der Informationsfluss zwischen den Knoten grundsätzlich in zwei Richtungen stattfinden: • Knoten sind passiv und bekommen ihre Updates zugewiesen (Push). Die Aktualisierung von Replikaten kann auf zwei Wege geschehen, wobei das benötigte Maß an Konsistenz ausschlaggebend ist: – Bei der eifrigen Replication (engl. eager replication) werden alle Replikate synchron durch eine Transaktion aktualisiert. Sie führt zu starker Konsistenz, ist bei großen Systemen allerdings ungeeignet, weil Deadlocks auftreten können. Ein Deadlock kann etwa auftreten, wenn mehrere Transaktionen gleichzeitig Knoten aktualisieren, jedoch jede Transaktion auf das Commit einer anderen Transaktion warten muss. – Bei der trägen Replication (engl. lazy replication) werden Updates asynchron durch Subtransaktionen propagiert. Sie führt zu schwacher Konsistenz und kann nur eingesetzt werden, wenn veraltete Daten hinnehmbar sind. • Knoten sind aktiv und erkundigen sich bei anderen Knoten nach Updates (Pull). Die resultierende Konsistenz ist schwach, da Updates nur allmählich propagiert werden. c) Schreiben: Bezüglich des Schreibens auf Knoten gibt es zwei Möglichkeiten: • Es kann nur auf einen ausgezeichneten Knoten geschrieben werden. Dieser stellt somit einen Single-Point-ofFailure dar. Es wird in der Regel ein pessimistisches Replikationsprotokoll verwendet, wobei Updatekonflikte gar nicht erst auftreten dürfen. Es entsteht der Eindruck einer einzigen Kopie der Daten. • Es kann auf mehrere oder alle Knoten geschrieben werden. Dabei können Inkonsistenzen auftreten, deren Behandlung zu schlechter Skalierbarkeit führt. Daher wird in der Regel ein optimistisches Replikationsprotokoll eingesetzt, wobei Updatekonflikte nur beim Eintreten behandelt werden. Problem ist, dass es sich die zentralisierten Nameserver nicht leisten können, die genauen Standorte der Replikate zu speichern. Die Replikate werden in Rechenzentren gespeichert, um eine gewisse Verfügbarkeit zu erreichen. Allerdings platziert das CDN oft mehr Replikate als nötig, was Speicher und Bandbreite verschwendet [CKK02]. B. Zufällig Die Idee hinter einem auf Zufall basierenden Ansatz rührt daher, dass ein randomisierter Algorithmus für gewöhnlich eine gute durchschnittliche Performanz aufweist. Ein möglicher Algorithmus (Random-Popularity) funktioniert wie folgt: Jedem Objekt wird eine bestimmte Popularität zugeordnet, die der Anzahl der Anfragen nach diesem Objekt entspricht. Der Algorithmus ist iterativ: Die Objekte werden in jeder Iteration absteigend nach ihrer Popularität geordnet und das populärste Objekt auf einen zufälligen CDN-Knoten repliziert. Ist das Replikat in der Nähe des Zugangsnetzes ein oder mehreren ISPs platziert, so wird die Popularität des entsprechenden Objekts mit der Anzahl der Anfragen dieser ISPs gesenkt, da diese Anfragen nun durch das Replikat bedient werden können. Damit auch unpopulärere Objekte verfügbar sind, werden mindestens k Replikate jedes Objekts erzeugt. Sehr populäre Objekte dürfen nur mehr als k-mal repliziert werden, wenn alle anderen Objekte bereits k Replikate besitzen [KMS09]. Blade Runner Attack of the Clones Replicant Metropolis Popularität Abbildung 1. Bei einer zufälligen Platzierung wird in jedem Schritt das populärste Objekt repliziert und entsprechend abgestuft. III. C LIENT-S ERVER -S YSTEME Bei Client-Server Systemen handelt es sich beispielsweise um CDNs, welche Inhalte im gesamten Internet ausliefern. Von besonderer Bedeutung ist es dabei, Inhalte innerhalb der Domänen der Internetdienstanbieter (engl. Internet Service Provider, ISP) bereitzustellen, um den Traffic über den Backbone zu minimieren. Die folgenden Ansätze sind möglich, stellen jedoch keine erschöpfende Aufzählung dar. Es handelt sich um akademische Ansätze, nicht um industrielle. C. Baum-basiert Die Topologie des Internets kann als Baum aufgefasst werden, mit dem CDN-Knoten, von dem die Inhalte ausgehen, als Wurzel, und den einzelnen ISPs als Blättern. Nun sollen mindestens k Replikate jedes Objekts möglichst auf Pfaden zu Blättern (ISPs) platziert werden, über die viele Zugriffe stattfinden. Eine Möglichkeit (Tree Based Bottom Up) besteht darin, eine Breitensuche (Traversierung) von den Blättern ausgehend zur Wurzel durchzuführen. Dabei werden der Reihe nach auf jeder Ebene des Baums möglichst viele Objekte auf jenen Knoten repliziert, bei denen sie am populärsten sind. Da die Replikate von unten nach oben im Baum platziert werden, A. Klassisch Die meisten gängigen CDNs verwenden eine DNS-basierte Weiterleitung von Anfragen an Replikate (Lastverteilung). Das 12 ~ 3 REPLIKATIONSSTRATEGIEN IN CONTENT-DISTRIBUTIONSSYSTEMEN handelt es sich um das Bottom-Up-Prinzip. Die Popularität der Objekte entspricht wieder am Anfang der Anzahl entsprechender Anfragen und wird für jedes Replikat entsprechend der nun bedienbaren Anfragen gesenkt. Allerdings werden nicht mehr als k Replikate erzeugt, sodass möglicherweise nur auf den unteren Ebenen des Baums Replikate existieren. Das Resultat ist, dass sehr populäre Objekte nahe an den Blättern – also näher an den Verbrauchern – repliziert werden, während unpopulärere weiter oben Replikate besitzen. Daraus resultiert eine Entlastung des Netzwerks, weil gefragte Daten mit weniger Aufwand an den Mann gebracht werden können. [KMS09]. das populärste Objekt auf dem Knoten platziert, für den die durchschnittlichen Zugriffskosten aller ISPs am geringsten sind. Danach wird die Popularität des Objekts gemäß der Anfragen benachbarter ISPs gesenkt. Es wird wieder solange iteriert, bis jedes Objekt k Replikate besitzt. Es handelt sich um einen Greedy-Algorithmus, weil in jedem Schritt auf dem besten Knoten repliziert wird. Telekom AOL AT&T Metropolis 1&1 Top CDN-Knoten Blade Runner Replicant Attack of the Clones Replicant Metropolis Popularität DECIX EQUINIX Blade Runner Telekom Abbildung 3. Bei einer „gierigen“ Platzierung werden Objekte dorthin repliziert, wo viele ISPs in der Nähe sind. Dadurch können sie ökonomischer abgefragt werden. Attack of the Clones 1&1 AOL AT&T Eine Optimierung des Algorithmus (Greedy Median Robust) berücksichtigt die Auswirkungen von Knotenausfällen im Worst Case. Der Ablauf ist ähnlich, allerdings werden die jeweils populärsten Objekte nicht nur solange an günstigen Knoten repliziert, bis deren Speicher ausgeschöpft ist, sondern es werden zusätzlich bestehende Replikate gelöscht, deren Verlust die kleinste Verschlechterung bezüglich des Traffics bewirkt. Des Weiteren wird am Ende verbleibender Speicher von Knoten aufgefüllt. Dazu werden Replikate von Objekten identifiziert, deren Ausfall den meisten Traffic verursachen würde. In der Nähe dieser Replikate wird das Objekt dann weiter repliziert, um den Schaden bei Knotenausfällen zu begrenzen [KMS09]. Abbildung 2. Bei der Baum-basierten Platzierung werden populäre Objekte möglichst an den Blättern (ISPs) platziert, damit der Zugriff ökonomisch ist. D. Greedy Eine weitere Möglichkeit ist der Einsatz eines GreedyAlgorithmus, wobei in jedem Schritt ein Knoten so platziert wird, dass später minimale Kosten entstehen. Die Motivation dafür ist folgende: Wenn Anomalien auftreten, beispielsweise Knotenausfälle, so müssen die Kommunikationskosten zwischen den Replikaten beachtet werden, da bei einem Knotenausfall ein anderes Replikat in der Nähe die Anfragen übernehmen muss. Das gesuchte Verfahren ähnelt dem FacilityLocation-Problem, der Platzierung von k Anbietern, sodass die Summe der Abstände jedes Verbrauchers zum nahesten Anbieter minimal ist. Der Abstand zum nahesten Anbieter ist demnach für die meisten Verbraucher relativ klein, er kann aber für einige Verbraucher auch größer ausfallen. Entscheiden ist, das die Summe aller Abstände minimiert wird. Die Anbieter entsprechen hier der Teilmenge von Knoten, die Inhalte bereitstellen, die Verbraucher den restliche Knoten, welche die Inhalte abrufen. Die Replikate (Anbieter) müssen zusätzlich so platziert werden, dass ihr Ausfall zu möglichst geringem Schaden führt. Daher platziert der iterative Algorithmus (Greedy Median) Objekte derart an Knoten (Anbietern), dass der Zugriff für alle ISPs (Verbraucher) minimale Kosten verursacht. Die Popularität eines Objekts wird wieder mit der Anzahl der Anfragen initialisiert. In jeder Iteration werden die Objekte nun absteigend nach Popularität sortiert, und E. Dynamisch Die drei genannten Algorithmen erfordern globales Wissen sowie eine Instanz, die alle Knoten kennt und Replikate zuweist. Sie bringt auch die üblichen Probleme mit sich: Flaschenhals und Single-Point-of-Failure. Daher wird nun ein Algorithmus vorgestellt, bei dem jeder CDN-Knoten lokal entscheidet, ob Replikate weiter geklont oder gelöscht werden sollen [PPV07]. Die Entscheidung basiert auf Anzahl, Inhalt, Art von Abfragen und Last der Replikate, die der Knoten speichert. Jeder Knoten j speichert zwei Mengen benachbarter Knoten: • α(j) enthält CDN-Knoten, die höchstens dmax entfernt sind. Es sind Knoten, die j versorgen kann. • ρ(j) enthält CDN-Knoten, die höchstens dmax von Knoten in α(j) entfernt sind. Es sind Knoten, die j bei einem Ausfall vertreten können. 13 4~ REPLIKATIONSSTRATEGIEN IN CONTENT-DISTRIBUTIONSSYSTEMEN Anhand dieser Information kann Knoten j nun überlastete Replikate klonen und unterbelastete Replikate löschen. Der Klonalgorithmus ist rekursiv und funktioniert wie folgt: Knoten j bestimmt zunächst die Last eines einzelnen Replikats, welche der Anzahl der Anfragen entspricht. Wenn die Last einen Schwellwert überschreitet, wird solange repliziert, bis j selbst nicht mehr überlastet ist. Dazu wählt j in jedem Rekursionsschritt einen Knoten aus ρ(j), der die abzugebenden Anfragen am besten bedienen könnte, ohne dabei selbst überlastet zu werden, und repliziert auf diesem das entsprechende Objekt. Der Löschalgorithmus kann ein Replikat nur dann löschen, wenn es keine Anfragen mehr bedient, daher müssen Anfragen zuerst umgeleitet werden. Es besteht die Gefahr, dass kurzzeitig nicht belastete Replikate ständig gelöscht und kurz darauf neu angelegt werden, was dem Seitenflattern (engl. page thrashing) bei der virtuellen Speicherverwaltung ähnelt. Deshalb wird für jedes Replikat eine Zugriffshistorie gespeichert, über die längerfristig der Bedarf nach dem Replikat ermittelt werden kann. Replicant Attack of the Clones ein nahe gelegener Knoten das Objekt bereits repliziert, sinkt Tn,f . Der Algorithmus optimiert nur nach Transferkosten, welche nicht auftreten, falls ein Knoten ein Objekt speichert. Dabei wird nicht beachtet, dass die Speicherung ebenfalls Kosten verursacht. Ein Algorithmus (Storage Renting) der ebenfalls die Speicherungskosten Sn,f berücksichtigt, ist dem erstem Algorithmus sehr ähnlich. Der Aufwand berechnet sich zu An,f = Tn,f −α·Sn,f . Dadurch ist ein Kompromiss zwischen Transferkosten und Speicherungskosten über α steuerbar [WCDT+ 06]. IV. U NSTRUKTURIERTE P2P-S YSTEME Der Vorteil dezentralisierter, unstrukturierter P2PNetzwerke liegt darin, dass sie relativ belastbar bezüglich der Fluktuation von Peers sind. Der Nachteil ist, dass sie nicht skalierbar sind, weil Abfragen (engl. Queries) über Flooding oder Walker umgesetzt werden. Beim Flooding werden Abfragen an alle Nachbarn weitergeleitet, das P2P-Netzwerk wird förmlich überflutet. Bei Walkern werden Abfragen jeweils an einen zufälligen Nachbarn weitergeleitet, es sind infolge mehrere Walker nötig, um mit angemessener Wahrscheinlichkeit eine Datei zu finden. Weil beide Verfahren das P2P-Netzwerk stark belasten, ist die Reduzierung des Abfrageaufwands ein wichtiges Ziel der Replikation [LCC+ 02]. Um das Problem zu verdeutlichen, nehme man ein vereinfachtes System mit m zu replizierenden Objekten und n Knoten an. Jedes der mit dem Index i durchnummerierten Objekte besitzt die Abfragerate qi (q steht für Query) und den Replikationsfaktor ri , wird also auf ri zufälligen Knoten repliziert. Die gesamte Anzahl von Replikaten ist somit Pm R = i=1 ri mit 1 < ri ≤ P n. Die Summe der Abfrageraten m wird normiert und ist somit i=1 qi = 1. Das Problem kann nun wie folgt formuliert werden: Wie muss die Verteilung der R Replikate auf die m Objekte geschehen, damit der Abfrageaufwand möglichst gering ist? Drei idealisierte Verteilungen sind vorstellbar: R . Die 1) Die Replikate sind gleichverteilt, somit ist ri = m Auslastung eines Replikats ist dann proportional zu Abfragerate des replizierten Objekts, der Abfrageaufwand zum Finden eines Objekts hingegen ist für alle Objekte gleich. 2) Die Replikate sind proportional zur Abfragerate verteilt, somit ist ri = Rqi . Es entsteht eine perfekte Lastverteilung, da alle Replikate die gleiche Auslastung haben. Allerdings haben populäre Objekte einen niedrigeren Abfrageaufwand als unpopuläre. 3) Die Replikate sind proportional zur Quadratwurzel der √ Abfragerate verteilt, ri = λ qi mit λ = PmR √q . Es Metropolis Blade Runner Blade Runner Abbildung 4. Bei einer dynamischen Platzierung entscheiden die Knoten lokal, welche Objekte sie halten. Hier wird beispielhaft ein sehr populäres Objekt repliziert. F. Ring-basierte CDNs Es gibt CDNs mit Ringstruktur, bei denen Objekte immer über jeden Knoten des Rings gereicht werden. Für Algorithmen zur Platzierung von Replikaten können dabei ähnliche Annahmen wie bei Greedy-Algorithmen getroffen werden. Ein Algorithmus (Survival of the Fittest), der nur die Transferkosten Tn,f von Objekten beachtet, die ja immer um den Ring herum gereicht werden, basiert auf dem Überleben der populärsten Objekte. Wenn ein Objekt f über den Knoten n gereicht wird, modifiziert dieser seinen Aufwand An,f = Tn,f entsprechend der Kosten, das Objekt auf sich selbst zu übertragen. Zuerst speichern nun alle Knoten jedes weiterzureichende Objekt bis sie voll sind, danach werden bestehende Objekte durch populärere ausgetauscht. Allerdings sind gespeicherte Objekte nicht unbedingt die lokal populärsten, da durch Tn,f (Transferkosten von Objekt f zu Knoten n) auch die Entfernung zum entsprechenden Knoten berücksichtigt wird. Wenn i=1 i entsteht eine optimale Verteilung im Hinblick auf den Abfrageaufwand. Es kann gezeigt werden, dass 1 und 2 den gleichen durchschnittlichen Abfrageaufwand verursachen, und dass bei 3 ein optimaler durchschnittlicher Abfrageaufwand besteht. Leider sind diese Erkenntnisse theoretischer Natur, in der Praxis sind sie kaum anwendbar, da kein globales Wissen über die Anzahl bestimmter Replikate existiert. Allerdings gibt es verschiedene 14 ~ 5 REPLIKATIONSSTRATEGIEN IN CONTENT-DISTRIBUTIONSSYSTEMEN Möglichkeiten, bei Abfragen auch gleich Replikate anzufertigen, um bestimmten Verteilungen nahe zu kommen. Es wird von keinem Flooding ausgegangen, sondern von k-Walkern, also k parallelen Walkern zwecks Verkürzung der Suche. • Der anfordernde Knoten repliziert das Objekt (owner replication, z.B. bei Gnutella). Es ist die einfachste Art von Replikation. • Das Objekt wird entlang des Pfades zwischen anforderndem und lieferndem Knoten repliziert (path replication, z.B. bei Freenet). Dies führt annähernd zu einer Quadratwurzel-Verteilung, hat aber den Nachteil, dass replizierende Knoten immer auf dem selben Pfad liegen, also keine gute Streuung über das Netz stattfindet. • Das Objekt wird auf p zufällige Knoten repliziert, die ein k-Walker besucht hat, wobei p die Anzahl der Knoten auf dem Pfad zwischen anforderndem und lieferndem Knoten ist (random replication). Die Methode ist deutlich aufwendiger zu implementieren als die Vorige (path replication) und daher eher hypothetisch, sorgt jedoch für eine bessere Streuung der Replikate über das Netz. • Knoten gespeichert wird. Reagiert er nicht, können weiter entfernte Knoten kontaktiert werden. Unterstützt die DHT keine Lokalität, so bleibt nichts übrig als zufällige Replikate auszuwählen und die entsprechenden Knoten zu kontaktieren bis eine Antwort vorliegt. B. Chord und Co Besitzt die DHT eine Ringstruktur wie beispielsweise Chord, so kann die Platzierung von Replikaten entweder mit Hilfe der Ringstruktur oder der Hashfunktion geschehen [LDH06]. 1) Über Ringstruktur: Die Platzierung anhand der Struktur ist bei einem Ring besonders gut vorstellbar. DHash etwa, ein Speichersystem auf Basis von Chord, repliziert einen Wert auf den r Nachfolgern des Knotens, der für den entsprechenden Schlüssel verantwortlich ist. Zur Wartung der Replikate müssen zwei Maßnahmen regelmäßig durchgeführt werden: • V. S TRUKTURIERTE P2P-S YSTEME Um in strukturierten P2P-Systemen zu replizieren, werden in der Regel verteilte Hashtabellen (enlg. distributed hash table, DHT) wie Chord1 , CAN2 , Pastry3 , Tapestry4 , oder Kademlia5 als Primitiven benutzt. Dabei kann die logische Struktur dieser Overlay-Netzwerke ausgenutzt werden, um Replikate mehr oder minder geschickt zu über das Netzwerk zu verteilen. Replikate können aber auch zufällig, je nach Bedarf nach Daten (Last) oder gemäß der Verfügbarkeit von Knoten platziert werden. Es werden im Folgenden Verfahren beschrieben, die allgemein auf DHTs anwendbar sind, aber auch solche, die nur mit speziellen DHTs funktionieren. • Zwecks Instandhaltung von Replikaten sendet jeder Knoten den Schlüsselbereich, für den er zuständig ist, an seine r Nachfolger. Diese synchronisieren daraufhin ihre Daten, sodass Replikate angelegt oder aktualisiert werden. Als Optimierung können Hashbäume (engl. Merkle Tree) verwendet werden. Zwecks Prüfung der Zuständigkeit für Replikate sucht jeder Knoten den Besitzer des entsprechenden Schlüssels auf und prüft anhand dessen Nachfolgerliste, ob er selbst innerhalb von r Hops liegt. Ist das nicht der Fall, etwa weil neue Knoten zwischendrin beigetreten sind, löscht er das Replikat. Problematisch ist, dass der Ort der Replikate nicht bekannt ist. Alle Anfragen müssen über den Knoten geleitet werden, der für einen Schlüssel zuständig ist. Er leitet die Anfragen dann an Replikate weiter. 2) Über Hashfunktion: Es wird, analog zum oben beschriebenen Verfahren, eine Hashfunktion h mit zwei Parametern benutzt, um einen Wert r-mal (r = Replikationsfaktor) auf die Knoten h(Index, Schlüssel) zu replizieren, wobei der Index von 1 − r reicht. Der Knoten h(1, Schlüssel) ist dabei der Besitzer. Die Methode reduziert zwar die Kosten für das Nachschlagen, allerdings können die Kosten für die Kommunikation zwischen replizierenden Knoten je nach Platzierung der Replikate hoch sein. Außderdem können Allokationskollisionen entstehen, wobei zwei Replikate auf dem selben Knoten gespeichert werden – nicht gerade im Sinne der Ausfallsicherheit. Über die Hashfunktion können nun verschiedene Platzierungen realisiert werden: A. Modifizierte Hashfunktion Eine Methode, die bei allen DHTs andwendbar ist, besteht in der Modifizierung der Hashfunktion derart, dass zu einem Schlüssel mehrere Werte (Replikate) gespeichert werden können. Die Platzierung der Replikaten erfolgt auf den Knoten h(Index, Schlüssel), wobei jeder Instanz ein Index von 1 − r zugeordnet wird (r = Replikationsfaktor) [BHW07]. Die zweiparametrige Hashfunktion h ist beispielsweise h(Index, Schlüssel) = H(Index ◦ Schlüssel) (◦ ist die Konkatenation), sie wird also auf eine einparametrige Hashfunktion H zurückgeführt. Beim Nachschlagen spielt es eine Rolle, ob die DHT Lokalität unterstützt, also anhand eines Schlüssels erkennen kann, wie weit der zuständige Knoten entfernt ist. • Unterstützt die DHT Lokalität, so kann zunächst das Replikat angefragt werden, das vom nahe liegensten • 1 siehe http://pdos.csail.mit.edu/chord/ http://berkeley.intel-research.net/sylvia/cans.pdf 3 siehe http://www.freepastry.org/ 4 siehe http://pdos.csail.mit.edu/~strib/docs/tapestry/tapestry_jsac03.pdf 5 siehe http://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs. pdf 2 siehe • 15 Nachfolger: Replikate werden durch die Nachfolger eines Knotens gespeichert, was einer Nachbildung von DHash entspricht. In Chord ist dies effizient implementierbar, es kann allerings zu Allokationskollisionen kommen. Vorgänger: Replikate werden durch die Vorgänger gespeichert. Dadurch kann das Nachschlagen (engl. Lookup) effizienter bearbeitet werden, da Abfragen über die Vorgänger des Zielknotens geleitet werden, also genau über 6~ • • • REPLIKATIONSSTRATEGIEN IN CONTENT-DISTRIBUTIONSSYSTEMEN die replizierenden Knoten, von denen sie dann bearbeitet werden können. Allerdings treten ebenfalls verstärkt Allokationskollisionen auf. Finger: Replikate werden durch die Finger eines Knotens gespeichert. Dies führt zu einer besseren Verteilung der Replikate und zu einem schnelleren Nachschlagen. Blockweise Platzierung: Der Schlüsselraum wird in r gleichgroße Gruppen zerlegt, in denen jeweils alle Daten der Gruppe durch alle Knoten repliziert werden. Dies führt zu einer besseren Verfügbarkeit. Symmetrische Platzierung: Replikate werden in gleichmäßigen Abständen im Ring gespeichert. Dadurch ist die Replikation nicht von einer wechselnden Menge von Knoten abhängig, außerdem besteht eine guten Verfügbarkeit, da Allokationskollisionen unwahrscheinlich sind. erzeugen, da sie die Netzwerktopologie nicht kennen. Eine Möglichkeit für eine statische Platzierung konvertiert das Problem zu einem kapazitätsbeschränkten Spezialfall des FacilityLocation-Problems (engl. Capacitated Facility Location Problem). Es gibt Lokationen i, und die dortige Platzierung eines Anbieters hat die Kosten fi . Ein Anbieter kann höchstens li Verbraucher versorgen. Jeder Verbraucher j muss einen Anbieter i haben, für ihn entstehen dadurch die Kosten dj cij , wobei dj die Last auf Knoten j ist und cij die Entfernung von i nach j. Das Ziel ist nun, Anzahl und Standort von Anbietern zu finden, sodass die Gesamtkosten am geringsten sind. Leider ist das Problem NP-schwer, eine optimale Platzierung von Anbietern kann daher in der Regel nur annähernd bestimmt werden [CKK02]. D. Zeiger auf Replikate Die bisherigen Verfahren verteilen Replikate möglichst so, dass die Verfügbarkeit gewährleistet ist. Allerdings berücksichtigen sie nicht den tatsächlichen Bedarf nach den Daten. Beispielsweise können Hotspots auftreten, wobei auf bestimmte Daten sehr oft zugegriffen wird. Für deren Bedienung die bisherigen Verfahren denkbar schlecht geeignet. Eine Lösung besteht darin, die DHT nur zu benutzen, um die Lokationen von Replikaten verfügbar zu machen. Im Folgenden wird dazu beispielhaft ein Algorithmus für Chord vorgestellt, wobei ein Chord-Ring mit virtuellen Knoten und einer konsistenten Hashfunktion angenommen wird. Benutzer (de-) registrieren Replikate (in Form einer Abbildung: Dateiname → Lokationen) bei einem lokalem Katalog, der über Updates verteilt wird. Der Wurzelknoten einer Abbildung, also jener Knoten, der für den Schlüssel SHA1(Dateiname) zuständig wäre, speichert stattdessen das Tupel (Dateiname, Katalog). Diese Abbildungen werden wegen möglicher Knotenausfälle auf r Nachfolgern des Wurzelknotens repliziert (r = Replikationsfaktor), vorstellbar wäre aber auch eine andere Strategie. Bei der Fluktuation von Knoten werden Abbildungen an neue Wurzelknoten übertragen, diese aktualisieren wiederum ihre r Nachfolger, sodass die Kataloge von Replikat-Lokationen erhalten bleiben [CCF04]. Das Problem ist, dass die Kataloge von Dateien aktualisiert werden müssen, wenn Replikate hinzukommen oder entfallen. DHTs können aber normalerweise keine Werte verändern, sondern kennen nur Operationen wie Get() oder Set(). Allerdings können Updates über die Set-Operation emuliert werden [CZ05]. Dazu beispielhaft ein modifizierter Lookup-Algorithmus für Kademlia, der bei Lookups auch gleich veraltete Kataloge auf den neusten Stand bringt: Zunächst findet der Initiator eines Lookups alle nahesten Knoten zu einem angefragten Schlüssel über die FIND_NODE-Nachricht, diesen schickt er dann eine FIND_VALUE-Nachricht. Die Knoten antworten mit dem gesuchten Wert oder, falls der Wert nicht bekannt ist, mit dem kompletten Katalog. Der Initiator findet nun die aktuellste Antwort (Wert), und aktualisiert Knoten mit veralteten oder nicht vorhandenen Werten in ihrem Katalog über STORE-Nachrichten. Das Löschen von Einträgen im Katalog entspricht einem Update mit der Länge Null [CZ05]. C. Tapestry Beim Routing einer Anfrage in Tapestry wird der Suffix des Schlüssels in jedem Schritt um eine Stelle aufgelöst und die Anfrage einen Knoten näher zum Zielknoten geleitet. Daher rührt die Idee, über Tapestry nahe gelegene Knoten für die Replikation zu finden. Für den Aufbau eines Tapestry-Netzes wird von gut erreichbaren Servern in Rechenzentren der ISPs ausgegangen. Sie bilden eine Art Verteilungsbaum für die Verbreitung der Objekte. Aktualisierungen werden über einen Multicast auf der Anwendungsschicht (engl. application-level multicast) verteilt. Die Lebendigkeit des Baums, die Verfügbarkeit von dessen Servern, wird durch Keepalive-Nachrichten von der Wurzel zu den Kindern hin sichergestellt. Schicken diese keine RefreshNachricht innerhalb eines Timeouts zurück, werden sie aus dem Baum entfernt. Die mit j durchnummerierten Server haben die Beschränkung lj (Schwellwert) bezüglich der Last, Bandbreite und Speicherkapazität. Die mit i durchnummerierten Clients haben eine Beschränkung di (Schwellwert) bezüglich der Latenzzeit für den Zugriff auf die Server. Das Problem lässt sich nun formulieren: finde eine kleinste Menge von Servern S 0 , sodass der Abstand zwischen jeglichem Client ci und seinem ElternServer sci ∈ S 0 durch di beschränkt ist. Clients und Server in S 0 organisieren sich dabei in einem Multicastbaum (auf Anwendungsschicht) mit den Clients als Blattern und derartigem Fanout f (si ) ≤ li der Server in S 0 , sodass sie nicht überlastet werden. Es sind verschiedene Platzierungen von Servern denkbar, um die Daten zu replizieren. Eine naive Platzierung funktioniert folgendermaßen: Schickt ein Client c eine Anfrage über Tapestry an den Server s, so schaut dieser, ob er der Elternknoten von c ist, sprich seine verbleibende Kapazität (engl. remaining capacity) rcs > 0 ist und sein Abstand zum Client distIP (s, c) ≤ dc . Ist das nicht der Fall, versucht er, ein Replikat auf einem Server möglichst nahe an c zu platzieren. Eine geschicktere Platzierung erweitert die Selektion der Elternknoten eines Clients auf die Eltern, Geschwister und Kinder des Servers s. Beide Platzierungen haben das Problem, dass Clients höchstwahrscheinlich keine optimale Anzahl von Replikaten 16 ~ 7 REPLIKATIONSSTRATEGIEN IN CONTENT-DISTRIBUTIONSSYSTEMEN Die beiden Algorithmen beschreiben nur, wie die Lokationen vorhandener Replikate verteilt werden können. In einem weiteren Schritt können auch die Replikate selbst in der DHT abgelegt werden. Lookups erfolgen dann in einer zweischrittigen Prozedur; zuerst werden Lokationen ermittelt, dann die eigentlichen Daten. Da die Replikate an keine DHT-Struktur mehr gebunden sind, liegt es auf der Hand, das „Angebot“ strategisch gemäß der „Nachfrage“ zu platzieren. ist. Die Replikation einer Datei läuft wie folgt ab: zunächst werden Knoten (Kandidaten) ausgewählt, die eine ähnliche NodeID wie der gleichlange Präfix der FileID haben. Für die Auswahl wird eine Funktion und ein Schwellwert benötigt. Die Kandidaten werden anhand der Tabelle bezüglich ihrer Verfügbarkeit sortiert. Nun wird auf gerade soviele der verfügbarsten Knoten repliziert, dass die Gesamtverfügbarkeit der Datei im Netzwerk einen festgelegten Schwellwert übersteigt [SKS09]. VI. H YBRIDE S YSTEME E. Strategische Platzierung In Overlay-Netzwerken ist die physikalische Lokation von Daten teilweise überhaupt nicht feststellbar. Es ist dann aber nicht möglich, Daten möglichst nahe an allen ISPs zu replizieren. Eine mögliche Lösung ist die Verwendung einer hierarchischen, hybriden, zweistufigen Architektur. Auf der höheren Ebene verhält sie sich wie ein klassisches CDN, Inhalte werden über das Backbone-Netz an Zwischnknoten verteilt, welche strategisch in der Nähe von Internet-Knoten platziert sind. Auf der niedrigeren Ebene verhält sich die Architektur wie ein P2P-Netzwerk, die Inhalte der Zwischenknoten werden über eine Art Zugangsnetz an die Benutzer verteilt [JLLB08]. Es werden einige Algorithmen vorgestellt, die Standort und Anzahl erzeugter Replikate anhand bestimmter Kriterien bestimmen. 1) Anhand des Zufalls: Ein randomisierter Algorithmus (CDN-Random) wählt neue Knoten für Replikate zufällig aus dem Overlay-Netzwerk aus. Dadurch werden die Replikate im Netzwerk ungefähr gleichverteilt. Der Nachteil ist allerdings, dass Replikate unter Umständen weit weg von überlasteten Knoten platziert werden, sodass keine gute Lastverteilung stattfindet. Außerdem ist der Algorithmus bezüglich der Anzahl angelegter Replikate relativ aggressiv. Dadurch werden mehr Replikate erzeugt als wirklich nötig sind [AWZZ07]. 2) Anhand des Bedarfs nach Daten: Ein möglicher Algorithmus (CDN-QueryStat) platziert Replikate auf oder nahe von Knoten, von denen viele Anfragen herkommen. Dazu ist allerdings eine Datenzugriffshistorie nötig. Replikate werden möglichst entlang der Zugriffspfade von Queries erzeugt. Bezüglich der Anzahl angelegter Replikate ist der Algorithmus moderat. Es werden also nicht übermäßig viele überflüssige Replikate erzeugt. [AWZZ07]. Eine Optimierung des Algorithmus (CDN-PriorityBased) besteht darin, bereits replizierende Knoten möglichst mit anderen Schlüsseln aufzufüllen. Ziel ist dabei, die Anzahl replizierender Knoten und damit auch die Kosten für die Aktualisierungen von Replikaten (Traffic zwischen den Knoten) zu minimieren. Was die Anzahl angelegter Replikate angeht, ist der optimierte Algorithmus konservativ. Unter den drei aufgeführten Algorithmen erzeugt er die beste Anzahl von Replikaten. [AWZZ07]. Ein Algorithmus (Top-K Most Frequently Requested), bei dem Knoten anhand der Last aktiv selbst replizieren, funktioniert wie folgt: jeder Knoten hält eine Tabelle für alle Dateien, für die er Anfragen erhalten hat. Für jede Datei in der Tabelle führt der Knoten eine Schätzung ihrer lokalen Anfragerate. Eine einfache Schätzung wäre beispielsweise die Anzahl Anfragen nach einer Datei geteilt durch die Uptime des Knotens, als Optimierung könnten jüngere Anfragen stärker gewichtet werden als ältere. Jeder Knoten speichert nun zunächst soviele der populärsten Dateien wie möglich. Danach aktualisiert er laufend die Popularität von Dateien, und ersetzen gegebenenfalls gespeicherte Dateien durch populärere [KRT07]. 3) Anhand der Verfügbarkeit von Knoten: Ein möglicher Algorithmus (basiert auf Peer Availability Table) benutzt eine Tabelle, um über längere Zeiträume die Verfügbarkeit von Knoten im Netzwerk aufzuzeichnen. Für jede Datei wird eine FileID vergeben, die länger als die NodeID eines Knotens 17 8~ REPLIKATIONSSTRATEGIEN IN CONTENT-DISTRIBUTIONSSYSTEMEN VII. TAXONOMIE die mit Hilfe der logischen Struktur des Netzwerks Replikate platzieren. Ob diese geeignet sind, um Belastungsspitzen zu bedienen, ist allerdings zweifelhaft. Eine Tatsache, die für P2P-Netzwerke spricht, ist, dass Last an die Benutzer übertragen wird. P2P-basierte Content-Distributionssysteme könnten dies verwirklichen, haben aber die üblichen Probleme wie schnelle Fluktuation von Knoten und teilweise keine Information über die physikalische Lokation von Knoten. Die Fluktuation kann eingeschränkt werden, indem Benutzer nicht Teil des P2P-Netzwerks sind, sondern Daten direkt von Knoten beziehen. Dann wird allerdings wieder keine Last auf die Benutzer übertragen. Die Beachtung der physikalischen Lokation von Knoten sollte das Ziel zukünftiger P2P-basierter Content-Distributionssysteme sein. Replikationsstrategie Client-Server Zufällig Baum-basiert L ITERATUR Greedy [AWZZ07] Dynamisch [BHW07] Ring-basierte CDNs [CCF04] P2P Strukturiert [CDK05] P2P Unstrukturiert [CKK02] Über Struktur [CZ05] Über Hashfunktion [JLLB08] Strategische Platzierung Abbildung 5. [Kla06] Taxonomie der verschiedenen P2P-Systeme. [KMS09] VIII. FAZIT UND AUSBLICK Replikation dient generell dazu, Performanz und Verfügbarkeit verteilter Systeme zu erhöhen. Bei der Erfüllung dieser Ziele spielt die Replikationsstrategie eine maßgebliche Rolle. Es existieren Strategien unterschiedlicher Güte sowohl für Client-Server-Systeme als auch P2P-Netzwerke. Bei Client-Server-Systemen wird in der Regel versucht, die Daten möglichst nahe beim Verbraucher zu replizieren. Für P2P-Netzwerke existieren ähnliche Ansätze, aber auch solche, [KRT07] [LCC+ 02] 18 A LQARALLEH, Bassam A. ; WANG, Chen ; Z HOU, Bing B. ; Z OMAYA, Albert Y.: Effects of Replica Placement Algorithms on Performance of structured Overlay Networks. In: Parallel and Distributed Processing Symposium, 2007. IPDPS 2007. IEEE International, 2007, S. 1 –8 V-E1, V-E2 BAUER, Daniel ; H URLEY, Paul ; WALDVOGEL, Marcel: Replica Placement and Location using Distributed Hash Tables. In: Local Computer Networks, 2007. LCN 2007. 32nd IEEE Conference on, 2007. – ISSN 0742–1303, S. 315 –324 V-A C AI, Min ; C HERVENAK, Ann ; F RANK, Martin: A Peer-toPeer Replica Location Service Based on a Distributed Hash Table. In: Proceedings of the 2004 ACM/IEEE conference on Supercomputing. Washington, DC, USA : IEEE Computer Society, 2004 (SC ’04). – ISBN 0–7695–2153–3, 56– V-D C OULOURIS, George ; D OLLIMORE, Jean ; K INDBERG, Tim: Distributed Systems: Concepts and Design. 4th Edition. Addison Wesley, 2005 I C HEN, Yan ; K ATZ, Randy H. ; K UBIATOWICZ, John: Dynamic Replica Placement for Scalable Content Delivery. In: Revised Papers from the First International Workshop on Peer-to-Peer Systems. London, UK : Springer-Verlag, 2002 (IPTPS ’01). – ISBN 3–540–44179–4, 306–318 III-A, V-C C HAZAPIS, Antony ; Z ISSIMOS, Antonis: A Peer-to-Peer Replica Management Service for High-Throughput Grids. In: Proceedings of the 2005 International Conference on Parallel Processing. Washington, DC, USA : IEEE Computer Society, 2005. – ISBN 0–7695–2380–3, 443–451 V-D J IANG, Hai ; L I, Jun ; L I, Zhongcheng ; BAI, Xiangyu: Performance Evaluation of Content Distribution in Hybrid CDN-P2P Network. In: Future Generation Communication and Networking, 2008. FGCN ’08. Second International Conference on Bd. 1, 2008, S. 188 –193 VI K LAN, Daniel: Replikation in Peer-to-Peer Systemen. In: Workshop Grundlagen von Datenbanken, 2006, S. 90– 94. – http://www.dbis.prakinf.tu-ilmenau.de/papers/dbis/2006/ Witt06.pdf I, II K HAN, Samee U. ; M ACIEJEWSKI, Anthony A. ; S IEGEL, Howard J.: Robust CDN replica placement techniques. In: Proceedings of the 2009 IEEE International Symposium on Parallel&Distributed Processing. Washington, DC, USA : IEEE Computer Society, 2009. – ISBN 978–1–4244–3751–1, 1–8 III-B, III-C, III-D K ANGASHARJU, Jussi ; ROSS, Keith W. ; T URNER, David A.: Optimizing File Availability in Peer-to-Peer Content Distribution. In: INFOCOM 2007. 26th IEEE International Conference on Computer Communications. IEEE, 2007. – ISSN 0743– 166X, S. 1973 –1981 V-E2 LV, Qin ; C AO, Pei ; C OHEN, Edith ; L I, Kai ; S HENKER, Scott: Search and replication in unstructured peer-to-peer networks. In: Proceedings of the 16th international conference on Supercomputing. New York, NY, USA : ACM, 2002 (ICS ’02). – ISBN 1–58113–483–5, 84–95 IV ~ 9 REPLIKATIONSSTRATEGIEN IN CONTENT-DISTRIBUTIONSSYSTEMEN [LDH06] L ESLIE, Matthew ; DAVIES, Jim ; H UFFMAN, Todd: A Comparison of Replication Strategies for Reliable Decentralised Storage. In: Journal of Networks 1 (2006), Nr. 6, S. 36–44. – http://www.academypublisher.com/jnw/vol01/no06/ jnw01063644.html V-B [PPV07] P RESTI, Francesco L. ; P ETRIOLI, Chiara ; V ICARI, Claudio: Distributed Dynamic Replica Placement and Request Redirection in Content Delivery Networks. In: Proceedings of the 2007 15th International Symposium on Modeling, Analysis, and Simulation of Computer and Telecommunication Systems. Washington, DC, USA : IEEE Computer Society, 2007. – ISBN 978–1–4244–1854–1, 366–373 III-E [SKS09] S ONG, Gyuwon ; K IM, Suhyun ; S EO, Daeil: Replica Placement Algorithm for Highly Available Peer-to-Peer Storage Systems. In: Advances in P2P Systems, 2009. AP2PS ’09. First International Conference on, 2009, S. 160 –167 II, V-E3 [WCDT+ 06] WAUTERS, Tim ; C OPPENS, Jan ; D E T URCK, Filip ; D HOEDT, Bart ; D EMEESTER, Piet: Replica placement in ring based content delivery networks. In: Comput. Commun. 29 (2006), October, 3313–3326. http://dx.doi.org/10.1016/j.comcom.2006. 05.008. – DOI 10.1016/j.comcom.2006.05.008. – ISSN 0140– 3664 III-F 19 ~ 1 P2P SERVICE DESCRIPTION LANGUAGE P2P Service Description Language Dimitar Goshev Architecture(SOA), an architecture designed to support the implementation of services. Chapter 3 provides information about the role of a P2P service description language and the speciffic issues, which a P2P service description will address. Chapter 4 gives a detailed view of OWL-S and how it could be used for P2P service description and chapter 5 presents briefly alternatives, which has been considered during this research. Abstract—P2P networks are increasingly used for different kinds of services, which could be generally implemented in a P2P cloud system. Technologies known from the Service Oriented Architecture, such as description languages for services could be a powerful tool in such a P2P service cloud. This paper gives an overview of the Service Oriented Architecture, describes the role of a P2P service description, and introduces the Ontology Web Language for Services as a description language for P2P services. It illustrates that a description language for P2P services could provide substantial value to the P2P computing paradigm and is one of the technologies and machanisms that will allow transition from file-sharing to service- and data-sharing in P2P networks. II. S ERVICE O RIENTED A RCHITECTURE When we deal with the notions of service and service description, it is inevitable to have a look at the Service Oriented Architecture(SOA), in order to gain knowledge about the traditional approaches to service description, discovery and invocation. SOA is an architecture designed to support the implementation of services. It could be defined as a set of design principles for building large loosely coupled systems, which package functionality as inter-operable services. SOA defines an interaction model between three primary parties - the service provider, the service broker and the service client [Figure 1]. I. I NTRODUCTION In the recent years P2P netowrks are increasingly used for a variety of services. The diversity among the types of P2P services, along with the different kinds of P2P systems, has made it difficult to establish a widely accepted set of standards and protocols, that would facilitate the description of P2P services. Each one of the contemporary P2P networks accommodates its own proprietary set of protocols, which are arbitrarily designed in a way to enable their specific features and properties. They present limited or no capabilities for automated service discovery, selection, composition and invocation. A description of P2P service, which provides sufficient information to enable mechanisms for publishing and discovery of the service in the P2P network and facilitate interaction between the peers, could be one way to address these issues. An interpretaion of such a description must be consistent among all the participants in a service interaction. Therefore a necessity to establish a standartized approach for describing the services arises. In this paper this is addressed by introducing the Ontology Web Language for Service(OWLS) as a description language for P2P services. Thus enabling description of P2P services, that can be used unambiguously across and between different implementations. OWL-S allows the service description to answer questions, such as “What does the service provide?”, “How is the service used?” and “How to access the service?” in a machine-understandable form. Descriptions in OWL-S are in no way limited to services, which follow the client/server model. In fact the research shows, that by introducing semantics to service description, OWL-S enables mechanisms to discover and locate services in P2P netwrorks and is powerful enough to describe details on how to divide composite services into sections, which can be executed by different execution peers. Figure 1. The three primary roles in the service interaction model. The service provider creates the service description and implementation and publishes its interface and access information to the service registry. The service broker manages registries, and supplies information about services to enables clients to discover the service. The service client locates entries in the broker registry and binds to the service provider in order to invoke the given service. A. Overview of techologies in SOA This paper is organized as follows: In order to present traditional approaches to service description, discovery and invocation, chapter 2 gives an overview of the Service Oriented The traditional service solutions use a server-centric approach to manage all components. This limits their deployment to static domains, since a service invocation will fail, if 20 2~ P2P SERVICE DESCRIPTION LANGUAGE the server component changes its availability or location. The services are typically defined by a set of standards, including Extensible Markup Language(XML), Simple Object Access Protocol (SOAP), Web Services Description Language (WSDL), and Universal Description, Discovery and Integration(UDDI). These technologies are described bellow. • 1) SOAP: Commonly an invocation of a service is accomplished through exchange of a series of messages, normally encoded in XML. SOAP, a lightweight protocol for exchange of information in a decentralized, distributed environment, is the most widespread technology for exchanging these messages. The protocol consists of three parts: an envelope that defines a framework for describing what is in a message and how to process it, a set of encoding rules for expressing instances of application-defined data-types, and a convention for representing remote procedure calls and responses[8]. SOAP typically depends on other Application Layer protocols, most notably Remote Procedure Call (RPC) and Hypertext Transfer Protocol (HTTP), for message negotiation and transmission. However the SOAP/TCP[9] and SOAP-over-UDP[5] specifications, present an alternative approach, which eliminates the need of application layer protocol. SOAP also provides mechanism for binary data transfer. That is the SOAP Message Transmission Optimization Mechanism(MTOM) - a W3C recommendation by Microsoft, IBM, EBA and Canon. MTOM makes use of the XML-binary Optimized Packaging(XOP) format for optimizing the transmission of SOAP messages. It combines the composability of Base 64 encoding with the transport efficiency of SOAP with Attachments(SwA). Non-XML data is processed just as it is - the data is simply streamed as binary data in one of the Multipurpose Internet Mail Extensions(MIME) message parts. Solutions for data transfer with MTOM, such as file transfer in chunks, exist and demonstrate the feasibility of using this technology for data transfer in P2P networks. Experiments show that XOP/MTOM, keeps performance of binary data transfers via service interface at a reasonable level[15]. Other alternatives for handling binary data in SOAP messages are also available: SwA and Direct Internet Message Encapsulation(DIME). • • • • 3) UDDI: The discovery of the services is facilitated by UDDI. It defines a standard method for publishing and discovering the network-based software components of a SOA. The core information model used by the UDDI registries is defined in an XML schema. The UDDI XML schema defines four core types of information: business information, service information, binding information, and information about specifications for services. UDDI provides only a central registry [2]. Figure 2 illustrate a traditional scenario of development and deployment of services. Figure 2. 2) WSDL: The WSDL definition describes how to access a service and what operations it will perform. The data-types for the information passed between the service consumer and provider are described using WSDL. The services are described as a set of endpoints operating on messages containing either document-oriented or procedure-oriented information. The operations and messages are described abstractly, and then bound to a concrete network protocol and message format to define an endpoint[3]. A WSDL document uses the following elements to describe a service: • Operation - an abstract description of an action supported by the service. Four types of operations exist: a “request-response”,where the client expects response from the service, a “solicit-response”,where the service expects a response from the client,“one-way” operation, representing a call by the client to the service, and a“notification”, representing a call by the service to the client. Interface - an abstract set of operations supported by one or more endpoints. Binding - a concrete protocol and data format specification for a particular port type. Endpoint - defines the address or connection point to a service. Service - a collection of related endpoints, which has been exposed to the web based protocols. The traditional services development/deployment scenario. B. P2P and SOA From the described technologies above it is clear, that the traditional service solutions, present an approach, where the three main parties of the interaction model are commonly thought of as separate entities. However, it is more useful to consider the client, the provider and the broker as simply different behavioral roles, rather than separate pieces of software. In fact SOA doesn’t impose a particular implementation style such as specifically a client/server, request-response model. The alternative approach to service interaction, namely services communicating in a P2P fashion, requires each node to accumulate one, two or all of the roles simultaneously. Types - a container for data type definitions using some type system. XML Schema is used (in-line or referenced) for this purpose. 21 ~ 3 P2P SERVICE DESCRIPTION LANGUAGE In a P2P SOA, each node should be able to act as a provider of a set of services, a consumer of a service, and a broker, which offers information about services presented by the node and other nodes in the network. Of course, the nodes are responsible for their own security, reliability, process, and management capabilities. how to divide the described composite service into sections, which can be executed by different execution peers. • III. D ESCRIPTION OF P2P S ERVICES • In order to provide a P2P service description language, first we need clear definitions of “What is a P2P service?” and “What is the role of the P2P service description?”. A service is defined as a mechanism to enable access to one or more capabilities, where the access is provided using a prescribed interface and is exercised consistent with constraints and policies as specified by the service description[12]. In [10] is stated that, the term P2P service has emerged as a result of the merging of P2P and service oriented computing paradigms and that the term itself has not yet reached consensus among the P2P community. The definition of a service is not restricted to services following client/server approach. Therefore in this paper the term P2P service is considered equivalent to the term service defineded above, with the additional knowledge, that these services are used in a P2P network. IV. OWL-S The Ontology Web Language for Services is an ontology for services. It is often referred as a semantic markup language for describing services, due to the fact that it provides a standard vocabulary to create service descriptions, comprehensive enough to support the entire lifecycle of service tasks[4]. It is formerly known as DARPA agent markup language for services(DAML-S) and some of the researched materials reffer it as such. OWL-S is based on the Ontology Web Language(OWL), a semantic markup language for publishing and sharig ontologies. In OWL ontologies are primarily exchanged as RDF documents(an RDF/XML serialization). OWL-S presents a semantic markup to describe what is being sent and why, not just how it is being sent. It has been developed as a joint effort between Carnegie Mellon University, Nokia, Stanford University, SRI International and Yale University as an aim to provide ontology, which automates the discovery, invocation, composition, interoperation and monitoring of servicess. It complements existing technologies such as SOAP, WSDL, UDDI, and Web Services Business Process Execution Language (WS-BPEL) by providing rich typing and class information that can be used to describe and constrain the range of service capabilities much more effectively than XML data types[13]. OWL-S supplies an abstract or application level description absent in other description languages such as WSDL. The OWL-S ontology includes three primary subontologies: the service profile, service model, and grounding[ Figure 3 ]. Genrally the service profile provides information about what does the service provide, the service model, also referred as process model gives information on how to use the service, and the service grounding supplies the necessary details about accessing the service. B. P2P Service Description In general the description of a P2P service should present sufficient information to enable mechanisms for publishing and discovery of the service in a P2P network and facilitate interaction between the peers. While, there are certain elements that are likely to be part of any service description, many elements such as function and policy may vary. The specific goals of the description could be summarized as follows: • Publication and Discovery - Describe what this service does and how to locate it in the P2P network. Present such a description, that could be used by discovery systems, which perform on distributed registries on ad hoc and managed networks. Specify the set of constraints and policies, under which the service operates. • • Security - Provide information about how to address issues such as authentication, authorization and privacy, evalute security parameters, etc. In the next chapter is illustrated that description of P2P services with OWL-S, accomplishes to supply the necessary information to achieve all of the listed above goals. A. P2P Service • Verification and Monitoring - Supply information about how to verify the service execution and recognize when errors occur, log and track progress of the execution. Selection - Provide enough details about the service capabilities and other critical information, that a client needs in order to decide whether or not, the described service is the most appropriate one for the given task. Service invocation - Provide information on how the client can interact with the service and how exactly to access it. This information should be preferably presented in a way understandable not just for developer of a client agent, but for a software agent, to enable automated invocation of P2P services. A. Service Profile The service profile is a high-level characterization of the service. It defines explicitly what are the server capabilities and what it provides. Its main purpose is to enable advertising, discovery and selection for services. It contains two type of properties, that describe the service - non-functional and functional properties. Composition - Present information on how to combine multiple services in the P2P cloud to achieve the desired goal. The description should contain enough detail on 22 4~ Figure 3. P2P SERVICE DESCRIPTION LANGUAGE Top level of the service ontology. The non-functional properties describe what is achieved by the service, its limitations and boundaries, as well as other information such as location of the service, QoS features describing its characterics, etc. The functional properties consist of inputs, outputs, preconditions and effects. 1) Inputs, Outputs, Preconditions and Results: Inputs represent the the object descriptions that the service works on, i.e. the information that the service will receive. Outputs represent the object descriptions that it produces, i.e. the information that the client will receive. Preconditions define what must be satisfied in order the service to function as expected and effects, also known as results, describe what conditions will be changed after the service completes. Inputs, outputs, preconditions, and effects are used, by all three components of an OWL-S service model. The service profile could contain only the ones that are necessary for the discovery and selection of the service. Figure 4. • • • Top level of the process ontology. Any-Order - processes, which have to be executed in some unspecified order but not concurrently. If-Then-Else - conditional control constructs. Iterate, Repeat-While, and Repeat-Until - for iteratation over a given set until a condition becomes false or true The process model could be used to automate the interaction with P2P services. There exist a working solution for automatic automatic invocation of services described in OWLS, namely the OWL-S VM. C. Grounding The service grounding specifies the details on how to interact with the service. It enables service calls to be translated to messages for use by transport protocol languages. For example the grounding could be used to create mapping to WSDL[ Figure 5 ] or Universal Plug and Play (UPnP) B. Process Model All services described with OWL-S are represented by an instance of the OWL class service, which properties associate it with a process model. A process model[ Figure 4 ] describes how the service is used, i.e. how it executes its tasks. It contains all of inputs, outputs, preconditions and effects, to describe precisely the behavior of the service. The process model decribes three type of processes: composite, atomic and simple processes. Atomic processes correspond to the actions a service can perform by engaging it in a single interaction. Simple processes, can be used to provide abstracted, non-invocable views of atomic or composite processes. Composite processes are decomposable into other (non-composite or composite) processes[1]. The composition is created through control constructs. The available control constructs are: • Sequence - a list of control constructs to be done in order. • Split - process components to be executed concurrently. • Split + Join - same as Split with additional barrier synchronization. • Choice - for execution of a single control construct from a given set. Figure 5. 23 Mapping between OWL-S and WSDL. ~ 5 P2P SERVICE DESCRIPTION LANGUAGE D. Other Ontologies V. A LTERNATIVES Apart from the ontologies described above, OWL-S defines an ontology for the required resources. This ontology covers the description of physical resources, temporal resources and computational resources related to the services. In [23] is described a method for extending the monitoring capabilities of OWL-S through event based monitoring. An additional Event Ontology is introduced to achieve that and enable further capabilities for logging, performance measuring, evaluations of security parameters and execution progress tracking of services. OWL-S also creates a layer of abstraction on top of the various existing security standards, such as XML Signature, WS-Security, etc, as well as abstraction for security notations such as Authentication, Authorization, AccessControl, Confidentiality, Privacy, Anonymity, Negotiation, KeyDistribution, etc. This is achieved through several security related ontologies. These are namely the Credential Ontology, Security Mechanisms Ontology, Service Security Extensions Ontology, Agent Security Extensions Ontology, Privacy Ontology and Cryptographically Annotated Information Object Ontology. In the course of this research several others alternatives for service description were considered. These are WS-CDL, WSCI, WSMO, WSDL-S, PSDL, to name a few. Here are briefly presented two other languages, which were considered as main alternatives of OWL-S. A. WS-CDL WS-CDL describes P2P collaborations of Web Services participants by defining, from a global viewpoint, their common and complementary observable behavior, where ordered message exchanges result in accomplishing a common business goal. WS-CDL is targeted for composing interoperable P2P collaborations between any type of Web Service participant regardless of the supporting platform or programming model used by the implementation of the hosting environment[6]. In WS-CDL the collaboration between services takes place within a set of agreements about the ordering and constraint rules, through which messages are exchanged between participants. However it is widely accepted that the language has several drawbacks which makes it impractical. It is lacking separation between meta-model and syntax as well as comprehensive formal grounding[11]. As a further drawback it is difficult to write WS-CDL specifications that can be considered elegant or intuitive and specifications of even smaller interactions become rather lengthy[19]. Few implementations exist s.a. WS-CDL Eclipse and LTSA WS-Enginee but both were last updated in 2005. The last specification of the language is from 2005 and the W3C Choreography Working Group was closed in 2009. E. P2P Service Discovery Solutions for service discovery in a P2P network with semantic descriptions support are described in several papers( [20], [14], [21], [22], [18] and [17]). They all describe capability-based service discovery in systems, which doesn’t contain a central registry. The described in [18] and [20] P2P service discovery mechanisms use OWL-S for service description and rely on the Gnutella P2P protocol. An actual implementation of platform independent and highly flexible service discovery system for ubiquitous peer-topeer networks is described in [17]. Again OWL-S is used for service description, WSDL is used for interface descriptions, and SOAP for remote invocation over a JXTA P2P infrastructure. The inference engine JTP (Java Theorem Prover) is used as reasoner for evaluating the service capabilities. The author of this paper concludes, that reasoning using an inference engine and semantic descriptions, allows powerful service discovery. B. WSMO Web Service Modeling Ontology(WSMO) is to some extend similar to OWL-S. It is based on concepts from the Web Service Modeling Framework(WSMF) It defines four components: • Ontologies - provide the terminology and formal semantics for describing the other elements in WSMO. • Goals - consist of non-functional properties, imported ontologies, mediators used, post-conditions and effects. • Web Services - provide a semantic description of Web services, including their functional and non-functional properties. The main descriptions are the capability and the interface. • Mediators - represent connectors that resolve heterogeneity problems in order to enable interoperability between heterogeneous parties[16]. In contrast to OWL-S, at the moment software tools and libraries for WSMO are rare. F. Automated Service Invocation OWL-S supplies declarative, computer-interpretable API that includes the semantics of the arguments to be specified when executing service calls, and the semantics of data returned, when the services succeed or fail. Therefore services described in OWL-S could be automatically invocated in contrast to the traditional approach, where an agent is preprogrammed to perform calls to the particular service. An existing solution for automatic invocation is OWL-S VM. This implementation also takes into account privacy and authorization constraints that cryptographic techniques can implement. Peers using services implementing the OWL-S VM are able to maintain secure communication with other peers. SOAP security annotations are used to implement the actual message encryption or signing. [7] VI. C ONCLUSION Contemporary P2P networks accommodate their own proprietary set of protocols and provide limited or no capabilities for automated service discovery, selection, composition and invocation. OWL-S and other service description languages were examined as possible solution to address these issues. 24 6~ P2P SERVICE DESCRIPTION LANGUAGE The research showed that OWL-S is capble to create description for services, which are comprehensive enough to support the entire lifecycle of service tasks. Moreover it accomplishes to provide descriptions, that enable mechanisms for service discovery on ad hoc and managed networks, as well as automated invocation of services. A varieity of authoring tools, libraries and APIs for the language, give this language another advantage over its competitors. The research showed that a description language of P2P services could provide substantial value to the P2P computing paradigm and is one of the technologies and machanisms that will enable transition from file-sharing to service- and datasharing in P2P networks. R EFERENCES [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] OWL-S Release 1.2 :: www.daml.org. IV-B UDDI Technical White Paper. 9 2000. II-A3 WSDL Specification :: http://www.w3.org/TR/wsdl. 3 2001. II-A2 OWL-S: Semantic Markup for Web Services W3C Member Submission :: http://www.w3.org/Submission/OWL-S/. 11 2004. IV SOAP-over-UDP Specification :: http://specs.xmlsoap.org/ws/2004/09/soapover-udp/soap-over-udp.pdf. 9 2004. II-A1 Web Services Choreography Description Language Version 1.0 W3C Candidate Recommendation :: http://www.w3.org/TR/ws-cdl-10/. 11 2005. V-A OWL-S Technology for Representing Constraints and Capabilities of Web Services :: http://www.w3.org/2004/08/ws-cc/dmowls-20040904. 7 2007. IV-F SOAP W3C Recommendation Version 1.2 :: http://www.w3.org/TR/soap/. 8 2007. II-A1 SOAP/TCP Version 1.0 Reference :: http://java.sun.com/webservices/reference/apis-docs/soap-tcp-v1.0.pdf. 5 2007. II-A1 M. Pantazoglou A. Tsalgatidou, G. Athanasopoulos. A P2P Service Description Language Specification: Technical Report. III-A Phillipa Oaks Alistair Barros, Marlon Dumas. A Critical Overview of the Web Services Choreography Description Language (WS-CDL). 3 2005. V-A F. McCabe P. Brown R. Metz C. Matthew MacKenzie, K. Laskey. Reference Model for Service Oriented Architecture 1.0. III-A Drew McDermott Sheila McIlraith Massimo Paolucci Katia Sycara Deborah L. McGuinness Evren Sirin David Martin, Mark Burstein and Naveen Srinivasan. Bringing Semantics to Web Services with OWL-S. 2007. IV Valeria De Antonellis Devis Bianchini and Michele Melchiori. Servicebased Semantic Search in P2P Systems. IV-E Andrew Wendelborn Donglai Zhang, Paul Coddington. Binary Data Transfer Performance Over High-latency Networks UsingWeb Service Attachments. II-A1 D.Roblek. Decentralized Discovery and Execution for Composite Semantic Web Services. V-B Daniel Elenius. Service Discovery in Peer-to-Peer Networks. IV-E Ching-Chien Chen Farnoush Banaei-Kashani and Cyrus Shahabi. WSPDS Web Services Peer-to-peer Discovery Service. IV-E Lars Ake Fredlund. Implementing WS-CDL. V-A Takuya Nishimura1 Naveen Srinivasan1 Massimo Paolucci1, Katia Sycara1. DAML-S for P2P Discovery. IV-E Jian Yang Mike P. Papazoglou, Bernd J. Krämer. Leveraging webservices and peer-to-peer networks. IV-E Marek Paralič and Gabriel Gécy. Web Services discovery in P2P registry with semantic descriptions support. IV-E Katia Sycara Roman Vaculín. Semantic Web Services Monitoring: An OWL-S based Approach. IV-D 25 ~ 1 CHEATING DETECTION IN P2P-BASED MASSIVE MULTIPLAYER ONLINE GAMES Cheating Detection in P2P-based Massive Multiplayer Online Games Georgi Hadshiyski on the server. That way the game can scale well even with million of people playing at the same time. This not only saves money on servers and bandwidth, but also increases the stability of the system. Although this approach solves the scalability issues in MMOGs quite well, it also introduces other problems. With this peer-to-peer decentralization the server loses most of the control it has over the correctness of the game state. With the computation of the next game state happening in the clients themselves, it becomes easy to manipulate and cheat inside the virtual game world. Cheating prevention is very important in the development of any multiplayer game. If there are cheaters in the game, the normal players can easily become frustrated with the gameplay and thus stop playing. This problem is even more serious in MMOGs because most of them operate by requiring a monthly subscription fee from the players. So the reduction of the number of players means direct profit losses. Cheating detection and prevention is extremely important to ensure commercial viability of P2P-based MMOGs. The rest of the paper is organised as follow: In the following Section of the paper we review a typical game architecture in order to better understand the relationships between the different entities both in centralized and decentralized MMOPGs. In Section 3 we discuss the possible implementation types of cheating detection architectures. After that we define and review different categories of cheating. By providing this classification we can better understand the cheating possibilities and then be able to tackle each of those problems separately. The fifth Section makes comparisons with similar work in this area done by other authors and in the end we make conclusions about the plausibility of cheating prevention in this kind of systems and the need for future work. Abstract—In the recent years there has been a lot of development of Massive Multiplayer Online Games (MMOGs), which has shown to be very profitable and is now a billion-dollar industry. However because of the huge number of players, the normal client-server architecture approach doesn’t scale well and it becomes increasingly hard to support the traffic and the computational power needed for the servers. A peer-to-peer approach to the game development solves those scalability issues. However this new approach is more cheating-prone because the server loses most of the control over the game state. Cheating in MMOGs is a serious issue because it can lead to player dissatisfactions and losses for the companies providing games. In this paper we review and compare different types of cheating, discuss why cheating is a problem and look into the ways to detect and prevent cheating in MMOGs. I. I NTRODUCTION In the recent years there has been an enormous growth in the availability and the speed of the internet connection throughout the globe. This enabled the creation of massive multiplayer games where hundreds, thousands or even millions of people can play together inside a virtual game world. This new genre of computer games has been very successful and profitable. The game called World of Warcraft (WoW) now has more than 12 million subscribers worldwide and the company that created the game (Blizzard Entertainment) collects revenue in the billions each year. Although the development of Massive Multiplayer Online Games (or MMOGs) have shown to be quite profitable, the huge number of people playing simultaneously introduces a completely new set of problems. The main problem is the difficulty to support the game server. On one hand big server farms are needed just for the computation of the game state. This is very expensive and can be error-prone because it introduces a single point of failure. On the other hand the sheer number of people playing at the same time requires a huge amount of traffic going in and out of the server. This can also become expensive with the growth of the number of people simultaneously playing and can lead to game lag if the server can’t support that many people. Game lag can be very frustrating to players and thus can lead to players dissatisfaction, resource misuses and profit losses. To tackle the scalability problems, a peer-to-peer approach can be used to decentralize the game. In the normal client-server approach all of the information is transferred between the server and the player and the game state is computed at the server. With the peer-to-peer approach however, most of the game traffic and game state computation goes between the players themselves, thus relieving the huge computational and bandwidth pressure II. G AME A RCHITECTURE A typical server-client oriented MMOG has the architecture shown on Fig.1. First, there is an authentication server which is responsible for account management.(a) Then there is a game server, which is responsible for maintaining the game state(b). All of the clients(c,d,e) are communicating directly with the game server after they have logged in. As seen in Fig.2, in a P2P-oriented MMOG architecture the management of the game state is outsourced to the client. The only centralized server left is the authentication server(a). The computational power and traffic needed for maintaining a login system is not that high and thus decentralization of account management is not needed. In this kind of architecture however there is no longer a need for a game server. Instead, 26 2~ CHEATING DETECTION IN P2P-BASED MASSIVE MULTIPLAYER ONLINE GAMES Fig. 1. Client-Server based game architecture Fig. 2. P2P-based game architecture server in order to create and maintain different constraints on the clients. Although easily implemented, this approach suffers from the scalability issues that come from the use of a server-client oriented architecture. With an increased number of players, the computational power needed for cheating detection rises and becomes very costly. Another possibility is to outsource the detection system to the client nodes. This approach is better suited for a peer-to-peer based game architecture because it enables good scalability. In this kind of cheating detection architecture the clients themselves are computing and verifying the validity of other players actions. The general idea is that although a single client node can’t be trusted, a consensus between few random nodes can be trustworthy enough to provide good cheating prevention. A few not affiliated client nodes are chosen as monitoring nodes and are responsible for cheating detection for a certain number of players. If inconsistencies are detected, a majority vote is taken in order to determine the correct action. [1] discusses the problems stemming from P2P-based cheating detection and proposes a plausible implementation. The third option for cheating detection is a hybrid between previous two proposals. Such approaches try to minimize the cheating risks that stem from a decentralized detection system, while still maintaining low server computational and traffic requirements. Log Auditing[4] is one such proposal. This implementation outsources the game state to the client machines in order to maintain good scalability. However the cheating detection mechanism remains on the server. In order to reduce traffic and computational server requirements, the cheating detection is not computed in real time. Instead, the different game state changes are recorded and analysed at a later time. This reduces the computational power pressure because the server can use periods of time with lower demand in order to check for cheating. Although there is a delay between the cheat and the cheat detection, with good logging the game can easily be rolled back to revert the damage done by the cheater. IV. T YPES OF C HEATING In order to better understand and defend against the different cheating possibilities, a classification of those cheating attempts is needed. In this Section we review the different categories of cheating according to the target of the attack. First we review cheats that are possible in multiplayer games in general. Every multiplayer game needs to deal with those cheating possibilities (or at least part of them) regardless of the types of architecture the game uses. After that we review cheating that stems from the use of a P2P-based architecture. A game client can exploit the fact that the system is decentralized to get an advantage over other player or players. Here we discuss what can be exploited and show examples of different cheating attempts. a number of game clients (with enough resources) are chosen in order to maintain the game state(b). The game space is divided into subareas and each subarea has a responsible node. Other players(c,d) in this subarea are communicating with their responsible node instead of the server. Thus the local state of a sub-area is held at the responsible node and the whole game state can be seen as the sum of the game states of each of these subareas. III. C HEATING D ETECTION A RCHITECTURES There are three possible approaches to implement cheating detection and prevention mechanisms. The first approach is to detect cheating on the server side. In this case the developing company provides a big server (or server farms) that makes sure no cheating is taking place. A possible approach [3] is the symbolic execution on the A. Categories of cheating Almost all multiplayer games suffer from cheating attempts regardless of the number of players and the type of game architecture. Although most games are not played for financial 27 CHEATING DETECTION IN P2P-BASED MASSIVE MULTIPLAYER ONLINE GAMES or other gain, but only for entertainment instead, there are still a lot of people that try to gain an illegal advantage over their fellow players. This can frustrate a lot of people and thus the game can lose its appeal. In this Subsection we are categorizing the types of cheating that can take place in multiplayer games in general, including P2P-Based MMOGs. To better illustrate the problems, there are examples for each of those categories. 1) Authentication Cheating: This is one of the most frequently seen security problems in network applications in general. In almost all multiplayer games the server provides some kind of an authentication system with which the player can identify himself (usually by providing user-name and password or something similar). A cheater can exploit weaknesses in this authentication system in order to gain access to somebody else’s account and/or virtual assets. One possibility is to exploit the fact that a lot of players use weak passwords that can easily be cracked with a dictionary attack or in some cases even by a brute force approach. Another possibility is to exploit weaknesses in the implementation of the authentication system itself. For example some games use a regular telnet connection (where the username and the password are transmitted as plain text between the client and the authentication server). A cheater can snoop this connection in order to get access to the login information of another player’s account. In some cases (if the server cannot authenticate himself to the client) a hacker can get access to hundreds of accounts by simulating the authentication server. In this case the clients are unwillingly sending their account information to the cheater instead of the real authentication system. Although this kind of cheating can never be completely prevented due to the possibility of human error, most of this kind of cheating attempts can be evaded through good authentication server design. The server needs to authenticate itself to the client to prevent server impersonation and all traffic between the client and the server (especially the password) needs to be encrypted - this way we can prevent account information snooping. In addition the server can require the players to register with a longer and more complicated password (for example containing at least one number and at least one special character). Thus we can prevent password guessing success with high probability. 2) Client Modification Cheating: This cheating possibility arises when too much trust is put into the client. A cheater can modify his game client or machine in order to perform illegal actions or get access to information he is not supposed to. For example there are the so called "wall hacks" in the game "Counter Strike"[cs]. In this case the cheater exploits the fact that his client receives information about the position of all other players regardless of who the player can actually see in the game. With a slight client modification the cheater can see all enemies (through the walls), although he is not supposed to. This problem comes from the fact that the server trusts every client with all player positions instead of only those visible from the player’s current position. The cheater can then exploit this knowledge to gain advantage over the ~ 3 other players. There are a few ways to prevent modification cheating. The easiest way is to restrain the trust put on the client. For most online games the actions of the player and the results of those actions can be checked in the server against the current game state to see if they are valid. With peer-to-peer MMOGs however this becomes more complicated because a lot of the game state management is outsourced to the clients themselves - usually through the use of responsible nodes or a similar approach. This problem can be solved by the use of monitoring nodes that make sure all the players are playing fair. Another way to prevent this type of cheating is to introduce additional software that prevents any client modification. Every client needs to install this additional software before playing the game. If a cheater then attempts to modify his game client or use some kind of helping tools, this additional protection software can detect and prevent that. Although this approach has already been implemented and shows promising results, this piece of software is still on the client machine so it is theoretically possible to hack it as well. 3) Outside Information Cheating: One of the biggest problems in multiplayer games is the fact that the server cannot refrain a client from accessing information outside the game architecture. In this type of cheating a player can gain advantage over the other clients by using access to information outside of the game. For example, a chess player can use an advanced computer program to calculate his next move. This way his opponent stands no chance since even the best chess players often lose against those advanced chess programs. That way the cheater gains a huge advantage by using outside information. For another example let’s look at a four-person game of poker. If three of the players are talking to each other over the telephone and giving each other information about what cards they have, then the forth person will definitely lose his money sooner or later no matter how skilled he is, or how much luck he has. In this case the three cheaters are exploiting an outside line of communication to gain an advantage over the unsuspecting forth player and thus win the game. There is no plausible way to completely prevent this type of cheating without invading user privacy. The only way to reduce the risk of this type of cheating is to design the game in a way to prevent it. For example, lets consider again the four-person poker game. If the players in a game are chosen randomly then it will be hard for three cheaters to collaborate against the forth, because the odds are that they are all going to play in different games (on different tables). This kind of solution is however game specific and has its limitations both in terms of success and in terms of reduction of game flexibility. 4) Server Attack Cheating: In some rare cases a hacker can gain direct access to the server of a game if it is not well protected. One possibility is a direct attack. Although rare, in some cases it is possible for a cheater to gain access to the server by exploiting a security weakness on the target machine. Another, more common possibility, happens when the cheater has direct physical access to the server - for example 28 4~ CHEATING DETECTION IN P2P-BASED MASSIVE MULTIPLAYER ONLINE GAMES if he is working for the company that makes the game. If this happens the cheater can not only gain an advantage, but basically decide everything in the game. In games with a client-server architecture the hacker can directly change the game state to do whatever he wants. Even in very decentralized peer-to-peer games where the current game state is held mostly at the clients, the cheater can still change the game state because the server always has the authoritative say. Server attacks can be prevented through good server security design. If there are no major security flaws in the server then an outside attacker will not be able to gain unrestricted access. Good company policies against inside cheating can prevent server attacks on the internal level as well. With peer-to-peer approaches this problem becomes even less dangerous, because most of the work is outsourced to the clients. The server itself has less functionality and is therefore less bug-prone because of the lower code complexity. 5) Client Attack Cheating: A cheater can directly attack another player’s computer in order to gain advantage in the game. Although rare, sometimes a hacker can use vulnerabilities on a target client machine to gain access to it. In most of the cases the hacker uses a trojan horse or a worm in order to control other people’s computers. With this access the cheater has complete control over the other player and can easily beat him in the game. Another possibility is to attempt a Denial of Service attack. This is especially dangerous in peer-to-peer oriented architectures. The cheater can flood the enemy player with packets, thus slowing down his connection. This way the cheater gains an advantage because he can stop the enemy player in key moments or at least slow down his reactions because of the slower connection. A special case of client attacking is the use of social engineering methods to obtain certain information about another player. (or to achieve a certain goal). For example the cheater can ask a victim to see one of his items and then after that not return it. Or in some extreme cases even obtain the victim’s login and password by sending an e-mail pretending to work at the company that created the game. In the normal client-server architecture this is not a big problem, because most clients are secure enough for these types of attacks. The cheater doesn’t have direct access to the target computer and unless the target has been somehow infected with malicious software, the chances of attack success are relatively small. This problem however becomes a lot more complicated with peer-to-peer MMOGs. This approach introduces the possibility of responsible and monitoring nodes sending misleading packets to each other, to other clients or to the server. There isn’t much to be done about the special case of social engineering cheating attempts. The risk can be reduced by warning all players about that possibility. However in the end human error is always a factor, so a complete prevention of social engineering attacks is not plausible. 6) Game Architecture Exploitation: In some games a cheater can exploit general problems with the implementation of a game. A player can use (known or unknown to the developer) game features to gain an advantage over the rest of the players. For example, if there is a bug in a certain game that allows the player to become immortal in very specific circumstances, then a cheater can exploit that bug and gain unintended by the developers advantage against the other players. Some of those game architecture exploitation cheats are not even bugs, but actually exist because of bad game design. For example the ranking system of some multiplayer games is calculated according to number of victories only. Two cheaters can then collaborate to cheat the system by starting and immediately ending hundreds of games. By taking turns they can both record hundreds of victory points and thus go to the top of the ranking lists without playing a single game. That way the cheater is not exploiting a bug in the program, but is taking an advantage of the badly designed ranking system. This type of cheating can be circumvent by better software quality control. Better project management and more testing can reduce the chances of bugs in the game. Better game design can prevent unintended abuse of the available game features. B. Cheating in P2P based MMOGs It is a lot more complicated to prevent cheating that stems directly from the use of a peer-to-peer game architecture. The main problem is that with this approach the server loses most of the information about the moves of the players. Even if the server makes extensive checking of the validity of a certain move, cheating is still possible because the server trusts the information coming from a certain responsible node. This information can contain a valid move but that doesn’t make sure that this was the actual move the player made. In this Subsection of the paper we review detection and prevention strategies and discuss their limitations in terms of success and performance. 1) Timing Cheating: In a MMOGs with a peer-to-peer architecture most of the information transfer happens directly between the players. However there is always a time delay between the actions of the different players. Thus a cheater can try to exploit the delay in order to gain an unfair advantage against the others. The most famous example of timing exploitation is the Look-Ahead cheating. A cheater can try to delay his actions until he knows what his opponents are going to play. Thus the attacker can decide his next move by using this information and thus gain an unfair advantage against the rest of the players. To prevent Look-Ahead cheating the Lock-Step protocol can be implemented. The way this protocol works is to require from all players to send only the hash of the move they are going to make. The responsible node does this as well. In the end of the timeslot the actual moves are sent and the hash-codes are recalculated and compared. That way the responsible node knows only the hashes of the other player’s moves when generating its own hash. When the actual moves become known to the responsible node it is too late for it to change its move, because the hash was already generated and 29 ~ 5 CHEATING DETECTION IN P2P-BASED MASSIVE MULTIPLAYER ONLINE GAMES sent. The use of monitoring nodes can prevent the responsible node from completely dropping certain packets. 2) Authority Exploitation: In most peer-to-peer games a certain number of nodes have more responsibility than the others. Those responsible nodes usually take care of a number of child nodes by coordinating them. If a responsible node is a cheater he can try to exploit this authority he has over all child nodes. For example, the cheater can delay or completely drop certain packets received from a child node. On the other hand it is possible to fabricate completely certain information in order to lie to the rest of the nodes about what a certain victim player did. In most cases those responsible nodes need to report to the server about the game state. A cheater can exploit this authority in order to lie to the server about what somebody’s actions were. To prevent authority exploitation, we can use a certain number of nodes, which check whether a responsible node is attempting to cheat or not. These nodes (also called monitoring nodes) can either be chosen from the rest of the responsible nodes, or more common directly from the normal players. The player attempting to make a move sends the information both to his responsible node and to the monitoring nodes assigned to it. That way if the responsible node attempts to modify, delay or completely drop certain packets, the rest of the monitoring nodes can detect and prevent that by making a majority vote and executing the action regardless of what the responsible node did. However this approach introduces traffic overhead for all players and especially for the monitoring nodes. Big computation overhead is also possible if the monitoring nodes need to check the validity of the move. 3) Lack of Central Control Exploitation: Even if the cheater is not a responsible node but a regular node instead, he can still attempt to exploit the decentralization of the game state management. For example, the cheater can try making an illegal move. On normal client-server architectures the validity of the move can be calculated on the server. In a peer-to-peer system however the resources on the responsible node are somewhat limited, so a complete calculation of the possibility of each move for every child node becomes implausible. This becomes even more problematic if there are also monitoring nodes involved, because each of them need to calculate the validity as well. To fight against this kind of cheating we need to make sure that the moves attempted by all players are actually valid. This can be done on the server, however by doing that we lose the scalability advantage that a peer-to-peer system offers. A possible way to deal with this problem is to only log all the moves and make those checks later when the load on the server is smaller. If cheating is detected then the server can roll-back to the last secure point of the game. This solution however introduces a delay between the cheating attempt and the checking and thus the rolling back can be frustrating to players that didn’t cheat but needed to lose hours of play anyway because of somebody else. A better possibility is to make those checks at the responsible (and the monitoring) nodes. Although this introduces a significant performance overhead for those nodes that make the validity checking, this solution is still a lot more scalable than using a big server. A middle-ground solution is also possible, where only the responsible node calculates the validity of the move. The server then checks a random limited number of the moves to make sure that the responsible node is not lying. Although this solution has limited ability to prevent cheating it is a good trade-off between cheating prevention and performance. 4) Collusion Cheating: A few cheaters can collaborate to exploit a security weakness, which is only possible when the cheater is not acting alone. Most peer-to-peer architectures depend on some kind of monitoring nodes, which make sure that neither the responsible node, nor the player himself is falsifying information. They can then take a vote in order to make sure that cheating attempts are prevented. However if enough monitoring nodes are actually on the cheater side then they can win the majority vote and thus go around the cheating prevention system. Collusion cheating can never be completely prevented without complete checks by the server, which would make the use of peer-to-peer architecture meaningless. However the chances of collusion cheating success can be reduced with good game architecture design. For example if the monitoring nodes are chosen randomly (instead of choosing only people located in the surrounding area) it will be a lot harder for the cheaters to succeed having the majority of the monitoring nodes. Increased number of monitoring nodes makes collusion cheating even less probable, although it introduces considerate overhead both for the monitoring nodes and for the normal players. In addition if the monitoring nodes are changed frequently we can make sure that even if the cheaters have the luck to gain the majority vote, that they will not have the control for a long period of time. Crosschecking between the different groups of monitoring nodes can also detect cheating attempts, though it introduces significant overhead as well. V. R ELATED W ORK The paper "A Systematic Classification of Cheating in Online Games" by Jeff Yann and Brian Randell offers a classification of the different cheating approaches that bares similarities to the ones presented in this paper. The authors classify all cheating attempts in multiplayer games into fifteen categories and review each of them. Although the paper doesn’t concentrate exactly on peer-to-peer architecture approaches, the information presented there is useful to better understand the different types of cheats we see in online games. Takoto Izaiku and his team concentrate more on cheat prevention in peer-to-peer games in the paper "Cheat Detection for MMORPG on P2P Environments" that stem directly from 30 6~ CHEATING DETECTION IN P2P-BASED MASSIVE MULTIPLAYER ONLINE GAMES the decentralization of the system. In the paper the authors propose a method for cheat detection and prevention in Massive Online RPG games that uses strategies similar to the ones proposed in this paper. In the paper "Server-side Verification of Client Behavior in Online Games" the author Darrell Bethea and his colleagues propose a method for validity checking in normal server-client frameworks. Although the work doesn’t concentrate on the peer-to-peer approach, the paper proposes a good system for validity checking that can be restructured to work with some peer-to-peer MMOGs. VI. C ONCLUSION Although the prevention of cheating in the peer-to-peer architecture approach to the development of MMOGs is a lot more complicated than in the normal client-server approaches, it still provides the traffic scalability needed for the huge number of people playing the game simultaneously. As discussed in the paper most of the problems that arise from the decentralization of the system are quite manageable. Although there probably are more undiscovered ways to attack this kind of systems, most of the cheaters don’t have the expertise to attempt something that complicated. On the other hand there is also a number of administrators that watch for anomalies in the game state, so a person suddenly gaining enormous amounts of something valuable can easily be spotted and stopped. This, together with the ease with which the game can be rolled-back to a previous stable state, makes the problem manageable. Thus at the moment the advantages of using a peer-to-peer architecture outweigh the potential risks of revenue losses due to cheating. However, this kind of games are becoming more and more popular and the number of people playing is increasing. Thus in the future we will also see an increase in the number of cheating attempts and the complexity of the cheating approaches. The increase of the number of people playing will also make it harder for the administrators to manually detect cheating attempts. However this increase in player numbers will also make the peer-to-peer approaches even more valuable because of the scalability issues with the normal client-server architectures. Because of the importance of cheating prevention more work in this field will be needed in order to ensure the fair gameplay in the future. R EFERENCES [1] Takato Izaiku and Shinya Yamamoto and Yoshihiro Murata and Naoki Shibata and Keiichi Yasumoto and Minoru Ito. Cheat detection for MMORPG on P2P Environments. ACM Workshop on Network and System Support for Games, 2005. [2] Jeff Yan and Brian Randell A Systematic Classification of Cheating in Online Games. ACM Workshop on Network and System Support for Games, 2005. [3] Darrell Bethea and Robert Cochran and Michael Reiter Server-side Verification of Client Behavior in Online Games. University of North Carolina at Chapel Hill, 2010. [4] Patric Kabus and Wesley W. Terpstra and Mariano Cilia and Alejandro P . Buchmann Addressing Cheating in Distributed MMOGs. Darmstadt University of Technology, Germany, 2005. 31 ~ 1 P2P-BASED VIDEO-ON-DEMAND-STREAMING P2P-Based Video-on-Demand-Streaming Pablo Hoch Video bereits während des Downloads abzuspielen. Außerdem ist Video-Streaming besonders anfällig gegenüber Churn, also dem Umstand, dass sich Peers immer nur eine gewisse Zeit in dem Netzwerk aufhalten und sich dadurch die Netzwerkstruktur häufig ändert. Hierbei besteht die Gefahr, dass ein Peer nicht mehr ausreichend Daten zum unterbrechungsfreien Abspielen des Videos erhält. Im Vergleich zu Live-Video-Streaming schauen zudem nicht alle Benutzer gleichzeitig die selbe Stelle des Videos, weshalb auch die dafür entwickelten Verfahren nicht direkt übernommen werden können. Außerdem will man oft das Springen zu einer anderen Stelle im Video, insbesondere Vorspulen, ermöglichen. Dieses Paper gibt einen Überblick über verschiedene Systeme, die Peer-to-Peer-Netzwerke für Video-on-DemandStreaming einsetzen. Der weitere Aufbau ist dabei wie folgt: In Abschnitt II werden einige benötigte Hintergrundbegriffe kurz erklärt, in Abschnitt III wird eine Klassifikation für die verfügbaren Systeme vorgestellt und in Abschnitt IV werden verschiedene Vertreter der jeweiligen Klassen betrachtet. Abschnitt V bietet neben einer Zusammenfassung ebenfalls einen Ausblick in die aktuelle Forschung im Bereich P2P-basierter Video-on-Demand-Systeme. Zusammenfassung—Video-on-Demand-Streaming hat sich zu einem der wichtigsten Angebote im Internet entwickelt. Durch die enorme Popularität von Video-Plattformen wie YouTube und die ständig wachsende Menge an Videos, ergeben sich hohe Server- und Traffic-Kosten für die Betreiber solcher Angebote. Mit dem Einsatz von Peer-to-Peer-Technologien können diese massiv reduziert werden. Dabei sind besondere Anforderungen wie eine Wiedergabe der Videos mit möglichst geringer Wartezeit und ohne Unterbrechungen zu beachten. Dieses Paper gibt einen Überblick über verschiedene Peer-to-Peer-Systeme für Videoon-Demand-Streaming. Dazu werden die Ansätze anhand der Struktur des verwendeten Overlay-Netzwerks in zwei Klassen unterteilt und jeweils mehrere Systeme vorgestellt. I. E INLEITUNG Video-on-Demand, also die Möglichkeit, Videos nach Bedarf und zu beliebigen Zeiten anzuschauen, hat in den letzten Jahren große Popularität erlangt. So verzeichnet beispielsweise alleine die Video-Plattform YouTube1 täglich zwei Milliarden Videoanfragen sowie hunderttausende neue Videos2 . Klassische Video-on-Demand-Angebote wie YouTube verwenden eine Client-Server-Architektur mit großen ContentDelivery-Networks. Durch die enorme Popularität entsteht dadurch ein hohes Trafficaufkommen für die Betreiber. Dies legt den Einsatz von Peer-to-Peer-Technologie (P2P) nahe, um einen Teil der Last auf die Benutzer zu verlagern und damit die Belastung der Streaming-Server zu verringern sowie die Kosten zu senken. Eine Untersuchung von YouTube [3] ergab, dass für den Betreiber nur bei einem kleinen Teil der Videos durch den Einsatz von P2P-Technologie Einsparungen erzielt werden können. Dies liegt daran, dass ein Großteil der Videos zu selten aufgerufen wird und diese Videos daher nicht von genügend Benutzern über ein P2P-Netzwerk ausgetauscht werden. Insgesamt wird in der Studie jedoch eine mögliche Serverentlastung von 41% berechnet, wenn die Benutzer sich lediglich während der Wiedergabe des Videos in dem P2P-Netzwerk aufhalten, und sogar eine Entlastung von über 98%, wenn Benutzer die Videos einen Tag lang über das P2P-Netzwerk freigeben. Jedoch kann für Video-on-Demand-Streaming nicht einfach übliche P2P-File-Sharing-Technologie wie BitTorrent [5] eingesetzt werden, da Video-Streaming spezielle Anforderungen stellt. So möchte man eine möglichst kurze Startverzögerung erreichen und das Video anschließend möglichst ohne Unterbrechungen anschauen können. Traditionelle File-SharingProtokolle sind darauf ausgelegt, die Datei möglichst schnell herunterzuladen. Dazu wird die Datei üblicherweise in kleine Teilstücke unterteilt, die dann in beliebiger Reihenfolge empfangen werden. Dieses Vorgehen ist nicht geeignet, um das II. H INTERGRUND A. Application Layer Multicast Multicast bezeichnet das Senden einer Nachricht an mehrere Empfänger. Bei der Implementierung auf Anwendungsebene gibt es einen Sender, der die Nachricht an einen Teil der Empfänger sendet. Bei dem Sender handelt es sich dabei um einen Streaming-Server, die Empfänger sind die Peers im P2P-Netzwerk. Diese Peers leiten die Nachricht wiederum an andere Peers weiter usw., bis die Nachricht alle Empfänger erreicht hat. Dadurch entsteht ein Baum wie in Abbildung 1. Man spricht deshalb von Application Layer Multicast Trees. Abbildung 1. 1 http://www.youtube.com/ 2 http://www.youtube.com/t/fact_sheet (Zugriff am 29.12.2010) 32 Beispiel eines Application Layer Multicast Tree 2~ P2P-BASED VIDEO-ON-DEMAND-STREAMING B. BitTorrent Systemen in Abschnitt IV erklärt werden. Die Wurzel eines solchen Baums bildet jeweils ein Streaming-Server, der das komplette Video verfügbar hat. Diese Systeme verwenden in der Regel push-basierte Kommunikation, d.h. der VideoStream wird ohne explizite Anfragen nach einzelnen Teilen im Baum weitergeleitet. Zu den speziellen Herausforderungen bei diesen Systemen zählen u.a. die hohe Anfälligkeit gegenüber Churn, da beim Verlassen eines Knotens – absichtlich oder durch Ausfall – alle seine Nachfolger den Stream nicht mehr erhalten, sowie die Behandlung von großen Unterschieden in der Uploadund Download-Bandbreite der Peers. Als ein möglicher Lösungsansatz des zweiten Problems wird z.B. Scalable Video Coding [15] eingesetzt. Das Video wird dabei in mehrere Streams aufgeteilt – der Basisstream enthält eine Version des Videos in niedriger Qualität oder Auflösung, empfängt man zusätzlich die weiteren Streams, ergibt sich eine Version in höherer Qualität. Ähnlich ist Multiple Description Coding [1], [9]. Dort wird das Video ebenfalls in mehrere Substreams, sogenannte Deskriptoren, aufgeteilt. Zum Abspielen genügt hier ein beliebiger Deskriptor und je mehr Deskriptoren man empfängt, desto besser ist die Qualität des Videos. So kann man beispielsweise für jeden Stream einen eigenen Baum aufbauen und Peers können je nach verfügbaren Ressourcen einen oder mehreren der Streams empfangen und weiterleiten. Außerdem ist Multiple Description Coding beim Verlassen des Elternknotens in einem der Bäume hilfreich, da dann zumindest noch eine Version in niedrigerer Qualität verfügbar ist. Eines der bekanntesten und erfolgreichsten P2P-FileSharing-Systeme ist BitTorrent [5]. Dateien werden dort in kleine Teile, auch Pieces oder Chunks genannt, aufgeteilt. Für jede Datei, die über BitTorrent verteilt wird, wird ein eigenes Netzwerk aufgebaut. Dazu gibt es zentrale Tracker-Server, die eine Liste von Peers in dem Netzwerk verwalten. Peers verbinden sich mit einem Tracker-Server, um eine Liste von anderen Peers zu bekommen, die ebenfalls die Datei herunterladen oder bereits heruntergeladen haben und diese bereitstellen. Einen großen Anteil an dem Erfolg von BitTorrent haben die verwendeten Auswahl-Algorithmen, die festlegen, in welcher Reihenfolge die Teile heruntergeladen werden und an welche anderen Peers Daten hochgeladen werden. Zur Auswahl der Reihenfolge für den Download der Teile (Piece Selection) wird hauptsächlich die Rarest-First Strategie verwendet. Dabei werden immer diese Teile zuerst angefragt, die die wenigsten der anderen bekannten Peers besitzen. Dies ist zum einen hilfreich, da dann die seltensten Teile bereits heruntergeladen sind, falls andere Peers, die diese Teile anbieten, das Netzwerk verlassen. Andererseits erhöht sich dadurch die Wahrscheinlichkeit, dass andere Peers diese Teile anfragen und dadurch mit diesen Daten ausgetauscht werden können. Um zu entscheiden, an welche anderen Peers Daten hochgeladen werden, verwendet BitTorrent einen sogenannten Unchoking-Algorithmus. Zunächst werden alle Peers choked, d.h. keine Teile an sie gesendet. In bestimmten Intervallen wird dann die Download-Geschwindigkeit des letzten Intervalls von allen Peers überprüft, und die Peers, von denen die besten Downloadraten erreicht wurden, unchoked, d.h. angefragte Teile werden an diese Peers gesendet. Damit wird versucht, Free-Riding, also das Downloaden von Daten ohne auch eine gewisse Menge von Daten an andere Peers hochzuladen, zu verhindern. Zusätzlich wird immer ein zufälliger Peer unchoked, um auch anderen Peers, von denen momentan nichts heruntergeladen wird, eine Chance zu geben. Dies wird als Optimistic Unchoke bezeichnet. B. Mesh-basierte Systeme Die zweite große Klasse bilden die Mesh-basierten Systeme. Hier wird beim Betreten des Netzwerks keine feste Struktur erzwungen – jeder Peer baut Verbindungen zu anderen Peers auf und tauscht mit diesen Daten aus. Auch wird das Video hier nicht entlang fester Kanten gestreamt, sondern in kleine Teile aufgeteilt, die dann i.d.R. von verschiedenen Peers angefragt werden. Hierbei handelt es sich um pull-basierte Kommunikation, da jedes einzelne Teil des Videos explizit von einem Peer angefordert wird und erst auf Anfrage zurückgesendet wird. Dieser Ansatz ähnelt etwa dem bei BitTorrent verwendeten, weshalb auch viele Mesh-basierte Systeme auf BitTorrent [5] aufbauen und das Protokoll für die speziellen Video-on-Demand-Anforderungen verändern und erweitern. Die Systeme unterscheiden sich hauptsächlich in der Piece Selection, also der Auswahl, in welcher Reihenfolge die Teile des Videos heruntergeladen werden, sowie darin, mit welchen Peers Daten ausgetauscht werden. III. K LASSIFIKATION Die verschiedenen P2P-basierten Systeme zum Video-onDemand-Streaming lassen sich anhand des verwendeten Overlays grob in zwei Klassen unterteilen: Systeme, die Application Layer Multicast Trees aufbauen und Mesh-basierte Systeme, die keine explizit festgelegte Topologie besitzen. A. Application Layer Multicast Trees Bei den Systemen, die Application Layer Multicast Trees einsetzen, werden Bäume aufgebaut, bei denen das Video entlang der Kanten von der Wurzel bis zu den Blättern gestreamt wird. Dieser Ansatz wird u.a. auch für das LiveStreaming von Videos verwendet. Im Gegensatz zum LiveStreaming möchte man bei Video-on-Demand jedoch üblicherweise das komplette Video von Anfang an sehen, weshalb zusätzliche Techniken nötig sind, um den Teil des Videos vom Anfang bis zu der Abspielposition, an der sich der Elternknoten gerade befindet, ebenfalls zu erhalten. Dafür gibt es verschiedene Verfahren, die bei den entsprechenden C. Vergleich der Ansätze In [12] wird die Performance der beiden Ansätze des Treebasierten und Mesh-basierten Streamings verglichen. In beiden Fällen wird dabei Multiple-Description-Coding verwendet. Die Untersuchung kommt zu dem Fazit, dass Mesh-basierte Systeme eine bessere Performance liefern. Die Hauptgründe dafür sind, dass Auswirkungen von Peers mit niedriger oder schwankender Bandbreite bei den Mesh-basierten Systemen 33 ~ 3 P2P-BASED VIDEO-ON-DEMAND-STREAMING minimiert werden können, sowie die höhere Anfälligkeit von Tree-basierten Systemen gegenüber Churn. Bei den Treebasierten Systemen ist in solchen Fällen immer ein ganzer Teilbaum betroffen. IV. S YSTEME In diesem Abschnitt werden einige Systeme der beiden Klassen vorgestellt und auf die Besonderheiten der einzelnen Systeme im Vergleich zu den anderen Systemen eingegangen. A. Application Layer Multicast Trees Diese Systeme unterscheiden sich hauptsächlich bei den verwendeten Algorithmen zum Aufbau der Bäume, bei der Vorgehensweise zum Weiterleiten des Video-Anfangs, sowie der Fehlerbehandlung. 1) P2Cast: P2Cast [10] baut einen Application Layer Multicast Tree auf, um das Video zu streamen. Dazu existiert ein zentraler Server, der sowohl für den Aufbau der Topologie als auch für das Streamen des Videos an einige Peers zuständig ist. Die Peers werden dabei entsprechend ihrer Ankunftszeit in Sessions gruppiert. Der erste Peer erzeugt eine neue Session, weitere Peers, die innerhalb eines gewissen Zeitfensters nach dem ersten Peer das Video aufrufen, treten der bestehenden Session bei. Für Peers, die außerhalb des Zeitfensters der letzten Session ankommen, wird wiederum eine neue Session angelegt. Innerhalb einer jeden Session bilden die Peers zusammen mit dem Streaming-Server einen Multicast-Baum. Peers einer Session sind dabei komplett unabhängig von denen anderer Sessions. Der Server streamt das komplette Video jeweils an den ersten Peer jeder Session, die Peers leiten den Stream jeweils an ihre Kinder im Baum weiter. Dabei handelt es sich um den Base-Stream. Zusätzlich müssen Peers, die der Session erst später beigetreten sind, den Anfang des Videos erhalten, da sie über den Base-Stream nur das Video ab der aktuellen Abspielposition ihres Elternknotens im Baum erhalten. Hierzu wählt ein Peer beim Betreten des Netzwerks einen Patch-Server aus. Dabei handelt es sich entweder um den Streaming-Server oder einen Peer aus der gleichen Session. Von diesem Patch-Server erhält der Peer dann zusätzlich einen Patch-Stream, der den Anfang des Videos, den der Peer im Base-Stream verpasst hat, enthält. Nachdem der Peer den Patch-Stream vollständig empfangen hat, wird nur noch der Base-Stream benötigt. Um diesen Patch-Stream anbieten zu können, muss jeder Peer den Anfang des Videos cachen. Ein Beispiel eines P2Cast-Netzwerks mit zwei Sessions zeigt Abbildung 2. Zum Aufbau des Multicast-Trees verwendet P2Cast den Best Fit (BF) Algorithmus. Dieser beruht auf einer Messung der erreichbaren Bandbreite zwischen den Peers. Im Folgenden wird der Fall betrachtet, dass der Peer einer bestehenden Session beitritt. Andernfalls wird eine neue Session angelegt, die nur aus dem Server und dem neuen Peer besteht. So kontaktiert ein neuer Peer zunächst den Server. Dieser misst dann die Bandbreite zum Peer und fordert gleichzeitig seine Kinder auf, ebenfalls deren Bandbreite zu dem neuen Peer zu messen. Wenn ein Kindknoten die schnellste Anbindung zu dem neuen Peer hat, wird er an diesen weitergeleitet und der Prozess dort Abbildung 2. Beispiel eines P2Cast-Baums mit 2 Sessions zum Zeitpunkt 18. In den Kreisen ist jeweils die Ankunftzeit des Peers angegeben. Alle Peers in Session 1 haben den Patch-Stream bereits vollständig empfangen und benötigen nur noch den Base-Stream. In der 2. Session empfangen noch 3 Peers einen Patch-Stream. rekursiv fortgesetzt. Wenn der aktuell angefragte Knoten – zu Beginn also der Server – die schnellste Verbindung zu dem Peer hat, betritt der neue Peer an dieser Stelle als Kind dieses Knotens den Baum. Der gleiche Algorithmus wird sowohl zur Auswahl eines Elternknotens für den Base- als auch für den Patch-Stream verwendet. In dem Standardalgorithmus wird bei mehreren Peers mit gleicher Bandbreite zufällig einer ausgewählt. Zusätzlich werden Varianten vorgeschlagen, die in diesem Fall den Peer mit der niedrigsten Latenz auswählen (BF-delay), sowie einen Algorithmus, der keine aufwändigen Bandbreitenmessungen durchführt, sondern lediglich beachtet, ob ein Peer noch genügend Uploadkapazität für einen weiteren Stream zur Verfügung hat und dann ebenfalls nach Latenz einen Peer auswählt (BF-delay-approx). Dieser letzte Algorithmus hat somit einen deutlich niedrigeren Overhead als BF. In allen Fällen kann es vorkommen, dass weder der Server, noch einer der Peers genügend freie Bandbreite für einen weiteren Peer zur Verfügung haben und der Peer deshalb abgelehnt wird. Sobald ein Peer dem Netzwerk beigetreten ist, muss sichergestellt werden, dass dieser den Base-Stream und, falls nötig, den Patch-Stream mit einer ausreichenden Downloadrate erhält. Dies wird von den Peers ständig überwacht. Sollte die Geschwindigkeit nicht mehr ausreichen, oder die Verbindung abbrechen, wird ein Recovery-Prozess gestartet. Dieser wird immer von dem Wurzelknoten des betroffenen Teilbaums durchgeführt. Dazu versucht der Peer, dem Netzwerk neu beizutreten. Hierfür wird der gleiche Algorithmus wie beim ursprünglichen Betreten des Netzwerks verwendet. Zu beachten ist, dass nur solche Peers als Patch-Server in Frage kommen, die der Session vor dem anfragenden Peer beigetreten sind. Sofern dies gelingt, ist der gesamte Teilbaum wieder ein Teil des Netzwerks. Sollte der Wurzelknoten des abgetrennten Teilbaums dem Netzwerk nicht wieder beitreten können, versuchen dies anschließend dessen Kinder. 2) P2VoD: P2VoD [7] benutzt ebenfalls Application Layer Multicast Trees zum Streamen des Videos, unterscheidet sich 34 4~ P2P-BASED VIDEO-ON-DEMAND-STREAMING erste Generation der Session. Da Peer C3 dem Netzwerk erst zum Zeitpunkt 2 beigetreten ist, der erste Peer in der gleichen Generation (C1 ) jedoch zum Zeitpunkt 0, ist der Cache von C3 um 2 R-Blöcke kleiner als der von C1 . Somit ist sichergestellt, dass alle Peers einer Generation den gleichen ersten R-Block im Cache haben. Würde zum Zeitpunkt 20 ein neuer Peer dem System beitreten, würde eine neue Session angelegt, da in der Session 1 kein Peer mehr den ersten Block des Videos im Cache hat. Falls beim Betreten des Systems durch einen neuen Peer keine offene Session existiert, wird eine neue angelegt und das Video direkt vom Server gestreamt. Andernfalls kontaktiert der neue Peer einen Peer der jüngsten Generation einer offenen Session. Von diesem bekommt er eine Liste von Peers der nächstälteren Generation und wählt einen dieser Peers als Elternknoten aus, falls möglich, d.h. falls dieser noch den Anfang des Videos gecached hat. Andernfalls wird eine neue Generation angelegt und einer der Peers aus der bis dahin jüngsten Generation als Vater gewählt. Der Server streamt das Video jeweils an die Peers der ersten Generation, diese leiten es an die der zweiten Generation weiter usw. Der Hauptgrund für die Verwendung von Generationen liegt in der Fehlerbehandlung, die bei P2VoD im Gegensatz zu P2Cast in der Regel ohne den zentralen Server durchgeführt werden kann. Dazu werden bereits im Vorfeld zwischen den Peers einer Generation Nachrichten ausgetauscht, um eine Liste von anderen Peers in der gleichen Generation zu bekommen. Diese wird außerdem an die Kinder in der nächsten Generation weitergeleitet. Im Falle dass der Stream zu einem Peer abbricht, besitzt dieser dann eine Liste von anderen Peers in der nächstälteren Generation. Wie bei P2Cast führt hier auch wieder nur der Wurzelknoten des abgeschnittenen Teilbaums die Recovery-Prozedur durch. Er kann jedoch nun direkt die Peers aus der ihm bekannten Liste kontaktieren und versuchen, dort dem System wieder beizutreten. Nur falls dies fehlschlägt, muss der Server kontaktiert werden. aber in einigen wesentlichen Punkten von P2Cast. So wird bei P2VoD kein Patch-Stream für später ankommende Peers benötigt. Um ohne diesen zusätzlichen Stream auszukommen, cachen die Peers nicht den Anfang des Videos, sondern jeweils die zuletzt empfangenen Daten. Somit kann ein Peer das komplette Video in einem Stream an einen später ankommenden Peer weiterleiten, solange er zum Beitrittszeitpunkt des neuen Peers noch den Beginn des Videos im Cache hat. Das Video wird dazu in durchnummerierte Blöcke, sogenannte R-Blocks für retrieval blocks, unterteilt. Jeder Peer hat einen Cache, der maximal eine bestimmte Anzahl Blöcke aufnehmen kann. Um das Caching zu vereinfachen, enhält ein R-Block immer die Videodaten für eine Zeiteinheit, z.B. für eine Sekunde. Auch bei P2VoD gibt es Sessions: Wenn ein Peer dem System beitreten will und keine sogenannte offene Session, d.h. eine Session in der es Peers gibt, die noch den ersten Block des Videos im Cache haben, mehr existiert, muss eine neue Session erstellt werden. Neu ist die Gruppierung der Peers innerhalb einer Session in Generationen. Dabei werden die Peers anhand des R-Blocks mit der niedrigsten Nummer in deren Cache in Generationen unterteilt. Zu beachten ist, dass die Größe des Caches zwischen den Peers variiert. Der erste Peer einer Generation benutzt immer die maximale Cachegröße, der Cache später ankommender Peers der gleichen Generation ist jedoch kleiner, entsprechend der Differenz in deren Ankunftszeiten. B. Mesh-basierte Systeme 1) BASS (BitTorrent Assisted Streaming): Bei BASS [6] handelt es sich um ein sehr einfaches System, das ein ClientServer-System zum Streamen des Videos durch einen parallelen Download von Teilen des Videos über BitTorrent ergänzt. Wie bei BitTorrent üblich, wird das Video hierbei in kleine Teile zerlegt. Die Clients verbinden sich mit einem StreamingServer, der dem Client zunächst die Teile des Videos von Beginn an in Abspielreihenfolge sendet. Gleichzeitig wird über einen Tracker-Server eine Verbindung zum BitTorrentNetzwerk aufgebaut und hierüber Teile des Videos ausgetauscht. BASS achtet dabei darauf, dass keine Teile doppelt, also vom Streaming-Server und zusätzlich über BitTorrent, heruntergeladen werden. Insbesondere werden von dem Streaming-Server die Teile in Abspielreihenfolge heruntergeladen und dabei Teile, die bereits über BitTorrent empfangen wurden, übersprungen. Weitere Veränderungen an BitTorrent werden nicht vorgenommen. Es werden also die üblichen Rarest-First-Piece-Selection sowie der Standard UnchokingAlgorithmus verwendet. Abbildung 3. Beispiel einer P2VoD-Session zum Zeitpunkt 20. In den Peers (Kreise) ist deren Ankunftszeit angegeben. Ein R-Block entspricht dabei einer Zeiteinheit, d.h. Peer C3 ist z.B. dem Netzwerk beigetreten, als Peer C1 bereits zwei Blöcke empfangen hatte. Unter den Peers sind jeweils die Blöcke angegeben, die sich zu diesem Zeitpunkt im Cache des Peers befinden. In Abbildung 3 ist ein P2VoD-Netzwerk zum Zeitpunkt 20 gezeigt. Dort bilden die Peers C1 , C2 , C3 und C4 die 35 ~ 5 P2P-BASED VIDEO-ON-DEMAND-STREAMING 2) BiToS (BitTorrent Streaming): BiToS [16] ist ein weiteres BitTorrent-basiertes System. Im Gegensatz zu BASS ist hierbei jedoch kein seperater Streaming-Server nötig. Stattdessen konzentriert sich BiToS auf eine Anpassung des PieceSelection-Algorithmus, um sowohl das Abspielen des Videos während des Downloads zu ermöglichen, als auch gleichzeitig immer noch eine gute Verteilung der einzelnen Teile des Videos zu gewährleisten. Die Grundidee hinter BiToS ist, Teile des Videos, die als nächstes abgespielt werden sollen, bevorzugt herunterzuladen. Dazu werden die Pieces, die noch heruntergeladen werden müssen, in zwei Mengen aufgeteilt: Das High-Priority-Set beinhaltet eine bestimmte Menge von Teilen, die direkt auf die aktuelle Abspielposition folgen, aber noch nicht heruntergeladen wurden. Alle anderen, noch nicht empfangenen Teile befinden sich im Remaining-Pieces-Set. Dabei gibt es zwei veränderbare Parameter: die Größe des High-PrioritySets, sowie eine Wahrscheinlichkeit p, die bei der PieceSelection entscheidet, aus welcher Menge als nächstes ein Teil heruntergeladen wird. Mit Wahrscheinlichkeit p wird ein Teil aus dem High-Priority-Set heruntergeladen, mit Wahrscheinlichkeit 1 − p ein Teil aus dem Remaining-Pieces-Set. Bei Simulationen hat sich ein Wert von p = 0.8 als gut erwiesen [16]. Innerhalb des Sets wird dann ein Teil nach dem Rarest-First-Prinzip ausgewählt – nur wenn es mehrere gleich seltene Teile gibt, wird das mit der näheren Abspielposition ausgewählt. Während die Größe des High-Priority-Sets bei BiToS konstant ist (die Autoren haben durch Simulation einen Wert von etwa 8% des Videos als optimal ermittelt), kann die Wahrscheinlichkeit p auch zur Laufzeit angepasst werden. Dies kann beispielsweise durchgeführt werden, wenn ein Teil, der abgespielt werden soll, noch nicht heruntergeladen wurde. Falls zu diesem Zeitpunkt bereits viele andere noch nicht abgespielte Teile bereits heruntergeladen wurden, wird die Wahrscheinlichkeit erhöht, um bevorzugt Teile aus dem HighPriority-Set anzufragen. Sind hingegen keine weiteren solche Teile vorhanden, wird die Wahrscheinlichkeit heruntergesetzt, um mehr zufällige Teile zu erhalten und somit attraktiver für andere Peers zu werden. 3) Toward Efficient On-Demand Streaming with BitTorrent: In [2] wird ebenfalls eine Erweiterung des BitTorrentProtokolls für Video-on-Demand-Streaming vorgeschlagen. Ähnlich wie bei BiToS wird der Piece-Selection-Algorithmus ausgetauscht und die noch fehlenden Teile des Videos in zwei Mengen aufgeteilt. Neu ist, dass hierbei die Größe des Fensters (entspricht dem High-Priority-Set bei BiToS) zur Laufzeit angepasst wird. So wird das Fenster vergrößert, wenn bereits viele der als nächstes abzuspielenden Teile heruntergeladen wurden, und verkleinert, wenn davon nur sehr wenige vorhanden sind. Dadurch, dass die Menge vergrößert wird, erhöht sich die Verteilung der Pieces (Piece Diversity). Durch das Verkleinern wird sichergestellt, dass die in Kürze benötigten Teile möglichst schnell heruntergeladen werden. Als weitere Verbesserung wird innerhalb des Fensters nicht Rarest-First als Piece Selection verwendet, sondern eine sogenannte Portion-Policy, bei der mit einer gewissen Wahrscheinlichkeit Rarest-First und ansonsten In-Order Selection, d.h. Download der Teile in Abspielreihenfolge, verwendet wird. Untersucht wurde hier auch der Einfluss von Peers, deren Uploadrate geringer als die Abspielrate des Videos ist. Dabei ergeben sich für die Peers mit ausreichender Uploadrate kaum Nachteile, selbst wenn 30% der Peers keine ausreichende Uploadbandbreite zur Verfügung stellen – nur etwa 2-3% der Daten sind nicht rechtzeitig zum Abspielzeitpunkt angekommen. Außerdem wurden Peers, die keinerlei Daten hochladen, simuliert. Wie erwartet, erreichen diese nur geringe Downloadraten, während die sich normal verhaltenden Peers kaum beeinträchtigt werden. 4) Tribler: Bei Tribler [14] handelt es sich um ein P2PFile-Sharing-System, das auf BitTorrent aufbaut und dieses um diverse Funktionen erweitert. Der Fokus liegt dabei auf dem Aufbau eines sozialen Netzwerks, was sowohl das Finden von Dateien vereinfachen, als auch die Downloadraten erhöhen soll. Im Gegensatz zu vielen der anderen Systeme, die davon ausgehen, dass ein Benutzer nur während der Wiedergabe des Videos ein Teil des P2P-Netzwerks ist, ist Tribler mehr darauf ausgelegt, dass Teilnehmer über einen längeren Zeitraum online sind. Die Peers werden anhand ihrer Interessen in Gruppen eingeteilt, daraus ergeben sich die sogenannten Taste-Buddies. Für das Streaming von Videos bietet Tribler zwei wesentliche Neuerungen: Zum einen Collaborative-Downloading mit dem 2Fast-Protokoll, bei dem befreundete Peers bei dem Download von Dateien helfen, und das Give-to-Get-Protokoll, welches durch Überwachung der Peers versucht, Free-Riding zu verhindern und außerdem einige speziell auf Video-Streaming zugeschnittene Anpassungen enthält. Diese beiden Neuerungen werden in den folgenden Abschnitten beschrieben. 5) 2Fast: Die Idee hinter 2Fast [8] ist, dass ein Peer, Collector genannt, von befreundeten Peers, Helpers genannt, Unterstützung beim Download einer Datei anfordert. Die Helpers laden dann ebenfalls Teile der Datei herunter und senden diese an den Collector. Sowohl der Collector als auch die Helper laden die Datei normal über BitTorrent herunter. Bevor jedoch ein Helper einen Teil der Datei herunterlädt, fragt er beim Collector nach, ob dieser Teil noch benötigt wird, d.h. noch nicht heruntergeladen wurde und kein anderer Helper diesen Teil gerade herunterlädt. Anschließend sendet der Helper den heruntergeladenen Teil an den Collector, ohne eine Gegenleistung zu erwarten. Mit 2Fast kann die Downloadgeschwindigkeit von Peers mit asymmetrischen Internetanbindungen, d.h. solchen, bei denen die verfügbare Upload-Bandbreite geringer als die DownloadBandbreite ist, gesteigert werden. In einem Test mit verschiedenen ADSL-Anschlüssen konnte damit eine Steigerung der Downloadgeschwindigkeit um bis zu Faktor 2-6 erreicht werden. 6) Give-to-Get: In Tribler wird außerdem Give-to-Get [13] verwendet, um Free-Riding zu minimieren. Die Grundidee dabei ist, dass Teile des Videos bevorzugt an solche Peers hochgeladen werden, die diese Teile wiederum an andere Peers weiterleiten. Free-Rider, also solche Peers, die keine oder nur sehr wenige Daten an andere Peers senden, bekommen dadurch nur dann eine akzeptable Downloadrate, wenn genügend Uploadkapazität im Netzwerk vorhanden ist. Der Vorteil bezüglich Video-Streaming gegenüber dem standardmäßigen BitTorrent-Unchoking-Algorithmus ist, dass nun Teile nicht 36 6~ P2P-BASED VIDEO-ON-DEMAND-STREAMING dem Low-Priority-Set. Innerhalb des Mid- und Low-PrioritySets werden die Pieces wie bei BiToS nach dem Rarest-First Prinzip ausgewählt, in dem High-Priority Set jedoch In-Order. Eine Ausnahme davon ist die Prebuffering-Zeit: Bevor mit dem Abspielen des Videos begonnen wird, werden zunächst alle Pieces in dem anfänglichen High-Priority-Set in RarestFirst Reihenfolge heruntergeladen. Anhand der bisherigen Downloadgeschwindigkeit wird dann die voraussichtlich verbleibende Downloadzeit ausgerechnet und mit der Wiedergabe begonnen, sobald diese unter der Dauer des Videos liegt. 7) RINDY: Bei RINDY [4] liegt der Fokus auf effizienter Unterstützung von Änderungen der Abspielposition durch Springen innerhalb des Videos. Hierzu besitzt jeder Peer eine Liste von Peers mit weiter entfernter Abspielposition. Für den Beitritt zum Netzwerk gibt es einen Tracker-Server, der jedem Peer neben einer Liste von anderen Peers ebenfalls einen von mehreren Streaming-Servern zuweist. Die Peers speichern die zuletzt abgespielten Teile des Videos und tauschen diese untereinander aus. Um die Startup-Verzögerung zu minimieren, speichert jeder Peer ebenfalls den Anfang des Videos. Die Nachbarn eines Peers werden anhand der Differenz der Abspielposition auf Ringe aufgeteilt. Der innerste Ring, Gossip-Ring genannt, beinhaltet andere Peers mit ähnlicher Abspielposition und überlappendem Buffer. Die äußeren Ringe, Skip-Ringe genannt, beinhalten Peers, deren aktuelle Abspielposition weiter entfernt ist. mehr nur an Peers hochgeladen werden, von denen auch Teile heruntergeladen werden können. Da beim Video-Streaming bevorzugt Teile in der Nähe der eigenen Abspielposition angefragt werden, eignet sich der Standardalgorithmus hauptsächlich für Peers mit ähnlicher Abspielposition, weil diese viele Teile untereinander austauschen können. Wenn sich aber ein Peer erst am Anfang des Videos befindet, ist dieser zwar an den Teilen eines anderen Peers, der bereits fast das gesamte Video heruntergeladen hat, interessiert, aber nicht umgekehrt. Deshalb ist ein Unchoking-Algorithmus, der auf der Anzahl der weitergeleiteten Teile basiert, für Video-Streaming besser geeignet. Der Unchoking-Algorithmus wird so modifiziert, dass immer die drei besten Forwarder unchoked werden. Wie bei BitTorrent wird auch immer ein zufälliger Peer unchoked (Optimistic Unchoke). Die Bewertung eines Peers q durch einen Peer p geschieht dabei nach der Anzahl der Pieces, die q innerhalb des letzten Intervalls an andere Peers hochgeladen hat. Dabei werden zunächst nur solche Teile berücksichtigt, die q von p erhalten hat. Sollten mehrere Peers die gleiche Anzahl an Teilen weitergeleitet haben, werden alle von diesen hochgeladenen Teile berücksichtigt. Um an diese Zahlen zu kommen, sendet q an p eine Liste der Peers, an die er Teile hochlädt. Peer p fragt dann bei diesen Peers nach. Dadurch soll verhindert werden, dass Peers falsche Angaben über die Anzahl der hochgeladenen Pieces senden. Dieses Szenario ist in Abbildung 4 dargestellt. Peer p lädt zu q Daten hoch, dieser leitet sie an die Peers x und y weiter. Der Peer p fragt dann x und y nach den von q weitergeleiteten Teilen. Abbildung 4. Beispiel eines Give-to-Get Netzwerks. Peer p lädt Teile an Peer q hoch, der diese wiederum an x und y hochlädt. Peer p erhält durch Nachfrage bei x und y die Informationen darüber, wieviele Teile q an andere Peers weitergeleitet hat. Abbildung 5. Beispielausschnitt aus einem RINDY-Netzwerk. Gezeigt ist ein Peer p sowie andere Peers, die in Ringe um p aufgeteilt sind. Bei dem inneren Ring handelt es sich um den Gossip-Ring, bei den äußeren Ringen um Skip-Ringe. Neben dem neuen Unchoking-Algorithmus kommt bei Give-to-Get ebenfalls ein neuer, auf Video on Demand zugeschnittener, Piece-Selection-Algorithmus zum Einsatz. Ähnlich wie bei BiToS werden die Teile in verschiedene Mengen eingeteilt. Give-to-Get verwendet hier jedoch drei Mengen: Ein High-Priority-Set für die als nächstes abzuspielenden Teile, ein anschließendes Mid-Priority-Set und ein Low-PrioritySet für alle restlichen Teile am Ende des Videos. Die Mengen haben hier eine feste Größe und beginnen immer direkt an der aktuellen Abspielposition, können also auch bereits heruntergeladene Teile enthalten. Bei der Piece-Selection werden immer zuerst alle Teile aus dem High-Priority-Set heruntergeladen, dann aus dem Mid-Priority-Set und erst anschließend aus Jeder Peer verwaltet eine Liste mit einer gewissen Anzahl von Peers aus dem Gossip-Ring, sogenannte Near-Neighbors, sowie aus jedem Skip-Ring, sogenannte Far-Neighbors. Für jeden Skip-Ring wird außerdem eine Liste mit Backup-Peers verwaltet, um Ersatz für Far-Neighbors zu haben, die das Netzwerk verlassen. Die Ringe eines Peers p und dessen Verbindungen zu anderen Peers sind in Abbildung 5 dargestellt. Innerhalb des Gossip-Rings tauschen die Peers regelmäßig Nachrichten mit ihren Abspielposition und Buffer-Zustand 37 ~ 7 P2P-BASED VIDEO-ON-DEMAND-STREAMING (vorhandene Pieces etc.) mit ihren Nachbarn aus. Diese Nachrichten werden auch an andere Peers in dem Ring weitergeleitet, um neue Nachbarn zu finden. Wenn ein Peer seine Abspielposition durch Springen innerhalb des Videos verändert, benötigt er neue Nachbarn in der Nähe der neuen Position. Hierzu wird eine Lookup-Operation über die Ringstruktur gestartet. Befindet sich die neue Position außerhalb des Gossip-Rings, wird eine Anfrage an den bekannten Peer gesendet, der am nächsten an der neuen Position liegt. Wenn sich die gewünschte Position in dessen GossipRing befindet, wird eine Nachricht an den suchenden Peer mit einer Liste von Peers aus dem entsprechenden Gossip-Ring gesendet. Andernfalls wird das Verfahren rekursiv fortgesetzt, bis die Anfrage einen Peer aus dem gesuchten Ring erreicht. Einschränkung auf Kunden aus bestimmten Ländern denkbar. Außerdem soll es einen seperaten Payment-Provider geben, so dass die Zahlungsinformationen nur diesem und nicht dem Video-Produzenten oder gar anderen Benutzern des Netzwerks bekannt sind. Ein weiteres bei P2P-Next betrachtetes Problem ist, dass P2P-Netzwerke in der Regel keine Kenntnis der unterliegenden Netzwerk-Topologie haben. Hier wäre es insbesondere wünschenswert, in ISP Caches ausgetauschte Daten zu speichern und somit den Traffic zu reduzieren. Als Lösungsansatz für diese Probleme setzt P2P-Next auf ein verteiltes System, das neben dem P2P-Netzwerk zum Übertragen des Contents zwei zusätzliche Komponenten enthält: Ein Payment-System, bei dem Benutzer für Content bezahlen können und ein entsprechendes Token enthalten, sowie ein Access-Control-System, das den Benutzern gegen Vorzeigen des Tokens nach Überprüfung beim Payment-System einen Schlüssel zum Dekodieren des Contents zur Verfügung stellt. Der Content wird dabei, ähnlich wie beim Satellitenfernsehen, mit einem Schlüssel für alle Benutzer verschlüsselt, so dass die verschlüsselten Daten frei verteilt und in Caches zwischengespeichert werden können. Um die Daten jedoch zu benutzen, ist ein entsprechender Schlüssel nötig, den nur authorisierte Benutzer erhalten. Dadurch, dass die Verschlüsselung bei P2P-Next optional ist, können auch andere Geschäftsmodelle realisiert werden. So kann das Video beispielsweise unverschlüsselt übertragen werden, und Benutzer können nach dem Anschauen freiwillig spenden. Auch eine Einschränkung anhand geografischer Position der Benutzer ist implementierbar, indem nur das AccessControl-System ohne Payment-System verwendet wird. V. Z USAMMENFASSUNG UND AUSBLICK Durch den Einsatz von P2P-Technologie bei Video-onDemand-Streaming können Serverlast und Trafficaufkommen für die Betreiber von Video-Angeboten deutlich gesenkt werden. Dazu gibt es verschiedene Ansätze, die sich in zwei grundsätzliche Klassen einteilen lassen. Eine Klasse von P2P-basierten Video-Streaming-Systemen sind die Application-Layer-Multicast-Systeme, bei denen Clients, die das Video in einem gewissen Zeitfenster anfragen, zusammen mit einem Streaming-Server einen Multicast-Baum zum Streamen des Videos bilden. Hier gibt es verschiedene Techniken um das Streaming trotz unterschiedlicher Ankunftszeiten und somit anderer Abspielpositionen zu ermöglichen. P2Cast verwendet dazu einen Patch-Stream, über den Clients beim Betreten des Systems den verpassten Anfang des Videos erhalten, bei P2VoD cachen die Peers hingegen immer die zuletzt empfangenen Teile des Videos und leiten neuen Clients einen kontinuierlichen Stream ab Beginn des Videos weiter. Daneben gibt es Systeme, die keine explizite NetzwerkTopologie aufbauen, sondern das Video in kleine Teilstücke unterteilen und diese Teilstücke untereinander austauschen. Viele dieser Systeme basieren auf dem für File-Sharing bewährten BitTorrent-System, verändern jedoch Komponenten davon, um die Wiedergabe des Videos zu ermöglichen, bevor es vollständig heruntergeladen ist. Hierfür gibt es verschiedene Ansätze, die versuchen, eine Balance zwischen dem Download der Teile in der Abspielreihenfolge und einer möglichst guten Verteilung der Teile über die Peers zu erreichen. Auch Funktionen wie das Springen zu bestimmten Stellen in einem Video ist mit P2P-Systemen realisierbar. Systeme wie RINDY bauen entsprechende Verbindungen auf, um solche Operationen möglichst effizient zu unterstützen. Ein weiterer interessanter Aspekt ist der Einsatz von P2Pbasierten Video-Streaming-Systemen für die Verteilung von kommerziellen Videos. Mit den besondern Anforderungen für solche Anwendungsszenarien beschäftigt sich u.a. P2P-Next [11], ein von der EU unterstütztes Projekt, dessen Ziel die Entwicklung einer P2P Content Delivery Plattform ist. In [11] werden dabei insbesondere die folgenden Anforderungen aufgeführt: Zum einen möchte der Produzent einschränken, wer das Video sehen kann. Neben der Beschränkung auf Kunden, die für die Inhalte bezahlt haben, ist beispielsweise auch eine L ITERATUR [1] E. Akyol, A.M. Tekalp, and M.R. Civanlar. A flexible multiple description coding framework for adaptive peer-to-peer video streaming. IEEE Journal of Selected Topics in Signal Processing, 1(2):231–245, 2007. III-A [2] Y. Borghol, S. Ardon, N. Carlsson, and A. Mahanti. Toward Efficient On-Demand Streaming with BitTorrent. NETWORKING 2010, pages 53–66, 2010. IV-B3 [3] M. Cha, H. Kwak, P. Rodriguez, Y.Y. Ahn, and S. Moon. I tube, you tube, everybody tubes: analyzing the world’s largest user generated content video system. In Proceedings of the 7th ACM SIGCOMM conference on Internet measurement, pages 1–14. ACM, 2007. I [4] B. Cheng, H. Jin, and X. Liao. RINDY: a ring based overlay network for peer-to-peer on-demand streaming. Ubiquitous Intelligence and Computing, pages 1048–1058, 2006. IV-B7 [5] B. Cohen. Incentives build robustness in BitTorrent. In Workshop on Economics of Peer-to-Peer systems, volume 6, pages 68–72. Citeseer, 2003. I, II-B, III-B [6] C. Dana, D. Li, D. Harrison, and C.N. Chuah. Bass: Bittorrent assisted streaming system for video-on-demand. In Multimedia Signal Processing, 2005 IEEE 7th Workshop on, pages 1–4. IEEE, 2006. IV-B1 [7] T.T. Do, K.A. Hua, and M.A. Tantaoui. P2VoD: Providing fault tolerant video-on-demand streaming in peer-to-peer environment. In Communications, 2004 IEEE International Conference on, volume 3, pages 1467–1472. IEEE, 2004. IV-A2 [8] P. Garbacki, A. Iosup, D. Epema, and M. van Steen. 2fast: Collaborative downloads in p2p networks. In Peer-to-Peer Computing, 2006. P2P 2006. Sixth IEEE International Conference on, pages 23–30. IEEE, 2006. IV-B5 [9] V.K. Goyal. Multiple description coding: Compression meets the network. Signal Processing Magazine, IEEE, 18(5):74–93, 2002. III-A [10] Y. Guo, K. Suh, J. Kurose, and D. Towsley. P2Cast: peer-to-peer patching scheme for VoD service. In Proceedings of the 12th international conference on World Wide Web, pages 301–309. ACM, 2003. IV-A1 38 8~ P2P-BASED VIDEO-ON-DEMAND-STREAMING [11] R. Jimenez, L.E. Eriksson, and B. Knutsson. P2P-Next: technical and legal challenges. Research funded by Seventh Framework Programme, 2009. V [12] N. Magharei, R. Rejaie, and Y. Guo. Mesh or multiple-tree: A comparative study of live p2p streaming approaches. In INFOCOM 2007. 26th IEEE International Conference on Computer Communications. IEEE, pages 1424–1432. Ieee, 2007. III-C [13] JJD Mol, JA Pouwelse, M. Meulpolder, DHJ Epema, and HJ Sips. Give-to-get: Free-riding-resilient video-on-demand in p2p systems. Proceeding of the 15th SPIE/ACM Multimedia Computing and Networking (MMCN’08), 2008. IV-B6 [14] J.A. Pouwelse, P. Garbacki, J. Wang, A. Bakker, J. Yang, A. Iosup, D.H.J. Epema, M. Reinders, MR Van Steen, and H.J. Sips. Tribler: A social-based peer-to-peer system. Concurrency and Computation: Practice and Experience, 20(2):127–138, 2008. IV-B4 [15] H. Schwarz, D. Marpe, and T. Wiegand. Overview of the scalable video coding extension of the H. 264/AVC standard. IEEE Transactions on Circuits and Systems for Video Technology, 17(9):1103–1120, 2007. III-A [16] A. Vlavianos, M. Iliofotou, and M. Faloutsos. BiToS: Enhancing BitTorrent for supporting streaming applications. In INFOCOM 2006. 25th IEEE International Conference on Computer Communications. Proceedings, pages 1–6. IEEE, 2007. IV-B2 39 SKYPE - EIN ÜBERBLICK ÜBER DIE PROTOKOLLE, DAS OVERLAY-NETZWERK UND DIE SICHERHEITSMASSNAHMEN ~ Skype - Ein Überblick über die Protokolle, das Overlay-Netzwerk und die Sicherheitsmaßnahmen Marius Hornung Nutzerverhaltens werden bewusst zurückgehalten und effektiv verschleiert. Diese Arbeit fasst die Resultate von Forschern und Forschungsgruppen, die Interesse an Skypes Protokollen und dem Overlay-Netzwerk haben, zusammen und versucht so diese zentralen Fragen zu beantworten. Dabei wird ihr Vorgehen und ihre Analyseansätze vorgestellt und die Probleme, welchen sie sich stellen mussten, beschrieben. Danach werden allgemeine Begriffe, die zum weiteren Verständnis notwendig sind, eingeführt. Es folgt eine Zusammenfassung der Ergebnisse, die zu einem Überblick über die Struktur des Overlay-Netzwerks und die darin involvierten Entitäten führt. Weiterhin werden wichtige Begriffe, die zur korrekten Funktionalität eines SC essentiell sind, erläutert. Am Beispiel der Funktionen Login und Sprachtelefonie werden Methoden zur Umgehung von Firewalls und Network Address Translators (NAT), sowie Sicherheitsmaßnahmen zum Schutz der Privatsphäre, exemplarisch gezeigt. Das Paper schließt ab mit einer Zusammenfassung. Zusammenfassung—Skype ist eine Voice-over IP Software basierend auf einem Peer-to-Peer Netzwerk. Es ist die erfolgreichste Software seiner Art, bietet kostenlose und auch kostenpflichtige Dienste, ist aber proprietär und damit Closed-Source. Forscher haben ein grosses Interesse daran herauszufinden, wie Skype funktioniert, um die Ergebnisse für die eigene Forschung zu nutzen. Dabei werden sie vor viele Probleme gestellt, die Skype absichtlich mit sich bringt, um das eigene Know-how zu schützen. Die vorliegende Arbeit stellt diese Probleme vor, fasst die bisher erfahrenen Resultate von Forschern zusammen und gibt einen Überblick bezüglich des verwendeten Overlay-Netzwerks. Weiterhin werden dem Endbenutzer verborgene Details, wie das Umgehen und Durchdringen von Firewalls und NATs, sowie die Maßnahmen zum Schutz der Privatspähre von Skype-Nutzern, beschrieben. Auf Grund der Closed-Source-Taktik, die Skype nutzt, sind die Ergebnisse vage. I. E INFÜHRUNG Skype ist eine Voice over Internet Protokoll (VoIP)Software, die in 2003 erstmals veröffentlicht und von ehemaligen Mitarbeitern von Kazaa [6] entwickelt wurde. Es handelt sich um die weitverbreitetste und erfolgreichste Software dieser Art mit 519 Millionen registrierten Benutzern (2009) [5]. Im November 2010 waren erstmals 25 Millionen Benutzer gleichzeitig online [15]. Die Software bietet kostenlose Features, wie Sprach- und Videotelefonie, InstantMessaging, Datei-Transfer und Screensharing. Darüber hinaus werden kostenpflichtige Dienste angeboten zu welchen Anrufe aus und in traditionelle Telefonnetze (SkypeIn, SkypeOut), Skype To Go-Nummern und Videokonferenzen gehören. Die zentralen Fragen, welche sich Forscher, Sicherheitsadministratoren und Konkurrenten von Skype stellen, beziehen sich auf die Gründe des großen Erfolgs, die verwendeten Technologien und beschäftigen sich mit Sicherheitsfragen. Allerdings liegt die Motivation dieser Interessengruppen in verschiedenen Bereichen: Während Forscher gerne die Erfahrung von Skype bei der Unterhaltung von großen Peer-to-Peer (P2P)-Netzen öffentlich zugänglich hätten, um sie für Ihre eigene Forschung nutzen zu können, liegt der Interessenschwerpunkt von Konkurrenten direkt auf den verwendeten Technologien, um ihre eigenen Produkte zu verbessern. Sicherheitsadministratoren können nicht nachprüfen, ob die Angaben, die Skype zum Schutz der Privatsphäre der Nutzer macht, stimmen oder ob vielleicht im Skype-Client (SC) ein Trojaner/eine Backdoor eingebaut ist. Trotz des hohen Interesses ist noch sehr viel über Skype im Dunklen. Die Gründe lassen sich in der Tatsache finden, dass Skype versucht das eigene Knowhow, so weit wie möglich, vor dem Zugriff Dritter zu schützen, um die eigene Marktposition zu stärken. Informationen zur Architektur des Overlay-Netzwerks, den Sicherheitsmechanismen und des II. AUFDECKEN DER P ROTOKOLLE Dieses Kapitel fasst die Ansätze von verschiedenen Forschern, die herausfinden möchten wie Skype im Detail funktioniert, zusammen. Prinzipiell lassen sich diese in zwei Gruppen einteilen: Der erste Ansatz sammelt von Skype generierten NetzwerkTraffic in großen Mengen unter verschiedenen Netzwerkbedingungen, variiert in Testszenarien hinsichtlich öffentlicher IP-Adresse, Firewalls und NATs. Diese gesammelten Pakete werden dann einzeln und/oder in Bezug auf eine bestimmte Skype-Funktion (zum Beispiel Login, Benutzersuche, ...) als Message-Flows betrachtet und ausgewertet. Während Guha, Daswani und Jain in [10] und Baset und Schulzrinne in [14] so versucht haben die einzelnen Funktionen von Skype zu analysieren, um ein tieferes Verständnis der Protokolle und des Overlay-Netzwerkes zu erlangen, haben Ehlert und Petgang in [11], Bonfiglio et al. in [6] und Branch et al. in [8] ihr Augenmerk auf das Detektieren von Skype generierten Netzwerk-Traffic gelegt. Der zweite Ansatz, genutzt von Biondi und Desclaux in [3] geht einen anderen Weg. Sie beschäftigen sich mit der Analyse des Quellcodes des Skype-Binarys1 und stellen die Ergebnisse in Bezug zu Netzwerkpaketen und Funktionen von Skype, um an Einblicke zu gelangen. Nebenresultat dieses Ansatzes ist die Identifikation der Schutzmechanismen von Skype gegen Reverse-Engineering-Angriffe. Bei diesen Angriffen wird durch die genaue Untersuchung der Strukturen, Zustände und 1 Binary: 40 Ausführbare Datei in Maschinensprache oder Bytecode ~ SKYPE - EIN ÜBERBLICK ÜBER DIE PROTOKOLLE, DAS OVERLAY-NETZWERK UND DIE SICHERHEITSMASSNAHMEN Verhaltensweisen eines fertigen Systems versucht die Konstruktionselemente und –details zu extrahieren. E. Verschlüsselung der Netzwerkpakete Der Payload von Netzwerkpaketen, die Skype erzeugt, wird RC42 verschlüsselt. Der RC4-Schlüssel wird durch die Zielund Quell-IP, der Skype Packet-ID und einem nicht weiter bekannten Initialisierungsvektor erzeugt. Anzumerken ist, dass diese RC4-Verschlüsselung einzig der Verschleierung des Inhalts der Netzwerkpakete dient. Der Schutz der Privatsphäre wird durch andere Methoden, siehe Abschnitt VII, sichergestellt [3]. III. S CHUTZMECHANISMEN SEITENS S KYPE Im letzten Abschnitt wurden Schutzmechanismen angedeutet, die verhindern, dass man Skypes Funktionsweise schnell erfassen kann und weswegen noch viele Details im Dunklen liegen. Im Folgenden werden diese beschrieben und somit begründet, warum die Ergebnisse der Arbeiten sehr vage sind. Die Mechanismen werden nur kurz angedeutet, aber nicht in der Tiefe erläutert. IV. G RUNDLEGENDES Dieser Abschnitt erläutert grundlegende Begriffe, die für das Verständnis des weiteren Verlaufs des Papers notwendig sind, sich aber nicht direkt auf Skype beziehen. Dazu gehören die beiden Protokolle UDP und TCP, sowie durch Firewalls und NATs auftretende Probleme. A. Binary Packing Einige Teile des Skype-Binarys sind mit einem festkodierten Schlüssel per XOR verknüpft. Erst zur Laufzeit werden diese Teile des Codes entschlüsselt. Um das Dumping des Codes aus dem Speicher zu verhindern löscht Skype den Anfang des eigenen Codes und überschreibt teilweise die original Import-Table mit einer eigenen Import-Table. Weiterhin finden Imports von Bibliotheken dynamisch während der Laufzeit statt [3]. A. TCP und UDP TCP und UDP sind zwei auf der Transportschicht [2], [12] des ISO/OSI-Referenzmodels angesiedelte Protokolle zur Übertragung von Daten im Internet. TCP ist ein zuverlässiges, verbindungsorientiertes und paketvermitteltes Transportprotokoll. Nachrichten werden in kleinere Pakete aufgespalten und über eine vorher hergestellte Verbindung mit der Gegenseite ausgetauscht. Die Übertragung aller Pakete wird durch das Protokoll sichergestellt. Im Gegensatz dazu ist UDP verbindungslos und unzuverlässig, dass heißt die Übertragung der Daten wird nicht sichergestellt. Da UDP keinerlei Fehlerkorrekturen vornimmt, ist es im Vergleich zu TCP schneller und ressourcenschonender. Dadurch reduzieren sich Bandbreitenverbrauch und Latenzzeiten maßgeblich [4]. Aus diesem Grund wird für Internettelefonie bevorzugt auf UDP zurückgegriffen, da kleinere Ungenauigkeiten im Sprachund Videostream vom Menschen nicht wahrgenommen werden können. B. Integritätschecks des Codes zur Laufzeit Um Veränderungen im Binary, wie zum Beispiel das Ersetzen eines bestimmten Code-Bereiches um fremde CodeFragmente, zu erkennen wird der Code von Skype zur Laufzeit ständigen Integritätschecks unterzogen. Unter normalen Umständen werden diese Integritätschecks zur Identifikation von Schadcode verwendet. In [3] haben die Autoren 300 solcher Tests gefunden, was stark darauf hinweist, dass Skype diese Tests nur durchführt, um das Reverse-Engineering zu erschweren. Zu diesen vielen kleineren Integritätschecks fügt sich noch ein finale Überprüfung durch einen RSA-Integritätscheck an. B. NAT und Firewall NAT erlaubt es private Netzwerke an öffentliche Netze, wie zum Beispiel das Internet, anzubinden. Der Grund liegt in der Knappheit der IPv4-Adressen. Dabei teilen sich mehrere Hosts in einem privaten Adressraum eine öffentliche IPAdresse. NAT-Router, die an der Grenze zwischen privaten und öffentlichen Netzen liegen, ersetzen automatisiert Adressinformationen in Datenpaketen, um beide Netze miteinander zu verbinden. Dabei unterhält der NAT-Router eine Tabelle zur Zuordnung von Verbindungen zu privaten Hosts. Verbindungen, die nicht von der privaten Seite aufgebaut oder explizit von einem Administrator in der Tabelle vermerkt werden, können von dem NAT-Router keinem Host in dem privaten Netz zugeordnet werden. Somit ist ein Host in einem privaten Netz faktisch nicht von außen zu erreichen. Ein ähnliches Problem stellt sich für Firewalls dar: Es werden explizit von außen und innen kommende Verbindungen blockiert, um Sicherheit zu gewährleisten. Dies führt, wie in [7] beschrieben, zu einigen Problemen bezüglich der Erreichbarkeit von SkypeKnoten in privaten Netzen . C. Anti-Debugging Techniken Skype verhindert effektiv das Nutzen eines Kerneldebuggers durch generische und konkrete Tests. Da das Setzten von Breakpoints das Binary verändert, schlagen die Integritätschecks fehl. Konkret testest Skype auf den Debugger Softice, in dem es versucht dessen Treiber zu laden. Erkennt Skype das Mitlaufen eines Debuggers werden Zufallssprünge im Code gemacht und Register randomisiert, was das Erkennen von Strukturen im Code unmöglich macht [3]. D. Quelltextverschleierung Quelltextverschleierung (Code Obfuscation), soll das Entwenden und Studieren des Codes so schwer wie möglich machen. Skype erreicht dies durch dynamisches Aufrufen von Funktionen und gewollte Sprünge im Quellcode, die nicht der Funktionalität dienen, sondern nur zur Verschleierung getätigt werden. [3]. 2 RC4 41 oder ARC4 ist eine Stromverschlüsselung ~ SKYPE - EIN ÜBERBLICK ÜBER DIE PROTOKOLLE, DAS OVERLAY-NETZWERK UND DIE SICHERHEITSMASSNAHMEN C. STUN und TURN Session Traversal Utilities for NAT (STUN) [9] ist ein Protokoll, welches das Vorhandensein und die Art von Firewalls und NATs, hinter welchen sich ein Host eventuell befindet, erkennt und durchdringen kann. Dabei werden nach bestimmten vorher definierten Abläufen Pakete zwischen dem Host und einem STUN-Server verschickt. Je nach Erfolg oder Misserfolg des Sendens bzw. veränderter Adressinformationen in den Paketen lassen sich Rückschlüsse auf eine Firewall oder das verwendete NAT ziehen. Traversal Using Relay NAT (TURN) [13] ist ein Protokoll, welches einen Host hinter einer Firewall oder einem NAT erlaubt Daten über eingehende TCP- oder UDP-Verbindungen zu empfangen. Die Hauptmethodik, welcher sich TURN bedient, basiert auf einer dritten Partei, dem TURN-Server, der als Proxy zwischen zwei kommunizierenden Hosts dient. Mit Hilfe von STUN und TURN lassen sich NATs und Firewalls erkennen und dadurch auftretende Probleme umgehen. Allerdings benötigt man dazu eine dritte Partei mit einer öffentlichen IP-Adresse. Ordinary Node V. DAS OVERLAY Im folgenden Abschnitt werden die teilnehmenden Entitäten im Skype-Netzwerk, Ordinary Nodes (ON), Super Nodes (SN), Bootstrap Super Nodes (BSN) und der Login-Server, sowie der für die Funktionalität von Skype wichtige Host Cache (HC), erläutert. Super Node Login-Server A. Skype Client Abbildung 1. Das Skype-Overlay-Netzwerk. ONs verbinden sich mit SNs, die untereinander ein Overlay bilden. SNs und ONs verbinden sich zum Login mit dem LS, der einzigen zentralen Komponente im Netzwerk. Ein Skype-Client (SC) ist ein im Skype-Netz teilnehmender Knoten. Er bietet die grundlegenden Funktionen, wie Eintreten in das Netz, Instant-Messaging, Annahme und Initierung von Sprach- und/oder Videoanrufen, Abmelden aus dem Netz, Datentransfer und Benutzersuche. Ein SC kann, abhängig von bestimmten Umständen, entweder ein ON oder ein SN sein [14]. umgehen ist das Hauptkriterium, um zu einem SN zu werden, eine öffentliche IP-Adresse. Nebenkriterien sind ausreichender RAM, CPU und Bandbreite. Es existieren mehr ONs als SNs und SNs sind mit ONs im Verhältnis 1 zu n assoziiert. Abbildung 2 lässt Vermuten, dass es im Durchschnitt weniger als 3 sind. Dass ein oberes Limit existiert erkennt man daran, dass mit steigender Zahl an ONs auch die Anzahl der SNs steigt. B. Ordinary Node Ein Ordinary Node ist ein SC und bietet keine weiteren oder besonderen Funktionen. Zum erfolgreichen Eintritt in das Skype-Netz ist jedoch eine TCP-Verbindung zu einem SN notwendig [14]. D. Skype Login-Server Der Skype Login Server (LS) ist die einzige zentrale Entität im Skype-Netzwerk [14], [11] ist dabei aber nicht am OverlayNetzwerk selbst beteiligt. Der LS speichert die Buddy-Liste, Benutzernamen und deren zugehörigen Passwörter und ist für die Authentifizierung von Benutzern während des Netzeintritts verantwortlich. Des Weiteren sorgt der LS dafür, dass Benutzernamen im Skype-Namensraum Unikate sind. C. Super Node SNs bilden untereinander ein Overlay-Netzwerk (Abbildung 1). Mehrere ONs verknüpfen sich mit einem SN. SNs bieten, im Gegensatz zu ONs, weitere Funktionen, die dem Endbenutzer aber nicht direkt zur Verfügung stehen. Diesen sind ihm aber von Nutzen, falls er sich hinter einer Firewall und/oder einem NAT befindet und deshalb nicht von aussen kontaktiert werden kann. ONs, die nicht direkt mit dem Internet über eine öffentliche IP-Adresse verbunden sind, nutzen SNs, um ihre Erreichbarkeit zu sichern [14], [11]. Eine genauere Erläuterung findet im nächsten Abschnitt statt. Jeder in das Netz eintretende SC ist, wie schon erwähnt, potentiell ein SN. Auf Grund der eben vorgestellten Methodik Firewalls und NATs zu E. Host Cache Jeder SC verwaltet eine Liste mit höchstwahrscheinlich erreichbaren anderen SCs, den Host Cache (HC) [14]. Der HC beinhaltet Paare von IP-Adressen und Ports von SNs. Der Eintritt in das Overlay-Netzwerk ist ein kritischser Punkt 42 ~ SKYPE - EIN ÜBERBLICK ÜBER DIE PROTOKOLLE, DAS OVERLAY-NETZWERK UND DIE SICHERHEITSMASSNAHMEN Start UDP-Pakete zu BSNs Anwtort in 6 Sekunden Ja Nein TCP Verbindungsversuche zu BSNs Abbildung 2. Anteil der SNs auf die Gesamtzahl der SCs. Der Bereich xAchse bis blaue Linie gibt den Anteil der SNs an. Von der blauen Linie aus nach oben gehend zur roten Linie zeigt den Anteil der ONs. Abbildung von [10]. Verbunden Ja Erfolg Nein und mindestens ein Knoten im HC muss erreichbar sein, um erfolgreich in das Netz einzutreten. In [14] wird angegeben, dass ein HC nach zwei Tagen etwa 200 Einträge vorzuweisen hat. Diese Anzahl steigt bei weiterer Beobachtung nicht mehr. 6 Sekunden warten F. Bootstrap Supernodes Nach der Installation von Skype ist der HC leer. Da der SC in diesem Fall keinen SN zum Eintreten in das Netz kennt, existieren im Quellcode fest codierte Bootstrap Super Nodes (BSN). Diese Knoten werden bei leerem HC als Bootstrapnode, bei Unerreichbarkeit der Knoten als Backup genutzt.. S. A. Baset und H. G. Schulzrinne vermuten in [14], dass es 8 solcher BSN gibt und diese fest in den Skype-Client eincodiert sind. Abbildung 3. Der Loginalgorithmus beim ersten Start eines SCs (HC ist leer) vor dem Authentifizieren am LS. problemlos und für den Nutzer verborgen NATs und Firewalls zu umgehen. Skype verwendet dazu wahrscheinlich STUN und TURN ähnliche Protokolle [14]. Hinweise darauf lassen sich im Loginprozess finden (Abbildung 3). Dieser stellt eine kritische Funktion in Skype dar, weil der SC mindestens einen SN erreichen und sich gegenüber dem LS authentifizieren muss. Nach dem Start schickt der SC UDP-Pakete an die BSN und versucht danach erst, unabhängig ob diese erfolgreich versendet wurden oder nicht, die notwendige TCP-Verbindung zu einem BSN aufzubauen. Der Sinn dahinter lässt sich in STUN finden. Wahrscheinlich versucht der SC das Vorhandensein und die Art eines NATs und/oder einer Firewall, hinter welcher er sich ggf. befindet, festzulegen, bevor er einen Verbindungsversuch startet. Im folgenden Abschnitt werden drei Netzwerkszenarien betrachtet, um die Verwendung von einem TURN ähnlichen Protokoll und den Rückfall auf TCP-Kommunikation, sollte UDP nicht möglich sein, zu zeigen. VI. KOMMUNIKATIONSPARADIGMEN Der folgende Abschnitt erläutert exemplarisch am LoginProzess und der Sprachtelefonie in welcher Form SCs untereinander kommunizieren und welche Rolle dabei STUN und TURN spielen. Im zweiten Teil werden die Transferraten beleuchtet. A. Kommunikation zwischen zwei Knoten In Skype erfolgt die Kommunikation zwischen zwei Knoten ausschließlich über UDP oder TCP, wobei Kontrollinformationen immer über TCP und Sprachpakete, wenn möglich, immer über UDP transportiert werden. In besonderen Fällen kann aber auch Sprache via TCP übertragen werden. Im Gegensatz zu anderen VoIP-Lösungen, wie zum Beispiel Google Talk 3 , schafft es Skype augenscheinlich a) Anrufer und Angerufener haben öffentliche IPAdresse: Gesetz dem Fall, dass Anrufer und Angerufener eine öffentliche IP-Adresse haben und deshalb beide 3 http://www.google.com/talk/ 43 SKYPE - EIN ÜBERBLICK ÜBER DIE PROTOKOLLE, DAS OVERLAY-NETZWERK UND DIE SICHERHEITSMASSNAHMEN 1 noch die Ports 80 (HTTP) und 443 (HTTPS), um Firewalls zu durchdringen [14]. Des Weiteren legt Skype einen zufällig gewählten Port während der Installation fest, auf welchem es auf TCP- und UDP-Verbindungen lauscht. Dieser Port kann vom Benutzer beliebig geändert werden [14]. Zwei SCs erkennen, falls sie sich hinter demselben NAT befinden. Dann wird die Sprachkommunikation komplett in dem privaten Netz realisiert [14]. Die Nutzersuche, die es ermöglicht andere Teilnehmer zu finden, ist dezentral organisiert und erfolgt über das Peer-2-Peer-Netz. Skype gibt an eine Peer-to-Peer Technologie der dritten Generation („3G P2P„oder GI für „Global Index „) entwickelt zu haben, die jeden Benutzer findet, sollte er sich innerhalb der letzten 72 Stunden im SkypeNetzwerk angemeldet haben [17]. Auch bei der Nutzersuche werden die schon bei Anrufen vorgestellten Techniken zur Überwindung von NATs und Firewalls genutzt. Suchen SCs hinter einer Firewall oder einem NAT einen Benutzer, dann führt der mit diesem Knoten assoziierte SN die Suche durch [14]. Des Weiteren lassen sich Hinweise auf ein Caching von Suchergebnissen finden [14]. Internet Public IP Anrufer 2 Public IP Angerufener Public IP SN NAT Public IP Private IP Anrufer Internet Public IP Angerufener TCP - Steuerinformationen UDP - Sprachtelefonie 3 Public IP SN Internet NAT / Firewall Public IP Private IP Anrufer NAT / Firewall Public IP ~ Public IP Angerufener TCP - Steuerinformationen & Sprachtelefonie Abbildung 4. Die Kommunikation zwischen SCs unter verschiedenen Netzwerkszenarien. In 1 erfolgt eine normale Kommunikation direkt zwischen beiden Parteien. In 2 und 3 dient ein dritter SCs als Proxy. In 3 fällt Skype komplett auf die Kommunikation via TCP zurück. B. Transferraten Haben beide SCs eine öffentliche IP-Adresse fließen Sprach- und Videodaten zwischen ihnen direkt über UDP. Die Größe eines UDP-Sprachpakets variiert dabei zwischen 40 und 110 Bytes. Folglich beträgt die gesamte Uplink- und Downlinkbandbreite für Sprachdaten ca. 5 kilobytes/s [14] (Fall 1 in 4). Befinden sich entweder Anrufer oder Angerufener hinter einem port-restricted NAT (Fall 2 in 4), tauschen beide Teilnehmer Sprachdaten direkt miteinander aus. Die Paketgröße von Sprachpaketen variiert zwischen 40 und 110 Bytes. Die benutzte Bandbreite beträgt in etwa 5 kilobytes/s [14]. Sind beide SCs, Anrufer und Angerufener, hinter einem portrestricted NAT und einer UDP-restricted Firewall tauschen beide Daten via TCP über einen dritten SC aus. Die Paketgröße von Sprachdaten variiert zwischen 30 und 90 Byte. Die totale Uplink- und Downlinkbandbreite, die dabei genutzt wird, beläuft sich in etwa auf 5,5 kilobytes/s. uneingeschränkt von außen über TCP und UDP erreichbar sind (Abbildung 4 Punkt 1), erfolgt die Kommunikation für Steuersignale über TCP und für Sprache über UDP. b) Anrufer hinter port-restricted NAT und angerufener hat öffentliche IP-Adresse: Besitzt nur der Angerufene eine öffentliche IP-Adresse und der Anrufer befindet sich hinter einem port-restricted NAT4 (Abbildung 4 Punkt 2) wird die Kommunikation für Steuerinformationen über einen dritten Knoten (einem SN) geleitet. Die Sprachkommunikation wird weiterhin via UDP übertragen. c) Beide Benutzer hinter port-restricted NAT und UDP-restricted Firewall: Sind beide Benutzer, Anrufer und Angerufener, hinter einem port-restricted NAT und einer UPD-restricted Firewall5 (Abbildung 4 Punkt 2) wird ein dritter Knoten für die komplette Kommunikation, Sprachund Steuerdaten, herangezogen. Es kommt nur noch TCP zum Einsatz. VII. S ICHERHEIT Skype nutzt Authentifizierungs und Verschlüsselungstechniken, um die Privatsphäre seiner Nutzer zu schützen [16]. In diesem Abschnitt wird die von Skype verwendete Security Policy und die eingesetzte Kryptografie bei der Registrierung eines neuen Benutzers, sowie zwischen 2 Knoten, erläutert. Während in A die Kommunikation standardmäßig verläuft, zeigen sich in B und C Hinweise auf ein TURN ähnliches Protokoll, welches durch die Nutzung eines dritten Knotens als Proxy den Datenverkehr zwischen beiden vermittelt. Neben den eben vorgestellten Techniken nutzt Skype auch A. Security Policy Eine Security Policy definiert, was Sicherheit bezogen auf ein konkretes System, in diesem Fall Skype, bedeutet. Nach einer Security Evaluation bei Skype gibt Tom Berson in [1] die Skype Security Policy wie folgt an: Skype Benutzernamen sind Unikate. Benutzer oder Applikationen müssen einen Skype Benutzernamen und dessen assoziierte Authentifizierungsdaten vorweisen, bevor sie die zum Benutzernamen gehörende Identität oder deren Rechte annehmen dürfen. Jeder Peer liefert 4 Port-restricted NAT: Möchten A und B kommunizieren und A befindet sich hinter einem port-restricted NAT, so ist A nur von außen erreichbar, falls A vorher eine Verbindung nach außen aufgebaut hat und dies auch nur über den Port, von welchem aus die Verbindung aufgebaut wurde. 5 UDP-restricted Firewall: Möchten A und B kommunizieren und befindet sich B hinter einer UDP-restricted Firewall, blockt diese alle ein- und ausgehenden UDP-Verbindungen. Verbindungen via UDP sind in diesem Fall komplett ausgeschlossen. 44 ~ SKYPE - EIN ÜBERBLICK ÜBER DIE PROTOKOLLE, DAS OVERLAY-NETZWERK UND DIE SICHERHEITSMASSNAHMEN A, H(PA), VA SC von A 1 Login-Server Internet Public IP Anrufer Identity Certificat Abbildung 5. Der Registeriungsprozess. 2 einem anderen Peer einen Nachweis seines Benutzernamens und seiner Rechte, immer wenn eine Skype-Session hergestellt wird. Beide Peers verifizieren diesen Nachweis, bevor der Session gestattet wird Nachrichten auszutauschen. Nachrichten, die während einer Skype-Session übertragen werden, sind von einem SC zum anderen SC verschlüsselt. Keine zwischengeschalteten Knoten haben Zugriff auf diese Nachrichten. Die eben genannte Security Policy wird wie folgt umgesetzt: SC B SC A Ende-zu-Ende verschlüsselt Abbildung 6. Ende-zu-Ende Verschlüsselung auch über einen dritten Knoten mittels Session-Key SKAB . VIII. C ONCLUSION Für den großen Erfolg von Skype sind viele Dinge verantwortlich. Hier ist vor allem die Peer-to-Peer-Struktur hervorzuheben, die wenige zentrale Instanzen benötigt und so dem Benutzer kostenlose Dienste ermöglicht. Andere Punkte sind die einfache Bedienung, da durch Firewalls und NATs auftretende Probleme fast unsichtbar für den Benutzer umgangen werden, aber auch die kostenpflichtigen Angebote, die in Unternehmen Mehrwert schaffen, wie zum Beispiel Videokonferenzen. Anderseits aber auch Kritikpunkte, wie den Fakt, dass Skype Closed-Source ist. Zwar garantiert Skype die Sicherheit seiner Software, aber wirklich nachprüfen lässt sich das nicht. Fragen, wie zum Beispiel, ob die verwendeten Verschlüsselungsund Authentifizierungsverfahren korrekt implementiert sind und ob sich nicht vielleicht in der Software eine Backdoor oder ein Trojaner befindet, können nicht zufriedenstellend beantwortet werden. Für Wissenschaftler aber ist der größte Negativpunkt, dass sie nicht auf die Erfahrungswerte von Skype im Umgang mit sehr großen Peer-to-Peer-Netzwerken für ihre eigene Forschung zugreifen können. Hinsichtlich zukünftiger Forschungsarbeiten ist einiges zu tun: Die in diesem Paper zusammengefassten Ergebnisse wurden mit alten Versionen von Skype gesammelt und sind nicht mehr aktuell. Diese gilt es aufzufrischen, aber auch neue Aspekte, wie zum Beispiel ob Zentralität im Skype-Netzwerk eine immer größere Rolle spielt, sollten geklärt werden. Hinweise darauf gibt es, da sich ein Benutzer an mehreren SCs gleichzeitig anmelden kann, aber alle Anrufe und Messages an jedem angemeldeten SC erhält. Die Technik, welche zur Replikation eines Ereignisses auf mehreren SCs genutzt wird, ist völlig unbekannt. Natürlich ist es zu verstehen, dass ein Unternehmen sein Know-How schützen möchte. Es wäre jedoch sehr wünschenswert, wenn Skype sich gegenüber den Benutzern und vor allem gegenüber den Forschern auf dem Gebiet Peer-to-PeerSysteme offener zeigen würde. Auch Skype könnte von diesem Prozess profitieren, da sich das Vertrauen in die Software steigern würde und auch Skype selbst von Forschungsergebnissen anderer Wissenschaftler, basierend auf den eigenen Erfahrungen und Ergebnissen, Mehrwert schaffen könnte. C. Peer-to-Peer Key Agreement Um den Austausch von Daten zwischen 2 Knoten zu verschlüsseln, wird zu Beginn einer neuen Session zwischen zwei SCs, A und B, ein 256-bit Session-Key, SKAB , ausgehandelt. Dabei folgen beide einem nicht weiter bekannten Key-Agreement-Protokoll, im Zuge dessen die Identität von A und B verifiziert und SKAB festgelegt wird. Dieser SKAB existiert solange, wie Daten zwischen A und B ausgetauscht werden und noch kurze Zeit danach. Beim Schliessen eines SCs wird der Session-Key gelöscht. D. Verschlüsselung einer Session Der komplette Verkehr einer Session ist verschlüsselt. Der Klartext wird mit einem Geheimtextblock per XOR verknpüft, der aus einem 256-bit-AES-Schlüssel generiert wird. Als Schlüssel wird hier der vorher ausgehandelte Session-Key SKAB benutzt. Wie in Abbildung 6 zu erkennen ist wird auch die Kommunikation über einen dritten SC, der als Proxy dient, Ende-zu-Ende verschlüsselt. Der Proxy-Knoten kann die Datenpakete nicht lesen, da er nicht im Besitz des zwischen A und B ausgehandelten Session-Key SKAB ist. 3S SN Internet B. Registrierung Mit Hilfe der Hashfunktion H wird der zum von Benutzer A gewählten Passwort PA korrespondierende Hashwert berechnet Während der erstmaligen Registrierung eines Benutzers A am LS erstellt dieser für A ein „Identity Certificate“(IC), welches zur Authentifizierung zwischen SCs dient: Mit Hilfe der Hashfunktion H wird der zum von Benutzer A gewählten Passwort PA korrespondierende Hashwert berechnet und auf dem Client als H(PA ) gesichert. Dann erstellt der SC ein RSAKey-Paar SA und VA 3 . Danach stellt der SC eine mit 256-bitAES-Verschlüsselung gesicherte Verbindung zu dem LS her und verifiziert diesen. Im nächsten Schritt sendet der SC A, H(PA ) und VA an den LS. Daraus generiet der LS ein IC und sendet es zurück an den SC [1]. Abbildung 5 visualisiert diesen Ablauf in zusammengefasster Form. sel Public IP Angerufener repräsentiert hier den privaten Schlüssel und V den öffentlichen Schlüs- 45 SKYPE - EIN ÜBERBLICK ÜBER DIE PROTOKOLLE, DAS OVERLAY-NETZWERK UND DIE SICHERHEITSMASSNAHMEN L ITERATUR [1] Tom Berson. Skype security evaluation, 2005. [2] Marina del Rey. Transmission control protocol. Technical report, Information Sciences Institute, University of Southern California, 1981. [3] Biondi; Desclaux. Skype fingerprint. BlackHat Europe, March 2006, 2006. [4] Prof. Dr. Evren Eren Dr. Kai-Oliver Detken. Voip-security - standards, evaluierung und konzeptbeispiele anhand von asterisk, 2007. [5] Ebay. Q3 09 financial highlights. Website, 2009. http://www.scribd.com/ doc/21415469/eBay-Q309EarningsSlides-FINAL; Seite 15; besucht am 01.02.2011. [6] Bonfiglio; Mellia; eMeo; Rossi; Tofanelli. Revealing skype traffic: When random. SIGCOMM’07, August 2007, 2007. [7] Robert Fehrmann. Your are skyping - but how does it work? Seminararbeit - FU Berlin, 2010. [8] Branch; Heyde; Grenville. Rapid identification of skype traffic flows. International Workshop on Network and Operating System Support for Digital Audio and Video, 2009. [9] R. Mahy J. Rosenberg et al. Stun - session traversal utilities for nat. Technical report, Network Working Group, 2008. [10] Guha; Daswani; Jain. An experimental study of the skype peer-to-peer voip system. Proc. of IPTPS, 2006. [11] Ehlert; Petgang. Analysis and signature of skype voip session traffic. CIIT 2006: 4th IASTED International Conference on Communications, Internet, and Information Technology, 2007. [12] J. Postel. User datagram protocol. Technical report, ISI, 1980. [13] J. Rosenberg R. Mahy, P. Matthews. Traversal using relays around nat (turn). Technical report, Internet Engineering Task Force (IETF), 2010. [14] Baset; Schulzrinne. An analysis of the skype peer-to-peer internet telephony protocol. Proceedings IEEE INFOCOM 2006. 25TH IEEE International Conference on Computer Communications, 2005. [15] Skype. Skype Blog: http://blogs.skype.com/de/2010/11/wir_feiern_25_ millionen_gleich.html, besucht am 14.02.2011. [16] Skype. available at http://www.skype.com/intl/de/security/ detailed-security/; visited on February 1st 2011. [17] Skype. P2p telephony explained — for geeks only. Website, 2010. http: //www.skype.com/intl/en-us/support/user-guides/p2pexplained/; besucht am 01.2.2011. 46 ~ ~ 1 ÜBERSICHT ÜBER DATENORIENTIERTE NETZWERKLÖSUNGEN Übersicht über datenorientierte Netzwerklösungen Bastian Laur Abschließend werden die zusammengefasst präsentiert. Zusammenfassung—Heutzutage wird das Internet hauptsächlich genutzt um Daten wie Websites, Musik und Filme zu beziehen. Dafür war es jedoch bei seiner Entstehung nicht gedacht. Das Ergebnis sind zahlreiche Ad-hoc-Protokolle und -Architekturen. Diese aus der Not entstandenen Lösungen haben viele Wissenschaftler motiviert Forschungen anzustellen und Ansätze zu entwickeln, die das Internet den aktuellen Bedürfnissen der Benutzer anpasst. In diesem Text wird eine Übersicht der aktuell populärsten Lösungsansätze vorgestellt. Ergebnisse des Vergleichs II. Ü BERBLICK ÜBER DIE A RCHITEKTUREN In diesem Kapitel geht es darum, einen Einblick in die jeweiligen Ideen und Strukturen der einzelnen Architekturen zu geben. Die Architekturen werden der Reihe nach vorgestellt, wobei jeweils zuerst die Idee und anschließend die Struktur beschrieben wird. Es wird unbedingt empfohlen dieses Kapitel vor den Folgenden zu lesen, da hier Basiswissen vermittelt wird, das für die Kapitel 3 bis 5 benötigt wird. Andernfalls kann es zu Verständnisproblemen kommen. I. E INLEITUNG Das Internet stellt zurzeit wohl das wichtigste Kommunikationsmittel der modernen Gesellschaft dar. Sowohl Firmen als auch Privathaushalte benutzen es um untereinander zu kommunizieren und sich zu informieren. Dabei ist das Datenvolumen in den vergangen Jahren drastisch gestiegen. Wurden vor einigen Jahren lediglich Texte über das Internet verschickt, handelt es sich heutzutage bereits um ganze Filme. Und die Zukunft lässt noch größere Inhalte wie 3D-Filme, virtuelle Arbeitsplätze und Onlinespiele mit High-End Grafik vermuten. Dabei ist es für Benutzer meist uninteressant von welcher Quelle sie ihre Daten beziehen, so lange sie sich sicher sein können, dass die Verbindung sicher und die Daten sowohl verifiziert als auch authentifiziert sind. Der Benutzer legt also primär Wert auf die Daten an sich und nicht deren Herkunft. Das Internet dagegen wurde für Client-Server Verbindungen mit festgelegten Endpunkten entworfen. Es wird also primär auf die Herkunft der Daten und nicht auf deren Inhalt geachtet. Diese Diskrepanz hat viele Wissenschaftler motiviert, datenorientierte Netzwerklösungen für ein modernes, angepasstes Internet zu entwickeln. Die Lösungsansätze „Content-Centric Networking“ (CCN) [9], „A Data-Oriented (and Beyond) Network Architecture“ (DONA) [8], „An Architecture for Content Routing Support in the Internet“ (CR) [7], „Freenet: A Distributed Anonymous Information Storage and Retrieval System“ (Freenet) [6] und „The Publish/Subscribe Internet Routing Paradigm“ (PSIRP) [12] werden in diesem Text vorgestellt. Dabei werden die einzelnen Lösungsansätze und ihre Funktionsweise zunächst im zweiten Kapitel vorgestellt. Anschließend werden sie in den Kapiteln 3-5 jeweils auf einen speziellen Aspekt hin untersucht. Das dritte Kapitel beschäftigt sich damit, wie Benutzer Daten im Internet finden. Das vierte Kapitel beschäftigt sich damit, wie die Daten anschließend vom Host zum Client transferiert werden. Das fünfte Kapitel beschäftigt sich damit, wie neue Daten in das Netz eingespeist und publiziert werden. A. CCN CCN ist eine Netzwerkarchitektur bei der Daten und nicht Hosts adressiert werden. Um das zu realisieren, werden sogenannte CCN-Knoten, Interest- und Data-Pakete eingeführt. Ein Interest-Paket spiegelt eine Datenanfrage wider. Will ein Client also Daten beziehen, sendet er ein Interest-Paket, dass den Namen der Datei und eventuelle Filter enthält. Ein Data-Paket ist die Antwort auf ein Interest-Paket. Es enthält ebenfalls den Namen der Datei, dazugehörige Signaturen und natürlich den Inhalt. Abbildung 1. Data- und Interest-Paket [9] Ein CCN-Knoten ist ähnlich wie ein IP-Router und verfügt über eine Forwarding Information Base (FIB), einen Content Store und eine Pending Interest Table (PIT). Die FIB wird genutzt um Interest-Pakete an potentielle Datenquellen weiterzuleiten. Sie funktioniert ähnlich wie eine IP FIB, allerdings können hier mehrere Datenquellen pro Name gespeichert werden. Der Content Store ist äquivalent zum Puffer Speicher eines IP-Routers, bedient sich allerdings einer anderen Ersetzungsstrategie. Während IP-Router eine MRU Ersetzungsstragie verfolgen, 47 2~ ÜBERSICHT ÜBER DATENORIENTIERTE NETZWERKLÖSUNGEN Will ein Benutzer heutzutage eine Datei beziehen, kennt er von ihr in der Regel lediglich die URL. Diese wird dann an den nächsten Root-Nameserver gesendet, um die Adresse des zuständigen DNS-Servers zu erhalten, z.B. microsoft.com. An Diesen wird anschließend wieder eine Anfrage gesendet, um die Adresse eines nahe gelegenen Servers zu erhalten, der die benötigten Daten enthält. Nun können die Daten angefragt werden. Abbildung 3 veranschaulicht das Vorgehen nocheinmal. orientiert sich der Content Store am LRU oder LFU Algorithmus. MRU wäre nicht sinvoll, da der CCN-Knoten immer über möglichst aktuelle Daten verfügen soll. In der PIT wird gespeichert, welche Interest-Pakete an welche Adressen weitergeleitet wurden. Abbildung 2. CCN-Knoten [9] Abbildung 3. B. DONA CCN-Knoten [7] Beim Content Routing dagegen gibt es sogenannte ”Content Router” (CR). Diese können als normale IP-Router benutzt werden, haben aber darüber hinaus noch eine Routing Tabelle in der Name-To-Next-Hop Einträge gespeichert sind. So kann ein Client eine URL direkt an den nächsten CR senden. Dieser extrahiert aus der URL die Serverkomponente und sucht in seiner Routing Tabelle den ”besten” benachbarten CR um die Anfrage effizient weiter zu leiten. Durch diese Konstruktion entfällt das initiale Auflösen einer URL komplett. Des Weiteren können die CRs selbstständig entscheiden, von wo die Daten am Effizientesten bezogen werden. Will ein Client z.B. ein Video von youtube.com beziehen, können zwischenliegende CRs entscheiden, ob sie die Anfrage an youtube1.com, youtube2.com oder youtube3.com weiterleiten. DONA schlägt eine komplett neue Namensgebung innerhalb des Internets vor. Dazu führt es sogenannte DONA-Namen ein. Sie sind flach, selbstzertifizierend und jede Datei, jeder Service, Host, jede Domain usw. verfügt über einen. Jeder Name hat einen Namensvorsteher, der für jede seiner Dateien einen öffentlichen und einen privaten Schlüssel besitzt. DONA-Namen haben die Form P:L, wobei P der Hashwert des Namenvorstehers ist und L der Name der Datei. Beispiel: ”SHA-1(Bastian Laur):p2pReferat.txt”. Um die globale Einzigartigkeit des Namens muss sich der Namensvorsteher kümmern. Ebenso bestimmt er die Granularität der Namen und welche Server seine Daten anbieten dürfen. Granularität meint hier, dass der Vorsteher bei einer Webpräsenz z.B. lediglich der kompletten Website einen Namen gibt. Er könnte aber auch jede Unterseite einzeln benennen. Welche Server die Daten des Vorstehers anbieten dürfen, bestimmt dieser, indem er sie dazu explizit mittels eines REGISTER Befehls autorisiert (siehe Abschnitt V.B). Des Weiteren gibt es einen FIND Befehl, mit dem Benutzer Daten anfordern können (siehe Abschnitt IV.B). Treffen anschließend die Daten ein, handelt es sich dabei immer um Tripel der Form <Inhalt, Öffentlicher Schlüssel des Vorstehers, Signatur des Vorstehers>. Statt auf DNS-Servern beruht DONA auf einer neuen Art von Knotenpunkten. Den sogenannten ”Resolution Handlers” (RHs). Diese sind für die Verarbeitung der FIND und REGISTER Befehle zuständig. D. Freenet Bei Freenet handelt es sich um die Idee eines verteilten Informationsspeichers, bei dessen Design besonderen Wert auf die Privatsphäre der Benutzer und die Verfügbarkeit von Daten gelegt wurde. Um genau zu sein hat Freenet fünf große Ziele: C. Content Routing Die Content Routing Architektur adressiert speziell das Problem des Routings. 48 • Anonymität sowohl für die Ersteller als auch Konsumenten der Daten soll gewährleistet werden • Die Quelle einer Datei soll bei Bedarf unerkannt bleiben können • Dritten soll es nicht möglich sein den Zugang zu Daten zu blockieren ~ 3 ÜBERSICHT ÜBER DATENORIENTIERTE NETZWERKLÖSUNGEN • • Das Speichern und Routen von Daten soll dynamisch und effizient sein Familienmitgliedern bzw. Arbeitskollegen zugänglich. Jeder Bereich ist mit einer Datei assoziiert, in der gespeichert ist, welche Daten in ihm verfügbar sind und in welchem Unterbereich diese liegen. Das Internet kann bei PSIRP als azyklischer Graph von in Beziehung stehenden Daten betrachtet werden. Jede davon wird durch verschiedene Bezeichner identifiziert und einem Bereich zugeordnet. Die Bezeichner bestimmen die Beziehung der Daten zueinander auf den verschiedenen Ebenen (z.B. Anwendungsebene und Netzwerkebene). Die Bezeichner sind: • Application Identifiers (AID): Wird direkt von Autor und Abonnent genutzt und ist der Bezeichner einer Anwendung. • Rendezvous Identifiers (RID): Wird genutzt um Bezeichner der höheren Ebenen mit den Bezeichnern von niedrigeren Ebenen zu verbinden. Kann auch als Bezeichner einer Datei auf der Netzwerkebene angesehen werden. • Scope Identifiers (SID): Der Bezeichner eines Bereichs. Er wird genutzt um die Erreichbarkeit von Daten zu begrenzen. • Forwarding Identifiers (FID): Der Bezeichner eines oder mehrerer Knotenpunkte. Er wird genutzt um den Pfad von Daten zu bestimmen. Es kann sich lediglich um den nächsten Knotenpunkt oder um ganze Bäume für Multicasts handeln. Jede Datei verfügt typischerweise über mindestens einen AID und mindestens einen SID. Eine Anwendung löst zunächst den AID in einen RID auf. Dieser RID wird anschließend dem Netzwerk übergeben. Da eine Datei immer in einem Bereich liegen muss, ist ein RID auch immer mit einem SID assoziiert. Aus diesem lässt sich dann ein FID ermitteln. In diesem kann die Adresse des nächsten Routers oder auch ein ganzer Pfad gespeichert sein. Somit wird zum Anfordern von Daten nicht mehr die IP Adresse des Endpunktes benötigt. Sämtliche Kommunikation erfolgt direkt über den Dateinamen bzw. den RID. Auf diesem Paradigma soll die komplette Komunikation des Internets aufbauen. Alle Netzwerkfunktionen sollen dezentral sein. Freenet ist als ein adaptives Peer-To-Peer Netzwerk aufgebaut, das aus Knoten besteht, die untereinander Nachrichten versenden um Daten zu erhalten oder zu speichern. Jeder Knoten verfügt über einen lokalen Datenspeicher und eine dynamische Routing Tabelle, in der gespeichert ist, welche Knoten über welche Daten verfügen. Daten werden über Schlüssel identifiziert. Um den Schlüssel einer Datei zu bestimmen gibt es drei Möglichkeiten. 1) Keyword-Signed Key (KSK) Der Name der Datei wird gehasht. Das Ergebnis bildet den Schlüssel der Datei. 2) Signed-Subspace Key (SSK) Da die Methode aus 1) schnell zu Kollisionen führen kann, hat jeder Bereitsteller von Daten die Möglichkeit einen eigenen Namensraum zu definieren, unter dem er seine Daten veröffentlicht. Bei Bedarf können auch mehrere Namensräume definiert und so Ordnerstrukturen abgebildet werden. Um den Schlüssel einer Datei zu ermitteln hasht man zunächst den Bezeichner des Namenraums und den Bezeichner der Datei. Die beiden Hashwerte werden anschließend mit einer weiteren Hashfunktion vereinigt. Das Ergebnis dieser letzten Berechnung bildet den Schlüssel der Datei. 3) Content-Hash Key (CHK) Wie der Name schon sagt, wird hier nicht der Bezeichner, sondern der Inhalt einer Datei gehasht. Das Ergebnis bildet den Schlüssel der Datei. Zum Hashen wird z.Zt. ein 160 Bit SHA-1 Algorithmus verwendet. E. PSIRP III. AUFFINDEN VON DATEN Bei PSIRP handelt es sich um eine schichtenlose Architektur. Hinter ihr steht die Idee, dass eines der größten Probleme des derzeitigen Internets das zu große Vertrauen in den Sender von Informationen ist. Das Netzwerk leitet alles weiter, was der Sender sendet. So kommt es zu Problemen wie Spam Mails und Distributed Denial of Service Attacken. Deshalb verfolgt PSIRP ein Publish/Subscribe Paradigma, bei dem Sender Daten lediglich publizieren und nicht senden können. Empfänger können diese Daten abonnieren (z.B. bei Programmupdates). Zur besseren Strukturierung der Daten soll das Internet in Bereiche unterteilt werden, die zur Einteilung von Daten dienen und Zugriffsbeschränkungen ermöglichen. Zum Beispiel könnte ein Server einen Bereich ”Familie” und einen Bereich ”Arbeit” einrichten. Diese enthalten dann entsprechend nur familienrelevante Daten (z.B. Familienfotos) bzw. arbeitsrelevante Daten (z.B. Sitzungsprotokolle) und sind nur In diesem Kapitel geht es darum, wie die einzelnen Architekturen mit der Anfrage eines Clients nach einer oder mehreren Dateien umgehen. Dabei wird davon ausgegangen, dass ein Client den Bezeichner der Datei kennt, unabhängig davon, ob es sich dabei um eine URL, einen Hashwert, einen eindeutigen Namen oder sonstiges handelt. Mit Hilfe dieses Bezeichners, wird eine architekturspezifische Anfrage gesendet. Um den anschließenden Algorithmus zu erläutern, reicht es meistens aus den Ablauf im nächsten Knotenpunkt zu erläutern. Der Ablauf in den anderen Knotenpunkten verläuft dann äquivalent oder eventuell auch rekursiv. Ist die Anfrage beim entsprechenden Server angelangt und die Daten sind bereit zum Übertragen, gilt dieses Kapitel als abgeschlossen. Wie die Daten anschließend vom Host zum Client übertragen werden, wird im nächsten Kapitel behandelt. 49 4~ ÜBERSICHT ÜBER DATENORIENTIERTE NETZWERKLÖSUNGEN A. CCN Will ein Client Daten finden, muss er per Broadcast ein Interest-Paket verschicken. In diesem ist unter anderem der Name der gesuchten Daten enthalten. Da jeder CCN-Knoten über einen lokalen Speicher verfügt, in dem er Daten zwischenspeichern kann, überprüft er, sobald er ein Interest-Paket empfängt, ob sich die angeforderten Daten bereits in seinem lokalen Speicher befinden. Wenn ja, sind die Daten gefunden und können an den Client zurück gesendet werden. Das Interest-Paket wird anschließend verworfen. Liegen keine entsprechenden Daten im Speicher des CCNKnotens vor, geht er seine Pending Interest Table (PIT) durch, in der alle weitergeleiteten Interest-Pakete gespeichert sind. Findet er in der Liste einen Client, der bereits die gleichen Daten angefragt hat, verwirft er die Anfrage und erstellt dafür einen weiteren Eintrag in der PIT. Da zwei Clients die gleiche Datei angefragt haben, wäre es eine Ressourcenverschwendung beide Anfragen weiterzuleiten. Stattdessen leitet der Knoten nur die erste Anfrage weiter und speichert die zweite Anfrage. So kann er bei einer Antwort diese vervielfältigen und an alle Interessierten weiterleiten. Liegt auch in der PIT kein entsprechender Eintrag vor, leitet der CCN-Knoten das Paket an den entsprechenden Eintrag der Forwarding Information Base (FIB) weiter. Ist kein entsprechender Eintrag vorhanden leitet er das Paket an alle seine Nachbarn, ausgenommen den Client selbst weiter und erstellt einen entsprechenden Eintrag in der PIT. Sollte nach dem Ablauf einer gewissen Zeitspanne keine Antwort kommen, wird der Eintrag wieder aus der PIT entfernt. Abbildung 4. Möglicher Weg einer FIND-Anfrage [8] hat jeder CR eine Menge von Name-To-Next-Hop Einträgen. Dieses geht der CR durch und bestimmt so, an welchen Hop er die Anfrage weiterleiten muss. Abbildung 5. B. DONA Routing [7] Erreicht die Anfrage einen CR der direkt mit dem Zielserver verbunden ist, antwortet dieser mit der Adresse des Zielservers. Dabei geht die Antwort den gleichen Weg wieder zurück. Kommt nach einer gewissen Zeitspanne keine Antwort von dem CR oder Server an den die Anfrage weitergeleitet wurde, geht der CR von einem Fehler aus und die Verbindung wird dann als nicht mehr gültig betrachtet. Die Anfrage kann anschließend zu einem alternativen CR oder Server weitergeleitet werden. Da immer nur zu Servern und nicht zu deren Inhalt geroutet wird müssen dadurch eventuell Ordnerstrukturen in die Server URL eingebunden werden. Aus http://foo.com/bar/index.html wird somit http://bar.foo.com/index.html Will ein Client Daten finden, benötigt er dafür den entsprechenden DONA-Namen. Diesen sendet er verbunden mit einer FIND-Anfrage an den nächsten Resolution Handler (RH). Erhält der RH die Anfrage, prüft er in seiner RegistrationTable, wie weit es von ihm aus bis zu der angeforderten Datei ist und den nächsten RH. Um die Entfernung anzugeben gibt es verschiedene Möglichkeiten, wie die Anzahl der zwischen liegenden Hops, die RTT (Round-Trip-Time) oder auch die physische Entfernung. Anschließend wird die Anfrage an den nächsten RH weitergeleitet. Liegen mehrere Einträge mit identischer Entfernung vor, ist es dem RH überlassen, welchen er zur Weiterleitung wählt. Liegt kein entsprechender Tabelleneintrag für den DONANamen vor, leitet der RH die Anfrage an seinen Parent, sprich den in der AS-Hierarchie übergeordneten RH (z.B. der Provider) weiter. Die FIND-Anfrage des Clients enthält neben der angefragten Datei auch dessen Domain-Namen. Gelangt die Anfrage zu einem RH oder Server, fügen diese ihre eigenen DomainNamen an den des Clients an. D. Freenet Benötigt ein Client Daten, benötigt er zuerst deren Keys. Diese Keys bzw. diesen Key sendet er, verbunden mit einem Hopsto-live Limit an den nächsten Router, der zunächst prüft, ob die Datei bereits in seinem lokalen Speicher vorhanden ist. Ist die Prüfung erfolgreich, antwortet er mit der Datei. Andernfalls leitet er die Anfrage an den Router weiter, der am nächsten an der angeforderten Datei liegt. Dazu sucht er in seiner Routing Tabelle den Key, der dem angeforderten am nächsten kommt und leitet die Anfrage an den zugehörigen Router weiter. Antwortet der Router an den die Anfrage weitergeleitet wurde C. Content Routing Benötigt ein Client Daten, sendet er eine Anfrage an den nächsten Content Router (CR). Wie die RHs von DONA 50 ~ 5 ÜBERSICHT ÜBER DATENORIENTIERTE NETZWERKLÖSUNGEN nicht, oder mit einem Fehler, wird die Anfrage an einen alternativen Router weitergeleitet. Das gleiche passiert, wenn durch das Weiterleiten die Anfrage wieder zum Sender gelangt, also eine Schleife entsteht. Haben alle Kandidaten zu einem Fehler oder einer Schleife geführt, gibt der Router einen Fehler zurück. Abbildung 7. Zusammenarbeit der PSIRP-Komponenten [12] IV. B EZIEHEN VON DATEN In diesem Kapitel geht es um alles, was auf das „Auffinden von Daten“ folgt. Der Schwerpunkt liegt dabei, wie die Antwort des Servers den Weg zurück zum Client findet. Also wie die Knotenpunkte mit der Antwort auf die Anfrage umgehen, die sie soeben weitergeleitet haben. Abbildung 6. A. CCN Erhält ein CCN-Knoten ein Interest-Paket und kann die Anfrage befriedigen, verwirft er das Interest-Paket und antwortet dem Absender mit einem entsprechenden Data-Paket. Handelt es sich bei dem Absender um den Client ist der Vorgang beendet. Handelt es sich bei dem Absender um einen weiteren CCN-Knoten, prüft dieser anhand seiner PIT-Tabelle an wen das Data-Paket weitergeleitet werden muss. Haben mehrere Clients bei ihm die gleichen Daten angefragt, vervielfältigt der Knoten das Paket und leitet dieses an alle wartenden Clients bzw. CCN-Knoten weiter (Multicast). Der bzw. die betreffenden PIT Einträge werden anschließend gelöscht. Der Hinweg des Interest-Pakets ist also der Rückweg des DataPakets. Routing [6] Ist die Datei gefunden, wird sie über den gleichen Weg zurück geleitet. Dabei kopieren sich alle Router, die auf dem Weg liegen die Datei in ihren lokalen Speicher und tragen einen entsprechenden Eintrag in ihre Routing Tabelle ein. B. DONA Erhält ein Server eine FIND-Anfrage, ist in dieser nicht nur der Name der gesuchten Datei, sondern auch der akkumulierte Pfad den die Anfrage gegangen ist, enthalten. Diesen dreht der Server um und gibt ihn seiner Antwort mit. Bekommt ein RH so eine Antwort, bestimmt er die Position seines Domain-Namens in dem Pfad und kann daraufhin den nächsten RH identifizieren. Der Pfad bleibt dabei vollständig erhalten. Denn diesen kann der Client wiederum umdrehen und für seine Antwort an den Server verwenden. E. PSIRP Benötigt ein Client Daten, braucht er dazu deren Rendezvous Identifiers (RIDs). Diese kann er über Freunde, Suchmaschinen, Webseiten, usw. erhalten. Die RID wird an den Router gesendet, der für den Bereich des Clients zuständig ist. Aus der RID kann man den Bereich bestimmen, in dem die Datei liegt. Für diesen Bereich bestimmt der Router dann einen Forwarding Identifier (FID), mit dem er die Anfrage weiterleitet. In dem FID könnte lediglich der nächste Hop aber auch der komplette Pfad zur Datei enthalten sein. C. Content Routing Stellt ein Client eine Datenanfrage an seinen nächsten CR, erhält er als Antwort die Adresse der Daten. Diese kann er anschließend beliebig verwenden, um auf die Daten z.B. mittels HTTP- oder FTP-Verbindung zuzugreifen. 51 6~ ÜBERSICHT ÜBER DATENORIENTIERTE NETZWERKLÖSUNGEN D. Freenet kann. Die Adresse kann dann über Suchmaschinen, Links, Foren, Social Networks, usw. bekannt gemacht werden. Da die Adresse des Servers bereits in den Routern gespeichert ist, sind hier keine weiteren Modifikationen nötig. Erhält ein Router/Server eine Datenanfrage, die er befriedigen kann, Antwortet er mit der gewünschten Datei. Die Antwort geht dabei den gleichen Pfad zurück, den die Anfrage gekommen ist. Sämtliche Router, die auf dieser Strecke liegen, kopieren sich die Antwort, also die Datei, in ihren lokalen Speicher. So können sie bei einer erneuten Anfrage direkt mit der Datei antworten. Gegebenenfalls wird auch die Routing-Tabelle aktualisiert, falls zunächst erfolglos probiert wurde, die Datei von anderen Routern zu beziehen. D. Freenet Will ein Benutzer neue Daten veröffentlichen, muss er zunächst einen zugehörigen binären Schlüssel, wie in II.D beschrieben, erstellen. Anschließend sendet er eine Pre-Insert Nachricht, die den Schlüssel und einen Hops-to-live Wert enthält, an den nächsten Router. Der Hops-to-live Wert gibt hier an, bis zu welcher Tiefe der Router die Datei verteilen soll. Erhält der Router die Nachricht, behandelt er sie ähnlich wie eine normale Suchanfrage. Zunächst prüft er, ob der Schlüssel bereits in seiner Storage Table vorhanden ist. Wenn vorhanden, sendet er die Datei als Antwort. So weiss der Benutzer, dass eine Kollision aufgetreten ist und er einen neuen Key wählen muss. Ist der Key nicht im Storage-Table vorhanden wird die Nachricht wie eine Suchanfrage an andere Router weitergeleitet, die ebenfalls mit der Datei antworten, wenn eine Kollision auftritt. Ist das Hops-to-live Limit erreicht und es wurde keine Kollision entdeckt, bekommt der Benutzer eine ”all clear” Nachricht. Das bedeutet für ihn, dass sein gewählter Schlüssel noch nicht vergeben ist und er beginnen kann die Daten hinzuzufügen. Dazu sendet er wieder den Schlüssel und Hops-to-live Wert. Diesmal als Insert Nachricht. Die Insert Nachricht geht die gleichen Wege, wie die Pre-Insert Nachricht. Nun betrachten die auf dem Weg liegenden Router die Nachricht jedoch nicht als Anfrage, sondern als Antwort. Demzufolge speichern sie die Datei in ihrem lokalen Speicher und aktualisieren ihre Routing Tabellen. Damit gilt die Datei als hinzugefügt. E. PSIRP Stellt ein Client eine Datenanfrage, hinterlässt diese eine ”Brotkrumenspur” bei den Routern, die die Anfrage weitergeleitet haben. Über diese Spur wird die Antwort wieder zurück geleitet. V. H INZUFÜGEN VON DATEN A. CCN Erhält ein Server bzw. CCN-Knoten neue Daten, bleibt diese Information der restlichen Welt zunächst unbekannt. Dadurch können Server beliebig viele neue Daten aufnehmen, ohne dass das Netzwerk unnötig belastet wird, wenn keine Clients an den Daten interessiert sind. Sind die Daten jedoch für die restliche Welt von Interesse, wird es nicht lange dauern bis verschiedene Clients diese anfragen. Sobald ein Client die neuen Daten anfragt, werden diese per Broadcast gefunden und wie unter IV.A beschrieben, übermittelt. Beim Übermitteln des Data-Pakets trägt sich jeder CCNKnoten, der auf dem Pfad liegt in seine FIB-Tabelle ein, von wo er eine Antwort auf die Anfrage bekommen hat. So kann der Knoten eine erneute Anfrage gezielt weiterleiten. E. PSIRP In der zugehörigen Quelle finden sich hierzu keine speziellen Angaben. Allerdings lässt die Architektur darauf schließen, dass ein Server wie gewohnt Daten seinem lokalen Speicher hinzufügen kann. Die Adresse kann dann über Suchmaschinen, Links, Foren, Social Networks, usw. bekannt gemacht werden. Da der zugehörige Bereich des Servers bereits den Routern bekannt ist, sind hier keine weiteren Modifikationen nötig. B. DONA Hat ein Server ein Upate oder eine neue Datei erhalten, die veröffentlicht werden soll, schickt er einen REGISTER-Befehl an seinen lokalen RH. Vorausgesetzt der REGISTER-Befehl weist auf eine neue Datei oder einen kürzeren Weg zu einer bereits bekannten Datei hin, aktualisiert der RH seine Registration-Table und leitet den Befehl an seinen Parent und alle seine Peers weiter, was ein rekursives Update der einzelnen RHs zur Folge hat. Sollte eine Weiterleitung an den Parent oder bestimmte Peers nicht erwünscht sein, kann dies im REGISTER-Befehl vermerkt werden. Ist die Datei, die registriert werden soll bzw. ein kürzerer Weg zu ihr dem RH bereits bekannt, wird der Befehl verworfen. VI. FAZIT Der Vergleich der verschiedenen Architekturen zeigt, dass es bereits einige vielversprechende Ansätze gibt, um einige der derzeitigen Probleme des Internets zu lösen. Dabei haben verschiedene Architekturen verschiedene Schwerpunkte. Bei CCN fällt auf, dass man eine Datei von mehreren Quellen gleichzeitig beziehen kann, DONA will das Namenssystem des Internets revolutionieren, Freenet bemüht sich stark um die Privatsphäre der Nutzer, Content Routing sieht die Latenz beim Umwandeln einer URL in eine IP Adresse und die damit verbundene Anfrage bei einem DNS Server als eines der größten Probleme an. C. Content Routing In der zugehörigen Quelle finden sich hierzu keine speziellen Angaben. Allerdings lässt die Architektur darauf schließen, dass ein Server wie gewohnt Daten seinem lokalen Speicher hinzufügen 52 ~ 7 ÜBERSICHT ÜBER DATENORIENTIERTE NETZWERKLÖSUNGEN Doch trotz der unterschiedlichen Ansätze fiel beim Vergleich auf, dass zwei grundsätzliche Ideen immer wieder aufgegriffen wurden. Zum einen der Gedanke, dass die zwischen Client und Host liegenden Entitäten Daten zwischenspeichern können, um bei einer erneuten Anfrage direkt mit den geforderten Daten antworten zu können und so das restlichen Netz zu entlasten. Und zum andern die Idee, Daten global eindeutige Bezeichner zu geben, die aber nur vom Inhalt und nicht vom Ort der Datei abhängig sind, was beim momentanen System mit URLs nicht gegeben ist. Gerade der zweite Gedanke liegt nahe, wenn man Daten auf mehrere Server verteilen aber trotzdem serverunabhängig darauf zugreifen will. Abschließend lässt sich feststellen, dass keiner der Ansätze den Anspruch erhebt eine vollständige, implementationsfähige und realistische Lösung zu sein. Die hohe Anzahl von Publikationen in den letzten Jahren lässt jedoch vermuten, dass die Forschungen weiter gehen und die Lösungsansätze immer präziser und umsetzungsfähiger werden. L ITERATUR [1] M. Alduán, F. Álvarez, Th. Zahariadis, N. Nikolakis, F. Chatzipapadopoulos, D. Jiménez, and J. Manuel Menéndez. Architectures for future media internet. In 2nd International Conference on User Centric Media, Palma de Mallorca, September 2010. [2] Future Internet Assembly. Why do we need a Content-Centric Future Internet? European Future Internet Portal, 2009. [3] Hari Balakrishnan, Karthik Lakshminarayanan, Sylvia Ratnasamy, Scott Shenker, Ion Stoica, and Michael Walfish. A Layered Naming Architecture for the Internet. In ACM SIGCOMM 2004, Portland, OR, September 2004. [4] M. Caesar, T. Condie, J. Kannan, K. Lakshminarayanan, I. Stoica, and S. Shenker. Rofl: Routing on flat labels. In ACM SIGCOMM 2006, Pisa, Italy, 2006. [5] D. Cheriton and M. Gritter. Triad: A new next-generation internet architecture. In 3rd USENIX Symposium on Internet Technologies and Systems, San Francisco, California, USA, March 2001. [6] Ian Clarke, Oskar Sandberg, Brandon Wiley, and Theodore W. Hong. Freenet: A distributed anonymous information storage and retrieval system. Lecture Notes in Computer Science, 2009:46+, 2001. I, 6 [7] Mark Gritter. An architecture for content routing support in the internet. In 3rd USENIX Symposium on Internet Technologies and Systems, San Francisco, California, USA, March 2001. I, 3, 5 [8] T. Koponen (ICSI/HIIT), A. Ermolinskiy M. Chawla, B.-G. Chun, K. H. Kim (UCB), S. Shenker (ICSI/UCB), and I. Stoica (UCB). A data-oriented (and beyond) network architecture. In ACM SIGCOMM 2007, Kyoto, Japan, August 2007. I, 4 [9] V. Jacobson, D. Smetters, J. Thornton, M. Plass, N. Briggs, and R. Braynard (Palo Alto Research Center). Networking named content. In CoNEXT 2009, Rome, Italy, December 2009. I, 1, 2 [10] John Kubiatowicz, David Bindel, Yan Chen, Steven Czerwinski, Patrick Eaton, Dennis Geels, Ramakrishna Gummadi, Sean Rhea, Hakim Weatherspoon, Westley Weimer, Chris Wells, and Ben Zhao. Oceanstore: An architecture for global-scale persistent storage. In ASPLOS-IX Proceedings of the 9th International Conference on Architectural Support for Programming Languages and Operating Systems, Cambridge, MA, USA, November 2000. [11] U. Lee, I. Rimac, and New Jesey U.S.A. V. Hilt (Bell Labs, AlcatelLucent. Greening the internet with content-centric networking. In eEnergy 2010, 1st International Conference on Energy-Efficient Computing and Networking, University of Passau, Germany, April 2010. [12] Kari Visala Sasu Tarkoma, Mark Ain. The Publish/Subscribe Internet Routing Paradigm (PSIRP): Designing the Future Internet Architecture, pages 102–111. IOS Press, 2009. I, 7 [13] T. Zahariadis, P. Daras, J. Bouwen, N. Niebert, D. Griffin, F. Alvarez, and G.Camarillo. Towards a Content-Centric Internet. IOS Press, April 2010. 53 ~ 1 TRAFFIC ANALYSIS OF P2P APPLICATIONS Traffic Analysis of p2p Applications The An Binh Nguyen [19] discussed three reasons based on domain knowledge, why it is necessary for P2P traffic analysis. First of all for network operators, a large distributed amount of traffic from P2P may reduce the performance of the whole network, which is why network operators want to analyze and monitor behaviors of such applications, in order to adjust network under different circumstances. . Second of all, for P2P application designers, it’s important for them to evaluate their implementation and do improvements, so comes the role of P2P traffic analysis. For end users it might be interesting to control incoming and outgoing traffic of their systems, to be able to detect suspicious attempts of P2P applications and also be able to balance load in their local machine. In summary the quality of service, load balancing, P2P based attack prevention and detection encourage the need of P2P analysis and monitoring. In the early day, monitoring was often done in centralized manner, where a centralized monitoring entity exists to monitor the network. The scale of monitoring has now become larger. For a big scale P2P network, a centralized scheme is inefficient. Usually a decentralized or hybrid monitoring scheme is preferred in P2P applications. Some approaches were introduced in [12] [20] [1]. To detect particular behaviors of P2P networks, particular metrics should be considered. Some of metrics can be named such as: flow size, flow inter-arrival time, duration, number of destination ports, traffic volume etc. In this paper we will see, how these metrics are used in research works. There have been many contributions in analyzing P2P traffic. In this paper some methods will be considered and reviewed to see the developments of P2P traffic analysis methods and their future. In order to analyze P2P traffic the first thing needs to be done is distinguish P2P traffic from the other traffic. The first generation of P2P applications was not so complex, they often used default ports and default protocols, thus it was able to look into payload to determine P2P traffic. This so-called payload based technique was mentioned in [18] [13] [14] [2]. Through time P2P application got more complex. They can even disguise themselves as usual traffic by randomizing port or use default ports of other traffic. P2P applications can also encrypt their transmitted content, so a fully payload-based technique is not always possible. Using payload-based technique we can detect known P2P traffic, but to discover unknown P2P traffic and overcome many disadvantages of payload-based non-payload-based techniques are necessary. Non-payload techniques or heuristic based techniques are based on common behavior patterns to identify P2P traffic due to nature of P2P. Common characteristics of P2P traffic are, for instance the use of both TCP/UDP, same number of distinct ports and destinations connect to host [13], [14], peer node acts in both roles as “client“ and “server“ [6]. Other approach based on machine learning to learn the behavior of P2P traffic is applied in [8], but it is still in development and in Abstract—The popularity of P2P applications is continued to grow. Parallel to this growth, P2P protocols are getting more complex. Nowadays the problem of Quality of Service is often in question of P2P research field. A peer node has to store data, receives queries from other peer nodes, and distributes its content for other peers. Such processing peer node can generate bulky traffic to the network. Also for each node we have to reserve enough resources for this peer node to function. P2P is not only used in many legal applications, but also finds its place for illegal doing e.g., DDoS attack. The need of P2P application analysis and traffic monitoring therefore have become mandatory. P2P traffic needs to be analyzed in order to optimize load of P2P traffic. When P2P node consumes too much resources, we need to monitor P2P traffic and detect this problem in runtime, in order to perform load balancing in right time and prevent corruption of P2P networks. Monitoring P2P traffic also helps prevent malicious attempt, for instance DDoS attack based on P2P. There have been many works for P2P traffic analysis. This paper considers some of them, describes their approaches and tries to address advantages and disadvantages of each method. We analyzed the approaches and believe that each approach can be useful for a particular interest. Also machine learning would be more important in the future for P2P traffic analysis. Monitoring P2P traffic is still a challenge due to dynamic properties of P2P networks, a great number of new P2P applications and the big scale of the network. Monitoring of P2P is often decentralized. We tend to believe hybrid approach (combination of both centralized and decentralized) would be a good solution for P2P monitoring, which compromise advantages of both centralized and distributed monitoring scheme. I. I NTRODUCTION P2P is a network architecture, where a group of computer users can communicate with each other and directly access files from other’s hard drive in a decentralized manner. P2P introduces some advantages compared to other classic architectures such as decentralized organizing systems, high scalability. Therefore P2P has been widely used in many applications for file sharing, content distribution (BitTorrent, EMule etc.), chat, Voice over Internet protocol (VoIP) e.g. Skype and also for malicious attempts, for instance malware distribution (botnet) or DDoS. The growth of P2P implies a lot of consequences. Basher et al. [4] analyzed network traffic, which were generated from classic web applications and from P2P applications. They found out that compared to web traffic, P2P traffic contributes many large-sized and many small-sized packets. P2P flows also last longer, inter-arrival time between two P2P flows is longer than web traffic, packet size of P2P is often larger [17]. These findings indicate, that a large amount of network traffic is contributed by P2P traffic. This result is confirmed in [2], [8], [10], [14], [18]. Due to decentralized manner, P2P might be deployed not only to share illegal file contents, but also to attempt DDoS attacks [7], [22]. Because of its complexity and widely used, it has become mandatory to analyze P2P traffic. Torres et al. 54 2~ TRAFFIC ANALYSIS OF P2P APPLICATIONS some cases inefficient. But use of machine learning to extract traffic patterns of P2P can be further improved and would get more efficient in the future. The rest of the paper is structured as follows. The second section will summarize analysis methods. This section contains of three main parts, how P2P traffic can be identified, how can we monitor P2P traffic and how P2P traffic were analyzed in research papers. The third section will discuss the summaries from this paper. The last section is the conclusion. characteristics. These kinds are for the time being outside scope of this paper, and should be considered in future papers. For an overview of overlay characteristics of P2P streaming applications refer in [21]. In order to identify P2P traffic, two main approaches are possible. The paper will introduce 6 methods which will be called MI1, MI1’, MI2 to MI5 (stand for Method for Identification). Methods can be categorized as payload-based, non-payload-based (or heuristic-based) and machine learning technique. Payload-based technique is applied to identify traffic, where it is possible to look into the content of network traffic. Non-payload-based technique or heuristic-based technique makes use of common characteristic to identify P2P traffic. A classification of introduced methods and their category can be found in Figure 1. MI1 and MI1’ are payload-based technique. MI2 to MI4 are heuristic-based technique. The last introduced method MI5 is machine learning technique. For further details of each method, refer in next coming text. II. A NALYSIS M ETHODS A. P2P Traffic Identification Although P2P applications are heterogeneous in term of specification of their protocols, they still have many things in common. The nature of P2P is equality among peers. In file sharing P2P applications, each peer gets a part of wanted data from other peers, and offers a part of this data for other peers as well. It implies the roles of “server“ and “‘client“. A peer must therefore satisfy the function of both roles. This nature indicates some common characteristics of P2P applications. These characteristics can be made used for identifying P2P traffic, especially when it comes to unknown P2P protocols. Some of the most used characteristics of P2P traffic can be listed as followed: • C1: Nowadays P2P applications use both TCP/UDP to exchange control message and data. UDP is often used for queries, control messages or responses, while TCP is often used for transmission. Because of that IP pairs which use both TCP/UDP should be the first candidate of P2P traffic network. This characteristic is widely used in almost every heuristic based P2P identifying methods. • C2: In many P2P applications the number of distinct ports is equal to the number of distinct destinations, since peer node often choses an arbitrary port to connect to other nodes, which implies another heuristic for identifying P2P flows. • C3: Many P2P applications can disguise their used ports as default ports from other web traffic. Still the difference is web traffic tends to open many parallel connections to host. On the contrary P2P data transmission consists of many consecutive connections, there is at most one connection at one time. Based on this heuristic it is able to separate disguised P2P from web traffic • C4: P2P is in major used for file sharing, P2P traffic often contains many large sized flow or long duration flow. • C5: In P2P file sharing, the file is divided in many smaller chunks. Therefore if source and destination peers use fixed ports for data transfer, it should exist many identical flows with similar flow identities <SourceIp, SourcePort, DestIp, DestPort, protocol, etc.> • C6: A set of classic P2P applications often use fixed ports to transfer data. This heuristic is despite of its simplicity quite useful to identify the well-known P2P traffic in the first step. Besides the use of P2P for file sharing, chat, P2P is also used for streaming data. The characteristics of these kinds are quite different to P2P file sharing applications, especially for overlay • • 55 MI1: Karagiannis and Broido [13] proposed a payloadbased method to identify P2P traffic, using C6. The method consists of three steps. The first step is to compare source port and destination port of a flow to a table of well-known P2P applications. This step is quite common since it is quite simple to perform this step, and these well-known P2P applications are often well-documented. With this all known P2P applications with fixed ports are identified. The second step is to look into the payload of each packet in a flow and compare these strings against a table of known protocols. In case of a match we can identify the flow to the corresponding known P2P applications. The third step considers the host IPs which were identified as P2P flows from step two, and classifies all flows that contains one of these identified IP addresses as “possible“ P2P. In this step all known services such as E-mail, DNS, FTP are excluded to reduce the false positive rate. MI1 is simple but exposes many drawbacks. MI1 can only identify well-know P2P applications, unknown P2P traffic are still not to be identified. Payload matching is still difficult since the limit size of capturing packets doesn’t allow to fully look into payload. In case applications encrypt the payload, it will be impossible to look into the true content. Another problem of this approach is privacy issue. There is privacy law, which often forbids researcher to look into real content of network traffic. MI1’: Technique of MI1 was improved in [14]. MI1’ holds the first two steps as in MI1 with two additional steps to improve step three. In MI1’ step three will consider UDP flows and step four will consider TCP flows. As in MI1, in step three all source and destination IPs of UDP flow will be hashed in a table, and all the flows, which contain IP address from this table will be considered as “possible“. Step four does the same thing as in step three for all TCP flows, to retrieve the second IP address tables. For these two steps the exclusion of web traffic as in MI1 still remains to reduce the false rate. As for advantage MI1’ uses not only C6 but also ~ 3 TRAFFIC ANALYSIS OF P2P APPLICATIONS Fig. 1. • • Classification of P2P Identification Methods C1. Step three and step four help to partially overcome limit packet size problem and a better “upper bound“ for identified P2P traffic. Still for general the upper bound of these payload-based technique is still too great, and fully overcome the problem of encryption is still far from possible. MI2: As seen from these two payload-based techniques, there are still many drawbacks with such techniques. Fully looking into a packet is due to privacy issue usually forbidden, and the need of identifying new P2P traffic became greater. Therefore the creation of non-payloadbased techniques was necessary. In [13] the authors, besides payload-based approach, also contributed a nonpayload based technique (MI2) of identifying P2P traffic, using heuristics based on characteristics C1 and C2. Based on C1 all IP sources and destinations which concurrently use both TCP/UPD during a time t will be considered as P2P. All well-known other services like NETBIOS, IRC, DNS, which have similar behaviors will be excluded. For C2 all flows which have the difference of numbers of distinct connected IPs and distinct used ports larger than a threshold (in this paper 10) will considered P2P flows. This technique compared to MI1 and MI1’ provides a new way to efficiently identify new kind of P2P traffic. But still the false positive problem is an opened question. The first heuristic of this method depends on viewed time t, the ratio of UPD and TCP in a P2P application may vary. For the second heuristic if threshold is chosen too big or too small, it can affect the result, thus it may still generate false determination of non-P2P traffic. MI3: Constantinous and Mavrommatis [6] used the same idea as MI2, which is based mainly on C1 and C2 to discover new P2P traffic ports. Their implementation is • • 56 a little different to MI2. MI3 introduced term “diameter“. Diameter is used to measure the interaction rate between peers. Each host is assigned a level, the level means the time when host receives first connection from another, or first time to be “touched“. A host is assigned one level greater than its “parents“. For the classification, the number of hosts that acts in both roles “server“ and “client“ at a port should exceed a threshold thus satisfies C1, network diameter should greater than two, and number of host, which are present in network should also exceed a threshold. Advantages and disadvantages of MI3 is similar to MI2, since it uses the same characteristics and quite the same idea. MI4: Perenyi et al. [18] used all mentioned characteristics to identify P2P traffic. In preparation MI4 tries to exclude all web traffic that have the same behaviors with TCP/UPD based on their default ports. The first step is identify flow with characteristic C1. The second step tries to refine separation from web traffic and P2P traffic which disguise as web traffic using C3. Some of flows can be identified using default ports(C6). C5 is then applied to identify identical flows which might belong to P2P applications. The next step is empirical experience of the authors. They found out, that if an IP uses TCP/UPD port more than 5 times in a period time, this IP,port indicate P2P traffic. The last step chooses flow where flow size is larger than 1MB or flow duration is longer than 10 minutes. Advantage of this technique, like other heuristicbased technique is to be able to discover unknown traffic, but also introduces less accurate results, however because of its consistencies, it is still suitable for P2P traffic analysis. MI5: Another approach should be mentioned is machine learning based technique. An example of such approach 4~ TRAFFIC ANALYSIS OF P2P APPLICATIONS TABLE I C HARACTERISTICS VERSUS P2P IDENTIFICATION METHODS Method Identification MI1/MI1’ MI2 MI3 MI4 MI5 C1 C2 x x x x x x Characteristics C3 C4 C5 x x x x misidentification, especially in case P2P is behind NAT. In case P2P applications use tracker like BitTorrent, the behaviors of monitoring agent (crawl and monitor all) is likely to be identified as attempt of denial of service attack and would be blocked. The risk of exposing P2P agent is therefore high, which implies task for designing such monitoring agents, is to assign these agents multiple IP addresses. The monitoring scheme in [5] can be classified as a hybrid scheme. The authors proposed monitoring approach for chord based protocols. In this approach the overlay of P2P network is divided in many subparts. Each subpart is monitored and measured as desire. Data are sent back to a central collecting point. One distributed monitoring scheme was P2PML, which can be deployed not only in P2P monitoring, but also in monitoring web services as well. This idea of distributed monitoring was introduced in [1]. The monitor system itself is a P2P network that coexists with monitored P2P network. Each peer can be member of monitoring and monitored network. The system uses a declaration subscription language, P2PML to describe monitoring tasks. Monitoring tasks are described using P2PML, a description language based on XML. Thus is easy to implement and adapt, since XML is a widely-used standard. Peers in monitored P2P system observe activities, publish information stream. A peer may host alerter, which intercepts inbound and outbound and detects changes, stream processor which does operation on streams, publisher which publishes stream generated from stream operation. When a user is interested in a specific monitoring task, he can subscribe to a channel, which will publish the stream. The filter bases on Atomic Event Set Algorithm and YFilter Algorithm to match pattern. By defining condition the desired information can be filtered. A subscriber, who is interested in a part of network can subscribe to a channel, which was published by monitoring peers. Although this idea is interesting for monitoring task not only for P2P systems, but also for web services call, it still has drawbacks. Alerters have to be implemented for each type of monitored system. Furthermore for analysis purpose the use of another P2P system as monitoring system may introduce confusion. As stated in introduction for P2P monitoring task, distributed and hybrid schemes are often applied. Other distributed monitoring scheme can be found in [9], [11], [15] C6 x x can be found in [8]. MI5 uses clustering technique, defines cluster with interesting metrics, such as flow size etc. MI5 only needs statistic of unidirectional flow. With the help of training data, which were achieved from both payload-based and non-payload-based techniques. For each flow it can determine to which class (P2P, or other web traffic) the flow should belong. MI5 is also useful to learn the new behaviors of P2P traffic, as well as classify them. MI5 is still in development, since MI5 concentrated mainly on TCP and lets UDP out of concern. Through empirical experiments MI5 works better for better for “server-to-client“ statistic. The result from “server-toclient“ direction often has higher accuracy. In the future work, the authors intended to extend their technique, so that it will be able to classify UDP traffic and also work better with “client-to-server“ direction. For the end of this section, a table for an overview which characteristics were used by which methods, is provided in Table I. For recall MI1 and MI1’ are payload-based technique. They used the port-based characteristic and content of the traffic to identify P2P traffic. C1 and C2 are the most common used characteristics in heuristic-based methods. The machine learning based method MI5 often uses the statistic of large flow size to identify P2P. B. P2P Traffic Monitoring Monitoring is an important task not only for P2P traffic analysis, but also for administration purpose. Monitoring scheme in general can be classified in three categories, centralized scheme, decentralized scheme (distributed scheme) and hybrid scheme [16]. Normally for monitoring purpose, monitoring agent is needed. The centralized monitoring scheme results accurate information. But centralized scheme is often not scalable, since a central entity has to take responsible to monitor the whole network. Decentralized or distributed scheme can overcome the problem of scalability, but introduces other problems. In such scheme peers are responsible for monitoring each other. This can be a problem, if one peer provides false information, it can affects the global conclusion for the state of the network. Also a peer can attempt malicious doing, such as injecting malicious code etc. A better solution for monitoring problem would be a hybrid scheme, where we should use centralized scheme if possible, and decentralized if not. The combination of two major monitoring schemes might overcome disadvantages of each of them. The current state of P2P monitoring is still not perfect. The risk of false positives is still high. Use of arbitrary address in P2P applications makes it difficult to identify peer and cause For the end of this section, a list of common used metrics are provided. In section of traffic analysis we will see, how these metrics are differently considered in each different work. • • • • • • • 57 Traffic volume or throughput (traff_vol): The whole P2P traffic volume, which was captured. flow size (flow_size): Size of P2P flow flow duration (flow_duration): Time begins when one P2P flow started, until this flow ends. flow inter-arrival time (flow_inter_arr_time): Time between each arrival of two consecutive P2P flows. packet size (pkt_size): size of a packet, which belongs to P2P traffic. Live connection or number of TCP connections from a host (live_conn): Number of TCP connections, which belong to P2P traffic in a period of time Geographical distribution of peer (geo_distr): how peers ~ 5 TRAFFIC ANALYSIS OF P2P APPLICATIONS • • • are geographically distributed. Bit rate (bit_rate) P2P population or number of peers (peers_popu): Number of P2P peers. Popularity distribution (how traffic is distributed among IP address) (poplr_distr): the number of distinct IP addresses among peers. C. P2P Traffic Analysis Traffic analysis generally consists of identification, choice of interesting metrics (filter of them from the identified traffic) and the analysis result based on the metrics. In the following the methods will be called as MA (method of analysis) • MA1: Karagiannis et al. [14] used MI1’ to identify P2P traffics and collect P2P traffic traces. The traces were collected by monitoring traffic of two commercial backbone links San Jose - Seattle in US. The authors collected the traces and learned P2P traffic characteristics, by measuring the following metrics: bitrate of P2P traffic, population of P2P traffic (number of distinct IP mapped to Autonomous systems), traffic volumes of P2P traffic relative to all traffic columns. With their results the authors also concluded that P2P trend changed but never died. Since MI1’ is payload-based technique, as described above, it can not identify all P2P traffic, but the identifiable P2P protocols were in time the most traffic contributed. This means for the purpose of the paper, the method was sufficient. • MA2: Louis et al. [17] contributed an early analysis work in field of P2P traffic analysis. MA2 used only characteristic C6, compared flow ports with famous applications default ports, to identify P2P traffic. Although it was restricted only to some famous P2P applications, but these application in time contributed most P2P traffic to the Internet. Furthermore MA2 only wanted to analyze the most famous protocols. MA2 captures all TCP packets between BAS 1 and the IP Backbone. MA2 analyzed and also compared some famous P2P protocols such as eDonkey, BitTorrent, FastTrack, WinMX. These protocols are compared with regards to the following metrics: traffic volumes, connection duration, geographical distribution of peers, termination of connections, whether the connection ended normally, connectivity of peers (number of local peers and non-local peers) and from this result described the different behaviors of each application type. MA1 still had many restrictions, w.r.t. P2P identification. With the growth of P2P network nowadays, MA2 is not really efficient anymore. Nevertheless MA2 gave us many interesting behaviors of P2P traffic in early time, which is also contribution for P2P traffic analysis. • MA3: Baset et al. analyzed the most famous P2P VOIP Skype in [3]. Since Skype is not open-sourced, its protocol is not clear. Skype’s used port can be altered, so it is impossible to use approach like in MA1 or in MA2. Instead of monitoring to capture traffic of skype, 1 Broadband • • • Access Server 58 MA3 uses shared library and system call redirection technique to overload shared library functions. With the overloaded share functions, when Skype client calls a function from shared library (this is applied for Linux OS) the called function can redirect the input parameter to output. Thus it is able to get interesting information from Client behaviors, targeted modify calls and then analyze interesting results/behaviors from called parameters. In this work the authors are interested in protocol aspect of Skype client. One common viewed metric is also analyzed here, namely geographical distribution. MA3 is an efficient approach if using Linux as OS for analysis purpose, since the manipulation of called share library is nature part of Linux OS. But with approach like MA3, other measurements like flow size, flow duration etc. will not be considered. Only behaviors of peer client is analyzed. The characteristic of overlay network in this case is missed. MA4: In [18] data for analysis were collected from two Cisco routers at one large Internet provider in Hungary. MA4 used NetFlow to collect traffic flow information and also some packet-level information. The method MI4 was applied to identify P2P traffic. MA4 focused on comparison between P2P and non-P2P traffics. Therefore following metrics were considered: P2P traffic volume compared to total traffic, number of P2P users/total active users, and in order to reduce error MA4 associated an individual IP address to a user, flow size and flow duration, packet size, thus to analyze the properties of P2P traffic in data transmission and the differences between P2P protocols, and popularity distribution. MA4 used MI4 which is easy to implement, like other heuristicbased techniques, MI4 might introduce false positives. The author proposed a solution by assigning individual IP address to a user, which might reduce accuracy. But for interest of Internet Provider, and the whole purpose for comparison P2P and non-P2P traffic, this less-accuracy can be tolerated. MA5: Basher et al. [4] dedicated their work to compare P2P traffic and network traffic. The traces were collected by using lindump, which monitors ports and captures all TCP/IP packets from the commercial Internet link of the university Calgary. For identification of P2P flows/applications MA5 uses port-based and payload signature-based technique. MA5 considered flow size, flow duration, flow inter-arrival time, maximum number of TCP flows from a single host, transfer volume and geographic distribution. As other methods the less-accuracy problem of signature-based technique is not a non-tolerated problem. The traces in MA5 were not collected continuously, thus might not cover all abnormal behaviors of traffics, but either way the most common characteristics of P2P are already covered. MA6: Torres et al. [19] focused on analyzing and finding undesirable behavior from P2P traffic. All TCP and UDP traces were collected by using Tstat at a MiniPoP router, where all traffics go into Internet backbone. Tstat is a 6~ TRAFFIC ANALYSIS OF P2P APPLICATIONS TABLE II C OMMON USED METRICS VERSUS A NALYSIS M ETHODS traff_vol flow_size flow_duration flow_inter_arr_time pkt_size live_conn geo_distr bit_rate peers_popu poplr_distr MA1 x MA2 x MA3 x MA4 x x x x x x x x x MA5 x x x x x x many works for P2P traffic identification, they can be general categorized as payload-based, non-payload based and machine learning based methods. Non-payload based has advantage, that it might be able to discover new P2P traffic, which is also a concerned question for analysis. But non-payload based techniques introduce false-positives. In fact four from six described methods chose payload-based techniques, because they only concerned about particular well-know protocols. Payload-based can not discover new P2P traffics, but it can guarantee the correctness of those identified. Therefore the choice of identification method must primarily base on purpose of each research. In this case payload-based is better, but in other case the use of non-payload based it recommended. Early works in P2P analysis focused on comparison between P2P traffic and web traffic, in order to determine the trend of P2P. Especially the traffic volume at the beginning was concerned, as for Internet Provider it would be critical to keep their network at good performance. Then the concentration moved to learn the characteristic and behavior patterns of P2P traffic. From this point on P2P protocols get more complex, as for the trend of network analysis this paper found the idea based on domain knowledge a good approach for future work. For network operator, it is mandatory to be able to monitor P2P traffics, to optimize P2P networks and prevent P2P networks from corruption. Monitor of P2P network is still a big challenge due to large scale of network and dynamic properties of P2P protocols. We have seen some solutions for this problem, but it still has to be developed. A general monitoring approach for all P2P traffic is still a big challenge. Hybrid monitoring scheme would be the solution for monitoring P2P networks. To learn the complex behaviors of P2P traffic machine learning is a good approach. The quality of machine learning process is dependent from the quality of the samples, i.e. a sample set from payload-based identified traffic can be fed in order to learn the behaviors pattern of these particular protocols, or sample set of both payload- and non-payloadtechniques can be fed to learning process. The training data can be used to detect and learn behaviors. By using machine learning process it is also able to learn about undesired behaviors of P2P traffic by choosing suspicious cluster. With this notice we tend to believe that further works in P2P analysis should use machine learning more, as P2P is getting more complex. MA6 x x x x x tool, which can capture flows and perform Deep Packet Inspection, thus enables users to identify known P2P traffics based on payload. MA6 focused on EMule, Kad, and KadU (a modified version of Kad). These 3 application contribute the most traffic to the monitored network. Signatures of these application were already mentioned in other works, therefore classification of these three were not a problem. MA6 applied a machine learning approach, density based algorithm to divide the data set in subsets (clusters), in which the data have similarity. Normally noise region, which was generated after the last step would be considered interesting. However in this case the authors of MA6 chose to select interesting regions based on domain knowledge of network operator, P2P developer and P2P users. MA6 considered metrics as dependent from flow initiator and independent from flow initiator. Metrics dependent from flow initiator are flow average duration, number of active flows, ratio of outside connections to total numbers, bit rate, average packet size, ratio of byte sent and byte received. Metrics dependent of flow initiator are total connection attempts, ratio of flows to the number of distinct destinations, number of peers, number of destination ports, also number of destination ports which are under 1024 was considered. Using signature-based technique for identification, MA6 limited it’s work only with three P2P protocols. MA6 analyzed traffic based on domain knowledge, which is better for classification of behaviors at host level, and the way MA6 chose interesting region can be applied in other works as well. Table II is a summary of corresponding metrics in each analysis methods. We can recognize from the table, that the use of each metric differentiates in each work. The reason is, each work has it’s own focus on a particular direction. Of all metrics, the metric traffic volume of P2P was the most considered one. It is also a sign, that P2P traffic is getting larger over time and this naturally raises concern of P2P network administrator and researcher. IV. C ONCLUSION This paper considered the problem of P2P traffic analysis and summarized some methods. For a better understanding, the methods were viewed as for identification, monitor/filter and analysis tasks. We reviewed the identification methods in two major approaches, payload-based and heuristic-based methods. Furthermore one approach for identification based on machine learning was reviewed. We stated the classification of monitoring scheme, named the problems and difficulties of P2P monitoring. Afterwards we listed the most common concerned metrics, which can be used for monitoring tasks as well as analysis purposes. We also summarized how these metrics were used in analysis researches. We showed that for III. D ISCUSSION As we have already seen, the common template of P2P traffic analyzing is identify P2P traffic from other traffics, filter them, chose the appropriate metrics, which should be interesting with regard to each particular work, evaluate the worked results from the collected data. There have been 59 ~ 7 TRAFFIC ANALYSIS OF P2P APPLICATIONS each particular analysis purpose, appropriate metrics should be chosen. The paper also discussed possible advantages and disadvantages for each approach. As result, each approach despite of its drawbacks, can find its own usefulness depends on purpose of each work. For last word we also believed that machine learning would become more and more important in this study field. [21] Long Vu, Indranil Gupta, Klara Nahrstedt, and Jin Liang. Understanding Overlay Characteristics of a Large-scale Peer-to-Peer IPTV System. Computer, V, 2008. II-A [22] Ping Wang, S. Sparks, and C.C. Zou. An advanced hybrid peer-topeer botnet. IEEE Transactions on Dependable and Secure Computing, 7(3):235–127, April 2008. I R EFERENCES [1] Serge Abiteboul. Distributed monitoring of peer to peer systems. Proceedings of the 9th annual ACM, pages 41–48, 2007. I, II-B [2] Genevieve Bartlett, John Heidemann, and Christos Papadopoulos. Estimating p2p traffic volume at USC. ISI-TR-645, USC/Inform., (June), 2007. I [3] Salman A. Baset and Henning G. Schulzrinne. An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol. Proceedings IEEE INFOCOM 2006. 25TH IEEE International Conference on Computer Communications, pages 1–11, April 2006. II-C [4] Naimul Basher, Aniket Mahanti, Anirban Mahanti, Carey Williamson, and Martin Arlitt. A comparative analysis of web and peer-to-peer traffic. Proceeding of the 17th international conference on World Wide Web WWW ’08, page 287, 2008. I, II-C [5] Andreas Binzenhöfer, Gerald Kunzmann, Robert Henjes, Andreas Binzenhbfer, and Am Hubland. A Scalable Algorithm to Monitor Chordbased P2P Systems at Runtime Institute of Computer Science Institute of Communication Networks. Processing, 2006. II-B [6] Fivos Constantinou and Panayiotis Mavrommatis. Identifying known and unknown peer-to-peer traffic. In Network Computing and Applications, 2006. NCA 2006. Fifth IEEE International Symposium on, pages 93– 102. IEEE, 2006. I, II-A [7] Karim El Defrawy, Minas Gjoka, and Athina Markopoulou. BotTorrent : Misusing BitTorrent to Launch DDoS Attacks. Analysis, pages 1–6. I [8] Jeffrey Erman, A Mahanti, and Martin Arlitt. Identifying and discriminating between web and peer-to-peer traffic in the network core. on World Wide Web, pages 883–892, 2007. I, II-A [9] B. Gedik. PeerCQ: a decentralized and self-configuring peer-to-peer information monitoring system. 23rd International Conference on Distributed Computing Systems, 2003. Proceedings., pages 490–499. II-B [10] Takeo Hamada, Kaoru Chujo, Xiang Ying Yang, and Takafumi Chujo. Peer-to-peer traffic in metro networks: analysis, modeling, and policies. Network Operations and, 2004. I [11] R. Hofmann, R. Klar, B. Mohr, a. Quick, and M. Siegle. Distributed performance monitoring: methods, tools, and applications. IEEE Transactions on Parallel and Distributed Systems, 5(6):585–598, June 1994. II-B [12] Shay Horovitz. Collabrium: Active Traffic Pattern Prediction for Boosting P2P Collaboration. Technologies: Infrastructures for Collaborative, 2009. I [13] Thomas Karagiannis and Andre Broido. Transport layer identification of P2P traffic. Proceedings of the 4th ACM, pages 121–134, 2004. I, II-A [14] Thomas Karagiannis, Andre Broido, and Nevil Brownlee. Is p2p dying or just hiding? Global, 2005. I, II-A, II-C [15] M. Karakaya, I. Korpeoglu, and O. Ulusoy. A distributed and measurement-based framework against free riding in peer-to-peer networks. Proceedings. Fourth International Conference on Peer-to-Peer Computing, 2004. Proceedings., pages 276–277. II-B [16] B. Landfeldt, P. Sookavatana, and a. Seneviratne. The case for a hybrid passive/active network monitoring scheme in the wireless Internet. Proceedings IEEE International Conference on Networks 2000 (ICON 2000). Networking Trends and Challenges in the New Millennium, pages 139–143. II-B [17] Plissonneau Louis, Lauren Costeux Jean, and Brown Patrick. Analysis of Peer-to-Peer Traffic on ADSL. France Telecom R&D. I, II-C [18] Marcell Perényi, Trang Dinh Dang, András Gefferth, and Sándor Molnár. Identification and Analysis of Peer-to-Peer Traffic. Journal of Communications, 1(7):36–46, December 2006. I, II-A, II-C [19] Ruben D. Torres, Mohammad Y. Hajjat, Sanjay G. Rao, Marco Mellia, and Maurizio M. Munafo. Inferring undesirable behavior from P2P traffic analysis. Proceedings of the, pages 25–36, 2009. I, II-C [20] S Tzur-David and Danny Dolev. MULAN: Multi-Level Adaptive Network Filter. Security and Privacy in Communication, 2009. I 60 ~ 1 PEER-TO-PEER-BASIERTE LIVE-STREAMING-SYSTEME Peer-to-Peer-basierte Live-Streaming-Systeme Thomas Schlosser Zunächst führt Abschnitt II in die Grundlagen der P2PLive-Streaming-Systeme ein. Dabei werden besonders Begrifflichkeiten, die für das weitere Verständnis in diesem Paper relevant sind, beschrieben. Abschnitt III gibt eine Übersicht über existierende Klassifikationen solcher LiveStreaming-Systeme. Basierend auf den in den Klassifikationen verwendeten Eigenschaften werden diese und weitere in Abschnitt IV zusammengetragen und in ihren Ausprägungen unterschieden. Im anschließenden Abschnitt V werden eine Vielzahl von Systemen anhand dieser Eigenschaften untersucht und beschrieben. Ihre Gemeinsamkeiten und Unterschiede werden hervorgehoben, wodurch die Auswahl eines Systems beziehungsweise Ansatzes für verschiedene Einsatzszenarien vereinfacht wird. Abschließend wird in Abschnitt VI ein Fazit über die in diesem Paper zusammengetragen Systeme und Klassifikationsmöglichkeiten gezogen. Zusammenfassung—Live-Streaming-Anwendungen finden im Internet zunehmend größere Verbreitung. Durch die steigende Anzahl an Nutzern einer solchen Anwendung wird es immer kostenaufwendiger, ein solches System Client-Server-basiert zu betreiben. Eine kostengünstige, skalierbare Lösung stellen Peerto-Peer-basierte Live-Streaming-Systeme dar. Dieses Paper stellt einige bekannte Klassifikationen und Eigenschaften solcher Systeme vor. Es bietet zudem einen umfassenden Überblick über die verschiedensten existierenden Peer-to-Peer-Live-StreamingSysteme. Diese werden jeweils kurz vorgestellt und bezüglich ihrer Eigenschaften, Gemeinsamkeiten und Unterschiede betrachtet. Somit hilft dieses Paper bei der Wahl eines Peer-toPeer-basierten Systems für verschiedenste Einsatzgebiete, Umgebungen und Ziele. I. E INLEITUNG Eine immer größere Anzahl an Internetnutzern verwendet Dienste, die Videos live über das Internet ausstrahlen. Sowohl bei Konferenzen und Großveranstaltungen als auch für gewöhnliche TV-Übertragungen werden solche Dienste angeboten. Die einfachste Art und Weise solche Live-Streams zu verbreiten stellt das Client-Server Modell dar. Mit diesem Modell stoßen die Systeme aber schnell an die Grenze der Skalierbarkeit beziehungsweise auf immens hohe Betriebskosten, denn die Leistung der Server muss proportional zur Nutzeranzahl wachsen. Eine effiziente Lösung des Problems stellt IP-Multicast [9] dar, bei dem die IP-Pakete des Senders an eine Gruppe von Empfängern übertragen wird. Da die Datenpakete erst an Verzweigungen im Netzwerk dupliziert werden, muss jedes Paket lediglich ein einziges Mal über ein und dieselbe Verbindung gesendet werden. Aufgrund der speziellen Anforderungen an die Infrastruktur und den erforderlichen Zustand innerhalb der Router ist IP-Multicast meist kein praktikabler Mechanismus zur Übertragung von Live-Streams. Ein Ansatz namens Peer-to-Peer (P2P), der keinerlei Unterstützung des zugrundeliegenden Netzwerks benötigt, verbreitete sich als Alternativansatz. Dieser abstrahiert von der Netzwerkebene und arbeitet ausschließlich auf der Anwendungsebene. In P2P-Systemen teilen die Teilnehmer – die sogenannten Peers – ihre Hardwareressourcen untereinander, um als Einheit den Service des Netzwerks allen Peers anbieten zu können. Die Peers kommunizieren direkt untereinander und agieren dabei sowohl in der Rolle des Anbieters als auch in der des Anfragenden [31]. Im Bereich der Live-Streaming-Systeme lassen sich somit kostengünstige und hochskalierbare Systeme entwickeln. II. G RUNDLAGEN Dieser Abschnitt führt in die Grundlagen P2P-basierter Live-Streaming-Systeme ein. Dabei werden besonders die für dieses Paper relevanten Aspekte hervorgehoben. P2P-basierte Live-Streaming-Systeme unterscheiden sich von anderen P2P-Systemen vor allem hinsichtlich ihres Bandbreitenkonsums. Sie gehören der Klasse der fixed-rateSysteme an [2]. In diesen Systemen wird der zu verteilende Inhalt mit einer konstanten Rate auf einer Teilmenge der Peers generiert. Aufgrund der hohen zeitlichen Anforderungen an Live-Streaming-Systeme muss dieser Inhalt – unter Verwendung von kleinen Puffern – schnellstmöglichst verteilt werden. Damit ein fortlaufendes Abspielen eines Streams gewährleistet werden kann, muss die Downloadrate der Empfänger – im Durchschnitt – immer der Generierungsrate entsprechen. Diese Anforderung – immer die entsprechenden Daten für den aktuellen Abspielzeitpunkt verfügbar zu haben – unterscheidet sich von den Anforderungen anderer P2P-basierter Systeme. Entsprechend der Generierungsrate müssen die Daten an jedem Peer bis zu einer bestimmten Frist vorhanden sein. Somit werden für gewöhnlich Daten, die nahe am Abspielzeitpunkt liegen, höher priorisiert als weiter entfernte Daten. Alle Daten, die hinter dem Abspielzeitpunkt liegen, sind von keinem Interesse und können verworfen werden. Weitere Aspekte, die bei solchen Systemen beachtet werden sollten, sind die Heterogenität der Peers, die Asymmetrie zwischen Download- und Uploadrate und die Gewährleistung eines zusammenhängenden Netzwerks zwischen den Peers. Dieses Paper stellt einige bekannte Klassifikationen und Eigenschaften der P2P-Live-Streaming-Systeme vor und gibt eine umfassende Übersicht über existierende Systeme. Die betrachteten Systeme werden ferner hinsichtlich ihrer Gemeinsamkeiten und Unterschiede betrachtet. A. Overlay-Topologien Das zwischen den Peers auf der Anwendungsebene aufgebaute Netzwerk wird als Overlay bezeichnet. Der Prozess, diesem Overlay beizutreten, heißt Joinen. Der beim Joinen 61 2~ PEER-TO-PEER-BASIERTE LIVE-STREAMING-SYSTEME Server Server Stream 1 Peer 0 Baum 1 Peer 1 P1 P2 P3 P6 Abbildung 1. P4 P7 P0 P1 P2 P2 Baum 2 P0 P5 P8 P9 Abbildung 2. Overlaystruktur eines Multi-Tree-basierten Systems Overlaystruktur eines Single-Tree-basierten Systems mehrere Teilstreams aufgeteilt und jeweils über einen eigenen Baum verteilt. Jeder Peer ist in jedem Teilbaum – meist an unterschiedlichen Positionen – enthalten. Über die Positionierung kann die Ausnutzung der Bandbreiten verbessert werden. In einem vollständig balancierten Baum ist jeder Peer nur in einem Teilbaum ein innerer Knoten. Durch die vielen Teilstreams und Bäume entsteht ein größerer Overhead. Andererseits führt das Verteilen der Daten über verschiedene Pfade – bei Verwendung einer redundanzbehafteten Kodierung – zu einer deutlich größeren Ausfallsicherheit. Abbildung 2 zeigt ein Overlay eines Multi-Tree-basierten Systems. Der Stream wird vom Server in zwei Teilstreams aufgeteilt und in den Teilbäumen Baum 1 und Baum 2 verteilt. Peer 0 und Peer 1 tauchen als Blätter und als innere Knoten auf. Lediglich Peer 2 kann seine Upload-Kapazität nicht zur Verfügung stellen, da er immer als Blatt angehängt ist. 2) Mesh-basiert: In einem Mesh-basierten System gibt es keine statische Topologie. Beziehungen zwischen den Peers werden dynamisch auf- und abgebaut. Jeder Peer kann gleichzeitig verschiedene Daten zu mehreren Peers hochladen und von mehreren Peers herunterladen. Eine hohe Anzahl an Verbindungen zwischen den Peers macht eine solche Topologie sehr robust. Bei Ausfällen einzelner Peers können die Daten weiterhin von anderen Peers empfangen werden [20]. verwendete Mechansimus, zum Kennenlernen eines oder mehrerer initialer Teilnehmer des Overlays, ist das sogenannte Bootstrapping. Die Menge aller Peers, mit denen ein Peer verbunden ist, bildet dessen Nachbarschaft. Die Topologie eines solchen Overlays entspricht bei P2P-Live-StreamingSystemen einer der folgenden oder Mischformen der folgenden Topologien: 1) Tree-basiert: Ähnlich dem Baum, der bei der Verteilung über IP-Multicast entsteht, werden die Peers in Tree-basierten Systemen miteinander verknüpft. Von der Quelle des Videostreams ausgehend entsteht somit eine zusammenhängende und azyklische Struktur zwischen allen Peers. Diese Topologie lässt sich feiner in Single-Tree und Multi-Tree unterteilen [20]. Ein Single-Tree zeichnet sich dadurch aus, dass alle Peers in einem Baum verwaltet werden. Der Stream wird jeweils vom Eltern-Peer an seine Kinder gesendet. Jeder Peer – außer der Wurzel – besitzt genau einen Eltern-Peer. Die wichtigsten Merkmale eines solchen Baums sind dessen Tiefe und der Ausgangsgrad der Knoten1 . Offensichtlich ist auch, dass die Peers auf einer tieferen Ebene die Daten zu einem späteren Zeitpunkt erhalten. Somit wäre ein möglichst flacher Baum das Wünschenswerteste. Dies ist wiederum durch die begrenzte Upload-Kapazität der Peers nicht beliebig umsetzbar. Ein weiterer wichtiger Aspekt eines solchen Baums ist dessen Verwaltung. Sobald ein Peer ausfällt, sind alle seine Nachfahren von der Quelle abgeschnitten. Darum ist es wichtig, dass der Baum möglichst schnell repariert werden kann. Diese Verwaltung kann entweder durch einen zentralen Server oder über einen verteilten Algorithmus durch die Peers erfolgen. Ein weiterer Nachteil dieser Topologie ist, dass Blätter keinen Ressourcen-Beitrag leisten können. Abbildung 1 zeigt ein Beispieloverlay eines Single-Treebasierten Systems. Auf Ebene 1 befinden sich zwei Peers, die direkt vom Server versorgt werden. Peer 0 wiederum ist Eltern-Peer von drei anderen Peers. Da Peer 6 auf Ebene 3 den Stream von Peer 3 von Ebene 2 erhält, ist offensichtlich, dass dieser den Stream erst später erhält. Um das Problem mit dem fehlenden Ressourcen-Beitrag der Blätter zu lösen, wurden die sogenannten Multi-Treebasierten Ansätze entwickelt. Dabei wird der Originalstream in 1 Die Stream 2 B. Kommunikationsparadigmen Der Austausch der Daten in einem P2P-System kann auf zwei verschiedene Art und Weisen – Pull-basiert oder Pushbasiert – vonstatten gehen. In einigen neueren Systemen wird eine Mischform verwendet, in der die eine oder andere Art je nach Kommunikationszweck gewählt wird. 1) Push: Die Push-basierte Kommunikation zeichnet sich dadurch aus, dass der Sender die Daten ohne explizite Anforderung an den Empfänger sendet. Dieses Paradigma ist das Standard-Paradigma in Tree-basierten Systemen. 2) Pull: Bei einer Pull-basierten Kommunikation werden die Daten vom Empfänger beim Sender angefordert. Dazu tauschen die Peers für gewöhnlich die Verfügbarkeit der Daten untereinander aus. Dadurch lassen sich redundante Übertragungen – wie sie durch Push-basierte Kommunikationen entstehen würden – vermeiden. Diesem Paradigma wird standardmäßig bei Mesh-basierten Systemen gefolgt. Begriffe „Knoten“ und „Peer“ werden austauschbar verwendet. 62 ~ 3 PEER-TO-PEER-BASIERTE LIVE-STREAMING-SYSTEME III. K LASSIFIKATIONEN unstrukturiertes Overlay erzeugt werden, das sich dadurch auszeichnet, dass die Peers in keiner speziellen Topologie miteinander verknüpft sind. Mesh-basierte Systeme besitzen genau dieses Merkmal und können somit synonym verwendet werden. Tree-basierte Systeme können sowohl die eine als auch die andere Ausprägung dieser Eigenschaft besitzen. Dies ist davon abhängig, ob der Baum bei der Konstruktion des Overlays entsteht oder ob der Baum erst jeweils bei der Datenverteilung seine Form erhält. In letzterem Fall handelt es sich um ein unstrukturiertes Overlay [11]. Weiterhin können sich die Systeme in ihrer Struktur dahingehend unterscheiden, dass ein System ein oder mehrere – eventuell verschiedene – Overlays für die Verteilung der Daten verwendet. Auch die Struktur der Overlays zur Verwaltung der Peers kann von denen zur Datenverteilung abweichen [11]. Dieser Abschnitt gibt eine Übersicht über existierende Klassifikationen für P2P-Live-Streaming-Systeme. In [34] klassifizieren Silverston und Fourmaux P2P-LiveStreaming-Protokolle anhand ihrer Verwaltung des Overlays. Sie unterscheiden die Kategorien Source-Driven, ReceiverDriven und Data-Driven. In Source-Driven Systemen werden die Daten – von einer Wurzel ausgehend – über eine Baumstruktur an die Empfänger verteilt. Werden die Daten hingegen über einen Baum verteilt, dessen Wurzel der Empfänger ist, so handelt es sich um einen Receiver-Driven Ansatz. Dabei organisiert der Empfänger die Ressourcen – das heißt die anderen Peers –, um an den gewünschten Stream zu gelangen. In Data-Driven Systemen tauschen die Peers Nachrichten über die Datenverfügbarkeit aus. Anhand dieser Datenverfügbarkeiten suchen sich die Peers selbstständig ihre Nachbarn zum Datenaustausch aus. In ihren Untersuchungen kommen sie zu dem Ergebnis, dass der Data-Driven Ansatz der beste Ansatz für Live-Streaming zu sein scheint. Aufgrund der Ähnlichkeit von unstrukturierten Overlays zu Zufallsnetzen, erweisen sich solche Systeme gegenüber Angriffen und Ausfällen als resistenter. Eine weitere Möglichkeit zur Klassifizierung wird von Liu, Guo und Liang in [20] beschrieben. Sie unterscheiden LiveStreaming-Systeme anhand der Struktur des Overlays. Dabei verwenden sie die Klassen so, wie sie in Abschnitt II-A vorgestellt wurden. Sie unterscheiden somit zwischen SingleTree, Multi-Tree und Mesh-basierten Systemen. Durch die kontinuierliche Neuentwicklung von P2P-LiveStreaming-Systemen entstanden in der Vergangenheit eine Reihe von hybriden Systemen, wie beispielsweise Climber (siehe Abschnitt V), die sich nicht mehr eindeutig einzelnen Klassen dieser Klassifikationen zuordnen lassen. Zudem entstanden auch neue Systeme, die weitere Komponenten – wie die Gruppierung von Peers in Cluster – in die Topologie integrierten und weiter vermischten. Das Aufstellen einer neuen Klassifikation, die alle wichtigen Aspekte dieser Systeme berücksichtigt, ist somit nicht befriedigend umsetzbar. B. Cluster Einige Systeme gruppieren ihre Peers in sogenannte Cluster, um robustere Netzwerke aufbauen zu können. Meist wird innerhalb eines Clusters eine andere Struktur als zwischen den Clustern verwendet. Aussagen über die Overlay-Struktur lassen sich jedoch sowohl auf Peer- als auch auf Clusterebene in gleichem Maße treffen. C. Koordinierung der Peers Zur Koordinierung in einem P2P-System zählt sowohl der Aufbau desselben als auch die Verteilung der Daten in ihm. Wird die Koordinierung der Peers von einem einzelnen Knoten übernommen, so wird das System als zentrales bezeichnet. In einem solchen System stellt dieser zentrale Punkt einen Flaschenhals dar. Er steht für gewöhnlich unter einer großen Last und im Falle seines Ausfalls kann das System nicht mehr betrieben werden. Dezentrale Ansätze, bei denen die Peers gemeinsam die Koordination übernehmen, verhindern das Auftreten dieses Problems. Im Gegensatz zu dem zentralen Ansatz, bei dem der dedizierte Knoten über ein globales Wissen des Systems verfügen muss, wird beim dezentralen Ansatz an jedem Peer meist lediglich ein lokales Wissen benötigt. Durch das globale Wissen können in zentral verwalteten Systemen Optimierungen vorgenommen werden, die sich mit Hilfe reines lokalen Wissens nicht realisieren lassen. Mischformen, die den Aufbau durch eine zentrale Instanz koordinieren und die Verteilung der Daten dezentralisiert ablaufen lassen, versuchen die Vorteile beider Koordinierungsarten zu vereinen. IV. E IGENSCHAFTEN VON P2P-L IVE -S TREAMING -S YSTEMEN Da sich, wie in Abschnitt III beschrieben, keine eindeutige Klassifikation für P2P-Live-Streaming-Systeme erstellen lässt, werden die Systeme im weiteren Verlauf dieses Papers hinsichtlich ihrer Eigenschaften betrachten. Die wichtigsten Eigenschaften, die ein solches System ausmachen können, werden in diesem Abschnitt zusammengetragen. D. Kommunikationsparadigma Entsprechend der Erläuterung in Abschnitt II-B existieren zwei verschiedene Kommunikationsparadigmen: Push und Pull. Push-basierte Kommunikation hat den Vorteil einer geringeren Aufbauzeit, da der Sender ohne explizite Anfrage die Daten versenden kann. Bei Pull-basierter Kommunikation teilt der Sender für gewöhnlich zunächst die Verfügbarkeit der Daten mit, woraufhin der Empfänger die gewünschten Daten anfragt und erst im Folgenden zugesendet bekommt. Allerdings werden im Pull-basierten Ansatz redundante Übertragungen vermieden. Auch bei den Kommunikationsparadigmen werden Mischformen für verschiedene Aspekte der Systeme verwendet, um die Vorteile beider Varianten zu nutzen. A. Overlay-Struktur Eine der wichtigsten Eigenschaften eines P2P-Overlays ist dessen Struktur. Ein Overlay kann über einen strukturierten Ansatz erstellt werden, bei dem die Peers zusammen eine spezielle Topologie bilden. Eine solche Struktur kann zum Beispiel einem Ring [35], Hypercube [29] oder Plaxton Mesh [30, 39] entsprechen. Hierbei ist es wichtig, dass beim Joinen, aber auch beim Ausfall von Peers die Struktur weiter Bestand hält. Im Gegensatz zum strukturierten Ansatz kann auch ein 63 4~ PEER-TO-PEER-BASIERTE LIVE-STREAMING-SYSTEME E. Fairness Der Empfänger dieser Nachricht kann diese direkt vom Peer oder über Weiterleitungen anderer Peers erhalten. Verlässt er ungewollt das Netzwerk, so nehmen die anderen Peers nach einer gewissen Zeitspanne, in der sie nichts von ihm mitbekommen haben, sein Verschwinden an. In Folge des einen oder anderen Falles werden die Informationen zum austretenden Peer entfernt. In P2P-basierten Systemen werden die Systemressourcen durch die Summe der von den Peers zur Verfügung gestellten Ressourcen bestimmt. Um die Bereitschaft zur Ressourcenbereitstellung der Peers zu erhöhen, verwenden einige Systeme sogenannte Anreiz-basierte Ansätze. Ein Peer, der dem System mehr seiner Ressourcen – das heißt Upload-Kapazität – zur Verfügung stellt, erhält Vorzüge gegenüber anderen Peers. Dies kann sich zum Beispiel in der Qualität des Videos, aber auch in der Abspielkontinuität widerspiegeln. Narada In [16] stellen Chu et al. mit Narada ein Mesh-basiertes P2PSystem vor. Die Peers dieses Systems organisieren sich selbst über einen vollständig dezentralen Ansatz und benötigen dafür globales Wissen über alle Peers. Dazu tauschen sie periodisch untereinander Nachrichten aus, die Informationen über die bereits bekannten Peers enthalten. Beim Joinen benötigt der neue Peer – über einen beliebigen Bootstrap-Mechanismus – eine Liste bereits existierender Peers über die er mit dem Netzwerk verbunden wird. Im weiteren Verlauf wird das Overlay durch das Entfernen und Aufbauen von Verbindungen optimiert. Die dafür verwendeten Bewertungsfunktionen messen – als Aufbaukriterium – den Performance-Gewinn und – als Abbaukriterium – die Anzahl der Pfade über diese Verbindung. Mit Hilfe eines kürzeste Wege-Algorithmus wird ein Baum in dem aufgespannten Mesh erzeugt, über den die Daten von der Quelle – die als Wurzel dient – Push-basiert an die Peers verteilt werden. Befinden sich mehrere Quellen im System, so werden mehrere Bäume im Mesh erzeugt. In beiden Varianten werden in Narada keine speziellen Kodierungen für den Stream verwendet. F. Kodierung des Streams Das Teilen des Videostreams in mehrere Teilstreams und das Versenden über verschiedene Wege führt zu einer höheren Ausfallsicherheit und einer besseren Möglichkeit die Lasten im Netzwerk zu verteilen. Dies lässt sich im einfachen Fall durch das sogenannte Stream Splitting realisieren. Dabei wird der Hauptstream in mehrere gleich große Pakete zerlegt und auf die gewünschte Anzahl an Streams verteilt. Eine Variante, mit der sowohl Redundanzen hinzugefügt als auch Fairness leichter unterstützt werden können, stellt das Network Coding dar. Bei dieser Variante reicht dem Empfänger eine Teilmenge der Pakete aus, um den Stream abspielen zu können. Je mehr Streams – das heißt Pakete – er zur Verfügung hat, desto besser wird die Qualität des Videos. Ein Beispiel solch einer Kodierung stellt die H.264/AVC-Erweiterung Scalable Video Coding (SVC) [33] dar. G. Berücksichtigung der Lokalität Im Rahmen der Übertragungszeit-Optimierung zwischen den Peers verwenden einige Systeme die physikalische Lokalität der Peers, um das Overlay-Netzwerk zu optimieren. Diese kann sowohl einer geographischen als auch topologischen Lokalität entsprechen. Für die Optimierung der Übertragungszeit ist in erster Linie die topologische Lokalität im zugrundeliegenden Netzwerk entscheidend. Einige Systeme verwenden dazu die IP-Adressen der Peers, andere wiederum approximieren die Entfernungen anhand der Übertragungszeiten oder Bandbreiten zwischen den Peers. Der zusätzliche Aufwand beim Konstruieren und Verwalten des Overlays wird wegen der Verringerung der Übertragungszeit und damit der Gewährleistung eines stabileren Streams in Kauf genommen. CoolStreaming/DONet Mit DONet [38] entwickelten Zhang et al. ein Data-Driven Pull-basiertes Mesh-Overlay-Netzwerk zur Übertragung von Live-Streams. Eine skalierbare Internet-basierte Implementierung namens Coolstreaming [37] wurde auf Basis DONet’s entwickelt. Ähnlich zu Narada besitzt jeder Peer eine Liste aller aktiver Knoten, die durch einen periodischen Nachrichtenaustausch auf dem aktuellsten Stand gehalten wird. Der Source-Knoten ist in DONet allseits bekannt und wird beim Joinen kontaktiert. Von ihm erhält der neue Peer einen zufällig gewählten existierenden aktiven Peer, von dem er eine Liste von Peers erhält. Zu jedem dieser Peers versucht der neue Peer eine Nachbarschaftsbeziehung aufzubauen. Für den Datenaustausch des in Segmente zerteilten Streams werden durchgehend Informationen über deren Verfügbarkeit mit Hilfe sogenannter BufferMaps ausgetauscht. In einer BufferMap ist – entsprechend dem Sliding Window-Verfahren – ein Bit zu jedem Segment in der Nähe des aktuellen Abspielsegments enthalten. Dieses gibt an, ob das Segment an einem Peer verfügbar ist oder nicht. Jeder Peer kann dann über ein Bitmuster gewünschte Segmente entsprechend seines Schedulings (zeitlichen Ablaufplans) anfragen. Dabei werden die selteneren und schneller herunterladbaren Segmente priorisiert. Um die Qualität des Streams zu erhöhen und eine stabile Anzahl an Partnern zu gewährleisten, werden periodisch neue Nachbarschaftsbeziehungen mit einem zufällig gewählten aktiven Knoten aufgebaut. Dabei wird wenn nötig der Partner, von V. P2P-L IVE -S TREAMING -S YSTEME Dieser Abschnitt gibt einen Überblick über existierende Forschungssysteme und kommerzielle P2P-Live-StreamingSysteme. Die Systeme werden kurz bezüglich ihrer Funktionsweise erläutert und hinsichtlich der Eigenschaften aus Abschnitt IV untersucht und unterschieden. Zunächst werden Vorgehensweisen, die in allen Systemen gleichartig verwendet werden, separat aufgeführt. Auf spezifische Abweichungen wird in den speziellen Beschreibung der entsprechenden Systeme eingegangen. Eine weit verbreitete Vorgehensweise ist der einheitliche Umgang mit austretenden Peers. Beim Verlassen des Overlays sendet ein Peer eine Nachricht an alle Peers, die ihn kennen. 64 ~ 5 PEER-TO-PEER-BASIERTE LIVE-STREAMING-SYSTEME dem im Durchschnitt am wenigsten Segmente pro Zeiteinheit erhalten wurden, entfernt. aktualisieren die eigene Sicht mit Hilfe dieser Informationen. Im Rahmen dieser lokalen Sicht verwendet das System einen Algorithmus um Schleifen zu erkennen und zu entfernen. Abhängig von der Eingangsbandbreite werden Verbindungen zu verschiedenen Anbietern aufgebaut. Ein Peer kann somit auch über mehrere Anbieter und Abnehmer verfügen. Der Stream selbst wird ohne weitere Kodierung mit Hilfe des Realtime Transport Protokolls (RTP) [32] von den Anbietern an die Abnehmer Push-basiert übertragen. MeshTV MeshTV [3, 8] ist ein Pull- und Mesh-basiertes P2P-LiveStreaming-System, dessen Ansatz dem Data-Driven Ansatz entspricht. Im Wesentlichen deckt sich die Funktionsweise mit der von DONet. Im Gegensatz zu DONet beschränkt MeshTV die Anzahl der Nachbarn eines Peers nicht. Dadurch kann in MeshTV eine bessere Ausnutzung der Upload-Kapazität von hochkapazitiven Knoten erreicht werden. Eine weitere Besonderheit dieses Systems liegt in der lokalen Optimierung des Overlays hinsichtlich der Latenzzeit zwischen den Peers. Diese – meist auch physikalisch kurzen – Verbindungen werden dann auch für die Datenübertragung verwendet. Des Weiteren stellt MeshTV sicher, dass alle Peers die benötigte Datenrate über eine konstante Anzahl an Sendern empfangen können. Außerdem wird die Anzahl der Nachbarn eines Peers in Korrelation zur Bandbreite des Peers gehalten, um ungenutzte Kapazitäten zu vermeiden. Live-Streaming über BitTorrent Cai, Xiaolu Zhang und Xuejie Zhang stellen in [4] ein auf BitTorrent [5] basierendes Live-Streaming-System vor. Um den Bedingungen eines Live-Streaming-Systems gerecht zu werden, passten sie ein paar der BitTorrent-Mechanismen an. So werden anstatt der seltenen Stücke die Stücke nahe des Abspielzeitpunkts höher priorisiert. Auch das Verhalten des Source-Knotens wurde angepasst. Er wird im sogenannten Super Seeding Mode betrieben, in dem er sich als Leecher – Peer ohne vollständige Datenverfügbarkeit – ausgibt. Dabei stellt er einem Nachbarn erst dann weitere Daten zur Verfügung, wenn dieser die bereits erhaltenen Daten an andere weitergegeben hat. Der Source-Knoten bekommt dies über die periodischen Datenverfügbarkeitsnachrichten der anderen Peers mitgeteilt. Wenn der Source-Knoten weiß, dass gewisse Daten an einem Peer noch nicht verfügbar sein können, dann kann er diese Daten zu ihm pushen. Der restliche Datenaustausch im aufgebauten Mesh läuft – wie in BitTorrent üblich – über Pull-basierte Kommunikation ab. Sobald alle Daten eines Streaming-Intervalls mindestens einmal verteilt wurden, wechselt der Source-Knoten in den normalen Modus. Um einen langsamen Start zu vermeiden, werden die aktiven Nachbarn periodisch bestimmt und deren Anzahl auf einem bestimmten Level gehalten. PRIME Magharei und Rejaie entwickelten mit PRIME [23] ein Mesh-basiertes Live-Streaming-System. Das zufällig verbundene Netz entsteht dadurch, dass Peers einen BootstrappingKnoten nach Versorger-Peers fragen und sich mit diesen verbinden. Jeder Peer versucht die Anzahl der Versorger-Peers in Korrelation zu seiner Eingangsbandbreite zu halten. Die Datenverteilung des in Teilstreams zerlegten Streams erfolgt in zwei Phasen und in Intervallen. In der ersten Phase – der Diffusion-Phase – werden die Daten über einen impliziten Verteilungsbaum Pull-basiert von der Quelle ausgehend verteilt. Jedes Kind der Quelle und somit jeder Peer innerhalb des entsprechenden Teilbaums erhält dabei nur Daten eines Teilstreams. In der zweiten Phase – der Swarming-Phase – versucht jeder Peer Pull-basiert an die fehlenden, aber bereits verteilten, Daten der anderen Teilstreams zu gelangen. Dieses Vorgehen hilft dem Flaschenhals durch zu wenig Bandbreite oder durch zu wenig Daten an den Nachbarn vorzubeugen. Chainsaw Das von Pai et al. in [24] vorgestellte Chainsaw ist ein Mesh-basiertes Live-Streaming-System, das sowohl in der Art des Aufbauprozesses als auch der Datenverteilung dem im letzten Abschnitt beschriebenen Live-Streaming-System über BitTorrent entspricht. Lediglich der Super Seeding Mode des anderen Systems wird nicht verwendet und die Wahl der Pullbasiert zu holenden Daten wird nur per Zufall getroffen. Da dadurch viele Daten nicht rechtzeitig an den Peers zur Verfügung stehen würden, führten Pai et al. den Request OverridingAlgorithmus ein. Dazu verwaltet der Source-Knoten eine Liste mit allen noch nie versendeten Datenpaketen. Ist die Liste nicht leer, so sendet der Source-Knoten das älteste Paket der Liste an den anfragenden Peer, sofern dieser ein nicht auf der Liste enthaltenes Datenpaket angefragt hat. Dadurch wird gewährleistet, dass jedes Datenpaket im Overlay verteilt ist. STREAMCOMPLETE Covino und Mecella entwickelten mit STREAMCOMPLETE [6, 7] ein Mesh-basiertes P2P-Live-Streaming-System, in dem sich die Peers mit Hilfe verteilter Algorithmen selbst verwalten. Kernelement dieses Systems ist der State of health-Parameter, der abhängig von den aktuell zur Verfügung stehenden Ressourcen und Verbindungen zu anderen Peers berechnet wird. Um die Gesamtperformance zu erhöhen wird die sogenannte Fast-Top Prozedur verwendet. Abhängig von dem Wert des State of health-Parameters tauschen Anbieter und Abnehmer ihre Positionen im Overlay. Peers mit geringem State of health werden somit am Rande des aufgebauten Meshs und Peers mit besserem State of health näher an der Quelle positioniert. Dadurch wird die Last dynamisch im System verteilt. Um ein stabiles Overlay aufrecht erhalten zu können, tauschen die Peers ihre lokalen Sichten untereinander aus und PALMS PALMS [14], ein zu DONet und BitTorrent ähnliches Mesh-basiertes Live-Streaming-System, wurde von Hoong und Matsuo entwickelt. Sowohl der Aufbau und die Verwaltung 65 6~ PEER-TO-PEER-BASIERTE LIVE-STREAMING-SYSTEME des Netzes geschehen analog zum DONet-Ansatz. In ihrer Grundform verläuft die Datenverteilung ebenfalls ähnlich der Verteilung in DONet und BitTorrent. Um jedoch die Verzögerung, die durch Verwendung des Pull-Mechanismus entsteht, zu verringern, wird zudem auch ein Push-basierter Ansatz verwendet. Dabei subskribieren sich Peers bei ihren Nachbarn, um deren neu erhaltene Pakete automatisch zugesendet zu bekommen. Wird das Fehlen eines Paketes anhand der Sequenznummer festgestellt, so kann dieses Paket über eine NACK-Nachricht erneut angefragt werden. Um dem Heterogenitätsproblem der Peers entgegenzuwirken, wird der Originalstream mit Hilfe von Network Coding in Teilstreams zerlegt. Je mehr Streams an einem Peer vorliegen, desto höher ist die Qualität des Videos an diesem Peer. Um die Bereitstellung von Ressourcen zu erhöhen und das Aufkommen von Freeridern – Peers die sich nicht beteiligen – zu verringern, werden die Peers für ihren Einsatz Punkte-basiert belohnt. Entsprechend ihrer zentral hinterlegten Wertung dürfen sie nur Daten von Peers laden, deren Wertung kleiner oder gleich der eigenen Wertung ist. Je mehr sie sich beteiligen, desto flexibler dürfen sie also ihre Peers auswählen. nimmt ein Peer einen joinenden Peer mit einer gewissen Wahrscheinlichkeit als Kind an oder gibt ihn weiter. Die zufälligen Kanten werden nach dem Erhalt von Datenpaketen eingefügt. Der Stream wird am Source-Knoten in gleich große, mit einer Sequenznummer durchnummerierte Pakete zerlegt und über den Verteilungsbaum zu allen Peers gepusht. Sobald ein Peer durch eine Zufallskante einen Knoten findet, von dem Pakete mit höherer Sequenznummer ankommen, verwendet er diesen als neuen Eltern-Peer. Bei Ausfällen von Peers wird der Baum ebenfalls mit Hilfe dieser Zufallskanten repariert. Ist dies nicht möglich, so müssen die entsprechenden Peers einen Rejoin durchführen. Um Rejoins zu vermeiden, wird die Anzahl der Zufallskanten proportional zur Anzahl der durchgeführten Rejoins gewählt. Der zu Beginn des Abschnitts angesprochene Anreiz liegt darin, dass ein Peer, der sich stärker an der Datenverteilung beteiligt, mehr Zufallskanten aufbauen darf. Dadurch erfährt er weniger Unterbrechungen und besitzt einen deutlichen Vorteil gegenüber unkooperativer Peers. Als Maß für die Beteiligung wird die Anzahl der Kinder eines Peers verwendet. Overcast LSONet Overcast [18] ist ein Tree-basiertes P2P-System, das LiveStreaming unterstützt. Beim Joinen initialisiert sich der Peer selbst und registriert sich in einem zentralen Register. Von diesem erhält er eine Liste von Overcast-Netzwerken, in denen jeweils unterschiedliche Streams verteilt werden. Möchte ein Peer einem konkreten Overlay beitreten, so beginnt der Eltern-Auswahlprozess an der Wurzel, die dem Source-Knoten entspricht. Als Eltern-Knoten wählt der neue Knoten den am weitesten entfernten Knoten, bei dem er maximal 10% Verlust – hinsichtlich der Datenrate – gegenüber der Wurzel hinnehmen muss. Zudem entscheidet er sich auf jeder Ebene für den Knoten – der innerhalb der 10% liegt – zu dem die Anzahl an Hops am geringsten ist. Periodisch prüft jeder Peer ob alle seine Kinder, an die er den Single Stream pusht, noch vorhanden sind. Dazu, und um ein schnelleres Joinen zu ermöglichen, verwaltet jeder Knoten eine Liste aller seiner Kinder und deren Zustand. Diese Informationen werden bis zur Wurzel nach oben propagiert. Peers können sich in Overcast durch die Wahl eines neuen Eltern-Knotens an Änderungen im zugrundeliegenden Netzwerk – zum Beispiel durch Fehler oder Datenstau – anpassen. Dennoch garantiert Overcast mit seinen Algorithmen keine optimale Topologie. Bei LSONet [12, 13] handelt es sich um ein Mesh-basiertes P2P-Live-Streaming-System, das eine Layer-Kodierung verwendet. Am Source-Knoten wird der Stream über Network Coding auf mehrere Teilstreams (Layer) verteilt. Für jeden dieser Layer wird ein eigenes Mesh aufgebaut. Ein Peer kann gleichzeitig mehrere Layer von mehreren Sendern empfangen und auch zu mehreren Empfängern schicken. Die Verfügbarkeit von Layern wird – im Gegensatz zu den anderen Systemen – nur auf explizite Anfrage verschickt. Ein durch den Pull-Mechanismus erhaltener Anbieter bleibt prinzipiell durchgehend in dieser Rolle, bis er fehlschlägt oder das Overlay verlässt. Beim Joinen wendet sich der neue Knoten an einen der vielen Bootstrapping-Knoten und erhält von ihm eine eindeutige ID. Ein Peer nimmt den neuen Knoten mit einer gewissen Wahrscheinlichkeit als Empfänger an oder leitet ihn an einen anderen weiter. Bei der Verwaltung des Overlays werden Strategien wie LTM (location-aware topology matching) [21] verwendet, um das Overlay an die physikalische Topologie anzupassen. Dazu gehört ebenfalls die periodische Eliminierung langsamer Partner. Über einen Algorithmus wird versucht, jedem Peer die maximale Anzahl an Layern zur Verfügung zu stellen. Der Basis-Layer – der alleine ausreicht, um das Video abzuspielen – erhält bei der Auswahl eine höhere Priorität. Die über diesen Mechanismus realisierbare Fairness wird in LSONet nicht betrachtet. Jedoch wird durch diese Daten- und Pfadredundanz eine höhere Stabilität erreicht. CTree CTree [40] ist ein geclustertes, Tree-basiertes P2P-LiveStreaming-System. Die Peers werden dabei von einem zentralen Tracker, der für die Verwaltung des ganzen Systems zuständig ist, in Cluster verteilt. Wie in Abbildung 3 zu sehen, bilden diese Cluster einen Verteilungsbaum, dessen Wurzel das Cluster mit dem Source-Knoten ist. Ein Elterncluster versorgt push-basiert seine Kindercluster, wobei Peers eines Clusters entweder von Peers aus dem Elterncluster oder aus dem lokalen Cluster versorgt werden können. In CTree gibt es zwei Arten von Peers, die über die Upload-Bandbreite unterschieden werden. Peers mit einer hohen Upload-Bandbreite Climber Climber [25, 26], ein hybrides Tree- und Mesh-basiertes P2P-Live-Streaming-System, verwendet einen Anreizbasierten Ansatz, um die Beteiligung der Peers zu erhöhen. Das Overlay wird durch einen Baum gebildet, der – um redundate Verbundenheit herzustellen – mit weiteren zufälligen Kanten versehen wird. Analog zu LSONet 66 ~ 7 PEER-TO-PEER-BASIERTE LIVE-STREAMING-SYSTEME Source Cluster 1 Cluster 3 Knoten, die sich nicht an der Verteilung der Daten beteiligen, werden aus dem Cluster ausgeschlossen. Die Verteilung des in gleich große Teile zerlegten Streams durch den Source-Knoten erfolgt Push-basiert an die sogenannten Power Nodes. Diese entsprechen den Knoten mit der höchsten Beteiligung. Die Beteiligung der Peers wird periodisch über eine spezielle Formel berechnet und über den Tracker an den Source-Knoten weitergegeben. Zu Beginn wählt er die Knoten mit dem größten Upload. Sobald ein Peer im Cluster Daten erhält informiert er die anderen Peers, so dass diese die Daten pullen und selbst verteilen können. Dieses Vorgehen stellt zugleich einen Fairness-Mechanismus dar. Ein Peer, der sich rege beteiligt, hat den Vorteil den Stream unmittelbar und direkt vom Server zu erhalten. Zudem wird die Gesamtperformance des Systems erhöht, da Peers mit einem höheren Upload näher an dem Source-Knoten platziert sind. Cluster 0 Cluster 2 Cluster 4 Cluster 5 Cluster Power Peer (p-Peer) Normal Peer (n-Peer) Push des Gesamtstreams von p-Peer in Eltern- zu p-Peer in Kindcluster Push eines Teilstreams von n-Peer in Eltern- zu n-Peer in Kindcluster Verbindung zwischen Peers eines Clusters; Teilstreams werden gepullt Abbildung 3. Overlaystruktur von CTree (adaptiert aus [40]) werden p-Peer (Power Peer) genannt und werden beim Joinen vom Tracker in ein neues Cluster gesetzt. Als Elterncluster wird das Cluster verwendet, in den der p-Peer zunächst gejoint wurde. Peers mit einer geringeren Upload-Bandbreite werden als n-Peers (Normal Peers) bezeichnet und beim Joinen einem existierenden Cluster hinzugefügt. Dabei priorisiert der Tracker die Cluster in der Nähe der Wurzel und Cluster mit wenigen Peers. Jeder Peer bekommt beim Joinen einen Peer des entsprechenden Clusters vom Tracker übermittelt und lernt im Folgenden seine lokalen Peers und die des Elternclusters kennen. Nach dem erfolgreichen Joinen eines Peers, aber auch in fixen Abständen, aktualisieren alle Peers des lokalen Clusters und der Kindercluster ihre Clusterinformationen. Der Tracker hält Informationen zu allen Clustern und wird kontinuierlich aktualisiert. Dabei muss er nicht alle Peers kennen – eine Teilmenge aus jedem Cluster reicht aus. Die Daten, die der Source-Knoten streamt, werden von ihm in gleich große Blöcke zerlegt und durchnummeriert. Der Gesamtstream wird mit Hilfe der Blöcke auf unkodierte Substreams verteilt. Jeder Peer hält nur zu einer Teilmenge der bekannten Peers eine aktive Verbindung. Die n-Peers wählen zufällig einige Peers aus dem lokalen Cluster und dem Elterncluster um Substreams zu erhalten. Die p-Peers hingegen wählen wenn möglich den p-Peer des Elternclusters, um von ihm den Gesamtstream übermittel zu bekommen. Sollte dies nicht möglich sein, so verhält sich der p-Peer wie ein n-Peer. Im Gegensatz zu den Daten aus dem Elterncluster, werden Daten innerhalb eines Clusters nur auf explizite Anfrage – das heißt pull-basiert – versendet. AnySee/Anysee2 Liao et al. stellen in [19] mit AnySee ein Mesh-basiertes P2P-Live-Streaming-System vor, das sich auf Inter-OverlayOptimierung, das heißt auf die Optimierung zwischen verschiedenen Overlays, konzentriert. Dazu wird zunächst mit Hilfe eines Bootstrapping-Knotens ein Mesh aufgebaut. Ähnlich zu LSONet wird das Overlay durch Strategien wie LTM [21] an die physikalische Topologie angepasst. Über periodische Nachrichtenfluten wird die Overlay-Struktur durchgehend optimiert. Für die Optimierung des Datenflusses verwaltet jeder Peer jeweils eine Liste mit aktiven Pfaden und mit Backup-Pfaden. Zunächst werden die Pfade innerhalb des eigenen Overlays anhand der kürzesten Verzögerungszeiten bestimmt. Fällt die Anzahl der Backup-Pfade unter einen Schwellwert, so werden Overlay-übergreifende Pfade bestimmt. Diese werden über eine umgekehrte Suche – vom Peer zum Source-Knoten – ebenfalls anhand der Verzögerungszeit ausgewählt. Der Datenaustausch des Single Streams – mit Knoten der aktiven Pfade – erfolgt analog zu DONet über einen Pull-Mechanismus. Anysee2 [17] stellt eine Weiterentwicklung von AnySee dar. Im Unterschied zu AnySee werden für den Austausch der Kontroll- und Datennachrichten zwei unterschiedliche Strukturen verwendet. Die Ebenen des Baums, der für die Kontrollnachrichten aufgebaut wird, korrelieren mit Räumlichkeiten, die sich über die IP-Adresse bestimmen lassen. Die erste Ebene unterscheidet die verschiedenen Internet Service Provider (ISPs), die zweite diese anhand der Städte und so weiter. Für den Datenaustausch wird ein Mesh zwischen den Nachbarn des Kontrollbaums erzeugt. Die Anzahl der Kontrollnachrichten konnte durch die Vermeidung der Nachrichtenfluten gegenüber AnySee deutlich reduziert werden. BEAM BEAM [27, 28] ist ein von Purandare und Guha entwickeltes geclustertes, Mesh-basiertes P2P-Live-Streaming-System. Ähnlich zu CTree verwendet BEAM einen zentralen Tracker, der den Zustand des Systems verwaltet. Beim Joinen eines Peers bekommt dieser vom Tracker eine Liste mit 40 Peers, deren Bandbreite ähnlich zu der des neuen Knotens ist. Diesen Knoten sendet er eine Cluster-Join-Nachricht, die diese annehmen sofern sie noch nicht in genügend Clustern enthalten sind. In BEAM kann ein Knoten in mehreren Clustern enthalten sein. Cluster können auch zu späteren Zeitpunkten über eine ähnliche Nachricht neue Mitglieder für ihr Mesh gewinnen. PPLive und SOPCast Neben den bisher beschrieben Systemen existieren auch kommerzielle Systeme wie PPLive2 und SOPCast3 . Da es sich bei diesen Systemen um proprietäre Systeme handelt, können 2 PPLive. http://www.pptv.com/en/. http://www.sopcast.org/. 3 SOPCast. 67 8~ PEER-TO-PEER-BASIERTE LIVE-STREAMING-SYSTEME Name Referenz Struktur Cluster Koordinierung Narada CoolStreaming/DONet MeshTV PRIME STREAMCOMPLETE Live-Streaming über BitTorrent [16] [37, 38] [3, 8] [23] [6, 7] Mesh & Tree Mesh Mesh Mesh & Tree Mesh - dezentral de- & zentral dezentral de- & zentral dezentral Kommunikationsparadigma Push Pull Pull Pull Push [4] Mesh - de- & zentral Pull & Push Chainsaw [24] Mesh - dezentral Pull Unterstützung von Fairness möglich - PALMS [14] Mesh - de- & zentral Pull & Push LSONet [12, 13] Mesh - dezentral Pull Climber Overcast CTree BEAM AnySee Anysee2 [25, 26] [18] [40] [27, 28] [19] [17] [1, 10, 15, 22, 36] Tree & Mesh Single-Tree Tree Mesh Mesh Mesh & Tree Mesh Mesh - dezentral dezentral de- & zentral de- & zentral de- & zentral de- & zentral Push Push Push & Pull Push & Pull Pull Pull möglich durch Kodierung Peer-Auswahl möglich durch Kodierung # Kanten Platzierung - Mesh - de- & zentral Pull - PPLive & SOPCast SSt SSt SSt NC SSt Lokalität (Aspekt) Latenzzeit - SSt - SSt - Kodierung NC - LC Latenzzeit SSt SSt StS SSt SSt SSt # Hops Latenzzeit IP-Adresse SSt - Tabelle I Ü BERSICHT DER S YSTEME UND IHRER E IGENSCHAFTEN Umsetzung von Fairness, Clustern, einer speziellen Kodierung und auch die Berücksichtigung der Lokalität der Peers. Eine zusammenfassende Übersicht über die vorgestellten Systeme befindet sich in Tabelle I. Zu jedem System sind dort die Eigenschaften aus Abschnitt IV angegeben. Nutzt ein System Cluster, so ist die Topologie innerhalb des Clusters in der Spalte Cluster hinterlegt. In der Spalte Unterstützung von Fairness ist angegeben, in wie weit ein Fairness-Mechanismus unterstützt wird. Ist ein solcher Mechanismus enthalten, so ist das Gebiet angegeben, in dem sich ein beteiligender Peer einen Vorteil verschaffen kann. Die Kodierungen in der vorletzten Spalte sind wie folgt abgekürzt: Informationen über sie ausschließlich aus Messungen des Netzwerkverkehrs gewonnen werden. Eine Reihe von Untersuchungen stellte bei beiden Systemen ein ähnliches Verhalten fest [1]. Beide Systeme erzeugen mit Hilfe eines zentralen Servers ein Mesh [22, 36]. Dieser Bootstrapping-Knoten liefert beim Joinen eine Liste von potenziellen Nachbarn. Durch den periodischen Austausch der Nachbarlisten können neue Nachbarn gewonnen werden. Im Gegensatz zu PPLive senkt SOPCast die Rate, mit der die Nachbarlisten ausgetauscht werden, mit der Zeit [15]. Für die Datenverteilung wird der Stream ähnlich zu DONet in Segmente zerlegt und durch die Verwendung von BufferMaps Pull-basiert verteilt [10]. Fairness-Mechanismen sind in keinem der beiden beiden Systeme enthalten. So können Peers keine oder um die 15-20 Kinder besitzen und werden dabei gleichberechtigt behandelt. Bei der Optimierung des Overlays werden die Anbieter nur anhand deren Performance ausgewählt. Die Lokalität der Peers wird dabei vollständig außer Acht gelassen [1]. • • • • SSt = Single Stream StS = Stream Splitting NC = Network Coding LC = Layer-Kodierung In der Spalte Lokalität sind alle Aspekte, die zur Betrachtung der Lokalität verwendet werden, aufgelistet. Wie in der Tabelle zu sehen ist, werden meist Mesh-basierte Systeme mit Single Stream verwendet. Diese werden alle durch dezentrale Ansätze verwaltet. Nur wenige benötigen zusätzlich eine zentrale Instanz. Ebenfalls wird deutlich, dass sich die meisten Systeme auf spezielle Aspekte spezialisiert haben und kein System existiert, das versucht, in allen Eigenschaften nahe ans Optimum zu gelangen. Somit müssen bei der Auswahl eines Systems weiterhin alle Eigenschaften gegeneinander abgewogen werden. Neben den neuen Ausprägungen und der Weiterentwicklung der beschriebenen Eigenschaften muss in Zukunft viel Forschung im Bereich der gesamtoptimierten P2P-LiveStreaming-Systeme betrieben werden. Dadurch könnte die Auswahl relevanter Systeme allein durch den Einsatzzweck getroffen werden, ohne dabei alle Eigenschaften gegeneinander abwägen zu müssen. VI. FAZIT Durch den rapiden Anstieg der Live-Streaming-Nutzer und der immer weiter wachsenden Bandbreite der Internetanschlüsse, stellen P2P-basierte Systeme eine kostengünstige und skalierbare Alternative zum Client-Server Modell dar. Die Belastung des Streamservers wird deutlich reduziert und im Gegensatz zu IP-Multicast werden keine besonderen Anforderungen an das zugrundeliegende Netzwerk gestellt. Bei der Betrachtung existierender Klassifikationen solcher Systeme wurde festgestellt, dass keine umfassende Klassifikation möglich ist. Um dennoch kein System auszuschließen, wurden die in der Übersicht vorgestellten Systeme hinsichtlich ihrer Eigenschaften untersucht. Neben den grundlegenden Eigenschaften wie der Struktur des Overlays, der Art der Koordinierung und dem verwendeten Kommunikationsparadigma, bieten einige Systeme weitere Eigenschaften wie die 68 ~ 9 PEER-TO-PEER-BASIERTE LIVE-STREAMING-SYSTEME L ITERATUR [22] Yue Lu, Benny Fallica, Fernando A. Kuipers, Robert E. Kooij, and Piet Van Mieghem. Assessing the quality of experience of sopcast. Int. J. Internet Protoc. Technol., 4:11–23, March 2009. [23] Nazanin Magharei and Reza Rejaie. Prime: peer-to-peer receiver-driven mesh-based streaming. IEEE/ACM Trans. Netw., 17:1052–1065, August 2009. [24] Vinay Pai, Kapil Kumar, Karthik Tamilmani, Vinay Sambamurthy, and Alexander E. Mohr. Chainsaw: Eliminating trees from overlay multicast. Peer-to-peer systems IV, pages 127–140, 2005. [25] Kunwoo Park, Sangheon Pack, and Taekyoung Kwon. Climber: an incentive-based resilient peer-to-peer system for live streaming services. In Proceedings of the 7th international conference on Peer-to-peer systems, IPTPS’08, pages 10–10, Berkeley, CA, USA, 2008. USENIX Association. [26] Kunwoo Park, Sangheon Pack, and Ted „Taekyoung“ Kwon. An adaptive peer-to-peer live streaming system with incentives for resilience. Comput. Netw., 54:1316–1327, June 2010. [27] Darshan Purandare and Ratan Guha. An alliance based peering scheme for peer-to-peer live media streaming. In Proceedings of the 2007 workshop on Peer-to-peer streaming and IP-TV, P2P-TV ’07, pages 340–345, New York, NY, USA, 2007. ACM. [28] Darshan Purandare and Ratan Guha. BEAM: A Peer-to-Peer Framework for Live Media Streaming. Technical report, University of Central Florida, Orlando, 2007. [29] Sylvia Ratnasamy, Paul Francis, Mark Handley, Richard Karp, and Scott Shenker. A scalable content-addressable network. In Proceedings of the 2001 conference on Applications, technologies, architectures, and protocols for computer communications, SIGCOMM ’01, pages 161– 172, New York, NY, USA, 2001. ACM. [30] Antony Rowstron and Peter Druschel. Pastry: Scalable, decentralized object location, and routing for large-scale peer-to-peer systems. In Rachid Guerraoui, editor, Middleware 2001, volume 2218 of Lecture Notes in Computer Science, pages 329–350. Springer Berlin / Heidelberg, 2001. [31] Rüdiger Schollmeier. A definition of peer-to-peer networking for the classification of peer-to-peer architectures and applications. In Peer-toPeer Computing, 2001. Proceedings. First International Conference on, pages 101 –102, August 2001. [32] Henning Schulzrinne, Stephen L. Casner, Ron Frederick, and Van Jacobson. RTP: A transport protocol for real-time applications. IETF Request for Comments: RFC 3550, july 2003. http://tools.ietf.org/html/rfc3550. [33] Heiko Schwarz, Detlev Marpe, and Thomas Wiegand. Overview of the scalable video coding extension of the h.264/avc standard. Circuits and Systems for Video Technology, IEEE Transactions on, 17(9):1103 –1120, 2007. [34] Thomas Silverston and Olivier Fourmaux. Source vs data-driven approach for live p2p streaming. In Networking, International Conference on Systems and International Conference on Mobile Communications and Learning Technologies, 2006. ICN/ICONS/MCL 2006. International Conference on, pages 99 – 99, 2006. [35] Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, and Hari Balakrishnan. Chord: A scalable peer-to-peer lookup service for internet applications. In Proceedings of the 2001 conference on Applications, technologies, architectures, and protocols for computer communications, SIGCOMM ’01, pages 149–160, New York, NY, USA, 2001. ACM. [36] Long Vu, Indranil Gupta, Jin Liang, and Klara Nahrstedt. Measurement and modeling of a large-scale overlay for multimedia streaming. In The Fourth International Conference on Heterogeneous Networking for Quality, Reliability, Security and Robustness & Workshops, QSHINE ’07, pages 3:1–3:7, New York, NY, USA, 2007. ACM. [37] Susu Xie, Bo Li, Gabriel Y. Keung, and Xinyan Zhang. Coolstreaming: Design, theory, and practice. Multimedia, IEEE Transactions on, 9(8):1661 –1671, 2007. [38] Xinyan Zhang, Jiangchuan Liu, Bo Li, and Tak-Shing Peter Yum. Coolstreaming/donet: a data-driven overlay network for peer-to-peer live media streaming. In INFOCOM 2005. 24th Annual Joint Conference of the IEEE Computer and Communications Societies. Proceedings IEEE, volume 3, pages 2102 – 2111 vol. 3, 2005. [39] Ben Y. Zhao, John D. Kubiatowicz, and Anthony D. Joseph. Tapestry: An infrastructure for fault-tolerant wide-area location and. Technical report, Berkeley, CA, USA, 2001. [40] Qinglin Zhu, Rui Wang, Depei Qian, and Feng Xiao. Re-exploring the potential of using tree structure in p2p live streaming networks. In Network and Parallel Computing, 2009. NPC ’09. Sixth IFIP International Conference on, pages 125 –132, 2009. [1] Shahzad Ali, Anket Mathur, and Hui Zhang. Measurement of Commercial Peer-to-Peer Live Video Streaming. 2006. [2] Farid Benbadis, Fabien Mathieu, Nidhi Hegde, and Diego Perino. Playing with the bandwidth conservation law. In Peer-to-Peer Computing , 2008. P2P ’08. Eighth International Conference on, pages 140 –149, 2008. [3] Bartosz Biskupski, Raymond Cunningham, and Rene Meier. Improving throughput and node proximity of p2p live video streaming through overlay adaptation. In Multimedia, 2007. ISM 2007. Ninth IEEE International Symposium on, pages 245 –253, 2007. [4] Qingchao Cai, Xiaolu Zhang, and Xuejie Zhang. Streaming live media over bittorrent. In Communications and Mobile Computing, 2009. CMC ’09. WRI International Conference on, volume 3, pages 44 –49, 2009. [5] Bram Cohen. Incentives build robustness in BitTorrent. In Workshop on Economics of Peer-to-Peer systems, volume 6, pages 68–72, 2003. [6] Federico Covino and Massimo Mecella. Design and evaluation of a system for mesh-based p2p live video streaming. In Proceedings of the 6th International Conference on Advances in Mobile Computing and Multimedia, MoMM ’08, pages 287–290, New York, NY, USA, 2008. ACM. [7] Federico Covino and Massimo Mecella. Streamcomplete: an architecture for mesh-based peer-to-peer live video streaming. In Proceedings of the 6th IEEE Conference on Consumer Communications and Networking Conference, CCNC’09, pages 1004–1008, Piscataway, NJ, USA, 2009. IEEE Press. [8] Raymond Cunningham, Bartosz Biskupski, and René Meier. Managing peer-to-peer live streaming applications. In Proceedings of the 8th IFIP WG 6.1 international conference on Distributed applications and interoperable systems, DAIS’08, pages 140–153, Berlin, Heidelberg, 2008. Springer-Verlag. [9] Stephen E. Deering and David R. Cheriton. Multicast routing in datagram internetworks and extended lans. ACM Trans. Comput. Syst., 8:85–110, May 1990. [10] Benny Fallica, Yue Lu, Fernando Kuipers, Rob Kooij, and Piet Van Mieghem. On the quality of experience of sopcast. In Next Generation Mobile Applications, Services and Technologies, 2008. NGMAST ’08. The Second International Conference on, pages 501 –506, 2008. [11] Mário Rui Vazão Vasco Ferreira. Live streaming in overlay networks, october 2010. Master Thesis, Instituto Superior Técnico. [12] Hui Guo, Kowk-Tung Lo, and Chi-Tsun Cheng. Overlay networks construction for multilayered live media streaming. In Multimedia, 2006. ISM’06. Eighth IEEE International Symposium on, pages 427 –436, 2006. [13] Hui Guo, Kwok-Tung Lo, and Jiang Li. Lsonet: A case of layerencoded video transmission in overlay networks. In Tat-Jen Cham, Jianfei Cai, Chitra Dorai, Deepu Rajan, Tat-Seng Chua, and LiangTien Chia, editors, Advances in Multimedia Modeling, volume 4351 of Lecture Notes in Computer Science, pages 485–494. Springer Berlin / Heidelberg, 2006. [14] Poo Kuan Hoong and Hiroshi Matsuo. Push-pull incentive-based p2p live media streaming system. WTOC, 7:33–42, February 2008. [15] Akos Horvath, Miklos Telek, Dario Rossi, Paolo Veglia, Delia Ciullo, Maria Antonieta Garcia, Emilio Leonardi, and Marco Mellia. Dissecting PPLive, SopCast, TVAnts. submitted to ACM Conext, 2008. [16] Yang hua Chu, Sanjay G. Rao, Srinivasan Seshan, and Hui Zhang. A case for end system multicast. Selected Areas in Communications, IEEE Journal on, 20(8):1456 – 1471, October 2002. [17] Qi Huang, Hai Jin, and Xiaofei Liao. P2p live streaming with tree-mesh based hybrid overlay. In Parallel Processing Workshops, 2007. ICPPW 2007. International Conference on, pages 55 –55, 2007. [18] John Jannotti, David K. Gifford, Kirk L. Johnson, M. Frans Kaashoek, and James W. O’Toole, Jr. Overcast: reliable multicasting with on overlay network. In Proceedings of the 4th conference on Symposium on Operating System Design & Implementation - Volume 4, OSDI’00, pages 14–14, Berkeley, CA, USA, 2000. USENIX Association. [19] Xiaofei Liao, Hai Jin, Yunhao Liu, Lionel M. Ni, and Dafu Deng. Anysee: Peer-to-peer live streaming. In INFOCOM 2006. 25th IEEE International Conference on Computer Communications. Proceedings, pages 1 –10, 2006. [20] Yong Liu, Yang Guo, and Chao Liang. A survey on peer-to-peer video streaming systems. Peer-to-peer Networking and Applications, 1(1):18– 28, 2008. [21] Yunhao Liu, Li Xiao, Xiaomei Liu, Lionel M. Ni, and Xiaodong Zhang. Location awareness in unstructured peer-to-peer systems. Parallel and Distributed Systems, IEEE Transactions on, 16(2):163 – 174, 2005. 69 ~ 1 HARVESTING SENSOR NETWORKS Harvesting Sensor Networks Andreas Straninger nodes. The paper is structured as follows. Section II explains the properties of harvesting sensor nodes and introduces the terminology used. In Section III, algorithms for optimizing the energy available for a node are explained. Section IV introduces algorithms, which address sensor network specific problems. Harvesting specific algorithms for rate adaption, routing and compression are depicted. Finally in Section V, a conclusion is drawn and ideas for future research are given. Abstract—Battery powered Wireless Sensor Networks only have a limited lifetime and have to be replaced if the battery drops to zero. Using renewable energy sources to recharge batteries allows sensor nodes theoretically to attain indefinite lifetime. Thus, the focus moves from maximizing the lifetime to maximizing the usage of harvestable energy. This affects the sensors energy saving strategies, rate adaption, the establishment of routes, compression and the use of error correcting codes. This Seminar work aims to give an overview on algorithms, which maximize the efficiency of harvesting sensor nodes. I. I NTRODUCTION Sensors are widely used for gathering information about the environment. One task for a sensor network is field monitoring, where sensors are deployed at an area and information is routed to one or more base stations (see e.g. [2]). Sensors regularly collect information, e.g. temparature or humidity, at a constant rate. The maximum sensing rate for each sensor would be of interest. Another task, which could be performed by sensor nodes deployed over a field is event monitoring. In constrast to field monitoring, only a selected set of events is transmitted, e.g. detected smoke by a fire sensor. Currently, most sensors are supplied by a battery and have to be exchanged, when the sensor node gets out of energy. Algorithms for maximizing the lifetime in sensor networks with batteries are used. Recent works propose the usage of renewable energy sources for sensors in combination with rechargable batteries. If the battery is low, a sensor can shut down components to reduce energy consumption and reload the battery, when energy is available and can be harvested. A harvesting sensor can theoretically work forever. Energy sources, which can be used in harvesting sensor networks (e.g. [6]) are solar, mechanical and thermal energy. Solar energy can be harvested outdoors from the sun or indoors from artificial lights with solar panels. Mechanical energy occurs as vibrational or kinetic energy. Vibrations are harvested by using a piezoelectric capacitator, kinetic energies can be harvested with generators. Thermal energy in terms of temperature differences can also be harvested. The transmission range of sensors usually is limited. Each Sensor collects informations, initiates the transmission of collected informations and routes information to the sink. Compared to a peer to peer network, connections cannot be established arbitrarily. Only connections to locally near sensor nodes are possible. Sensors buffer the information collected and send it to neighbour nodes. In harvestin sensor networks, optimal routes do not necessarily follow the shortest paths with the least possible number of hops. Instead, a routing algorithm would prefer nodes with the highest possible harvesting opportunities. Maximization of energy usage from the environment is one of the task which emerges from the usage of harvesting sensor II. BASICS The authors in [2] suggest 3 kinds of energy storage, harvesting systems with no energy storage, harvesting systems with ideal energy buffer and harvesting systems with non-ideal energy buffer. In harvesting systems with no energy storage, for each point in time only the energy harvested can be used. A harvesting systems with ideal energy buffer is able to store and restore all the energy harvested without any losses. Harvesting systems with non-ideal energy buffers have a limited storage capacity, a charging efficiency < 100% and also have a leakage, i.e. a loss of energy over time. In the following it is assumed if not explicitly mentioned, that sensors use batteries as a non-ideal energy buffer. In practice, ultra capacitators and rechargable batteries are used as energy buffers. Ultra capacitators have a high charging efficiency but also a high leakage and a low energy density, i.e. storage capacity per volume. They can be used if high power is available over small time intervals of about a second or less. Rechargable batteries usually have a higher energy density and are suitable for energy that is available for longer periods of time. Sensor nodes use algorithms to control the energy consumption and adjust the duty cycle. The duty cycle is the fraction of time, where the sensor is busy. Sensors are either in active mode or consume a small amout of energy in sleep mode. Empty batteries should be avoided because sensors regularly have to switch to active mode to sense information. A sensor which harvests the same amount energy which it consumes over the time it is deployed, without getting out of battery energy, works at energy neutral operation. If a sensor consumes more energy than harvested before, the battery level may drop to zero and the sensor may be interrupted. On the other hand, if a sensor consumes less energy than possible, the battery may be fully loaded and thus not able to store surplus energy harvested. Hence, an algorithm that optimizes the duty cycle has to estimate the future harvesting opportunities, so that energy neutral operation is possible, and no energy is wasted. Sensors usually provide a sleep mode, where a minimum amount of energy is consumed. In active mode, a sensor 70 2~ HARVESTING SENSOR NETWORKS may reduce the energy consumption by switching off parts of the hardware e.g. the sensing module or the communication module. Besides, a sensor needs energy for each transmission of data. Thus, an optimized sensing rate and optimal routes for a minimized amout of energy needed for transmission is searched. To measure the current energy produced in an interval, [2] recommend to monitor the energy production of the harvesting source rather than monitoring the battery level because there is only a small change in change of voltage at the battery, compared to the change of voltage in the harvesting module. Algorithms operate either on global knowledge or on local knowledge. Algorithms with global knowledge have information about the state of each deployed sensor node. They can run on a node with high computation power. However, the collection of sensor node states leads to additional transmission overhead and delays. The transmission overhead will be to high to be neglected and delays can cause nodes to make necessary adjustments too late and operate with suboptimal parameters. Algorithms which directly operate on a sensor node with local knowledge only have information about the state of the sensor node and can determine the state of neighboring nodes. Since computation power of sensor nodes is limited, low complexity solutions are required. With the ability to adapt the duty cycle, the energy wastage can be minimized. The following section addresses the issue of optimizing the duty cycle with the use of the state of the sensor node and its sourrounding. opportunities are not known in advance. The algorithm proposed makes predictions about future harvesting opportunities in a first step and then in a second step determines the optimal duty cycle. The duty cycle is readjusted in a third step, if the energy harvested deviates from the energy predicted. In the first step, the algorithm predicts the energy available with an Exponentially Weightetd Moving-Average. The predicted value x̄(i) at time i is: x̄(i) = αx(i − 1) + (1 − α)x(i) where x(i) is the energy harvested at time i. Several values for α have been tested and a value of α = 0.5 is suggested. In experiments, an initial training for 72 hours has been performed before the usage of the sensor nodes. Predictions for each slot x(i) are refreshed after the energy energy yield at slot i has been determined. A window size of 24 hours is chosen, consisting of NW time slots x ∈ W . In experiments, NW = 48 time slots have been chosen with a size of 30 minutes each. The algorithm distinguishes sun duty cyles S = {i|Ps (i) − Pc ≥ 0} where more energy is harvested than consumed and dark duty cycles D = {i|Ps (i) − Pc ≥ 0} where more energy is consumed than harvested. The optimization problem is reformulated as: NW X i=1 In this section, algorithms for energy prediction and energy usage are presented. The algorithms either schedule the duty cycles on the basis of energy observations or learn how to optimally adapt the duty cycle on the basis of the current sensor state. In the following, one scheduling algorithm and two algorithm that work on current sensor states are presented. A. Scheduling duty cycles The authors in [2] present an algorithm that maximizes the duty cycle over the time, where the sensor is deployed. The algorithm is designed for solar harvesting sensors, therefore it is postulated, that energy patterns reoccure periodically. The period, a day for solar harvesting sensors, is divided into NW time slots. For each time slot i, the power harvested Ps (i), the power consumed Pc (i) and the duty cycle D(i) are considered to be constant. The maximization of duty cycles is expressed as NW X X i∈D D(i)[ X 1 Pc + Ps (i)(1 − )] + Pc D(i) η η i∈S In the second step, the minimum admissible duty cycle is assigned for time slots, where more energy is consumed than harvested and the maximum admissible duty cycle is assigned for time slots, where less energy is consumed than harvested. Then two cases may occure, either there is still energy available or too much energy is assigned to the duty cycles. In the first case, the maximum duty cycle is assigned to additional slots in D, dependent on their harvesting opportunities. Otherwise, the duty cycle of all slots in S is reduced uniformly by a modifier δ. After each time slot, the algorithm corrects in the third step the duty cycle assigned. If less energy is harvested than predicted, the duty cycle of some future time slots is reduced to the minimum duty cycle. Otherwise duty cycles with the lowest duty cycles are increased. In evaluation the authors compared their low complexity algorithm with local knowledge to an optimal solution, which is calculated with global knowledge. They used the same energy prediction method for both algorithms and achieved a good result for the low complexity variant. A drawback of the algorithm is that harvesting predictions are only usable after 72 hours. Thus, the sensor would have to work initially on a reduced duty cycle. III. E NERGY P REDICTION AND U SAGE max Ps (i) = D(i) i=1 An optimization problem is formulated that takes the power harvested, the power consumed, the battery level and properties of the battery into account. The problem can be solved with high computational power and knowledge about future harvesting opportunities. Since the optimization problem is too complex to be solved on sensor nodes, the authors propose a local low complexity solution. Furthermore, future harvesting B. Learning adaption rules The Idea of the algorithm introduced by Vigorito [7] is to minimize the usage of the battery. This is done on the one hand to minimize the losses which occure when charging or discharging batteries. Then, if the battery is full, energy which 71 ~ 3 HARVESTING SENSOR NETWORKS A probabilistic approach for adapting the energy usage of sensor nodes is presented in [4]. Only two states for sensor nodes are assumed, an active mode and a sleep mode. Transations between the states are determined by strategies which are based on properties of the sensor, the battery state or the queue for outgoing messages, or properties of the sourrounding, the channel quality or the solar radiation. Hybrid strategies which use more than one properties are also mentioned. For example, a strategy which is based only on the message queue of size 10 containing x messages and can be formulated in the following way: cannot be used is wasted and if the batterie is empty, the node gets out of energy. Finally, most types of batteries like NiMH and Li-Ion Batteries have a longer lifetime if they are not completely discharged. The algorithm aims to minimize the quadratic deviation of the battery level Bt from the desired level B ∗ . In other words, the algorithm tries to minimize the equation lim N →∞ N X t=1 (Bt − B ∗ ). To achieve this, the algorithm makes use of control theory. The Battery Level at time Bt + 1 can be expressed as Pactive→sleep (x) = 0.8|x ≤ 4 Pactive→sleep (x) = 0.3|x > 4 Bt+1 = aBt + but + cwt + wt+1 Psleep→active (x) = 0.3|x ≤ 3 where ut is the utility of the sensor, and wt is some noise. a, b and c are unknown constants. It is mentioned in [7], that the optimal control law for ut is Psleep→active (x) = 0.7|x > 3 The authors analyzed the influence of different strategies on the package drop rate respectively the package blocking rate. This was done by modeling the arrival of packages at a node as a batch markovian arrival process, where states are defined for each of the properties and for the state of the sensor node S ∈ wake, sleep. B ∗ − (a + c)Bt + cB ∗ ut = b The constants a, b, c are calculated via fixpoint iteration. Thus, θ = (a + c, b, c)T and φt = (Bt , ut , −B ∗ )T are defined with φTt θ = y ∗ . θ is calculated with fixpoint-Iteration. Using fixpoint iteration has the advantage, that a, b and c do not necessarily have to be constant but may change over time. Update rule is given by θ̂t+1 = θ̂t + µ φTt φt IV. ROUTING AND N ETWORK A. Maximum flow [2] suggest an approach for maximizing the throughput and determining a constant sensing rate which is equally assigned at all sensor nodes. The energy consumption of a node is given by φt (Bt+1 − φTt θ̂t ) The authors also provide a way to reduce the variance of the duty cycle. Therefore, ut is not used directly, instead, the smoothened duty parameter pt is calculated: P (i, j) = r[α1 + α2 d(i, j)2 ] ut ¯+ 1 = u¯t + α(u − ū) where “d(i, j) is the distance” between nodes i and j, r is the data rate and “α1 and α2 are radio [frequency] dependent” constants. Given the duty cycle for node i at time t, problem can be formulated as a maximal flow problem where the duty cycle determines the maximal flow through a sensor node and the power P (i, j) determines the actual costs for sending a message from node i to node j. After assigning the flow, the maximum sensing rate can be computed. The algorithm still does not allow the adjustment of sensing rates based on local knowledge. Besides, the approach does not allow sensing rates to be readjusted if the energy harvested varies. It is an exponentially weighted utility with old values of u with α < 1. Then, pt+1 = βut + (1 − β)ūt with 0 ≤ β ≤ 1 is calculated. Experimental results have been made with µ = 0.001 and different values for α and β. Best results could be achieved with α = 10−4 and β = 0.25 with time steps of 1 minute. The authors compared their solution to the algorithm proposed in [2] and claim to achieve better results with their algorithm. At evaluation, a higher uptime, lower variance of the battery level, and a higher duty cycle was measured. The evaluation was done as a simulation, where measured data of sensors have been used. B. Rate adaption An approach, which calculates the throughput for a network with fixed routes is presented in [1]. The optimal throughput can be calculated centrally by solving a liniear programming problem. This is done by formulating the necessary constraints for energy consumption of the sensor node, energy needed for routing, and properties of energy neutral operation dependent on the sensing rate. A local solution for the problem is constructed in two steps. First, the maximum sensing rate is calculated for each sensor node. If the battery would drop to zero after a time interval, the C. Probabilistic duty cycle adaption Duty cycle adaption algorithms specify the fraction of time, where the sensor is in the wake state or in the sleep state. If a sensor is set to a specific duty cycle, it is not clear, at which parts of the sensors are active and at which intervals they are active. 72 4~ HARVESTING SENSOR NETWORKS sensing rate is adapted. In a second step, each node initiates a request for the sensing rate. The desired rate initially is set to the maximum rate. If a node between the initiator and the sink is not capable of assigning the requested rate for the initiator, all existing assignments are adapted in a fair way and updates are sent. The authors collected harvesting profiles and sensing rates on from a sensor environment and evaluated the algorithm in a simulator. A high running time of the algorithm occured due to frequent rate adaptions. The authors also mention, that higher rates could be assigned more homogeneously among sensor nodes if alternate routes would be possible. Fig. 1. Comparison of routes calculated with MP, MF and R-MPRT. Dark areas correspond to low harvesting opportunities, bright areas correspond to high harvesting oppor. Source: [3] The randomized minimum path energy (R-MPE) algorithm, computes the minimum path energy, i.e. the energy, which is necessary to route a package from the current node to the sink over a selected next hop neighbor. The probability for choosing a node as the next hop neighbor is inversely proportional to the minimum path energy. The randomized minimum path recovery time (R-MPRT) algorithm is similar to R-MPE. Instead of the link energy, the path recovery time is used, i.e. the time needed to harvest the link energy at the sender node. Finally, with the randomized maxflow (R-MF) algorithm, the optimal flow for each node is centrally calculated. The propability for selecting a node for the next hop are proportional to its optimal flow. Since the algorithm cannot operate on local knowledge, but also uses random node selection, it is only introduced for comparison purposes. The authors showed, that the energy aware algorithms, RWMP, R-MPE and R-MPRT, perform better than the MP algorithm. Though, compared to the optimal flow, R-MPE and R-MPRT have a performance of about 10% to 40%. In evaluation, the routes were chosen individually for each message. Nevertheless, establishing static routes and reestablishing them regularly is possible to use the rate adaption algorithm presented in this section. Variations of the algorithm R-MPRT can be of use. Firstly, the duty cycle can be used for creating the routing tables instead of the minimum path energy. Then, the authors only address route selection for field monitoring. If routes for event monitoring are required, the maximum delay can be used instead of the minimum path energy. C. Greedy Routing A quite simple routing approach is presented in [8]. The algorithm selects the most promising node for next hops dependent on the euclidean distance between the current node and the receiver node, the link state quality, as well as the battery level and the energy production and consumption rates. Informations can be sent between any two sensor nodes in the network. This approach balances the load so that overload situations of nodes are prevented. However, the energy aware greedy routing approach is not the best choice for the monitoring tasks of sensors. Firstly, each sensor node usually only routes its information to one sink. Arbitrary routes are not required and may lead to unneccessary computational overhead. Secondly, no routing tables are used, and thus greedy routing may not be able to find a route in some cases. D. Harvesting aware Routing Tables Routing tables can be used to determine routes between two sensor nodes. For event monitoring and field monitoring, each sensor node has to be able to establish a route only to a collecting node, but not between each other. In a sensor network, where each sensor node has enough energy, a node would keep track about the minimum number of hops to reach a collecting node. Routes would be established to minimize the number of hops. Hence, in harvesting sensor networks, the throughput is limited by the amount of energy harvestable. Thus a higher node availability and thus a higher throughput is expected, if nodes with higher harvesting opportunities are preferred. In [3], five algorithms for harvesting sensor networks are presented and evaluated in a simulation environment. For each sensor node, the average harvesting capabilities are known. The minimum path (“MP”) algorithm selects the shortest path based on the minimum number of hops. For the other four algorithms, nodes randomly make a selection of their next hops. In the randomized weighted minimum path (R-WMP) algorithm, the probability for selecting a node for the next hop is inversely proportional to the package energy, and to minimum number of hops from the next hop node to the sink. The package energy is the energy necessary to transmit the message from the current node to the next hop node. E. Compression Properties about static routes are also discussed in [5]. The authors propose to aggregate and compress data and in this way save energy and reduce the number of messages sent. The authors state, that individual routes, which are established for each message arouse data collisions. Additionally, sensor nodes can aggregate and compress data with the same destination to reduce the amount of transferred data and thus save energy. The method presented divides the area, where sensor nodes are deployed into regions. For each region, a node is chosen which is denoted “border node”. A border node in harvesting sensor networks should be close to the sink and have high 73 ~ 5 HARVESTING SENSOR NETWORKS by taking into account the availability of renewable energy sources. Sophisticated methods can be developed to minimize the number of necessary sensors given a sensing task and a map of energy desities over an area. Besides duty cycle adaption for single sensor nodes, neighborhood aware duty cycle adaption for harvesting nodes could improve the transmission options. Successful transmission is only possible, if two neighboring sensor nodes have both switched on their transceiver module. If the sensor nodes are deployed adversely, so that similar duty cycles at the same time for both sensors are improbable, a connection will be established rarely. This could cause worse routes and consequently additional communication overhead. R EFERENCES Sensor Node Border Node Sink [1] K.W. Fan, Z. Zheng, and P. Sinha. Steady and fair rate allocation for rechargeable sensors in perpetual sensor networks. In Proceedings of the 6th ACM conference on Embedded network sensor systems, pages 239–252. ACM, 2008. IV-B [2] A. Kansal, J. Hsu, S. Zahedi, and M.B. Srivastava. Power management in energy harvesting sensor networks. ACM Transactions on Embedded Computing Systems (TECS), 6(4):32, 2007. I, II, III-A, III-B, IV-A [3] E. Lattanzi, E. Regini, A. Acquaviva, and A. Bogliolo. Energetic sustainability of routing algorithms for energy-harvesting wireless sensor networks. Computer Communications, 30(14-15):2976–2986, 2007. IV-D, 1 [4] D. Niyato, E. Hossain, and A. Fallahi. Sleep and wakeup strategies in solar-powered wireless sensor/mesh networks: Performance analysis and optimization. IEEE Transactions on Mobile Computing, pages 221–236, 2007. III-C [5] D. Petrovic, R.C. Shah, K. Ramchandran, and J. Rabaey. Data funneling: routing with aggregation and compression for wireless sensor networks. In Sensor Network Protocols and Applications, 2003. Proceedings of the First IEEE. 2003 IEEE International Workshop on, pages 156–162. IEEE, 2003. IV-E, 2, 1 [6] W.K.G. Seah, Z.A. Eu, and H.P. Tan. Wireless sensor networks powered by ambient energy harvesting (WSN-HEAP)-Survey and challenges. In Wireless Communication, Vehicular Technology, Information Theory and Aerospace & Electronic Systems Technology, 2009. Wireless VITAE 2009. 1st International Conference on, pages 1–5. IEEE, 2009. I [7] C.M. Vigorito, D. Ganesan, and A.G. Barto. Adaptive control of duty cycling in energy-harvesting wireless sensor networks. In Sensor, Mesh and Ad Hoc Communications and Networks, 2007. SECON’07. 4th Annual IEEE Communications Society Conference on, pages 21–30. IEEE, 2007. III-B [8] K. Zeng, K. Ren, W. Lou, and P.J. Moran. Energy aware efficient geographic routing in lossy wireless sensor networks with environmental energy supply. Wireless Networks, 15(1):39–51, 2009. IV-C Fig. 2. Comparison of routes calculated with MP, MF and R-MPRT. Dark areas correspond to low harvesting opportunities, bright areas correspond to high harvesting oppor. Adapted Source: [5] harvesting opportunities 1 . Each node of a region sends its information to the border node. Border nodes merge and compress incoming messages. The authors achieve compression rates of about 50% and reason, that less collisions occur due to a lesser number of messages. To avoid delays in field monitoring and to reduce memory usage, messages should be sent early, if the initiating sensor nodes have a high distance to the sink. V. C ONCLUSION AND F UTURE W ORK A. Conclusion In this seminar work an overview on algorithms for optimizing the energy usage have been introduced, and algorithms for solving sensor specific problems have been introduced. For optimizing the energy usage for a single sensor node, a scheduling method which makes use of future estimation, an approach that uses control theory and estimates energy and sensor specific parameters, and a probabilistic approach have been introduced. Furthermore, the rate adaption algorithms, routing algorithms and an algorithm for compressing data have been demonstrated as further tasks for harvesting sensors. B. Future Work Harvesting Sensor networks are a quite new research topic. Future research could focus for example on sensor positioning. In battery powered sensor networks, deployed sensors, which get out of battery energy will be replaced by new sensors. Yet, improved positioning of harvesting sensors can be realized 1 In [5], the authors defined the algorithm for non-harvesting battery powered sensor networks. Thus they proposed to use the node of a region, which is closest to the sink, i.e. it has the minimum number of hops to the sink 74 ~ 1 LOAD BALANCING IN PEER-TO-PEER NETZWERKEN SURVEY Load Balancing in Peer-to-Peer Netzwerken Survey Johannes Thomas II. L OOKUP O PTIMIERUNG UND C ACHING Zusammenfassung—Load Balancing ist einer der größten Ansatzpunkte um Peer-to-Peer Netzwerke effektiver zu gestalten. Jedoch gibt es verschiedene Arten von Peer-to-Peer Netzwerken. Unter anderem kommt es auf die Zusammensetzung der Clients an, welche von Handys bis zu Hochleistung-Rechnern variieren können oder auf den Aufwand des Routings im jeweiligen Netz. Auch die lokale Clusterung des Netzes sollte nicht ignoriert werden. Ohne Lastverteilung kann es in einem Netzwerk zu Engpässen kommen, welche dessen Effektivität erheblich beeinflussen kann. Diese Survey stellt für verschiedene ausgewählte DHT (D̈istributed Hash Table¨) Peer-to-Peer Netzwerke Lösungsansätze vor. Außerdem werden hierbei Strukturen betrachtet, welchen auf DHT aufbauen und teilweise benötigt werden um bestimmte der folgenden Lösungen umzusetzen. Cachen beziehungsweise Kopieren der gefragtesten Objekte ist bei den vorgestellten Lösungen genauso entscheidend wie das Ausnutzen der lokalen Clusterung des Netzen um Overhad zu vermeiden. Nimmt man in einem strukturierten DHT-Netzwerk eine Gleichverteilung von den gesuchten Objekten, jedoch mit einer Zipf-Artige Anfragen-Verteilung, [3] an, gibt es hierzu Lösungsvorschläge, die eine signifikante Verbesserung bezüglich Skalierbarkeit und Leistung ermöglichen. Auf diesen Ansatz möchte ich hier etwas genauer eingehen [2]. Das Problem ist, dass trotz der gleichverteilten Objekte einzelne Knoten eine viel höhere Last haben, da das Interesse an den Objekten in den meisten Fällen nicht gleich verteilt ist. Einzelne Objekte werden zum Beispiel permanent von vielen verschiedenen Knoten abgefragt, während andere im Extremfall nie abgefragt werden. Der hier beschriebene Ansatz wird in zwei Unterpunkte aufgeteilt. Einmal eine Optimierung der Routings sowie dem Cachen von Objekten. Anzumerken ist, dass diese Optimierung nur die Lastverteilung des Lookups und das Bereitstellen von Objekten betrifft. I. E INFÜHRUNG A. Routing Unter den Peer-to-Peer Netzwerken gibt es verschiedene Arten von Strukturierungen. Die Unstrukturierten zeichnen sich dadurch aus, dass das Suchen von Objekten meistens durch ein Fluten des Netzwerks umgesetzt wird, sowie dass die einzelnen Clients sich nicht sicher sein können, welche anderen Knoten noch im Netzwerk aktiv sind [1]. Es ist somit nicht verwunderlich, dass es schwer ist in diesem Fall eine Last-Verteilung vorzunehmen, da extrem viele Verbindungen nötig wären, sodass sich die einzelnen Knoten über ihre Last austauschen können und entscheiden wie diese umverteilt werden können. In dieser Survey wird deshalb nur auf strukturierte Netzwerke eingegangen. Diese sind meistens durch ein DHT-Protokoll strukturiert, welches effizientes Suchen über das Netzwerk zulässt und grundlegende Möglichkeiten bietet umgebungsabhänige Optimierungen durchzuführen. Trotzdem sind die meisten Netzwerke in der Lage Beitritte und Austritte von Clients aus dem Netzwerk zu verkraften ohne die Integrität zu verlieren. Dadurch eignen sich strukturierte Peer-toPeer Netzwerke besonders um durch Last-Verteilung optimiert zu werden. In dieser Survey werden verschiedene Ansätze ausgesucht und vorgestellt um eine bessere Last-Balancierung in strukturierten DHT-Netzwerken zu erhalten. Diese werden durch eine Einleitung, die wichtigsten Zwischenschritte sowie der Auswertung der Ergebnisse zusammengefasst. Es wird bewusst nicht tiefer auf die technischen Details eingegangen um eine schnelle aber effektive Übersicht verschiedener Lösungsansätze zu gestalten. Die ausformulierten Algorithmen sind in den jeweiligen Quellen zu finden sowie ausführliche Beschreibungen. Der Grundgedanke beim optimieren des Routings ist, dass die Knoten, die unter einer erhöhten Last durch ihre oft abgefragten Objekten stehen, sich nicht auch noch um das Routing kümmern müssen, da von diesem eine nicht unerhebliche Last ausgeht. Anstatt Anfragen immer auf denselben Knoten zu weiterzuleiten, werden die Anfragen auch auf die NachbarKnoten des Ziels verteilt. Hierzu sammeln die einzelnen Knoten Informationen zu den anderen Knoten in ihrer RoutingTabelle. Dies beinhaltet die Anzahl, der an sie weitergeleiteten Anfragen. Außerdem hängen alle Knoten an ihre ausgehenden oder weitergeleiteten Anfragen ihre eigene Last an. Es werden somit keine zusätzlichen Nachrichten erstellt, sondern nur die Vorhandenen um Informationen erweitert. Hiermit erhalten alle Knoten eine ungenaue aber ausreichende Übersicht über die Last der umliegenden Knoten. Bei jeder neuen erhaltenen Anfrage werden die Routing-Tabellen mit der Last-Tabelle abgeglichen und stark belastete Knoten aus der Routing-Tabelle entfernt. Dies stellt eine Mischung zur Routing-Optimierung auf Basis von Last sowie der näheren Umgebung der Knoten dar. Stark belastete Knoten werden nicht mehr zum Finden von Objekten verwendet, sondern müssen sich nur noch um das Verteilen der auf ihnen liegenden Objekte kümmern. B. Caching Durch die Routing-Optimierungen wird Last von den Knoten genommen, die viele Objekte halten. Oft jedoch reicht dies nicht alleine aus, da ein Knoten nicht immer die ganze Last eines kompletten Netzwerken tragen kann. Hier kommt 75 2~ LOAD BALANCING IN PEER-TO-PEER NETZWERKEN SURVEY Caching ins Spiel. Dazu zählt der Knoten die Anzahl der Anfragen sowie welche der Objekte angefordert werden. Sobald ein festgelegter Grenzwert erreicht ist, werden die Werte der einzelnen Objekte normalisiert. In diesem Fall heißt das, durch den Grenzwert geteilt und auf einen Teil des letzten Ergebnisses aufaddiert wird, wenn es sich nicht um das letzte gecachte Element handelt. Falls der Knoten aktuell unter Last steht, wird aus der Liste das Objekt mit dem höchsten Wert genommen und eine Caching-Anfrage an den Knoten gestellt, von dem die meisten Anfragen auf das Objekt gestellt oder weitergeleitet wurden. Danach werden die Zähler zurückgesetzt. Dass Normalisieren dient dazu, dass auch neuere Objekte eine Chance haben gecacht zu werden. Sonst könnte es passieren, dass ein Objekt welches über einen längeren Zeitraum oft angefragt wurde über ein neues, jetzt sogar viel stärker, aber kürzer, benötigtes Objekt dominiert . Es ist außerdem zu überlegen, wieviele Objekte ein Knoten cachen darf, bevor eine der Kopien verworfen werden muss. In diesem Fall wurde der Wert drei genommen, da sich dieser in Experimenten als gut erwiesen hat. Bei geringeren Werten kommt es sonst vor, dass zwei ähnliche oft benötige Objekte abwechselnd gecacht werden und somit zusätzliche Last entsteht. Ein weiter Vorteil dieses Ansatzes ist, dass er ohne Änderungen im Aufbau des Netzwerkes zu implementieren ist. Es ist nicht nötig, eine permanente Umverteilung der Objekte im Netzwerk durchzuführen. Außerdem ist es nur während des Cachings von Nöten zusätzliche Nachrichten zu verschicken, was den Overhead des Algorithmus eindämmt. entsteht kein weiterer Overhead, da man davon ausgehen kann, dass die Hash-Funktionen allen Knoten bekannt sind. Somit ist es einfach, die effektiv genutzte Zahl der Hash-Funktionen dynamisch zu erhöhen. Diese sind durchnummeriert, sodass dieselbe Nummer bei allen Knoten auf dieselbe Hashfunktion verweist Diese Optimierung betrifft nur das bereitstellen von Objekten. A. Erstellen und Löschen von Kopien Um dies umzusetzen, erzeugt ein Knoten, wenn die Last einen bestimmten Grenzwert überschreitet, eine Kopie des gefragtesten Objektes und hasht dieses mit einer weiteren Hash-Funktion, welche durchnummeriert sind. Diese Nummer wird auch an das Objekt angehängt, sodass erkennbar ist, welche Hash-Funktion dafür genommen worden ist. Diese Kopie wird dann auf eine der umliegenden Knoten verschoben. Dadurch sollte sich die Last auf diesem Objekt halbieren, da die andere Hälfte durch die Kopie von dem anderen Knoten übernommen wird. Sollte die Last für das Objekt weiterhin zu groß sein, werden weitere Kopien in Umlauf gebracht und der Zähler der Hash-Funktion weiter erhöht. Wenn die Last der Knoten unter einen bestimmten Grenzwert fällt, wird angefangen von den beliebtesten Objekten Kopien zu löschen, die auf dem jeweiligen Server liegen. Somit muss auch der Zähler der Hash-Funktion verringert werden. Dies wird solange ausgeführt bis der Knoten über den Grenzwert der geringen Last kommt oder keine Kopien mehr auf ihm liegen. C. Ergebnis B. Finden von Kopien Die durchgeführten Experimente mit den beiden Techniken zeigen, dass schon alleine die Routing-Optimierung die Last der am stärksten ausgelasteten Knoten halbieren könnte. Durch dass hinzunehmen des Cachings wird die Last der Knoten so gut verteilt, dass alle Knoten von der Last her jetzt sehr nahe beieinander liegen. In einem strukturierten Peer-To-Peer Netzwerk mit gleich verteilten Objekten, stellt dieser Ansatz somit eine sehr gute Lösung dar, um die Last auf alle Knoten zu verteilen. Neu hinzukommende oder verlassende Knoten stellen für diesen Algorithmus kein Problem dar, auch wenn es nicht explizit experimentell getestet worden ist. Hierzu müsste des weiteren ein System implementiert werden, welches neue Knoten effektiv in das Netzwerk eingliedert sowie das Verlassen von Knoten ausreichen bekannt gibt, sodass beliebte Objekte direkt wieder gecacht werden können. Damit auch die Kopien im Netzwerk gefunden werden können, muss als erstes, dass ursprüngliche Objekt geladen werden um die Aktuelle Hash-Nummer herauszufinden. Beim nächsten Versuch auf dieses Objekt zuzugreifen, ist die Nummer bekannt und es wird eins der Objekte mit dem Hash, der zufällig gewählt zwischen den ursprünglichen Objekt und der aktuellen Hash-Nummer liegt, gewählt. Es wird nun im Netzwerk nach diesem Objekt gesucht anstatt auf dass Ursprungsobjekt zuzugreifen. Dadurch wird die Last ab dem zweitem Zugriff gleichmäßig auf alle Knoten verteilt, die eine Kopie des Objektes halten. Im Vergleich zu nur einem Knoten, der das Objekt hält, kann somit ein starke Leistungssteigerung erzielt werden. Es kann jedoch vorkommen, dass eine Anfrage für ein Objekt kommt, welches durch das Löschen von Kopien oder dem Austreten des Knotens, der die Kopie hielt, nicht mehr existiert. In diesem Fall wird eine Anfrage an das Ursprungsobjekt gestellt, welches dadurch auch wieder die aktuelle Hash-Nummer liefert für zukünftige Anfragen. III. KOPIEN Das Konzept der Kopien bezieht sich auch darauf, dass die meisten Peer-to-Peer Netzwerke einer Zipf-Artigen AnfragenVerteilung unterliegen [3]. Dadurch kann es passieren, dass einzelne Knoten überladen werden und sich dadurch die Leistung des Netzwerkes verschlechtert bis hin zum Datenverlust. Der Gedanke ist, durch weitere Hash-Funktionen Kopien des gefragten Objektes anzufertigen und diese auf schwächer belastete Knoten zu verteilen [4]. Der Vorteil von den HashFunktionen ist, dass es leicht ist, viele zu generieren und bei allen Knoten des Netzwerkes bereitzuhalten. Hierdurch C. Ergebnis Durch dieses System können die Zugriffszeiten auf ein häufig angefragtes Objekt verringert werden. Jedoch funktioniert diese Technik nur, wenn es um dasselbe Objekt geht, welches häufig angefordert wird. Änderungen an diesem können nicht übernommen werden und es entsteht dadurch ein neues Objekt, für das gegebenenfalls weitere Kopien angefertigt 76 ~ 3 LOAD BALANCING IN PEER-TO-PEER NETZWERKEN SURVEY werden müssen. Außerdem kann, wenn Knoten das Netzwerk verlassene, dies zusätzliche Last auf den Ursprungsknoten des Objekten hervorrufen. Somit ist diese Lösung nicht für einen ständig wechselnden Datenbestand geeignet oder für Netzwerke, bei denen auf Objekte nicht wiederholt zugegriffen wird, da die erste Anfrage immer an den Ursprungsknoten geht und ihn somit gleichstark belastet wie ohne Optimierung. Verbesserungen zu dieser Überlegung die sich um die aufgezeigten Probleme kümmern stehen in Planung der Autoren. solange durchgeführt, bis keine sinnvollen Paarungen mehr möglich sind. Stehen jedoch noch Lastumverteilungen an, die so nicht durchgeführt werden können, werden diese an die Eltern-Knoten weitergegeben und von diesen weiterverwendet. Dies geht bis zum Wurzel-Knoten weiter. Dieser jedoch muss sich nicht an einen Grenzwert halten um Lastverteilungen durchzuführen. C. Umgebungsbewusste Lastverteilung Damit durch die Lastverteilungsreihenfolge, welche bei den Blättern des Baumes beginnt auch der physikalischen Umgebung entspricht, müssen die Abstände der Knoten erkannt und in den Baum eingepflegt sein. Um die Abstände zu erkennen eignet sich ein Landmarken-System. Hierbei werden im Netzwerk eine Anzahl Landmarken verteilt welche als Fix-Punkte genutzt werden. Jeder Knoten stellt die Abstände zu ihnen fest und speichert diese. Diese Informationen sind jedoch Mehrdimensionales Datensätze, da für jede Landmarke ein Wert gespeichert werden muss. Da diese sehr umständlich in einem Netzwerk zu nutzen sind, wird das Array auf die Hilbert-Kurve abgebildet. Durch diese wird aus den MehrdimensionalenDatensätzen ein einzelner Wert welches jedoch die Abstandsinformationen der einzelnen Knoten weiterhin behält. Durch diese Vereinfachung ist es leichter die Umgebungsinformationen auf den DHT-Adressraum abzubilden und somit den K-Nary-Baum Umgebungsbewusst zu gestalten. Es ist also nach der Strukturierung davon auszugehen, Eltern und Kinder eines Knoten möglichst nahe beieinander liegen. Bei der LastVerteilung werden diese somit als erstes beachtet und ein Großteil der Umverteilung kann so in der näheren Umgebung durchgeführt werden. IV. K-NARY-BAUM Bei Peer-to-Peer Netzwerken kommt es nicht nur auf die Verteilung der Objekte an, um die Last effektiv zu verteilen, sondern auch auf die Struktur der Netzes selbst. Es gibt verschiedene Knoten mit unterschiedlichen Kapazitäten und unterschiedlichen Entfernungen bezüglich Latenzzeiten zueinander. Daher muss es nicht immer sinnvoll sein, die Last auf den am wenigsten belasteten Knote zu verschieben, da dieser extrem weit entfernt sein kann und dadurch viel Overhead entsteht. Diese Punkte werden in dem folgenden Ansatz beachtet [7]. Es wird davon ausgegangen, dass die virtuellen Knoten eines DHT-Netzwerkes in einem K-Nary Baum strukturiert werden. Ein K-Nary Baum ist ein Baum, bei dem jeder Knoten maximal N Blätter haben darf. Zum Beispiel erhält mein bei einem N von 2 einen Binärbaum. Außerdem wird davon ausgegangen, dass ein reeller Knoten im Netzwerk mehrere virtuelle Knoten enthält. Hierbei werden virtuelle Maschinen genutzt, welche die Last auf einem Server darstellen. Dadurch kann es sich um eine beliebige Ressource handeln, welche zur Verfügung gestellt wird. Es ist also nicht auf Objekte beschränkt. Als Beispiel kann es sich auch um Dienste wie Rechenleistung handeln. Hiermit kann die Last im Netzwerk mit Hilfe der Einheit eines Virtuellen Servers verteilt werden. D. Ergebnis Um diesen Ansatz experimentell zu testen wurden 4096 Knoten erstellt, welche unterschiedliche maximale Kapazitäten ausweisen. Allen Knoten wurden 5 virtuelle Server zugewiesen und danach der Lasterverteilungalgorithmus gestartet. Als Ergebnis ergab sich, dass alle Knoten prozentual gesehen gleich ausgelastet wurden. Dies zeigt, dass die Last auf alle Knoten gleichmäßig verteilt wurde und somit eine sehr effektive Lösung gefunden wurde die Last verteilen kann. Des Weiteren wurde der Lasttransfer beobachtet. Ohne umgebungsbewusste Last-Verteilung wurde der Großteil der virtuellen Server über mehr als 7 physikalische Hops geleitet. Mit der umgebungsbewussten Last-Verteilung jedoch lies sich der Großteil der Last in unter 3 Hops balancieren. Durch diese Lösung kann die Last somit auch auf Geräte mit unterschiedlichen Kapazitäten gut verteilt werden und dabei der Overhead effektiv verringert wird, um das Netzwerk nicht unnötig zu belasten. Ein Problem dieses Ansatzes ist der Aufwand, der entsteht, wenn Knoten das Netzwerk betreten oder verlassen. Durch solche Aktionen ist es möglich, dass Teile des Netzwerkes getrennt sind, bis der Baum neu strukturiert wurde. In dieser Zeit ist eine Lastverteilung unter den Knoten in den getrennten Bereichen nicht mehr möglich. Vor jedem Durchlauf der Lastverteilung muss deshalb sichergestellt werden, dass die Integrität des k-Nary-Baums noch gegeben ist. In großen A. Load Balancing Informationen Regelmäßig fragen die virtuellen Server den reellen Server nach den Last-Informationen. Des weiteren wählt der reelle Server einen zufälligen virtuellen Knoten von sich aus, welcher die Last-Informationen in der Baumstruktur weiter gibt um Redundanz zu vermeiden. Die Reellen-Blatt-Knoten des Netzwerkes geben diese Informationen über ihre Eltern weiter, bis auch der Wurzel-Knoten sie erhält. Danach verteilt der Wurzel-Knoten die Last-Informationen an seine Kinder, bis alle Knoten im Netzwerk die Lastverteilung erhalten haben. Dadurch kann für alle Knoten definiert werden, ob diese leicht, stark oder neutral belastet sind. B. Virtuelle Server Zuweisung Die stark belasteten Blatt-Knoten berechnen, welche Virtuellen Server sie abgeben müssten um wieder leicht belastet zu sein. Währenddessen geben die leicht belasteten BlattKnoten weiter, dass sie Kapazitäten frei haben. Der ElternKnoten bekommt diese Informationen und sobald ein bestimmter Grenzwert überschritten ist, paart dieser die Knoten, die die Last untereinander austauschen sollen. Dies wird 77 4~ LOAD BALANCING IN PEER-TO-PEER NETZWERKEN SURVEY Netzwerken mit vielen Client-Fluktuationen ist dieser Ansatz daher nur bedingt geeignet. C. Umgebungsbewusste Lastverteilung Falls es nicht ausreicht die Last intern zu verteilen, wendet der Superknoten sich an die restlichen Superknoten im Netzwerk um eine Lastverteilung durchzuführen. Hierzu wird als erstes bei seinen Nachbarn angefragt, ob Kapazitäten zur Lastaufnahme zur Verfügung stehen. Diese sind im Normalfall auch physikalisch näher am Knoten was kürzere Transportwege mit sich zieht und somit Ressourcen spart. Sollte es dazu kommen, dass der Knoten immer noch eine zu große Last besitzt, wendet er sich an alle Superknoten. Dies wird durch zufällig Anfragen umgesetzt. Um die Knoten umgebungsbewusster zu ordnen werden wie im vorherigen Beispiel Landmarken verwendet, welche durch die Hilbert-Funktion abgebildet werden und somit eine einfache Methode genutzt wird um das Umgebungsbewusstsein zu generieren. V. C YCLOID Ein weiteres großes Problem von Peer-to-Peer Netzwerken ist der Overhead der durch das Betreten und Verlassen von Clients in das Netzwerk auftritt. Dieser ist kaum zu vermeiden und zwingt verschiedene Strukturen von Netzwerken zur kompletten Neustrukturierung. Hierfür werden viele Ressourcen aufgewendet welche durch eine Struktur, die darauf nicht angewiesen ist, anderweitig genutzt werden könnte. Jedoch ist dies meistens ein Tausch gegen längere Suchanfragen oder größere Last im Netzwerk. Hierzu existiert ein Algorithmus und eine Netzwerkstruktur, welche diese Probleme angehen [5]. In diesem Fall geht es um die Verteilung von Objekten, also nur um Speicher oder Bandbreite. D. Ergebnis In verschiedenen Experimenten hat sich ergeben, dass in einem Netzwerk mit wenig Overhead, durch betretende und verlassende Knoten, dieser Algorithmus vergleichbare Ergebnisse wie zum Beispiel der K-Nary-Baum erzielt. Ansätze, die eine komplett zufällige Suche zur Lastverteilung nutzen ist dieser Ansatz weit überlegen. In Netzwerken mit starker Client-Fluktuation zeigt er seine Stärken, da Lastverteilung durchgängig möglich bleibt, auch wenn einzelne Knoten im jeweiligen Ring ausfallen. Es zeigt sich, dass nach dem Balancieren alle Knoten unter ihrer maximalen Kapazität liegen und es somit keine überladenen Knoten mehr gibt. Es wurde weiterhin getestet, wieviele gleichzeitige Suchanfragen gestartet werden sollen um einen optimalen Partner zum Lastausgleich zu finden. Hier hat sich der Wert 2 als effektiv erwiesen, da es einen verbesserten Ausgleich gegenüber geringeren Werten bietet, jedoch nur geringfügig erhöhe Kosten hat. Es ist auch möglich diese Art von Algorithmus auf andere Netzwerke auszuweiten, jedoch muss dabei beachtet werden, dass diese lokale Clusterung erlauben, da sonst das Umgebungsbewusstsein nicht genutzt werden kann und dieser Ansatz einen Großteil seinen Potentials nicht nutzen kann. A. Netzwerkaufbau Für diese Lastverteilung wird ein Cycloid [6] Netzwerk verwendet. Diese Art von Netzwerk hat die Besonderheit auch bei größeren Verlusten von Clients immer noch genügend Verbindungen unterhalten zu können um das Netzwerk aktionsfähig zu halten. Damit ist dieses Netzwerk Churn-Resistent Dies wird unter anderem dadurch umgesetzt, dass sich Knoten in Ringen anordnet werden und untereinander Verbindungen aufbauen. In jedem dieser Ringen wird ein Haupt-Knoten gewählt, welcher den Ring nach außen hin vertritt. B. Last-Verteilung Die Hauptknoten werden als Superknoten in dem Netzwerk angesehen. Es wird des Weiteren darauf geachtet, dass die Super-Knoten auch die leistungsstärksten Knoten im jeweiligen Ring sind. Damit stellen sie eine Mischung aus einem effizienten zentralisierten Netzwerk und einem dezentralisierten dar. Jeder Super-Knoten führt zwei Listen, eine mit den starken und eine mit den leicht belasteten Knoten. Diese Listen sind sortiert, sodass die am stärksten beziehungsweise am schwächsten belasteten Knoten die höchste Priorität in der Liste haben. Der Superknoten vermittelt die normalen Knoten in seinem Ring welche Last untereinander austauschen sollen. Eine Besonderheit ist, dass die Knoten nicht eine gleichzeitige Anfrage senden können sondern mehrere. Zu der Auswertung, wieviele gleichzeitige Suchen gestartet werden sollten später mehr. Anstatt virtuelle Server zu verschieben werden in diesem Fall nur die Objekte selbst verschoben. Dadurch wird zusätzliche Last vermieden. Wenn ein Objekt verschoben wird, bleibt auf dem usprünglichen Besitzer eine Referenz auf den neuen zurück. Somit können Routing-Anfragen weiterhin beantwortet werden, ohne das Routing an sich zu verändern. Der Knoten der das verschobene Objekt hält, besitzt weiterhin eine Referenz auf den ursprünglichen Besitzer. Dies ist nötig, denn falls das Objekt durch spätere Last-Verteilung weiter verschoben werden muss, muss der ursprüngliche Besitzer informiert werden kann, wo das Objekt aktuell lagert. VI. FAZIT Es wurden verschiedene Ideen und Algorithmen gezeigt um Last-Verteilung in Peer-to-Peer Netzwerken durchführen und verbessern zu können. Alle ermöglichen es, Last von Objekten die Speicher oder Bandbreite verbrauchen zu balancieren. Nur der K-Nary-Baum jedoch funktioniert explizit auch mit anderen Ressourcen wie CPU, da sie mit virtuellen Servern arbeitet. Die ist bei den anderen Algorithmen nur bedingt möglich, da es zum Beispiel nicht sinnvoll ist, eine virtuelle Maschine zu cachen. Die Lösungen mit Kopien sowie Lookup Optimierung und Caching setzen auf das Cachen der Objekte, welche in dem jeweiligen Netzwerk stark nachgefragt sind. Beim Caching ergibt sich sogar die Möglichkeit vorausplanend zu arbeiten, sodass Clients ihr gewünschtes Objekt erhalten, ohne je mit dem ursprünglichen Knoten, welches das Objekt zur Verfügung stellt, in Kontakt zu treten. Jedoch ist der Cache der einzelnen Knoten begrenzt. Es ist möglich, dass von 78 ~ 5 LOAD BALANCING IN PEER-TO-PEER NETZWERKEN SURVEY mehreren Objekten Kopien angefertigt werden und auf dem selben Knoten gespeichert sind. Dies wird sich jedoch je nach Implementierung im letztendlichen System anpassen lassen. Die Lösungen Cycloid und K-Nary-Baum beinhalten die Erfassung der lokalen Gegebenheiten durch Landmarken. Dies sorgt dafür, das Last bevorzugt unter nahe beieinanderliegenden Knoten ausgetauscht wird und somit dass Netzwerk weitaus weniger belastet als bei zufällig ausgewählten Knoten zum Lastaustausch. Dies stellt besonders für Netzwerke mit sehr unterschiedlichen Entfernungen der Knoten eine größere Rolle. Bei Netzwerken denen eine sehr hohe Bandbreite zur Verfügung steht ist dies demnach weniger wichtig, da Umgebungsbewusstsein nur den Bandbreitenverbrauch optimiert, nicht aber CPU oder Speicher. Im Gesamten gibt es somit einige interessante Ansätze um Last-Verteilung in Peer-to-Peer Netzwerken effektiver zu gestalten. Die perfekte Lösung für alle Arten von Strukturen und Clients lässt jedoch noch auf sich warten. Vielleicht könnte man aus der Kombination der hier vorgestellten Ansätze eine bessere Lösung bilden, besonders aus der Mischung von Umgebungsbewusstsein und Caching gibt es noch einigen Spielraum für Optimierungen. L ITERATUR [1] Wikipedia: Peer-to-peer unstructured systems http://en.wikipedia.org/ wiki/Peer-to-peer#Unstructured_systems, December 2010. I [2] S. Bianchi, S. Serbu, P. Felber, and P. Kropf. Adaptive load balancing for dht lookups. In Computer Communications and Networks, 2006. ICCCN 2006. Proceedings.15th International Conference on, pages 411 –418, 2006. II [3] Lee Breslau Pei Cao. Web caching and zipf-like distributions: Evidence and implications. In In INFOCOM, pages 126–134, 1999. II, III [4] Yuqi Mu, Cuibo Yu, Tao Ma, Chunhong Zhang, Wei Zheng, and Xiaohua Zhang. Dynamic load balancing with multiple hash functions in structured p2p systems. In Wireless Communications, Networking and Mobile Computing, 2009. WiCom ’09. 5th International Conference on, pages 1 –4, 2009. III [5] H. Shen and C.-Z. Xu. Locality-aware and churn-resilient load-balancing algorithms in structured peer-to-peer networks. Parallel and Distributed Systems, IEEE Transactions on, 18(6):849 –862, 2007. V [6] Haiying Shen, Cheng-Zhong Xu, and Guihai Chen. Cycloid: A constantdegree and lookup-efficient p2p overlay network. Performance Evaluation, 63(3):195 – 216, 2006. P2P Computing Systems. V-A [7] Y. Zhu and Y. Hu. Towards efficient load balancing in structured p2p systems. In Parallel and Distributed Processing Symposium, 2004. Proceedings. 18th International, page 20, 2004. IV 79 ~ 1 DIASPORA UND SAFEBOOK: DER STAND VON DECENTRALIZED ONLINE SOCIAL NETWORKS Diaspora und Safebook: Der Stand von Decentralized Online Social Networks Samuel Vogel kein Interesse an der Durchsetzung starker Datenschutzregeln. Andererseits haben auch Dritte immer größeres Interesse an dem „Datenschatz“, der sich in OSNs sammelt. Immer wieder werden Sicherheitslücken aufgedeckt oder gezielte Angriffe auf OSNs ausgeführt, bei denen die Anbieter oft nicht gerade durch zuverlässige Abwehrmechanismen auffallen [19] [23]. Hier setzen Decentralized Online Social Networks (DOSNs) an. Der Nutzer muss die Kontrolle über seine Daten nicht mehr an Dritte abtreten, denn er selbst verwaltet sie und nimmt die Durchsetzung seiner Datenschutzregeln in die eigene Hand. Die Kommunikation unter den Nutzern läuft je nach Netzwerk im wesentlichen über mehr oder weniger ausgeprägte P2P Netze ohne zentrale Kontrollstrukturen. So gut dieser Ansatz jedoch im Bezug auf Datenschutz ist, desto mehr Probleme haben derzeitige Umsetzungen mit Verfügbarkeit und Benutzbarkeit. In dieser Ausarbeitung werden mit Diaspora und Safebook zwei verschiedene Entwürfe eines DOSNs vergleichend gegenübergestellt und deren Probleme aufgezeigt. Abschließend wird ein Fazit gezogen und ein Ausblick auf zukünftige Entwicklungen gewagt. Zusammenfassung—Immer mehr Menschen nehmen an sogenannten Online Social Networks teil und geben dabei in immer größerem Umfang persönliche Daten frei. Der sichere und vertrauensvolle Umgang mit den Daten, welche die Nutzer preisgeben, liegt dabei meist in den Händen der Unternehmen, welche diese Netzwerke betreiben. Wie Sicherheits- und DatenschutzProbleme zuletzt wiederholt gezeigt haben, kann hierauf jedoch nicht immer Verlass sein. Das Konzept der Decentralized Online Social Networks versucht diese Probleme zu umgehen indem jeder Nutzer seine Daten selbst bereitstellt, statt sie einer zentralen Stelle anvertrauen zu müssen. Dieses Paper stellt mit Diaspora und Safebook zwei Decentralized Online Social Networks vor und zeigt auf, dass in diesem Bereich noch weitere Forschung nötig ist, um alle Herausforderungen zufriedenstellend lösen zu können. I. E INLEITUNG Online Social Networks (OSNs) wie facebook, StudiVZ oder orkut sind zu den wichtigsten Services im World Wide Web geworden [8]. In OSNs können selbst technisch unbedarfte Nutzer ein persönliches Profil anlegen, miteinander in Kontakt treten und Informationen veröffentlichen. Genauer definiert werden Online Social Network Services oder Social Network Sites von boyd und Ellison [7] als: web-based services that allow individuals to (1) construct a public or semi-public profile within a bounded system, (2) articulate a list of other users with whom they share a connection, and (3) view and traverse their list of connections and those made by others within the system. In dieser Definition wird jedoch ein wesentlicher Bestandteil heutiger OSNs vernachlässigt: Das direkte (beispielsweise durch persönliche Nachrichten oder Chats) und indirekte (über Kommentare und Empfehlungen) Austauschen von Nachrichten. Des Weiteren entwickeln sich große OSNs wie facebook immer mehr zum Ausgangspunkt für die Nutzung des World Wide Web (unter anderem als Startseite) und ziehen damit mittlerweile auch an Suchmaschinen wie Google oder die früheren Webverzeichnise wie Yahoo! vorbei [14]. Bedingt durch deren große Popularität und die stetig wachsenden Mitgliederzahlen [9] sammeln OSNs also einen riesigen Bestand an persönlichen Daten an. Kontrolliert wird dieser Datenbestand meist von kommerziellen Unternehmen, welche alle Daten zentral verwalten. Der vertrauensvolle Umgang und der Schutz der Daten obliegt somit allein diesen Firmen. Dies stellt aus mehreren Gründen ein Problem dar: Da die meisten dieser Dienste für den Nutzer kostenlos sind, müssen aus den Daten der Nutzer Einnahmen generiert werden, um sich finanzieren zu können. Die Unternehmen haben II. DOSN S : A NSÄTZE & P ROBLEME Ein optimales Online Social Network sollte Verletzungen der Privatsphäre durch Angreifer, bösartige Nutzer und OSNBetreiber verhindern und dabei gleichwohl Integrität, Authentizität und Verfügbarkeit der Daten bei gewohnter Benutzerfreundlichkeit und gewohnten Kosten gewährleisten. Es lassen sich also fünf Ziele für Decentralized Online Social Networks identifizieren: • Datenschutz Der Schutz der personenbezogenen Daten stellte das Ziel des Datenschutzes dar [6]. • Vertraulichkeit, Integrität & Authentizität Die Vertraulichkeit von Daten ist sichergestellt, wenn kein unautorisierter Datenzugriff stattfinden kann [6]. Die Integrität ist gewährleistet, wenn es nicht möglich ist, Daten unautorisiert und unbemerkt einzuspielen, zu manipulieren oder zu löschen [6]. Die Überprüfung der Identität mittels charakteristischer Eigenschaften erlaubt es, die Authentizität, d.h. die Echtheit und Glaubwürdigkeit eines Objekts, festzustellen [6]. • Verfügbarkeit Eine optimale Verfügbarkeit ist gewährleistet, wenn alle Daten jederzeit abrufbar sind. • Usability • Kosten 80 2~ DIASPORA UND SAFEBOOK: DER STAND VON DECENTRALIZED ONLINE SOCIAL NETWORKS Im Folgenden wird nun aufgezeigt wie OSNs versuchen diese Ziele zu erreichen und wie sich die Ansätze in DOSNs davon unterscheiden. Datenschutz: OSNs bieten im Allgemeinen die Option, die eigenen Privatsphäre-Einstellungen anzupassen. So besteht meist die Möglichkeit, die Sichtbarkeit eigener Profilinformationen und Nachrichten einzuschränken und sie beispielsweise nur für bestätigte Freunde zugänglich zu machen. Diese Einstellungen sind jedoch häufig für den Nutzer nur schwer zu verstehen, so dass nur selten davon Gebrauch gemacht wird [10]. Des Weiteren werden Nutzer über die Datenschutz-technischen Implikationen ihrer Handlungen, wie eine Freundschaftseinladung zu akzeptieren oder eine sogenannte App zu nutzen, oft nur unzureichend aufgeklärt. Jegliche Privatsphäre-Einstellungen können jedoch nicht vor Angriffen auf den OSN-Anbieter oder Aktionen des OSNBetreibers selbst schützen. Da meist alle persönlichen Daten der Mitglieder eines OSNs zentral beim Betreiber verwaltet werden, ist dieser auch für die Durchsetzung der PrivatsphäreEinstellungen und des Datenschutzes verantwortlich. DOSNs umgehen diese Probleme durch die Abschaffung eines zentralen Anbieters. An dessen Stelle tritt die persönliche Bereitstellung der Daten durch die einzelnen Nutzer. Es wird so möglich, dass nicht Dritte, sondern die Nutzer selbst, ihre Privatsphäre durchsetzen und den Datenschutz kontrollieren. Vertraulichkeit, Integrität & Authentizität: OSNs versuchen, Vertraulichkeit zu gewährleisten, indem sie nach Möglichkeit Angriffe auf ihre Dienste zu verhindern. Es ist jedoch bekannt, dass sie dabei nicht immer erfolgreich sind [19] [23]. Authentizität der Nutzer kann aufgrund der schweren praktischen Umsetzbarkeit von den meisten OSNs nicht gewährleistet werden. DOSNs hingegen setzen meist auf die durchgängige Endezu-Ende-Verschlüsselung aller Kommunikation, um die durchgängige Vertraulichkeit der Daten sicherstellen zu können. Authentizität wird jedoch auch von vielen DOSNs nicht garantiert. Verfügbarkeit: OSNs sind durch die meist zentrale Verwaltung aller Daten bei einem einzelnen Anbieter naturgemäß weniger von Verfügbarkeits-Problemen betroffen. Meist handelt es sich um technische Defekte, die in der Regel schnell behoben werden können. Bei DOSNs stellt die durchgängige Verfügbarkeit prinzipbedingt ein sehr viel größeres Problem dar. Die meisten Nutzer sind nicht dauerhaft online, und wenn die Nutzer sich gegenseitig ihre eigenen Daten bereitstellen, verschwinden diese aus dem Netzwerk sobald alle Knoten die eine bestimmten Datensatz bereitstellen das Netz verlassen. Usability: Das Thema Benutzerfreundlichkeit ist in OSNs sowie DOSNs ähnlich aufgehängt. Einfacher Zugang und eine gute UI sind sowohl für OSNs als auch DOSNs wichtige Anforderung. OSNs laufen heutzutage meist im Browser ab, so ist beim Nutzer im Grunde genommen kein Installationsaufwand erforderlich. DOSNs haben jedoch durch die verteilte Natur, als damit meist einhergehendes Problem, die Frage der Software-Installation zu lösen. Kosten: OSNs werden meist von kommerziellen Organisationen betrieben. Zum Geschäftsmodell gehört es in der Regel (Ausnahme z.B. teilweise XING), dass die Nutzung des Netzwerkes kostenlos ist. Darin inbegriffen ist auch das durchgängige Bereitstellen der Daten auf Servern des Unternehmens. Wie das nötige Kapital dafür beschafft wird ist nicht Thema dieser Ausarbeitung. In DOSNs ist die Frage nach den Kosten anders gelagert. Jeder Nutzer betreibt seinen eigenen „Server“ und muss sich so auch um die damit anfallenden Kosten kümmern. Ein weiteres wichtiges Thema sind die sogenannten „Apps“, meist kleine Programme oder oft auch Spiele welche häufig neue Interaktionsarten mit anderen Nutzern in OSNs integrieren. In OSNs stellen Apps mittlerweile oftmals Sicherheitsprobleme dar [21], so dass hier besondere Vorsicht bei der Konzeption der „App“-Integration geboten ist. Nun soll betrachtet werden, wie die DOSNs Diaspora und Safebook diese spezifischen Anforderungen im einzelnen umsetzen und welche Probleme es dabei noch gibt. III. D IASPORA Das Diaspora-Projekt wurde im Sommer 2010 von vier New-Yorker Studenten gegründet. Auf der ProjektFinanzierungsplattform Kickstarter1 versuchten sie Startkapital für ihr Vorhaben zu sammeln. Kickstarter ist vornehmlich dazu gedacht, auch Projekten, welche von klassischen Risikokapitalgebern wahrscheinlich kein Kapital zur Verfügung gestellt bekommen würden, das Einsammeln von Risikokapital zu ermöglichen, indem viele kleinere Summen von Unterstützern akkumuliert werden. Die Gründung von Diaspora fiel in eine Zeit in der, durch wiederholte Sicherheitslücken und laxen Umgang mit der Privatsphäre, eine Welle von Unzufriedenheit mit den großen OSNs wie facebook durch das Internet rollte. [15] So fiel es den vier Studenten leicht, das ursprüngliche Ziel von 10.000 $ auf Kickstarter mit einem erreichten Betrag von über 200.000 $ bei weitem zu übertreffen. Die Gründer publizierten mehrere Videos [17] [18] und Blog-Posts2 in dem sie ihr Vorhaben beschrieben. Es wurde geplant, das Projekt nach einer anfänglichen geschlossenen Entwicklungsphase als Open-Source zu veröffentlichen und so das Mitwirken Dritter zu ermöglichen. Die Entwicklung von Diaspora schien von Anfang an eher sichtbare Entwicklungsfortschritte als ein sauberes Konzept in den Vordergrund zu stellen. Zum Projekt Start wurde zunächst kein grundlegendes Konzept erstellt und veröffentlicht, die einzigen greifbaren Informationen blieben die erwähnten Videos und Blog-Posts. Bist heute gibt es kaum wissenschaftlich erarbeitete Untersuchungen oder Papers über das DiasporaProjekt, weshalb sich auch diese Ausarbeitung im Hinblick auf Diaspora zum Großteil auf Nachrichtenmagazine, Blogs und die vom Diaspora-Team selbst veröffentlichen Informationen beziehen muss. Bei Diaspora handelt sich um ein verteiltes System, welches jedoch ohne Replikation der Daten auskommen muss. Man kann daher nicht von einem klassischen P2P Netz sprechen. Aufgebaut wird das Netz aus sogenannten Seeds oder auch 1 http://www.kickstarter.com/projects/196017994/ diaspora-the-personally-controlled-do-it-all-distr 2 http://blog.joindiaspora.com/ 81 ~ 3 DIASPORA UND SAFEBOOK: DER STAND VON DECENTRALIZED ONLINE SOCIAL NETWORKS Pods. Als solche werden die Knoten des Netzes bezeichnet, welche die Daten von einem oder mehreren Nutzern im Netz bereitstellen. Für diese Seeds wird vorausgesetzt, dass sie durchgängig mit dem Netz verbunden sind. Durch diese Anforderung wird zwar die ständige Availability aller User im Netzwerk zwar konzeptbedingt garantiert, jedoch geht dies mit einer extremen Einschränkung der Usability einher. Sobald der Server offline ist, stehen alle Nutzer die auf diesem Server verwaltet wurden nicht mehr im Netzwerk zur Verfügung. Nur die wenigsten Nutzer besitzen einen Rechner beziehungsweise Server, welcher 24 Stunden am Tag online ist, geschweige das für den Betrieb nötige technische Wissen, noch sind sie bereit, die Kosten und den damit einhergehenden Aufwand zu tragen. Als Alternative zu dieser nicht realistisch umsetzbaren Anforderung wird den Nutzern empfohlen, sich einen Platz auf einem von einer dritten Partei betriebenen, Diaspora Server zu mieten. Dieser Ansatz löst zwar die Probleme die des ServerBetriebs, klärt jedoch nicht die Frage der dabei anfallenden Kosten. Des Weiteren tritt hierbei ein ganz neues konzeptionelles Problem auf: Die Hoheit über die eigenen persönlichen Daten wird, wie bei einem klassischen OSNs, wiederum an Dritte abgetreten. Hierdurch würde also eines der wichtigsten Ziele die ein DOSN erreichen sollte gebrochen, denn die dritte Partei ist im Grund vergleichbar mit dem Betreiber bei einem klassischen OSN und bringt somit auch die damit einhergehenden Probleme wie den möglichen Missbrauch der persönlichen Daten mit sich. Jedes Profil kann durch eine eindeutige Adresse identifiziert werden. Diese ist, analog zu einer E-Mail Adresse, aus Nutzernamen und Host aufgebaut (e.g. [email protected]). So kann jedes Profil einem Server zugeordnet werden, auf welchem es bereitgestellt wird. Eine Struktur, wie ein DHT3 , um die Server untereinander bekannt zu machen existiert nicht. Zur Auflösung der Adressen verlässt man sich rein auf das DNS4 [12]. Die für OSNs typische Suche nach anderen Mitgliedern im Netzwerk gibt es auf Grund dessen in dieser Art und Weise bei Diaspora nicht. Es gibt hierdurch keine Möglichkeit Nutzer, welche sich nicht auf dem gleichen Server befinden, aufzuspüren. Die Adresse des Diaspora Profils muss daher bekannt sein bzw. über andere Kanäle verbreitet werden um sich mit weiteren Nutzern verbinden zu können, was wiederum mit einer Einschränkung der Usability einhergeht. Es gibt jedoch Bestrebungen Strukturen zur verteilten Kommunikation unter den Knoten einzuführen um somit auch eine Suchfunktionalität gewährleisten zu können [22] [16]. Die Authentizität der Profile wird bei Diaspora nicht gewährleistet, da die Daten zur Person bei der Anmeldung wie bei den meisten OSNs nicht geprüft werden. Nutzer können sich also jederzeit durch falsche Angaben im Profil als eine andere Personen ausgeben. Nach derzeitigen Stand ist eine API, um beispielsweise alternative Clients zu ermöglichen, vorgesehen aber nicht noch nicht umgesetzt5 . Ebenso ist über Pläne Drittanbieter „Apps“ in Diaspora zu ermöglichen ist nichts bekannt. Abbildung 1: Matrjoschka-Netz in Safebook [4] Aufgrund des Projektablaufes mit einer anfänglichen Entwicklungsphase hinter geschlossenen Türen war es Dritten nicht möglich, das technische Design zu überprüfen bis der Quellcode veröffentlicht wurde. Diese ersten Reviews von Dritten förderten dann auch gleich viele Probleme zu Tage [20] [13] [1]. Von zum Teil einfachen Programmierfehlern über handfeste Sicherheitslücken durch unzureichend oder nicht verschlüsselte Kommunikation bis hin zu grundlegenden konzeptionellen Problemen wurden viele Fehler offengelegt. Auch die Integration von weiteren Entwicklern in das Team gestaltete sich schwierig [11]. Der Quellcode von Diaspora wurde unter der unter der AGPL Lizenz6 veröffentlicht. Eine sehr freie aber gleichzeitig auch sehr restriktive Lizenz, welche beispielsweise kommerzielle Beiträge bedeutend erschwert. Die Anforderung dem Diaspora-Team ein gemeinsames Eigentumsrecht an allen Codebeiträgen einzuräumen erschwert das Mitwirken Dritter zusätzlich. Wiederholt zeigten sich auch Schwierigkeiten innerhalb des Entwicklerteams, welche auch zum dazu führten, dass Personen das Projekt verließen [2]. Derzeit befindet sich Diaspora in einer geschlossenen Alpha-Phase. Diese startete Ende November 2010, einen festen Release Plan gibt es nicht. Viele Features, wie zum Beispiel der von anderen OSNs (insbesondere facebook) bekannte „Like“-Button, fehlen jedoch noch, Abschließend muss also gesagt werden, dass Diaspora als schnelle Antwort auf die „Anti-Facebook“ Stimmung dieser Tage nicht alle Implikationen der komplexen Konzeption eines DOSNs zufriedenstellend lösen kann. IV. S AFEBOOK Safebook wurde am Institut Eurécom und der TU-Darmstadt entwickelt und legt hohen Wert auf ein korrektes Design. Alle Gesichtspunkte wurden zunächst theoretisch analysiert und formalisiert, statt mit den ersten Codezeilen zu beginnen. Dadurch gibt es unter sicherheitstechnischen Gesichtspunkten keine konzeptbedingten Probleme. Vernachlässigt wurden dabei jedoch einige Aspekte, welche den Ansatz in der realen Welt nur schwer umsetzbar machen. Safebook arbeitet nach einem klassischen P2P-Schema mit einer Replikation der Daten. Jeder Nutzer betreibt seinen 3 http://en.wikipedia.org/wiki/Distributed_hash_table 4 http://en.wikipedia.org/wiki/Domain_Name_System 5 API 6 http://www.gnu.org/licenses/agpl-3.0.html Feature Request: http://bugs.joindiaspora.com/issues/311 82 4~ DIASPORA UND SAFEBOOK: DER STAND VON DECENTRALIZED ONLINE SOCIAL NETWORKS persönlichen Knoten und nimmt so am Netzwerk teil. Um ihn wird ein sogenanntes sogenanntes Matrjoschka-Netz (siehe 1) gebildet, an dessen Innerem er steht (vgl. Core). Die erste Stufe des Matrjoschkas stellen dann die eigenen Freunde (vgl. Inner shell) dar, welche als vertrauenswürdig eingestuft werden. Mit diesen werden dann die persönlichen Daten geteilt um die Verfügbarkeit im Netzwerk zu erhöhen. Auch indirekte Kommunikation, wie beispielsweise ein Kommentar auf dem Profil des Nutzers, kann dann von dieser inneren Hülle abgewickelt werden. Direkte Kommunikation, wie ein Chat, bleibt jedoch dem Nutzer selbst vorbehalten und findet über eine direkte Verbindung zwischen den Kontakten statt. Safebook bedient sich somit der Vertrauensverbindungen aus dem echten Leben des Nutzers. Jedoch sind ein Großteil der Nutzer von OSNs bei weitem nicht durchgängig online. Vor allem Nachts ist die Chance hoch, dass ein Nutzer und auch sein kompletter Kreis von vertrauenswürdigen Freunden offline ist, da es häufig der Fall ist, dass Freundeskreise aus der selben Zeitzone kommen. Im Vergleich zu klassischen P2P Netzen, beispielsweise zur Verbreitung von Dateien, gibt es in Safebook sehr viele weniger bekannte Datensätze, nämlich die einzelnen Nutzer Profile, statt nur vergleichsweise wenige, dafür aber sehr beliebte Dateien. Es kann also trotz dieser Maßnahme mit dieser Form der eingeschränkten Datenreplikation keine durchgängige Availability garantiert werden. Die weiteren Hüllen (vgl. Intermediate shells) des Matrjoschkas dienen dem Schutz der Kontaktliste des Nutzers. Ohne diese wäre es möglich die Kontaktliste eines Nutzers zu rekonstruieren, indem man die Verbindung über das DHT nachvollzieht welche eine Nachricht an den entsprechenden Nutzer im Netzwerk nimmt. Bei dem letzten Hop würde es sich dann immer um den entsprechenden Nutzer selbst oder einen seiner Kontakte handeln. Die weiteren Hüllen abstrahieren die Verbindung zu einem Nutzer dadurch, dass sie Nachrichten an ihn weiterleiten, ohne dass die Hops zwischen ihnen nachvollziehbar sind. Nur die äußere Hülle (vgl. Outer shell) ist dann noch für Verbindungen von Außen mit dem Nutzer zuständig. Die Authentizität der Nutzer wird von Safebook wiederum in vollem Umfang gewährleistet. Auch hier jedoch gibt es Schwierigkeiten bei der praktischen Umsetzung. Um die Authentizität der Nutzer zu gewährleisten müssen sich diese anfänglich gegenüber einer vertrauenswürdigen dritten Partei ausweisen. Dieses System ist an die Mechanismen bei der Vergabe von signierten SSL-Zertifikaten angelehnt. Es ist zeitaufwendig, könnte Kosten mit sich bringen und erhöht maßgeblich die Einstiegshürde am Netzwerk teilzunehmen. Diese wird durch den Fakt weiter angehoben, dass neue Nutzer sich dem Netzwerk nur anschließen können, indem sie von einem Freund, welcher bereits am Netzwerk teilnimmt, eingeladen werden. „Apps“ sind im Konzept von Safebook nicht vorgesehen. Außerdem existiert keine öffentlich zugängliche Implementierung von Safebook, es handelt sich um ein rein wissenschaftliche Konzept. Safebook ist demnach zwar ein interessantes und aus Sicherheits-Gesichtspunkten theoretisch makeloses Konzept, wird jedoch von Unzulänglichkeiten in der praktischen Be- nutzbarkeit geplagt. V. A NDERE DOSN S Es gibt noch einige weitere DOSNs, welche zum Teil schon länger als Diaspora oder Safebook existieren. Drei davon sollen nun hier kurz vorgestellt werden: Appleseed: Ein DOSN welches bereits seit 2004 existiert und als Open Source entwickelt wird, jedoch in dieser Zeit nie den derzeitigen Bekanntheitsgrad von Diaspora erreichte. Das Netzwerk hundertprozentig kostenlos anzubieten wird als eines der Projektziele beschrieben, die Betriebskosten eines Servers werden jedoch nicht in diese Rechnung mit einbezogen. Verlässt sich ebenfalls ständig verfügbare Server ohne Datenreplikation. Als Alleinstellungsmerkmal gegenüber anderen DOSNs ist zum Beispiel die Unterstützung von „Apps“, ähnlich denen bekannt von facebook, zu nennen. Noserub: Ein DOSN welches durch starke Integration bereits existierender OSNs auffällt und damit die hohen Einstiegshürden andere DOSNs zu mindern versucht. Aufgrund der Anbindung an andere OSNs stellt diese Netzwerk eine Art Hybrid dar und gewährleistet die volle Kontrolle über die eigenen Daten ausschließlich unter reinen Noserub Nutzern. Die dezentrale Komponente scheint aber nicht primäres Ziel des Projekts zu sein und verlässt sich, ähnlich wie Diaspora, auf ständig verfügbare Server. PeerSoN: Ein DOSN welches wie Safebook einen wissenschaftlichen Hintergrund hat. Es basiert ebenso auf einem P2P Netz, setzt jedoch auf eine andere Strategie um die Verfügbarkeit von Profilen zu gewährleisten. Profile werden nicht nur mit Freunden geteilt, sondern zunächst mit einem Public-Key-Verfahren verschlüsselt und dann im ganzen Netzwerk repliziert [3]. Nur Freunde eines Nutzers besitzen die entsprechenden Schlüssel um mit dem Profil zu interagieren. Hierdurch sollte die Verfügbarkeit wesentlich höher ausfallen. VI. FAZIT UND AUSBLICK Sowohl Diaspra und Safebook haben noch mit Problemen zu kämpfen. Insbesondere kann keines der analysierten Netzwerke alle genannten Ziele für ein DOSN ohne maßgebliche Einschränkungen erreichen. Diaspora scheint aufgrund der konzeptionellen Probleme nicht die Zukunft der DOSNs darzustellen, leistete jedoch wichtige Öffentlichkeitsarbeit für das Thema [5]. Safebook hingegen bietet interessante Ansätze und kann im Bereich der Sicherheit überzeugen. Durch die Schwierigkeiten in der Verfügbarkeit und die Einstiegshürden wie die Authentizitätsprüfung, ist die praktische Benutzbarkeit jedoch eingeschränkt. Man kann Safebook jedoch sicherlich als Entwurf bezeichnen in welche weitere Arbeit investiert werden sollte. Bezüglich Verfügbarkeit könnte Safebook beispielsweise Anleihen am Konzept von PeerSoN nehmen oder die ProfilReplizierung zumindest auf „Freundesfreunde“ ausweiten. Bei der Überprüfung der Authentizität eines Nutzers, könnte man ein an SSL angelehntes Stufenmodell wählen und zur eigentliche Verifikation, wie bei der Replikation, wiederum die Freundschaftsbeziehungen nutzen. Nicht verifizierte Nutzer 83 DIASPORA UND SAFEBOOK: DER STAND VON DECENTRALIZED ONLINE SOCIAL NETWORKS würden so, wie Seiten mit ungültigen Zeritifikaten, als potenziell nicht vertrauenswürdig markieren. Nutzer welche von mehreren Freunden als vertrauenswürdig deklariert wurden oder den kompletten Verifizierungsprozess durchlaufen haben, könnte man so ebenfalls entsprechend darstellen. Daran ist zu erkennen, dass noch viele Ideen und Möglichkeiten gibt um DOSNs weiterzuentwickeln. Es muss weiterhin Forschungsarbeit und Evaluation geleistet werden um DOSNs entwickeln zu können welche alle erforderlichen Ziele abdecken. ~ 5 [10] Ralph Gross and Alessandro Acquisti. Information revelation and privacy in online social networks. In Proceedings of the 2005 ACM workshop on Privacy in the electronic society, WPES ’05, pages 71–80, New York, NY, USA, 2005. ACM. II [11] Jarin Udom. Diaspora, or How to Kill Your „Facebook Killer“ Open Source Project Before It Even Launches. http://jarinheit.posterous.com/ diaspora-or-how-to-kill-your-facebook-killer, 16. Sep. 2010. Visited: 20. Feb. 2011. III [12] Jonne Hass. Re: Diaspora in mesh network. http://groups.google. com/group/diaspora-dev/msg/cd997bead4a67b9d, 11. Feb. 2011. Visited: 19. Feb. 2011. III [13] Mashable Dev & Design, Jolie O’Dell. Diaspora Releases Source Code, Developers Dissect It. http://mashable.com/2010/09/16/ diaspora-source/, 16. Sep. 2010. Visited: 03. Jan. 2011. III [14] Quit Facebook Day. Facebook zieht an Google vorbei. http://www.ftd.de/it-medien/medien-internet/: us-nutzerranking-facebook-zieht-an-google-vorbei/50210274.html, 31. Dec. 2010. Visited: 18. Feb. 2011. I [15] Quit Facebook Day. QuitFacebookDay.com. http://www. quitfacebookday.com/, 31. May. 2010. Visited: 05. Jan. 2011. III [16] Sam Whited. Re: diaspora search. http://groups.google.com/ group/diaspora-discuss/msg/b5bad56b35bb87ff, 16. Sep. 2010. Visited: 20. Feb. 2011. III [17] Diaspora Team. Diaspora: Personally Controlled, Do-It-All, Distributed Open-Source Social Network. http://vimeo.com/11099292, 21. Apr. 2010. Visited: 03. Jan. 2011. III [18] Diaspora Team. Other Cool Features of Diaspora. http://vimeo.com/ 11111557, 21. Apr. 2010. Visited: 03. Jan. 2011. III L ITERATUR [1] Avery Morrow. First Impressions of Diaspora Dev Preview. http://www.diaspora-news.net/2010/09/16/ first-impressions-of-diaspora-dev-preview/, 16. Sep. 2010. Visited: 03. Jan. 2011. III [2] Avery Morrow. I’m Dropping Diaspora, This Site Is Now Closed. http://www.diaspora-news.net/2010/11/29/ im-dropping-diaspora-this-site-is-now-closed/, 29. Nov. 2010. Visited: 08. Feb. 2011. III [3] Sonja Buchegger, Doris Schiöberg, Le Hung Vu, and Anwitaman Datta. Peerson: P2p social networking - early experiences and insights. In Proceedings of the Second ACM Workshop on Social Network Systems Social Network Systems 2009, co-located with Eurosys 2009, Nürnberg, Germany, March 31, 2009. V [4] Leucio Antonio Cutillo, Refik Molva, and Thorsten Strufe. Safebook : a privacy preserving online social network leveraging on real-life trust. IEEE Communications Magazine, Vol 47, N.12, Consumer Communications and Networking Series, December 2009, 2009. 1 [5] Diaspora Team. Hello From 2011. http://blog.joindiaspora.com/2011/01/ 31/hello-from-the-new-year.html, 31. Jan. 2011. Visited: 20. Feb. 2011. VI [6] J. Dinger and H. Hartenstein. Netzwerk-und IT-Sicherheitsmanagement: Eine Einführung. KIT Scientific Publishing, 2008. II [7] d.m. boyd and N.B. Ellison. Social network sites: Definition, history, and scholarship. Journal of Computer-Mediated Communication, 13(1), 2007. I [8] Experian Hitwise. Top-visited Websites in 2010. http://www.hitwise.com/us/press-center/press-releases/ facebook-was-the-top-search-term-in-2010-for-sec/, 21. Dec. 2010. Visited: 04. Jan. 2011. I [9] Facebook Blog, Mark Zuckerberg. 500 Million Stories. http:// blog.facebook.com/blog.php?post=409753352130, 12. Jul. 2010. Visited: 04. Jan. 2011. I [19] Steve O’Hear TechCrunch. Video: Major Facebook security hole lets you view your friends’ live chats. http://eu.techcrunch.com/2010/05/05/ video-major-facebook-security-hole-lets-you-view-your-friends-live-chats/, 05. May. 2010. Visited: 04. Jan. 2011. I, II [20] The Register, Dan Goodin. Code for open-source Facebook littered with landmines. http://www.theregister.co.uk/2010/09/16/diaspora_pre_ alpha_landmines/, 16. Sep. 2010. Visited: 03. Jan. 2011. III [21] Emily Steel & Geoffrey A. Fowler THE WALL STREET JOURNAL. Facebook in Privacy Breach - Top-Ranked Applications Transmit Personal IDs, a Journal Investigation Finds. http://online.wsj.com/ article/SB10001424052702304772804575558484075236968.html, 18. Oct. 2010. Visited: 04. Jan. 2011. II [22] Timothy Shoaf. Re: Diaspora in mesh network. http://groups.google. com/group/diaspora-dev/msg/5727c593f464547e, 11. Feb. 2011. Visited: 20. Feb. 2011. III [23] Kai Biermann ZEIT ONLINE. Daten von SchülerVZ kopiert. http://www.zeit.de/digital/internet/2009-10/schuelervz-hack, 17. Oct. 2009. Visited: 04. Jan. 2011. I, II 84 ~ 1 P2P-BASED VOIP P2P-based VoIP Zoran Zarić [email protected] Abstract—Voice over IP is gaining importance as more and more companies transfer their voice communication infrastructure away from the public switched telephone network towards IP networks. Existing voice over IP solutions have single points of failure and lack scalability. Peer-to-peer systems can improve scalability and robustness. This paper first gives an overview over the basic building blocks peer-to-peer systems are based on, defines six requirements a peer-to-peer based voice over IP system should meet, and discusses six systems – Skype, XMPP Jingle, P2P-SIP, SOSIMPLE, iPTT, and DISCOS. P2P-SIP is the most matured open source system that can benefit by some concepts SOSIMPLE implements. 1 14 2 4 I. I NTRODUCTION Classic telephony is based on the public switched telephone network (PSTN). It is circuit switched, so every call needs a dedicated line, which doesn’t scale and is very expensive. Voice over IP (VoIP) solves this problem by switching from a circuit switched to a packet based network. Some years ago communication providers started serving next generation network (NGN) lines. These include an IP connection, which is shared for internet access, telephony, and sometimes television. Telephony providers also started to switch their telephony backbones from PSTN to VoIP recently. P2P systems can further improve this development by offering high scalability, robustness, and fault tolerance. In this paper I try to find a peer-to-peer voice over IP solution that is open source and is based on open protocols. In Section II I provide background information on P2P, VoIP, and some related techniques. Section III discusses some existing approaches for P2P VoIP systems. Finally Section IV compares these approaches and gives an outlook on what needs to be done to provide a complete solution. 5 11 9 Fig. 1. 7 A Chord network A node maintains a routing table, that consists of predecessors, successors, and shortcuts through the ring, which are called fingers. The number of predecessors and successors is an implementation decision. The default number of fingers is m. Figure 1 shows an example Chord network with m = 4. 2) Distributed Hash Tables (DHT): Distributed Hash Tables (DHT) map keys to values over a set of nodes. Usually keys are derived from values using hash functions. Each node is responsible for a set of values that depends on its key in the DHT’s key space. The nodes in a DHT and their relations form an overlay network. A multitude of variations of concepts for DHTs exists. Routing algorithms in DHTs range from non deterministic routing using flooding of queries to deterministic greedy routing. The overlay structure can be based on the underlying network structure or solely be based on the key space. The key space can be single dimensional or multi dimensional. In the case of multi dimensional key spaces often a hash function is used per dimension. Auto-adaptive DHT (AA-DHT) [5] is a concept for a DHT that can dynamically adapt the size of the list of nodes to optimize the message size and the request latency. A node in an AA-DHT maintains a routing table that is split up into two tables. One with its predecessors and one index table. A node A is a predecessor P for a node B, if A might relay messages over B. If N is the total number of nodes in II. BACKGROUND A. Peer-to-Peer (P2P) A P2P network consists of equally privileged participants which make some resource available to the rest of the network. Resources can be disk storage, bandwidth, or processing power. 1) Chord: Chord [17] is a lookup protocol with a ringbased overlay structure and deterministic greedy routing. This means, that with knowladge of the network you can predict the routing paths (deterministic) and routing decisions are based on locally optimal choice (greedy routing). Chord uses m-bit identifiers. Nodes are placed on a ring at the position according to their identif ier. The identifier for a node is the SHA1 hash for its ip address mod 2m , the identifier for a data chunk is the SHA1 hash for its content or name mod 2m . A node is responsible and stores values with identifiers between its identifier and its predecessor’s identifier. 85 2~ P2P-BASED VOIP the network, then the index table stores Log2 (N ) nodes. AA-DHTs are based on two assumptions. 1) One can exhibit regularity in the average life time of a node on a DHT. 2) Nodes with an average lifetime greater than a specified threshold T will probably keep their average lifetime above T . If a node registers a node that has an average lifetime greater than T it propagates the new node to all its predecessors. In P2P networks the topologies of the overlay network and the underlying network often differ greatly. Two nodes – one in Germany (A) one in New Zealand (B) – can be Neighbors in the overlay and a third node from Austria might route its message to A over B. This results in a lot of network traffic and long latencies. Basing the overlay structure on top of the topology of the underlying network is the concept for topology-based DHTs (T-DHT) [6]. T-DHTs where introduced with sensor networks and adhoc networks with low-power hardware in mind. Network communication consumes a lot of energy, which is very limited in such devices. T-DHTs reduce network traffic, latency, and energy consumption. The overlay structure is based on a two dimensional virtual coordinate system, which is constructed by the nodes using triangulation. The hop distance of the underlying network is used as the distance metric. The resulting coordinate system doesn’t represent physical but only logical locations. The T-DHT on top of the virtual coordinate system is inspired by CAN [10]. Every node is responsible for a rectangular key space around its position in the coordinate system. 3) Network Address Translation (NAT) traversal: In P2P networks peers often are connected via dial up, ADSL, or cable connections with one public IP address. Usually this connection is shared between several computers. Therefore the router has to translate private IP adresses to the public IP address. This is called Network Address Translation (NAT). Because in P2P networks communication between peers is essential a method to contact peers behind NATs is needed. The Interactive Connectivity Establishment (ICE) [11] protocol is a protocol for NAT traversal. For a NAT traversal a third party that is accessible by both communication partners is needed. ICE makes use of of two protocols. Session Traversal Utilities for NAT (STUN) [12] and its extension Traversal Using Relay NAT (TURN) [9]. STUN can be used for other protocols to implement NAT traversal. It has three purposes. 1) determine the IP address and port allocated to by a NAT 2) check connectivity between to endpoints 3) keep-alive to maintain NAT bindings TURN allows a peer behind a NAT to use a third party as a message relay. The Session Initiation Protocol (SIP) is based on the Hyper Text Transfer Protocol (HTTP). SIP is only used for call signaling (like call setup) in VoIP communication and doesn’t include media transfer. SIP messages include e.g. REGISTER for registration and INVITE for call setup. A registrar is a server that is responsible for one or more domains and registers user agents (UA). A proxy routes messages to their destination. III. A PPROACHES This section introduces six approaches for P2P VoIP systems. First I’ll show the commercial reference Skype. The second approach discussed will be XMPP with the Jingle extension. Approaches three and four are Chord based – P2PSIP (3), SOSIMPLE (4). iPTT, the fifth discussed approach, is DHT based but doesn’t specify a concrete DHT. The last discussed approach isn’t a real VoIP system but can be utilized by such systems. Except for Skype and iPTT all VoIP systems only do signaling, media transfer is out of their scope. For better comparability I define six requirements. The P2P VoIP system I am looking for should have telephony-like voice chat. This means both partners can talk simultaneously (full-duplex). The System should have no single point of failure (SPOF). Some sort of authentication should be available. Because we look at P2P systems a NAT traversal solution should be built-in. To have the possibility to improve the systems or build on top of them they should be open source and should have an open protocol. A. Skype Login O12 O9 O11 O8 O10 S4 S3 O7 O1 S1 S2 O4 O3 O6 O2 Fig. 2. B. Voice over IP (VoIP) O5 A possible part of the Skype network Skype is a commercial P2P software that combines: 1) telephony 2) voice chat 3) video chat 4) instant messaging In contrast to the public switched telephony network (PSTN) – a circuit-switched frame relayed network –, where one line is needed for one call, voice over IP provides telephony over connection-less packed based IP networks. 86 ~ 3 P2P-BASED VOIP [email protected] [email protected] tu-darmstadt.de [email protected] Fig. 3. [email protected] cased.de [email protected] tu-darmstadt.de [email protected] [email protected] A XMPP message flow Fig. 4. cased.de [email protected] A XMPP Jingle message flow All Skype to Skype communication is IP based and free of charge. PSTN calls are available as a paid service. Skype has state-of-the-art NAT traversal. I discuss Skype to get an reference of what is possible. 1) Network structure: About the underlying P2P network nothing is known as a matter of fact. Both the client and the protocol are proprietary and closed source. All knowledge comes from reverse engineering. [2] The P2P network is probably based on FastTrack because its developers Niklas Zennström and Janus Friis where Skype’s founders. It consists of supernodes and ordinarynodes. Supernodes can be used for NAT traversal and call setup. Every peer can become a supernode. In some clients becoming a supernode can be disabled. A unknown number of supernodes is hard coded into the client and a random supernode is used for bootstrapping (initial network join). Figure 2 shows a possible part of the Skype network. Authentication, billing, and PSTN calls are done over dedicated servers. 2) Key features: Skype has a great marketshare, very good NAT traversal and firewall hole-punching, and PSTN calls. 3) Issues: Both Skype’s protocol and source are closed. to the domain part of their Jabber ID (JID). JIDs have the same format as e-mail addresses. If Alice ([email protected]) wants to send a message to Bob ([email protected]), Alice’s XMPP-client sends the message to the server that is responsible for the domain tu-darmstadt.de the tu-darmstadt.de-server then forwards the message to the server that is responsible for the domain cased.de, which then forwards the message to [email protected]. An example XMPP message flow is shown in figure 3. This path is also used to establish the client-to-client connection using Jingle. Once this connection available the message flow seen in figure 4 is used. XMPP in it’s current form isn’t a P2P protocol. It is a client-server architecture with each server as a SPOF. It could be argumented, that XMPP servers could be interpreted as supernodes and clients as ordinarynodes, but a client can’t become a server and the responsibilities for clients based on the domain are fixed, so if a server fails its clients can’t just connect to other servers. 2) Key features: XMPP is a open protocol and is very extensible. Many open source implementations of server and clients exist and have matured. 3) Issues: XMPP is no real P2P system and servers have to maintained. B. XMPP Jingle C. P2P-SIP Extensible Messaging and Presence Protocol (XMPP) is a very extensible open messaging protocol that was generalized from the Jabber instant messaging protocol. [14] [13] Jingle [8] is an extension by Google that adds client-toclient connection signaling. The client-to-client connections can be RTP streams [1] resulting in VoIP and video chat functionality. Google Talk [15] is a service implementing the XMPP protocol, Jingle and voice/video calls using RTP. Another extension implements Dual-tone multi-frequency signaling (DTMF) using XMPP messages to interact with interactive voice response systems or PSTN. Pidgin, an instant messaging client, supports voice and video chats using XMPP and Jingle. 1) Network structure: One XMPP server is responsible for one or more domains. Clients register at their server according P2P-SIP was proposed by Kundan Sing and Henning Schulzrinne in 2005 [16]. P2P-SIP introduces P2P mechanics to SIP telephony. It adds a DHT to replace some SIP features that normally use DNS. The decision which DHT to use is an implementation decision. Sing and Schulzrinne provide an example implementation called SIPpeer. SIPpeer uses Chord to implement the DHT and has the following features: 1) 2) 3) 4) 5) 6) 87 outbound SIP proxy to use existing SIP user agents (UA) SIP UA SIP proxy SIP registrar media relay STUN and TURN server 4~ P2P-BASED VOIP 1 14 with built in NAT traversal. Basic password authentication is implemented and the protocol is open. 3) Issues: P2P-SIP is not robust against malicious clients. Such malicious clients could drop messages routed through them. Also call setup latency can take long in big networks. O4 O5 2 O6 D. SOSIMPLE SOSIMPLE [3] is very similar to P2P-SIP. Like P2P-SIP it uses a DHT to add P2P features on top of SIP. SOSIMPLE uses SIP as a base for a VoIP system because it is mature, recognized by firewalls, traffic shapers, etc.. SIP’s REGISTER messages are used for DHT operations. In difference to P2P-SIP, SOSIMPLE doesn’t have built in NAT traversal or authentication. 4 5 11 1 7 9 O1 14 O3 O2 Fig. 5. 2 A P2P-SIP network P2P-SIP is fully compatible with existing SIP infrastructure. It adds the DHT functionality if the local domains doesn’t have a SIP server. It uses SIP to replace DNS for next hop lookup in SIP for: 1) peer discovery 2) user registration 3) node failure detection 4) user location 5) call setup SIP REGISTER messages are used for lookup, join, and message routing. All non-REGISTER messages, like INVITE messages, are proxied or redirected. P2P-SIP uses SIP URIs of the form sip:identifier@address:port. If the address and port are unknown the domain is used. If no domain is available – e.g. for DHT maintenance messages – example.invalid it used. Authentication is accomplished with an email address and a password in REGISTER messages. The password is mailed to the email address given in the contact header in the first REGISTER request. P2P-SIP supports offline messages. They are stored at the sender and intermediate DHT nodes. The call setup latency increases with the number of nodes in the Chord ring. According to Sing and Schulzrinne’s paper a network with 10000 nodes has a call setup latency of 1-2 seconds. 1) Network structure: The example implementation SIPpeer uses Chord as the DHT. High capacity nodes (bandwidth, CPU, memory, uptime, public IP address) can become supernodes and form the DHT. Ordinary nodes can attach to one or more supernodes. Each supernode stores log(N ) successor addresses. User registrations are replicated at K successors 2) Key features: The existing implementation SIPpeer brings full compatibility with existing SIP infrastructure 4 5 11 9 Fig. 6. 7 A SOSIMPLE network 1) Network structure: SOSIMPLE’s network structure is based on Chord. A nodes identifier is the SHA-1 hashed public IP address. Only 16 fingers are maintained. Additional finger table entries for contacts in the buddy list are pre fetched. This reduces call setup latency. Figure 6 shows an example SOSIMPLE network with m = 4 and 1 finger. 2) Key features: SOSIMPLE is compatible with existing SIP infrastructure. Its pre-fetching of contact-addresses reduces call setup latency and the reduced count of fingers minimizes maintenance. It is a open protocol. 3) Issues: SOSIMPLE doesn’t implement authentication or NAT traversal. E. iPTT iPTT [7] is an IP- and DHT-based Push-to-Talk service. Push-to-Talk services are half-duplex. User-to-user and group communication are possible. In contrast to radiocommunication, which is the biggest form of push-to-talk communication, iPTT is not geographically restricted. iPTT is targeted at mobile devices. 88 ~ 5 P2P-BASED VOIP Centralized servers like STUN and TURN servers are single points of failure. STUN and TURN need keep-alive messages which add up. In a DISCOS network every node provides a STUN/TURN server and relays SIP messages. Special nodes – called connectivity peers – can be SIP proxies or media relays. Nodes use the first available connectivity peer. DISCOS’s goals are: When starting a group communication a peer sends a SIP INVITE to its supernode. This supernode forwardes the INVITE message to all supernodes that are responsible for peers in the group. Those supernodes then forward the message to the peers in the group. After all peers in the group answered the INVITE with an OK message the peer that started the group communication sends its voice message on the same path the INVITE was sent. After it is finished another peer can use the group. A group is closed when the peer that started it leaves it using a BYE message. See figure 7 for a example group setup. Push-to-Talk over Cellular (POC) solutions exist, but are vendor or carrier specific. iPTT’s goal is to be: 1) vendor and carrier agnostic 2) scalable 3) cost-effective 4) robust SIP messages are used for signaling and DHT maintenance, RTP/RTCP for media streams. Because communication is only half-duplex in contrast to full-duplex voice chats no highperformance voice mixer is needed. No specific DHT is used in the specification, AA-DHTs or T-DHTs are proposed. 1) Network structure: The network consists of supernodes and ordinarynodes. Supernodes perform signaling/voice relaying and group-member joining/leaving. Messages are relayed through supernodes on the path. The supernodes multiplex the streams (multicast). A possible iPTT network is shown in figure 7 The metrics upon which it is decided if a node becomes a supernode are: 1) bandwidth 2) power consumption restriction 3) computing performance 1) 2) 3) 4) 1) Network structure: DISCOS uses an unstructured gossip based network because no maintenance and no accurate results are needed. Gossipping means, that queries are propagated from one peer to a randomly selected peer from his routing table, results follow the same path backwards. The network is scale-free. This means the number of connections to other peers from each peer follows a power-law distribution, we therefore have some highly connected peers. Peers cache a number of known connectivity peers, this information is refreshed in short intervals to be kept fresh. The cache is sorted by popularity. Hubs are peers that are known by many other peers and therefore receive many advertisement messages. Advertisement messages are periodically sent to all nodes in the cache. Advertisement messages have a TTL. Received advertisement messages are forwarded or dropped according to its TTL. If the advertised node is unknown it is added to the cache. When an advertisement message is received the popularity for nodes in the cache is increased. Average popular peers are dropped, when the cache is full and an unknown peer is advertised. Both hubs and low traffic peers are favoured. As with most P2P systems security is a problem 2) Key features: DISCOS adds NAT traversal and media relay capabilities to arbitrary systems. O9 O8 S3 scalability robustness reduced bandwidth fast lookup O7 IV. S UMMARY & C ONCLUSION O1 S1 S2 O3 O6 O2 Fig. 7. Skype is the most mature P2P VoIP solution in the market. It has the biggest market share and the most features. But because it is closed source and has a closed protocol we only use it as a reference. XMPP Jingle gaining market share more and more instant messaging clients add Voice capablitys to their feature set and Google Talk’s presence on the Andriod platform help increasing XMPP Jingle’s reach. P2P-SIP and SOSIMPLE are very similar. They both use SIP for messaging and add P2P features to it using the Chord DHT. These two systems are the only real P2P solutions for VoIP telephony. With its example implementation P2P-SIP seems to be most matured and complete. SOSIMPLE’s reduced finger table size and caching for contacts could improve P2P-SIP. A possible future work could be the evaluation of a replacement of Chord in favour of a T-DHT. This would possibly improve call setup latency and voice latency if nodes are used as media relays. O4 O5 A iPTT network with group communication 2) Key features: Because iPTT’s voice streams are halfduplex no voice mixer is needed. It is bandwidth efficient through multicast. F. DISCOS DISCOS [4] itself isn’t a VoIP system. It is a P2P NAT traversal and media relay system, that can be utilized by VoIP systems, that don’t have NAT traversal built in – e.g. SOSIMPLE. 89 6~ P2P-BASED VOIP Skype XMPP Jingle P2P-SIP SOSIMPLE iPTT DISCOS Telephony-like Voice Chat X X X X No SPOF X X X X Authentication X X X NAT Traversal X X X Open Source Open Protocol X X X X X X X X X X TABLE I OVERVIEW OVER MET REQUIREMENTS iPTT is an interesting special purpose solution which can shine in disaster scenarios where mobile devices are used to communicate in ad-hoc networks. DISCOS could be integrated into SOSIMPLE to compensate its lack of a NAT traversal solution. See table I for an overview over the met requirements. [17] I. Stoica. Chord: a scalable peer-to-peer lookup protocol for internet applications. IEEE/ACM Transactions on Networking, 41(5):297–32, February 2003. II-A1 A. open problems Nearly all of the shown approaches need improvements in their security. Authentication is either implemented in a very basic way or left out totally. This isn’t a VoIP specific problem, but the low cost of running nodes in a P2P network often lead to abuse. The downside of open protocols is that everybody can implement a client and so the system has to be robust against malicious implementations. R EFERENCES [1] XEP-0167: Jingle RTP Sessions. Transport, 0167(0167). III-B [2] Salman A Baset and Henning Schulzrinne. An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol. New York, 2004. III-A1 [3] D.A. Bryan, B.B. Lowekamp, and C. Jennings. Sosimple: A serverless, standards-based, p2p sip communication system. System, i(2005), 2005. III-D [4] L Ciminiera, G Marchetto, F Risso, and L Torrero. Distributed connectivity service for a SIP infrastructure. Network, IEEE, 54(3):258, 2008. III-F [5] a. Dury. Auto-adaptive distributed hash tables. The 6th IEEE/ACM International Workshop on Grid Computing, 2005., page 6 pp., 2005. II-A2 [6] O. Landsiedel, K.a. Lehmann, and K. Wehrle. T-DHT: Topology-based Distributed Hash Tables. Fifth IEEE International Conference on Peerto-Peer Computing (P2P’05), (2):143–144. II-A2 [7] JR Lin and AC Pang. iPTT: peer-to-peer push-to-talk for VoIP. Wireless Communications and, V(1):1–25, 2008. III-E [8] S Ludwig, J Beda, and P Saint-Andre. Xep-0166: Jingle. XMPP Enhancement, 2005. III-B [9] R. Mahy, P. Matthews, and J. Rosenberg. Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN). RFC 5766 (Proposed Standard), April 2010. II-A3 [10] Sylvia Ratnasamy, Paul Francis, Mark Handley, Scott Shenker, and Richard Karp. A Scalable Content-Addressable Network. II-A2 [11] J. Rosenberg. Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols. RFC 5245 (Proposed Standard), April 2010. II-A3 [12] J. Rosenberg, R. Mahy, P. Matthews, and D. Wing. Session Traversal Utilities for NAT (STUN). RFC 5389 (Proposed Standard), October 2008. II-A3 [13] P Saint-Andre. Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence (RFC 3921). Security, C(3921):1–107, 2004. III-B [14] P. Saint-Andre and Others. Extensible messaging and presence protocol (XMPP): Core. Security, C(3920):1–90, 2004. III-B [15] B Sat. Analysis and evaluation of the Skype and Google-Talk VoIP systems. Multimedia and Expo, 2006 IEEE, V(61801), 2006. III-B [16] K. Singh and H. Schulzrinne. Peer-to-peer internet telephony using SIP. In Proceedings of the international workshop on Network and operating systems support for digital audio and video, June, volume I, pages 13– 14. Citeseer, 2005. III-C 90