Combining Coding and Block Schemes for P2P Transmission
|
|
- Maryann Stevenson
- 5 years ago
- Views:
Transcription
1 Combining Coding and Block Schemes for P2P Transmission Ben Dodson Dr. Zach Ives Doug Petkanics Dr. Sanjeev Khanna April 14, 2006 Abstract We introduce a new method for the distribution of large files in a peer to peer network based upon a combination of rateless codes, network coding, and block transmission. Each of these schemes can contribute in a different way towards the collaborative transfer of a file. We believe a combination of the above schemes will improve the download rate, as each scheme creates a unique bottleneck at some point during the transmission. By using randomization and rateless codes to generate encodings of information during a file transfer, the receiver will always receive useful information. As peers containing large amounts of information drop out of the network, there is generally a problem gaining information about certain rare pieces of a file. Due to the fact that we use randomized encodings, we attempt to eliminate this problem by ensuring that there is information to be gained about every piece of a file. We develop a protocol, perform analysis on its properties, and implement it such that we can run tests in a real network environment. The network coding and rateless codes will ensure that the file transfers will progress even if people frequently leave or join the network during transmission. By using encodings we attain a far more robust network in which rare pieces fail to exist. We modify the protocol of an existing p2p client in order to perform these measurements. 1 Current Approaches In recent years peer-to-peer file transfer has gained immense popularity. From programs such as Napster which were originally intended to share music files, to programs such as Kazaa and Gnutella which were more varied in content, users have willingly transfered increasingly large files to one another. Only recently have these collaborative methods of file transfer started to compete with the simple server-client method for many types of files, such as Linux CD images. 1
2 Today the uses for large scale file transfers over networks are more prevalent than ever, and range from software patch distribution to video on demand. In p2p environments, files were originally transfered from one user to another, but now schemes have evolved in which many users with the same file, or pieces of it, can all actively aid in the transmission to another user, such that his download speed becomes the only bottleneck. 1.1 BitTorrent: A Block Transfer Scheme Recently, the system known as BitTorrent [1] has emerged as one of the most commonly used p2p programs on the internet. BitTorrent has many advantages, such as the fact that the central server does not need to communicate with the end downloaders at all after the original handshaking process. Also, BitTorrent uses as tit-for-tat trading mechanism which specifies that the downloader can not get access to new pieces of the file he is downloading unless he is also contributing to the network as an uploader. This virtually eliminates freeriding. Another advantage is that even if the initial server goes offline, the file transfers to other users can still continue as long as one user which has the entire file continues to act as a seed to the system. BitTorrent has become so popular, in fact, that it made up over 50% of p2p traffic on the internet in June 2004 [2]. Although BitTorrent works extremely well in practice, it is possible to do better. The problem with BitTorrent is that it utilizes block transfer, meaning that it breaks the file into k blocks, and transfers these individually. Thus, there are only k useful transmissions in this network. As users receive these blocks they may then transfer them on to other users per their request. Often, a set of blocks can become exceedingly rare in the network, especially when the peer group lacks seeds. These rare blocks then become the bottleneck causing the end of a file transfer to take an unnecessarily long time. BitTorrent attempts to handle this with a rarest first block transfer policy. Furthermore, BitTorrent also has an endgame mode built in to the software, specifically designed to aid in the download of the last few pieces. According to Cohen, this is needed because of the tendency for the last few blocks to be downloaded from a single hosed modem line The rarest first policy is hindered by the fact that the rareness of blocks changes over time. We introduce a method of removing the idea of a rare block. By incorporating coding techniques, there can be many more than k blocks, of which only k are required. This helps reduce the need for both the rarest first policy and the explicit endgame transfer mode. 1.2 Avalanche: A Random Coding Based Scheme A good solution to this problem is to introduce a randomized encoding scheme and transfer encoded pieces of data based upon the original file rather than transferring the original blocks themselves. In this approach, the original data is still broken down into blocks. A rateless encoding is then used to generate 2
3 as many encoding symbols as are required (a nearly infinite amount are available). A common scheme which is used to encode packets is to simply take the exclusive-or of any number of the original blocks of data. These XORed encoding symbols can then be thought of as a system of linear equations, of which the user only needs to receive enough encoding symbols to solve the system in order to recover the original file. A very powerful, and efficient scheme is the Digital Fountain [3] approach, in which it is proven that with high probability, a downloader only needs to receive k (1 + δ) encoding symbols to decode the original data of size k, where δ is small. Taking Digital Fountain one step further, a new system has been proposed called Avalanche [4] which appears to be the first use of rateless codes in a p2p setting in which a downloader receives data from many different users on the network. Avalanche uses the Digital Fountain approach combined with network coding techniques to achieve a significant improvement over BitTorrent in simulation. The fact that users can now receive encoded information, from which they can find out a little bit about multiple blocks at once, leads to much faster file transfers. Unfortunately, the network coding techniques which are used in the Avalanche system can lead to redundant data being sent to the downloader time and time again. After a while, the data which he is receiving becomes less and less unique. However, due to the fact that blocks to be included in the encoding were selected randomly, this leads to a much better chance that the specific block that a user needs will not be as rare as it was in the block transfer approach. Also, the simulations on Avalanche do not seem to realistically mimic real network conditions. 2 Our Strategy 2.1 A Compromise We feel that a compromise between the BitTorrent and the Avalanche approach leads to the best performance. We attempt to introduce encoding techniques into the BitTorrent protocol to eliminate the rare block. By using encodings rather than straight block transfer the robustness of the network is greatly increased, as the chance that information about a particular block is somewhere in the network is far greater due to the fact that it could be included in any encoding. When straight block transfer is used the individual rare block itself needs to have been disseminated from the seed, otherwise it will not exist in the network should the seed drop out. One major goal of our project is to determine how best to combine the block transmission and encoding transmission methods. There is much to consider for how this will technically be achieved; the two schemes work well under different conditions, and we seek to create peers that can determine when to use the appropriate scheme, preferably based only on local information. For example, as explored by [5], BitTorrent works exceedingly well when there are a sizable amount of seeds (here, 20 percent of the network.), but may not when 3
4 this number is far fewer. Furthermore, we can remove the need for a rarest block first policy by using an encoding scheme; there are many encodings that can give enough information about a block to decipher it. Avalanche works well when nodes are continuously receiving new information, as their encodings are generated by combining all blocks known to them. One of Avalanche s shortcomings is that it suffers from slow decoding times. We utilize the strengths of both schemes while minimizing their weaknesses. The Avalanche scheme alleviates the need for seeds in a network in the BitTorrent scheme. Restricting our field to order two rather than order 2 16 will reduce decoding times, as will transmitting some known blocks per request. A more dynamic encoding process than that of Avalanche will yield a wider variety of useful packets between peers. Furthermore, we explore the possibility of downloading these files in a heterogeneous environment of both standard BitTorrent clients and the new clients using an encoding scheme. In order to achieve our desired results, we require a handful of tools, mainly drawn from graph theory, linear algebra, and probability theory. The coding theory used is largely based on the principles of linear algebra, but we gain insight by thinking of it in the context of graph theory. Our scheme for selecting blocks for an encoding will require a combination of graph theory and randomization. We begin by motivating our scheme with analysis about randomization in encodings. This is covered in section 3.1. We then select an appropriate encoding scheme which offers fast, simple, decode times, yet still gives us all the advantages which have previously been discussed (section 3.2). We perform analysis on this scheme to show cover times for all blocks in the network, and to prove that this creates a far more robust network than BitTorrent. After the protocol has been developed and analyzed, we implement it by modifying an existing BitTorrent client. Our implementation is described in detail in section 3.3. The client we chose was the original BitTorrent implementation. By modifying the existing client, we have a working program which could easily be used in practice. We run tests using our modified client, and report our results in section 4. 3 A Hybrid P2P Scheme As planned, first semester was spent motivating a hybrid p2p scheme and performing research and analysis. Basic theory has been worked out to show that there is indeed a benefit for implementing this new protocol, and that improvements can be made to both the BitTorrent and the Avalanche protocol. We have developed an implementation of this new protocol by modifying an existing BitTorrent client, and have run simulations and tests to verify that we achieve performance gain. 4
5 3.1 Motivation and Analysis We now consider why our proposed transmission scheme will be beneficial in a p2p environment. The intuition behind it is as follows: with a simple block transmission scheme over n blocks, a user completes the download precisely when these n distinct symbols have been downloaded. With a coding scheme, the size of our universe of available blocks expands, call it N, and only a subset of encodings (optimally still n) is required. It is known that BitTorrent s block transmission protocol functions well in a stable environment in which many users possessing the entire file remain available for future downloaders. [5] We consider an environment in which we expect BitTorrent to not function optimally. We consider a network in which nodes are frequently being added and removed. In the worst case, we add and remove nodes in such a way that the BitTorrent method for handling rare blocks fails. We then inject randomly selected blocks from a single seed into this network. The cover time is of interest to us; how long do we expect to wait before the network contains all n blocks? Assume there are k distinct blocks in the network. Define a 0-1 random variable X k to be 1 when we receive a distinct block in the network, given k distinct blocks are already present. Define T k to be the expected wait time for a distinct block given k exist in the network. We have: (n k) P r[x k ] = n E[T k ] = n n k Thus: n 1 T = T i n 1 E[T ] = E[T i ] = n 1 n n k n 1 1 E[T ] = n n k = O(nlog(n)) Now, consider a scheme using encodings. With an XOR encoding scheme, a single encoding is the XOR of d symbols chosen from our original n. We allow all possible encodings for a universe size of 2 n 1. An encoding is now useful if it is not the linear combination of any of our previous k blocks. Thus: ) ( k i P r[x k ] = 1 k n ( n i ) = 1 2k 1 2 n 1 E[T k ] = ( ) 1 1 2k 1 2 n = 2n n 2 k 5
6 Thus: n 1 E[T ] = E[T i ] = n 1 n 1 T = T i 2 n ( 1 2 n 2 n 2 i n 1 2 n 2 n 1 ) ( 2 n ) 1 = n 2n Hence, with this block encoding scheme, we have a linear cover time. Now, we examine a new encoding scheme. Here, a user receives packets in such a way that the degree (deg) of the encoding is a function of the number of encodings the user has already received (k). Here, our expected cover time is as follows: (n k) P r[x k ] = n E[T k ] = n n k Letting k = pn gives us: Now, let deg(k) = E[T k ] = 1 1 p b 1 p for a small constant b. Then E[T k] = O(1), and thus: n 1 T = T i = O(n) In the collaborative download environment, we would not be able to allow for all encodings in the network because of the need for data verification via hashcodes. Rather, we would like to predefine c n encodings, for a reasonable constant c, that will be transmittable. Furthermore, we require efficient, onthe-fly decodings of our encoded blocks. These two restrictions lead us to the Twisted Tree encoding scheme. 3.2 Twisted-Tree Encoding Scheme While the Digital Fountains encoding scheme is ideal for a single-server, manyclient transmission model, the requirements are too restrictive for a collaborative download environment like BitTorrent. For example, we cannot have any guarantee on the randomness of transmitted blocks, since a client will certainly have a large degree of redundant data available to its peers. Furthermore, we would like to be able to perform our encoding and decoding on the fly to maximize the availability of blocks that can be distributed between peers at any given time. Lastly, we can only allow for certain encodings in our network, since the data must be verifiable by hashcodes sent before the file is downloaded. Thus, we introduce the Twisted Tree encoding scheme. Consider a file split into n blocks. We begin by constructing an encoded block in which all n pieces are XOR-ed together. This will be the root of our 2 n 2 6
7 encoding tree. For a given node of degree k, we recursively construct a binary tree by encoding the leftmost k 2 blocks in the left child, and the remaining k 2 blocks in the right child. We continue until we have the leaves of our tree, corresponding to our original n blocks. In total, there are no more than 2n nodes in our tree, of which n are our basic blocks. This encoding scheme thus restricts the size of the universe of allowable encodings, as we require for the data verification in our download environment. Furthermore, encoding and decoding can be done on-the-fly based only on the local properties of a node in our tree. The runtime of a single decode is no worse than O(log(n)). However this scheme alone does not give much improvement to our random cover time. But we can construct multiple trees in a similar way to achieve our O(n) cover time. Now, we randomly permute our original blocks before constructing our tree. We now have T trees of equivalent structure, but with mostly distinct internal nodes. The leaves are equivalent in all trees, and thus their hash values need only be computed and transmitted once. For T trees, we now have no more than (T +1)n allowable encodings and decode times of O(T n). Note that an internal node of equivalent encoding can appear in multiple trees, as is always the case of our root nodes, but this lookup can be made constant and so our decode time is not affected. In general, we may receive more than n useful blocks before our file can be decoded. That is, our encoding scheme is not rateless when treated as an erasure code in which purely random blocks are received. However, for cases where T 3, this overhead is less than 1% of the overall file size. In our experiments, the worst we saw was 10% of overhead (189 blocks more than the required 2048). 3.3 Implementation In considering the different approaches to take towards an implementation, there were a number of options which we had to choose from. One choice was to implement a simple version of the BitTorrent protocol, implement a simple version of Avalanche, and then implement our protocol to combine the two approaches. We could then run the three protocols in a simulated environment under the same conditions and vary a number of different factors including number of seeds, resiliency, nodes leaving and entering the network at random, varying upload speeds and download speeds, amongst other variables. There are many drawbacks to this approach, the most important being that our simple implementations would not model the complex protocol aspects that BitTorrent has taken on recently, and therefore would not accurately gage real world BitTorrent performance. Other drawbacks included the fact that in a simulated environment it is very difficult to model real life users. Another choice to consider was to modify a BitTorrent client to work in a simulated environment. In this case, we would create clients which would not actually communicate with one another, but instead would communicate with a central server which would keep track of all the simulation details and results. 7
8 Figure 1: A Twisted-Tree encoding with T = 2. In blue, blocks that have not yet been decoded. In green, pieces previously known to the peer. In yellow, a block that has just been received by the peer. In orange, pieces that can now be decoded. 8
9 While these clients would still implement the protocol which we defined, they would only work in simulation and would not transfer real data amongst one another. The advantages of this approach would be that we could run various simulations, modeling different network factors. This would produce the most valuable theoretical data, however it would not be at all useful in the real world. Also, we decided that the data produced may not hold much weight due to the fact that BitTorrent already works very well in practice, and if we model network behavior incorrectly, then we would getting contrived results that may not accurately reflect real world performance. A third choice considered was to take an existing BitTorrent client and modify it such that it would implement our file transfer protocol, yet also be backwards compatible with the existing BitTorrent protocol. This approach would give us the most practical application with the best chance of spreading quickly throughout the p2p community. Should this approach give us a more robust network and achieve a gain in performance, then there is no reason that end users would not be willing to adapt this protocol very quickly, and then see a speedup in their file transfer rates. The main drawback of this approach is that it is difficult to run simulations because it is hard to set up a distributed network consisting of many different clients all running with different properties. This is a trade off for real world usefulness. Originally we thought it would be best to chose the simulation based approach so that we could vary different factors of the network easily and measure when our protocol would be most effective. It would then be possible to run file transfers during which the number of peers, number of seeds, and peer volatility all varied. We soon realized however that since BitTorrent worked very well when there were a large number of seeds, we needed to attack the situation in which it did not work well. This was the case when there were few seeds, a large number of leeching peers, and certain blocks were rare in the network. In order to attack this problem we chose to use the third option, which was to take an existing BitTorrent protocol and modify it to actually work in the real world using our protocol. Therefore we gain the advantage of having a real world implementation, plus it s easy to simulate a network in which there are limited seeds but multiple peers. At the end of last semester, our plan was to modify the BitTorrent implementation called Azureus. We chose this for a number of reasons including the fact that it was open source, it was written in Java (a language which we were both very familiar and comfortable with), and it provided a great front end which included performance analysis and measurements. After working with Azureus for a couple of weeks, we decided that it was too bulky and extremely complicated. Much of the protocol functionality was obscured by large amounts of front end code, and working with it was more effort than it was worth. Instead we decided to settle on modifying the original, and much more widely used, BitTorrent client. Originally we avoided it because it was written in Python, which none of us had experience with, but after spending a few days with Python we found this implementation to be much more lightweight, efficient, and easier to work with. The protocol was well defined and easily observed 9
10 in the code, and it was not long before we were comfortable making changes without breaking anything. The first, and most important step in our implementation was to write an encoding/decoding class. The bulk of our protocol (section 3.2) would be implemented here. This class sits completely outside of the current BitTorrent code, because the current implementation had nothing to do with encodings and decodings. We defined a fairly straightforward interface for this class so that the original code could request random encodings and request the hash values of these new encodings which would later be used for data verification. The specific encoding trees themselves would be generated here as well based solely on the number of original blocks and number of trees desired. When a client receives a new encoding from one of its peers, it also passes the encoding into this class, and the class then computes the closure of what can be decoded based upon this new information. Sometimes nothing new can be decoded, but other times there is a trickle effect down the tree and multiple pieces of data can then be recovered. Furthermore, when a peer notifies another peer of a piece that has been recently obtained, the second peer can compute the closure to know all pieces that are available to that user while keeping overhead low. After the interface to this class had been defined and implemented, it was necessary to modify the rest of the BitTorrent code in order to operate on encodings rather than just straight blocks. There are very few places in the code where the data received is actually handled. It basically just gets stored until the end of the transfer at which point it is pieced back together. However, there are many places where things are kept track of, and the code stores which pieces it has, and which pieces its peers have. This is used to make requests and to answer requests from peers. All of this code needed to be modified such that each client could keep track of what encodings they had (and could generate based on other information), and which encodings its peers had available. Now, when requests were made, they could be made for a single piece, or for an encoding. The protocol itself did not need to be modified. Instead, we defined an ordering for the new encoded blocks, determined by a list of permutations of basic blocks within the.torrent file. Notifications and piece requests are thus carried out as before, with indices beyond the original number of blocks. In order to support this, changes had to be made to many different sections of the code. One of the first stages of the BitTorrent process, is that a.torrent file needs to be created at the tracker (or machine responsible for distributing the list of peers and metadata about a file transfer). Every peer in the network needs to have the same.torrent file which contains info about the file being transfered, including hash values for each piece so that peers can verify that they received correct data. We modified the creation of this.torrent file so that it now included hash values for all allowable encodings. This is the largest overhead that we have over the original protocol because a.torrent file is now about T + 1 times as large as the original.torrent file, where T is the number of trees used, a good value for T being between 2 and 4. This is acceptable, however, because the.torrent file is small to begin with. Other sections of 10
11 the code which we had to make changes in included the section of the code responsible for picking pieces to request, determining how to respond to piece requests, storing received data, and piecing together data upon completion. There are multiple versions of the client which can be run, which all implement our code. There is a GUI which runs on the X-Windows system, a console version, and a console-curses version. We modified the output which is generated on the curses version in order to give a display of the piece by piece transfer progress so that we can accurately monitor what is going on with the decoding process in real time. Currently we output all blocks, and the ones which have been received at the current peer are marked. When an encoding is received, the closure of what can be decoded is computed, and anything that gets decoded also gets marked. The percentage of the original file which has been recovered is then updated on the curses-display. Sometimes when an encoding is received no new original data is recovered, but when there is a trickle down decoding effect, we sometimes recover multiple pieces after getting only one new encoding. As the implementation currently stands, we are satisfied, as it works well on a real network and effectively transfers files from peer to peer. The encoding class seemingly works very well, though due to the well defined interface if any changes needed to be made, or if we wanted to test a new scheme, it would not be difficult to do. As always, there were a few obstacles with the implementation which we had to overcome, and they are addressed in section Obstacles In trying to design a working protocol there were multiple obstacles which we came upon. We realized fairly early on that data verification would be a significant problem if we were to allow any random encoding to be used. BitTorrent only transfers original blocks of the file, so in that scheme any piece of data can be verified with a SHA1 hash and the receiver will know right away whether he received a valid block. In the Digital Fountain scheme in one-to-many transmissions, the sender is assumed to be trusted, so the data verification is not necessary. In our scheme however, if we allow any random encoding to be transfered from anybody in a peer group, to anybody else in a peer group, then the receiver would need to have access to 2 n hash values in order to be sure that what he received was a valid piece of data and would not corrupt the file. In order to solve this problem, we have decided to limit the number of valid encodings to a constant times the number of blocks. The seed will determine these cn allowable encodings upon setting up a tracker based upon the number of trees being used and the random permutations of the original tree, and he will generate hash codes for all cn encodings. This will increase the initial handshaking process between the tracker and a peer by a factor of c, but will also increase the amount of useful data that a peer can receive. After a peer receives a new encoding, we need to be able to quickly determine whether or not this is a useful piece of information. Has this peer already recovered all the information that this new block contains? If it turns out that 11
12 this block is not useful, we want the user to be able to discard it quickly without wasting time trying to decode information from it. The other large obstacle which we were fighting with after first semester was the idea of recoding. We would like to allow intermediate nodes to recode new symbols on the fly based upon blocks which they were able to recover during intermediate steps in the file transfer. This will introduce new nodes into the network thereby making it far more robust. While we decided not to allow random recoding because these new encodings would not correspond to a node in our decoding tree, do we allow peers to create encodings from the tree that they did not actually receive the original data for. This has a positive effect in a network where there are very few seeds and peers may have disparate data. In this case, they can then generate encodings which previously were not floating around the network. The technical obstacles which we had to overcome included learning Python, learning a new (rather large) system, and of course debugging. While the code which was already in place was fairly easy to follow in the overall sense, the details were often very hard to grasp due to the lack of explicit type declarations in Python and lack of comments. While running simulations and debugging, it was also difficult to know whether things were sometimes failing due to our protocol, or due to network issues which were handled in completely different aspects of the BitTorrent code which we never had to touch. 4 Results We largely focused on the idea of the random cover time as a criteria for a successful encoding scheme. Given a heavily dynamic network in which peers are coming and going at random while few seeds remain in the network, we would like to maintain a good spread of useful information in the network as a whole, thus creating a robust environment despite unstable conditions. The random cover time approximates this by focusing on a single peer and seeing how well that peer can piece together the original file given completely random information. For our experiments, we simulated the effects of a single client blindly requesting random information from the network. We used a constant number of n = 2048 blocks throughout our tests, which would correspond to a BitTorrent download of a 512 MB file, using a block size of 256 KB. The peer and the network were not allowed to communicate which pieces one another could decode at a given time. We ran 10 simulations for values of T ranging from 0 to 8. There were two main criteria of interest for us. The first was the number of useful, or nonredundant, blocks that remain in the network at a given time. Here, time is measured by the number of useful blocks the client has received. For the case where T = 0, this is a decreasing, linear function with slope -1. The second and most important is the number of redundant blocks the network has transmitted to the client. There is a clear relationship between these variables, since the 12
13 more useful blocks exist in the network, the more likely we are to retrieve one. Figure 2(a) depicts a single simulated run for the unencoded case. In figure 3(a), we depict the number of useful blocks that remain in the network when we require only one more useful encoding. However, since having T trees adds O(T n) allowable encodings to the network, we scale the result by T so that it becomes a fraction out of n. Each datapoint is an average over 10 runs. Clearly, for T = 0, we have a constant 1, since there is only one block that will allow us to complete the file. Finally, in figure 3(b) we graph the number of redundant blocks received for various values of T. In between T = 2 and T = 3 we see that less than half of the blocks received were redundant. With respect to BitTorrent, adding robustness to the network adds some overhead as well. First, we must transmit the permutations of each tree, for T > 1 (since tree 1 can be left unpermuted). This can be represented as n integers. We must also transmit the hashcodes of these encodings, each of which is 20 bytes. There are O(T n) such hashcodes. Finally, we add O(log(T )) bits to the index during a piece request or a have notification. A value of T = 2 or T = 3 represents a good trade of with the required overhead and the added network robustness. Furthermore, with this relatively low number of trees, the possible overhead due to an increasing rate of the encoding scheme remains very low, and the improvements to the network s robustness make the trade off worthwhile. Moreover, by a more clever inspection of the tree, it is possible to determine what blocks can be used to decode our basic blocks, thus avoiding this overhead all together, at the cost of a slower decode time. 5 Future Direction While this was merely a year long project, and it is now complete, there are a couple directions that this project could go if it were to be continued. The most interesting area of research would be to look into different techniques for choosing how the piece picker decides which piece to request from a peer. Currently, we use randomization to select an encoding from a list of possible encodings. The peer then decides immediately if this random encoding provides useful information, and if it does, it then requests this. There are other interesting things that could be done here, such as closure analysis to determine which piece would be most useful to you at that given time. If any peer of yours has this piece then it would be most beneficial to request it as soon as possible. Another goal which could be accomplished in the near future would be to make this program 100% interoperable with existing BitTorrent clients. Using our implementation with a current implementation would not yield any performance gain for the moment, so we neglected to spend time on interoperability as it was not what we were researching. Nonetheless, interoperability would be a very important feature for real world adoption of our program. Minimal changes would have to be made in order to interact with the original protocol, and this could probably be accomplished with a few hours worth of programming to en- 13
14 (a) Cover time for the unencoded case. Random pieces are requested until a file of 2048 blocks can be reconstructed. In pink, the number of useful (nonredundant) blocks in the universe of allowable transmissions. In blue, the number of redundant blocks transmitted, as a function of the number of nonredundant blocks received. (b) Cover time for the 2-Tree encoding scheme (T = 2). (c) T = 5 (d) T = 8 Figure 2: Cover time samplings for various values of T 14
15 (a) The fraction (out of n = 2048) of useful blocks remaining in the network preceding the final block transmission. An average was taken over 10 trials for each value of T. (b) The average number of redundant blocks received while requesting random blocks of a file with 2048 total blocks. 10 trials were used for various values of T. Figure 3: Trends over varying values of T 15
16 Figure 4: The rate of the Twisted Tree encoding scheme with various values of T. The average was taken over 10 trials. Here, the rate is measured by the percentage of non-redundant blocks received beyond 2048, the size of the file in question. sure that a peer running our implementation never requested an encoded piece from a peer running the original implementation. 6 Conclusion When we began we knew that there was room for improvement in the current peer to peer protocols, but we were not certain which aspect of performance would be best to tackle. After the first semester of research and analysis it became evident that robustness in a network in which many peers are coming and going, and there are not many seeds which contain the entire file, would be the best area to improve on. Our system certainly improves on this from the current BitTorrent protocol by ensuring that information about every block in a file is dispersed through the network as quickly as possible. Given more time and more resources to test, we would have liked to run in depth tests consisting of many peers, but we feel that our project was successful. We completed most of the work which we set out to accomplish in September, stuck with our timeline, and are happy with our implementation. References [1] Bram Cohen. Incentives build robustness in bittorrent, [2] Pouwelse Garbacki Epema. The bittorrent p2p file-sharing system: Measurements and analysis. 16
17 [3] John W. Byers, Michael Luby, Michael Mitzenmacher, and Ashutosh Rege. A digital fountain approach to reliable distribution of bulk data. In SIG- COMM, pages 56 67, [4] Content Distribution Ieee. Network coding for large scale. [5] M. Izal, G. Urvoy-Keller, E. Biersack, P. Felber, A. Hamra, and L. Garces- Erice. Dissecting bittorrent: Five months in a torrent s lifetime,
BitTorrent. Masood Khosroshahy. July Tech. Report. Copyright 2009 Masood Khosroshahy, All rights reserved.
BitTorrent Masood Khosroshahy July 2009 Tech. Report Copyright 2009 Masood Khosroshahy, All rights reserved. www.masoodkh.com Contents Contents 1 Basic Concepts 1 2 Mechanics 3 2.1 Protocols: Tracker and
More informationExtreme Computing. BitTorrent and incentive-based overlay networks.
Extreme Computing BitTorrent and incentive-based overlay networks BitTorrent Today we will focus on BitTorrent The technology really has three aspects A standard that BitTorrent client systems follow Some
More informationEfficiency of Data Distribution in BitTorrent-Like Systems
Efficiency of Data Distribution in BitTorrent-Like Systems Ho-Leung Chan 1,, Tak-Wah Lam 2, and Prudence W.H. Wong 3 1 Department of Computer Science, University of Pittsburgh hlchan@cs.pitt.edu 2 Department
More informationP2P Applications. Reti di Elaboratori Corso di Laurea in Informatica Università degli Studi di Roma La Sapienza Canale A-L Prof.ssa Chiara Petrioli
P2P Applications Reti di Elaboratori Corso di Laurea in Informatica Università degli Studi di Roma La Sapienza Canale A-L Prof.ssa Chiara Petrioli Server-based Network Peer-to-peer networks A type of network
More informationP2P. 1 Introduction. 2 Napster. Alex S. 2.1 Client/Server. 2.2 Problems
P2P Alex S. 1 Introduction The systems we will examine are known as Peer-To-Peer, or P2P systems, meaning that in the network, the primary mode of communication is between equally capable peers. Basically
More informationContent Overlays (continued) Nick Feamster CS 7260 March 26, 2007
Content Overlays (continued) Nick Feamster CS 7260 March 26, 2007 Administrivia Quiz date Remaining lectures Interim report PS 3 Out Friday, 1-2 problems 2 Structured vs. Unstructured Overlays Structured
More informationGame Theory. Presented by Hakim Weatherspoon
Game Theory Presented by Hakim Weatherspoon Game Theory Main Question: Can we cheat (and get away with it)? BitTorrent P2P file distribution tool designed with incentives for contribution Users contribute
More informationDepartment of Computer Science Institute for System Architecture, Chair for Computer Networks. File Sharing
Department of Computer Science Institute for System Architecture, Chair for Computer Networks File Sharing What is file sharing? File sharing is the practice of making files available for other users to
More informationA Simulation: Improving Throughput and Reducing PCI Bus Traffic by. Caching Server Requests using a Network Processor with Memory
Shawn Koch Mark Doughty ELEC 525 4/23/02 A Simulation: Improving Throughput and Reducing PCI Bus Traffic by Caching Server Requests using a Network Processor with Memory 1 Motivation and Concept The goal
More information1 Achieving IND-CPA security
ISA 562: Information Security, Theory and Practice Lecture 2 1 Achieving IND-CPA security 1.1 Pseudorandom numbers, and stateful encryption As we saw last time, the OTP is perfectly secure, but it forces
More informationLecture 21 P2P. Napster. Centralized Index. Napster. Gnutella. Peer-to-Peer Model March 16, Overview:
PP Lecture 1 Peer-to-Peer Model March 16, 005 Overview: centralized database: Napster query flooding: Gnutella intelligent query flooding: KaZaA swarming: BitTorrent unstructured overlay routing: Freenet
More informationLecture 17: Peer-to-Peer System and BitTorrent
CSCI-351 Data communication and Networks Lecture 17: Peer-to-Peer System and BitTorrent (I swear I only use it for Linux ISOs) The slide is built with the help of Prof. Alan Mislove, Christo Wilson, and
More informationContent Distribution and BitTorrent [Based on slides by Cosmin Arad]
ID2210 - Distributed Computing, Peer-to-Peer and GRIDS Content Distribution and BitTorrent [Based on slides by Cosmin Arad] Today The problem of content distribution A popular solution: BitTorrent Underlying
More informationSoftware. CPU implements "machine code" instructions. --Each machine code instruction is extremely simple. --To run, expanded to about 10 machine code
Software Software - code that runs on the hardware I'm going to simplify things a bit here CPU implements "machine code" instructions --Each machine code instruction is extremely simple --e.g. add 2 numbers
More informationINTERNATIONAL JOURNAL OF PURE AND APPLIED RESEARCH IN ENGINEERING AND TECHNOLOGY
INTERNATIONAL JOURNAL OF PURE AND APPLIED RESEARCH IN ENGINEERING AND TECHNOLOGY A PATH FOR HORIZING YOUR INNOVATIVE WORK PEER-TO-PEER FILE SHARING WITH THE BITTORRENT PROTOCOL APURWA D. PALIWAL 1, PROF.
More informationRAID SEMINAR REPORT /09/2004 Asha.P.M NO: 612 S7 ECE
RAID SEMINAR REPORT 2004 Submitted on: Submitted by: 24/09/2004 Asha.P.M NO: 612 S7 ECE CONTENTS 1. Introduction 1 2. The array and RAID controller concept 2 2.1. Mirroring 3 2.2. Parity 5 2.3. Error correcting
More informationOptimizing Parallel Access to the BaBar Database System Using CORBA Servers
SLAC-PUB-9176 September 2001 Optimizing Parallel Access to the BaBar Database System Using CORBA Servers Jacek Becla 1, Igor Gaponenko 2 1 Stanford Linear Accelerator Center Stanford University, Stanford,
More informationPeer-to-Peer Networks 12 Fast Download
Peer-to-Peer Networks 12 Fast Download Arne Vater Technical Faculty Computer Networks and Telematics University of Freiburg IP Multicast Motivation - Transmission of a data stream to many receivers Unicast
More informationA Survey of Software Packages for Teaching Linear and Integer Programming
A Survey of Software Packages for Teaching Linear and Integer Programming By Sergio Toledo Spring 2018 In Partial Fulfillment of Math (or Stat) 4395-Senior Project Department of Mathematics and Statistics
More informationCSC310 Information Theory. Lecture 22: Erasure (Deletion) Channels & Digital Fountain Codes. November 30, 2005 see
CSC310 Information Theory Lecture 22: Erasure (Deletion) Channels & Digital Fountain Codes Sam Roweis Recovering From Erasures 2 How can we recover from erasures? For the BEC, we saw that low-density parity
More informationKey Separation in Twofish
Twofish Technical Report #7 Key Separation in Twofish John Kelsey April 7, 2000 Abstract In [Mur00], Murphy raises questions about key separation in Twofish. We discuss this property of the Twofish key
More informationPeer to Peer Systems and Probabilistic Protocols
Distributed Systems 600.437 Peer to Peer Systems & Probabilistic Protocols Department of Computer Science The Johns Hopkins University 1 Peer to Peer Systems and Probabilistic Protocols Lecture 11 Good
More information1 Reception efficiency
Bipartite Graph Bipartite Graph n/4 Standard Loss resilient Code n/ n Figure 1: Encoding structure of tornado code CS 493: Algorithms for Massive Data Sets Tornado Codes and Error-Correcting Codes 3/7/0
More informationHashing. Hashing Procedures
Hashing Hashing Procedures Let us denote the set of all possible key values (i.e., the universe of keys) used in a dictionary application by U. Suppose an application requires a dictionary in which elements
More informationCSC310 Information Theory. Lecture 21: Erasure (Deletion) Channels & Digital Fountain Codes. November 22, 2006 see
CSC310 Information Theory Lecture 21: Erasure (Deletion) Channels & Digital Fountain Codes Sam Roweis Recovering From Erasures 2 How can we recover from erasures? For the BEC, we saw that low-density parity
More informationBitTorrent. Internet Technologies and Applications
BitTorrent Internet Technologies and Applications Aims and Contents Aims Show benefits of P2P for file downloads Explain concepts of BitTorrent as a P2P file sharing application Show how BitTorrent protocol
More informationComparing Implementations of Optimal Binary Search Trees
Introduction Comparing Implementations of Optimal Binary Search Trees Corianna Jacoby and Alex King Tufts University May 2017 In this paper we sought to put together a practical comparison of the optimality
More informationInput/Output Management
Chapter 11 Input/Output Management This could be the messiest aspect of an operating system. There are just too much stuff involved, it is difficult to develop a uniform and consistent theory to cover
More informationPage 1. How Did it Start?" Model" Main Challenge" CS162 Operating Systems and Systems Programming Lecture 24. Peer-to-Peer Networks"
How Did it Start?" CS162 Operating Systems and Systems Programming Lecture 24 Peer-to-Peer Networks" A killer application: Napster (1999) Free music over the Internet Key idea: share the storage and bandwidth
More informationGraph Structure Over Time
Graph Structure Over Time Observing how time alters the structure of the IEEE data set Priti Kumar Computer Science Rensselaer Polytechnic Institute Troy, NY Kumarp3@rpi.edu Abstract This paper examines
More informationTail Latency in ZooKeeper and a Simple Reimplementation
Tail Latency in ZooKeeper and a Simple Reimplementation Michael Graczyk Abstract ZooKeeper [1] is a commonly used service for coordinating distributed applications. ZooKeeper uses leader-based atomic broadcast
More informationAzureus Plugin for Facebook Integration
Azureus Plugin for Facebook Integration Mike House-Vording, 100300955 mhvordin@connect.carleton.ca 1. Introduction This project seeks to integrate two major trends currently taking place on the internet:
More informationAll About Erasure Codes: - Reed-Solomon Coding - LDPC Coding. James S. Plank. ICL - August 20, 2004
All About Erasure Codes: - Reed-Solomon Coding - LDPC Coding James S. Plank Logistical Computing and Internetworking Laboratory Department of Computer Science University of Tennessee ICL - August 2, 24
More informationDISTRIBUTED SYSTEMS CSCI 4963/ /4/2015
1 DISTRIBUTED SYSTEMS CSCI 4963/6963 12/4/2015 2 Info Quiz 7 on Tuesday. Project 2 submission URL is posted on the web site Submit your source code and project report (PDF!!!) in a single zip file. If
More informationCSE 486/586 Distributed Systems Peer-to-Peer Architectures
CSE 486/586 Distributed Systems eer-to-eer Architectures Steve Ko Computer Sciences and Engineering University at Buffalo CSE 486/586 Last Time Gossiping Multicast Failure detection Today s Question How
More informationTelematics Chapter 9: Peer-to-Peer Networks
Telematics Chapter 9: Peer-to-Peer Networks Beispielbild User watching video clip Server with video clips Application Layer Presentation Layer Application Layer Presentation Layer Session Layer Session
More informationImplementing a Statically Adaptive Software RAID System
Implementing a Statically Adaptive Software RAID System Matt McCormick mattmcc@cs.wisc.edu Master s Project Report Computer Sciences Department University of Wisconsin Madison Abstract Current RAID systems
More informationBlizzard: A Distributed Queue
Blizzard: A Distributed Queue Amit Levy (levya@cs), Daniel Suskin (dsuskin@u), Josh Goodwin (dravir@cs) December 14th 2009 CSE 551 Project Report 1 Motivation Distributed systems have received much attention
More informationMetaheuristic Development Methodology. Fall 2009 Instructor: Dr. Masoud Yaghini
Metaheuristic Development Methodology Fall 2009 Instructor: Dr. Masoud Yaghini Phases and Steps Phases and Steps Phase 1: Understanding Problem Step 1: State the Problem Step 2: Review of Existing Solution
More informationPerformance Analysis of Peer-to-Peer Networks for File Distribution
Performance Analysis of Peer-to-Peer Networks for File Distribution Ernst W. Biersack, Pablo Rodriguez, and Pascal Felber Institut EURECOM, France {erbi,felber}@eurecom.fr Microsoft Research, UK pablo@microsoft.com
More informationPeer-to-Peer Systems. Chapter General Characteristics
Chapter 2 Peer-to-Peer Systems Abstract In this chapter, a basic overview is given of P2P systems, architectures, and search strategies in P2P systems. More specific concepts that are outlined include
More informationP2P Applications. Reti di Elaboratori Corso di Laurea in Informatica Università degli Studi di Roma La Sapienza
P2P Applications Reti di Elaboratori Corso di Laurea in Informatica Università degli Studi di Roma La Sapienza Versione originale delle slides fornita da Dora Spenza e Marco Barbera P2P Paradigm Late 80
More informationAutomatic Creation of Digital Fast Adder Circuits by Means of Genetic Programming
1 Automatic Creation of Digital Fast Adder Circuits by Means of Genetic Programming Karim Nassar Lockheed Martin Missiles and Space 1111 Lockheed Martin Way Sunnyvale, CA 94089 Karim.Nassar@lmco.com 408-742-9915
More informationProblems of Network Coding in P2P - and how to overcome it. Christian Schindelhauer. joint work with Christian Ortolf & Arne Vater
Problems of Network Coding in P2P - and how to overcome it Christian Schindelhauer joint work with Christian Ortolf & Arne Vater presented in SPAA 09 & 10 Albert-Ludwig University Freiburg Department of
More informationCompSci 356: Computer Network Architectures Lecture 21: Overlay Networks Chap 9.4. Xiaowei Yang
CompSci 356: Computer Network Architectures Lecture 21: Overlay Networks Chap 9.4 Xiaowei Yang xwy@cs.duke.edu Overview Problem Evolving solutions IP multicast Proxy caching Content distribution networks
More informationSome Applications of Graph Bandwidth to Constraint Satisfaction Problems
Some Applications of Graph Bandwidth to Constraint Satisfaction Problems Ramin Zabih Computer Science Department Stanford University Stanford, California 94305 Abstract Bandwidth is a fundamental concept
More information6.338 Final Paper: Parallel Huffman Encoding and Move to Front Encoding in Julia
6.338 Final Paper: Parallel Huffman Encoding and Move to Front Encoding in Julia Gil Goldshlager December 2015 1 Introduction 1.1 Background The Burrows-Wheeler transform (BWT) is a string transform used
More informationCPSC 536N: Randomized Algorithms Term 2. Lecture 5
CPSC 536N: Randomized Algorithms 2011-12 Term 2 Prof. Nick Harvey Lecture 5 University of British Columbia In this lecture we continue to discuss applications of randomized algorithms in computer networking.
More informationCodes, Bloom Filters, and Overlay Networks. Michael Mitzenmacher
Codes, Bloom Filters, and Overlay Networks Michael Mitzenmacher 1 Today... Erasure codes Digital Fountain Bloom Filters Summary Cache, Compressed Bloom Filters Informed Content Delivery Combining the two
More informationSecure and Robust Overlay Content Distribution
Secure and Robust Overlay Content Distribution A THESIS SUBMITTED TO THE FACULTY OF THE GRADUATE SCHOOL OF THE UNIVERSITY OF MINNESOTA BY Hun Jeong Kang IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE
More informationDo incentives build robustness in BitTorrent?
Do incentives build robustness in BitTorrent? ronghui.gu@yale.edu Agenda 2 Introduction BitTorrent Overview Modeling Altruism in BitTorrent Building BitTyrant Evaluation Conclusion Introduction 3 MAIN
More informationAVALANCHE: A NETWORK CODING ANALYSIS
COMMUNICATIONS IN INFORMATION AND SYSTEMS c 2007 International Press Vol. 7, No. 4, pp. 353-358, 2007 003 AVALANCHE: A NETWORK CODING ANALYSIS RAYMOND W. YEUNG Abstract. In this paper, we study the application
More informationimproving the performance and robustness of P2P live streaming with Contracts
MICHAEL PIATEK AND ARVIND KRISHNAMURTHY improving the performance and robustness of P2P live streaming with Contracts Michael Piatek is a graduate student at the University of Washington. After spending
More informationAdam Hodges CPSC481/CyberTiger Project Proposal 1/31/12. Motivations
Adam Hodges CPSC481/CyberTiger Project Proposal 1/31/12 Motivations It is my goal to continue my work from the summer and fall semesters in order to learn more about wireless networks and their characteristics
More informationClient Level Framework for Parallel Downloading of Large File Systems
Client Level Framework for Parallel Downloading of Large File Systems G.Narasinga Rao Asst.Professor Dept.of CSE GMR Institute of Technology RAJAM-532127, A.P, India. Srikakulam Dist Srinivasan Nagaraj
More informationPractical Anonymity for the Masses with MorphMix
Practical Anonymity for the Masses with MorphMix Marc Rennhard, Bernhard Plattner () Financial Cryptography 2004 12 th February 2004 http://www.tik.ee.ethz.ch/~morphmix Overview Circuit-based mix networks
More informationIs IPv4 Sufficient for Another 30 Years?
Is IPv4 Sufficient for Another 30 Years? October 7, 2004 Abstract TCP/IP was developed 30 years ago. It has been successful over the past 30 years, until recently when its limitation started emerging.
More informationChapter 1 - Introduction
Chapter 1-lntroduction Chapter 1 - Introduction The aim of this chapter is to provide a background to topics which are relevant to the subject of this thesis. The motivation for writing a thesis regarding
More informationCOMMVAULT. Enabling high-speed WAN backups with PORTrockIT
COMMVAULT Enabling high-speed WAN backups with PORTrockIT EXECUTIVE SUMMARY Commvault offers one of the most advanced and full-featured data protection solutions on the market, with built-in functionalities
More informationPerformance Analysis of BitTorrent Protocol
Performance Analysis of BitTorrent Protocol Parul Sharma Department of Computer Science Engineering sharma.parul111@gmail.com Anuja Bhakuni Department of Computer Science Engineering anuja.bhakuni13@gmail.com
More informationWhite Paper: Delivering Enterprise Web Applications on the Curl Platform
White Paper: Delivering Enterprise Web Applications on the Curl Platform Table of Contents Table of Contents Executive Summary... 1 Introduction... 2 Background... 2 Challenges... 2 The Curl Solution...
More informationCore Membership Computation for Succinct Representations of Coalitional Games
Core Membership Computation for Succinct Representations of Coalitional Games Xi Alice Gao May 11, 2009 Abstract In this paper, I compare and contrast two formal results on the computational complexity
More informationA Case For OneSwarm. Tom Anderson University of Washington.
A Case For OneSwarm Tom Anderson University of Washington http://oneswarm.cs.washington.edu/ With: Jarret Falkner, Tomas Isdal, Alex Jaffe, John P. John, Arvind Krishnamurthy, Harsha Madhyastha and Mike
More informationCTW in Dasher: Summary and results.
CTW in Dasher: Summary and results. After finishing my graduation thesis Using CTW as a language modeler in Dasher, I have visited the Inference group of the Physics department of the University of Cambridge,
More informationENSC 427 SPRING 2011 FINAL PROJECT EXPLORING TRAFFIC FOR P2P FILE SHARING PROTOCOL USING OPNET GROUP 01
SFU Communication Networks ENSC 427 SPRING 2011 FINAL PROJECT EXPLORING TRAFFIC FOR P2P FILE SHARING PROTOCOL USING OPNET GROUP 01 Abhishek Dubey ada4@sfu.ca Ashkan Mirnabavvi amirnaba@sfu.ca Vikas Yadav
More informationLecture 19. Lecturer: Aleksander Mądry Scribes: Chidambaram Annamalai and Carsten Moldenhauer
CS-621 Theory Gems November 21, 2012 Lecture 19 Lecturer: Aleksander Mądry Scribes: Chidambaram Annamalai and Carsten Moldenhauer 1 Introduction We continue our exploration of streaming algorithms. First,
More informationPrinciples of Algorithm Design
Principles of Algorithm Design When you are trying to design an algorithm or a data structure, it s often hard to see how to accomplish the task. The following techniques can often be useful: 1. Experiment
More informationinria , version 1-6 Sep 2006
Rarest First and Choke Algorithms Are Enough Arnaud Legout I.N.R.I.A. Sophia Antipolis France arnaud.legout@sophia.inria.fr G. Urvoy-Keller and P. Michiardi Institut Eurecom Sophia Antipolis France {Guillaume.Urvoy,Pietro.Michiardi}@eurecom.fr
More informationP2P content distribution
P2P content distribution T-110.7100 Applications and Services in Internet, Fall 2010 Jukka K. Nurminen 1 V1-Filename.ppt / yyyy-mm-dd / Initials Steps of content sharing Share content Find content Transfer
More informationPeer-to-Peer Applications Reading: 9.4
Peer-to-Peer Applications Reading: 9.4 Acknowledgments: Lecture slides are from Computer networks course thought by Jennifer Rexford at Princeton University. When slides are obtained from other sources,
More informationImproving BitTorrent: A Simple Approach
Improving BitTorrent: A Simple Approach Alix L.H. Chow Univ. of Southern California Leana Golubchik Univ. of Southern California Vishal Misra Columbia University Abstract Measurement studies have shown
More information4640 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 53, NO. 12, DECEMBER Gossiping With Multiple Messages
4640 IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 53, NO. 12, DECEMBER 2007 Gossiping With Multiple Messages Sujay Sanghavi, Member, IEEE, Bruce Hajek, Fellow, IEEE, and Laurent Massoulie Abstract This
More informationEE 122: Peer-to-Peer Networks
EE 122: Peer-to-Peer Networks Ion Stoica (and Brighten Godfrey) TAs: Lucian Popa, David Zats and Ganesh Ananthanarayanan http://inst.eecs.berkeley.edu/~ee122/ (Materials with thanks to Vern Paxson, Jennifer
More informationCSE200 Lecture 6: RECURSION
Table of Contents Review of functions (using factorial example)... 1 Recursion... 1 Step by step run through of recursive factorial... 2 Recursion vs. iteration (for and while loops)... 3 Helper functions:...
More informationLecture 4 September 17
CS 559: Algorithmic Aspects of Computer Networks Fall 2007 Lecture 4 September 17 Lecturer: John Byers BOSTON UNIVERSITY Scribe: Sowmya Manjanatha In today s lecture, we discussed and characterized the
More informationNetwork Working Group Request for Comments: 1046 ISI February A Queuing Algorithm to Provide Type-of-Service for IP Links
Network Working Group Request for Comments: 1046 W. Prue J. Postel ISI February 1988 A Queuing Algorithm to Provide Type-of-Service for IP Links Status of this Memo This memo is intended to explore how
More informationIntroduction to P P Networks
Introduction to P P Networks B Sc Florian Adamsky florianadamsky@iemthmde http://florianadamskyit/ cbd Internet Protocols and Applications SS B Sc Florian Adamsky IPA / Outline Introduction What is P P?
More informationLab 4. 1 Comments. 2 Design. 2.1 Recursion vs Iteration. 2.2 Enhancements. Justin Ely
Lab 4 Justin Ely 615.202.81.FA15 Data Structures 06 December, 2015 1 Comments Sorting algorithms are a key component to computer science, not simply because sorting is a commonlyperformed task, but because
More information6.001 Notes: Section 31.1
6.001 Notes: Section 31.1 Slide 31.1.1 In previous lectures we have seen a number of important themes, which relate to designing code for complex systems. One was the idea of proof by induction, meaning
More informationUsing Simulation to Understand Bottlenecks, Delay Accumulation, and Rail Network Flow
Using Simulation to Understand Bottlenecks, Delay Accumulation, and Rail Network Flow Michael K. Williams, PE, MBA Manager Industrial Engineering Norfolk Southern Corporation, 1200 Peachtree St., NE, Atlanta,
More informationImperva Incapsula Survey: What DDoS Attacks Really Cost Businesses
Survey Imperva Incapsula Survey: What DDoS Attacks Really Cost Businesses BY: TIM MATTHEWS 2016, Imperva, Inc. All rights reserved. Imperva and the Imperva logo are trademarks of Imperva, Inc. Contents
More informationENSC 427: COMMUNICATION NETWORKS
ENSC 427: COMMUNICATION NETWORKS Comparison of TCP with "utp" for BitTorrent transfers Spring 2009 FINAL PROJECT Adam Ciapponi Robert Hueber Robert Szolomicki aciappon@sfu.ca rhueber@sfu.ca rms6@sfu.ca
More informationCAPACITY PLANNING FOR THE DATA WAREHOUSE BY W. H. Inmon
CAPACITY PLANNING FOR THE DATA WAREHOUSE BY W. H. Inmon The data warehouse environment - like all other computer environments - requires hardware resources. Given the volume of data and the type of processing
More informationMassively Parallel Non- Convex Optimization on the GPU Through the Graphics Pipeline
Massively Parallel Non- Convex Optimization on the GPU Through the Graphics Pipeline By Peter Cottle Department of Mechanical Engineering, 6195 Etcheverry Hall, University of California, Berkeley, CA 94720-1740,
More informationRaptor Codes for P2P Streaming
Raptor Codes for P2P Streaming Philipp Eittenberger 1, Todor Mladenov 2, Udo Krieger 1 1 Faculty of Information Systems and Applied Computer Science Otto-Friedrich University Bamberg, Germany 2 Department
More informationRandom Oracles - OAEP
Random Oracles - OAEP Anatoliy Gliberman, Dmitry Zontov, Patrick Nordahl September 23, 2004 Reading Overview There are two papers presented this week. The first paper, Random Oracles are Practical: A Paradigm
More informationModel-Based Design for Large High Integrity Systems: A Discussion Regarding Model Architecture
Model-Based Design for Large High Integrity Systems: A Discussion Regarding Model Architecture By Mike Anthony and Jon Friedman MathWorks Inc, Natick, MA, 01760 INTRODUCTION From complex controls problems
More informationIMPLEMENTATION AND EVALUATION OF THE MULTICAST FILE TRANSFER PROTOCOL (MCFTP)
IMPLEMENTATION AND EVALUATION OF THE MULTICAST FILE TRANSFER PROTOCOL (MCFTP) Masterarbeit der Philosophisch-naturwissenschaftlichen Fakultät der Universität Bern vorgelegt von Alican Gecyasar Dezember,
More informationFurther extensions to the Wigan architecture are discussed in this thesis, including possible means of handling data updates.
COMPUTING SCIENCE A BitTorrent-based Peer-to-Peer Database Server J. Colquhoun TECHNICAL REPORT SERIES No. CS-TR-1135 January, 2009 TECHNICAL REPORT SERIES No. CS-TR-1135 January, 2009 A BitTorrent-based
More informationEfficient Content Delivery and Low Complexity Codes. Amin Shokrollahi
Efficient Content Delivery and Low Complexity Codes Amin Shokrollahi Content Goals and Problems TCP/IP, Unicast, and Multicast Solutions based on codes Applications Goal Want to transport data from a transmitter
More informationBest Practice for Creation and Maintenance of a SAS Infrastructure
Paper 2501-2015 Best Practice for Creation and Maintenance of a SAS Infrastructure Paul Thomas, ASUP Ltd. ABSTRACT The advantage of using metadata to control and maintain data and access to data on databases,
More informationApplied Algorithm Design Lecture 3
Applied Algorithm Design Lecture 3 Pietro Michiardi Eurecom Pietro Michiardi (Eurecom) Applied Algorithm Design Lecture 3 1 / 75 PART I : GREEDY ALGORITHMS Pietro Michiardi (Eurecom) Applied Algorithm
More informationshortcut Tap into learning NOW! Visit for a complete list of Short Cuts. Your Short Cut to Knowledge
shortcut Your Short Cut to Knowledge The following is an excerpt from a Short Cut published by one of the Pearson Education imprints. Short Cuts are short, concise, PDF documents designed specifically
More informationITERATIVE COLLISION RESOLUTION IN WIRELESS NETWORKS
ITERATIVE COLLISION RESOLUTION IN WIRELESS NETWORKS An Undergraduate Research Scholars Thesis by KATHERINE CHRISTINE STUCKMAN Submitted to Honors and Undergraduate Research Texas A&M University in partial
More informationReal-time grid computing for financial applications
CNR-INFM Democritos and EGRID project E-mail: cozzini@democritos.it Riccardo di Meo, Ezio Corso EGRID project ICTP E-mail: {dimeo,ecorso}@egrid.it We describe the porting of a test case financial application
More informationNygren, E., Sitaraman, R.K., and Sun, J., "The Akamai Network: A Platform for
Akamai Paper Review By Taeju Park and Andrew Quinn Paper Reference Nygren, E., Sitaraman, R.K., and Sun, J., "The Akamai Network: A Platform for High-Performance Internet Applications," Proc. of ACM SIGOPS
More informationEquations of planes in
Roberto s Notes on Linear Algebra Chapter 6: Lines, planes and other straight objects Section Equations of planes in What you need to know already: What vectors and vector operations are. What linear systems
More informationBitTorrent for Really Selfish Peers T4T Trading over Cycles
Semester Thesis BitTorrent for Really Selfish Peers T4T Trading over Cycles Roger Odermatt oroger@student.ethz.ch Professor: Dr. Roger Wattenhofer Advisor: Raphael Eidenbenz Department of Information Technology
More informationPeer to Peer Networks
Sungkyunkwan University Peer to Peer Networks Prepared by T. Le-Duc and H. Choo Copyright 2000-2018 Networking Laboratory P2P Applications Traditional P2P applications: for file sharing BitTorrent, Emule
More informationRACS: Extended Version in Java Gary Zibrat gdz4
RACS: Extended Version in Java Gary Zibrat gdz4 Abstract Cloud storage is becoming increasingly popular and cheap. It is convenient for companies to simply store their data online so that they don t have
More information