The P2P world is filled with a variety of systems; even P2P systems with similar goals take quite different approaches. If you are designing a new P2P system, looking for interoperability between systems, or thinking about P2P standardization, it is helpful to understand the different design choices that are available. This talk will examine several aspects of P2P including naming, routing, messaging, and searching and the tradeoffs that are involved.
This talk will focus on infrastructure--the parts that are likely to be found in almost all P2P systems. In particular, it will examine:
- Locations vs. names for data, services, and people
- App-level routing vs. network routing
- Indexing vs. flooding/wandering for searches
- Specialization vs. homogeniety in node behavior
- Manual vs. automatic vs. no replication
- Variable-length vs. block-oriented data storage & transfer
- Separation of data from metadata
- Message-passing, RPC, and other communication patterns
- Possible common ground that could lead to interoperability or
standardization
Existing systems will be used to illustrate these design possibilities.