40 likes | 96 Views
Data model Treat DHT as database. Service model Join DHT to provide service. P2P-SIP Using an External P2P network (DHT). [5]. bob 192.1.2.3. bob. [3]. [1]. [2]. [1]. [3]. DHT. DHT. Service node (128.3.4.5). [4]. [2]. [5]. alice. alice. [1] join(128.3.4.5)
E N D
Data model Treat DHT as database Service model Join DHT to provide service P2P-SIPUsing an External P2P network (DHT) [5] bob 192.1.2.3 bob [3] [1] [2] [1] [3] DHT DHT Service node (128.3.4.5) [4] [2] [5] alice alice [1] join(128.3.4.5) [2] lookup(H(bob)) gives 128.3.4.5 [3] REGISTER sip:bob to 128.3.4.5 [4] lookup(H(bob)) gives 128.3.4.5 [5] INVITE sip:bob to 128.3.4.5 [1] put(k,192.1.2.3), k is H(bob) [2] get(k) gives 192.1.2.3 [3] INVITE sip:bob to 192.1.2.3
P2P-SIPLogical Operations • Contact management • put (user id, signed contact) • Key storage • User certificates and private configurations • Presence • put (subscribee id, signed encrypted subscriber id) • Composition needs service model • Offline message • put (recipient, signed encrypted message) • NAT and firewall traversal • STUN and TURN server discovery needs service model
P2P-SIPImplementation in SIPc • OpenDHT • Trusted nodes • Robust • Fast enough (<1s) • Identity protection • Certificate-based • SIP id == email • P2P for Calls, IM, presence, offline message, STUN server discovery and name search
P2P-SIPWhat is OpenDHT? • Service model, unlike earlier library of Chord/CAN • DHT accessed on SunRPC & XML-RPC • Easy deployment and maintenance • 200-300 Bamboo DHT nodes on PlanetLab • Public DHT service running since April 2004 • Many existing applications: i3, CFS, Ostream, HIP,… • DHT API (server side on Bamboo nodes) • Put(key,value,H(secret),ttl) where H is SHA1 • Get(key)=>(value,H(secret),remaining-ttl) • Remove(key,H(value),secret,ttl) • ReDiR API (client side for lookup/join/leave) • Can build anycast, multicast, range search using this • Fair resource (disk) allocation among clients (IP addr)