Administrative: -No class on 12/9 and 12/11. -Only 18 paper reviews are required (down from 20). -Papers from the cancelled classes may be reviewed. About the presentations: -Figure 2-3 minutes per slide and 10 minutes for Q&A => don't use more than ~10 slides -Tom prefers 1 speaker, as it may lead to more continuity, but hand-offs are permissible. -A ~5 minute demo might be a good addition to your presentation, but let Tom know that you are going to be doing one beforehand. On the papers so far: -You are likely to have a good grant proposal at the moment: an approach, preliminary results, etc. -In the next few weeks, you will be getting actual results, and those results should change the direction (and intent) of your paper. -You may have to "throw away" much of what you have already done (and rewrite it), so that it fits the intent of your paper (as supported by the results). -Thus: 1. Decide what the point of the paper is. 2. Write the paper to make that point. 3. Review the paper...remove anything that does NOT support the point you are trying to make. -In general, the related work you have done may be too thorough. Make it emphasize the main focus of your paper. -The best papers are those that convince others that one of their assumptions is untrue. To exploit this, find a hidden assumption and prove a contradiction. Peer-to-peer Resource Discovery: -There are many possible solutions in this realm. The goals of the project will affect the solution that is produced. -Example application areas: IP-address lookup file-sharing publish/subscribe system object location multiplayer games -Note that DNS (which maps a name to an IP) faces many similar problems with compared to Freenet (which maps a name to data) and Chord (which maps a key to a value). -However, DNS has different goals than Freenet and Chord. For example, it does not support searching. Can you find u.washington.edu? Sure. How about "all CS departments?" (cs.*.edu) No way. We can query DNS, but it can't do queries on its own. -What about other support? Some applications might need triggers -- notification that data has changed. Others might be context-sensitive and require different functionality depending on context. The goal of the application will affect the solution chosen. What is wrong with the systems we have? -Our question really is, "What are their goals and do we need something different?" 1. Are they searchable? 2. Does performance depend on locality? 3a. Do they support anonymity? b. Decentralization? 4. How reliable are they? Do you get what you ask for? 5. How secure are these systems? Do they prevent DoS? Are they affected by malicious users? 6. Do they have a sense of fairness or resource balancing? 7. How tolerant of faults are they? -No system can do all of the above well. Why not use DNS? -It's centralized, inefficient, and has weak coherence. (There is no guarantee that you'll get out what you put in.) -We need a scalable, decentralized system. Chord: -Lookups are performed in log time using a hash. -hash(node)->key, hash(file)->key -Finger tables store the data necessary to traverse the ring in log n steps. ex: On a 16-node ring, each node x contains the successors for x+1, x+2, x+4, and x+8 in its finger table. Fingertable[10] successor for 11 successor for 12 successor for 14 successor for 2 (18mod16) -For redundancy, store every file at k successors. -What's good about about this? People can come and go, and the work necessary for addition and deletion is small. -What's not so hot? There is no defense against malicious nodes or people who insert nodes to take over all the files. There is no sense of locality or bandwidth. Freenet: -Freenet makes a completely different set of choices. -They don't discuss their algorithm. -Unlike chord, they favor an absolute DIStrust model. -Clearly designed for anonymity and distributivity. -It's not clear that it works well or that it defends against bogus data.