UML diagrams

Attached below.

Communication layer's main classes

Overview of bootstraping sequence with first gossip message sent:

SocketPeer - an alternative to JXTAPeer

  • standard java sockets as a core communication library
  • peer addressing by IP:port, not by JXTAPeer ids
  • bootstrap, if needed, by a single well-known server ( ) that remembers all the participants
  • planetlab performance tests: can we scale up to 100-200 peers

persistent addressing

  • persistent addressing scheme replacing JXTAPeer ids (large random numer)


Universally Unique Identifier (UUID) [6] is an identifier standard used to enable distributed systems to uniquely identify resources without significant central coordination. One can generate a UUID for identifying an object with reasonable confidence that the same identifier will not be used by someone else to identify another object. A UUID is a 128-bit character sequence. Number of theoretically possible UUIDs is about 3 × 1038 . Typically a UUID consists of 32 hexadecimal digits, displayed in 5 groups separated by hyphens, in the form 8-4-4- 4-12 for a total of 36 characters (32 digits and 4 hyphens). For example: 580f8760-e09b-42d4-a716-876543450000. Here the word unique means practically unique rather than guaranteed unique. Since the identifiers have a finite size it is possible for two different objects to share the same UUID. Random UUID generated by the java.util.UUID class have 122 random bits. The remaining 6 bits are used for version and variant number.

  • integration of a low-level kademlia DHT that maps peer ids to the current ip, port

bootstrap and peer discovery


  • automatic port forwarding by uPnP (check bittorrent implementation)

establishing connection to passive (NAT and/or firewalled) peers

Documents to read:

  • firewalled (passive) peers supported by rendez-vous partners
  • an active peer that wants to connect to a passive peer sends a message to the rendez-vous partner
  • the partner relies the message to the passive peer
  • the passive peer establishes the connection

passive-passive connections

  • app-level routing?
  • TCP hole punching?
  • or: these connections not necessary, as, hopefully, multiple replicas should cover this
Last modified 5 years ago Last modified on 10/14/13 20:03:29

Attachments (3)

Download all attachments as: .zip