Indigo: Building Peer to Peer Applications

Todd R. Manion tells us all about how Indigo will help us design our P2P applications.
P2P Landscape
- Collaboration
- Project workspaces solving a goal
- Sharing your files with other people
- Content Distribution
- Concert, company meeting, class
- Distribution of product updates
- Real-Time Communications
- Instant messaging voice, video
- Real-time game play/collaboration
- Distributed Processing
- Dissection and distribution of task
- Improved Internet Technologies
Why something new?
- Limited Supply of Public Addresses
- NATs prevent sharing from the edge
- Limited Name Resolution system
- Does not handle dynamic addresses
- Does not work in ad-hoc environments
- Does not lend itself to consumer use
- Inefficient Multipoint Communication
- Everyone rewrites the infrastructure
Infrastructure Design Goals
- Secure, robust in face of failure/attack
- Scalable, from ad-hoc to the Internet
- Server-less, no central point of failure
- Self-tuning, adapts to constant change
- Self-repairing, automatically fixes itself
P2P Technologies
- Peer Name Resolution Protocol (PNRP)
- Scalable, secure, serverless name resolution
- "Indigo" PeerChannel
- Efficient distribution of information between nodes
- Auto-tuning, self-repairing communication layer
- Peer Groups
- Create and manage persistent securable groups
- Peer Store (built using WinFS)
- Distributed data management
- Synchronized, replicated meta-data store
Name Registration/Resolution
- Members of System.Net.PeerToPeer
- Major Classes
- PeerName
- PeerIdentity
- PnrpEndPoint
- PnrpEndPointRegistration
- PnrpEndPointResolver
- Cloud/CloudWatcher
- Available in Longhorn PDC Preview
Indigo PeerChannel
- MajorClasses
- PeerChannel
- PeerManager
- Node
- Message
- Port
- Available in future Longhorn release (boo!)
PeerStore And PeerGroup
- Major Classes
- PeerIdentity
- PeerGroup
- Member
- PeerStore
- Record
- GroupInfo